WikidataBuilder has uploaded a new change for review.

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

Change subject: New Wikidata Build - 2016-06-30T10:00:01+0000
......................................................................

New Wikidata Build - 2016-06-30T10:00:01+0000

Change-Id: I3c7bdda07e6a79a78d1e9118fedae94a64500583
---
M composer.lock
M 
extensions/Wikibase/client/tests/phpunit/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseLibraryTest.php
M 
extensions/Wikibase/client/tests/phpunit/includes/UpdateRepo/UpdateRepoOnMoveTest.php
M 
extensions/Wikibase/client/tests/phpunit/includes/Usage/Sql/EntityUsageTableTest.php
M extensions/Wikibase/lib/includes/Interactors/TermIndexSearchInteractor.php
M extensions/Wikibase/lib/includes/Interactors/TermSearchOptions.php
M extensions/Wikibase/repo/includes/Actions/ViewEntityAction.php
M extensions/Wikibase/repo/includes/Api/CreateClaim.php
M extensions/Wikibase/repo/includes/Content/EntityContent.php
M extensions/Wikibase/repo/includes/Hooks/LinkBeginHookHandler.php
M 
extensions/Wikibase/repo/includes/ParserOutput/FallbackHintHtmlTermRenderer.php
M 
extensions/Wikibase/repo/includes/ParserOutput/PlaceholderEmittingEntityTermsView.php
M extensions/Wikibase/repo/includes/Store/Sql/EntityPerPageTable.php
M 
extensions/Wikibase/repo/tests/phpunit/includes/Hooks/LinkBeginHookHandlerTest.php
M 
extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.sitelinkgrouplistview.js
M 
extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.sitelinklistview.js
M extensions/Wikibase/view/resources/jquery/wikibase/resources.php
M 
extensions/Wikibase/view/resources/jquery/wikibase/toolbar/controller/definitions/addtoolbar/statementlistview-statementview.js
M extensions/Wikibase/view/resources/wikibase/view/ViewFactory.js
M extensions/Wikibase/view/resources/wikibase/view/resources.php
M extensions/Wikibase/view/resources/wikibase/wikibase.css
M extensions/Wikibase/view/tests/phpunit/SimpleEntityTermsViewTest.php
M 
extensions/Wikibase/view/tests/qunit/jquery/wikibase/jquery.wikibase.sitelinkgrouplistview.tests.js
M extensions/Wikibase/view/tests/qunit/jquery/wikibase/resources.php
M extensions/Wikibase/view/tests/qunit/wikibase/view/ViewFactory.tests.js
M vendor/composer/installed.json
26 files changed, 179 insertions(+), 176 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata 
refs/changes/04/296704/1

diff --git a/composer.lock b/composer.lock
index 064d74d..fe9b88d 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1570,12 +1570,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-                "reference": "b4b1c73b88b13dee84f57b2275a096c795485af2"
+                "reference": "4ba75372bdb4cafd8e0c1f1338292a973e73e094"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/b4b1c73b88b13dee84f57b2275a096c795485af2";,
-                "reference": "b4b1c73b88b13dee84f57b2275a096c795485af2",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/4ba75372bdb4cafd8e0c1f1338292a973e73e094";,
+                "reference": "4ba75372bdb4cafd8e0c1f1338292a973e73e094",
                 "shasum": ""
             },
             "require": {
@@ -1648,7 +1648,7 @@
                 "wikibaserepo",
                 "wikidata"
             ],
-            "time": "2016-06-29 08:22:07"
+            "time": "2016-06-30 09:06:33"
         },
         {
             "name": "wikibase/wikimedia-badges",
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseLibraryTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseLibraryTest.php
index 7d114ad..c87c190 100644
--- 
a/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseLibraryTest.php
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseLibraryTest.php
@@ -12,8 +12,6 @@
 use Wikibase\Client\DataAccess\Scribunto\Scribunto_LuaWikibaseLibrary;
 use Wikibase\Client\RepoLinker;
 use Wikibase\Client\WikibaseClient;
-use Wikibase\DataModel\Entity\EntityIdParser;
-use Wikibase\DataModel\Entity\EntityIdParsingException;
 use Wikibase\Lib\Store\PropertyOrderProvider;
 
 /**
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/UpdateRepo/UpdateRepoOnMoveTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/UpdateRepo/UpdateRepoOnMoveTest.php
index f9daea3..dabbe3c 100644
--- 
a/extensions/Wikibase/client/tests/phpunit/includes/UpdateRepo/UpdateRepoOnMoveTest.php
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/UpdateRepo/UpdateRepoOnMoveTest.php
@@ -135,7 +135,7 @@
        public function testInjectJob() {
                $updateRepo = $this->getNewUpdateRepoOnMove();
 
-               $jobQueueGroupMock = $this->getJobQueueGroupMock( true );
+               $jobQueueGroupMock = $this->getJobQueueGroupMock();
 
                $updateRepo->injectJob( $jobQueueGroupMock );
        }
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/Usage/Sql/EntityUsageTableTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/Usage/Sql/EntityUsageTableTest.php
index 473292b..cfc8450 100644
--- 
a/extensions/Wikibase/client/tests/phpunit/includes/Usage/Sql/EntityUsageTableTest.php
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/Usage/Sql/EntityUsageTableTest.php
@@ -300,7 +300,7 @@
                $usages = array( $u3i, $u3l, $u4l );
 
                $usageTable = $this->getEntityUsageTable( 3 );
-               $usageTable->addUsages( 23, $usages, '20150102030405' );
+               $usageTable->addUsages( 23, $usages );
 
                $this->assertEmpty( $usageTable->getUnusedEntities( array( $q4 
) ), 'Q4 should not be unused' );
 
diff --git 
a/extensions/Wikibase/lib/includes/Interactors/TermIndexSearchInteractor.php 
b/extensions/Wikibase/lib/includes/Interactors/TermIndexSearchInteractor.php
index 962152b..def4819 100644
--- a/extensions/Wikibase/lib/includes/Interactors/TermIndexSearchInteractor.php
+++ b/extensions/Wikibase/lib/includes/Interactors/TermIndexSearchInteractor.php
@@ -199,7 +199,7 @@
        }
 
        /**
-        * @param TermIndexEntry[]
+        * @param TermIndexEntry[] $matchedTermIndexEntries
         *
         * @return string[]
         */
@@ -219,6 +219,8 @@
         * @param string[] $termTypes
         * @param string $entityType
         * @param string[] $matchedEntityIdSerializations
+        *
+        * @return TermIndexEntry[]
         */
        private function getFallbackMatchedTermIndexEntries(
                $text,
diff --git a/extensions/Wikibase/lib/includes/Interactors/TermSearchOptions.php 
b/extensions/Wikibase/lib/includes/Interactors/TermSearchOptions.php
index 7b2355a..1690db8 100644
--- a/extensions/Wikibase/lib/includes/Interactors/TermSearchOptions.php
+++ b/extensions/Wikibase/lib/includes/Interactors/TermSearchOptions.php
@@ -2,7 +2,6 @@
 
 namespace Wikibase\Lib\Interactors;
 
-use Wikibase\DataModel\Term\Term;
 use Wikimedia\Assert\Assert;
 
 /**
diff --git a/extensions/Wikibase/repo/includes/Actions/ViewEntityAction.php 
b/extensions/Wikibase/repo/includes/Actions/ViewEntityAction.php
index 084aaf2..43a8031 100644
--- a/extensions/Wikibase/repo/includes/Actions/ViewEntityAction.php
+++ b/extensions/Wikibase/repo/includes/Actions/ViewEntityAction.php
@@ -7,7 +7,6 @@
 use OutputPage;
 use ViewAction;
 use Wikibase\Repo\WikibaseRepo;
-use Xml;
 
 /**
  * Handles the view action for Wikibase entities.
diff --git a/extensions/Wikibase/repo/includes/Api/CreateClaim.php 
b/extensions/Wikibase/repo/includes/Api/CreateClaim.php
index 64f4628..6ddc532 100644
--- a/extensions/Wikibase/repo/includes/Api/CreateClaim.php
+++ b/extensions/Wikibase/repo/includes/Api/CreateClaim.php
@@ -127,7 +127,7 @@
         * Checks if the required parameters are set and the ones that make no 
sense given the
         * snaktype value are not set.
         *
-        * @params array $params
+        * @param array $params
         */
        private function validateParameters( array $params ) {
                if ( $params['snaktype'] === 'value' xor isset( 
$params['value'] ) ) {
diff --git a/extensions/Wikibase/repo/includes/Content/EntityContent.php 
b/extensions/Wikibase/repo/includes/Content/EntityContent.php
index 3a80bc7..d9c2571 100644
--- a/extensions/Wikibase/repo/includes/Content/EntityContent.php
+++ b/extensions/Wikibase/repo/includes/Content/EntityContent.php
@@ -26,7 +26,6 @@
 use Wikibase\DataModel\Entity\EntityDocument;
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Entity\EntityRedirect;
-use Wikibase\DataModel\Services\Diff\EntityPatcher;
 use Wikibase\DataModel\Term\FingerprintProvider;
 use Wikibase\Repo\Content\EntityContentDiff;
 use Wikibase\Repo\Content\EntityHandler;
diff --git a/extensions/Wikibase/repo/includes/Hooks/LinkBeginHookHandler.php 
b/extensions/Wikibase/repo/includes/Hooks/LinkBeginHookHandler.php
index e41424c..2b500c5 100644
--- a/extensions/Wikibase/repo/includes/Hooks/LinkBeginHookHandler.php
+++ b/extensions/Wikibase/repo/includes/Hooks/LinkBeginHookHandler.php
@@ -321,16 +321,17 @@
                                . $this->pageLanguage->getDirMark()
                        : $title->getPrefixedText();
 
-               $descriptionText = $descriptionLang->getDirMark() . 
$descriptionText
-                       . $this->pageLanguage->getDirMark();
-
-               return ( $descriptionText !== '' ) ?
-                       wfMessage(
+               if ( $descriptionText !== '' ) {
+                       $descriptionText = $descriptionLang->getDirMark() . 
$descriptionText
+                               . $this->pageLanguage->getDirMark();
+                       return wfMessage(
                                'wikibase-itemlink-title',
                                $titleText,
                                $descriptionText
-                       )->inContentLanguage()->text() :
-                       $titleText; // no description, just display the title 
then
+                       )->inContentLanguage()->text();
+               } else {
+                       return $titleText; // no description, just display the 
title then
+               }
        }
 
 }
diff --git 
a/extensions/Wikibase/repo/includes/ParserOutput/FallbackHintHtmlTermRenderer.php
 
b/extensions/Wikibase/repo/includes/ParserOutput/FallbackHintHtmlTermRenderer.php
index 3f7447f..ce81bf0 100644
--- 
a/extensions/Wikibase/repo/includes/ParserOutput/FallbackHintHtmlTermRenderer.php
+++ 
b/extensions/Wikibase/repo/includes/ParserOutput/FallbackHintHtmlTermRenderer.php
@@ -28,6 +28,7 @@
        private $languageDirectionalityLookup;
 
        /**
+        * @param LanguageDirectionalityLookup $languageDirectionalityLookup
         * @param LanguageNameLookup $languageNameLookup
         */
        public function __construct(
diff --git 
a/extensions/Wikibase/repo/includes/ParserOutput/PlaceholderEmittingEntityTermsView.php
 
b/extensions/Wikibase/repo/includes/ParserOutput/PlaceholderEmittingEntityTermsView.php
index a472ca6..fe6aa7d 100644
--- 
a/extensions/Wikibase/repo/includes/ParserOutput/PlaceholderEmittingEntityTermsView.php
+++ 
b/extensions/Wikibase/repo/includes/ParserOutput/PlaceholderEmittingEntityTermsView.php
@@ -45,7 +45,7 @@
         * @param TemplateFactory $templateFactory
         * @param EditSectionGenerator $sectionEditLinkGenerator
         * @param LocalizedTextProvider $textProvider
-        * @param TermListView $termListView
+        * @param TermsListView $termsListView
         * @param TextInjector $textInjector
         */
        public function __construct(
diff --git a/extensions/Wikibase/repo/includes/Store/Sql/EntityPerPageTable.php 
b/extensions/Wikibase/repo/includes/Store/Sql/EntityPerPageTable.php
index 013991c..6da84c0 100644
--- a/extensions/Wikibase/repo/includes/Store/Sql/EntityPerPageTable.php
+++ b/extensions/Wikibase/repo/includes/Store/Sql/EntityPerPageTable.php
@@ -36,6 +36,7 @@
 
        /**
         * @param EntityIdParser $entityIdParser
+        * @param EntityIdComposer $entityIdComposer
         */
        public function __construct( EntityIdParser $entityIdParser, 
EntityIdComposer $entityIdComposer ) {
                $this->entityIdParser = $entityIdParser;
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/Hooks/LinkBeginHookHandlerTest.php
 
b/extensions/Wikibase/repo/tests/phpunit/includes/Hooks/LinkBeginHookHandlerTest.php
index 0d5f8a8..aa55fa4 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/Hooks/LinkBeginHookHandlerTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/Hooks/LinkBeginHookHandlerTest.php
@@ -31,33 +31,49 @@
  * @author Katie Filbert < [email protected] >
  * @author Daniel Kinzler
  * @author Marius Hoch < [email protected] >
+ * @author Thiemo Mättig
  */
 class LinkBeginHookHandlerTest extends \MediaWikiTestCase {
 
        const ITEM_WITH_LABEL = 'Q1';
        const ITEM_WITHOUT_LABEL = 'Q11';
        const ITEM_DELETED = 'Q111';
+       const ITEM_LABEL_NO_DESCRIPTION = 'Q1111';
+
+       /**
+        * @param string $id
+        * @param bool $exists
+        *
+        * @return Title
+        */
+       private function newTitle( $id, $exists = true ) {
+               $title = Title::makeTitle( NS_MAIN, $id );
+               $title->resetArticleID( $exists ? 1 : 0 );
+               $this->assertSame( $exists, $title->exists(), 'Sanity check' );
+               return $title;
+       }
+
+       /**
+        * @param string $title
+        *
+        * @return RequestContext
+        */
+       private function newContext( $title = 'Special:Recentchanges' ) {
+               return RequestContext::newExtraneousContext( 
Title::newFromText( $title ) );
+       }
 
        public function validContextProvider() {
-               $historyContext = RequestContext::newExtraneousContext(
-                       Title::newFromText( 'Foo' )
-               );
+               $historyContext = $this->newContext( 'Foo' );
                $historyContext->getRequest()->setVal( 'action', 'history' );
 
-               $diffContext = RequestContext::newExtraneousContext(
-                       Title::newFromText( 'Foo' )
-               );
+               $diffContext = $this->newContext( 'Foo' );
                $diffContext->getRequest()->setVal( 'diff', 123 );
 
-               return array(
-                       "Special page" => array(
-                               RequestContext::newExtraneousContext(
-                                       Title::newFromText( 
'Special:Recentchanges' )
-                               )
-                       ),
-                       "Action history" => array( $historyContext ),
-                       "Diff" => array( $diffContext )
-               );
+               return [
+                       'Special page' => [ $this->newContext() ],
+                       'Action history' => [ $historyContext ],
+                       'Diff' => [ $diffContext ],
+               ];
        }
 
        /**
@@ -66,10 +82,7 @@
        public function testDoOnLinkBegin_validContext( RequestContext $context 
) {
                $linkBeginHookHandler = $this->getLinkBeginHookHandler();
 
-               $title = Title::makeTitle( NS_MAIN, self::ITEM_WITH_LABEL );
-               $title->resetArticleID( 1 );
-               $this->assertTrue( $title->exists() ); // sanity check
-
+               $title = $this->newTitle( self::ITEM_WITH_LABEL );
                $html = $title->getFullText();
                $customAttribs = array();
 
@@ -88,26 +101,18 @@
        }
 
        public function invalidContextProvider() {
-               $deleteContext = RequestContext::newExtraneousContext(
-                       Title::newFromText( 'Foo' )
-               );
+               $deleteContext = $this->newContext( 'Foo' );
                $deleteContext->getRequest()->setVal( 'action', 'delete' );
 
-               $diffNonViewContext = RequestContext::newExtraneousContext(
-                       Title::newFromText( 'Foo' )
-               );
+               $diffNonViewContext = $this->newContext( 'Foo' );
                $diffNonViewContext->getRequest()->setVal( 'action', 'protect' 
);
                $diffNonViewContext->getRequest()->setVal( 'diff', 123 );
 
-               return array(
-                       "Action delete" => array( $deleteContext ),
-                       "Non-special page" => array( 
RequestContext::newExtraneousContext(
-                               Title::newFromText( 'Foo' )
-                       ) ),
-                       "Edge case: diff parameter set, but action != view" => 
array(
-                               $diffNonViewContext
-                       )
-               );
+               return [
+                       'Action delete' => [ $deleteContext ],
+                       'Non-special page' => [ $this->newContext( 'Foo' ) ],
+                       'Edge case: diff parameter set, but action != view' => 
[ $diffNonViewContext ],
+               ];
        }
 
        /**
@@ -116,10 +121,7 @@
        public function testDoOnLinkBegin_invalidContext( RequestContext 
$context ) {
                $linkBeginHookHandler = $this->getLinkBeginHookHandler();
 
-               $title = Title::makeTitle( NS_MAIN, self::ITEM_WITH_LABEL );
-               $title->resetArticleID( 1 );
-               $this->assertTrue( $title->exists() ); // sanity check
-
+               $title = $this->newTitle( self::ITEM_WITH_LABEL );
                $titleText = $title->getFullText();
                $html = $titleText;
                $customAttribs = array();
@@ -151,12 +153,11 @@
         * @param string $linkTitle
         */
        public function testDoOnLinkBegin_overrideSpecialNewEntityLink( 
$linkTitle ) {
-               $contextTitle = Title::newFromText( 'Special:Recentchanges' );
                $linkBeginHookHandler = $this->getLinkBeginHookHandler();
 
                $title = Title::makeTitle( NS_MAIN, $linkTitle );
                $html = $title->getFullText();
-               $context = RequestContext::newExtraneousContext( $contextTitle 
);
+               $context = $this->newContext();
                $attribs = array();
 
                $linkBeginHookHandler->doOnLinkBegin( $title, $html, $attribs, 
$context );
@@ -171,7 +172,6 @@
        }
 
        public function testDoOnLinkBegin_nonEntityTitleLink() {
-               $contextTitle = Title::newFromText( 'Special:Recentchanges' );
                $linkBeginHookHandler = $this->getLinkBeginHookHandler();
 
                $title = Title::newMainPage();
@@ -182,7 +182,7 @@
                $html = $titleText;
                $customAttribs = array();
 
-               $context = RequestContext::newExtraneousContext( $contextTitle 
);
+               $context = $this->newContext();
                $linkBeginHookHandler->doOnLinkBegin( $title, $html, 
$customAttribs, $context );
 
                $this->assertEquals( $titleText, $html );
@@ -190,18 +190,14 @@
        }
 
        public function testDoOnLinkBegin_unknownEntityTitle() {
-               $contextTitle = Title::newFromText( 'Special:Recentchanges' );
                $linkBeginHookHandler = $this->getLinkBeginHookHandler();
 
-               $title = Title::makeTitle( NS_MAIN, self::ITEM_DELETED );
-               $title->resetArticleID( 0 );
-               $this->assertFalse( $title->exists() ); // sanity check
-
+               $title = $this->newTitle( self::ITEM_DELETED, false );
                $titleText = $title->getFullText();
                $html = $titleText;
                $customAttribs = array();
 
-               $context = RequestContext::newExtraneousContext( $contextTitle 
);
+               $context = $this->newContext();
                $linkBeginHookHandler->doOnLinkBegin( $title, $html, 
$customAttribs, $context );
 
                $this->assertEquals( $titleText, $html );
@@ -209,17 +205,13 @@
        }
 
        public function testDoOnLinkBegin_itemHasNoLabel() {
-               $contextTitle = Title::newFromText( 'Special:Recentchanges' );
                $linkBeginHookHandler = $this->getLinkBeginHookHandler();
 
-               $title = Title::makeTitle( NS_MAIN, self::ITEM_WITHOUT_LABEL );
-               $title->resetArticleID( 1 );
-               $this->assertTrue( $title->exists() ); // sanity check
-
+               $title = $this->newTitle( self::ITEM_WITHOUT_LABEL );
                $html = $title->getFullText();
                $customAttribs = array();
 
-               $context = RequestContext::newExtraneousContext( $contextTitle 
);
+               $context = $this->newContext();
                $linkBeginHookHandler->doOnLinkBegin( $title, $html, 
$customAttribs, $context );
 
                $expected = '<span class="wb-itemlink">'
@@ -228,6 +220,28 @@
 
                $this->assertEquals( $expected, $html );
                $this->assertContains( self::ITEM_WITHOUT_LABEL, 
$customAttribs['title'] );
+       }
+
+       public function testDoOnLinkBegin_itemHasNoDescription() {
+               $linkBeginHookHandler = $this->getLinkBeginHookHandler();
+
+               $title = $this->newTitle( self::ITEM_LABEL_NO_DESCRIPTION );
+               $html = $title->getFullText();
+               $customAttribs = array();
+
+               $context = $this->newContext();
+               $linkBeginHookHandler->doOnLinkBegin( $title, $html, 
$customAttribs, $context );
+
+               $expected = '<span class="wb-itemlink">'
+                       . '<span class="wb-itemlink-label" lang="en" 
dir="ltr">linkbegin-label</span> '
+                       . '<span class="wb-itemlink-id">(' . 
self::ITEM_LABEL_NO_DESCRIPTION . ')</span></span>';
+
+               $lang = Language::factory( 'en' );
+               $this->assertEquals( $expected, $html );
+               $this->assertEquals(
+                       $lang->getDirMark() . 'linkbegin-label' . 
$lang->getDirMark(),
+                       $customAttribs['title']
+               );
        }
 
        /**
@@ -258,29 +272,29 @@
                $termLookup->expects( $this->any() )
                        ->method( 'getLabels' )
                        ->will( $this->returnCallback( function ( EntityId $id 
) {
-                               if ( $id->getSerialization() == 
self::ITEM_WITH_LABEL ) {
-                                       return array( 'en' => 'linkbegin-label' 
);
+                               switch ( $id->getSerialization() ) {
+                                       case self::ITEM_WITH_LABEL:
+                                       case self::ITEM_LABEL_NO_DESCRIPTION:
+                                               return [ 'en' => 
'linkbegin-label' ];
+                                       case self::ITEM_WITHOUT_LABEL:
+                                               return [];
+                                       default:
+                                               throw new StorageException( 
"Unexpected entity id $id" );
                                }
-
-                               if ( $id->getSerialization() == 
self::ITEM_WITHOUT_LABEL ) {
-                                       return array();
-                               }
-
-                               throw new StorageException( 'No such entity: ' 
. $id->getSerialization() );
                        } ) );
 
                $termLookup->expects( $this->any() )
                        ->method( 'getDescriptions' )
                        ->will( $this->returnCallback( function ( EntityId $id 
) {
-                               if ( $id->getSerialization() == 
self::ITEM_WITH_LABEL ) {
-                                       return array( 'en' => 
'linkbegin-description' );
+                               switch ( $id->getSerialization() ) {
+                                       case self::ITEM_WITH_LABEL:
+                                               return [ 'en' => 
'linkbegin-description' ];
+                                       case self::ITEM_WITHOUT_LABEL:
+                                       case self::ITEM_LABEL_NO_DESCRIPTION:
+                                               return [];
+                                       default:
+                                               throw new StorageException( 
"Unexpected entity id $id" );
                                }
-
-                               if ( $id->getSerialization() == 
self::ITEM_WITHOUT_LABEL ) {
-                                       return array();
-                               }
-
-                               throw new StorageException( 'No such entity: ' 
. $id->getSerialization() );
                        } ) );
 
                return $termLookup;
@@ -309,7 +323,6 @@
                        $languageFallback,
                        Language::factory( 'en' )
                );
-
        }
 
 }
diff --git 
a/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.sitelinkgrouplistview.js
 
b/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.sitelinkgrouplistview.js
index b46f582..b81b512 100644
--- 
a/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.sitelinkgrouplistview.js
+++ 
b/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.sitelinkgrouplistview.js
@@ -95,11 +95,8 @@
  * @since 0.5
  * @extends jQuery.ui.TemplatedWidget
  *
+ * @option {jQuery.wikibase.listview.ListItemAdapter} listItemAdapter
  * @option {wikibase.datamodel.SiteLinkSet} value
- *
- * @option {wikibase.entityChangers.SiteLinksChanger} siteLinksChanger
- *
- * @option {wikibase.entityIdFormatter.EntityIdPlainFormatter} 
entityIdPlainFormatter
  */
 $.widget( 'wikibase.sitelinkgrouplistview', PARENT, {
        options: {
@@ -108,9 +105,7 @@
                        '' // sitelinklistview(s)
                ],
                templateShortCuts: {},
-               value: null,
-               siteLinksChanger: null,
-               entityIdPlainFormatter: null
+               value: null
        },
 
        /**
@@ -119,25 +114,16 @@
        $listview: null,
 
        /**
-        * @type {jQuery.util.EventSingletonManager}
-        */
-       _eventSingletonManager: null,
-
-       /**
         * @see jQuery.ui.TemplatedWidget._create
         */
        _create: function() {
-               if ( !this.options.value || !this.options.siteLinksChanger || 
!this.options.entityIdPlainFormatter ) {
+               if ( !this.options.listItemAdapter || !this.options.value ) {
                        throw new Error( 'Required option(s) missing' );
                }
 
                PARENT.prototype._create.call( this );
 
-               this._eventSingletonManager = new 
$.util.EventSingletonManager();
-
                this._createListview();
-
-               this.element.addClass( 'wikibase-sitelinkgrouplistview' );
        },
 
        /**
@@ -152,14 +138,10 @@
                        this.$listview.remove();
                        delete this.$listview;
                }
-               this.element.removeClass( 'wikibase-sitelinkgrouplistview' );
                PARENT.prototype.destroy.call( this );
        },
 
        _createListview: function() {
-               var self = this,
-                       prefix = 
$.wikibase.sitelinkgroupview.prototype.widgetEventPrefix;
-
                var value = this.element.is( ':empty' )
                                ? orderSiteLinksByGroup( this.options.value )
                                : scrapeSiteLinks( this.element, 
this.options.value );
@@ -172,21 +154,11 @@
 
                this.$listview
                .listview( {
-                       listItemAdapter: new 
$.wikibase.listview.ListItemAdapter( {
-                               listItemWidget: $.wikibase.sitelinkgroupview,
-                               newItemOptionsFn: function( value ) {
-                                       return {
-                                               value: value,
-                                               siteLinksChanger: 
self.options.siteLinksChanger,
-                                               entityIdPlainFormatter: 
self.options.entityIdPlainFormatter,
-                                               eventSingletonManager: 
this._eventSingletonManager
-                                       };
-                               }
-                       } ),
+                       listItemAdapter: this.options.listItemAdapter,
                        value: value,
                        encapsulate: true
                } )
-               .on( prefix + 'disable.' + this.widgetName, function( event ) {
+               .on( this.options.listItemAdapter.prefixedEvent( 'disable.' + 
this.widgetName ), function( event ) {
                        event.stopPropagation();
                } );
        },
diff --git 
a/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.sitelinklistview.js
 
b/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.sitelinklistview.js
index 670485c..f357d06 100644
--- 
a/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.sitelinklistview.js
+++ 
b/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.sitelinklistview.js
@@ -741,36 +741,6 @@
                } );
        },
 
-       /**
-        * Removes a sitelinkview instance.
-        *
-        * @param {jQuery.wikibase.sitelinkview} sitelinkview
-        * @return {jQuery.Promise}
-        *         Resolved parameters:
-        *         - {Object}
-        *         Rejected parameters:
-        *         - {wikibase.api.RepoApiError}
-        */
-       remove: function( sitelinkview ) {
-               var self = this,
-                       siteLink = sitelinkview.value(),
-                       emptySiteLink = new wb.datamodel.SiteLink( 
siteLink.getSiteId(), '' );
-
-               this.disable();
-
-               return this._saveSiteLink( emptySiteLink )
-               .done( function() {
-                       self.$listview.data( 'listview' ).removeItem( 
sitelinkview.element );
-                       self._afterRemove();
-               } )
-               .fail( function( error ) {
-                       sitelinkview.setError( error );
-               } )
-               .always( function() {
-                       self.enable();
-               } );
-       },
-
        _afterRemove: function() {
                this._refreshCounter();
        },
diff --git a/extensions/Wikibase/view/resources/jquery/wikibase/resources.php 
b/extensions/Wikibase/view/resources/jquery/wikibase/resources.php
index 965b704..a900309 100644
--- a/extensions/Wikibase/view/resources/jquery/wikibase/resources.php
+++ b/extensions/Wikibase/view/resources/jquery/wikibase/resources.php
@@ -299,9 +299,7 @@
                        ),
                        'dependencies' => array(
                                'jquery.ui.TemplatedWidget',
-                               'jquery.util.EventSingletonManager',
                                'jquery.wikibase.listview',
-                               'jquery.wikibase.sitelinkgroupview',
                                'wikibase.sites',
                        ),
                ),
diff --git 
a/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/controller/definitions/addtoolbar/statementlistview-statementview.js
 
b/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/controller/definitions/addtoolbar/statementlistview-statementview.js
index 36eb5da..dae44da 100644
--- 
a/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/controller/definitions/addtoolbar/statementlistview-statementview.js
+++ 
b/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/controller/definitions/addtoolbar/statementlistview-statementview.js
@@ -18,10 +18,6 @@
                                $container = $statementlistview.children( 
'.wikibase-toolbar-wrapper' )
                                        .children( 
'.wikibase-toolbar-container' );
 
-                       if ( statementlistview.isEmpty() ) {
-                               return;
-                       }
-
                        if ( !$container.length ) {
                                // TODO: Remove layout-specific toolbar wrapper
                                $container = $( '<div/>' ).appendTo(
diff --git a/extensions/Wikibase/view/resources/wikibase/view/ViewFactory.js 
b/extensions/Wikibase/view/resources/wikibase/view/ViewFactory.js
index 2747646..c31cb36 100644
--- a/extensions/Wikibase/view/resources/wikibase/view/ViewFactory.js
+++ b/extensions/Wikibase/view/resources/wikibase/view/ViewFactory.js
@@ -191,11 +191,39 @@
         * @return {jQuery.wikibase.sitelinkgrouplistview} The constructed 
sitelinkgrouplistview
         **/
        SELF.prototype.getSitelinkGroupListView = function( sitelinkSet, 
$sitelinkgrouplistview ) {
+               var self = this;
+               var eventSingletonManager = new $.util.EventSingletonManager();
+
                return this._getView(
                        'sitelinkgrouplistview',
                        $sitelinkgrouplistview,
                        {
                                value: sitelinkSet,
+                               listItemAdapter: new 
$.wikibase.listview.ListItemAdapter( {
+                                       listItemWidget: 
$.wikibase.sitelinkgroupview,
+                                       getNewItem: function( value, dom ) {
+                                               return 
self.getSitelinkGroupView( eventSingletonManager, value, $( dom ) );
+                                       }
+                               } )
+                       }
+               );
+       };
+
+       /**
+        * Construct a suitable view for the given sitelink group on the given 
DOM element
+        *
+        * @param {jQuery.util.EventSingletonManager} eventSingletonManager
+        * @param {Object} group: string, siteLinks: [SiteLink]
+        * @param {jQuery} $sitelinkgroupview
+        * @return {jQuery.wikibase.sitelinkgroupview} The constructed 
sitelinkgroupview
+        **/
+       SELF.prototype.getSitelinkGroupView = function( eventSingletonManager, 
value, $sitelinkgroupview ) {
+               return this._getView(
+                       'sitelinkgroupview',
+                       $sitelinkgroupview,
+                       {
+                               value: value,
+                               eventSingletonManager: eventSingletonManager,
                                siteLinksChanger: 
this._entityChangersFactory.getSiteLinksChanger(),
                                entityIdPlainFormatter: 
this._entityIdPlainFormatter
                        }
diff --git a/extensions/Wikibase/view/resources/wikibase/view/resources.php 
b/extensions/Wikibase/view/resources/wikibase/view/resources.php
index f6d13fb..0bea6a2 100644
--- a/extensions/Wikibase/view/resources/wikibase/view/resources.php
+++ b/extensions/Wikibase/view/resources/wikibase/view/resources.php
@@ -50,10 +50,12 @@
                                'ViewFactory.js'
                        ),
                        'dependencies' => array(
+                               'jquery.util.EventSingletonManager',
                                'jquery.wikibase.entitytermsview',
                                'jquery.wikibase.itemview',
                                'jquery.wikibase.listview', // For 
ListItemAdapter
                                'jquery.wikibase.propertyview',
+                               'jquery.wikibase.sitelinkgroupview',
                                'jquery.wikibase.statementgrouplistview',
                                'jquery.wikibase.statementgroupview',
                                'jquery.wikibase.statementlistview',
diff --git a/extensions/Wikibase/view/resources/wikibase/wikibase.css 
b/extensions/Wikibase/view/resources/wikibase/wikibase.css
index e3f3258..1f63664 100644
--- a/extensions/Wikibase/view/resources/wikibase/wikibase.css
+++ b/extensions/Wikibase/view/resources/wikibase/wikibase.css
@@ -280,7 +280,7 @@
 
 /***** EDIT/NEW CLAIM *****/
 
-.wikibase-statementgrouplistview .wb-new > .wb-addtoolbar {
+.wikibase-statementgrouplistview .wb-new > .wikibase-statementlistview > 
.wikibase-toolbar-wrapper .wikibase-addtoolbar-container {
        display: none;
 }
 
diff --git 
a/extensions/Wikibase/view/tests/phpunit/SimpleEntityTermsViewTest.php 
b/extensions/Wikibase/view/tests/phpunit/SimpleEntityTermsViewTest.php
index 6f478f7..046bc35 100644
--- a/extensions/Wikibase/view/tests/phpunit/SimpleEntityTermsViewTest.php
+++ b/extensions/Wikibase/view/tests/phpunit/SimpleEntityTermsViewTest.php
@@ -109,7 +109,7 @@
         */
        public function testGetHtml_isEditable( Fingerprint $fingerprint, 
ItemId $entityId, $languageCode ) {
                $entityTermsView = $this->getEntityTermsView( 1 );
-               $html = $entityTermsView->getHtml( $languageCode, $fingerprint, 
$fingerprint, $fingerprint, $entityId, '' );
+               $html = $entityTermsView->getHtml( $languageCode, $fingerprint, 
$fingerprint, $fingerprint, $entityId );
 
                $this->assertContains( '<EDITSECTION>', $html );
        }
@@ -166,7 +166,7 @@
                $fingerprint->removeAliasGroup( 'en' );
 
                $view = $this->getEntityTermsView( 1 );
-               $html = $view->getHtml( 'en', $fingerprint, $fingerprint, 
$fingerprint, null, '' );
+               $html = $view->getHtml( 'en', $fingerprint, $fingerprint, 
$fingerprint );
 
                $this->assertContains( 'wb-empty', $html );
                $this->assertContains( '<div 
class="wikibase-entitytermsview-heading-aliases wb-empty"></div>', $html );
diff --git 
a/extensions/Wikibase/view/tests/qunit/jquery/wikibase/jquery.wikibase.sitelinkgrouplistview.tests.js
 
b/extensions/Wikibase/view/tests/qunit/jquery/wikibase/jquery.wikibase.sitelinkgrouplistview.tests.js
index 05c01ab..c7c9f9e 100644
--- 
a/extensions/Wikibase/view/tests/qunit/jquery/wikibase/jquery.wikibase.sitelinkgrouplistview.tests.js
+++ 
b/extensions/Wikibase/view/tests/qunit/jquery/wikibase/jquery.wikibase.sitelinkgrouplistview.tests.js
@@ -11,8 +11,11 @@
  */
 function createSitelinkgrouplistview( options ) {
        options = $.extend( {
-               siteLinksChanger: 'I am a SiteLinksChanger',
-               entityIdPlainFormatter: 'I am an EntityIdPlainFormatter'
+               listItemAdapter: wb.tests.getMockListItemAdapter(
+                       'sitelinkgroupview',
+                       function() {
+                       }
+               )
        }, options );
 
        return $( '<div/>' )
diff --git a/extensions/Wikibase/view/tests/qunit/jquery/wikibase/resources.php 
b/extensions/Wikibase/view/tests/qunit/jquery/wikibase/resources.php
index 92c3a34..c2f6669 100644
--- a/extensions/Wikibase/view/tests/qunit/jquery/wikibase/resources.php
+++ b/extensions/Wikibase/view/tests/qunit/jquery/wikibase/resources.php
@@ -219,6 +219,7 @@
                                'jquery.wikibase.sitelinkgrouplistview',
                                'wikibase.datamodel.SiteLink',
                                'wikibase.datamodel.SiteLinkSet',
+                               'wikibase.tests.getMockListItemAdapter',
                                'wikibase.tests.qunit.testrunner',
                        ),
                ),
diff --git 
a/extensions/Wikibase/view/tests/qunit/wikibase/view/ViewFactory.tests.js 
b/extensions/Wikibase/view/tests/qunit/wikibase/view/ViewFactory.tests.js
index 85c1558..0645163 100644
--- a/extensions/Wikibase/view/tests/qunit/wikibase/view/ViewFactory.tests.js
+++ b/extensions/Wikibase/view/tests/qunit/wikibase/view/ViewFactory.tests.js
@@ -64,6 +64,24 @@
        QUnit.test( 'getSitelinkGroupListView passes correct options to views', 
function( assert ) {
                assert.expect( 1 );
                var sitelinkSet = new wb.datamodel.SiteLinkSet( [] ),
+                       viewFactory = new ViewFactory(),
+                       $dom = $( '<div/>' );
+
+               sinon.spy( $.wikibase, 'sitelinkgrouplistview' );
+               $dom.sitelinkgrouplistview = $.wikibase.sitelinkgrouplistview;
+
+               viewFactory.getSitelinkGroupListView( sitelinkSet, $dom );
+
+               sinon.assert.calledWith( $.wikibase.sitelinkgrouplistview, 
sinon.match( {
+                       value: sitelinkSet
+               } ) );
+
+               $.wikibase.sitelinkgrouplistview.restore();
+       } );
+
+       QUnit.test( 'getSitelinkGroupView passes correct options to views', 
function( assert ) {
+               assert.expect( 1 );
+               var value = { group: 'groupid', sitelinks: [] },
                        siteLinksChanger = {},
                        entityChangersFactory = { getSiteLinksChanger: 
function() { return siteLinksChanger; } },
                        entityIdPlainFormatter = {},
@@ -74,20 +92,22 @@
                                null,
                                entityIdPlainFormatter
                        ),
+                       eventSingletonManager = new 
$.util.EventSingletonManager(),
                        $dom = $( '<div/>' );
 
-               sinon.spy( $.wikibase, 'sitelinkgrouplistview' );
-               $dom.sitelinkgrouplistview = $.wikibase.sitelinkgrouplistview;
+               sinon.spy( $.wikibase, 'sitelinkgroupview' );
+               $dom.sitelinkgroupview = $.wikibase.sitelinkgroupview;
 
-               viewFactory.getSitelinkGroupListView( sitelinkSet, $dom );
+               viewFactory.getSitelinkGroupView( eventSingletonManager, value, 
$dom );
 
-               sinon.assert.calledWith( $.wikibase.sitelinkgrouplistview, 
sinon.match( {
-                       value: sitelinkSet,
+               sinon.assert.calledWith( $.wikibase.sitelinkgroupview, 
sinon.match( {
+                       value: value,
                        entityIdPlainFormatter: entityIdPlainFormatter,
+                       eventSingletonManager: eventSingletonManager,
                        siteLinksChanger: siteLinksChanger
                } ) );
 
-               $.wikibase.sitelinkgrouplistview.restore();
+               $.wikibase.sitelinkgroupview.restore();
        } );
 
        QUnit.test( 'getStatementGroupListView passes correct options to 
views', function( assert ) {
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 8c2252a..f47b31e 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1392,12 +1392,12 @@
         "source": {
             "type": "git",
             "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-            "reference": "b4b1c73b88b13dee84f57b2275a096c795485af2"
+            "reference": "4ba75372bdb4cafd8e0c1f1338292a973e73e094"
         },
         "dist": {
             "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/b4b1c73b88b13dee84f57b2275a096c795485af2";,
-            "reference": "b4b1c73b88b13dee84f57b2275a096c795485af2",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/4ba75372bdb4cafd8e0c1f1338292a973e73e094";,
+            "reference": "4ba75372bdb4cafd8e0c1f1338292a973e73e094",
             "shasum": ""
         },
         "require": {
@@ -1431,7 +1431,7 @@
             "jakub-onderka/php-parallel-lint": "0.9.2",
             "mediawiki/mediawiki-codesniffer": "0.4.0|0.5.0"
         },
-        "time": "2016-06-29 08:22:07",
+        "time": "2016-06-30 09:06:33",
         "type": "mediawiki-extension",
         "installation-source": "dist",
         "autoload": {

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3c7bdda07e6a79a78d1e9118fedae94a64500583
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: master
Gerrit-Owner: WikidataBuilder <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to