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