[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