jenkins-bot has submitted this change and it was merged.

Change subject: New Wikidata Build - 2016-10-13T10:00:01+0000
......................................................................


New Wikidata Build - 2016-10-13T10:00:01+0000

Change-Id: I22c4525411d491a26a9a8a24f4af3932e3f85739
---
M composer.lock
M extensions/Wikibase/client/WikibaseClient.hooks.php
M extensions/Wikibase/client/WikibaseClient.php
M extensions/Wikibase/client/i18n/qqq.json
A extensions/Wikibase/client/includes/Hooks/EditActionHookHandler.php
M extensions/Wikibase/client/resources/Resources.php
A 
extensions/Wikibase/client/resources/wikibase.client.action.edit.collapsibleFooter.js
A 
extensions/Wikibase/client/tests/phpunit/includes/Hooks/EditActionHookHandlerTest.php
M extensions/Wikibase/repo/Wikibase.hooks.php
M extensions/Wikibase/repo/tests/phpunit/includes/RepoHooksTest.php
M extensions/Wikibase/view/resources/jquery/ui/jquery.ui.tagadata.css
M extensions/Wikibase/view/resources/jquery/ui/jquery.ui.tagadata.js
M extensions/Wikibase/view/resources/jquery/ui/resources.php
M 
extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.aliasesview.js
M extensions/Wikibase/view/tests/qunit/jquery/ui/jquery.ui.tagadata.tests.js
M vendor/composer/autoload_classmap.php
M vendor/composer/installed.json
17 files changed, 621 insertions(+), 121 deletions(-)

Approvals:
  Aude: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/composer.lock b/composer.lock
index 63c2d18..9cadb17 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1574,12 +1574,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-                "reference": "5fcda5a30ad7b1cd139a49efde3da88199cf7ae7"
+                "reference": "7f7a926567984089c1c157da35f19260d18bd7c9"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/5fcda5a30ad7b1cd139a49efde3da88199cf7ae7";,
-                "reference": "5fcda5a30ad7b1cd139a49efde3da88199cf7ae7",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/7f7a926567984089c1c157da35f19260d18bd7c9";,
+                "reference": "7f7a926567984089c1c157da35f19260d18bd7c9",
                 "shasum": ""
             },
             "require": {
@@ -1653,7 +1653,7 @@
                 "wikibaserepo",
                 "wikidata"
             ],
-            "time": "2016-10-12 08:23:19"
+            "time": "2016-10-13 08:27:02"
         },
         {
             "name": "wikibase/wikimedia-badges",
diff --git a/extensions/Wikibase/client/WikibaseClient.hooks.php 
b/extensions/Wikibase/client/WikibaseClient.hooks.php
index 783792a..84aeab5 100644
--- a/extensions/Wikibase/client/WikibaseClient.hooks.php
+++ b/extensions/Wikibase/client/WikibaseClient.hooks.php
@@ -6,6 +6,7 @@
 use BaseTemplate;
 use ChangesList;
 use EchoEvent;
+use EditPage;
 use IContextSource;
 use Message;
 use OutputPage;
@@ -22,6 +23,7 @@
 use Wikibase\Client\Hooks\BeforePageDisplayHandler;
 use Wikibase\Client\Hooks\DeletePageNoticeCreator;
 use Wikibase\Client\Hooks\EchoNotificationsHandlers;
+use Wikibase\Client\Hooks\EditActionHookHandler;
 use Wikibase\Client\Hooks\InfoActionHookHandler;
 use Wikibase\Client\RecentChanges\ChangeLineFormatter;
 use Wikibase\Client\RecentChanges\ExternalChangeFactory;
@@ -440,6 +442,28 @@
        }
 
        /**
+        * Adds the Entity usage data in ActionEdit
+        *
+        * @param EditPage $editor
+        * @param string[] $checkboxes
+        * @param int $tabindex
+        */
+       public static function onEditAction( EditPage &$editor, array 
&$checkboxes, &$tabindex ) {
+               if ( $editor->preview || $editor->section ) {
+                       // Shorten out, like template transclusion in core
+                       return;
+               }
+
+               $editActionHookHandler = 
EditActionHookHandler::newFromGlobalState(
+                       $editor->getContext()
+               );
+               $editActionHookHandler->handle( $editor );
+
+               $out = $editor->getContext()->getOutput();
+               $out->addModules( 
'wikibase.client.action.edit.collapsibleFooter' );
+       }
+
+       /**
         * Notify the user that we have automatically updated the repo or that 
they
         * need to do that per hand.
         *
diff --git a/extensions/Wikibase/client/WikibaseClient.php 
b/extensions/Wikibase/client/WikibaseClient.php
index ad37e9b..536ad0c 100644
--- a/extensions/Wikibase/client/WikibaseClient.php
+++ b/extensions/Wikibase/client/WikibaseClient.php
@@ -122,6 +122,7 @@
        $wgHooks['BeforePageDisplay'][] = 
'\Wikibase\ClientHooks::onBeforePageDisplayAddJsConfig';
        $wgHooks['ScribuntoExternalLibraries'][] = 
'\Wikibase\ClientHooks::onScribuntoExternalLibraries';
        $wgHooks['InfoAction'][] = '\Wikibase\ClientHooks::onInfoAction';
+       $wgHooks['EditPageBeforeEditChecks'][] = 
'\Wikibase\ClientHooks::onEditAction';
        $wgHooks['BaseTemplateAfterPortlet'][] = 
'\Wikibase\ClientHooks::onBaseTemplateAfterPortlet';
        $wgHooks['GetBetaFeaturePreferences'][] = 
'\Wikibase\ClientHooks::onGetBetaFeaturePreferences';
        $wgHooks['ArticleDeleteAfterSuccess'][] = 
'\Wikibase\ClientHooks::onArticleDeleteAfterSuccess';
diff --git a/extensions/Wikibase/client/i18n/qqq.json 
b/extensions/Wikibase/client/i18n/qqq.json
index 012b245..6bb1a02 100644
--- a/extensions/Wikibase/client/i18n/qqq.json
+++ b/extensions/Wikibase/client/i18n/qqq.json
@@ -110,7 +110,7 @@
        "wikibase-entityusage-submit": "Label for the button that activates the 
action",
        "wikibase-pageinfo-entity-id": "A link to the corresponding Wikibase 
Item",
        "wikibase-pageinfo-entity-id-none": "The page is not linked with a 
wikibase item.\n{{Identical|None}}",
-       "wikibase-pageinfo-entity-usage": "Desciption in action=info about 
entities used in the page",
+       "wikibase-pageinfo-entity-usage": "Desciption in action=info and 
action=edit about entities used in the page",
        "wikibase-pageinfo-entity-usage-S": "Name for ''sitelink'' entity 
usage",
        "wikibase-pageinfo-entity-usage-L": "Name for ''label'' entity 
usage\n{{Identical|Label}}",
        "wikibase-pageinfo-entity-usage-T": "Name for ''title'' entity 
usage\n{{Identical|Title}}",
diff --git 
a/extensions/Wikibase/client/includes/Hooks/EditActionHookHandler.php 
b/extensions/Wikibase/client/includes/Hooks/EditActionHookHandler.php
new file mode 100644
index 0000000..c25ad2e
--- /dev/null
+++ b/extensions/Wikibase/client/includes/Hooks/EditActionHookHandler.php
@@ -0,0 +1,179 @@
+<?php
+
+namespace Wikibase\Client\Hooks;
+
+use EditPage;
+use Html;
+use IContextSource;
+use Wikibase\Client\RepoLinker;
+use Wikibase\Client\Usage\EntityUsage;
+use Wikibase\Client\Usage\UsageLookup;
+use Wikibase\Client\WikibaseClient;
+use Wikibase\DataModel\Entity\EntityIdParser;
+use Wikibase\Lib\Store\LanguageFallbackLabelDescriptionLookupFactory;
+
+/**
+ * @since 0.5
+ *
+ * @license GPL-2.0+
+ * @author Amir Sarabadani < ladsgr...@gmail.com >
+ */
+class EditActionHookHandler {
+
+       /**
+        * @var RepoLinker
+        */
+       private $repoLinker;
+
+       /**
+        * @var UsageLookup
+        */
+       private $usageLookup;
+
+       /**
+        * @var LanguageFallbackLabelDescriptionLookupFactory
+        */
+       private $labelDescriptionLookupFactory;
+
+       /**
+        * @var EntityIdParser
+        */
+       private $idParser;
+
+       /**
+        * @var IContextSource
+        */
+       private $context;
+
+       public function __construct(
+               RepoLinker $repoLinker,
+               UsageLookup $usageLookup,
+               LanguageFallbackLabelDescriptionLookupFactory 
$labelDescriptionLookupFactory,
+               EntityIdParser $idParser,
+               IContextSource $context
+       ) {
+               $this->repoLinker = $repoLinker;
+               $this->usageLookup = $usageLookup;
+               $this->labelDescriptionLookupFactory = 
$labelDescriptionLookupFactory;
+               $this->idParser = $idParser;
+               $this->context = $context;
+       }
+
+       /**
+        * @param IContextSource $context
+        * @return EditActionHookHandler
+        */
+       public static function newFromGlobalState( IContextSource $context ) {
+               $wikibaseClient = WikibaseClient::getDefaultInstance();
+
+               $usageLookup = $wikibaseClient->getStore()->getUsageLookup();
+               $labelDescriptionLookupFactory = new 
LanguageFallbackLabelDescriptionLookupFactory(
+                       $wikibaseClient->getLanguageFallbackChainFactory(),
+                       $wikibaseClient->getTermLookup(),
+                       $wikibaseClient->getTermBuffer()
+               );
+               $idParser = $wikibaseClient->getEntityIdParser();
+
+               return new self(
+                       $wikibaseClient->newRepoLinker(),
+                       $usageLookup,
+                       $labelDescriptionLookupFactory,
+                       $idParser,
+                       $context
+               );
+       }
+
+       /**
+        * @param EditPage $editor
+        */
+       public function handle( EditPage $editor ) {
+               // Check if there are usages to show
+               $title = $editor->getTitle();
+               $usages = $this->usageLookup->getUsagesForPage( 
$title->getArticleID() );
+
+               if ( $usages ) {
+                       $header = $this->getHeader();
+                       $usageOutput = $this->formatEntityUsage( $usages );
+                       $output = Html::rawElement(
+                               'div',
+                               [ 'class' => 'wikibase-entity-usage' ],
+                               $header . "\n" . $usageOutput
+                       );
+                       $editor->editFormTextAfterTools .= $output;
+               }
+       }
+
+       /**
+        * @param string[] $rowAspects
+        *
+        * @return string HTML
+        */
+       private function formatAspects( array $rowAspects ) {
+               $aspects = [];
+
+               foreach ( $rowAspects as $aspect ) {
+                       $aspects[] = $this->context->msg(
+                               'wikibase-pageinfo-entity-usage-' . $aspect[0], 
$aspect[1]
+                       )->parse();
+               }
+
+               return $this->context->getLanguage()->commaList( $aspects );
+       }
+
+       /**
+        * @param EntityUsage[] $usages
+        * @return string HTML
+        */
+       private function formatEntityUsage( array $usages ) {
+               $usageAspectsByEntity = [];
+               $entityIds = [];
+
+               foreach ( $usages as $key => $entityUsage ) {
+                       $entityId = 
$entityUsage->getEntityId()->getSerialization();
+                       $entityIds[$entityId] = $entityUsage->getEntityId();
+                       if ( !isset( $usageAspectsByEntity[$entityId] ) ) {
+                               $usageAspectsByEntity[$entityId] = [];
+                       }
+                       $usageAspectsByEntity[$entityId][] = [
+                               $entityUsage->getAspect(),
+                               $entityUsage->getModifier()
+                       ];
+               }
+
+               $output = '';
+               $labelLookup = 
$this->labelDescriptionLookupFactory->newLabelDescriptionLookup(
+                       $this->context->getLanguage(),
+                       array_values( $entityIds )
+               );
+
+               foreach ( $usageAspectsByEntity as $entityId => $aspects ) {
+                       $label = $labelLookup->getLabel( $entityIds[$entityId] 
);
+                       $text = $label === null ? $entityId : $label->getText();
+
+                       $aspectContent = $this->formatAspects( $aspects );
+                       $colon = $this->context->msg( 'colon-separator' 
)->plain();
+                       $output .= Html::rawElement(
+                               'li',
+                               [],
+                               $this->repoLinker->buildEntityLink(
+                                       $entityIds[$entityId],
+                                       [ 'external' ],
+                                       $text
+                               ) . $colon . $aspectContent
+                       );
+               }
+               return Html::rawElement( 'ul', [], $output );
+       }
+
+       /**
+        * @return string HTML
+        */
+       private function getHeader() {
+               return Html::rawElement(
+                       'div',
+                       [ 'class' => 'wikibase-entityusage-explanation' ],
+                       $this->context->msg( 'wikibase-pageinfo-entity-usage' 
)->parseAsBlock()
+               );
+       }
+
+}
diff --git a/extensions/Wikibase/client/resources/Resources.php 
b/extensions/Wikibase/client/resources/Resources.php
index 666fafa..deb1daf 100644
--- a/extensions/Wikibase/client/resources/Resources.php
+++ b/extensions/Wikibase/client/resources/Resources.php
@@ -105,7 +105,15 @@
                                'wikibase-sitelinks-sitename-columnheading',
                                'wikibase-sitelinks-link-columnheading'
                        ),
-               )
+               ),
+               'wikibase.client.action.edit.collapsibleFooter' => 
$moduleTemplate + [
+                       'scripts' => 
'wikibase.client.action.edit.collapsibleFooter.js',
+                       'dependencies' => [
+                               'jquery.makeCollapsible',
+                               'mediawiki.cookie',
+                               'mediawiki.icon',
+                       ],
+               ]
        );
 
 } );
diff --git 
a/extensions/Wikibase/client/resources/wikibase.client.action.edit.collapsibleFooter.js
 
b/extensions/Wikibase/client/resources/wikibase.client.action.edit.collapsibleFooter.js
new file mode 100644
index 0000000..fe25cd5
--- /dev/null
+++ 
b/extensions/Wikibase/client/resources/wikibase.client.action.edit.collapsibleFooter.js
@@ -0,0 +1,55 @@
+// Copied from mediawiki.action.edit.collapsibleFooter
+( function ( mw ) {
+       'use strict';
+
+       var collapsibleLists, handleOne;
+
+       // Collapsible lists of categories and templates
+       collapsibleLists = [
+               {
+                       listSel: '.wikibase-entity-usage ul',
+                       togglerSel: '.wikibase-entityusage-explanation',
+                       cookieName: 'wikibase-entity-usage-list'
+               }
+       ];
+
+       handleOne = function ( $list, $toggler, cookieName ) {
+               // Collapsed by default
+               var isCollapsed = mw.cookie.get( cookieName ) !== 'expanded';
+
+               // Style the toggler with an arrow icon and add a tabIndex and 
a role for accessibility
+               $toggler.addClass( 'mw-editfooter-toggler' ).prop( 'tabIndex', 
0 ).attr( 'role', 'button' );
+               $list.addClass( 'mw-editfooter-list' );
+
+               $list.makeCollapsible( {
+                       $customTogglers: $toggler,
+                       linksPassthru: true,
+                       plainMode: true,
+                       collapsed: isCollapsed
+               } );
+
+               $toggler.addClass( isCollapsed ? 'mw-icon-arrow-collapsed' : 
'mw-icon-arrow-expanded' );
+
+               $list.on( 'beforeExpand.mw-collapsible', function () {
+                       $toggler.removeClass( 'mw-icon-arrow-collapsed' 
).addClass( 'mw-icon-arrow-expanded' );
+                       mw.cookie.set( cookieName, 'expanded' );
+               } );
+
+               $list.on( 'beforeCollapse.mw-collapsible', function () {
+                       $toggler.removeClass( 'mw-icon-arrow-expanded' 
).addClass( 'mw-icon-arrow-collapsed' );
+                       mw.cookie.set( cookieName, 'collapsed' );
+               } );
+       };
+
+       mw.hook( 'wikipage.editform' ).add( function ( $editForm ) {
+               var i;
+               for ( i = 0; i < collapsibleLists.length; i++ ) {
+                       // Pass to a function for iteration-local variables
+                       handleOne(
+                               $editForm.find( collapsibleLists[ i ].listSel ),
+                               $editForm.find( collapsibleLists[ i 
].togglerSel ),
+                               collapsibleLists[ i ].cookieName
+                       );
+               }
+       } );
+}( mediaWiki ) );
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/Hooks/EditActionHookHandlerTest.php
 
b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/EditActionHookHandlerTest.php
new file mode 100644
index 0000000..42cb906
--- /dev/null
+++ 
b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/EditActionHookHandlerTest.php
@@ -0,0 +1,269 @@
+<?php
+
+namespace Wikibase\Client\Tests\Hooks;
+
+use EditPage;
+use Html;
+use IContextSource;
+use RequestContext;
+use Title;
+use Wikibase\Client\Hooks\EditActionHookHandler;
+use Wikibase\Client\RepoLinker;
+use Wikibase\Client\Usage\Sql\SqlUsageTracker;
+use Wikibase\DataModel\Entity\EntityId;
+use Wikibase\DataModel\Entity\EntityIdParser;
+use Wikibase\DataModel\Entity\ItemId;
+use Wikibase\DataModel\Services\Lookup\LabelDescriptionLookup;
+use Wikibase\DataModel\Term\Term;
+use Wikibase\Lib\Store\LanguageFallbackLabelDescriptionLookupFactory;
+use Wikibase\Lib\Store\SiteLinkLookup;
+use Wikibase\Client\Usage\EntityUsage;
+
+/**
+ * @covers Wikibase\Client\Hooks\EditActionHookHandler
+ *
+ * @group WikibaseClient
+ * @group EditActionHookHandler
+ * @group Wikibase
+ *
+ * @license GPL-2.0+
+ * @author Amir Sarabadani <ladsgr...@gmail.com>
+ */
+class EditActionHookHandlerTest extends \PHPUnit_Framework_TestCase {
+
+       /**
+        * @dataProvider handleProvider
+        * @param string HTML $expected
+        * @param IContextSource $context
+        * @param EntityId|bool $entityId
+        * @param string $message
+        */
+       public function testHandle( $expected, IContextSource $context, 
$entityId, $message ) {
+               $hookHandler = $this->newHookHandler( $entityId, $context );
+               $editor = $this->getEditPage();
+               $hookHandler->handle( $editor );
+
+               $this->assertSame( $expected, $editor->editFormTextAfterTools, 
$message );
+       }
+
+       public function testNewFromGlobalState() {
+               $context = $this->getContext();
+
+               $handler = EditActionHookHandler::newFromGlobalState( $context 
);
+               $this->assertInstanceOf( EditActionHookHandler::class, $handler 
);
+
+       }
+
+       public function handleProvider() {
+               $context = $this->getContext();
+               $labeledLink = '<a href="https://www.wikidata.org/wiki/Q4"; 
class="external">Berlin</a>';
+               $q5Link = '<a href="https://www.wikidata.org/wiki/Q5"; 
class="external">Q5</a>';
+               $explanation = $context->msg( 'wikibase-pageinfo-entity-usage' 
)->escaped();
+               $header = '<div class="wikibase-entity-usage"><div 
class="wikibase-entityusage-explanation">';
+               $header .= "<p>$explanation\n</p></div>";
+               $cases = [];
+
+               $cases[] = [
+                       "$header\n<ul><li>$labeledLink: 
Sitelink</li></ul></div>",
+                       $context,
+                       new ItemId( 'Q4' ),
+                       'item id link'
+               ];
+
+               $cases[] = [
+                       '',
+                       $context,
+                       false,
+                       'page is not connected to an item'
+               ];
+
+               $cases[] = [
+                       "$header\n<ul><li>$q5Link: Sitelink</li></ul></div>",
+                       $context,
+                       new ItemId( 'Q5' ),
+                       'No label for Q5'
+               ];
+
+               return $cases;
+       }
+
+       /**
+        * @param ItemId|bool $entityId
+        * @param IContextSource $context
+        *
+        * @return EditActionHookHandler
+        */
+       private function newHookHandler( $entityId, IContextSource $context ) {
+
+               $repoLinker = $this->getMockBuilder( RepoLinker::class )
+                       ->disableOriginalConstructor()
+                       ->setMethods( [ 'buildEntityLink' ] )
+                       ->getMock();
+
+               $repoLinker->expects( $this->any() )
+                       ->method( 'buildEntityLink' )
+                       ->will( $this->returnCallback( [ $this, 
'buildEntityLink' ] ) );
+
+               $siteLinkLookup = $this->getMockBuilder( SiteLinkLookup::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+
+               $siteLinkLookup->expects( $this->any() )
+                       ->method( 'getItemIdForLink' )
+                       ->will( $this->returnValue( $entityId ) );
+
+               $sqlUsageTracker = $this->getMockBuilder( 
SqlUsageTracker::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+
+               $entityUsage = $entityId ? [ new EntityUsage( $entityId, 'S' ) 
] : null;
+               $sqlUsageTracker->expects( $this->once() )
+                       ->method( 'getUsagesForPage' )
+                       ->will( $this->returnValue( $entityUsage ) );
+
+               $labelDescriptionLookupFactory = $this->getMockBuilder(
+                       LanguageFallbackLabelDescriptionLookupFactory::class
+               )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+
+               $labelDescriptionLookupFactory->expects( $this->any() )
+                       ->method( 'newLabelDescriptionLookup' )
+                       ->will( $this->returnCallback( [ $this, 
'newLabelDescriptionLookup' ] ) );
+
+               $idParser = $this->getMockBuilder( EntityIdParser::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+
+               $idParser->expects( $this->any() )
+                       ->method( 'parse' )
+                       ->will( $this->returnCallback( [ $this, 'parse' ] ) );
+
+               $hookHandler = new EditActionHookHandler(
+                       $repoLinker,
+                       $sqlUsageTracker,
+                       $labelDescriptionLookupFactory,
+                       $idParser,
+                       $context
+               );
+
+               return $hookHandler;
+       }
+
+       /**
+        * @return IContextSource
+        */
+       private function getContext() {
+               $title = $this->getTitle();
+
+               $context = new RequestContext();
+               $context->setTitle( $title );
+
+               $context->setLanguage( 'en' );
+
+               return $context;
+       }
+
+       /**
+        * @return LabelDescriptionLookup
+        */
+       public function newLabelDescriptionLookup() {
+               $lookup = $this->getMockBuilder( LabelDescriptionLookup::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+
+               $lookup->expects( $this->any() )
+                       ->method( 'getLabel' )
+                       ->will( $this->returnCallback( [ $this, 'getLabel' ] ) 
);
+
+               return $lookup;
+       }
+
+       /**
+        * @param EntityId $entity
+        *
+        * @return Term|null
+        */
+       public function getLabel( EntityId $entity ) {
+               $labelMap = [ 'Q4' => 'Berlin' ];
+               $idSerialization = $entity->getSerialization();
+               if ( !isset( $labelMap[$idSerialization] ) ) {
+                       return null;
+               }
+               $term = new Term( 'en', $labelMap[$idSerialization] );
+               return $term;
+       }
+
+       /**
+        * @param string $entity
+        *
+        * @return ItemId
+        */
+       public function parse( $entity ) {
+               // TODO: Let properties be tested too
+               return new ItemId( $entity );
+       }
+
+       /**
+        * @param string $entityId
+        * @param string[] $classes
+        * @param string|null $text
+        *
+        * @return string HTML
+        */
+       public function buildEntityLink( $entityId, array $classes, $text = 
null ) {
+               if ( $text === null ) {
+                       $text = $entityId;
+               }
+
+               $attr = [
+                       'href' => 'https://www.wikidata.org/wiki/' . $entityId,
+                       'class' => implode( ' ', $classes )
+               ];
+
+               return Html::rawElement( 'a', $attr, $text );
+       }
+
+       /**
+        * @return EditPage
+        */
+       private function getEditPage() {
+               $title = $this->getTitle();
+
+               $editor = $this->getMockBuilder( EditPage::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+
+               $editor->expects( $this->any() )
+                       ->method( 'getTitle' )
+                       ->will( $this->returnValue( $title ) );
+
+               $editor->editFormTextAfterTools = '';
+
+               return $editor;
+       }
+
+       /**
+        * @return Title
+        */
+       private function getTitle() {
+               $title = $this->getMockBuilder( Title::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+
+               $title->expects( $this->any() )
+                       ->method( 'exists' )
+                       ->will( $this->returnValue( true ) );
+
+               $title->expects( $this->any() )
+                       ->method( 'getNamespace' )
+                       ->will( $this->returnValue( NS_MAIN ) );
+
+               $title->expects( $this->any() )
+                       ->method( 'getPrefixedText' )
+                       ->will( $this->returnValue( 'Cat' ) );
+
+               return $title;
+       }
+
+}
diff --git a/extensions/Wikibase/repo/Wikibase.hooks.php 
b/extensions/Wikibase/repo/Wikibase.hooks.php
index a92a2bf..a5f413a 100644
--- a/extensions/Wikibase/repo/Wikibase.hooks.php
+++ b/extensions/Wikibase/repo/Wikibase.hooks.php
@@ -912,7 +912,8 @@
        }
 
        /**
-        * Adds a list of data value types to the action=query&meta=siteinfo 
API.
+        * Adds a list of data value types, sparql endpoint and concept base 
URI to
+        * the action=query&meta=siteinfo API.
         *
         * @param ApiQuerySiteinfo $api
         * @param array &$data
@@ -928,6 +929,9 @@
 
                $data['wikibase-propertytypes'] = $propertyTypes;
 
+               $conceptBaseUri = $wikibaseRepo->getSettings()->getSetting( 
'conceptBaseUri' );
+               $data['wikibase-conceptbaseuri'] = $conceptBaseUri;
+
                $sparqlEndpoint = $wikibaseRepo->getSettings()->getSetting( 
'sparqlEndpoint' );
                if ( is_string( $sparqlEndpoint ) ) {
                        $data['wikibase-sparql'] = $sparqlEndpoint;
diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/RepoHooksTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/RepoHooksTest.php
index ddac41e..bcc2502 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/RepoHooksTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/RepoHooksTest.php
@@ -1,11 +1,12 @@
 <?php
 
-namespace Wikibase\Tests;
+namespace Wikibase\Repo\Tests;
 
 use ApiQuerySiteinfo;
 use ConfigFactory;
 use DerivativeContext;
 use ImportStringSource;
+use MediaWikiTestCase;
 use MWException;
 use OutputPage;
 use ParserOutput;
@@ -13,6 +14,7 @@
 use Title;
 use Wikibase\Repo\WikibaseRepo;
 use Wikibase\RepoHooks;
+use Wikibase\SettingsArray;
 use WikiImporter;
 
 /**
@@ -27,21 +29,28 @@
  * @author Daniel Kinzler
  * @author Thiemo M├Ąttig
  */
-class RepoHooksTest extends \MediaWikiTestCase {
+class RepoHooksTest extends MediaWikiTestCase {
 
        private $saveAllowImport = false;
 
        protected function setUp() {
                parent::setUp();
 
-               $this->saveAllowImport = 
WikibaseRepo::getDefaultInstance()->getSettings()->getSetting( 
'allowEntityImport' );
+               $this->saveAllowImport = $this->getSettings()->getSetting( 
'allowEntityImport' );
        }
 
        protected function tearDown() {
-               WikibaseRepo::getDefaultInstance()->getSettings()->setSetting( 
'allowEntityImport', $this->saveAllowImport );
+               $this->getSettings()->setSetting( 'allowEntityImport', 
$this->saveAllowImport );
                Title::clearCaches();
 
                parent::tearDown();
+       }
+
+       /**
+        * @return SettingsArray
+        */
+       private function getSettings() {
+               return WikibaseRepo::getDefaultInstance()->getSettings();
        }
 
        public function testOnAPIQuerySiteInfoGeneralInfo() {
@@ -49,42 +58,49 @@
                        ->disableOriginalConstructor()
                        ->getMock();
 
-               $actual = array();
+               $actual = [];
                RepoHooks::onAPIQuerySiteInfoGeneralInfo( $api, $actual );
+
                foreach ( $actual['wikibase-propertytypes'] as $key => $value ) 
{
                        $this->assertInternalType( 'string', $key );
                        $this->assertInternalType( 'string', 
$value['valuetype'] );
                }
+
+               $this->assertInternalType( 'string', 
$actual['wikibase-conceptbaseuri'] );
+
+               if ( array_key_exists( 'wikibase-sparql', $actual ) ) {
+                       $this->assertInternalType( 'string', 
$actual['wikibase-sparql'] );
+               }
        }
 
        public function revisionInfoProvider() {
-               return array(
-                       'empty_allowimport' => array(
-                               array(),
+               return [
+                       'empty_allowimport' => [
+                               [],
                                true
-                       ),
-                       'empty_noimport' => array(
-                               array(),
+                       ],
+                       'empty_noimport' => [
+                               [],
                                true
-                       ),
-                       'wikitext_allowimport' => array(
-                               array( 'model' => CONTENT_MODEL_WIKITEXT ),
+                       ],
+                       'wikitext_allowimport' => [
+                               [ 'model' => CONTENT_MODEL_WIKITEXT ],
                                true
-                       ),
-                       'wikitext_noimport' => array(
-                               array( 'model' => CONTENT_MODEL_WIKITEXT ),
+                       ],
+                       'wikitext_noimport' => [
+                               [ 'model' => CONTENT_MODEL_WIKITEXT ],
                                false
-                       ),
-                       'item_allowimport' => array(
-                               array( 'model' => CONTENT_MODEL_WIKIBASE_ITEM ),
+                       ],
+                       'item_allowimport' => [
+                               [ 'model' => CONTENT_MODEL_WIKIBASE_ITEM ],
                                false,
                                MWException::class
-                       ),
-                       'item_noimport' => array(
-                               array( 'model' => CONTENT_MODEL_WIKIBASE_ITEM ),
+                       ],
+                       'item_noimport' => [
+                               [ 'model' => CONTENT_MODEL_WIKIBASE_ITEM ],
                                true
-                       )
-               );
+                       ]
+               ];
        }
 
        /**
@@ -100,22 +116,19 @@
                        ->disableOriginalConstructor()
                        ->getMock();
 
-               WikibaseRepo::getDefaultInstance()->getSettings()->setSetting(
-                       'allowEntityImport',
-                       $allowEntityImport
-               );
+               $this->getSettings()->setSetting( 'allowEntityImport', 
$allowEntityImport );
 
                if ( $expectedException !== null ) {
                        $this->setExpectedException( $expectedException );
                }
 
-               RepoHooks::onImportHandleRevisionXMLTag( $importer, array(), 
$revisionInfo );
+               RepoHooks::onImportHandleRevisionXMLTag( $importer, [], 
$revisionInfo );
                $this->assertTrue( true ); // make PHPUnit happy
        }
 
        public function importProvider() {
-               return array(
-                       'wikitext' => array( <<<XML
+               return [
+                       'wikitext' => [ <<<XML
 <mediawiki>
   <siteinfo>
     <sitename>TestWiki</sitename>
@@ -135,8 +148,8 @@
 XML
                                ,
                                false
-                       ),
-                       'item' => array( <<<XML
+                       ],
+                       'item' => [ <<<XML
 <mediawiki>
   <siteinfo>
     <sitename>TestWiki</sitename>
@@ -157,8 +170,8 @@
                                ,
                                false,
                                MWException::class
-                       ),
-                       'item (allow)' => array( <<<XML
+                       ],
+                       'item (allow)' => [ <<<XML
 <mediawiki>
   <siteinfo>
     <sitename>TestWiki</sitename>
@@ -178,8 +191,8 @@
 XML
                        ,
                                true
-                       ),
-               );
+                       ],
+               ];
        }
 
        /**
@@ -191,7 +204,7 @@
                stream_wrapper_unregister( 'uploadsource' );
                \MediaWiki\restoreWarnings();
 
-               WikibaseRepo::getDefaultInstance()->getSettings()->setSetting( 
'allowEntityImport', $allowImport );
+               $this->getSettings()->setSetting( 'allowEntityImport', 
$allowImport );
 
                $source = new ImportStringSource( $xml );
                $importer = new WikiImporter( $source, 
ConfigFactory::getDefaultInstance()->makeConfig( 'main' ) );
@@ -211,7 +224,7 @@
        }
 
        public function testOnOutputPageParserOutput() {
-               $altLinks = array( array( 'a' => 'b' ), array( 'c', 'd' ) );
+               $altLinks = [ [ 'a' => 'b' ], [ 'c', 'd' ] ];
 
                $context = new DerivativeContext( RequestContext::getMain() );
                $out = new OutputPage( $context );
diff --git 
a/extensions/Wikibase/view/resources/jquery/ui/jquery.ui.tagadata.css 
b/extensions/Wikibase/view/resources/jquery/ui/jquery.ui.tagadata.css
index 0d67a2a..13410cc 100644
--- a/extensions/Wikibase/view/resources/jquery/ui/jquery.ui.tagadata.css
+++ b/extensions/Wikibase/view/resources/jquery/ui/jquery.ui.tagadata.css
@@ -55,8 +55,6 @@
        display: none;
 }
 
-ul.tagadata li.tagadata-choice-existing {}
-
 ul.tagadata li.tagadata-choice-empty .tagadata-label-text, /* don't underline 
when only placeholder is displayed */
 ul.tagadata li.tagadata-choice:last-of-type.tagadata-choice-equal 
.tagadata-label-text /* don't underline when conflict */ {
        text-decoration:none;
diff --git a/extensions/Wikibase/view/resources/jquery/ui/jquery.ui.tagadata.js 
b/extensions/Wikibase/view/resources/jquery/ui/jquery.ui.tagadata.js
index 4152d2b..77ccff7 100644
--- a/extensions/Wikibase/view/resources/jquery/ui/jquery.ui.tagadata.js
+++ b/extensions/Wikibase/view/resources/jquery/ui/jquery.ui.tagadata.js
@@ -34,10 +34,6 @@
  *         Text used as placeholder in the input field if no text has been 
typed yet.
  *         Default: ''
  *
- * @option {boolean} [anmiate]
- *         Whether  to animate tag removals or not.
- *         Default: true
- *
  * @option {number[]} [triggerKeys]
  *         Keys which - when pressed in the input area - will trigger the 
current input to be added
  *         as tag. $.ui.keyCode members can be used for convenience.
@@ -92,7 +88,6 @@
                editableTags: true,
                caseSensitive: true,
                placeholderText: null,
-               animate: true,
                triggerKeys: []
        },
 
@@ -157,8 +152,8 @@
                                $tag.remove(); // completely remove helper
                        } else {
                                $tag
-                               .removeClass( 'tagadata-choice 
tagadata-choice-removed ui-widget-content '
-                                       + 'ui-state-default ui-corner-all 
ui-state-highlight remove' )
+                               .removeClass( 'tagadata-choice 
ui-widget-content '
+                                       + 'ui-state-default ui-corner-all 
remove' )
                                .empty()
                                .off( '.' + this.widgetName )
                                .text( text );
@@ -185,16 +180,12 @@
                        usedLabels = [];
 
                this._$tagList.children( '.tagadata-choice' ).each( function() {
-                       var $tag = $( this );
+                       var $tag = $( this ),
+                               tagLabel = self.getTagLabel( $tag );
 
-                       // Check if already removed but still assigned till 
animations end:
-                       if ( !$tag.hasClass( 'tagadata-choice-removed' ) ) {
-                               var tagLabel = self.getTagLabel( $tag );
-
-                               if ( tagLabel !== '' && $.inArray( tagLabel, 
usedLabels ) === -1 ) {
-                                       $tags = $tags.add( this );
-                                       usedLabels.push( tagLabel );
-                               }
+                       if ( tagLabel !== '' && $.inArray( tagLabel, usedLabels 
) === -1 ) {
+                               $tags = $tags.add( this );
+                               usedLabels.push( tagLabel );
                        }
                } );
                return $tags;
@@ -262,29 +253,6 @@
        },
 
        /**
-        * Highlights a tag for a short time.
-        *
-        * @param {jQuery} $tag
-        */
-       highlightTag: function( $tag ) {
-               $tag.switchClass(
-                       '',
-                       'tagadata-choice-existing ui-state-highlight',
-                       150,
-                       'linear',
-                       function() {
-                               // also remove 'remove' class to avoid confusion
-                               $tag.switchClass(
-                                       'tagadata-choice-existing 
ui-state-highlight remove',
-                                       '',
-                                       750,
-                                       'linear'
-                               );
-                       }
-               );
-       },
-
-       /**
         * Adds a new tag to the list of tags. If the tag exists in the list 
already, the existing tag
         * will be returned.
         *
@@ -299,10 +267,6 @@
                var $tag = this.getTag( value );
 
                if ( $tag ) {
-                       if ( value !== '' ) {
-                               // highlight the already existing tag, except 
if it is the new tag input
-                               this.highlightTag( $tag );
-                       }
                        return $tag;
                }
 
@@ -412,7 +376,6 @@
                                        // Remove tag if hit ENTER on an empty 
tag, except for the helper tag.
                                        if ( $targetTag.get( 0 ) !== $tag.get( 
0 ) ) {
                                                self.removeTag( $tag );
-                                               self.highlightTag( $targetTag );
                                        }
                                }
                                $targetTag.find( 'input' ).focus();
@@ -527,14 +490,9 @@
         * Removes a tag.
         *
         * @param {jQuery} $tag
-        * @param {boolean} [animate]
         * @return {boolean}
         */
-       removeTag: function( $tag, animate ) {
-               var self = this;
-
-               animate = animate || this.options.animate;
-
+       removeTag: function( $tag ) {
                if ( !$tag.hasClass( 'tagadata-choice' )
                        || !this._$tagList[0].contains( $tag[0] )
                ) {
@@ -549,16 +507,8 @@
                        equalTags.removeClass( 'tagadata-choice-equal' );
                }
 
-               if ( animate ) {
-                       $tag.addClass( 'tagadata-choice-removed' );
-                       $tag.fadeOut( 'fast' ).hide( 'blind', { direction: 
'horizontal' }, 'fast', function() {
-                               $tag.remove();
-                               self._trigger( 'tagRemoved', null, $tag );
-                       } );
-               } else {
-                       $tag.remove();
-                       this._trigger( 'tagRemoved', null, $tag );
-               }
+               $tag.remove();
+               this._trigger( 'tagRemoved', null, $tag );
 
                return true;
        },
@@ -569,7 +519,7 @@
        removeAll: function() {
                var self = this;
                this._$tagList.children( '.tagadata-choice' ).each( function() {
-                       self.removeTag( $( this ), false );
+                       self.removeTag( $( this ) );
                } );
        },
 
diff --git a/extensions/Wikibase/view/resources/jquery/ui/resources.php 
b/extensions/Wikibase/view/resources/jquery/ui/resources.php
index 15acae9..0d214dc 100644
--- a/extensions/Wikibase/view/resources/jquery/ui/resources.php
+++ b/extensions/Wikibase/view/resources/jquery/ui/resources.php
@@ -37,7 +37,6 @@
                        ),
                        'dependencies' => array(
                                'jquery.event.special.eachchange',
-                               'jquery.effects.blind',
                                'jquery.inputautoexpand',
                                'jquery.ui.widget',
                        ),
diff --git 
a/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.aliasesview.js
 
b/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.aliasesview.js
index a7093f4..2259722 100644
--- 
a/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.aliasesview.js
+++ 
b/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.aliasesview.js
@@ -113,7 +113,6 @@
 
                this.$list
                .tagadata( {
-                       animate: false,
                        placeholderText: mw.msg( 
'wikibase-alias-edit-placeholder' )
                } )
                .on(
diff --git 
a/extensions/Wikibase/view/tests/qunit/jquery/ui/jquery.ui.tagadata.tests.js 
b/extensions/Wikibase/view/tests/qunit/jquery/ui/jquery.ui.tagadata.tests.js
index 6ce617f..0deddb2 100644
--- a/extensions/Wikibase/view/tests/qunit/jquery/ui/jquery.ui.tagadata.tests.js
+++ b/extensions/Wikibase/view/tests/qunit/jquery/ui/jquery.ui.tagadata.tests.js
@@ -7,16 +7,15 @@
 'use strict';
 
 /**
- * @param {Object} [options]
  * @return {jQuery}
  */
-function createTagadata( options ) {
+function createTagadata() {
        return $( '<ul/>' )
                .addClass( 'test_tagadata' )
                .append( $( '<li/>' ).text( 'A' ) )
                .append( $( '<li/>' ).text( 'B' ) )
                .append( $( '<li/>' ).text( 'C' ) )
-               .tagadata( options || {} )
+               .tagadata()
                .appendTo( 'body' );
 }
 
@@ -164,7 +163,7 @@
 
 QUnit.test( 'hasConflict()', function( assert ) {
        assert.expect( 5 );
-       var $tagadata = createTagadata( { animate: false } ),
+       var $tagadata = createTagadata(),
                tagadata = $tagadata.data( 'tagadata' );
 
        assert.ok(
diff --git a/vendor/composer/autoload_classmap.php 
b/vendor/composer/autoload_classmap.php
index 223957f..84dee93 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -429,6 +429,7 @@
     'Wikibase\\Client\\Hooks\\DataUpdateHookHandlers' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/DataUpdateHookHandlers.php',
     'Wikibase\\Client\\Hooks\\DeletePageNoticeCreator' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/DeletePageNoticeCreator.php',
     'Wikibase\\Client\\Hooks\\EchoNotificationsHandlers' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/EchoNotificationsHandlers.php',
+    'Wikibase\\Client\\Hooks\\EditActionHookHandler' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/EditActionHookHandler.php',
     'Wikibase\\Client\\Hooks\\InfoActionHookHandler' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/InfoActionHookHandler.php',
     'Wikibase\\Client\\Hooks\\LanguageLinkBadgeDisplay' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/LanguageLinkBadgeDisplay.php',
     'Wikibase\\Client\\Hooks\\MovePageNotice' => $baseDir . 
'/extensions/Wikibase/client/includes/Hooks/MovePageNotice.php',
@@ -504,6 +505,7 @@
     'Wikibase\\Client\\Tests\\Hooks\\DataUpdateHookHandlersTest' => $baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/DataUpdateHookHandlersTest.php',
     'Wikibase\\Client\\Tests\\Hooks\\DeletePageNoticeCreatorTest' => $baseDir 
. 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/DeletePageNoticeCreatorTest.php',
     'Wikibase\\Client\\Tests\\Hooks\\EchoNotificationsHandlersTestCase' => 
$baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/EchoNotificationsHandlersTest.php',
+    'Wikibase\\Client\\Tests\\Hooks\\EditActionHookHandlerTest' => $baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/EditActionHookHandlerTest.php',
     'Wikibase\\Client\\Tests\\Hooks\\InfoActionHookHandlerTest' => $baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/InfoActionHookHandlerTest.php',
     'Wikibase\\Client\\Tests\\Hooks\\LanguageLinkBadgeDisplayTest' => $baseDir 
. 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/LanguageLinkBadgeDisplayTest.php',
     'Wikibase\\Client\\Tests\\Hooks\\MovePageNoticeTest' => $baseDir . 
'/extensions/Wikibase/client/tests/phpunit/includes/Hooks/MovePageNoticeTest.php',
@@ -1257,6 +1259,7 @@
     'Wikibase\\Repo\\Tests\\Parsers\\WikibaseStringValueNormalizerTest' => 
$baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Parsers/WikibaseStringValueNormalizerTest.php',
     'Wikibase\\Repo\\Tests\\Rdf\\NTriplesRdfTestHelper' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Rdf/NTriplesRdfTestHelper.php',
     'Wikibase\\Repo\\Tests\\Rdf\\RdfVocabularyTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Rdf/RdfVocabularyTest.php',
+    'Wikibase\\Repo\\Tests\\RepoHooksTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/RepoHooksTest.php',
     'Wikibase\\Repo\\Tests\\Specials\\SpecialEntitiesWithoutPageTest' => 
$baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Specials/SpecialEntitiesWithoutPageTest.php',
     'Wikibase\\Repo\\Tests\\Specials\\SpecialEntityDataTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Specials/SpecialEntityDataTest.php',
     'Wikibase\\Repo\\Tests\\Specials\\SpecialGoToLinkedPageTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Specials/SpecialGoToLinkedPageTest.php',
@@ -1550,7 +1553,6 @@
     'Wikibase\\Test\\ViewEntityActionTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Actions/ViewEntityActionTest.php',
     'Wikibase\\Test\\WikibaseFieldDefinitionsTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Search/Elastic/Fields/WikibaseFieldDefinitionsTest.php',
     'Wikibase\\Tests\\HttpUrlPropertyOrderProviderTestMockHttp' => $baseDir . 
'/extensions/Wikibase/lib/tests/phpunit/Store/HttpUrlPropertyOrderProviderTestMockHttp.php',
-    'Wikibase\\Tests\\RepoHooksTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/RepoHooksTest.php',
     'Wikibase\\Tests\\Repo\\SiteLinkTargetProviderTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/SiteLinkTargetProviderTest.php',
     'Wikibase\\Tests\\Repo\\ValueParserFactoryTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/ValueParserFactoryTest.php',
     'Wikibase\\Tests\\Repo\\WikibaseRepoTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/WikibaseRepoTest.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 7da302e..82ca641 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1348,12 +1348,12 @@
         "source": {
             "type": "git",
             "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-            "reference": "5fcda5a30ad7b1cd139a49efde3da88199cf7ae7"
+            "reference": "7f7a926567984089c1c157da35f19260d18bd7c9"
         },
         "dist": {
             "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/5fcda5a30ad7b1cd139a49efde3da88199cf7ae7";,
-            "reference": "5fcda5a30ad7b1cd139a49efde3da88199cf7ae7",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/7f7a926567984089c1c157da35f19260d18bd7c9";,
+            "reference": "7f7a926567984089c1c157da35f19260d18bd7c9",
             "shasum": ""
         },
         "require": {
@@ -1386,7 +1386,7 @@
             "jakub-onderka/php-parallel-lint": "0.9.2",
             "mediawiki/mediawiki-codesniffer": "0.4.0|0.5.0"
         },
-        "time": "2016-10-12 08:23:19",
+        "time": "2016-10-13 08:27:02",
         "type": "mediawiki-extension",
         "installation-source": "dist",
         "autoload": {

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I22c4525411d491a26a9a8a24f4af3932e3f85739
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: master
Gerrit-Owner: WikidataBuilder <wikidata-servi...@wikimedia.de>
Gerrit-Reviewer: Addshore <addshorew...@gmail.com>
Gerrit-Reviewer: Aude <aude.w...@gmail.com>
Gerrit-Reviewer: Siebrand <siebr...@kitano.nl>
Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to