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