/***************************************************************************
-* 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 *
#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"
/* 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() ),
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 );
/* slotPostFinished() is called when done. */
connect( job, SIGNAL( result( KIO::Job* ) ),
this, SLOT( slotPostFinished( KIO::Job* ) ) );
+
}
/* 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 );
}
+/* 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()
{
} 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 ) {
&& 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;
}
}