WikidataBuilder has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/329760 )
Change subject: New Wikidata Build - 2016-12-31T10:00:01+0000 ...................................................................... New Wikidata Build - 2016-12-31T10:00:01+0000 Change-Id: If832b428157833e25c3859a83dad95bb76ac995e --- M composer.lock M extensions/Wikibase/client/WikibaseClient.php M extensions/Wikibase/client/i18n/en.json M extensions/Wikibase/client/i18n/qqq.json M extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/LanguageAwareRenderer.php M extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactory.php M extensions/Wikibase/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/LanguageAwareRendererTest.php M extensions/Wikibase/repo/includes/Content/EntityContent.php M extensions/Wikibase/repo/resources/wikibase.special/wikibase.special.languageLabelDescriptionAliases.js M extensions/Wikidata.org/resources/themes/default/wikidata-org.badges.css M vendor/composer/installed.json 11 files changed, 137 insertions(+), 61 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata refs/changes/60/329760/1 diff --git a/composer.lock b/composer.lock index db228bc..07c877c 100644 --- a/composer.lock +++ b/composer.lock @@ -938,7 +938,7 @@ "source": { "type": "git", "url": "https://gerrit.wikimedia.org/r/mediawiki/extensions/Wikidata.org", - "reference": "cb652cdb01b6b0317aaf3278f1fe951aae4307b8" + "reference": "93892fd220415dadfcc51665dd2ff6c107ff1f3a" }, "require": { "php": ">=5.3.0" @@ -982,7 +982,7 @@ "support": { "irc": "irc://irc.freenode.net/wikidata" }, - "time": "2016-12-12 21:45:02" + "time": "2016-12-28 12:14:31" }, { "name": "wikibase/constraints", @@ -1585,12 +1585,12 @@ "source": { "type": "git", "url": "https://github.com/wikimedia/mediawiki-extensions-Wikibase.git", - "reference": "49d46a36b4cd582fa67e72b6ea73953d5f833695" + "reference": "484b689477357d7ad6240205ec918bce64c85028" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/49d46a36b4cd582fa67e72b6ea73953d5f833695", - "reference": "49d46a36b4cd582fa67e72b6ea73953d5f833695", + "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/484b689477357d7ad6240205ec918bce64c85028", + "reference": "484b689477357d7ad6240205ec918bce64c85028", "shasum": "" }, "require": { @@ -1663,7 +1663,7 @@ "wikibaserepo", "wikidata" ], - "time": "2016-12-30 04:22:49" + "time": "2016-12-31 04:21:49" }, { "name": "wikibase/wikimedia-badges", diff --git a/extensions/Wikibase/client/WikibaseClient.php b/extensions/Wikibase/client/WikibaseClient.php index df99683..07a6ad8 100644 --- a/extensions/Wikibase/client/WikibaseClient.php +++ b/extensions/Wikibase/client/WikibaseClient.php @@ -70,7 +70,7 @@ global $wgExtensionCredits, $wgExtensionMessagesFiles, $wgHooks, $wgExtensionFunctions; global $wgAPIListModules, $wgAPIMetaModules, $wgAPIPropModules, $wgSpecialPages; global $wgResourceModules, $wgWBClientSettings, $wgRecentChangesFlags, $wgMessagesDirs; - global $wgJobClasses, $wgWBClientDataTypes, $wgWBClientEntityTypes; + global $wgJobClasses, $wgTrackingCategories, $wgWBClientDataTypes, $wgWBClientEntityTypes; $wgExtensionCredits['wikibase'][] = array( 'path' => __DIR__, @@ -102,6 +102,9 @@ $wgExtensionMessagesFiles['Wikibaseclientalias'] = __DIR__ . '/WikibaseClient.i18n.alias.php'; $wgExtensionMessagesFiles['wikibaseclientmagic'] = __DIR__ . '/WikibaseClient.i18n.magic.php'; + // Tracking categories + $wgTrackingCategories[] = 'unresolved-property-category'; + // Hooks $wgHooks['UnitTestsList'][] = '\Wikibase\ClientHooks::registerUnitTests'; $wgHooks['BaseTemplateToolbox'][] = '\Wikibase\ClientHooks::onBaseTemplateToolbox'; diff --git a/extensions/Wikibase/client/i18n/en.json b/extensions/Wikibase/client/i18n/en.json index 8642307..b14c365 100644 --- a/extensions/Wikibase/client/i18n/en.json +++ b/extensions/Wikibase/client/i18n/en.json @@ -115,5 +115,7 @@ "notification-bundle-header-page-connection": "<strong>$3</strong> and {{PLURAL:$4|one other page|$4 other pages|100=99+ other pages}} were {{GENDER:$2|connected}} to {{WBREPONAME}} items.", "notification-link-text-view-item": "{{GENDER:$1|View}} item", "notification-subject-page-connection": "A page on {{SITENAME}} you {{GENDER:$3|created}} was {{GENDER:$2|connected}} to a {{WBREPONAME}} item", - "notification-page-connection-link": "Project:$1" + "notification-page-connection-link": "Project:$1", + "unresolved-property-category": "Pages with unresolved properties", + "unresolved-property-category-desc": "This category lists pages that reference {{WBREPONAME}} properties that can not be found neither by their property ID nor label." } diff --git a/extensions/Wikibase/client/i18n/qqq.json b/extensions/Wikibase/client/i18n/qqq.json index af18cce..5c7d7a7 100644 --- a/extensions/Wikibase/client/i18n/qqq.json +++ b/extensions/Wikibase/client/i18n/qqq.json @@ -126,5 +126,7 @@ "notification-bundle-header-page-connection": "Bundled message for the page connection notification. Parameters:\n* $1 – formatted username of the person who connected the first page\n* $2 – raw username of the person who connected the first page, for GENDER support\n* $3 – title of the first page that was connected\n* $4 – the number of other pages that were connected, except that if the count is greater than 99, this value will be 100; uses standard number formatting and used for PLURAL\nSee also:\n* {{msg-mw|Notification-header-page-connection}}\n* {{msg-mw|Notification-bundle-header-page-linked}}\n{{Related|Notification-bundle}}", "notification-link-text-view-item": "Label for button that links to the item your article was connected to. Parameters:\n* $1 – raw username of the person who is viewing the notification, can be used for GENDER\nSee also:\n* {{msg-mw|Notification-link-text-view-page}}", "notification-subject-page-connection": "Email subject. Parameters:\n* $1 – formatted username of the person who connected the page\n* $2 – raw username of the person who connected the page, can be used for GENDER.\n* $3 – raw username of the notified user, can be used for GENDER\nSee also:\n* {{msg-mw|Notification-header-page-connection}}\n* {{msg-mw|Notification-page-linked-email-subject}}", - "notification-page-connection-link": "{{notranslate}}\nThe name of the page where notified users can find more information and help. Parameters:\n* $1 – repository name (eg. Wikidata)" + "notification-page-connection-link": "{{notranslate}}\nThe name of the page where notified users can find more information and help. Parameters:\n* $1 – repository name (eg. Wikidata)", + "unresolved-property-category": "Name for a [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages are placed automatically if they reference properties that cannot be resolved.\n\nSee also:\n* {{msg-mw|Unresolved-property-category-desc}}", + "unresolved-property-category-desc": "Unresolved property category description. Shown on [[Special:TrackingCategories]].\n\nSee also:\n* {{msg-mw|Unresolved-property-category}}" } diff --git a/extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/LanguageAwareRenderer.php b/extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/LanguageAwareRenderer.php index dd08fd6..1db46a3 100644 --- a/extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/LanguageAwareRenderer.php +++ b/extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/LanguageAwareRenderer.php @@ -4,7 +4,9 @@ use InvalidArgumentException; use Language; +use ParserOutput; use Status; +use Title; use Wikibase\Client\DataAccess\StatementTransclusionInteractor; use Wikibase\Client\PropertyLabelNotResolvedException; use Wikibase\DataModel\Entity\EntityId; @@ -35,15 +37,31 @@ private $statementTransclusionInteractor; /** + * @var ParserOutput + */ + private $parserOutput; + + /** + * @var Title + */ + private $title; + + /** * @param Language $language * @param StatementTransclusionInteractor $statementTransclusionInteractor + * @param ParserOutput $parserOutput + * @param Title $title */ public function __construct( Language $language, - StatementTransclusionInteractor $statementTransclusionInteractor + StatementTransclusionInteractor $statementTransclusionInteractor, + ParserOutput $parserOutput, + Title $title ) { $this->language = $language; $this->statementTransclusionInteractor = $statementTransclusionInteractor; + $this->parserOutput = $parserOutput; + $this->title = $title; } /** @@ -61,6 +79,8 @@ ) ); } catch ( PropertyLabelNotResolvedException $ex ) { + $this->parserOutput->addTrackingCategory( 'unresolved-property-category', $this->title ); + // @fixme use ExceptionLocalizer $status = $this->getStatusForException( $propertyLabelOrId, $ex->getMessage() ); } catch ( EntityAccessLimitException $ex ) { diff --git a/extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactory.php b/extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactory.php index b34986d..93869c4 100644 --- a/extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactory.php +++ b/extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactory.php @@ -4,6 +4,8 @@ use Language; use Parser; +use ParserOutput; +use Title; use Wikibase\Client\DataAccess\DataAccessSnakFormatterFactory; use Wikibase\Client\DataAccess\PropertyIdResolver; use Wikibase\Client\DataAccess\SnaksFinder; @@ -85,13 +87,31 @@ // Use the user's language. // Note: This splits the parser cache. $targetLanguage = $parser->getOptions()->getUserLangObj(); - return $this->newLanguageAwareRenderer( $type, $targetLanguage, $usageAccumulator ); + return $this->newLanguageAwareRenderer( + $type, + $targetLanguage, + $usageAccumulator, + $parser->getOutput(), + $parser->getTitle() + ); } elseif ( $this->useVariants( $parser ) ) { $variants = $parser->getConverterLanguage()->getVariants(); - return $this->newVariantsAwareRenderer( $type, $variants, $usageAccumulator ); + return $this->newVariantsAwareRenderer( + $type, + $variants, + $usageAccumulator, + $parser->getOutput(), + $parser->getTitle() + ); } else { $targetLanguage = $parser->getTargetLanguage(); - return $this->newLanguageAwareRenderer( $type, $targetLanguage, $usageAccumulator ); + return $this->newLanguageAwareRenderer( + $type, + $targetLanguage, + $usageAccumulator, + $parser->getOutput(), + $parser->getTitle() + ); } } @@ -99,13 +119,17 @@ * @param string $type * @param Language $language * @param UsageAccumulator $usageAccumulator + * @param ParserOutput $parserOutput + * @param Title $title * * @return LanguageAwareRenderer */ private function newLanguageAwareRenderer( $type, Language $language, - UsageAccumulator $usageAccumulator + UsageAccumulator $usageAccumulator, + ParserOutput $parserOutput, + Title $title ) { $snakFormatter = $this->dataAccessSnakFormatterFactory->newWikitextSnakFormatter( $language, @@ -123,7 +147,9 @@ return new LanguageAwareRenderer( $language, - $entityStatementsRenderer + $entityStatementsRenderer, + $parserOutput, + $title ); } @@ -131,19 +157,25 @@ * @param string $type * @param string $languageCode * @param UsageAccumulator $usageAccumulator + * @param ParserOutput $parserOutput + * @param Title $title * * @return LanguageAwareRenderer */ private function getLanguageAwareRendererFromCode( $type, $languageCode, - UsageAccumulator $usageAccumulator + UsageAccumulator $usageAccumulator, + ParserOutput $parserOutput, + Title $title ) { if ( !isset( $this->languageAwareRenderers[$languageCode] ) ) { $this->languageAwareRenderers[$languageCode] = $this->newLanguageAwareRenderer( $type, Language::factory( $languageCode ), - $usageAccumulator + $usageAccumulator, + $parserOutput, + $title ); } @@ -154,13 +186,17 @@ * @param string $type * @param string[] $variants * @param UsageAccumulator $usageAccumulator + * @param ParserOutput $parserOutput + * @param Title $title * * @return VariantsAwareRenderer */ private function newVariantsAwareRenderer( $type, array $variants, - UsageAccumulator $usageAccumulator + UsageAccumulator $usageAccumulator, + ParserOutput $parserOutput, + Title $title ) { $languageAwareRenderers = []; @@ -168,7 +204,9 @@ $languageAwareRenderers[$variant] = $this->getLanguageAwareRendererFromCode( $type, $variant, - $usageAccumulator + $usageAccumulator, + $parserOutput, + $title ); } diff --git a/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/LanguageAwareRendererTest.php b/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/LanguageAwareRendererTest.php index b9194b5..a26b717 100644 --- a/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/LanguageAwareRendererTest.php +++ b/extensions/Wikibase/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/LanguageAwareRendererTest.php @@ -4,6 +4,8 @@ use DataValues\StringValue; use Language; +use ParserOutput; +use Title; use Wikibase\Client\DataAccess\PropertyIdResolver; use Wikibase\Client\DataAccess\PropertyParserFunction\LanguageAwareRenderer; use Wikibase\DataModel\Services\Lookup\RestrictedEntityLookup; @@ -37,6 +39,7 @@ * @param SnaksFinder $snaksFinder * @param EntityLookup $entityLookup * @param string $languageCode + * @param ParserOutput $parserOutput * * @return LanguageAwareRenderer */ @@ -44,7 +47,8 @@ PropertyIdResolver $propertyIdResolver, SnaksFinder $snaksFinder, EntityLookup $entityLookup, - $languageCode + $languageCode, + ParserOutput $parserOutput ) { $targetLanguage = Language::factory( $languageCode ); @@ -58,8 +62,26 @@ return new LanguageAwareRenderer( $targetLanguage, - $entityStatementsRenderer + $entityStatementsRenderer, + $parserOutput, + $this->getMock( Title::class ) ); + } + + /** + * Return a mock ParserOutput object that checks how many times it adds a tracking category. + * @param $num Number of times a tracking category should be added + * + * @return ParserOutput + */ + private function getMockParserOutput( $num ) { + $mockParser = $this->getMockBuilder( ParserOutput::class ) + ->setMethods( [ 'addTrackingCategory' ] ) + ->getMock(); + $mockParser->expects( $this->exactly( $num ) ) + ->method( 'addTrackingCategory' ); + + return $mockParser; } public function testRender() { @@ -73,7 +95,8 @@ $this->getPropertyIdResolver(), $this->getSnaksFinder( $snaks ), $this->getEntityLookup( 100 ), - 'en' + 'en', + $this->getMockParserOutput( 0 ) ); $q42 = new ItemId( 'Q42' ); @@ -88,7 +111,8 @@ $this->getPropertyIdResolverForPropertyNotFound(), $this->getSnaksFinder( array() ), $this->getEntityLookup( 100 ), - 'qqx' + 'qqx', + $this->getMockParserOutput( 1 ) ); $result = $renderer->render( new ItemId( 'Q4' ), 'invalidLabel' ); @@ -108,7 +132,8 @@ $this->getPropertyIdResolver(), $this->getSnaksFinder( array() ), $this->getEntityLookup( 1 ), - 'qqx' + 'qqx', + $this->getMockParserOutput( 0 ) ); $renderer->render( new ItemId( 'Q3' ), 'tooManyEntities' ); diff --git a/extensions/Wikibase/repo/includes/Content/EntityContent.php b/extensions/Wikibase/repo/includes/Content/EntityContent.php index eaa0d5f..3caa45a 100644 --- a/extensions/Wikibase/repo/includes/Content/EntityContent.php +++ b/extensions/Wikibase/repo/includes/Content/EntityContent.php @@ -642,13 +642,6 @@ } /** - * @deprecated - */ - public function isStub() { - throw new LogicException( 'Do not use, see T146792' ); - } - - /** * @see Content::copy * * @return ItemContent diff --git a/extensions/Wikibase/repo/resources/wikibase.special/wikibase.special.languageLabelDescriptionAliases.js b/extensions/Wikibase/repo/resources/wikibase.special/wikibase.special.languageLabelDescriptionAliases.js index 280f610..4499993 100644 --- a/extensions/Wikibase/repo/resources/wikibase.special/wikibase.special.languageLabelDescriptionAliases.js +++ b/extensions/Wikibase/repo/resources/wikibase.special/wikibase.special.languageLabelDescriptionAliases.js @@ -9,10 +9,6 @@ $( document ).ready( function () { var $lang, fields, fieldCount, autonyms, langWidget; - if ( !$.uls ) { - return; - } - $lang = $( document.getElementsByName( 'lang' ) ).closest( '.oo-ui-inputWidget' ); if ( $lang.length === 0 ) { return; @@ -21,48 +17,44 @@ fields = [ { name: 'label', - msgSimple: 'wikibase-label-edit-placeholder', msgAware: 'wikibase-label-edit-placeholder-language-aware' }, { name: 'description', - msgSimple: 'wikibase-description-edit-placeholder', msgAware: 'wikibase-description-edit-placeholder-language-aware' }, { name: 'aliases', - msgSimple: 'wikibase-aliases-edit-placeholder', msgAware: 'wikibase-aliases-edit-placeholder-language-aware' } ]; fieldCount = 0; - $.each( fields, function ( i ) { - fields[ i ].$element = $( document.getElementsByName( fields[ i ].name ) ) + fields.forEach( function ( field ) { + field.$element = $( document.getElementsByName( field.name ) ) .closest( '.oo-ui-inputWidget' ); - fieldCount += fields[ i ].$element.length; + fieldCount += field.$element.length; } ); if ( fieldCount === 0 ) { // There must be at least one field whose placeholder we have to update return; } - autonyms = $.uls.data.getAutonyms(); + autonyms = $.uls ? $.uls.data.getAutonyms() : {}; langWidget = OO.ui.infuse( $lang ); - $.each( fields, function ( i ) { - fields[ i ].$input = OO.ui.infuse( fields[ i ].$element ).$input; + fields.forEach( function ( field ) { + field.$input = OO.ui.infuse( field.$element ).$input; } ); - function updatePlaceholders( value ) { - var autonym = autonyms[ value ]; - $.each( fields, function ( i ) { - var msg; - if ( autonym ) { - msg = mw.message( fields[ i ].msgAware, autonym ); - } else { - msg = mw.message( fields[ i ].msgSimple ); - } - fields[ i ].$input.attr( 'placeholder', msg.text() ); + function updatePlaceholders( languageCode ) { + var autonym = autonyms[ languageCode ]; + + if ( typeof autonym !== 'string' ) { + autonym = '[' + languageCode + ']'; + } + + fields.forEach( function ( field ) { + field.$input.attr( 'placeholder', mw.msg( field.msgAware, autonym ) ); } ); } diff --git a/extensions/Wikidata.org/resources/themes/default/wikidata-org.badges.css b/extensions/Wikidata.org/resources/themes/default/wikidata-org.badges.css index f907414..cd1f25e 100644 --- a/extensions/Wikidata.org/resources/themes/default/wikidata-org.badges.css +++ b/extensions/Wikidata.org/resources/themes/default/wikidata-org.badges.css @@ -23,7 +23,8 @@ } .wb-badge.wb-badge-recommendedarticle, -.wb-badge.wb-badge-goodarticle { +.wb-badge.wb-badge-goodarticle, +.wb-badge.wb-badge-digitaldocument { background-image: url(../../images/wb-badges-silver.png); /* @embed */ background-image: -webkit-linear-gradient(transparent, transparent), url(../../images/wb-badges-silver.svg); diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index fb17b68..c90f4a2 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1406,12 +1406,12 @@ "source": { "type": "git", "url": "https://github.com/wikimedia/mediawiki-extensions-Wikibase.git", - "reference": "49d46a36b4cd582fa67e72b6ea73953d5f833695" + "reference": "484b689477357d7ad6240205ec918bce64c85028" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/49d46a36b4cd582fa67e72b6ea73953d5f833695", - "reference": "49d46a36b4cd582fa67e72b6ea73953d5f833695", + "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/484b689477357d7ad6240205ec918bce64c85028", + "reference": "484b689477357d7ad6240205ec918bce64c85028", "shasum": "" }, "require": { @@ -1444,7 +1444,7 @@ "jakub-onderka/php-parallel-lint": "0.9.2", "mediawiki/mediawiki-codesniffer": "0.4.0|0.5.0" }, - "time": "2016-12-30 04:22:49", + "time": "2016-12-31 04:21:49", "type": "mediawiki-extension", "installation-source": "dist", "autoload": { @@ -1538,7 +1538,7 @@ "source": { "type": "git", "url": "https://gerrit.wikimedia.org/r/mediawiki/extensions/Wikidata.org", - "reference": "cb652cdb01b6b0317aaf3278f1fe951aae4307b8" + "reference": "93892fd220415dadfcc51665dd2ff6c107ff1f3a" }, "require": { "php": ">=5.3.0" @@ -1547,7 +1547,7 @@ "jakub-onderka/php-parallel-lint": "0.9.2", "mediawiki/mediawiki-codesniffer": "0.7.2" }, - "time": "2016-12-12 21:45:02", + "time": "2016-12-28 11:49:18", "type": "mediawiki-extension", "installation-source": "source", "autoload": { -- To view, visit https://gerrit.wikimedia.org/r/329760 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If832b428157833e25c3859a83dad95bb76ac995e Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikidata Gerrit-Branch: master Gerrit-Owner: WikidataBuilder <wikidata-servi...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits