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

Reply via email to