Tobias Gritschacher has uploaded a new change for review.

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

Change subject: New Wikidata Build - 2014/12/16
......................................................................

New Wikidata Build - 2014/12/16

Change-Id: I27ff5bb7e3e155e3aa61f1239cc421c7e76182a4
---
M WikibaseClient.settings.php
M WikibaseRepo.settings.php
M composer.lock
M extensions/Wikibase/client/includes/DataAccess/PropertyIdResolver.php
M extensions/Wikibase/client/includes/WikibaseClient.php
M extensions/Wikibase/client/includes/scribunto/Scribunto_LuaWikibaseLibrary.php
M 
extensions/Wikibase/client/tests/phpunit/includes/DataAccess/PropertyIdResolverTest.php
M 
extensions/Wikibase/client/tests/phpunit/includes/scribunto/Scribunto_LuaWikibaseLibraryTest.php
M 
extensions/Wikibase/client/tests/phpunit/includes/scribunto/WikibaseLuaIntegrationTestItemSetUpHelper.php
M extensions/Wikibase/lib/includes/store/TermIndex.php
M extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php
M extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.itemview.js
M extensions/Wikibase/lib/resources/jquery.wikibase/resources.php
M extensions/Wikibase/lib/tests/phpunit/store/MockTermIndex.php
M extensions/Wikibase/repo/i18n/nl.json
M extensions/Wikibase/repo/i18n/zh-hans.json
M extensions/Wikibase/repo/includes/View/EntityViewFactory.php
M extensions/Wikibase/repo/includes/View/ItemView.php
M extensions/Wikibase/repo/includes/WikibaseRepo.php
M extensions/Wikibase/repo/includes/store/Store.php
M extensions/Wikibase/repo/includes/store/sql/SqlStore.php
M extensions/Wikibase/repo/maintenance/importInterlang.php
M extensions/Wikibase/repo/resources/Resources.php
M extensions/Wikibase/repo/resources/templates.php
M extensions/Wikibase/repo/tests/phpunit/includes/View/EntityViewFactoryTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/View/ItemViewTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/store/StoreTest.php
M vendor/autoload.php
M vendor/composer/autoload_real.php
M vendor/composer/installed.json
30 files changed, 195 insertions(+), 80 deletions(-)


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

diff --git a/WikibaseClient.settings.php b/WikibaseClient.settings.php
index 10cf16f..d5fcc0f 100644
--- a/WikibaseClient.settings.php
+++ b/WikibaseClient.settings.php
@@ -1,2 +1,2 @@
 <?php
-$wgWBClientSettings["sharedCacheKeyPrefix"] = "wikibase:WBL/1418646724";
\ No newline at end of file
+$wgWBClientSettings["sharedCacheKeyPrefix"] = "wikibase:WBL/1418735965";
\ No newline at end of file
diff --git a/WikibaseRepo.settings.php b/WikibaseRepo.settings.php
index b695c43..50f473f 100644
--- a/WikibaseRepo.settings.php
+++ b/WikibaseRepo.settings.php
@@ -1,2 +1,2 @@
 <?php
-$wgWBRepoSettings["sharedCacheKeyPrefix"] = "wikibase:WBL/1418646724";
\ No newline at end of file
+$wgWBRepoSettings["sharedCacheKeyPrefix"] = "wikibase:WBL/1418735965";
\ No newline at end of file
diff --git a/composer.lock b/composer.lock
index 7e2b057..792fff4 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1231,12 +1231,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-                "reference": "c4408a8b0e60bce848319edf2240136d4e9cfa41"
+                "reference": "89ae9af2d7d54883ead5fd9ba2238f1db50afc36"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/c4408a8b0e60bce848319edf2240136d4e9cfa41";,
-                "reference": "c4408a8b0e60bce848319edf2240136d4e9cfa41",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/89ae9af2d7d54883ead5fd9ba2238f1db50afc36";,
+                "reference": "89ae9af2d7d54883ead5fd9ba2238f1db50afc36",
                 "shasum": ""
             },
             "require": {
@@ -1303,7 +1303,7 @@
                 "wikibaserepo",
                 "wikidata"
             ],
-            "time": "2014-12-15 11:44:34"
+            "time": "2014-12-16 11:25:00"
         },
         {
             "name": "wikibase/wikimedia-badges",
@@ -1365,6 +1365,7 @@
         "wikibase/wikidata.org": 20
     },
     "prefer-stable": false,
+    "prefer-lowest": false,
     "platform": {
         "php": ">=5.3.0"
     },
diff --git 
a/extensions/Wikibase/client/includes/DataAccess/PropertyIdResolver.php 
b/extensions/Wikibase/client/includes/DataAccess/PropertyIdResolver.php
index d4a77ed..c34f087 100644
--- a/extensions/Wikibase/client/includes/DataAccess/PropertyIdResolver.php
+++ b/extensions/Wikibase/client/includes/DataAccess/PropertyIdResolver.php
@@ -5,6 +5,7 @@
 use InvalidArgumentException;
 use Wikibase\DataModel\Entity\PropertyId;
 use Wikibase\Lib\PropertyLabelNotResolvedException;
+use Wikibase\Lib\Store\EntityLookup;
 use Wikibase\PropertyLabelResolver;
 
 /**
@@ -22,9 +23,15 @@
  */
 class PropertyIdResolver {
 
+       private $entityLookup;
+
        private $propertyLabelResolver;
 
-       public function __construct( PropertyLabelResolver 
$propertyLabelResolver ) {
+       public function __construct(
+               EntityLookup $entityLookup,
+               PropertyLabelResolver $propertyLabelResolver
+       ) {
+               $this->entityLookup = $entityLookup;
                $this->propertyLabelResolver = $propertyLabelResolver;
        }
 
@@ -38,6 +45,11 @@
        public function resolvePropertyId( $propertyLabelOrId, $languageCode ) {
                try {
                        $propertyId = new PropertyId( $propertyLabelOrId );
+
+                       if ( !$this->entityLookup->hasEntity( $propertyId ) ) {
+                               throw new PropertyLabelNotResolvedException( 
$propertyLabelOrId, $languageCode );
+                       }
+
                } catch ( InvalidArgumentException $ex ) {
                        $propertyId = $this->findPropertyByLabel( 
$propertyLabelOrId, $languageCode );
                }
diff --git a/extensions/Wikibase/client/includes/WikibaseClient.php 
b/extensions/Wikibase/client/includes/WikibaseClient.php
index 7f89ecb..4c8ce45 100644
--- a/extensions/Wikibase/client/includes/WikibaseClient.php
+++ b/extensions/Wikibase/client/includes/WikibaseClient.php
@@ -685,11 +685,12 @@
         * @return PropertyClaimsRendererFactory
         */
        private function getPropertyClaimsRendererFactory() {
-               $snaksFinder = new SnaksFinder(
-                       $this->getEntityLookup()
-               );
+               $entityLookup = $this->getEntityLookup();
+
+               $snaksFinder = new SnaksFinder( $entityLookup );
 
                $propertyIdResolver = new PropertyIdResolver(
+                       $entityLookup,
                        $this->getStore()->getPropertyLabelResolver()
                );
 
diff --git 
a/extensions/Wikibase/client/includes/scribunto/Scribunto_LuaWikibaseLibrary.php
 
b/extensions/Wikibase/client/includes/scribunto/Scribunto_LuaWikibaseLibrary.php
index bd4de1e..bf95c3f 100644
--- 
a/extensions/Wikibase/client/includes/scribunto/Scribunto_LuaWikibaseLibrary.php
+++ 
b/extensions/Wikibase/client/includes/scribunto/Scribunto_LuaWikibaseLibrary.php
@@ -4,8 +4,9 @@
 use Wikibase\Client\Usage\ParserOutputUsageAccumulator;
 use Wikibase\Client\WikibaseClient;
 use Wikibase\DataModel\Entity\EntityIdParsingException;
+use Wikibase\LanguageFallbackChainFactory;
 use Wikibase\Lib\Store\EntityRetrievingTermLookup;
-use Wikibase\Lib\Store\LanguageLabelLookup;
+use Wikibase\Lib\Store\LanguageFallbackLabelLookup;
 use Wikibase\Utils;
 
 /**
@@ -40,9 +41,15 @@
                $wikibaseClient = WikibaseClient::getDefaultInstance();
 
                $entityLookup = $wikibaseClient->getStore()->getEntityLookup();
-               $labelLookup = new LanguageLabelLookup(
+
+               $fallbackChain = 
$wikibaseClient->getLanguageFallbackChainFactory()->newFromLanguage(
+                       $language,
+                       LanguageFallbackChainFactory::FALLBACK_SELF | 
LanguageFallbackChainFactory::FALLBACK_VARIANTS
+               );
+
+               $labelLookup = new LanguageFallbackLabelLookup(
                        new EntityRetrievingTermLookup( $entityLookup ),
-                       $wgContLang->getCode()
+                       $fallbackChain
                );
 
                return new WikibaseLuaBindings(
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/PropertyIdResolverTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/PropertyIdResolverTest.php
index 1a4ef8d..1b646b4 100644
--- 
a/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/PropertyIdResolverTest.php
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/PropertyIdResolverTest.php
@@ -24,7 +24,7 @@
                $mockRepository = $this->getMockRepository();
                $propertyLabelResolver = new MockPropertyLabelResolver( 'en', 
$mockRepository );
 
-               return new PropertyIdResolver( $propertyLabelResolver );
+               return new PropertyIdResolver( $mockRepository, 
$propertyLabelResolver );
        }
 
        private function getMockRepository() {
@@ -55,7 +55,6 @@
                        array( new PropertyId( 'P1337' ), 'a kitten!' ),
                        array( new PropertyId( 'P1337' ), 'p1337' ),
                        array( new PropertyId( 'P1337' ), 'P1337' ),
-                       array( new PropertyId( 'P1444' ), 'P1444' )
                );
        }
 
@@ -73,7 +72,8 @@
        public function 
resolvePropertyIdWithInvalidInput_throwsExceptionProvider() {
                return array(
                        array( 'hedgehog' ),
-                       array( 'Q100' )
+                       array( 'Q100' ),
+                       array( 'P1444' )
                );
        }
 
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/scribunto/Scribunto_LuaWikibaseLibraryTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/scribunto/Scribunto_LuaWikibaseLibraryTest.php
index 7393ffe..d4ecc3a 100644
--- 
a/extensions/Wikibase/client/tests/phpunit/includes/scribunto/Scribunto_LuaWikibaseLibraryTest.php
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/scribunto/Scribunto_LuaWikibaseLibraryTest.php
@@ -2,6 +2,7 @@
 
 namespace Wikibase\Client\Tests\Scribunto;
 
+use Language;
 use Parser;
 use ParserOptions;
 use Scribunto;
@@ -55,6 +56,39 @@
                $this->assertEquals( array( null ), $entity );
        }
 
+       public function testGetEntity_hasLanguageFallback() {
+               $this->setMwGlobals( array(
+                       'wgContLang' => Language::factory( 'ku-arab' )
+               ) );
+
+               $luaWikibaseLibrary = $this->newScribuntoLuaWikibaseLibrary();
+               $entityArray = $luaWikibaseLibrary->getEntity( 'Q885588', false 
);
+
+               $expected = array(
+                       array(
+                               'id' => 'Q885588',
+                               'type' => 'item',
+                               'labels' => array(
+                                       'ku-latn' => array(
+                                               'language' => 'ku-latn',
+                                               'value' => 'Pisîk'
+                                       ),
+                                       'ku-arab' => array (
+                                               'language' => 'ku-arab',
+                                               'value' => 'پسیک',
+                                               'source-language' => 'ku-latn',
+                                       )
+                               ),
+                               'schemaVersion' => 2,
+                       )
+               );
+
+               $this->assertEquals( $expected, $entityArray, 'getEntity' );
+
+               $label = $luaWikibaseLibrary->getLabel( 'Q885588' );
+               $this->assertEquals( array( 'پسیک' ), $label, 'getLabel' );
+       }
+
        public function testGetEntityInvalidIdType() {
                $this->setExpectedException( 'ScribuntoException' );
                $luaWikibaseLibrary = $this->newScribuntoLuaWikibaseLibrary();
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/scribunto/WikibaseLuaIntegrationTestItemSetUpHelper.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/scribunto/WikibaseLuaIntegrationTestItemSetUpHelper.php
index b9bf4e6..d08bfc3 100644
--- 
a/extensions/Wikibase/client/tests/phpunit/includes/scribunto/WikibaseLuaIntegrationTestItemSetUpHelper.php
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/scribunto/WikibaseLuaIntegrationTestItemSetUpHelper.php
@@ -87,6 +87,8 @@
 
                // Create another test item to test arbitrary access
                $this->createTestItem( new ItemId( 'Q199024' ), array( 'de' => 
'Arbitrary access \o/' ) );
+
+               $this->createTestItem( new ItemId( 'Q885588'), array( 'ku-latn' 
=> 'Pisîk' ) );
        }
 
        /**
diff --git a/extensions/Wikibase/lib/includes/store/TermIndex.php 
b/extensions/Wikibase/lib/includes/store/TermIndex.php
index 0eff783..6647998 100644
--- a/extensions/Wikibase/lib/includes/store/TermIndex.php
+++ b/extensions/Wikibase/lib/includes/store/TermIndex.php
@@ -4,7 +4,6 @@
 
 use Wikibase\DataModel\Entity\EntityDocument;
 use Wikibase\DataModel\Entity\EntityId;
-use Wikibase\Lib\Store\LabelConflictFinder;
 
 /**
  * Interface to a cache for terms with both write and lookup methods.
@@ -14,7 +13,7 @@
  * @licence GNU GPL v2+
  * @author Jeroen De Dauw < jeroended...@gmail.com >
  */
-interface TermIndex extends LabelConflictFinder {
+interface TermIndex {
 
        /**
         * Returns the type, id tuples for the entities with the provided label 
in the specified language.
diff --git a/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php 
b/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php
index 59657b0..bb5db7a 100644
--- a/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php
+++ b/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php
@@ -13,6 +13,7 @@
 use Wikibase\DataModel\LegacyIdInterpreter;
 use Wikibase\DataModel\Term\Fingerprint;
 use Wikibase\DataModel\Term\FingerprintProvider;
+use Wikibase\Lib\Store\LabelConflictFinder;
 
 /**
  * Term lookup cache.
@@ -25,7 +26,7 @@
  * @author Daniel Kinzler
  * @author Denny
  */
-class TermSqlIndex extends DBAccessBase implements TermIndex {
+class TermSqlIndex extends DBAccessBase implements TermIndex, 
LabelConflictFinder {
 
        /**
         * @since 0.1
diff --git 
a/extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.itemview.js 
b/extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.itemview.js
index 053d40b..56e8610 100644
--- 
a/extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.itemview.js
+++ 
b/extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.itemview.js
@@ -10,7 +10,7 @@
  * @extends jQuery.wikibase.entityview
  * @uses jQuery.wikibase.claimgrouplistview
  * @uses jQuery.wikibase.claimgrouplabelscroll
- * @uses jQuery.wikibase.sitelinkgroupview
+ * @uses jQuery.wikibase.sitelinkgrouplistview
  * @since 0.5
  * @licence GNU GPL v2+
  * @author H. Snater < mediaw...@snater.com >
diff --git a/extensions/Wikibase/lib/resources/jquery.wikibase/resources.php 
b/extensions/Wikibase/lib/resources/jquery.wikibase/resources.php
index f193584..4db1c83 100644
--- a/extensions/Wikibase/lib/resources/jquery.wikibase/resources.php
+++ b/extensions/Wikibase/lib/resources/jquery.wikibase/resources.php
@@ -243,6 +243,7 @@
                                'jquery.wikibase.itemview.js',
                        ),
                        'dependencies' => array(
+                               'jquery.wikibase.claimgrouplabelscroll',
                                'jquery.wikibase.claimgrouplistview',
                                'jquery.wikibase.entityview',
                                'jquery.wikibase.sitelinkgrouplistview',
@@ -302,6 +303,7 @@
                                'jquery.wikibase.propertyview.js',
                        ),
                        'dependencies' => array(
+                               'jquery.wikibase.claimgrouplabelscroll',
                                'jquery.wikibase.claimgrouplistview',
                                'jquery.wikibase.entityview',
                        ),
diff --git a/extensions/Wikibase/lib/tests/phpunit/store/MockTermIndex.php 
b/extensions/Wikibase/lib/tests/phpunit/store/MockTermIndex.php
index 64d5280..3dd9ed6 100644
--- a/extensions/Wikibase/lib/tests/phpunit/store/MockTermIndex.php
+++ b/extensions/Wikibase/lib/tests/phpunit/store/MockTermIndex.php
@@ -6,6 +6,7 @@
 use InvalidArgumentException;
 use Wikibase\DataModel\Entity\EntityDocument;
 use Wikibase\DataModel\Entity\EntityId;
+use Wikibase\Lib\Store\LabelConflictFinder;
 use Wikibase\Term;
 use Wikibase\TermIndex;
 
@@ -24,7 +25,7 @@
  * @licence GNU GPL v2+
  * @author Daniel Kinzler
  */
-class MockTermIndex implements TermIndex {
+class MockTermIndex implements TermIndex, LabelConflictFinder {
 
        /**
         * @var Term[]
diff --git a/extensions/Wikibase/repo/i18n/nl.json 
b/extensions/Wikibase/repo/i18n/nl.json
index 8258189..3398d2e 100644
--- a/extensions/Wikibase/repo/i18n/nl.json
+++ b/extensions/Wikibase/repo/i18n/nl.json
@@ -288,6 +288,7 @@
        "wikibase-item-summary-wbsetclaim-update-references": "{{PLURAL:$4|Eén 
referentie|$4 referenties}} van {{PLURAL:$3|één claim|$3 claims}} gewijzigd",
        "wikibase-item-summary-wbsetclaim-update-rank": "Volgorde van 
{{PLURAL:$3|één claim|$3 claims}} gewijzigd",
        "wikibase-item-summary-clientsitelink-update": "Pagina hernoemd van 
[$3] naar [$4]",
+       "wikibase-item-summary-clientsitelink-remove": "Pagina op [$3] 
verwijderd",
        "wikibase-item-summary-wbsetqualifier-add": 
"{{PLURAL:$1|Qualifier|Qualifiers}} toegevoegd",
        "wikibase-item-summary-wbsetqualifier-update": 
"{{PLURAL:$1|Qualifier|Qualifiers}} gewijzigd",
        "wikibase-item-summary-wbremovequalifiers-remove": 
"{{PLURAL:$1|Qualifier|Qualifiers}} verwijderd",
@@ -295,6 +296,13 @@
        "wikibase-item-summary-wbmergeitems-from": "Samengevoegd uit \"$3\"",
        "wikibase-item-summary-wbmergeitems-to": "Item samengevoegd naar 
\"$3\"",
        "wikibase-property-summary-wbcreate-new": "Nieuwe eigenschap 
aangemaakt",
+       "wikibase-property-summary-wbcreateclaim-create": "Claim aangemaakt",
+       "wikibase-property-summary-wbcreateclaim": "{{PLURAL:$1|Een 
claim|Claims}} aangemaakt",
+       "wikibase-property-summary-wbsetreference": "Een referentie toegevoegd",
+       "wikibase-property-summary-wbsetreference-add": "Referentie aan een 
claim toegevoegd",
+       "wikibase-property-summary-wbsetreference-set": "Referentie van een 
claim gewijzigd",
+       "wikibase-property-summary-wbremoveclaims": "{{PLURAL:$1|Een 
claim|Claims}} verwijderd",
+       "wikibase-property-summary-wbremoveclaims-remove": 
"{{PLURAL:$1|Claim|Claims}} verwijderd",
        "wikibase-property-summary-wbeditentity-create": "Nieuwe eigenschap 
aangemaakt",
        "wikibase-property-summary-wbeditentity-update": "Een eigenschap 
bijgewerkt",
        "wikibase-property-summary-wbeditentity-override": "Eigenschap 
verwijderd",
diff --git a/extensions/Wikibase/repo/i18n/zh-hans.json 
b/extensions/Wikibase/repo/i18n/zh-hans.json
index 0c903fd..be68242 100644
--- a/extensions/Wikibase/repo/i18n/zh-hans.json
+++ b/extensions/Wikibase/repo/i18n/zh-hans.json
@@ -437,6 +437,7 @@
        "apihelp-wbsetclaim-param-claim": "声称序列化",
        "apihelp-wbsetclaim-example-1": "设置声称带指定ID至属性P1带“City”的字符串值",
        "apihelp-wbsetclaimvalue-description": "设置Wikibase声称的值。",
+       "apihelp-wbsetclaimvalue-param-snaktype": "snak类型",
        "apihelp-wbsetdescription-param-language": "说明的语言",
        "apihelp-wbsetlabel-param-language": "标签语言",
        "apihelp-wbsetlabel-param-value": "标签值",
diff --git a/extensions/Wikibase/repo/includes/View/EntityViewFactory.php 
b/extensions/Wikibase/repo/includes/View/EntityViewFactory.php
index 6467dfb..46fceda 100644
--- a/extensions/Wikibase/repo/includes/View/EntityViewFactory.php
+++ b/extensions/Wikibase/repo/includes/View/EntityViewFactory.php
@@ -4,11 +4,13 @@
 
 use InvalidArgumentException;
 use Language;
+use SiteStore;
 use ValueFormatters\FormatterOptions;
 use ValueFormatters\ValueFormatter;
 use Wikibase\LanguageFallbackChain;
 use Wikibase\Lib\EntityIdFormatter;
 use Wikibase\Lib\EntityIdFormatterFactory;
+use Wikibase\Lib\Store\EntityLookup;
 use Wikibase\Lib\OutputFormatSnakFormatterFactory;
 use Wikibase\Lib\SnakFormatter;
 use Wikibase\Lib\Store\LabelLookup;
@@ -37,17 +39,31 @@
        private $idFormatterFactory;
 
        /**
-        * @param EntityIdFormatterFactory $idFormatterFactory
-        * @param OutputFormatSnakFormatterFactory $snakFormatterFactory
+        * @var EntityLookup
         */
+       private $entityLookup;
+
+       /**
+        * @var SiteStore
+        */
+       private $siteStore;
+
        /**
         * @var string[]
         */
        private $siteLinkGroups;
 
+       /**
+        * @param EntityIdFormatterFactory $idFormatterFactory
+        * @param OutputFormatSnakFormatterFactory $snakFormatterFactory
+        * @param EntityLookup $entityLookup
+        * @param SiteStore $siteStore
+        */
        public function __construct(
                EntityIdFormatterFactory $idFormatterFactory,
                OutputFormatSnakFormatterFactory $snakFormatterFactory,
+               EntityLookup $entityLookup,
+               SiteStore $siteStore,
                array $siteLinkGroups
        ) {
                $this->checkOutputFormat( 
$idFormatterFactory->getOutputFormat() );
@@ -55,6 +71,8 @@
                $this->idFormatterFactory = $idFormatterFactory;
                $this->snakFormatterFactory = $snakFormatterFactory;
                $this->sectionEditLinkGenerator = new 
SectionEditLinkGenerator();
+               $this->entityLookup = $entityLookup;
+               $this->siteStore = $siteStore;
                $this->siteLinkGroups = $siteLinkGroups;
        }
 
@@ -98,7 +116,21 @@
                // @fixme support more entity types
                switch ( $entityType ) {
                        case 'item':
-                               return new ItemView( $fingerprintView, 
$claimsView, $language, $this->siteLinkGroups, $editable );
+                               $siteLinksView = new SiteLinksView(
+                                       $this->siteStore->getSites(),
+                                       $this->sectionEditLinkGenerator,
+                                       $this->entityLookup,
+                                       $language->getCode()
+                               );
+
+                               return new ItemView(
+                                       $fingerprintView,
+                                       $claimsView,
+                                       $language,
+                                       $siteLinksView,
+                                       $this->siteLinkGroups,
+                                       $editable
+                               );
                        case 'property':
                                return new PropertyView( $fingerprintView, 
$claimsView, $language, $editable );
                }
diff --git a/extensions/Wikibase/repo/includes/View/ItemView.php 
b/extensions/Wikibase/repo/includes/View/ItemView.php
index 96f8620..907f578 100644
--- a/extensions/Wikibase/repo/includes/View/ItemView.php
+++ b/extensions/Wikibase/repo/includes/View/ItemView.php
@@ -6,7 +6,6 @@
 use Language;
 use Wikibase\DataModel\Entity\Item;
 use Wikibase\EntityRevision;
-use Wikibase\Repo\WikibaseRepo;
 
 /**
  * Class for creating views for Item instances.
@@ -26,11 +25,17 @@
        private $siteLinkGroups;
 
        /**
+        * @var SiteLinksView
+        */
+       private $siteLinksView;
+
+       /**
         * @see EntityView::__construct
         *
         * @param FingerprintView $fingerprintView
         * @param ClaimsView $claimsView
         * @param Language $language
+        * @param SiteLinksView $siteLinksView
         * @param string[] $siteLinkGroups
         * @param bool $editable
         */
@@ -38,12 +43,14 @@
                FingerprintView $fingerprintView,
                ClaimsView $claimsView,
                Language $language,
+               SiteLinksView $siteLinksView,
                array $siteLinkGroups,
-               $editable  = true
+               $editable = true
        ) {
                parent::__construct( $fingerprintView, $claimsView, $language, 
$editable );
 
                $this->siteLinkGroups = $siteLinkGroups;
+               $this->siteLinksView = $siteLinksView;
        }
 
        /**
@@ -95,21 +102,9 @@
         * @return string
         */
        protected function getHtmlForSiteLinks( Item $item ) {
-               $wikibaseRepo = WikibaseRepo::getDefaultInstance();
-
-               // FIXME: Inject this
-               $siteLinksView = new SiteLinksView(
-                       $wikibaseRepo->getSiteStore()->getSites(),
-                       new SectionEditLinkGenerator(),
-                       $wikibaseRepo->getEntityLookup(),
-                       $this->language->getCode()
-               );
-
-               $itemId = $item->getId();
-
-               return $siteLinksView->getHtml(
+               return $this->siteLinksView->getHtml(
                        $item->getSiteLinks(),
-                       $itemId,
+                       $item->getId(),
                        $this->siteLinkGroups,
                        $this->editable
                );
diff --git a/extensions/Wikibase/repo/includes/WikibaseRepo.php 
b/extensions/Wikibase/repo/includes/WikibaseRepo.php
index 368a001..1bbc910 100644
--- a/extensions/Wikibase/repo/includes/WikibaseRepo.php
+++ b/extensions/Wikibase/repo/includes/WikibaseRepo.php
@@ -705,7 +705,7 @@
         * @return LabelDescriptionDuplicateDetector
         */
        public function getLabelDescriptionDuplicateDetector() {
-               return new LabelDescriptionDuplicateDetector( 
$this->getStore()->getTermIndex() );
+               return new LabelDescriptionDuplicateDetector( 
$this->getStore()->getLabelConflictFinder() );
        }
 
        /**
@@ -991,6 +991,8 @@
                $entityViewFactory = new EntityViewFactory(
                        $this->getEntityIdHtmlLinkFormatter(),
                        $this->getSnakFormatterFactory(),
+                       $this->getEntityLookup(),
+                       $this->getSiteStore(),
                        $this->getSettings()->getSetting( 'siteLinkGroups' )
                );
 
diff --git a/extensions/Wikibase/repo/includes/store/Store.php 
b/extensions/Wikibase/repo/includes/store/Store.php
index f980cc0..34e7104 100644
--- a/extensions/Wikibase/repo/includes/store/Store.php
+++ b/extensions/Wikibase/repo/includes/store/Store.php
@@ -7,6 +7,7 @@
 use Wikibase\Lib\Store\EntityRevisionLookup;
 use Wikibase\Lib\Store\EntityStore;
 use Wikibase\Lib\Store\EntityStoreWatcher;
+use Wikibase\Lib\Store\LabelConflictFinder;
 use Wikibase\Lib\Store\SiteLinkCache;
 use Wikibase\Repo\Store\EntityPerPage;
 
@@ -25,13 +26,9 @@
 interface Store {
 
        /**
-        * Returns a new SiteLinkCache for this store.
-        *
         * @since 0.1
         *
         * @return SiteLinkCache
-        *
-        * @todo: rename to newSiteLinkIndex
         */
        public function newSiteLinkCache();
 
@@ -43,15 +40,13 @@
        public function clear();
 
        /**
-        * Rebuilds the store.
+        * Rebuilds the store from the original data source.
         *
         * @since 0.1
         */
        public function rebuild();
 
        /**
-        * Returns a TermIndex for this store.
-        *
         * @since 0.4
         *
         * @return TermIndex
@@ -59,8 +54,13 @@
        public function getTermIndex();
 
        /**
-        * Returns a new IdGenerator for this store.
+        * @since 0.5
         *
+        * @return LabelConflictFinder
+        */
+       public function getLabelConflictFinder();
+
+       /**
         * @since 0.1
         *
         * @return IdGenerator
@@ -68,8 +68,6 @@
        public function newIdGenerator();
 
        /**
-        * Return a new EntityPerPage.
-        *
         * @since 0.3
         *
         * @return EntityPerPage
@@ -77,8 +75,6 @@
        public function newEntityPerPage();
 
        /**
-        * Returns an EntityLookup
-        *
         * @since 0.4
         *
         * @param string $uncached Flag string, set to 'uncached' to get an 
uncached direct lookup service.
@@ -88,8 +84,6 @@
        public function getEntityLookup( $uncached = '' );
 
        /**
-        * Returns an EntityRevisionLookup
-        *
         * @since 0.5
         *
         * @param string $uncached Flag string, set to 'uncached' to get an 
uncached direct lookup service.
@@ -99,8 +93,6 @@
        public function getEntityRevisionLookup( $uncached = '' );
 
        /**
-        * Returns an EntityStore
-        *
         * @since 0.5
         *
         * @return EntityStore
@@ -118,8 +110,6 @@
        public function getEntityStoreWatcher();
 
        /**
-        * Returns an EntityInfoBuilder
-        *
         * @since 0.5
         *
         * @return EntityInfoBuilderFactory
@@ -127,8 +117,6 @@
        public function getEntityInfoBuilderFactory();
 
        /**
-        * Returns a PropertyInfoStore
-        *
         * @since 0.4
         *
         * @return PropertyInfoStore
@@ -136,8 +124,6 @@
        public function getPropertyInfoStore();
 
        /**
-        * Returns a ChangesTable
-        *
         * @since 0.5
         *
         * @return ChangesTable
diff --git a/extensions/Wikibase/repo/includes/store/sql/SqlStore.php 
b/extensions/Wikibase/repo/includes/store/sql/SqlStore.php
index 31565ad..12ad907 100644
--- a/extensions/Wikibase/repo/includes/store/sql/SqlStore.php
+++ b/extensions/Wikibase/repo/includes/store/sql/SqlStore.php
@@ -18,6 +18,7 @@
 use Wikibase\Lib\Store\EntityRevisionLookup;
 use Wikibase\Lib\Store\EntityStore;
 use Wikibase\Lib\Store\EntityStoreWatcher;
+use Wikibase\Lib\Store\LabelConflictFinder;
 use Wikibase\Lib\Store\RedirectResolvingEntityLookup;
 use Wikibase\Lib\Store\RevisionBasedEntityLookup;
 use Wikibase\Lib\Store\SiteLinkCache;
@@ -157,6 +158,15 @@
        }
 
        /**
+        * @see Store::getLabelConflictFinder
+        *
+        * @return LabelConflictFinder
+        */
+       public function getLabelConflictFinder() {
+               return $this->getTermIndex();
+       }
+
+       /**
         * @since 0.1
         *
         * @return TermIndex
diff --git a/extensions/Wikibase/repo/maintenance/importInterlang.php 
b/extensions/Wikibase/repo/maintenance/importInterlang.php
index e8dc823..9237758 100644
--- a/extensions/Wikibase/repo/maintenance/importInterlang.php
+++ b/extensions/Wikibase/repo/maintenance/importInterlang.php
@@ -15,7 +15,6 @@
  */
 
 use Wikibase\DataModel\Entity\Item;
-use Wikibase\DataModel\SiteLink;
 use Wikibase\Lib\Store\EntityStore;
 use Wikibase\Repo\WikibaseRepo;
 
@@ -24,6 +23,7 @@
 require_once $basePath . '/maintenance/Maintenance.php';
 
 class importInterlang extends Maintenance {
+
        protected $verbose = false;
        protected $ignore_errors = false;
        protected $skip = 0;
@@ -141,8 +141,8 @@
                        $name = strtr( $title, "_", " " );
                        $label = preg_replace( '/ *\(.*\)$/u', '', $name );
 
-                       $item->setLabel( $lang, $label );
-                       $item->addSiteLink( new SiteLink( $lang . 'wiki',  
$name ) );
+                       $item->getFingerprint()->setLabel( $lang, $label );
+                       $item->getSiteLinkList()->addNewSiteLink( $lang . 
'wiki',  $name );
                }
 
                try {
diff --git a/extensions/Wikibase/repo/resources/Resources.php 
b/extensions/Wikibase/repo/resources/Resources.php
index 40f9c93..e94d91d 100644
--- a/extensions/Wikibase/repo/resources/Resources.php
+++ b/extensions/Wikibase/repo/resources/Resources.php
@@ -177,8 +177,6 @@
                                'jquery.wikibase.toolbarcontroller',
                                'jquery.wikibase.wbtooltip',
                                'jquery.cookie',
-                               'jquery.wikibase.claimgrouplabelscroll',
-                               'jquery.wikibase.sitelinkgroupview',
                                'wikibase.api.getLocationAgnosticMwApi',
                                'wikibase.dataTypeStore',
                                'wikibase.entityChangers.EntityChangersFactory',
diff --git a/extensions/Wikibase/repo/resources/templates.php 
b/extensions/Wikibase/repo/resources/templates.php
index 442d5e2..ce39fdd 100644
--- a/extensions/Wikibase/repo/resources/templates.php
+++ b/extensions/Wikibase/repo/resources/templates.php
@@ -270,8 +270,7 @@
 <li class="wikibase-sitelinkview wikibase-sitelinkview-$1" data-wb-siteid="$1">
        <span class="wikibase-sitelinkview-siteid-container">
                <span class="wikibase-sitelinkview-siteid 
wikibase-sitelinkview-siteid-$1" title="$5">$4</span>
-       </span>
-       <span class="wikibase-sitelinkview-link wikibase-sitelinkview-link-$1" 
lang="$2" dir="$3"><!-- wikibase-sitelinkview-pagename -->$6</span>
+       </span><span class="wikibase-sitelinkview-link 
wikibase-sitelinkview-link-$1" lang="$2" dir="$3"><!-- 
wikibase-sitelinkview-pagename -->$6</span>
 </li>
 HTML;
 
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/View/EntityViewFactoryTest.php
 
b/extensions/Wikibase/repo/tests/phpunit/includes/View/EntityViewFactoryTest.php
index 309c699..095fe07 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/View/EntityViewFactoryTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/View/EntityViewFactoryTest.php
@@ -2,6 +2,7 @@
 
 namespace Wikibase\Test;
 
+use SiteList;
 use Wikibase\LanguageFallbackChain;
 use Wikibase\Lib\EntityIdHtmlLinkFormatterFactory;
 use Wikibase\Lib\SnakFormatter;
@@ -58,6 +59,8 @@
                return new EntityViewFactory(
                        $this->getEntityIdFormatterFactory(),
                        $this->getSnakFormatterFactory(),
+                       $this->getMock( 'Wikibase\Lib\Store\EntityLookup' ),
+                       $this->getSiteStore(),
                        array()
                );
        }
@@ -96,4 +99,14 @@
                return $snakFormatterFactory;
        }
 
+       private function getSiteStore() {
+               $siteStore = $this->getMock( 'SiteStore' );
+
+               $siteStore->expects( $this->any() )
+                       ->method( 'getSites' )
+                       ->will( $this->returnValue( new SiteList() ) );
+
+               return $siteStore;
+       }
+
 }
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/View/ItemViewTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/View/ItemViewTest.php
index 1c2738c..a33c2c0 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/View/ItemViewTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/View/ItemViewTest.php
@@ -55,6 +55,9 @@
                                ->disableOriginalConstructor()
                                ->getMock(),
                        $this->getMock( 'Language' ),
+                       $this->getMockBuilder( 
'Wikibase\Repo\View\SiteLinksView' )
+                               ->disableOriginalConstructor()
+                               ->getMock(),
                        array()
                );
 
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/store/StoreTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/store/StoreTest.php
index 148f2df..452913b 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/store/StoreTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/store/StoreTest.php
@@ -63,6 +63,14 @@
         * @dataProvider instanceProvider
         * @param Store $store
         */
+       public function testGetLabelConflictFinder( Store $store ) {
+               $this->assertInstanceOf( 
'\Wikibase\Lib\Store\LabelConflictFinder', $store->getLabelConflictFinder() );
+       }
+
+       /**
+        * @dataProvider instanceProvider
+        * @param Store $store
+        */
        public function testNewIdGenerator( Store $store ) {
                $this->assertInstanceOf( '\Wikibase\IdGenerator', 
$store->newIdGenerator() );
        }
diff --git a/vendor/autoload.php b/vendor/autoload.php
index 529f30a..25cd140 100644
--- a/vendor/autoload.php
+++ b/vendor/autoload.php
@@ -4,4 +4,4 @@
 
 require_once __DIR__ . '/composer' . '/autoload_real.php';
 
-return ComposerAutoloaderInitd9e67f99f8ded7b2ce2d6464bfd6297b::getLoader();
+return ComposerAutoloaderInitae62878fd1f0a3324da01e7ad28db4bb::getLoader();
diff --git a/vendor/composer/autoload_real.php 
b/vendor/composer/autoload_real.php
index 1d8e62d..536e354 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
 
 // autoload_real.php @generated by Composer
 
-class ComposerAutoloaderInitd9e67f99f8ded7b2ce2d6464bfd6297b
+class ComposerAutoloaderInitae62878fd1f0a3324da01e7ad28db4bb
 {
     private static $loader;
 
@@ -19,9 +19,9 @@
             return self::$loader;
         }
 
-        
spl_autoload_register(array('ComposerAutoloaderInitd9e67f99f8ded7b2ce2d6464bfd6297b',
 'loadClassLoader'), true, true);
+        
spl_autoload_register(array('ComposerAutoloaderInitae62878fd1f0a3324da01e7ad28db4bb',
 'loadClassLoader'), true, true);
         self::$loader = $loader = new \Composer\Autoload\ClassLoader();
-        
spl_autoload_unregister(array('ComposerAutoloaderInitd9e67f99f8ded7b2ce2d6464bfd6297b',
 'loadClassLoader'));
+        
spl_autoload_unregister(array('ComposerAutoloaderInitae62878fd1f0a3324da01e7ad28db4bb',
 'loadClassLoader'));
 
         $map = require __DIR__ . '/autoload_namespaces.php';
         foreach ($map as $namespace => $path) {
@@ -42,14 +42,14 @@
 
         $includeFiles = require __DIR__ . '/autoload_files.php';
         foreach ($includeFiles as $file) {
-            composerRequired9e67f99f8ded7b2ce2d6464bfd6297b($file);
+            composerRequireae62878fd1f0a3324da01e7ad28db4bb($file);
         }
 
         return $loader;
     }
 }
 
-function composerRequired9e67f99f8ded7b2ce2d6464bfd6297b($file)
+function composerRequireae62878fd1f0a3324da01e7ad28db4bb($file)
 {
     require $file;
 }
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index ff3c03f..9912f01 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1222,12 +1222,12 @@
         "source": {
             "type": "git",
             "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-            "reference": "c4408a8b0e60bce848319edf2240136d4e9cfa41"
+            "reference": "89ae9af2d7d54883ead5fd9ba2238f1db50afc36"
         },
         "dist": {
             "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/c4408a8b0e60bce848319edf2240136d4e9cfa41";,
-            "reference": "c4408a8b0e60bce848319edf2240136d4e9cfa41",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/89ae9af2d7d54883ead5fd9ba2238f1db50afc36";,
+            "reference": "89ae9af2d7d54883ead5fd9ba2238f1db50afc36",
             "shasum": ""
         },
         "require": {
@@ -1255,7 +1255,7 @@
         "conflict": {
             "mediawiki/mediawiki": "<1.23"
         },
-        "time": "2014-12-15 11:44:34",
+        "time": "2014-12-16 11:25:00",
         "type": "mediawiki-extension",
         "installation-source": "dist",
         "autoload": {

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I27ff5bb7e3e155e3aa61f1239cc421c7e76182a4
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: master
Gerrit-Owner: Tobias Gritschacher <tobias.gritschac...@wikimedia.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to