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

Reply via email to