jenkins-bot has submitted this change and it was merged. Change subject: Update Wikidata, fix "edit links" bug in client ......................................................................
Update Wikidata, fix "edit links" bug in client Change-Id: I5571dc70b45e68b8194180621ff4dff7fc5c35d0 --- M composer.lock M extensions/Wikibase/client/includes/Hooks/BeforePageDisplayHandler.php M extensions/Wikibase/client/includes/RepoItemLinkGenerator.php M extensions/Wikibase/client/tests/phpunit/includes/Hooks/BeforePageDisplayHandlerTest.php M extensions/Wikibase/client/tests/phpunit/includes/RepoItemLinkGeneratorTest.php M vendor/composer/installed.json 6 files changed, 56 insertions(+), 16 deletions(-) Approvals: Aude: Looks good to me, approved jenkins-bot: Verified diff --git a/composer.lock b/composer.lock index 45219a8..a93d2ac 100644 --- a/composer.lock +++ b/composer.lock @@ -1237,7 +1237,7 @@ "source": { "type": "git", "url": "https://git.wikimedia.org/git/mediawiki/extensions/Wikibase.git", - "reference": "5b20f5bc1749a0e9446783cb87de283638053e98" + "reference": "b65cd76bdc8db052ca6bbbfb27516019f0f9d63d" }, "require": { "data-values/common": "~0.2.0", @@ -1306,7 +1306,7 @@ "issues": "https://bugzilla.wikimedia.org/", "irc": "irc://irc.freenode.net/wikidata" }, - "time": "2015-03-30 18:42:58" + "time": "2015-04-06 10:24:55" }, { "name": "wikibase/wikimedia-badges", diff --git a/extensions/Wikibase/client/includes/Hooks/BeforePageDisplayHandler.php b/extensions/Wikibase/client/includes/Hooks/BeforePageDisplayHandler.php index b3e0d44..68b2336 100644 --- a/extensions/Wikibase/client/includes/Hooks/BeforePageDisplayHandler.php +++ b/extensions/Wikibase/client/includes/Hooks/BeforePageDisplayHandler.php @@ -67,8 +67,8 @@ private function hasEditOrAddLinks( OutputPage $out, Title $title, $actionName ) { if ( - $out->getProperty( 'noexternallanglinks' ) || !in_array( $actionName, array( 'view', 'submit' ) ) || + $this->allLinksAreSuppressed( $out ) || !$title->exists() ) { return false; @@ -77,6 +77,16 @@ return true; } + private function allLinksAreSuppressed( OutputPage $out ) { + $noexternallanglinks = $out->getProperty( 'noexternallanglinks' ); + + if ( $noexternallanglinks !== null ) { + return in_array( '*', $noexternallanglinks ); + } + + return false; + } + private function hasLinkItemWidget( User $user, OutputPage $out, Title $title, $actionName ) { if ( $out->getLanguageLinks() !== array() || !$user->isLoggedIn() diff --git a/extensions/Wikibase/client/includes/RepoItemLinkGenerator.php b/extensions/Wikibase/client/includes/RepoItemLinkGenerator.php index 34a6fc0..43aaed5 100644 --- a/extensions/Wikibase/client/includes/RepoItemLinkGenerator.php +++ b/extensions/Wikibase/client/includes/RepoItemLinkGenerator.php @@ -77,16 +77,17 @@ * @return string|null HTML or null for no link */ public function getLink( Title $title, $action, $hasLangLinks, $noExternalLangLinks, $prefixedId ) { - $entityId = null; - if ( is_string( $prefixedId ) ) { - $entityId = $this->entityIdParser->parse( $prefixedId ); - } - - if ( $entityId && $hasLangLinks ) { - return $this->getEditLinksLink( $entityId ); - } - if ( $this->canHaveLink( $title, $action, $noExternalLangLinks ) ) { + $entityId = null; + + if ( is_string( $prefixedId ) ) { + $entityId = $this->entityIdParser->parse( $prefixedId ); + } + + if ( $entityId && $hasLangLinks ) { + return $this->getEditLinksLink( $entityId ); + } + return $this->getAddLinksLink( $title, $entityId ); } diff --git a/extensions/Wikibase/client/tests/phpunit/includes/Hooks/BeforePageDisplayHandlerTest.php b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/BeforePageDisplayHandlerTest.php index 6d91360..9932a60 100644 --- a/extensions/Wikibase/client/tests/phpunit/includes/Hooks/BeforePageDisplayHandlerTest.php +++ b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/BeforePageDisplayHandlerTest.php @@ -89,6 +89,20 @@ ); } + public function testHandlePageConnectedToWikibase_noexternallinklinks() { + $skin = $this->getSkin( true, true ); // user logged in + + // page connected, has links and noexternallanglinks + $output = $this->getOutputPage( $skin, array( 'de:Rom' ), 'Q4', array( '*' ) ); + $namespaceChecker = $this->getNamespaceChecker( true ); + + $handler = new BeforePageDisplayHandler( $namespaceChecker ); + $handler->addModules( $output, 'view' ); + + $this->assertEquals( array(), $output->getModules(), 'js modules' ); + $this->assertEquals( array(), $output->getModuleStyles(), 'css modules' ); + } + /** * @dataProvider pageNotConnectedToWikibaseProvider */ @@ -261,7 +275,9 @@ return $namespaceChecker; } - private function getOutputPage( Skin $skin, $langLinks, $prefixedId = null ) { + private function getOutputPage( Skin $skin, $langLinks, $prefixedId = null, + $noexternallanglinks = null + ) { $output = $skin->getOutput(); $output->setLanguageLinks( $langLinks ); @@ -269,6 +285,10 @@ $output->setProperty( 'wikibase_item', $prefixedId ); } + if ( $noexternallanglinks ) { + $output->setProperty( 'noexternallanglinks', $noexternallanglinks ); + } + return $output; } diff --git a/extensions/Wikibase/client/tests/phpunit/includes/RepoItemLinkGeneratorTest.php b/extensions/Wikibase/client/tests/phpunit/includes/RepoItemLinkGeneratorTest.php index cdb6da0..1d5c3fd 100644 --- a/extensions/Wikibase/client/tests/phpunit/includes/RepoItemLinkGeneratorTest.php +++ b/extensions/Wikibase/client/tests/phpunit/includes/RepoItemLinkGeneratorTest.php @@ -112,6 +112,15 @@ 'hasLangLinks' => true ); + $data['edit link when had links and suppressing one link'] = array( + 'expected' => $editLinksLinkRegex, + 'title' => $title, + 'action' => 'view', + 'noExternalLangLinks' => array( 'fr' ), + 'prefixedId' => $prefixedId, + 'hasLangLinks' => true + ); + $data['title does not exist'] = array( 'expected' => null, 'title' => $nonExistingTitle, @@ -153,7 +162,7 @@ ); if ( $expected === null ) { - $this->assertNull( $expected ); + $this->assertNull( $link ); } else { $this->assertRegexp( $expected, $link ); } diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index eb7bad6..edd81ad 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1329,7 +1329,7 @@ "source": { "type": "git", "url": "https://git.wikimedia.org/git/mediawiki/extensions/Wikibase.git", - "reference": "5b20f5bc1749a0e9446783cb87de283638053e98" + "reference": "b65cd76bdc8db052ca6bbbfb27516019f0f9d63d" }, "require": { "data-values/common": "~0.2.0", @@ -1356,7 +1356,7 @@ "conflict": { "mediawiki/mediawiki": "<1.23" }, - "time": "2015-03-30 18:04:27", + "time": "2015-04-02 20:04:13", "type": "mediawiki-extension", "installation-source": "source", "autoload": { -- To view, visit https://gerrit.wikimedia.org/r/202022 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5571dc70b45e68b8194180621ff4dff7fc5c35d0 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikidata Gerrit-Branch: wmf/1.25wmf22 Gerrit-Owner: Aude <aude.w...@gmail.com> Gerrit-Reviewer: Addshore <addshorew...@gmail.com> Gerrit-Reviewer: Aude <aude.w...@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