jenkins-bot has submitted this change and it was merged. Change subject: Update Wikibase and ArticlePlaceholder ......................................................................
Update Wikibase and ArticlePlaceholder * Fix problem with display of labels and descriptions after edit * Fix undefined index in ArticlePlaceholder Bug: T135714 Bug: T136093 Change-Id: Ie702530bf618f3394b0cb01f6f73f53e3a54eec7 --- M composer.json M composer.lock M extensions/ArticlePlaceholder/includes/SearchHookHandler.php M extensions/Wikibase/repo/includes/ParserOutput/EntityParserOutputGenerator.php M extensions/Wikibase/repo/includes/ParserOutput/PlaceholderEmittingEntityTermsView.php M extensions/Wikibase/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php M extensions/Wikibase/view/src/SimpleEntityTermsView.php M vendor/composer/installed.json 8 files changed, 161 insertions(+), 100 deletions(-) Approvals: Aude: Looks good to me, approved jenkins-bot: Verified diff --git a/composer.json b/composer.json index 9d47e45..b24a0e7 100644 --- a/composer.json +++ b/composer.json @@ -5,6 +5,10 @@ "repositories": [ { "type": "git", + "url": "https://gerrit.wikimedia.org/r/mediawiki/extensions/ArticlePlaceholder" + }, + { + "type": "git", "url": "https://gerrit.wikimedia.org/r/mediawiki/extensions/Wikidata.org" }, { @@ -30,7 +34,7 @@ ], "require": { "php": ">=5.5.0", - "mediawiki/article-placeholder": "dev-master", + "mediawiki/article-placeholder": "dev-wmf/1.28.0-wmf.3", "propertysuggester/property-suggester": "~3.0.0", "wikibase/wikibase": "dev-wmf/1.28.0-wmf.3", "wikibase/wikimedia-badges": "dev-master", @@ -65,4 +69,4 @@ "merge-dev": false } } -} \ No newline at end of file +} diff --git a/composer.lock b/composer.lock index 887217a..21ab3ff 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "439229d3171c6acf2b7a6bf40a10cc79", - "content-hash": "d9a4cd52d4a9623427971d1d71685d08", + "hash": "2b8fb9457eef9ee5e5a6fcb694f9b2c7", + "content-hash": "a9d3959d5c7849629f22b9fd8c1119c4", "packages": [ { "name": "composer/installers", @@ -776,17 +776,11 @@ }, { "name": "mediawiki/article-placeholder", - "version": "dev-master", + "version": "dev-wmf/1.28.0-wmf.3", "source": { "type": "git", - "url": "https://github.com/wikimedia/mediawiki-extensions-ArticlePlaceholder.git", - "reference": "1ebcaecb9d8f75ff34dba1b112eace2868379c15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-ArticlePlaceholder/zipball/1ebcaecb9d8f75ff34dba1b112eace2868379c15", - "reference": "1ebcaecb9d8f75ff34dba1b112eace2868379c15", - "shasum": "" + "url": "https://gerrit.wikimedia.org/r/mediawiki/extensions/ArticlePlaceholder", + "reference": "ac0c104182a1fc98b54dea2006eefe858d322cc9" }, "require-dev": { "jakub-onderka/php-parallel-lint": "0.9.2", @@ -798,7 +792,15 @@ "ArticlePlaceholder\\": "includes/" } }, - "notification-url": "https://packagist.org/downloads/", + "scripts": { + "test": [ + "parallel-lint . --exclude vendor", + "phpcs -p -s" + ], + "fix": [ + "phpcbf" + ] + }, "license": [ "GPL-2.0+" ], @@ -809,7 +811,11 @@ ], "description": "Provides a special page with Wikibase information about a certain topic, with invitation to create an article for the topic", "homepage": "https://www.mediawiki.org/wiki/Extension:ArticlePlaceholder", - "time": "2016-05-23 20:21:41" + "support": { + "issues": "https://phabricator.wikimedia.org/", + "irc": "irc://irc.freenode.net/wikidata" + }, + "time": "2016-06-06 22:29:54" }, { "name": "propertysuggester/property-suggester", @@ -1454,12 +1460,12 @@ "source": { "type": "git", "url": "https://github.com/wikimedia/mediawiki-extensions-Wikibase.git", - "reference": "05d1154718ecc187c46d958bd8912cdae76075b2" + "reference": "fc6e571ec0fef7acacd34e745909ca05ba7c60e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/05d1154718ecc187c46d958bd8912cdae76075b2", - "reference": "05d1154718ecc187c46d958bd8912cdae76075b2", + "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/fc6e571ec0fef7acacd34e745909ca05ba7c60e0", + "reference": "fc6e571ec0fef7acacd34e745909ca05ba7c60e0", "shasum": "" }, "require": { @@ -1531,7 +1537,7 @@ "wikibaserepo", "wikidata" ], - "time": "2016-05-31 19:12:11" + "time": "2016-06-06 19:55:50" }, { "name": "wikibase/wikimedia-badges", diff --git a/extensions/ArticlePlaceholder/includes/SearchHookHandler.php b/extensions/ArticlePlaceholder/includes/SearchHookHandler.php index 453d70f..14cb36d 100644 --- a/extensions/ArticlePlaceholder/includes/SearchHookHandler.php +++ b/extensions/ArticlePlaceholder/includes/SearchHookHandler.php @@ -153,6 +153,10 @@ $notableEntityIds = $this->getNotableEntityIds( array_keys( $entityIdSearchResult ) ); + if ( $notableEntityIds === null ) { + return ''; + } + foreach ( $notableEntityIds as $entityId ) { $result = $this->createResult( $entityIdSearchResult[ $entityId ] ); @@ -239,7 +243,7 @@ // $json will be false if the request fails, json_decode can handle that. $data = json_decode( $json, true ); - if ( is_array( $data ) ) { + if ( is_array( $data ) && array_key_exists( 'entities', $data ) ) { return $data[ 'entities' ]; } else { return null; diff --git a/extensions/Wikibase/repo/includes/ParserOutput/EntityParserOutputGenerator.php b/extensions/Wikibase/repo/includes/ParserOutput/EntityParserOutputGenerator.php index 7fcfcf1..aeda587 100644 --- a/extensions/Wikibase/repo/includes/ParserOutput/EntityParserOutputGenerator.php +++ b/extensions/Wikibase/repo/includes/ParserOutput/EntityParserOutputGenerator.php @@ -7,6 +7,8 @@ use SpecialPage; use Wikibase\DataModel\Entity\EntityDocument; use Wikibase\DataModel\Entity\EntityId; +use Wikibase\DataModel\Services\Lookup\EntityRetrievingTermLookup; +use Wikibase\DataModel\Services\Lookup\InMemoryEntityLookup; use Wikibase\DataModel\Term\AliasesProvider; use Wikibase\DataModel\Term\LabelsProvider; use Wikibase\LanguageFallbackChain; @@ -157,13 +159,11 @@ $parserOutput->addJsConfigVars( $configVars ); $parserOutput->setExtensionData( 'wikibase-titletext', $this->getTitleText( $entity ) ); - $entityId = $entity->getId(); - if ( $generateHtml ) { $this->addHtmlToParserOutput( $parserOutput, $entity, - $this->getEntityInfo( $parserOutput, $entityId ) + $this->getEntityInfo( $parserOutput ) ); } else { // If we don't have HTML, the ParserOutput in question @@ -184,6 +184,7 @@ // Sometimes extensions like SpamBlacklist might call getParserOutput // before the id is assigned, during the process of creating a new entity. // in that case, no alternate links are added, which probably is no problem. + $entityId = $entity->getId(); if ( $entityId !== null ) { $this->addAlternateLinks( $parserOutput, $entityId ); } @@ -195,11 +196,10 @@ * Fetches some basic entity information from a set of entity IDs. * * @param ParserOutput $parserOutput - * @param EntityId|null $entityId * * @return EntityInfo */ - private function getEntityInfo( ParserOutput $parserOutput, EntityId $entityId = null ) { + private function getEntityInfo( ParserOutput $parserOutput ) { /** * Set in ReferencedEntitiesDataUpdater. * @@ -212,10 +212,6 @@ wfLogWarning( '$entityIds from ParserOutput "referenced-entities" extension data' . ' expected to be an array' ); $entityIds = []; - } - - if ( $entityId !== null ) { - $entityIds[] = $entityId; } $entityInfoBuilder = $this->entityInfoBuilderFactory->newEntityInfoBuilder( $entityIds ); @@ -272,8 +268,13 @@ EntityDocument $entity, EntityInfo $entityInfo ) { - $labelDescriptionLookup = new LanguageFallbackLabelDescriptionLookup( - new EntityInfoTermLookup( $entityInfo ), + $entityLookup = new InMemoryEntityLookup(); + if ( $entity->getId() !== null ) { + $entityLookup->addEntity( $entity ); + } + + $entityLabelDescriptionLookup = new LanguageFallbackLabelDescriptionLookup( + new EntityRetrievingTermLookup( $entityLookup ), $this->languageFallbackChain ); @@ -298,7 +299,7 @@ $languageDirectionalityLookup, $languageNameLookup ), - $labelDescriptionLookup, + $entityLabelDescriptionLookup, $this->templateFactory, $editSectionGenerator, $this->textProvider, @@ -306,10 +307,15 @@ $textInjector ); + $referencedEntitiesLabelDescriptionLookup = new LanguageFallbackLabelDescriptionLookup( + new EntityInfoTermLookup( $entityInfo ), + $this->languageFallbackChain + ); + $entityView = $this->entityViewFactory->newEntityView( $entity->getType(), $this->languageCode, - $labelDescriptionLookup, + $referencedEntitiesLabelDescriptionLookup, $this->languageFallbackChain, $editSectionGenerator, $entityTermsView diff --git a/extensions/Wikibase/repo/includes/ParserOutput/PlaceholderEmittingEntityTermsView.php b/extensions/Wikibase/repo/includes/ParserOutput/PlaceholderEmittingEntityTermsView.php index 06c1355..a472ca6 100644 --- a/extensions/Wikibase/repo/includes/ParserOutput/PlaceholderEmittingEntityTermsView.php +++ b/extensions/Wikibase/repo/includes/ParserOutput/PlaceholderEmittingEntityTermsView.php @@ -40,9 +40,13 @@ private $textInjector; /** + * @param HtmlTermRenderer $htmlTermRenderer + * @param LabelDescriptionLookup $labelDescriptionLookup * @param TemplateFactory $templateFactory * @param EditSectionGenerator $sectionEditLinkGenerator * @param LocalizedTextProvider $textProvider + * @param TermListView $termListView + * @param TextInjector $textInjector */ public function __construct( HtmlTermRenderer $htmlTermRenderer, diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php b/extensions/Wikibase/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php index 3c871ad..725342a 100644 --- a/extensions/Wikibase/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php +++ b/extensions/Wikibase/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php @@ -7,6 +7,7 @@ use SpecialPage; use Title; use Wikibase\DataModel\Entity\BasicEntityIdParser; +use Wikibase\DataModel\Entity\EntityDocument; use Wikibase\DataModel\Entity\EntityId; use Wikibase\DataModel\Entity\Item; use Wikibase\DataModel\Entity\ItemId; @@ -40,12 +41,43 @@ */ class EntityParserOutputGeneratorTest extends MediaWikiTestCase { - public function testGetParserOutput() { + public function provideTestGetParserOutput() { + return [ + [ + $this->newItem(), + 'kitten item' , + [ 'http://an.url.com', 'https://another.url.org' ], + [ 'File:This_is_a_file.pdf', 'File:Selfie.jpg' ], + [ + new ItemId( 'Q42' ), + new ItemId( 'Q35' ), + new PropertyId( 'P42' ), + new PropertyId( 'P10' ) + ], + ], + [ new Item(), null, [], [], [] ] + ]; + } + + /** + * EntityDocument $entity + * string|null $titleText + * string[] $externalLinks + * string[] $images + * EntityId[] $referencedEntities + * + * @dataProvider provideTestGetParserOutput + */ + public function testGetParserOutput( + EntityDocument $entity, + $titleText, + array $externalLinks, + array $images, + array $referencedEntities + ) { $entityParserOutputGenerator = $this->newEntityParserOutputGenerator(); - $item = $this->newItem(); - - $parserOutput = $entityParserOutputGenerator->getParserOutput( $item ); + $parserOutput = $entityParserOutputGenerator->getParserOutput( $entity ); $this->assertSame( '<TITLE>', $parserOutput->getTitleText(), 'title text' ); $this->assertSame( '<HTML>', $parserOutput->getText(), 'html text' ); @@ -60,19 +92,19 @@ $this->assertSame( array( '<JS>' ), $parserOutput->getJsConfigVars(), 'config vars' ); $this->assertEquals( - 'kitten item', + $titleText, $parserOutput->getExtensionData( 'wikibase-titletext' ), 'title text' ); $this->assertEquals( - array( 'http://an.url.com', 'https://another.url.org' ), + $externalLinks, array_keys( $parserOutput->getExternalLinks() ), 'external links' ); $this->assertEquals( - array( 'File:This_is_a_file.pdf', 'File:Selfie.jpg' ), + $images, array_keys( $parserOutput->getImages() ), 'images' ); @@ -85,31 +117,30 @@ // ); $this->assertArrayEquals( - array( - new ItemId( 'Q42' ), - new ItemId( 'Q35' ), - new PropertyId( 'P42' ), - new PropertyId( 'P10' ) - ), + $referencedEntities, $parserOutput->getExtensionData( 'referenced-entities' ) ); - $jsonHref = SpecialPage::getTitleFor( 'EntityData', $item->getId()->getSerialization() . '.json' )->getCanonicalURL(); - $ntHref = SpecialPage::getTitleFor( 'EntityData', $item->getId()->getSerialization() . '.nt' )->getCanonicalURL(); - - $this->assertEquals( - array( - array( + $alternateLinks = null; + if ( $entity->getId() ) { + $jsonHref = SpecialPage::getTitleFor( 'EntityData', $entity->getId()->getSerialization() . '.json' )->getCanonicalURL(); + $ntHref = SpecialPage::getTitleFor( 'EntityData', $entity->getId()->getSerialization() . '.nt' )->getCanonicalURL(); + $alternateLinks = [ + [ 'rel' => 'alternate', 'href' => $jsonHref, 'type' => 'application/json' - ), - array( + ], + [ 'rel' => 'alternate', 'href' => $ntHref, 'type' => 'application/n-triples' - ) - ), + ] + ]; + } + + $this->assertEquals( + $alternateLinks, $parserOutput->getExtensionData( 'wikibase-alternate-links' ), 'alternate links (extension data)' ); diff --git a/extensions/Wikibase/view/src/SimpleEntityTermsView.php b/extensions/Wikibase/view/src/SimpleEntityTermsView.php index eed0969..d80d42e 100644 --- a/extensions/Wikibase/view/src/SimpleEntityTermsView.php +++ b/extensions/Wikibase/view/src/SimpleEntityTermsView.php @@ -31,7 +31,7 @@ private $htmlTermRenderer; /** - * @var LabelDescriptionLookup + * @var LabelDescriptionLookup For getting label/description of entity being rendered. */ private $labelDescriptionLookup; diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index cd28d83..ab00201 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -102,45 +102,6 @@ ] }, { - "name": "mediawiki/article-placeholder", - "version": "dev-master", - "version_normalized": "9999999-dev", - "source": { - "type": "git", - "url": "https://github.com/wikimedia/mediawiki-extensions-ArticlePlaceholder.git", - "reference": "1ebcaecb9d8f75ff34dba1b112eace2868379c15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-ArticlePlaceholder/zipball/1ebcaecb9d8f75ff34dba1b112eace2868379c15", - "reference": "1ebcaecb9d8f75ff34dba1b112eace2868379c15", - "shasum": "" - }, - "require-dev": { - "jakub-onderka/php-parallel-lint": "0.9.2", - "mediawiki/mediawiki-codesniffer": "0.7.1" - }, - "time": "2016-05-23 20:21:41", - "type": "mediawiki-extension", - "installation-source": "dist", - "autoload": { - "psr-4": { - "ArticlePlaceholder\\": "includes/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "Lucie-Aimée Kaffee" - } - ], - "description": "Provides a special page with Wikibase information about a certain topic, with invitation to create an article for the topic", - "homepage": "https://www.mediawiki.org/wiki/Extension:ArticlePlaceholder" - }, - { "name": "wikimedia/purtle", "version": "v1.0.3", "version_normalized": "1.0.3.0", @@ -1607,12 +1568,12 @@ "source": { "type": "git", "url": "https://github.com/wikimedia/mediawiki-extensions-Wikibase.git", - "reference": "05d1154718ecc187c46d958bd8912cdae76075b2" + "reference": "fc6e571ec0fef7acacd34e745909ca05ba7c60e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/05d1154718ecc187c46d958bd8912cdae76075b2", - "reference": "05d1154718ecc187c46d958bd8912cdae76075b2", + "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/fc6e571ec0fef7acacd34e745909ca05ba7c60e0", + "reference": "fc6e571ec0fef7acacd34e745909ca05ba7c60e0", "shasum": "" }, "require": { @@ -1645,7 +1606,7 @@ "jakub-onderka/php-parallel-lint": "0.9.2", "mediawiki/mediawiki-codesniffer": "0.4.0|0.5.0" }, - "time": "2016-05-31 19:12:11", + "time": "2016-06-06 19:55:50", "type": "mediawiki-extension", "installation-source": "dist", "autoload": { @@ -1686,5 +1647,50 @@ "wikibaserepo", "wikidata" ] + }, + { + "name": "mediawiki/article-placeholder", + "version": "dev-wmf/1.28.0-wmf.3", + "version_normalized": "dev-wmf/1.28.0-wmf.3", + "source": { + "type": "git", + "url": "https://gerrit.wikimedia.org/r/mediawiki/extensions/ArticlePlaceholder", + "reference": "ac0c104182a1fc98b54dea2006eefe858d322cc9" + }, + "require-dev": { + "jakub-onderka/php-parallel-lint": "0.9.2", + "mediawiki/mediawiki-codesniffer": "0.7.1" + }, + "time": "2016-05-24 15:15:06", + "type": "mediawiki-extension", + "installation-source": "source", + "autoload": { + "psr-4": { + "ArticlePlaceholder\\": "includes/" + } + }, + "scripts": { + "test": [ + "parallel-lint . --exclude vendor", + "phpcs -p -s" + ], + "fix": [ + "phpcbf" + ] + }, + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "Lucie-Aimée Kaffee" + } + ], + "description": "Provides a special page with Wikibase information about a certain topic, with invitation to create an article for the topic", + "homepage": "https://www.mediawiki.org/wiki/Extension:ArticlePlaceholder", + "support": { + "issues": "https://phabricator.wikimedia.org/", + "irc": "irc://irc.freenode.net/wikidata" + } } ] -- To view, visit https://gerrit.wikimedia.org/r/293048 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie702530bf618f3394b0cb01f6f73f53e3a54eec7 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikidata Gerrit-Branch: wmf/1.28.0-wmf.3 Gerrit-Owner: Aude <aude.w...@gmail.com> Gerrit-Reviewer: Addshore <addshorew...@gmail.com> Gerrit-Reviewer: Aude <aude.w...@gmail.com> Gerrit-Reviewer: Legoktm <legoktm.wikipe...@gmail.com> Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits