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