Sumit has uploaded a new change for review.

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

Change subject: Save banner properties in page_props for api use
......................................................................

Save banner properties in page_props for api use

Set valid banner 'name' and banner 'focus' from parser hook in page_props table.
Store 'wpb-banner-options' array using ParserOutput::setExtensionData() as it is
only being used programatically by the extension.

Bug: T118937
Change-Id: I14df56e8907d1398e40c552c1eb2b9d8d2120abc
---
M includes/WikidataPageBanner.hooks.php
M tests/phpunit/BannerOptionsTest.php
M tests/phpunit/BannerTest.php
3 files changed, 20 insertions(+), 15 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikidataPageBanner 
refs/changes/09/256409/1

diff --git a/includes/WikidataPageBanner.hooks.php 
b/includes/WikidataPageBanner.hooks.php
index 572144d..95df5a6 100644
--- a/includes/WikidataPageBanner.hooks.php
+++ b/includes/WikidataPageBanner.hooks.php
@@ -152,8 +152,8 @@
         * @param  ParserOutput $pOut
         */
        public static function onOutputPageParserOutput( OutputPage $out, 
ParserOutput $pOut ) {
-               if ( $pOut->getProperty( 'wpb-banner-options' ) != null ) {
-                       $options = $pOut->getProperty( 'wpb-banner-options' );
+               if ( $pOut->getExtensionData( 'wpb-banner-options' ) != null ) {
+                       $options = $pOut->getExtensionData( 
'wpb-banner-options' );
 
                        // if toc parameter set and toc enabled, remove 
original classes and add banner class
                        if ( isset( $options['enable-toc'] ) && 
$pOut->getTOCEnabled() ) {
@@ -267,7 +267,7 @@
                                        $argumentsFromParserFunction );
                        $paramsForBannerTemplate['name'] = $bannername;
                        // Set 'wpb-banner-options' property for generating 
banner later
-                       $parser->getOutput()->setProperty( 
'wpb-banner-options', $paramsForBannerTemplate );
+                       $parser->getOutput()->setExtensionData( 
'wpb-banner-options', $paramsForBannerTemplate );
 
                        // add the valid banner to image links
                        // @FIXME:Since bannernames which are to be added are 
generated here, getBannerHtml can
@@ -282,8 +282,13 @@
                        } elseif ( $wpbFunctionsClass::getImageUrl( 
$wikidataBanner ) !== null ) {
                                $bannerTitle = Title::makeTitleSafe( NS_FILE, 
$wikidataBanner );
                        }
+                       // add custom or wikidata banner properties to 
page_props table if a valid banner exists
+                       // in, checking for custom banner first, then wikidata 
banner
                        if ( $bannerTitle !== null ) {
                                $parser->fetchFileAndTitle( $bannerTitle );
+                               $parser->getOutput()->setProperty( 
'wpb_banner', $bannerTitle->getText() );
+                               $parser->getOutput()->setProperty( 
'wpb_banner_focus_x', $paramsForBannerTemplate['data-pos-x'] );
+                               $parser->getOutput()->setProperty( 
'wpb_banner_focus_y', $paramsForBannerTemplate['data-pos-y'] );
                        }
                }
        }
diff --git a/tests/phpunit/BannerOptionsTest.php 
b/tests/phpunit/BannerOptionsTest.php
index 6d7cc31..4ccb887 100644
--- a/tests/phpunit/BannerOptionsTest.php
+++ b/tests/phpunit/BannerOptionsTest.php
@@ -47,7 +47,7 @@
 
                WikidataPageBanner::addCustomBanner( $parser, 'Banner1' );
                $pOut = $parser->getOutput();
-               $bannerparams = $pOut->getProperty( 'wpb-banner-options' );
+               $bannerparams = $pOut->getExtensionData( 'wpb-banner-options' );
                $this->assertEquals( $bannerparams['title'], 
'BannerWithOptions',
                        'pgname must be set to title' );
                $this->assertEquals( $bannerparams['tooltip'], 
'BannerWithOptions',
@@ -57,7 +57,7 @@
                $pOut->setProperty( 'wpb-banner-options', null );
                WikidataPageBanner::addCustomBanner( $parser, 'Banner1',
                        'pgname=Banner2' );
-               $bannerparams = $pOut->getProperty( 'wpb-banner-options' );
+               $bannerparams = $pOut->getExtensionData( 'wpb-banner-options' );
                $this->assertEquals( $bannerparams['title'], 'Banner2',
                        'pgname must be set' );
                $this->assertEquals( $bannerparams['tooltip'], 'Banner2',
@@ -67,7 +67,7 @@
                $pOut->setProperty( 'wpb-banner-options', null );
                WikidataPageBanner::addCustomBanner( $parser, 'Banner1',
                        'pgname=Banner2', 'tooltip=hovertext' );
-               $bannerparams = $pOut->getProperty( 'wpb-banner-options' );
+               $bannerparams = $pOut->getExtensionData( 'wpb-banner-options' );
                $this->assertEquals( $bannerparams['title'], 'Banner2',
                        'pgname must be set' );
                $this->assertEquals( $bannerparams['tooltip'], 'hovertext',
@@ -77,7 +77,7 @@
                $pOut->setProperty( 'wpb-banner-options', null );
                WikidataPageBanner::addCustomBanner( $parser, 'Banner1',
                        'pgname=Banner2', 'icon-unesco=', 'icon-star=Main Page' 
);
-               $bannerparams = $pOut->getProperty( 'wpb-banner-options' );
+               $bannerparams = $pOut->getExtensionData( 'wpb-banner-options' );
                $this->assertEquals( $bannerparams['title'], 'Banner2',
                        'pgname must be set' );
                $this->assertEquals( $bannerparams['icons'][0]['title'], 
'unesco',
@@ -93,7 +93,7 @@
                $pOut->setProperty( 'wpb-banner-options', null );
                WikidataPageBanner::addCustomBanner( $parser, 'Banner1',
                        'pgname=Banner2', 'origin=0.3,0.2' );
-               $bannerparams = $pOut->getProperty( 'wpb-banner-options' );
+               $bannerparams = $pOut->getExtensionData( 'wpb-banner-options' );
                $this->assertEquals( $bannerparams['originx'], 'wpb-right',
                        'classname for position must be set' );
                $this->assertEquals( $bannerparams['data-pos-x'], 0.3,
@@ -105,7 +105,7 @@
                $pOut->setProperty( 'wpb-banner-options', null );
                WikidataPageBanner::addCustomBanner( $parser, 'Banner1',
                        'pgname=Banner2', 'origin=0.3' );
-               $bannerparams = $pOut->getProperty( 'wpb-banner-options' );
+               $bannerparams = $pOut->getExtensionData( 'wpb-banner-options' );
                $this->assertEquals( $bannerparams['data-pos-x'], 0,
                        'data-pos must default to 0' );
                $this->assertEquals( $bannerparams['data-pos-y'], 0,
@@ -115,7 +115,7 @@
                $pOut->setProperty( 'wpb-banner-options', null );
                WikidataPageBanner::addCustomBanner( $parser, 'Banner1',
                        'pgname=Banner2', 'origin=0.3', 'test=testparam' );
-               $bannerparams = $pOut->getProperty( 'wpb-banner-options' );
+               $bannerparams = $pOut->getExtensionData( 'wpb-banner-options' );
                $this->assertEquals( $bannerparams['data-pos-x'], 0,
                        'data-pos must default to 0' );
                $this->assertEquals( $bannerparams['data-pos-y'], 0,
@@ -127,7 +127,7 @@
                $pOut->setProperty( 'wpb-banner-options', null );
                WikidataPageBanner::addCustomBanner( $parser, 'Banner1',
                        'pgname=Banner2', 'origin=0.3', 'test=testparam', 
'test2' );
-               $bannerparams = $pOut->getProperty( 'wpb-banner-options' );
+               $bannerparams = $pOut->getExtensionData( 'wpb-banner-options' );
                $this->assertEquals( $bannerparams['data-pos-x'], 0,
                        'data-pos must default to 0' );
                $this->assertEquals( $bannerparams['data-pos-y'], 0,
@@ -139,7 +139,7 @@
                $pOut->setProperty( 'wpb-banner-options', null );
                WikidataPageBanner::addCustomBanner( $parser, 'Banner1',
                        'pgname=Banner2', 'toc=yes', 'test=testparam', 'test2' 
);
-               $bannerparams = $pOut->getProperty( 'wpb-banner-options' );
+               $bannerparams = $pOut->getExtensionData( 'wpb-banner-options' );
                $this->assertEquals( $bannerparams['enable-toc'], true,
                        'toc must default to yes' );
                $this->assertEquals( array(
diff --git a/tests/phpunit/BannerTest.php b/tests/phpunit/BannerTest.php
index 60431d1..6e46986 100644
--- a/tests/phpunit/BannerTest.php
+++ b/tests/phpunit/BannerTest.php
@@ -90,7 +90,7 @@
                WikidataPageBanner::$wpbFunctionsClass = 
"MockWikidataPageBannerFunctions";
                WikidataPageBanner::addCustomBanner( $parser, 'Banner' );
                $pOut = $parser->getOutput();
-               $bannerparams = $pOut->getProperty( 'wpb-banner-options' );
+               $bannerparams = $pOut->getExtensionData( 'wpb-banner-options' );
                $this->assertEquals( $bannerparams['name'], 'Banner',
                        'banner parameters must be set on valid namespaces' );
 
@@ -98,8 +98,8 @@
                WikidataPageBanner::$wpbFunctionsClass = 
"MockWikidataPageBannerFunctions";
                WikidataPageBanner::addCustomBanner( $parser, 'Banner' );
                $pOut = $parser->getOutput();
-               $bannerparams = $pOut->getProperty( 'wpb-banner-options' );
-               $this->assertFalse( $bannerparams, 'Banner',
+               $bannerparams = $pOut->getExtensionData( 'wpb-banner-options' );
+               $this->assertNull( $bannerparams, 'Banner',
                        'bannerparameters property should be null for 
not-allowed namespaces' );
        }
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I14df56e8907d1398e40c552c1eb2b9d8d2120abc
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikidataPageBanner
Gerrit-Branch: master
Gerrit-Owner: Sumit <asthana.sumi...@gmail.com>

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

Reply via email to