jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/387548 )
Change subject: Use ParserOutput::setExtensionData for translatable pages ...................................................................... Use ParserOutput::setExtensionData for translatable pages Code taken and adapted for future extensibility from https://github.com/SemanticMediaWiki/SemanticMediaWiki/issues/2300 Change-Id: I4a200dbf5da17911b512c8f5dc58fee9115f93c6 --- M tag/PageTranslationHooks.php A tests/phpunit/tag/PageTranslationHooksTest.php 2 files changed, 106 insertions(+), 0 deletions(-) Approvals: jenkins-bot: Verified Santhosh: Looks good to me, approved diff --git a/tag/PageTranslationHooks.php b/tag/PageTranslationHooks.php index 2251cf7..19bb732 100644 --- a/tag/PageTranslationHooks.php +++ b/tag/PageTranslationHooks.php @@ -63,6 +63,15 @@ } self::$renderingContext = false; + $parser->getOutput()->setExtensionData( + 'translate-translation-page', + [ + 'sourcepagetitle' => $page->getTitle(), + 'languagecode' => $code, + 'messagegroupid' => $page->getMessageGroupId() + ] + ); + // Disable edit section links $parser->getOptions()->setEditSection( false ); diff --git a/tests/phpunit/tag/PageTranslationHooksTest.php b/tests/phpunit/tag/PageTranslationHooksTest.php new file mode 100644 index 0000000..e4afdf5 --- /dev/null +++ b/tests/phpunit/tag/PageTranslationHooksTest.php @@ -0,0 +1,97 @@ +<?php +/** + * Test for various code using hooks. + * + * @file + * @author Niklas Laxström + * @license GPL-2.0+ + */ + +/** + * @group Database + * @group medium + */ +class PageTranslationHooksTest extends MediaWikiTestCase { + protected function setUp() { + parent::setUp(); + + global $wgHooks; + $this->setMwGlobals( [ + 'wgHooks' => [], + 'wgEnablePageTranslation' => true, + 'wgTranslateTranslationServices' => [], + ] ); + TranslateHooks::setupTranslate(); + $wgHooks['TranslatePostInitGroups'] = [ 'MessageGroups::getTranslatablePages' ]; + + $mg = MessageGroups::singleton(); + $mg->setCache( wfGetCache( 'hash' ) ); + $mg->recache(); + + MessageIndex::setInstance( new HashMessageIndex() ); + MessageIndex::singleton()->rebuild(); + } + + public function testRenderTagPage() { + global $wgParser; + + // Setup objects + $superUser = new MockSuperUser(); + $translatablePageTitle = Title::newFromText( 'Vuosaari' ); + $page = WikiPage::factory( $translatablePageTitle ); + $text = '<translate>pupu</translate>'; + $content = ContentHandler::makeContent( $text, $translatablePageTitle ); + $translatablePage = TranslatablePage::newFromTitle( $translatablePageTitle ); + $parser = $wgParser->getFreshParser(); + $options = ParserOptions::newFromUser( $superUser ); + $messageGroups = MessageGroups::singleton(); + + // Create the page + $editStatus = $page->doEditContent( $content, __METHOD__, 0, false, $superUser ); + $messageGroups->recache(); + + // Check that we don't interfere with non-translatable pages at all + $parserOutput = $parser->parse( $text, $translatablePageTitle, $options ); + $actual = $parserOutput->getExtensionData( 'translate-translation-page' ); + $expected = null; + $this->assertSame( $expected, $actual, 'Extension data is not set on unmarked source page' ); + + // Mark the page for translation + $latestRevisionId = $editStatus->value['revision']->getId(); + $translatablePage->addMarkedTag( $latestRevisionId ); + $messageGroups->recache(); + $translationPageTitle = Title::newFromText( 'Vuosaari/fi' ); + TranslateRenderJob::newJob( $translationPageTitle )->run(); + + // Check that we don't add data to translatable pages + $parserOutput = $parser->parse( $text, $translatablePageTitle, $options ); + $actual = $parserOutput->getExtensionData( 'translate-translation-page' ); + $expected = null; + $this->assertSame( $expected, $actual, 'Extension data is not set on marked source page' ); + + // Check that our code works for translation pages + $parserOutput = $parser->parse( 'fi-pupu', $translationPageTitle, $options ); + $actual = $parserOutput->getExtensionData( 'translate-translation-page' ); + $expected = [ + 'sourcepagetitle' => $translatablePageTitle, + 'languagecode' => 'fi', + 'messagegroupid' => 'page-Vuosaari', + ]; + $this->assertTrue( is_array( $actual ), 'Extension data is set on marked page' ); + $this->assertSame( + 'Vuosaari', + $actual[ 'sourcepagetitle' ]->getPrefixedText(), + 'Source page title is correct' + ); + $this->assertSame( + 'fi', + $actual[ 'languagecode' ], + 'Language code is correct' + ); + $this->assertSame( + 'page-Vuosaari', + $actual[ 'messagegroupid' ], + 'Message group id is correct' + ); + } +} -- To view, visit https://gerrit.wikimedia.org/r/387548 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4a200dbf5da17911b512c8f5dc58fee9115f93c6 Gerrit-PatchSet: 2 Gerrit-Project: mediawiki/extensions/Translate Gerrit-Branch: master Gerrit-Owner: Nikerabbit <[email protected]> Gerrit-Reviewer: Amire80 <[email protected]> Gerrit-Reviewer: Catrope <[email protected]> Gerrit-Reviewer: KartikMistry <[email protected]> Gerrit-Reviewer: Nikerabbit <[email protected]> Gerrit-Reviewer: Petar.petkovic <[email protected]> Gerrit-Reviewer: Santhosh <[email protected]> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
