Revision: 50381
Author:   nikerabbit
Date:     2009-05-09 20:07:18 +0000 (Sat, 09 May 2009)

Log Message:
-----------
* quick hack for diffs

Modified Paths:
--------------
    trunk/extensions/Translate/TranslateEditAddons.php
    trunk/extensions/Translate/tag/TranslatablePage.php

Modified: trunk/extensions/Translate/TranslateEditAddons.php
===================================================================
--- trunk/extensions/Translate/TranslateEditAddons.php  2009-05-09 19:45:58 UTC 
(rev 50380)
+++ trunk/extensions/Translate/TranslateEditAddons.php  2009-05-09 20:07:18 UTC 
(rev 50381)
@@ -327,6 +327,38 @@
                        }
                }
 
+               global $wgEnablePageTranslation;
+               if ( $wgEnablePageTranslation && $group instanceof 
WikiPageMessageGroup ) {
+                       // TODO: encapsulate somewhere
+                       $page = TranslatablePage::newFromTitle( $group->title );
+                       $rev = $page->getTransRev( "$key/$code" );
+                       $latest = $page->getMarkedTag();
+                       if ( $rev !== $latest ) {
+                               $oldpage = TranslatablePage::newFromRevision( 
$group->title, $rev );
+                               $oldtext = null;
+                               $newtext = null;
+                               foreach ( 
$oldpage->getParse()->getSectionsForSave() as $section ) {
+                                       if ( $group->title->getPrefixedText() 
.'/'. $section->id === $key ) {
+                                               $oldtext = 
$section->getTextForTrans();
+                                       }
+                               }
+
+                               foreach ( 
$page->getParse()->getSectionsForSave() as $section ) {
+                                       if ( $group->title->getPrefixedText() 
.'/'. $section->id === $key ) {
+                                               $newtext = 
$section->getTextForTrans();
+                                       }
+                               }
+
+                               if ( $oldtext !== $newtext ) {
+                                       wfLoadExtensionMessages( 
'PageTranslation' );
+                                       $diff = new DifferenceEngine;
+                                       $diff->setText( $oldtext, $newtext );
+                                       $boxes[] = $diff->getDiff( 
wfMsgHtml('tpt-diff-old'), wfMsgHtml('tpt-diff-new') );
+                                       $diff->showDiffStyle();
+                               }
+                       }
+               }
+
                // Definition
                if ( $en !== null ) {
                        $label = " ({$group->getLabel()})";

Modified: trunk/extensions/Translate/tag/TranslatablePage.php
===================================================================
--- trunk/extensions/Translate/tag/TranslatablePage.php 2009-05-09 19:45:58 UTC 
(rev 50380)
+++ trunk/extensions/Translate/tag/TranslatablePage.php 2009-05-09 20:07:18 UTC 
(rev 50381)
@@ -57,6 +57,7 @@
                }
 
                if ( !is_string($this->text) ) throw new MWException( 'We have 
no text' );
+               $this->init = true;
                return $this->text;
        }
 
@@ -67,6 +68,12 @@
                return $this->revision;
        }
 
+       public function setRevision( $revision ) {
+               $this->revision = $revision;
+               $this->source = 'revision';
+               $this->init = false;
+       }
+
        // Public functions //
 
        public function getParse() {
@@ -202,7 +209,7 @@
                        'rt_revision' => $revision
                );
                $dbw->delete( 'revtag', $conds, __METHOD__ );
-               if ( $value !== null ) $conds['rt_value'] = serialize($value);
+               if ( $value !== null ) $conds['rt_value'] = 
serialize(implode('|',$value));
                $dbw->insert( 'revtag', $conds, __METHOD__ );
        }
 
@@ -314,7 +321,7 @@
                        $rev = $this->getTransrev( $key .'/' . 
$collection->code );
                        foreach ( $markedRevs as $r ) {
                                if ( $rev === $r->rt_revision ) break;
-                               $changed = unserialize($r->rt_value);
+                               $changed = explode( '|', 
unserialize($r->rt_value) );
 
                                // Get a suitable section key
                                $parts = explode( '/', $key );
@@ -330,7 +337,7 @@
                return $total/$count;
        }
 
-       protected function getTransRev( $suffix ) {
+       public function getTransRev( $suffix ) {
                $id = $this->getTagId( 'tp:transver' );
                $title = Title::makeTitle( NS_TRANSLATIONS, $suffix );
 



_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to