Kunalgrover05 has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/151310

Change subject: Move source translation page on changing page language
......................................................................

Move source translation page on changing page language

Change-Id: I1481fda8b55a05b159af99d4c0b69a92c4eabed8
---
M TranslateHooks.php
M tag/PageTranslationHooks.php
2 files changed, 55 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Translate 
refs/changes/10/151310/1

diff --git a/TranslateHooks.php b/TranslateHooks.php
index a160bd1..de3de6b 100644
--- a/TranslateHooks.php
+++ b/TranslateHooks.php
@@ -158,6 +158,9 @@
 
                        // Replaced edit tab with translation tab for 
translation pages
                        $wgHooks['SkinTemplateNavigation'][] = 
'PageTranslationHooks::translateTab';
+
+                       // Hook on changing page language
+                       $wgHooks['ChangePageLanguage'][] = 
'PageTranslationHooks::moveDefaultTranslationPage';
                }
        }
 
diff --git a/tag/PageTranslationHooks.php b/tag/PageTranslationHooks.php
index 5231eb2..a188d1c 100644
--- a/tag/PageTranslationHooks.php
+++ b/tag/PageTranslationHooks.php
@@ -865,4 +865,55 @@
 
                return true;
        }
-}
+
+       /**
+        * Move the default translation page on change in page language
+        * Hook: onPageLanguageChange
+        * @since 2014.08
+        */
+       static function moveDefaultTranslationPage( Title $title, $oldLang, 
$newLang, User $user ) {
+               global $wgLanguageCode;
+
+               // Checking if old or new language are default wiki languages
+               $oldLang = $oldLang ? $oldLang : $wgLanguageCode;
+               $newLang = $newLang ? $newLang : $wgLanguageCode;
+
+               if ( $title->getSubpage( $newLang )->exists() ) {
+                       // If subpage exists already, changing page language 
isn't possible.
+                       throw new MWException( 'Translation subpage exists, 
can\'t change language' );
+               } else {
+                       $page = TranslatablePage::newFromTitle( $title );
+
+                       $oldTitle = $title->getSubpage( $oldLang );
+                       $newTitle = $title->getSubpage( $newLang );
+                       $jobs = array();
+                       $base = $title->getText();
+                       $params = array(
+                               'base-source' => $base,
+                               'base-target' => $base
+                       );
+
+                       // Adding translation pages to job queue
+                       $jobs[$oldTitle->getPrefixedText()] = 
TranslateMoveJob::newJob(
+                               $oldTitle, $newTitle, $params, $user
+                       );
+
+                       // Adding section pages to job queue
+                       $sectionPages = $page->getTranslationUnitPages( 'all ', 
$oldLang );
+                       foreach ( $sectionPages as $old ) {
+                               $oldText = $old->getPrefixedText();
+                               $pos = strrpos( $oldText, $oldLang );
+                               $newText = substr_replace( 
$old->getPrefixedText(), $newLang, $pos );
+                               $new = Title::newFromText( $newText );
+                               $jobs[$old->getPrefixedText()] = 
TranslateMoveJob::newJob(
+                                       $old, $new, $params, $user
+                               );
+                       }
+
+                       wfGetCache( CACHE_ANYTHING )->set( wfMemcKey( 
'translate-pt-move', $page->getText() ), count( $jobs ) );
+                       JobQueueGroup::singleton()->push( $jobs );
+               }
+               return true;
+       }
+
+}
\ No newline at end of file

-- 
To view, visit https://gerrit.wikimedia.org/r/151310
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1481fda8b55a05b159af99d4c0b69a92c4eabed8
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Translate
Gerrit-Branch: master
Gerrit-Owner: Kunalgrover05 <kunalgrove...@gmail.com>

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

Reply via email to