jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/344333 )
Change subject: New Wikidata Build - 2017-03-23T10:00:01+0000
......................................................................
New Wikidata Build - 2017-03-23T10:00:01+0000
Change-Id: I99fb888982f23368e453784da57bc71707fd15ed
---
M composer.lock
M extensions/Constraints/i18n/zh-hant.json
M extensions/Wikibase/client/WikibaseClient.hooks.php
M extensions/Wikibase/client/WikibaseClient.php
M extensions/Wikibase/client/i18n/en.json
M extensions/Wikibase/client/i18n/fy.json
M extensions/Wikibase/client/i18n/gl.json
M extensions/Wikibase/client/i18n/qqq.json
M
extensions/Wikibase/client/includes/Hooks/ChangesListSpecialPageHookHandlers.php
A extensions/Wikibase/client/includes/Hooks/MagicWordHookHandlers.php
M extensions/Wikibase/client/includes/Modules/SiteModule.php
M extensions/Wikibase/client/includes/WikibaseClient.php
M
extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesListSpecialPageHookHandlersTest.php
A
extensions/Wikibase/client/tests/phpunit/includes/Hooks/MagicWordHookHandlersTest.php
M extensions/Wikibase/client/tests/phpunit/includes/Modules/SiteModuleTest.php
M extensions/Wikibase/lib/WikibaseLib.entitytypes.php
M extensions/Wikibase/lib/i18n/gl.json
M extensions/Wikibase/repo/Wikibase.php
M extensions/Wikibase/repo/i18n/gl.json
M extensions/Wikibase/repo/i18n/pl.json
M extensions/Wikibase/repo/includes/Actions/EditEntityAction.php
R extensions/Wikibase/repo/includes/Diff/BasicEntityDiffVisualizer.php
M extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php
M extensions/Wikibase/repo/includes/WikibaseRepo.php
R
extensions/Wikibase/repo/tests/phpunit/includes/Diff/BasicEntityDiffVisualizerTest.php
M vendor/composer/autoload_classmap.php
M vendor/composer/autoload_static.php
M vendor/composer/installed.json
28 files changed, 653 insertions(+), 283 deletions(-)
Approvals:
Addshore: Looks good to me, approved
jenkins-bot: Verified
diff --git a/composer.lock b/composer.lock
index b528a0c..e57fab6 100644
--- a/composer.lock
+++ b/composer.lock
@@ -935,7 +935,7 @@
"source": {
"type": "git",
"url":
"https://gerrit.wikimedia.org/r/mediawiki/extensions/WikibaseQualityConstraints",
- "reference": "e5344cda71392773660bf8a54e9932d882e75433"
+ "reference": "e9b7fcaafc8abe6a1544fb7688e760e252fbe078"
},
"require": {
"php": ">=5.5.9",
@@ -987,7 +987,7 @@
"support": {
"issues":
"https://phabricator.wikimedia.org/project/profile/1202/"
},
- "time": "2017-03-21 10:22:18"
+ "time": "2017-03-22 22:11:48"
},
{
"name": "wikibase/data-model",
@@ -1556,12 +1556,12 @@
"source": {
"type": "git",
"url":
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git",
- "reference": "dcb71c0633d61886d1647aba80a5e3988cfad21a"
+ "reference": "f37e244cd624ead83bc9552ff0b5d4c23880948e"
},
"dist": {
"type": "zip",
- "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/dcb71c0633d61886d1647aba80a5e3988cfad21a",
- "reference": "dcb71c0633d61886d1647aba80a5e3988cfad21a",
+ "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/f37e244cd624ead83bc9552ff0b5d4c23880948e",
+ "reference": "f37e244cd624ead83bc9552ff0b5d4c23880948e",
"shasum": ""
},
"require": {
@@ -1635,7 +1635,7 @@
"wikibaserepo",
"wikidata"
],
- "time": "2017-03-21 21:55:12"
+ "time": "2017-03-22 22:11:13"
},
{
"name": "wikibase/wikimedia-badges",
diff --git a/extensions/Constraints/i18n/zh-hant.json
b/extensions/Constraints/i18n/zh-hant.json
index b79757d..38dffb7 100644
--- a/extensions/Constraints/i18n/zh-hant.json
+++ b/extensions/Constraints/i18n/zh-hant.json
@@ -5,6 +5,7 @@
]
},
"wbqc-constraintreport-form-submit-label": "檢查",
+ "wbqc-constraintreport-status-todo": "待辦事項",
"wbqc-constraintreport-result-table-header-status": "狀態",
"wbqc-constraintreport-no-parameter": "無"
}
diff --git a/extensions/Wikibase/client/WikibaseClient.hooks.php
b/extensions/Wikibase/client/WikibaseClient.hooks.php
index 11528de..6611903 100644
--- a/extensions/Wikibase/client/WikibaseClient.hooks.php
+++ b/extensions/Wikibase/client/WikibaseClient.hooks.php
@@ -342,52 +342,6 @@
}
/**
- * Register the magic word.
- *
- * @param string[] &$aCustomVariableIds
- *
- * @return bool
- */
- public static function onMagicWordwgVariableIDs( &$aCustomVariableIds )
{
- $aCustomVariableIds[] = 'noexternallanglinks';
- $aCustomVariableIds[] = 'wbreponame';
-
- return true;
- }
-
- /**
- * Apply the magic word.
- *
- * @param Parser &$parser
- * @param array &$cache
- * @param string &$magicWordId
- * @param string &$ret
- *
- * @return bool
- */
- public static function onParserGetVariableValueSwitch( Parser &$parser,
&$cache, &$magicWordId, &$ret ) {
- if ( $magicWordId === 'noexternallanglinks' ) {
- NoLangLinkHandler::handle( $parser, '*' );
- } elseif ( $magicWordId === 'wbreponame' ) {
- // @todo factor out, with tests
- $wikibaseClient = WikibaseClient::getDefaultInstance();
- $settings = $wikibaseClient->getSettings();
- $repoSiteName = $settings->getSetting( 'repoSiteName' );
-
- $message = new Message( $repoSiteName );
-
- if ( $message->exists() ) {
- $lang = $parser->getTargetLanguage();
- $ret = $message->inLanguage( $lang )->parse();
- } else {
- $ret = $repoSiteName;
- }
- }
-
- return true;
- }
-
- /**
* Adds the Entity ID of the corresponding Wikidata item in action=info
*
* @param IContextSource $context
@@ -496,16 +450,28 @@
}
/**
- * These hooks should only be run if we use the Echo extension
+ * Do special hook registrations. These are affected by ordering
issues and/or
+ * conditional on another extension being registered.
*
* @see
https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExtensionFunctions
*/
public static function onExtensionLoad() {
global $wgHooks;
+
+ // These hooks should only be run if we use the Echo extension
if ( class_exists( EchoEvent::class ) ) {
$wgHooks['UserGetDefaultOptions'][] =
EchoNotificationsHandlers::class . '::onUserGetDefaultOptions';
$wgHooks['WikibaseHandleChange'][] =
EchoNotificationsHandlers::class . '::onWikibaseHandleChange';
}
+
+ // This is in onExtensionLoad to ensure we register our
+ // ChangesListSpecialPageStructuredFilters after ORES's.
+ //
+ // However, ORES is not required.
+ //
+ // recent changes / watchlist hooks
+ $wgHooks['ChangesListSpecialPageStructuredFilters'][] =
+
'\Wikibase\Client\Hooks\ChangesListSpecialPageHookHandlers::onChangesListSpecialPageStructuredFilters';
}
}
diff --git a/extensions/Wikibase/client/WikibaseClient.php
b/extensions/Wikibase/client/WikibaseClient.php
index 07df902..9f107ad 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, $wgTrackingCategories, $wgWBClientDataTypes,
$wgWBClientEntityTypes;
+ global $wgJobClasses, $wgTrackingCategories, $wgWBClientDataTypes;
global $wgWikibaseInterwikiSorting;
$wgExtensionCredits['wikibase'][] = array(
@@ -95,9 +95,6 @@
$wgWBClientDataTypes[$type] = array_merge( $baseDef, $clientDef
);
}
- // Registry and definition of entity types
- $wgWBClientEntityTypes = require __DIR__ .
'/../lib/WikibaseLib.entitytypes.php';
-
// i18n
$wgMessagesDirs['wikibaseclient'] = __DIR__ . '/i18n';
$wgExtensionMessagesFiles['Wikibaseclientalias'] = __DIR__ .
'/WikibaseClient.i18n.alias.php';
@@ -119,8 +116,6 @@
$wgHooks['SidebarBeforeOutput'][] =
'\Wikibase\Client\Hooks\SidebarHookHandlers::onSidebarBeforeOutput';
$wgHooks['ParserFirstCallInit'][] =
'\Wikibase\ClientHooks::onParserFirstCallInit';
- $wgHooks['MagicWordwgVariableIDs'][] =
'\Wikibase\ClientHooks::onMagicWordwgVariableIDs';
- $wgHooks['ParserGetVariableValueSwitch'][] =
'\Wikibase\ClientHooks::onParserGetVariableValueSwitch';
$wgHooks['SkinTemplateOutputPageBeforeExec'][] =
'\Wikibase\Client\Hooks\SkinTemplateOutputPageBeforeExecHandler::onSkinTemplateOutputPageBeforeExec';
$wgHooks['SpecialMovepageAfterMove'][] =
'\Wikibase\Client\Hooks\MovePageNotice::onSpecialMovepageAfterMove';
@@ -162,9 +157,13 @@
}
// recent changes / watchlist hooks
- $wgHooks['ChangesListSpecialPageFilters'][] =
'\Wikibase\Client\Hooks\ChangesListSpecialPageHookHandlers::onChangesListSpecialPageFilters';
$wgHooks['ChangesListSpecialPageQuery'][] =
'\Wikibase\Client\Hooks\ChangesListSpecialPageHookHandlers::onChangesListSpecialPageQuery';
+ // magic words
+ $wgHooks['MagicWordwgVariableIDs'][] =
'\Wikibase\Client\Hooks\MagicWordHookHandlers::onMagicWordwgVariableIDs';
+ $wgHooks['ParserGetVariableValueSwitch'][] =
'\Wikibase\Client\Hooks\MagicWordHookHandlers::onParserGetVariableValueSwitch';
+ $wgHooks['ResourceLoaderJqueryMsgModuleMagicWords'][] =
'\Wikibase\Client\Hooks\MagicWordHookHandlers::onResourceLoaderJqueryMsgModuleMagicWords';
+
// update hooks
$wgHooks['LoadExtensionSchemaUpdates'][] =
'\Wikibase\Client\Usage\Sql\SqlUsageTrackerSchemaUpdater::onSchemaUpdate';
diff --git a/extensions/Wikibase/client/i18n/en.json
b/extensions/Wikibase/client/i18n/en.json
index 5c7c152..565b5ae 100644
--- a/extensions/Wikibase/client/i18n/en.json
+++ b/extensions/Wikibase/client/i18n/en.json
@@ -75,6 +75,12 @@
"wikibase-rc-show-wikidata-pref": "Show {{WBREPONAME}} edits in recent
changes",
"wikibase-rc-wikibase-edit-letter": "D",
"wikibase-rc-wikibase-edit-title": "{{WBREPONAME}} edit",
+ "wikibase-rcfilters-hide-wikibase-label": "{{WBREPONAME}} edits",
+ "wikibase-rcfilters-hide-wikibase-description": "Edits that originate
on {{WBREPONAME}}.",
+ "wikibase-rcfilters-hide-wikibase-conflicts-ores": "This filter
conflicts with one or more Contribution Quality or User Intent filters. Quality
and Intent predictions are not available for {{WBREPONAME}} edits.",
+ "wikibase-rcfilters-hide-wikibase-conflicts-ores-global": "The
\"{{WBREPONAME}} edits\" filter is conflicting with one or more Contribution
Quality or User Intent filters. Quality and Intent predictions are not
available for {{WBREPONAME}} edits. The conflicting filters are marked in the
Active Filters area, above.",
+ "wikibase-rcfilters-damaging-conflicts-hide-wikibase": "Contribution
Quality predictions are not available for certain types of change, so this
filter conflicts with the following Type of Change
{{PLURAL:$2|filter|filters}}: $1",
+ "wikibase-rcfilters-goodfaith-conflicts-hide-wikibase": "User Intent
predictions are not available for certain types of change, so this filter
conflicts with the following Type of Change {{PLURAL:$2|filter|filters}}: $1",
"wikibase-replicationnote": "Please notice that it can take several
minutes until the changes are visible on all wikis.",
"wikibase-watchlist-show-changes-pref": "Show {{WBREPONAME}} edits in
your watchlist",
"wikibase-error-deserialize-error": "Failed to deserialize data.",
diff --git a/extensions/Wikibase/client/i18n/fy.json
b/extensions/Wikibase/client/i18n/fy.json
index 0d27d0f..8cd90ec 100644
--- a/extensions/Wikibase/client/i18n/fy.json
+++ b/extensions/Wikibase/client/i18n/fy.json
@@ -1,7 +1,9 @@
{
"@metadata": {
"authors": [
- "Robin0van0der0vliet"
+ "Robin0van0der0vliet",
+ "PiefPafPier",
+ "Robin van der Vliet"
]
},
"wikibase-comment-update": "Item fan {{WBREPONAME}} bywurke",
@@ -15,5 +17,6 @@
"wikibase-rc-wikibase-edit-letter": "D",
"wikibase-rc-wikibase-edit-title": "Bewurking fan {{WBREPONAME}}",
"wikibase-pageinfo-entity-id-none": "Gjin",
+ "wikibase-pageinfo-entity-usage-L": "Lebel: $1",
"wikibase-otherprojects": "Oare projekten"
}
diff --git a/extensions/Wikibase/client/i18n/gl.json
b/extensions/Wikibase/client/i18n/gl.json
index 84db798..be3372a 100644
--- a/extensions/Wikibase/client/i18n/gl.json
+++ b/extensions/Wikibase/client/i18n/gl.json
@@ -110,5 +110,7 @@
"notification-header-page-connection": "A páxina <strong>$3</strong>
foi {{GENDER:$2|conectada}} a un elemento de {{WBREPONAME}} .",
"notification-bundle-header-page-connection": "<strong>$3</strong> e
{{PLURAL:$4|outra páxina|outras $4 páxinas|100=+99 outras páxinas}} foron
{{GENDER:$2|conectadas}} a items de {{WBREPONAME}}.",
"notification-link-text-view-item": "{{GENDER:$1|Ver}} elemento",
- "notification-subject-page-connection": "Unha páxina de {{SITENAME}}
que {{GENDER:$3|creaches}} foi {{GENDER:$2|conectada}} cun obxecto
{{WBREPONAME}}"
+ "notification-subject-page-connection": "Unha páxina de {{SITENAME}}
que {{GENDER:$3|creaches}} foi {{GENDER:$2|conectada}} cun obxecto
{{WBREPONAME}}",
+ "unresolved-property-category": "Páxinas con propiedades non resoltas",
+ "unresolved-property-category-desc": "Esta categoría mostra páxinas que
referencian propiedades {{WBREPONAME}} que non se poden atopar polo seu
identificador de propiedade nin pola súa etiqueta."
}
diff --git a/extensions/Wikibase/client/i18n/qqq.json
b/extensions/Wikibase/client/i18n/qqq.json
index 5c7d7a7..91f05e2 100644
--- a/extensions/Wikibase/client/i18n/qqq.json
+++ b/extensions/Wikibase/client/i18n/qqq.json
@@ -86,6 +86,12 @@
"wikibase-rc-show-wikidata-pref": "Option in the recent changes section
of preferences to show wikibase changes by default in recent changes.",
"wikibase-rc-wikibase-edit-letter": "Very short form of \"'''wikidata
edit'''\". Used in [[Special:RecentChanges]] and [[Special:Watchlist]].\n\nSee
also:\n* {{msg-mw|Newpageletter}}\n* {{msg-mw|Minoreditletter}}\n*
{{msg-mw|Boteditletter}}\n* {{msg-mw|Unpatrolledletter}}",
"wikibase-rc-wikibase-edit-title": "Tooltip for
{{msg-mw|wikibase-rc-wikibase-edit-letter}}.\n\nSee also:\n*
{{msg-mw|Recentchanges-label-newpage}}\n*
{{msg-mw|Recentchanges-label-minor}}\n* {{msg-mw|Recentchanges-label-bot}}\n*
{{msg-mw|Recentchanges-label-unpatrolled}}\n{{Identical|Edit}}",
+ "wikibase-rcfilters-hide-wikibase-label": "Label for 'Wikidata edits'
filter on ChangesList pages (such as RecentChanges)",
+ "wikibase-rcfilters-hide-wikibase-description": "Description for
'Wikidata edits' filter on ChangesList pages (such as RecentChanges)",
+ "wikibase-rcfilters-hide-wikibase-conflicts-ores": "Tooltip shown when
hovering over a 'Wikidata edits' filter tag, when a ORES filter is also
selected.\n* 'Contribution quality' is based on
{{msg-mw|Ores-rcfilters-damaging-title}}.\n* 'User intent' is based on
{{msg-mw|Ores-rcfilters-goodfaith-title}}.",
+ "wikibase-rcfilters-hide-wikibase-conflicts-ores-global": "Message
shown in the result area when both an ORES filter and the 'Wikidata edits'
filter are selected. This indicates that no results will be shown because
propagated Wikidata edits do not have ORES scores available.\n\n* \"Wikidata
edits\" is {{msg-mw|wikibase-rcfilters-hide-wikibase-label}}.\n* \"Contribution
quality\" is based on {{msg-mw|Ores-rcfilters-damaging-title}}.\n* \"User
intent\" is based on {{msg-mw|Ores-rcfilters-goodfaith-title}}.\n* \"Active
Filters\" is based on {{msg-mw|rcfilters-activefilters}}.",
+ "wikibase-rcfilters-damaging-conflicts-hide-wikibase": "Tooltip shown
when hovering over a 'Contribution quality predictions' filter tag, when the
'Wikidata edits' filter is selected and there is a conflict. Propagated
Wikidata edits do not have ORES scores avaialble. Parameters:\n* $1 -
Comma-separated string of selected Type of Change filters, e.g. \"Wikidata
edits\"\n* $2 - Count of selected Type of Change filters, for PLURAL",
+ "wikibase-rcfilters-goodfaith-conflicts-hide-wikibase": "Tooltip shown
when hovering over a 'User intent predictions' filter tag, when the 'Wikidata
edits' filter is selected and there is a conflict. 'Wikidata edits' are not
scored by ORES. Parameters:\n* $1 - Comma-separated string of selected Type of
Change filters, e.g. \"Wikidata edits\"\n* $2 - Count of selected Type of
Change filters, for PLURAL",
"wikibase-replicationnote": "Note telling the user that it can take a
few minutes until the made changes are visible on all wikis.\nPreceded by
message {{msg-mw|Wikibase-linkitem-success-link}}",
"wikibase-watchlist-show-changes-pref": "Option in the watchlist
section of preferences to always show wikibase edits by default in the
watchlist. Appears as a checkbox in the same list with options such as:\n*
{{msg-mw|tog-watchdefault}}\n* {{msg-mw|tog-watchmoves}}\nAnd so on.",
"wikibase-error-deserialize-error": "Generic error when invalid
(undeserializable) data has been given.",
diff --git
a/extensions/Wikibase/client/includes/Hooks/ChangesListSpecialPageHookHandlers.php
b/extensions/Wikibase/client/includes/Hooks/ChangesListSpecialPageHookHandlers.php
index 55460ba..2e0f963 100644
---
a/extensions/Wikibase/client/includes/Hooks/ChangesListSpecialPageHookHandlers.php
+++
b/extensions/Wikibase/client/includes/Hooks/ChangesListSpecialPageHookHandlers.php
@@ -2,9 +2,12 @@
namespace Wikibase\Client\Hooks;
+use ChangesListBooleanFilter;
use ChangesListSpecialPage;
+use ExtensionRegistry;
use FormOptions;
use IContextSource;
+use IDatabase;
use MediaWiki\MediaWikiServices;
use RequestContext;
use User;
@@ -113,29 +116,26 @@
/**
* Modifies recent changes and watchlist options to show a toggle for
Wikibase changes
- * @see
https://www.mediawiki.org/wiki/Manual:Hooks/ChangesListSpecialPageFilters
+ * @see
https://www.mediawiki.org/wiki/Manual:Hooks/ChangesListSpecialPageStructuredFilters
*
* @param ChangesListSpecialPage $specialPage
- * @param array &$filters
*
* @return bool
*/
- public static function onChangesListSpecialPageFilters(
- ChangesListSpecialPage $specialPage,
- array &$filters
+ public static function onChangesListSpecialPageStructuredFilters(
+ ChangesListSpecialPage $specialPage
) {
$hookHandler = self::getInstance(
$specialPage->getContext(),
$specialPage->getName()
);
- $hookHandler->addFilterIfEnabled( $filters );
+ $hookHandler->addFilterIfEnabled( $specialPage );
return true;
}
/**
- * Modifies watchlist and recent changes query to include external
changes
* @see
https://www.mediawiki.org/wiki/Manual:Hooks/ChangesListSpecialPageQuery
*
* @param string $specialPageName
@@ -162,83 +162,109 @@
$specialPageName
);
- $conds = $hookHandler->addWikibaseConditions( $conds, $opts );
+ $hookHandler->addWikibaseConditionsIfFilterUnavailable( $conds
);
return true;
}
- /**
- * @param array &$filters
- */
- public function addFilterIfEnabled( array &$filters ) {
- if ( $this->hasWikibaseChangesEnabled() ) {
- $filterName = $this->getFilterName();
+ // This is separate so hasWikibaseChangesEnabled can be mocked
- // the toggle needs to be the inverse to invoke the
inverse display status.
- // e.g. if Wikibase changes currently hidden, then when
the user
- // clicks the toggle, then Wikibase changes are
displayed.
- $filters[$filterName] = array(
- 'msg' => 'wikibase-rc-hide-wikidata',
- 'default' =>
!$this->hasWikibaseChangesDisplayed()
+ /**
+ * This is used to force-hide Wikibase changes if
hasWikibaseChangesEnabled returns
+ * false. The user will not even see the option in that case.
+ *
+ * @param array &$conds
+ */
+ protected function addWikibaseConditionsIfFilterUnavailable( array
&$conds ) {
+ if ( !$this->hasWikibaseChangesEnabled() ) {
+ // Force-hide if hasWikibaseChangesEnabled is false
+ // The user-facing hideWikibase is handled by
+ // ChangesListSpecialPageStructuredFilters and
connected code.
+ $this->addWikibaseConditions(
+ $this->loadBalancer->getConnection( DB_REPLICA
),
+ $conds
);
}
}
/**
- * @param array &$conds
- * @param FormOptions $opts
- *
- * @return array
+ * @param ChangesListSpecialPage $specialPage
*/
- public function addWikibaseConditions( array &$conds, FormOptions $opts
) {
- if ( $this->shouldHideWikibaseChanges( $opts ) ) {
- $dbr = $this->loadBalancer->getConnection( DB_REPLICA );
- $conds[] = 'rc_source != ' . $dbr->addQuotes(
RecentChangeFactory::SRC_WIKIBASE );
- $this->loadBalancer->reuseConnection( $dbr );
+ public function addFilterIfEnabled( ChangesListSpecialPage $specialPage
) {
+ // The *user-facing* filter is only registered if external
changes
+ // are enabled, and the user does not have enhanced recent
changes.
+ //
+ // If the user-facing filter is not registered, it's always
*hidden*.
+ // (See ChangesListSpecialPageQuery).
+ if ( $this->hasWikibaseChangesEnabled() ) {
+ $this->addFilter( $specialPage );
}
-
- return $conds;
}
/**
- * @param FormOptions $opts
- *
- * @return boolean
+ * @param ChangesListSpecialPage $specialPage
*/
- private function shouldHideWikibaseChanges( FormOptions $opts ) {
- if ( !$this->hasWikibaseChangesEnabled() ) {
- return true;
- }
-
+ protected function addFilter( ChangesListSpecialPage $specialPage ) {
$filterName = $this->getFilterName();
+ $changeTypeGroup = $specialPage->getFilterGroup( 'changeType' );
- if ( !$opts->offsetExists( $filterName ) ) {
- return true;
+ $specialPage->getOutput()->addModules(
'wikibase.client.jqueryMsg' );
+
+ $wikidataFilter = new ChangesListBooleanFilter( [
+ 'name' => $filterName,
+ 'group' => $changeTypeGroup,
+ 'priority' => -4,
+ 'label' => 'wikibase-rcfilters-hide-wikibase-label',
+ 'description' =>
'wikibase-rcfilters-hide-wikibase-description',
+ 'showHide' => 'wikibase-rc-hide-wikidata',
+ // If the preference is enabled, then don't hide
Wikidata edits
+ 'default' => !$this->hasShowWikibaseEditsPrefEnabled(),
+ 'queryCallable' => function ( $specialClassName, $ctx,
$dbr, &$tables, &$fields,
+ &$conds, &$query_options, &$join_conds ) {
+ $this->addWikibaseConditions( $dbr, $conds );
+ },
+ 'cssClassSuffix' => 'src-mw-wikibase',
+ 'isRowApplicableCallable' => function ( $ctx, $rc ) {
+ return $rc->getAttribute( 'rc_source' ) ===
RecentChangeFactory::SRC_WIKIBASE;
+ }
+ ] );
+
+ $extensionRegistry = ExtensionRegistry::getInstance();
+
+ if ( $extensionRegistry->isLoaded( 'ORES' ) ) {
+ $damagingGroup = $specialPage->getFilterGroup(
'damaging' );
+ $wikidataFilter->conflictsWith(
+ $damagingGroup,
+
'wikibase-rcfilters-hide-wikibase-conflicts-ores-global',
+
'wikibase-rcfilters-hide-wikibase-conflicts-ores',
+
'wikibase-rcfilters-damaging-conflicts-hide-wikibase'
+ );
+
+ $goodfaithGroup = $specialPage->getFilterGroup(
'goodfaith' );
+ $wikidataFilter->conflictsWith(
+ $goodfaithGroup,
+
'wikibase-rcfilters-hide-wikibase-conflicts-ores-global',
+
'wikibase-rcfilters-hide-wikibase-conflicts-ores',
+
'wikibase-rcfilters-goodfaith-conflicts-hide-wikibase'
+ );
}
+ }
- return $opts->getValue( $filterName ) === true;
+ /**
+ * @param IDatabase $dbr
+ * @param array &$conds
+ */
+ public function addWikibaseConditions( IDatabase $dbr, array &$conds ) {
+ $conds[] = 'rc_source != ' . $dbr->addQuotes(
RecentChangeFactory::SRC_WIKIBASE );
}
/**
* @return bool
*/
- private function hasWikibaseChangesEnabled() {
+ protected function hasWikibaseChangesEnabled() {
// do not include wikibase changes for activated enhanced
watchlist
// since we do not support that format yet (T46222)
return $this->showExternalChanges &&
!$this->isEnhancedChangesEnabled();
- }
-
- /**
- * @return bool
- */
- private function hasWikibaseChangesDisplayed() {
- if ( $this->request->getVal( 'action' ) === 'submit' ) {
- return !$this->request->getBool( $this->getFilterName()
);
- }
-
- // if preference enabled, then Wikibase edits are included by
default and
- // the toggle default value needs to be the inverse to hide
them, and vice versa.
- return $this->hasShowWikibaseEditsPrefEnabled();
}
/**
diff --git
a/extensions/Wikibase/client/includes/Hooks/MagicWordHookHandlers.php
b/extensions/Wikibase/client/includes/Hooks/MagicWordHookHandlers.php
new file mode 100644
index 0000000..f01a177
--- /dev/null
+++ b/extensions/Wikibase/client/includes/Hooks/MagicWordHookHandlers.php
@@ -0,0 +1,129 @@
+<?php
+
+namespace Wikibase\Client\Hooks;
+
+use Language;
+use Message;
+use Parser;
+use ResourceLoaderContext;
+use Wikibase\SettingsArray;
+use Wikibase\Client\WikibaseClient;
+
+/**
+ * File defining hooks related to magic words
+ * @license GPL-2.0+
+ */
+class MagicWordHookHandlers {
+ /**
+ * @var SettingsArray $settings
+ */
+ protected $settings;
+
+ /**
+ * WikibaseClient $wikibaseClient
+ */
+ public function __construct( SettingsArray $settings ) {
+ $this->settings = $settings;
+ }
+
+ /**
+ * @return self
+ */
+ public static function newFromGlobalState() {
+ $client = WikibaseClient::getDefaultInstance();
+ return new self( $client->getSettings() );
+ }
+
+ /**
+ * Register the magic word.
+ *
+ * @param string[] &$aCustomVariableIds
+ *
+ * @return bool
+ */
+ public static function onMagicWordwgVariableIDs( &$aCustomVariableIds )
{
+ $aCustomVariableIds[] = 'noexternallanglinks';
+ $aCustomVariableIds[] = 'wbreponame';
+
+ return true;
+ }
+
+ /**
+ * Gets the user-facing repository name.
+ *
+ * This can either be a message's text, or the raw value from
+ * settings if that is not a message
+ *
+ * @param Language $lang Language to get text in
+ */
+ protected function getRepoName( Language $lang ) {
+ $repoSiteName = $this->settings->getSetting( 'repoSiteName' );
+
+ $message = new Message( $repoSiteName );
+ $message->inLanguage( $lang );
+
+ if ( $message->exists() ) {
+ return $message->parse();
+ } else {
+ return $repoSiteName;
+ }
+ }
+
+ /**
+ * Static handler for the ParserGetVariableValueSwitch hook
+ *
+ * @param Parser &$parser
+ * @param array &$cache
+ * @param string &$magicWordId
+ * @param string &$ret
+ *
+ * @return bool
+ */
+ public static function onParserGetVariableValueSwitch( Parser &$parser,
&$cache, &$magicWordId, &$ret ) {
+ $handler = self::newFromGlobalState();
+ $handler->doParserGetVariableValueSwitch( $parser, $cache,
$magicWordId, $ret );
+ }
+
+ /**
+ * Apply the magic word.
+ *
+ * @param Parser &$parser
+ * @param array &$cache
+ * @param string &$magicWordId
+ * @param string &$ret
+ *
+ * @return bool
+ */
+ protected function doParserGetVariableValueSwitch( Parser &$parser,
&$cache, &$magicWordId, &$ret ) {
+ if ( $magicWordId === 'noexternallanglinks' ) {
+ NoLangLinkHandler::handle( $parser, '*' );
+ } elseif ( $magicWordId === 'wbreponame' ) {
+ $lang = $parser->getTargetLanguage();
+ $ret = $this->getRepoName( $lang );
+ }
+
+ return true;
+ }
+
+ /**
+ * Static handler for the ResourceLoaderJqueryMsgModuleMagicWords hook
+ *
+ * @param array $magicWords
+ */
+ public static function onResourceLoaderJqueryMsgModuleMagicWords(
ResourceLoaderContext $context, array &$magicWords ) {
+ $handler = self::newFromGlobalState();
+ $handler->doResourceLoaderJqueryMsgModuleMagicWords( $context,
$magicWords );
+ }
+
+ /**
+ * Adds magic word constant(s) for use by jQueryMsg
+ *
+ * @param array $magicWords Associative array mapping all-caps magic
+ * words to string values
+ */
+ protected function doResourceLoaderJqueryMsgModuleMagicWords(
ResourceLoaderContext $context, array &$magicWords ) {
+ $lang = Language::factory( $context->getLanguage() );
+ $magicWords['WBREPONAME'] = $this->getRepoName( $lang );
+ }
+
+}
diff --git a/extensions/Wikibase/client/includes/Modules/SiteModule.php
b/extensions/Wikibase/client/includes/Modules/SiteModule.php
index 2973094..72cdeb6 100644
--- a/extensions/Wikibase/client/includes/Modules/SiteModule.php
+++ b/extensions/Wikibase/client/includes/Modules/SiteModule.php
@@ -4,9 +4,11 @@
use FormatJson;
use MediaWikiSite;
+use ResourceLoader;
use ResourceLoaderContext;
use ResourceLoaderModule;
use Wikibase\Client\WikibaseClient;
+use Xml;
/**
* Provides information about the current (client) site
@@ -42,7 +44,11 @@
);
}
- return 'mediaWiki.config.set( "wbCurrentSite", ' .
FormatJson::encode( $currentSite ) . ' );';
+ return Xml::encodeJsCall(
+ 'mw.config.set',
+ [ 'wbCurrentSite', $currentSite ],
+ ResourceLoader::inDebugMode()
+ );
}
}
diff --git a/extensions/Wikibase/client/includes/WikibaseClient.php
b/extensions/Wikibase/client/includes/WikibaseClient.php
index 3bb382a..c6aed2d 100644
--- a/extensions/Wikibase/client/includes/WikibaseClient.php
+++ b/extensions/Wikibase/client/includes/WikibaseClient.php
@@ -413,6 +413,13 @@
}
/**
+ * @return array[]
+ */
+ private static function getDefaultEntityTypes() {
+ return require __DIR__ .
'/../../lib/WikibaseLib.entitytypes.php';
+ }
+
+ /**
* @return TermBuffer
*/
public function getTermBuffer() {
@@ -640,17 +647,17 @@
* @return WikibaseClient
*/
private static function newInstance() {
- global $wgWBClientSettings, $wgWBClientDataTypes,
$wgWBClientEntityTypes;
+ global $wgWBClientSettings, $wgWBClientDataTypes;
- if ( !is_array( $wgWBClientDataTypes ) || !is_array(
$wgWBClientEntityTypes ) ) {
- throw new MWException( '$wgWBClientDataTypes and
$wgWBClientEntityTypes must be arrays. '
+ if ( !is_array( $wgWBClientDataTypes ) ) {
+ throw new MWException( '$wgWBClientDataTypes must be
array. '
. 'Maybe you forgot to require
WikibaseClient.php in your LocalSettings.php?' );
}
$dataTypeDefinitions = $wgWBClientDataTypes;
Hooks::run( 'WikibaseClientDataTypes', array(
&$dataTypeDefinitions ) );
- $entityTypeDefinitions = $wgWBClientEntityTypes;
+ $entityTypeDefinitions = self::getDefaultEntityTypes();
Hooks::run( 'WikibaseClientEntityTypes', array(
&$entityTypeDefinitions ) );
$settings = new SettingsArray( $wgWBClientSettings );
diff --git
a/extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesListSpecialPageHookHandlersTest.php
b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesListSpecialPageHookHandlersTest.php
index 2a3dfe4..aa51402 100644
---
a/extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesListSpecialPageHookHandlersTest.php
+++
b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/ChangesListSpecialPageHookHandlersTest.php
@@ -2,10 +2,12 @@
namespace Wikibase\Client\Tests\Hooks;
+use ExtensionRegistry;
use FauxRequest;
use FormOptions;
use IDatabase;
use SpecialPageFactory;
+use TestingAccessWrapper;
use User;
use Wikibase\Client\Hooks\ChangesListSpecialPageHookHandlers;
use Wikimedia\Rdbms\LoadBalancer;
@@ -18,35 +20,90 @@
*
* @license GPL-2.0+
* @author Katie Filbert < [email protected] >
+ * @author Matthew Flaschen < [email protected] >
*/
class ChangesListSpecialPageHookHandlersTest extends
\PHPUnit_Framework_TestCase {
+ protected $extensionRegistry;
- public function testOnChangesListSpecialPageFilters() {
+ protected $oldExtensionRegistryLoaded;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->extensionRegistry = TestingAccessWrapper::newFromObject(
+ ExtensionRegistry::getInstance()
+ );
+
+ $this->oldExtensionRegistryLoaded =
$this->extensionRegistry->loaded;
+
+ // Forget about the other extensions. Although ORES may be
loaded,
+ // since this is only unit-testing *our* listener, ORES's
listener
+ // hasn't run, so for all intents and purposes it's not loaded.
+ $this->extensionRegistry->loaded = [ 'Wikibase' ];
+ }
+
+ public function tearDown() {
+ parent::tearDown();
+
+ $this->extensionRegistry->loaded =
$this->oldExtensionRegistryLoaded;
+ }
+
+ public function testAddFilter() {
$user = $this->getUser(
array(
- array( 'usernewrc' => 0 )
+ array( 'usenewrc' => 0 )
)
);
/** @var \ChangesListSpecialPage $specialPage */
$specialPage = SpecialPageFactory::getPage( 'Recentchanges' );
+
+ $wrappedSpecialPage = TestingAccessWrapper::newFromObject(
+ $specialPage
+ );
+
+ $hookHandler = TestingAccessWrapper::newFromObject( new
ChangesListSpecialPageHookHandlers(
+ $this->getRequest( array() ),
+ $this->getUser( [] ),
+ $this->getLoadBalancer(),
+ 'Recentchanges',
+ true
+ ) );
+
$specialPage->getContext()->setUser( $user );
- $filters = array();
-
-
ChangesListSpecialPageHookHandlers::onChangesListSpecialPageFilters(
- $specialPage,
- $filters
+ // Register built-in filters, since the Wikidata one uses its
group
+ $wrappedSpecialPage->registerFiltersFromDefinitions(
+ $wrappedSpecialPage->filterGroupDefinitions
);
- $expected = array(
- 'hideWikibase' => array(
- 'msg' => 'wikibase-rc-hide-wikidata',
- 'default' => true
- )
+ $hookHandler->addFilter(
+ $specialPage
);
- $this->assertSame( $expected, $filters );
+ $changeType = $specialPage->getFilterGroup( 'changeType' );
+ $filter = $changeType->getFilter( 'hideWikibase' );
+
+ // I could do all of getJsData(), but that would make it
brittle to
+ // unrelated changes.
+ $expectedFields = [
+ 'label' => 'wikibase-rcfilters-hide-wikibase-label',
+ 'description' =>
'wikibase-rcfilters-hide-wikibase-description',
+ 'showHide' => 'wikibase-rc-hide-wikidata',
+ 'default' => true,
+ ];
+
+ $actualFields = [
+ 'label' => $filter->getLabel(),
+ 'description' => $filter->getDescription(),
+ 'showHide' => $filter->getShowHide(),
+ 'default' => $filter->getDefault(),
+ ];
+
+ $this->assertSame(
+ $expectedFields,
+ $actualFields
+ );
}
public function testOnChangesListSpecialPageQuery() {
@@ -73,86 +130,138 @@
}
/**
- * @dataProvider addWikibaseConditionsProvider
+ * @dataProvider addWikibaseConditionsIfFilterUnavailableProvider
*/
- public function testAddWikibaseConditions(
- array $expected,
- array $userOptions,
- $optionDefault
- ) {
+ public function testAddWikibaseConditionsIfFilterUnavailable(
$expectedAddConditionsCalls, $hasWikibaseChangesEnabled ) {
+ $hookHandlerMock = $this->getMockBuilder(
ChangesListSpecialPageHookHandlers::class )
+ ->setConstructorArgs(
+ [
+ $this->getRequest( array() ),
+ $this->getUser( [] ),
+ $this->getLoadBalancer(),
+ 'Recentchanges',
+ true
+ ]
+ )
+ ->setMethods( [
+ 'hasWikibaseChangesEnabled',
+ 'addWikibaseConditions'
+ ] )
+ ->getMock();
+
+ $hookHandlerMock->method( 'hasWikibaseChangesEnabled' )->will(
+ $this->returnValue( $hasWikibaseChangesEnabled )
+ );
+
+ $hookHandlerMock->expects( $this->exactly(
$expectedAddConditionsCalls ) )
+ ->method( 'addWikibaseConditions' )
+ ->with(
+ $this->isInstanceOf( IDatabase::class ),
+ $this->equalTo( [] )
+ );
+
+ $conds = [];
+
+ $hookHandlerMock = TestingAccessWrapper::newFromObject(
$hookHandlerMock );
+ $hookHandlerMock->__call(
'addWikibaseConditionsIfFilterUnavailable', [ &$conds ] );
+ }
+
+ public function addWikibaseConditionsIfFilterUnavailableProvider() {
+ return [
+ [
+ 0,
+ true
+ ],
+
+ [
+ 1,
+ false
+ ],
+ ];
+ }
+
+ /**
+ * @dataProvider getOptionNameProvider
+ */
+ public function testGetOptionName( $expected, $pageName ) {
+ $hookHandler = TestingAccessWrapper::newFromObject( new
ChangesListSpecialPageHookHandlers(
+ $this->getRequest( array() ),
+ $this->getUser( [] ),
+ $this->getLoadBalancer(),
+ $pageName,
+ true
+ ) );
+
+ $this->assertSame(
+ $expected,
+ $hookHandler->getOptionName()
+ );
+ }
+
+ public function getOptionNameProvider() {
+ return [
+ [
+ 'wlshowwikibase',
+ 'Watchlist'
+ ],
+
+ [
+ 'rcshowwikidata',
+ 'Recentchanges',
+ ],
+
+ [
+ 'rcshowwikidata',
+ 'Recentchangeslinked'
+ ],
+ ];
+ }
+
+ public function testAddWikibaseConditions() {
$hookHandler = new ChangesListSpecialPageHookHandlers(
$this->getRequest( array() ),
- $this->getUser( $userOptions ),
+ $this->getUser( [] ),
$this->getLoadBalancer(),
'Watchlist',
true
);
- $opts = new FormOptions();
- $opts->add( 'hideWikibase', $optionDefault );
-
$conds = array();
- $hookHandler->addWikibaseConditions( $conds, $opts );
+ $hookHandler->addWikibaseConditions(
+ wfGetDB( DB_REPLICA ),
+ $conds
+ );
+
+ $expected = [ "rc_source != 'wb'" ];
$this->assertEquals( $expected, $conds );
}
- public function addWikibaseConditionsProvider() {
- return array(
- array(
- array(),
- array( 'usenewrc' => 0, 'wlshowwikibase' => 1 ),
- false
- ),
- array(
- array( "rc_source != 'wb'" ),
- array( 'usenewrc' => 0 ),
- true
- )
- );
- }
-
- public function testAddWikibaseConditions_wikibaseChangesDisabled() {
- $hookHandler = new ChangesListSpecialPageHookHandlers(
- $this->getRequest( array() ),
- $this->getUser( array( 'usenewrc' => 1 ) ),
- $this->getLoadBalancer(),
- 'Watchlist',
- true
- );
-
- $opts = new FormOptions();
-
- $conds = array();
- $hookHandler->addWikibaseConditions( $conds, $opts );
-
- $this->assertEquals( array( "rc_source != 'wb'" ), $conds );
- }
-
/**
- * @dataProvider filterNotAddedWhenUsingEnhancedChangesProvider
+ * @dataProvider
hasWikibaseChangesEnabledWhenUsingEnhancedChangesProvider
*/
- public function testFilterNotAddedWhenUsingEnhancedChanges(
+ public function testHasWikibaseChangesEnabledWhenUsingEnhancedChanges(
array $requestParams,
array $userOptions,
$pageName,
$message
) {
- $hookHandler = new ChangesListSpecialPageHookHandlers(
+ $hookHandler = TestingAccessWrapper::newFromObject( new
ChangesListSpecialPageHookHandlers(
$this->getRequest( $requestParams ),
$this->getUser( $userOptions ),
$this->getLoadBalancer(),
$pageName,
true
+ ) );
+
+ $this->assertSame(
+ false,
+ $hookHandler->hasWikibaseChangesEnabled(),
+ $message
);
-
- $filters = array();
- $hookHandler->addFilterIfEnabled( $filters );
-
- $this->assertSame( array(), $filters, $message );
}
- public function filterNotAddedWhenUsingEnhancedChangesProvider() {
+ public function
hasWikibaseChangesEnabledWhenUsingEnhancedChangesProvider() {
return array(
array(
array(),
@@ -194,37 +303,30 @@
}
/**
- * @dataProvider filter_withoutShowWikibaseEditsByDefaultPreference
+ * @dataProvider
hasWikibaseChangesEnabled_withoutShowWikibaseEditsByDefaultPreferenceProvider
*/
- public function testFilter_withoutShowWikibaseEditsByDefaultPreference(
+ public function
testHasWikibaseChangesEnabled_withoutShowWikibaseEditsByDefaultPreference(
array $requestParams,
array $userOptions,
$expectedFilterName,
$expectedToggleDefault,
$specialPageName
) {
- $hookHandler = new ChangesListSpecialPageHookHandlers(
+ $hookHandler = TestingAccessWrapper::newFromObject( new
ChangesListSpecialPageHookHandlers(
$this->getRequest( $requestParams ),
$this->getUser( $userOptions ),
$this->getLoadBalancer(),
$specialPageName,
true
+ ) );
+
+ $this->assertSame(
+ true,
+ $hookHandler->hasWikibaseChangesEnabled()
);
-
- $filters = array();
- $hookHandler->addFilterIfEnabled( $filters );
-
- $expected = array(
- $expectedFilterName => array(
- 'msg' => 'wikibase-rc-hide-wikidata',
- 'default' => $expectedToggleDefault
- )
- );
-
- $this->assertSame( $expected, $filters );
}
- public function filter_withoutShowWikibaseEditsByDefaultPreference() {
+ public function
hasWikibaseChangesEnabled_withoutShowWikibaseEditsByDefaultPreferenceProvider()
{
return array(
array(
array(),
@@ -272,37 +374,30 @@
}
/**
- * @dataProvider filter_withShowWikibaseEditsByDefaultPreference
+ * @dataProvider
hasWikibaseChangesEnabled_withShowWikibaseEditsByDefaultPreferenceProvider
*/
- public function testFilter_withShowWikibaseEditsByDefaultPreference(
+ public function
testHasWikibaseChangesEnabled_withShowWikibaseEditsByDefaultPreference(
array $requestParams,
array $userOptions,
$expectedFilterName,
$expectedToggleDefault,
$specialPageName
) {
- $hookHandler = new ChangesListSpecialPageHookHandlers(
+ $hookHandler = TestingAccessWrapper::newFromObject( new
ChangesListSpecialPageHookHandlers(
$this->getRequest( $requestParams ),
$this->getUser( $userOptions ),
$this->getLoadBalancer(),
$specialPageName,
true
+ ) );
+
+ $this->assertSame(
+ true,
+ $hookHandler->hasWikibaseChangesEnabled()
);
-
- $filters = array();
- $hookHandler->addFilterIfEnabled( $filters );
-
- $expected = array(
- $expectedFilterName => array(
- 'msg' => 'wikibase-rc-hide-wikidata',
- 'default' => $expectedToggleDefault
- )
- );
-
- $this->assertSame( $expected, $filters );
}
- public function filter_withShowWikibaseEditsByDefaultPreference() {
+ public function
hasWikibaseChangesEnabled_withShowWikibaseEditsByDefaultPreferenceProvider() {
return array(
array(
array(),
@@ -343,28 +438,28 @@
}
/**
- * @dataProvider
filterNotAddedWhenExternalRecentChangesDisabledProvider() {
+ * @dataProvider
hasWikibaseChangesEnabledWhenExternalRecentChangesDisabledProvider() {
*/
- public function testFilterNotAddedWhenExternalRecentChangesDisabled(
$specialPageName ) {
- $hookHandler = new ChangesListSpecialPageHookHandlers(
+ public function
testHasWikibaseChangesEnabledWhenExternalRecentChangesDisabled(
$specialPageName ) {
+ $hookHandler = TestingAccessWrapper::newFromObject( new
ChangesListSpecialPageHookHandlers(
$this->getRequest( array() ),
$this->getUser( array( 'usenewrc' => 0 ) ),
$this->getLoadBalancer(),
$specialPageName,
- false
+ /* $showExternalChanges= */ false
+ ) );
+
+ $this->assertSame(
+ false,
+ $hookHandler->hasWikibaseChangesEnabled()
);
-
- $filters = array();
- $hookHandler->addFilterIfEnabled( $filters );
-
- $this->assertSame( array(), $filters );
}
- public function
filterNotAddedWhenExternalRecentChangesDisabledProvider() {
+ public function
hasWikibaseChangesEnabledWhenExternalRecentChangesDisabledProvider() {
return array(
array( 'Watchlist' ),
- array( 'RecentChanges' ),
- array( 'RecentChangesLinked' )
+ array( 'Recentchanges' ),
+ array( 'Recentchangeslinked' )
);
}
diff --git
a/extensions/Wikibase/client/tests/phpunit/includes/Hooks/MagicWordHookHandlersTest.php
b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/MagicWordHookHandlersTest.php
new file mode 100644
index 0000000..7436e53
--- /dev/null
+++
b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/MagicWordHookHandlersTest.php
@@ -0,0 +1,105 @@
+<?php
+
+namespace Wikibase\Client\Tests\Hooks;
+
+use Language;
+use Wikibase\Client\Hooks\MagicWordHookHandlers;
+use MediaWiki\MediaWikiServices;
+use MediaWikiTestCase;
+use Parser;
+use Wikibase\SettingsArray;
+use Title;
+use TestingAccessWrapper;
+use Wikibase\Client\WikibaseClient;
+
+/**
+ * @covers Wikibase\Client\Hooks\MagicWordHookHandlers
+ *
+ * @group WikibaseClient
+ * @group Wikibase
+ *
+ * @license GPL-2.0+
+ * @author Matthew Flaschen < [email protected] >
+ */
+class MagicWordHookHandlersTest extends MediaWikiTestCase {
+
+ /**
+ * @dataProvider provideGetRepoName
+ */
+ public function testGetRepoName( $expected, $langCode, $siteName ) {
+ $settings = new SettingsArray();
+ $settings->setSetting( 'repoSiteName', $siteName );
+
+ $handler = TestingAccessWrapper::newFromObject(
+ new MagicWordHookHandlers( $settings )
+ );
+
+ $actual = $handler->getRepoName(
+ Language::factory( $langCode )
+ );
+
+ $this->assertEquals(
+ $expected,
+ $actual
+ );
+ }
+
+ // I looked at mocking the messages, but MessageCache
+ // is not in ServiceWiring (yet), so these are real messsages,
+ // except non-existent-message to test that feature.
+
+ public function provideGetRepoName() {
+ return [
+ [
+ 'Client for the Wikibase extension',
+ 'en',
+ 'wikibase-client-desc',
+ ],
+
+ [
+ 'Cliente para la extensión Wikibase',
+ 'es',
+ 'wikibase-client-desc',
+ ],
+
+ [
+ 'non-existent-message',
+ 'en',
+ 'non-existent-message',
+ ],
+ ];
+ }
+
+ // TODO: Test noexternallanglinks
+
+ public function testDoParserGetVariableValueSwitch() {
+ $parser = $this->getMockBuilder( Parser::class )
+ ->getMock();
+
+ // Configure the stub.
+ $parser->method( 'getTargetLanguage' )
+ ->willReturn( Language::factory( 'en' ) );
+
+ $ret = null;
+
+ $settings = new SettingsArray();
+ $settings->setSetting( 'repoSiteName', 'wikibase-client-desc' );
+
+ $handler = TestingAccessWrapper::newFromObject(
+ new MagicWordHookHandlers( $settings )
+ );
+
+ $cache = [];
+ $word = 'wbreponame';
+ call_user_func_array(
+ [ $handler, 'doParserGetVariableValueSwitch' ],
+ [ &$parser, &$cache, &$word, &$ret ]
+ );
+
+ $this->assertEquals(
+ 'Client for the Wikibase extension',
+ $ret
+ );
+ }
+
+}
diff --git
a/extensions/Wikibase/client/tests/phpunit/includes/Modules/SiteModuleTest.php
b/extensions/Wikibase/client/tests/phpunit/includes/Modules/SiteModuleTest.php
index 4567053..1353eea 100644
---
a/extensions/Wikibase/client/tests/phpunit/includes/Modules/SiteModuleTest.php
+++
b/extensions/Wikibase/client/tests/phpunit/includes/Modules/SiteModuleTest.php
@@ -29,8 +29,8 @@
public function testGetScript() {
$module = new SiteModule();
$script = $module->getScript( $this->getContext() );
- $this->assertStringStartsWith( 'mediaWiki.config.set(
"wbCurrentSite", ', $script );
- $this->assertStringEndsWith( ' );', $script );
+ $this->assertStringStartsWith(
'mw.config.set("wbCurrentSite",', $script );
+ $this->assertStringEndsWith( ');', $script );
}
}
diff --git a/extensions/Wikibase/lib/WikibaseLib.entitytypes.php
b/extensions/Wikibase/lib/WikibaseLib.entitytypes.php
index 623549a..62f2902 100644
--- a/extensions/Wikibase/lib/WikibaseLib.entitytypes.php
+++ b/extensions/Wikibase/lib/WikibaseLib.entitytypes.php
@@ -1,9 +1,7 @@
<?php
/**
- * Definition of entity types for use with Wikibase.
- * The array returned by the code below is supposed to be merged into
$wgWBRepoEntityTypes
- * resp. $wgWBClientEntityTypes.
+ * Definition of base entity types for use with Wikibase.
*
* @note: When adding entity types here, also add the corresponding
information to
* repo/WikibaseRepo.entitytypes.php
diff --git a/extensions/Wikibase/lib/i18n/gl.json
b/extensions/Wikibase/lib/i18n/gl.json
index b061923..16cb328 100644
--- a/extensions/Wikibase/lib/i18n/gl.json
+++ b/extensions/Wikibase/lib/i18n/gl.json
@@ -76,6 +76,7 @@
"datatypes-type-wikibase-item": "Elemento",
"datatypes-type-wikibase-property": "Propiedade",
"datatypes-type-commonsMedia": "Ficheiro multimedia de Commons",
+ "datatypes-type-geo-shape": "Forma xeográfica",
"datatypes-type-external-id": "Identificador externo",
"version-wikibase": "Wikibase",
"wikibase-time-precision-Gannum": "$1 mil millóns de anos EC",
diff --git a/extensions/Wikibase/repo/Wikibase.php
b/extensions/Wikibase/repo/Wikibase.php
index 322d141..548aeef 100644
--- a/extensions/Wikibase/repo/Wikibase.php
+++ b/extensions/Wikibase/repo/Wikibase.php
@@ -76,7 +76,7 @@
global $wgExtensionMessagesFiles, $wgMessagesDirs;
global $wgAPIModules, $wgAPIListModules, $wgSpecialPages, $wgHooks;
global $wgWBRepoSettings, $wgResourceModules, $wgValueParsers,
$wgJobClasses;
- global $wgWBRepoDataTypes, $wgWBRepoEntityTypes;
+ global $wgWBRepoDataTypes;
$wgExtensionCredits['wikibase'][] = array(
'path' => __DIR__,
@@ -104,17 +104,6 @@
// constants
define( 'CONTENT_MODEL_WIKIBASE_ITEM', "wikibase-item" );
define( 'CONTENT_MODEL_WIKIBASE_PROPERTY', "wikibase-property" );
-
- // Registry and definition of entity types
- $wgWBRepoEntityTypes = require __DIR__ .
'/../lib/WikibaseLib.entitytypes.php';
-
- $repoEntityTypes = require __DIR__ . '/WikibaseRepo.entitytypes.php';
-
- // merge WikibaseRepo.entitytypes.php into $wgWBRepoEntityTypes
- foreach ( $repoEntityTypes as $type => $repoDef ) {
- $baseDef = isset( $wgWBRepoEntityTypes[$type] ) ?
$wgWBRepoEntityTypes[$type] : array();
- $wgWBRepoEntityTypes[$type] = array_merge( $baseDef, $repoDef );
- }
// rights
// names should be according to other naming scheme
diff --git a/extensions/Wikibase/repo/i18n/gl.json
b/extensions/Wikibase/repo/i18n/gl.json
index 8ed1869..6c90fcf 100644
--- a/extensions/Wikibase/repo/i18n/gl.json
+++ b/extensions/Wikibase/repo/i18n/gl.json
@@ -60,6 +60,7 @@
"wikibase-diffview-description": "descrición",
"wikibase-diffview-link": "ligazóns",
"wikibase-diffview-link-name": "nome",
+ "wikibase-diffview-link-badges": "identificacións",
"wikibase-sitelink-site-edit-placeholder": "wiki",
"wikibase-sitelink-page-edit-placeholder": "páxina",
"wikibase-alias-edit-placeholder": "escriba un pseudónimo",
@@ -124,8 +125,14 @@
"wikibase-validator-label-with-description-conflict": "O elemento $3 xa
ten a etiqueta \"$1\" asociada ao código de lingua $2, co mesmo texto de
descrición.",
"wikibase-validator-label-no-entityid": "A etiqueta non pode ser un
identificador de entidade válido.",
"wikibase-validator-illegal-file-chars": "Os nomes de ficheiro non
poden levar caracteres como comas ou barras inclinadas. Por favor, engada só o
nome despois de \"File:\".",
+ "wikibase-validator-illegal-geo-shape-title": "O valor debe comezar con
\"Data:\" e rematar con \".map\". Adicionalmente o título non debería conter
caracteres como coma, # ou a barra vertical(|).",
"wikibase-validator-no-such-media": "O ficheiro \"$1\" non existe en
[https://commons.wikimedia.org/ Wikimedia Commons].",
+ "wikibase-validator-no-such-sitelink": "Non se puido atopar a ligazón
de sitio a \"$1\" ó tentar editar identificacións.",
+ "wikibase-validator-page-not-exists": "A páxina \"$1\" non existe.",
"wikibase-validator-not-a-language": "\"$1\" non é un código de lingua
coñecido.",
+ "wikibase-item-reference-edit-placeholder": "Introduza o identificador
do elemento, por exemplo, Q10",
+ "wikibase-item-reference-edit-invalid-format": "O identificador de
elemento introducido ten un formato non válido",
+ "wikibase-item-reference-edit-nonexistent-item": "O elemento con este
identificador non existe",
"wikibase-wikibaserepopage-not-itemid": "\"$1\" non é un identificador
de elemento válido.",
"wikibase-wikibaserepopage-invalid-langcode": "Descoñécese o código de
lingua \"$1\". Utilice un código de lingua coñecido para o sistema, como
\"gl\".",
"wikibase-wikibaserepopage-invalid-id": "O sistema descoñece o ID
\"$1\". Utilice un identificador de entidade válido.",
@@ -166,6 +173,7 @@
"wikibase-newproperty-fieldset": "Crear unha nova propiedade",
"wikibase-newproperty-datatype": "Tipo de datos:",
"wikibase-newproperty-invalid-datatype": "O tipo de datos especificado
non é válido.",
+ "wikibase-newproperty-insufficient-data": "Necesita indicar polo menos
a etiqueta, a descrición ou os alias.",
"wikibase-description-helppage": "Help:Descricións",
"wikibase-label-helppage": "Help:Etiquetas",
"special-newitem": "Crear un novo elemento",
@@ -175,6 +183,7 @@
"wikibase-newitem-page": "Nome da primeira páxina ligada",
"wikibase-newitem-no-external-page": "A páxina \"$2\" non puido
atoparse en \"$1\".",
"wikibase-newitem-not-recognized-siteid": "Non se recoñeceu o
identificador de sitio proporcionado.",
+ "wikibase-newitem-insufficient-data": "Necesita indicar polo menos a
etiqueta, a descrición ou os alias.",
"wikibase-newentity-language": "Lingua:",
"wikibase-newentity-label": "Etiqueta:",
"wikibase-newentity-description": "Descrición:",
@@ -222,6 +231,7 @@
"wikibase-mergeitems-toid": "O identificador co que fusionar",
"wikibase-mergeitems-submit": "Fusionar os elementos",
"wikibase-mergeitems-success": "$1 fusionouse en $3 e redirixida.",
+ "wikibase-itemmerge-redirect": "Estos elementos poderían estar xa
fusionados.",
"wikibase-itemmerge-missing-parameter": "Entrada incompleta.",
"wikibase-itemmerge-not-item": "A entidade especificada non é un
elemento.",
"wikibase-itemmerge-failed-save": "Erro ó gardar o elemento.",
@@ -283,6 +293,10 @@
"wikibase-entitydata-storage-error": "Erro ó cargar a entidade $1.",
"wikibase-entitydata-title": "Datos da entidade",
"wikibase-entitydata-text": "Esta páxina proporciona unha interface de
datos ligados a valores de entidade. Achegue o identificador da entidade no
enderezo URL, utilizando a sintaxe das subpáxinas.\n*A aplicación de
negociación de contido baséase na cabeceira de aceptación do seu cliente. Isto
significa que o dato da entidade será proporcionado no formato preferido polo
seu cliente. Para un navegador web, isto será en HTML, facendo que o seu
navegador sexa redireccionado a unha páxina de entidade normal.\n* Vostede pode
solicitar explícitamente un formato de dato específico engadindo a extensión de
ficheiro axeitada ó identificador de entidade: Q23.json devolverá os datos no
formato JSON, Q23.ttl devolverá os datos en formato RDF/Turtle, e así con
todos.",
+ "special-entitypage": "Páxina de entidade",
+ "wikibase-entitypage-title": "Páxina de entidade",
+ "wikibase-entitypage-text": "Esta páxina redirixe á páxina de entidade
do repositorio á que pertence. Por favor, proporcione o identificador de
entidade na URL, usando a sintaxe dunha subpáxina.",
+ "wikibase-entitypage-bad-id": "Identificador non válido: $1.",
"special-redirectentity": "Redirixir unha entidade",
"wikibase-redirectentity-success": "$1 foi redirixida a $2.",
"wikibase-redirectentity-fromid": "O identificador desde o que
redirixir",
@@ -315,6 +329,8 @@
"wikibase-listdatatypes-commonsmedia-body": "Ligazón cara a ficheiros
da Wikimedia Commons. Cando se insire un valor, realizarase unha procura no
espazo de nomes \"Ficheiro\" de Commons para buscar ficheiros coincidentes.",
"wikibase-listdatatypes-globe-coordinate-head": "Coordenadas do globo",
"wikibase-listdatatypes-globe-coordinate-body": "Datos literais para
unha posición xeográfica dada como un par latitude-lonxitude en GMS ou graos
decimais do corpo estelar especificado. Por defecto, é \"Terra\" e logo
\"WGS84\". Engade unha resolución e un rango.\n* latitude – primeira parte
implícita (float, dms, dm, dd) da cadea de coordenadas; a dirección achégase
mediante o signo en prefixo ou o sufixo N/S\n* longitude – segunda parte
implícita (float, dms, dm, dd) da cadea de coordenadas; a dirección achégase
mediante o signo en prefixo ou o sufixo E/W\n* globe – valor de datos explícito
(?), dado como un corpo estelar; por defecto a Terra
\"http://www.wikidata.org/entity/Q2\"\n* precision - precisión numérica das
coordenadas",
+ "wikibase-listdatatypes-geo-shape-head": "Forma xeográfica",
+ "wikibase-listdatatypes-geo-shape-body": "Ligazón ós datos de mapa
xeográfico almacenados en Wikimedia Commons (ou outra wiki configurada).
Consulte \"https://www.mediawiki.org/wiki/Help:Map_Data\" para atopar máis
documentación sobre datos de mapas.",
"wikibase-listdatatypes-quantity-head": "Cantidade",
"wikibase-listdatatypes-quantity-body": "Campo de datos literal para
unha cantidade relacionada con algún tipo de unidade ben definida. A unidade
real vai nos valores de datos introducidos.\n* amount – parte implícita da
cadea de texto (o mapeamento do prefixo da unidade non está claro)\n* unit –
parte implícita da cadea de texto con valor por defecto \"1\" (o mapeamento ao
corpo estandarizante non está claro)\n* upperbound - límite superior da
cantidade \n* lowerbound - límite inferior da cantidade",
"wikibase-listdatatypes-monolingualtext-head": "Texto monolingüe",
@@ -403,21 +419,21 @@
"apihelp-wbgetclaims-param-rank": "Filtro opcional para devolver só
afirmacións que teñen o nivel indicado",
"apihelp-wbgetclaims-param-props": "Algunhas partes da afirmación
devólvense de forma opcional. Este parámetro controla que partes se devolven.",
"apihelp-wbgetclaims-example-1": "Obter afirmacións para o elemento con
identificador <samp>Q42</samp>",
- "apihelp-wbgetclaims-example-2": "Obter as afirmacións para o obxecto
con identicador Q42 e propiedade con identificador P31",
- "apihelp-wbgetclaims-example-3": "Obter afirmacións para o elemento con
identificador Q42 que están clasificadas como normais",
- "apihelp-wbgetclaims-example-4": "Obter afirmacións con GUID de
Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F",
+ "apihelp-wbgetclaims-example-2": "Obter as afirmacións para o obxecto
con identicador <samp>Q42</samp> e propiedade con identificador
<samp>P31</samp>",
+ "apihelp-wbgetclaims-example-3": "Obter afirmacións para o elemento con
identificador <samp>Q42</samp> que están clasificadas como normais",
+ "apihelp-wbgetclaims-example-4": "Obter afirmacións con GUID de
<var>Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F</var>",
"apihelp-wbgetentities-description": "Obtén a información para
múltiples entidades de Wikibase",
"apihelp-wbgetentities-param-ids": "Identificadores das entidades das
que obter os datos",
- "apihelp-wbgetentities-param-sites": "Identificador para o sitio no que
reside a páxina correspondente\nUsar xunto con 'title' (título), pero indicar
só un sitio para varios títulos ou varios sitios para un título.",
- "apihelp-wbgetentities-param-titles": "Título da páxina
correspondente\nUsar xunto con 'sites' (sitios), pero só indicar un sitio para
varios títulos ou varios sitios para un título.",
+ "apihelp-wbgetentities-param-sites": "Identificador para o sitio no que
reside a páxina correspondente\nUsar xunto con <code>title</code> (título),
pero indicar só un sitio para varios títulos ou varios sitios para un título.",
+ "apihelp-wbgetentities-param-titles": "Título da páxina
correspondente\nUsar xunto con <code>sites</code> (sitios), pero só indicar un
sitio para varios títulos ou varios sitios para un título.",
"apihelp-wbgetentities-param-redirects": "Se as redireccións deben ser
resoltas.\nSe se fixa a \"non\", as redireccións serán tratadas como entidades
borradas.",
"apihelp-wbgetentities-param-props": "Nomes das propiedades a obter de
cada entidade.\nFiltrarase máis polos idiomas indicados.",
"apihelp-wbgetentities-param-languages": "Por defecto os valores
internacionalizados devólvense en todos os idiomas dispoñibles.\nEste parámetro
permite filtrar isto para deixar só un ou máis idiomas indicando un ou máis
códigos de idioma.",
"apihelp-wbgetentities-param-languagefallback": "Aplicar a redución de
idiomas ós idiomas definidos no parámetro <var>languages</var>, co contexto
actual da chamada API.",
"apihelp-wbgetentities-param-normalize": "Intentar normalizar o título
da páxina contra o sitio do cliente.\nIsto só funciona se só se indicaron
exactamente un sitio e unha páxina.",
"apihelp-wbgetentities-param-sitefilter": "Filtrar ligazóns de sitios
en entidades a aquellos con estos identificadores de sitio.",
- "apihelp-wbgetentities-example-1": "Obter entidades con identificador
Q42 con todos os atributos dispoñibles en todos os idiomas dispoñibles",
- "apihelp-wbgetentities-example-2": "Obter entidades con identificador
P17 con todos os atributos dispoñibles en todos os idiomas dispoñibles",
+ "apihelp-wbgetentities-example-1": "Obter entidades con identificador
<samp>Q42</samp> con todos os atributos dispoñibles en todos os idiomas
dispoñibles",
+ "apihelp-wbgetentities-example-2": "Obter entidades con identificador
<samp>P17</samp> con todos os atributos dispoñibles en todos os idiomas
dispoñibles",
"apihelp-wbgetentities-example-3": "Obter entidades con identificadores
Q42 e P17 con todos os atributos dispoñibles en todos os idiomas dispoñibles",
"apihelp-wbgetentities-example-4": "Obter entidades con identificador
Q42 con todos os atributos dispoñibles en inglés",
"apihelp-wbgetentities-example-5": "Obter entidades con identificador
Q42 con todos os atributos dispoñibles en calquera redución de idiomas posible
para o idioma ii",
diff --git a/extensions/Wikibase/repo/i18n/pl.json
b/extensions/Wikibase/repo/i18n/pl.json
index eea1144..99fcab6 100644
--- a/extensions/Wikibase/repo/i18n/pl.json
+++ b/extensions/Wikibase/repo/i18n/pl.json
@@ -16,7 +16,8 @@
"Darellur",
"Devwebtel",
"PiotrAntosz",
- "Woytecr"
+ "Woytecr",
+ "Pawel Niemczuk"
]
},
"wikibase-desc": "Repozytorium danych strukturalnych",
@@ -145,7 +146,7 @@
"wikibase-itembytitle-lookup-site": "Witryna:",
"wikibase-itembytitle-lookup-page": "Strona:",
"wikibase-itembytitle-submit": "Szukaj",
- "wikibase-itembytitle-error-site": "Użyj istniejącego identyfikator
projektu, np. „plwiki” dla polskojęzycznej Wikipedii.",
+ "wikibase-itembytitle-error-site": "Użyj istniejącego identyfikatora
projektu, np. „plwiki” dla polskojęzycznej Wikipedii.",
"wikibase-itembytitle-create": "Możesz także [$1 utworzyć element].",
"special-gotolinkedpage": "Przejście do linkującej strony",
"wikibase-gotolinkedpage-lookup-fieldset": "Przejdź do linkującej
strony zgodnie z podaną witryną i elementem",
diff --git a/extensions/Wikibase/repo/includes/Actions/EditEntityAction.php
b/extensions/Wikibase/repo/includes/Actions/EditEntityAction.php
index 4505844..ef9d402 100644
--- a/extensions/Wikibase/repo/includes/Actions/EditEntityAction.php
+++ b/extensions/Wikibase/repo/includes/Actions/EditEntityAction.php
@@ -26,7 +26,7 @@
use Wikibase\Repo\Diff\ClaimDiffer;
use Wikibase\Repo\Diff\ClaimDifferenceVisualizer;
use Wikibase\Repo\Diff\DifferencesSnakVisualizer;
-use Wikibase\Repo\Diff\EntityDiffVisualizer;
+use Wikibase\Repo\Diff\BasicEntityDiffVisualizer;
use Wikibase\Repo\WikibaseRepo;
/**
@@ -42,7 +42,7 @@
class EditEntityAction extends ViewEntityAction {
/**
- * @var EntityDiffVisualizer
+ * @var BasicEntityDiffVisualizer
*/
private $entityDiffVisualizer;
@@ -82,7 +82,7 @@
$snakDetailsFormatter = $formatterFactory->getSnakFormatter(
SnakFormatter::FORMAT_HTML_DIFF, $options );
$snakBreadCrumbFormatter = $formatterFactory->getSnakFormatter(
SnakFormatter::FORMAT_HTML, $options );
- $this->entityDiffVisualizer = new EntityDiffVisualizer(
+ $this->entityDiffVisualizer = new BasicEntityDiffVisualizer(
$this->getContext(),
new ClaimDiffer( new OrderedListDiffer( new
ComparableComparer() ) ),
new ClaimDifferenceVisualizer(
diff --git a/extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php
b/extensions/Wikibase/repo/includes/Diff/BasicEntityDiffVisualizer.php
similarity index 99%
rename from extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php
rename to extensions/Wikibase/repo/includes/Diff/BasicEntityDiffVisualizer.php
index 871d586..657ae40 100644
--- a/extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php
+++ b/extensions/Wikibase/repo/includes/Diff/BasicEntityDiffVisualizer.php
@@ -23,7 +23,7 @@
* @author Tobias Gritschacher < [email protected] >
* @author Daniel kinzler
*/
-class EntityDiffVisualizer {
+class BasicEntityDiffVisualizer {
/**
* @var IContextSource
diff --git a/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php
b/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php
index e2f3a57..5e14717 100644
--- a/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php
+++ b/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php
@@ -34,7 +34,7 @@
class EntityContentDiffView extends DifferenceEngine {
/**
- * @var EntityDiffVisualizer
+ * @var BasicEntityDiffVisualizer
*/
private $diffVisualizer;
@@ -94,7 +94,7 @@
$this->terseSnakFormatter =
$formatterFactory->getSnakFormatter( SnakFormatter::FORMAT_HTML, $options );
// @fixme inject!
- $this->diffVisualizer = new EntityDiffVisualizer(
+ $this->diffVisualizer = new BasicEntityDiffVisualizer(
$this->getContext(),
new ClaimDiffer( new OrderedListDiffer( new
ComparableComparer() ) ),
new ClaimDifferenceVisualizer(
diff --git a/extensions/Wikibase/repo/includes/WikibaseRepo.php
b/extensions/Wikibase/repo/includes/WikibaseRepo.php
index 0a4d922..cfa93e4 100644
--- a/extensions/Wikibase/repo/includes/WikibaseRepo.php
+++ b/extensions/Wikibase/repo/includes/WikibaseRepo.php
@@ -304,17 +304,17 @@
* @return self
*/
private static function newInstance() {
- global $wgWBRepoDataTypes, $wgWBRepoEntityTypes,
$wgWBRepoSettings;
+ global $wgWBRepoDataTypes, $wgWBRepoSettings;
- if ( !is_array( $wgWBRepoDataTypes ) || !is_array(
$wgWBRepoEntityTypes ) ) {
- throw new MWException( '$wgWBRepoDataTypes and
$wgWBRepoEntityTypes must be arrays. '
+ if ( !is_array( $wgWBRepoDataTypes ) ) {
+ throw new MWException( '$wgWBRepoDataTypes must be
array. '
. 'Maybe you forgot to require Wikibase.php in
your LocalSettings.php?' );
}
$dataTypeDefinitions = $wgWBRepoDataTypes;
Hooks::run( 'WikibaseRepoDataTypes', array(
&$dataTypeDefinitions ) );
- $entityTypeDefinitions = $wgWBRepoEntityTypes;
+ $entityTypeDefinitions = self::getDefaultEntityTypes();
Hooks::run( 'WikibaseRepoEntityTypes', array(
&$entityTypeDefinitions ) );
$settings = new SettingsArray( $wgWBRepoSettings );
@@ -574,6 +574,16 @@
}
/**
+ * @return array[]
+ */
+ private static function getDefaultEntityTypes() {
+ $baseEntityTypes = require __DIR__ .
'/../../lib/WikibaseLib.entitytypes.php';
+ $repoEntityTypes = require __DIR__ .
'/../WikibaseRepo.entitytypes.php';
+
+ return array_merge_recursive( $baseEntityTypes,
$repoEntityTypes );
+ }
+
+ /**
* @return ValueParserFactory
*/
public function getValueParserFactory() {
diff --git
a/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php
b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/BasicEntityDiffVisualizerTest.php
similarity index 93%
rename from
extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php
rename to
extensions/Wikibase/repo/tests/phpunit/includes/Diff/BasicEntityDiffVisualizerTest.php
index d401451..9be4087 100644
---
a/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php
+++
b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/BasicEntityDiffVisualizerTest.php
@@ -15,10 +15,10 @@
use Wikibase\Repo\Content\EntityContentDiff;
use Wikibase\Repo\Diff\ClaimDiffer;
use Wikibase\Repo\Diff\ClaimDifferenceVisualizer;
-use Wikibase\Repo\Diff\EntityDiffVisualizer;
+use Wikibase\Repo\Diff\BasicEntityDiffVisualizer;
/**
- * @covers Wikibase\Repo\Diff\EntityDiffVisualizer
+ * @covers Wikibase\Repo\Diff\BasicEntityDiffVisualizer
*
* @group Wikibase
*
@@ -26,7 +26,7 @@
* @author Daniel Kinzler
* @author Thiemo Mättig
*/
-class EntityDiffVisualizerTest extends MediaWikiTestCase {
+class BasicEntityDiffVisualizerTest extends MediaWikiTestCase {
public function testVisualizingEmptyDiff() {
$emptyDiff = new EntityContentDiff( new EntityDiff(), new
Diff() );
@@ -121,13 +121,13 @@
}
/**
- * @return EntityDiffVisualizer
+ * @return BasicEntityDiffVisualizer
*/
private function getVisualizer() {
$enwiki = new Site();
$enwiki->setGlobalId( 'enwiki' );
- return new EntityDiffVisualizer(
+ return new BasicEntityDiffVisualizer(
$this->getMockContext(),
$this->getMockClaimDiffer(),
$this->getMockClaimDiffVisualizer(),
diff --git a/vendor/composer/autoload_classmap.php
b/vendor/composer/autoload_classmap.php
index 177bd73..18c98cf 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -434,6 +434,7 @@
'Wikibase\\Client\\Hooks\\InfoActionHookHandler' => $baseDir .
'/extensions/Wikibase/client/includes/Hooks/InfoActionHookHandler.php',
'Wikibase\\Client\\Hooks\\InterwikiSortingHookHandlers' => $baseDir .
'/extensions/Wikibase/client/includes/Hooks/InterwikiSortingHookHandlers.php',
'Wikibase\\Client\\Hooks\\LanguageLinkBadgeDisplay' => $baseDir .
'/extensions/Wikibase/client/includes/Hooks/LanguageLinkBadgeDisplay.php',
+ 'Wikibase\\Client\\Hooks\\MagicWordHookHandlers' => $baseDir .
'/extensions/Wikibase/client/includes/Hooks/MagicWordHookHandlers.php',
'Wikibase\\Client\\Hooks\\MovePageNotice' => $baseDir .
'/extensions/Wikibase/client/includes/Hooks/MovePageNotice.php',
'Wikibase\\Client\\Hooks\\OtherProjectsSidebarGenerator' => $baseDir .
'/extensions/Wikibase/client/includes/Hooks/OtherProjectsSidebarGenerator.php',
'Wikibase\\Client\\Hooks\\OtherProjectsSidebarGeneratorFactory' =>
$baseDir .
'/extensions/Wikibase/client/includes/Hooks/OtherProjectsSidebarGeneratorFactory.php',
@@ -518,6 +519,7 @@
'Wikibase\\Client\\Tests\\Hooks\\InfoActionHookHandlerTest' => $baseDir .
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/InfoActionHookHandlerTest.php',
'Wikibase\\Client\\Tests\\Hooks\\InterwikiSortingHookHandlersTest' =>
$baseDir .
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/InterwikiSortingHookHandlersTest.php',
'Wikibase\\Client\\Tests\\Hooks\\LanguageLinkBadgeDisplayTest' => $baseDir
.
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/LanguageLinkBadgeDisplayTest.php',
+ 'Wikibase\\Client\\Tests\\Hooks\\MagicWordHookHandlersTest' => $baseDir .
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/MagicWordHookHandlersTest.php',
'Wikibase\\Client\\Tests\\Hooks\\MovePageNoticeTest' => $baseDir .
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/MovePageNoticeTest.php',
'Wikibase\\Client\\Tests\\Hooks\\NoLangLinkHandlerTest' => $baseDir .
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/NoLangLinkHandlerTest.php',
'Wikibase\\Client\\Tests\\Hooks\\OtherProjectsSidebarGeneratorFactoryTest'
=> $baseDir .
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/OtherProjectsSidebarGeneratorFactoryTest.php',
@@ -1215,6 +1217,7 @@
'Wikibase\\Repo\\Content\\ItemHandler' => $baseDir .
'/extensions/Wikibase/repo/includes/Content/ItemHandler.php',
'Wikibase\\Repo\\Content\\PropertyHandler' => $baseDir .
'/extensions/Wikibase/repo/includes/Content/PropertyHandler.php',
'Wikibase\\Repo\\DataTypeValidatorFactory' => $baseDir .
'/extensions/Wikibase/repo/includes/DataTypeValidatorFactory.php',
+ 'Wikibase\\Repo\\Diff\\BasicEntityDiffVisualizer' => $baseDir .
'/extensions/Wikibase/repo/includes/Diff/BasicEntityDiffVisualizer.php',
'Wikibase\\Repo\\Diff\\ClaimDiffer' => $baseDir .
'/extensions/Wikibase/repo/includes/Diff/ClaimDiffer.php',
'Wikibase\\Repo\\Diff\\ClaimDifference' => $baseDir .
'/extensions/Wikibase/repo/includes/Diff/ClaimDifference.php',
'Wikibase\\Repo\\Diff\\ClaimDifferenceVisualizer' => $baseDir .
'/extensions/Wikibase/repo/includes/Diff/ClaimDifferenceVisualizer.php',
@@ -1222,7 +1225,6 @@
'Wikibase\\Repo\\Diff\\DiffView' => $baseDir .
'/extensions/Wikibase/repo/includes/Diff/DiffView.php',
'Wikibase\\Repo\\Diff\\DifferencesSnakVisualizer' => $baseDir .
'/extensions/Wikibase/repo/includes/Diff/DifferencesSnakVisualizer.php',
'Wikibase\\Repo\\Diff\\EntityContentDiffView' => $baseDir .
'/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php',
- 'Wikibase\\Repo\\Diff\\EntityDiffVisualizer' => $baseDir .
'/extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php',
'Wikibase\\Repo\\DispatchingEntityTypeStatementGrouper' => $baseDir .
'/extensions/Wikibase/repo/includes/DispatchingEntityTypeStatementGrouper.php',
'Wikibase\\Repo\\EntityIdHtmlLinkFormatterFactory' => $baseDir .
'/extensions/Wikibase/repo/includes/EntityIdHtmlLinkFormatterFactory.php',
'Wikibase\\Repo\\EntityIdLabelFormatterFactory' => $baseDir .
'/extensions/Wikibase/repo/includes/EntityIdLabelFormatterFactory.php',
@@ -1481,6 +1483,7 @@
'Wikibase\\Repo\\Tests\\CopyrightMessageBuilderTest' => $baseDir .
'/extensions/Wikibase/repo/tests/phpunit/includes/CopyrightMessageBuilderTest.php',
'Wikibase\\Repo\\Tests\\DataTypeSelectorTest' => $baseDir .
'/extensions/Wikibase/repo/tests/phpunit/includes/DataTypeSelectorTest.php',
'Wikibase\\Repo\\Tests\\DefaultRepoSettingsTest' => $baseDir .
'/extensions/Wikibase/repo/tests/phpunit/includes/DefaultRepoSettingsTest.php',
+ 'Wikibase\\Repo\\Tests\\Diff\\BasicEntityDiffVisualizerTest' => $baseDir .
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/BasicEntityDiffVisualizerTest.php',
'Wikibase\\Repo\\Tests\\Diff\\ClaimDifferTest' => $baseDir .
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferTest.php',
'Wikibase\\Repo\\Tests\\Diff\\ClaimDifferenceTest' => $baseDir .
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceTest.php',
'Wikibase\\Repo\\Tests\\Diff\\ClaimDifferenceVisualizerTest' => $baseDir .
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceVisualizerTest.php',
@@ -1488,7 +1491,6 @@
'Wikibase\\Repo\\Tests\\Diff\\DiffViewTest' => $baseDir .
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffViewTest.php',
'Wikibase\\Repo\\Tests\\Diff\\DifferencesSnakVisualizerTest' => $baseDir .
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DifferencesSnakVisualizerTest.php',
'Wikibase\\Repo\\Tests\\Diff\\EntityContentDiffViewTest' => $baseDir .
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityContentDiffViewTest.php',
- 'Wikibase\\Repo\\Tests\\Diff\\EntityDiffVisualizerTest' => $baseDir .
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php',
'Wikibase\\Repo\\Tests\\DispatchingEntityTypeStatementGrouperTest' =>
$baseDir .
'/extensions/Wikibase/repo/tests/phpunit/includes/DispatchingEntityTypeStatementGrouperTest.php',
'Wikibase\\Repo\\Tests\\Dumpers\\JsonDumpGeneratorTest' => $baseDir .
'/extensions/Wikibase/repo/tests/phpunit/includes/Dumpers/JsonDumpGeneratorTest.php',
'Wikibase\\Repo\\Tests\\Dumpers\\RdfDumpGeneratorTest' => $baseDir .
'/extensions/Wikibase/repo/tests/phpunit/includes/Dumpers/RdfDumpGeneratorTest.php',
diff --git a/vendor/composer/autoload_static.php
b/vendor/composer/autoload_static.php
index 30ac934..d60d6e6 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -747,6 +747,7 @@
'Wikibase\\Client\\Hooks\\InfoActionHookHandler' => __DIR__ . '/../..'
. '/extensions/Wikibase/client/includes/Hooks/InfoActionHookHandler.php',
'Wikibase\\Client\\Hooks\\InterwikiSortingHookHandlers' => __DIR__ .
'/../..' .
'/extensions/Wikibase/client/includes/Hooks/InterwikiSortingHookHandlers.php',
'Wikibase\\Client\\Hooks\\LanguageLinkBadgeDisplay' => __DIR__ .
'/../..' .
'/extensions/Wikibase/client/includes/Hooks/LanguageLinkBadgeDisplay.php',
+ 'Wikibase\\Client\\Hooks\\MagicWordHookHandlers' => __DIR__ . '/../..'
. '/extensions/Wikibase/client/includes/Hooks/MagicWordHookHandlers.php',
'Wikibase\\Client\\Hooks\\MovePageNotice' => __DIR__ . '/../..' .
'/extensions/Wikibase/client/includes/Hooks/MovePageNotice.php',
'Wikibase\\Client\\Hooks\\OtherProjectsSidebarGenerator' => __DIR__ .
'/../..' .
'/extensions/Wikibase/client/includes/Hooks/OtherProjectsSidebarGenerator.php',
'Wikibase\\Client\\Hooks\\OtherProjectsSidebarGeneratorFactory' =>
__DIR__ . '/../..' .
'/extensions/Wikibase/client/includes/Hooks/OtherProjectsSidebarGeneratorFactory.php',
@@ -831,6 +832,7 @@
'Wikibase\\Client\\Tests\\Hooks\\InfoActionHookHandlerTest' => __DIR__
. '/../..' .
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/InfoActionHookHandlerTest.php',
'Wikibase\\Client\\Tests\\Hooks\\InterwikiSortingHookHandlersTest' =>
__DIR__ . '/../..' .
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/InterwikiSortingHookHandlersTest.php',
'Wikibase\\Client\\Tests\\Hooks\\LanguageLinkBadgeDisplayTest' =>
__DIR__ . '/../..' .
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/LanguageLinkBadgeDisplayTest.php',
+ 'Wikibase\\Client\\Tests\\Hooks\\MagicWordHookHandlersTest' => __DIR__
. '/../..' .
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/MagicWordHookHandlersTest.php',
'Wikibase\\Client\\Tests\\Hooks\\MovePageNoticeTest' => __DIR__ .
'/../..' .
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/MovePageNoticeTest.php',
'Wikibase\\Client\\Tests\\Hooks\\NoLangLinkHandlerTest' => __DIR__ .
'/../..' .
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/NoLangLinkHandlerTest.php',
'Wikibase\\Client\\Tests\\Hooks\\OtherProjectsSidebarGeneratorFactoryTest' =>
__DIR__ . '/../..' .
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/OtherProjectsSidebarGeneratorFactoryTest.php',
@@ -1528,6 +1530,7 @@
'Wikibase\\Repo\\Content\\ItemHandler' => __DIR__ . '/../..' .
'/extensions/Wikibase/repo/includes/Content/ItemHandler.php',
'Wikibase\\Repo\\Content\\PropertyHandler' => __DIR__ . '/../..' .
'/extensions/Wikibase/repo/includes/Content/PropertyHandler.php',
'Wikibase\\Repo\\DataTypeValidatorFactory' => __DIR__ . '/../..' .
'/extensions/Wikibase/repo/includes/DataTypeValidatorFactory.php',
+ 'Wikibase\\Repo\\Diff\\BasicEntityDiffVisualizer' => __DIR__ .
'/../..' .
'/extensions/Wikibase/repo/includes/Diff/BasicEntityDiffVisualizer.php',
'Wikibase\\Repo\\Diff\\ClaimDiffer' => __DIR__ . '/../..' .
'/extensions/Wikibase/repo/includes/Diff/ClaimDiffer.php',
'Wikibase\\Repo\\Diff\\ClaimDifference' => __DIR__ . '/../..' .
'/extensions/Wikibase/repo/includes/Diff/ClaimDifference.php',
'Wikibase\\Repo\\Diff\\ClaimDifferenceVisualizer' => __DIR__ .
'/../..' .
'/extensions/Wikibase/repo/includes/Diff/ClaimDifferenceVisualizer.php',
@@ -1535,7 +1538,6 @@
'Wikibase\\Repo\\Diff\\DiffView' => __DIR__ . '/../..' .
'/extensions/Wikibase/repo/includes/Diff/DiffView.php',
'Wikibase\\Repo\\Diff\\DifferencesSnakVisualizer' => __DIR__ .
'/../..' .
'/extensions/Wikibase/repo/includes/Diff/DifferencesSnakVisualizer.php',
'Wikibase\\Repo\\Diff\\EntityContentDiffView' => __DIR__ . '/../..' .
'/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php',
- 'Wikibase\\Repo\\Diff\\EntityDiffVisualizer' => __DIR__ . '/../..' .
'/extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php',
'Wikibase\\Repo\\DispatchingEntityTypeStatementGrouper' => __DIR__ .
'/../..' .
'/extensions/Wikibase/repo/includes/DispatchingEntityTypeStatementGrouper.php',
'Wikibase\\Repo\\EntityIdHtmlLinkFormatterFactory' => __DIR__ .
'/../..' .
'/extensions/Wikibase/repo/includes/EntityIdHtmlLinkFormatterFactory.php',
'Wikibase\\Repo\\EntityIdLabelFormatterFactory' => __DIR__ . '/../..'
. '/extensions/Wikibase/repo/includes/EntityIdLabelFormatterFactory.php',
@@ -1794,6 +1796,7 @@
'Wikibase\\Repo\\Tests\\CopyrightMessageBuilderTest' => __DIR__ .
'/../..' .
'/extensions/Wikibase/repo/tests/phpunit/includes/CopyrightMessageBuilderTest.php',
'Wikibase\\Repo\\Tests\\DataTypeSelectorTest' => __DIR__ . '/../..' .
'/extensions/Wikibase/repo/tests/phpunit/includes/DataTypeSelectorTest.php',
'Wikibase\\Repo\\Tests\\DefaultRepoSettingsTest' => __DIR__ . '/../..'
.
'/extensions/Wikibase/repo/tests/phpunit/includes/DefaultRepoSettingsTest.php',
+ 'Wikibase\\Repo\\Tests\\Diff\\BasicEntityDiffVisualizerTest' =>
__DIR__ . '/../..' .
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/BasicEntityDiffVisualizerTest.php',
'Wikibase\\Repo\\Tests\\Diff\\ClaimDifferTest' => __DIR__ . '/../..' .
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferTest.php',
'Wikibase\\Repo\\Tests\\Diff\\ClaimDifferenceTest' => __DIR__ .
'/../..' .
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceTest.php',
'Wikibase\\Repo\\Tests\\Diff\\ClaimDifferenceVisualizerTest' =>
__DIR__ . '/../..' .
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceVisualizerTest.php',
@@ -1801,7 +1804,6 @@
'Wikibase\\Repo\\Tests\\Diff\\DiffViewTest' => __DIR__ . '/../..' .
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffViewTest.php',
'Wikibase\\Repo\\Tests\\Diff\\DifferencesSnakVisualizerTest' =>
__DIR__ . '/../..' .
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DifferencesSnakVisualizerTest.php',
'Wikibase\\Repo\\Tests\\Diff\\EntityContentDiffViewTest' => __DIR__ .
'/../..' .
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityContentDiffViewTest.php',
- 'Wikibase\\Repo\\Tests\\Diff\\EntityDiffVisualizerTest' => __DIR__ .
'/../..' .
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php',
'Wikibase\\Repo\\Tests\\DispatchingEntityTypeStatementGrouperTest' =>
__DIR__ . '/../..' .
'/extensions/Wikibase/repo/tests/phpunit/includes/DispatchingEntityTypeStatementGrouperTest.php',
'Wikibase\\Repo\\Tests\\Dumpers\\JsonDumpGeneratorTest' => __DIR__ .
'/../..' .
'/extensions/Wikibase/repo/tests/phpunit/includes/Dumpers/JsonDumpGeneratorTest.php',
'Wikibase\\Repo\\Tests\\Dumpers\\RdfDumpGeneratorTest' => __DIR__ .
'/../..' .
'/extensions/Wikibase/repo/tests/phpunit/includes/Dumpers/RdfDumpGeneratorTest.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 61975f9..f07fb06 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1357,12 +1357,12 @@
"source": {
"type": "git",
"url":
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git",
- "reference": "dcb71c0633d61886d1647aba80a5e3988cfad21a"
+ "reference": "f37e244cd624ead83bc9552ff0b5d4c23880948e"
},
"dist": {
"type": "zip",
- "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/dcb71c0633d61886d1647aba80a5e3988cfad21a",
- "reference": "dcb71c0633d61886d1647aba80a5e3988cfad21a",
+ "url":
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/f37e244cd624ead83bc9552ff0b5d4c23880948e",
+ "reference": "f37e244cd624ead83bc9552ff0b5d4c23880948e",
"shasum": ""
},
"require": {
@@ -1394,7 +1394,7 @@
"jakub-onderka/php-parallel-lint": ">=0.3 <0.10",
"mediawiki/mediawiki-codesniffer": ">=0.4 <0.8"
},
- "time": "2017-03-21 21:55:12",
+ "time": "2017-03-22 22:11:13",
"type": "mediawiki-extension",
"installation-source": "dist",
"autoload": {
@@ -1779,7 +1779,7 @@
"source": {
"type": "git",
"url":
"https://gerrit.wikimedia.org/r/mediawiki/extensions/WikibaseQualityConstraints",
- "reference": "e5344cda71392773660bf8a54e9932d882e75433"
+ "reference": "e9b7fcaafc8abe6a1544fb7688e760e252fbe078"
},
"require": {
"php": ">=5.5.9",
@@ -1792,7 +1792,7 @@
"phpunit/phpunit": "^3.7.37|~4.5",
"satooshi/php-coveralls": "master-dev"
},
- "time": "2017-03-21 10:22:18",
+ "time": "2017-03-22 22:11:48",
"type": "mediawiki-extension",
"installation-source": "source",
"autoload": {
--
To view, visit https://gerrit.wikimedia.org/r/344333
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I99fb888982f23368e453784da57bc71707fd15ed
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: master
Gerrit-Owner: WikidataBuilder <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits