[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdepimlibs/kblog
From: Christian Weilbach <christian () whiletaker ! homeip ! net>
Date: 2009-09-02 14:46:45
Message-ID: 1251902805.477421.14131.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1018993 by weilbach:
Fix category support for MovableType and WordpressBuggy. Just set the QStringList \
with BlogPost::setCategories() and you are done. The rest is worked around \
internally.
M +1 -0 blogger1.cpp
M +48 -3 movabletype.cpp
M +4 -0 movabletype.h
M +2 -0 movabletype_p.h
M +1 -0 tests/data.h
M +4 -3 tests/testmovabletype.cpp
M +1 -0 tests/testwordpressbuggy.cpp
M +12 -4 wordpressbuggy.cpp
--- trunk/KDE/kdepimlibs/kblog/blogger1.cpp #1018992:1018993
@@ -444,6 +444,7 @@
{
Q_Q( Blogger1 );
Q_UNUSED( number );
+ kDebug() << "An error occured: " << errorString;
BlogPost *post = mCallMap[ id.toInt() ];
emit q->errorPost( Blogger1::XmlRpc, errorString, post );
--- trunk/KDE/kdepimlibs/kblog/movabletype.cpp #1018992:1018993
@@ -88,6 +88,26 @@
QVariant( i ) );
}
+void MovableType::fetchPost( BlogPost *post )
+{
+ Q_D( MovableType );
+ kDebug();
+ if ( d->mCategoriesList.isEmpty() && post->categories( ).count() ) {
+ d->mFetchPostCache << post;
+ if ( d->mFetchPostCache.count() ) {
+ // we are already trying to fetch another post, so we don't need to start
+ // another listCategories() job
+ return;
+ }
+
+ connect( this, SIGNAL( listedCategories( const QList<QMap<QString,QString> >& ) \
) + , this, SLOT( slotTriggerFetchPost() ) );
+ listCategories();
+ } else {
+ MetaWeblog::fetchPost( post );
+ }
+}
+
void MovableType::createPost( BlogPost *post )
{
// reimplemented because we do this:
@@ -131,6 +151,22 @@
mCreatePostCache.clear();
}
+void MovableTypePrivate::slotTriggerFetchPost()
+{
+ kDebug();
+ Q_Q( MovableType );
+
+ q->disconnect( q,SIGNAL( listedCategories( const QList<QMap<QString,QString> >& ) \
), + q,SLOT( slotTriggerFetchPost() ) );
+ QList<BlogPost*>::Iterator it = mFetchPostCache.begin();
+ QList<BlogPost*>::Iterator end = mFetchPostCache.end();
+ for ( ; it!=end; it++ ) {
+ q->fetchPost( *it );
+ }
+ mFetchPostCache.clear();
+}
+
+
MovableTypePrivate::MovableTypePrivate()
{
kDebug();
@@ -174,8 +210,8 @@
// map the categoryId of the server to the name
QStringList categories = post->categories();
- for( int j=0; j<=categories.count(); j++ ){
- for( int k=0; k<=mCategoriesList.count(); k++ ){
+ for( int j=0; j<categories.count(); j++ ){
+ for( int k=0; k<mCategoriesList.count(); k++ ){
if(mCategoriesList[k]["name"]==categories[j]){
kDebug() << "Matched category with name: " << categories[ j ];
QMap<QString,QVariant> category;
@@ -263,7 +299,16 @@
QString title( postInfo["title"].toString() );
QString description( postInfo["description"].toString() );
- QStringList categories( postInfo["categories"].toStringList() );
+ QStringList categoryIdList = postInfo["categories"].toStringList();
+ QStringList categories;
+ for ( int i=0; i<categoryIdList.count(); i++ ) {
+ for ( int k=0; k<mCategoriesList.count(); k++ ) {
+ if ( mCategoriesList[ k ][ "categoryId" ]==categoryIdList[ i ]) {
+ categories << mCategoriesList[ k ][ "name" ];
+ }
+ }
+ }
+
//TODO 2 new keys are:
// String mt_convert_breaks, the value for the convert_breaks field
post->setSlug( postInfo["wp_slug"].toString() );
--- trunk/KDE/kdepimlibs/kblog/movabletype.h #1018992:1018993
@@ -115,6 +115,8 @@
void createPost( KBlog::BlogPost *post );
+ void fetchPost( KBlog::BlogPost *post );
+
Q_SIGNALS:
/**
This signal is emitted when the trackback pings are fetched completely.
@@ -157,6 +159,8 @@
void slotSetPostCategories(const QList<QVariant>&,const \
QVariant&) ) Q_PRIVATE_SLOT( d_func(),
void slotTriggerCreatePost() )
+ Q_PRIVATE_SLOT( d_func(),
+ void slotTriggerFetchPost() )
};
} //namespace KBlog
--- trunk/KDE/kdepimlibs/kblog/movabletype_p.h #1018992:1018993
@@ -51,6 +51,7 @@
void slotModifyPost( const QList<QVariant> &, const QVariant & );
void slotSetPostCategories(const QList<QVariant>&,const QVariant&);
void slotTriggerCreatePost();
+ void slotTriggerFetchPost();
Q_DECLARE_PUBLIC( MovableType )
QList<QVariant> defaultArgs( const QString &id = QString() );
@@ -59,6 +60,7 @@
bool readArgsFromPost( QList<QVariant> *args, const BlogPost &post );
QMap<int,bool> mPublishAfterCategories;
QList<BlogPost*> mCreatePostCache;
+ QList<BlogPost*> mFetchPostCache;
};
}
--- trunk/KDE/kdepimlibs/kblog/tests/data.h #1018992:1018993
@@ -47,6 +47,7 @@
bool mCommentAllowed = true;
bool mTrackBackAllowed = true;
QStringList mTags( "funny" );
+QStringList mCategories( "funny" );
QString mSummary = "A simple summary.";
#endif
--- trunk/KDE/kdepimlibs/kblog/tests/testmovabletype.cpp #1018992:1018993
@@ -44,7 +44,7 @@
// use this functions as a chain to go through network traffic.
void fetchUserInfo( const QMap<QString,QString>& );
void listBlogs( const QList<QMap<QString,QString> >& );
-// void listCategories( const QList<QMap<QString,QString> >& categories );
+ void listCategories( const QList<QMap<QString,QString> >& categories );
void listRecentPosts( const QList<KBlog::BlogPost>& posts );
void createPost( KBlog::BlogPost *post );
void modifyPost( KBlog::BlogPost *post );
@@ -181,7 +181,7 @@
}
qDebug() << "#################################\n";
-/* connect( b, SIGNAL( listedCategories( const QList<QMap<QString,QString> >& ) ),
+ connect( b, SIGNAL( listedCategories( const QList<QMap<QString,QString> >& ) ),
this, SLOT( listCategories( const QList<QMap<QString,QString> >&) ) );
b->listCategories(); // start chain
listCategoriesTimer->start( TIMEOUT );
@@ -198,7 +198,7 @@
qDebug() << "# category name: " << ( *it )["name"];
}
qDebug() << "###############################\n";
-*/
+
connect( b, SIGNAL( createdPost( KBlog::BlogPost* ) ),
this, SLOT( createPost( KBlog::BlogPost* ) ) );
b->createPost( p ); // start chain
@@ -369,6 +369,7 @@
p->setTrackBackAllowed( mTrackBackAllowed );
p->setSummary( mSummary );
p->setTags( mTags );
+ p->setCategories( mCategories << "Blogroll" );
BlogMedia *m = new BlogMedia();
m->setName( "testMovableType.txt" );
--- trunk/KDE/kdepimlibs/kblog/tests/testwordpressbuggy.cpp #1018992:1018993
@@ -369,6 +369,7 @@
p->setTrackBackAllowed( mTrackBackAllowed );
p->setSummary( mSummary );
p->setTags( mTags );
+ p->setCategories( mCategories << "Blogroll" );
BlogMedia *m = new BlogMedia();
m->setName( "testWordpressBuggy.txt" );
--- trunk/KDE/kdepimlibs/kblog/wordpressbuggy.cpp #1018992:1018993
@@ -83,7 +83,7 @@
xmlMarkup += "<value><string><![CDATA["+post->title()+"]]></string></value>";
xmlMarkup += "</member><member>";
- QList<QString> catList = post->categories();
+/* QList<QString> catList = post->categories();
if ( !catList.empty() ){
xmlMarkup += "<name>categories</name>";
xmlMarkup += "<value><array><data>";
@@ -94,7 +94,7 @@
}
xmlMarkup += "</data></array></value>";
xmlMarkup += "</member><member>";
- }
+ }*/
xmlMarkup += "<name>dateCreated</name>";
xmlMarkup += "<value><dateTime.iso8601>" +
@@ -180,7 +180,7 @@
xmlMarkup += "<value><string><![CDATA["+post->title()+"]]></string></value>";
xmlMarkup += "</member><member>";
- QList<QString> catList = post->categories();
+/* QList<QString> catList = post->categories();
if ( !catList.empty() ){
xmlMarkup += "<name>categories</name>";
xmlMarkup += "<value><array><data>";
@@ -191,7 +191,7 @@
}
xmlMarkup += "</data></array></value>";
xmlMarkup += "</member><member>";
- }
+ }*/
xmlMarkup += "<name>lastModified</name>";
xmlMarkup += "<value><dateTime.iso8601>" +
@@ -317,6 +317,10 @@
post->setPostId( rxId.cap( 1 ) );
post->setStatus( BlogPost::Created );
+
+ if ( !post->categories().isEmpty() ) {
+ MovableTypePrivate::setPostCategories( post, !post->isPrivate() );
+ }
kDebug() << "Emitting createdPost()";
emit q->createdPost( post );
}
@@ -357,6 +361,10 @@
}
kDebug() << "QRegExp rx( \"<boolean>(.+)</boolean>\" ) matches" << rxId.cap( 1 );
+ if ( !post->categories().isEmpty() ) {
+ MovableTypePrivate::setPostCategories( post, !post->isPrivate() );
+ }
+
if ( rxId.cap( 1 ).toInt() == 1 ) {
kDebug() << "Post successfully updated.";
post->setStatus( BlogPost::Modified );
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic