OSDN Git Service

>>451
authorikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Sun, 7 Nov 2004 15:53:15 +0000 (15:53 +0000)
committerikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Sun, 7 Nov 2004 15:53:15 +0000 (15:53 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/kita/kita/trunk@1503 56b19765-1e22-0410-a548-a0f45d66c51a

kita/src/kitawritetabwidget.cpp
kita/src/part/kitawriteview.cpp
kita/src/part/kitawriteview.h

index 2a0b806..1f0ac6e 100644 (file)
@@ -12,7 +12,7 @@
 #include "libkita/parsemisc.h"
 #include "libkita/signalcollection.h"
 #include "libkita/datmanager.h"
-#include "libkita/board.h"
+#include "libkita/boardmanager.h"
 #include "kitawritetabwidget.h"
 #include "kitawriteview.h"
 
@@ -67,7 +67,7 @@ void KitaWriteTabWidget::openWriteView( int mode, const KURL& url,
     KURL datURL = Kita::ParseMisc::parseURLonly( url );
 
     // TODO: machiBBS kakiko support.
-    if ( Kita::Board::isWritingSupported( datURL ) == false ) {
+    if ( Kita::BoardManager::type( datURL ) == Kita::Board_MachiBBS ) {
         QMessageBox::warning( this, QString( "<(_ _)>" ),
                               i18n( "Can't write to machi BBS in this version." ) );
         return ;
index 1eb18d2..b8b5a3c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
-*   Copyright (C) 2003 by Hideki Ikemoto                                  *
+*   Copyright (C) 2004 by Kita Developers                                 *
 *   ikemo@users.sourceforge.jp                                            *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
@@ -14,6 +14,7 @@
 #include "kitahtmlpart.h"
 #include "kitahtmlview.h"
 #include "libkita/datmanager.h"
+#include "libkita/boardmanager.h"
 #include "libkita/parsemisc.h"
 #include "libkita/signalcollection.h"
 #include "libkita/account.h"
@@ -78,13 +79,27 @@ KitaWriteView::KitaWriteView( QWidget* parent, const char* name, const KURL& url
 
         /* set dummy URL  */
         QRegExp threadcheck( "\\d+.dat" );
-        if ( url.filename().find( threadcheck ) != -1 ) m_datURL = Kita::DatManager::boardURL( url );
+        if ( url.filename().find( threadcheck ) != -1 ) m_datURL = Kita::BoardManager::boardURL( url );
         else m_datURL = url;
         m_datURL.addPath( "dat/dummy.dat" );
     }
     qDebug( "url: %s\n", m_datURL.prettyURL().ascii() );
 
-    m_bbscgi = Kita::DatManager::boardRoot( m_datURL ) + "/test/bbs.cgi";
+    m_bbstype = Kita::BoardManager::type( m_datURL );
+    
+    if( m_bbstype == Kita::Board_2ch ){ /* 2ch */
+       m_bbscgi = Kita::BoardManager::boardRoot( m_datURL ) + "/test/bbs.cgi";
+    }
+    else if ( m_bbstype == Kita::Board_JBBS ){ /* JBBS */
+
+       QString cgipath = Kita::BoardManager::boardRoot( m_datURL )
+           + "/bbs/write.cgi/" + Kita::BoardManager::boardID( m_datURL ) + "/";
+       
+       if( m_mode == WRITEMODE_NORMAL ) cgipath += Kita::DatManager::threadID( m_datURL ) + "/";
+       else  cgipath += "new/";
+
+       m_bbscgi = cgipath;
+    }
 
     /* connect signals */
     connect( buttonOk, SIGNAL( clicked() ),
@@ -221,13 +236,15 @@ void KitaWriteView::slotPostMessage()
     QString name = nameLine->text();
     KitaConfig::addNameCompletionItem( name );
 
-    QString postStr = setPostStr();
+    QString postStr;
+    if( m_bbstype == Kita::Board_2ch ) postStr = setPostStr();
+    else if( m_bbstype == Kita::Board_JBBS ) postStr = setJBBSPostStr();
     QString refStr = Kita::DatManager::boardURL( m_datURL );
 
-    qDebug( "daturl: %s\n", m_datURL.prettyURL().ascii() );
-    qDebug( "bbscgi: %s\n", m_bbscgi.prettyURL().ascii() );
-    qDebug( "%s\n", ( const char * ) postStr.local8Bit() );
-    qDebug( "referrer: %s\n", ( const char * ) refStr.local8Bit() );
+    qDebug( "\ndaturl: %s", m_datURL.prettyURL().ascii() );
+    qDebug( "bbscgi: %s", m_bbscgi.prettyURL().ascii() );
+    qDebug( "%s", ( const char * ) postStr.local8Bit() );
+    qDebug( "referrer: %s", ( const char * ) refStr.local8Bit() );
 
     kdDebug() << "query: " << postStr << endl;
     m_array.resize( 0 );
@@ -242,6 +259,7 @@ void KitaWriteView::slotPostMessage()
     /* slotPostFinished() is called when done. */
     connect( job, SIGNAL( result( KIO::Job* ) ),
              this, SLOT( slotPostFinished( KIO::Job* ) ) );
+
 }
 
 
@@ -286,7 +304,11 @@ void KitaWriteView::slotRecieveData( KIO::Job*, const QByteArray& data )
 /* see also slotPostMessage()                */ /* private slot */
 void KitaWriteView::slotPostFinished( KIO::Job* )
 {
-    QString response = QTextCodec::codecForName( "sjis" ) ->toUnicode( m_array );
+    QString response;
+
+    if( m_array.contains( "x-euc-jp" ) ) response = QTextCodec::codecForName( "eucJP" )->toUnicode( m_array );
+    else response = QTextCodec::codecForName( "sjis" )->toUnicode( m_array );
+    
     int retcode = resultCode( response );
 
     qDebug( "\ncode: %d\n", retcode );
@@ -431,6 +453,46 @@ QString KitaWriteView::setPostStr()
 }
 
 
+/* private */
+QString KitaWriteView::setJBBSPostStr()
+{
+    QString ret;
+    if ( !m_cp932Codec ) m_cp932Codec = new QCp932Codec();
+
+    int mib = m_cp932Codec->mibEnum();
+    int serverTime;
+
+    if ( m_mode == WRITEMODE_NORMAL ) serverTime = Kita::DatManager::getServerTime( m_datURL );
+    /* TODO: get time from server */
+    else serverTime = QDateTime::currentDateTime().toTime_t() - 10 * 60;
+
+    /* submit ( URL encoded ) */
+    if ( m_mode == WRITEMODE_NORMAL ) ( ret += "submit=" ) += "%8f%91%82%ab%8d%9e%82%de";  /* kakikomu */
+    else ( ret += "submit=" ) += "%90V%8BK%8F%91%82%AB%8D%9E%82%DD"; /* sinki kakikomi */
+
+    /* NAME, MAIL, MESSAGE, BBS */
+    ( ret += "&NAME=" ) += KURL::encode_string( nameLine->text(), mib );
+    ( ret += "&MAIL=" ) += KURL::encode_string( mailLine->text(), mib );
+    ( ret += "&MESSAGE=" ) += KURL::encode_string( bodyText->text(), mib );
+    ( ret += "&BBS=" ) += Kita::BoardManager::boardID( m_datURL ).section( "/", 1, 1 );
+
+    /* DIR */
+    ( ret += "&DIR=" ) +=Kita::BoardManager::boardID( m_datURL ).section( "/", 0, 0 );
+
+    /* SUBJECT */
+    if ( m_mode == WRITEMODE_NEWTHREAD ) ( ret += "&SUBJECT=" ) += KURL::encode_string( threadName->text(), mib );
+    
+    /* KEY */
+    if ( m_mode == WRITEMODE_NORMAL ) ( ret += "&KEY=" ) += Kita::DatManager::threadID( m_datURL );
+
+    /* TIME */
+    ( ret += "&TIME=" ) += QString::number( serverTime );
+
+
+    return ret;
+}
+
+
 /* save post log */ /* private */
 void KitaWriteView::logPostMessage()
 {
@@ -482,6 +544,9 @@ int KitaWriteView::resultCode( const QString& response ) const
     } else { /* get code from title */
 
         QString title = resultTitle( response );
+        qDebug( "title : [%s] / [%s] "
+               , ( const char * ) title.local8Bit()
+               , ( const char * ) Kita::BoardManager::boardName( m_datURL ).local8Bit() );
 
         if ( title != QString::null ) {
 
@@ -497,6 +562,8 @@ int KitaWriteView::resultCode( const QString& response ) const
                       && response.contains( ckstr )
                       && response.contains( "subbbs.cgi" ) ) retcode = K2ch_NewThread;
 
+            /* for JBBS.  adhoc... */
+            else if( m_bbstype == Kita::Board_JBBS && response.contains( "x-euc-jp" ) ) retcode = K2ch_True;
         }
     }
 
index fb99203..12672f5 100644 (file)
@@ -40,6 +40,7 @@ class KitaWriteView : public KitaWriteDialogBase
     KitaHTMLPart *m_preview;
     KURL m_datURL;
     KURL m_bbscgi;
+    int m_bbstype;
     int m_mode;
 
     static QCp932Codec* m_cp932Codec;    
@@ -74,6 +75,7 @@ private slots:
 private:
  
     QString setPostStr();
+    QString setJBBSPostStr();
     void logPostMessage();    
     int resultCode( const QString& response ) const;
     QString resultMessage( const QString& response ) const;