Daniel Kinzler has uploaded a new change for review.

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

Change subject: Do not use labels when linking item IDs on 
Special:ItemDisambiguation
......................................................................

Do not use labels when linking item IDs on Special:ItemDisambiguation

Bug: T45962
Change-Id: I133e0082ea0c99d4c5781b290b254eec700b0d93
---
M repo/includes/ItemDisambiguation.php
M repo/includes/specials/SpecialItemDisambiguation.php
M repo/tests/phpunit/includes/ItemDisambiguationTest.php
3 files changed, 39 insertions(+), 22 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/31/222331/1

diff --git a/repo/includes/ItemDisambiguation.php 
b/repo/includes/ItemDisambiguation.php
index 940ebf2..745afd3 100644
--- a/repo/includes/ItemDisambiguation.php
+++ b/repo/includes/ItemDisambiguation.php
@@ -5,8 +5,8 @@
 use Html;
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Term\Term;
-use Wikibase\Lib\EntityIdFormatter;
 use Wikibase\Lib\LanguageNameLookup;
+use Wikibase\Lib\Store\EntityTitleLookup;
 use Wikibase\Repo\Interactors\TermSearchResult;
 
 /**
@@ -24,9 +24,9 @@
 class ItemDisambiguation {
 
        /**
-        * @var EntityIdFormatter
+        * @var EntityTitleLookup
         */
-       private $linkFormatter;
+       private $titleLookup;
 
        /**
         * @var LanguageNameLookup
@@ -41,16 +41,16 @@
        /**
         * @since 0.5
         *
-        * @param EntityIdFormatter $linkFormatter A formatter for generating 
HTML links for a given EntityId.
+        * @param EntityTitleLookup $titleLookup
         * @param LanguageNameLookup $languageNameLookup
         * @param string $displayLanguageCode
         */
        public function __construct(
-               EntityIdFormatter $linkFormatter,
+               EntityTitleLookup $titleLookup,
                LanguageNameLookup $languageNameLookup,
                $displayLanguageCode
        ) {
-               $this->linkFormatter = $linkFormatter;
+               $this->titleLookup = $titleLookup;
                $this->languageNameLookup = $languageNameLookup;
                $this->displayLanguageCode = $displayLanguageCode;
        }
@@ -80,7 +80,7 @@
         * @return string HTML
         */
        public function getResultHtml( TermSearchResult $searchResult ) {
-               $idHtml = $this->linkFormatter->formatEntityId( 
$searchResult->getEntityId() );
+               $idHtml = $this->getIdHtml( $searchResult->getEntityId() );
 
                $displayLabel = $searchResult->getDisplayLabel();
                $displayDescription = $searchResult->getDisplayDescription();
@@ -127,6 +127,29 @@
        /**
         * Returns HTML representing the label in the display language (or an 
appropriate fallback).
         *
+        * @param EntityId|null $entityId
+        *
+        * @return string HTML
+        */
+       private function getIdHtml( EntityId $entityId = null ) {
+               $title = $this->titleLookup->getTitleForId( $entityId );
+
+               $idElement =  Html::element(
+                       'a',
+                       array(
+                               'title' => $title ? $title->getPrefixedText() : 
'',
+                               'href' => $title ? $title->getLocalURL() : '',
+                               'class' => 'wb-itemlink-id'
+                       ),
+                       $entityId->getSerialization()
+               );
+
+               return $idElement;
+       }
+
+       /**
+        * Returns HTML representing the label in the display language (or an 
appropriate fallback).
+        *
         * @param Term|null $label
         *
         * @return string HTML
diff --git a/repo/includes/specials/SpecialItemDisambiguation.php 
b/repo/includes/specials/SpecialItemDisambiguation.php
index 261947b..13f337b 100644
--- a/repo/includes/specials/SpecialItemDisambiguation.php
+++ b/repo/includes/specials/SpecialItemDisambiguation.php
@@ -87,15 +87,8 @@
        private function getItemDisambiguation() {
                if( $this->itemDisambiguation === null ) {
                        $languageNameLookup = new LanguageNameLookup();
-                       $entityIdHtmlLinkFormatter = new 
EntityIdHtmlLinkFormatter(
-                               new LanguageLabelDescriptionLookup(
-                                       new EntityRetrievingTermLookup( 
WikibaseRepo::getDefaultInstance()->getEntityLookup() ),
-                                       $this->getLanguage()->getCode()
-                               ),
-                               
WikibaseRepo::getDefaultInstance()->getEntityTitleLookup(),
-                               $languageNameLookup );
                        $this->itemDisambiguation = new ItemDisambiguation(
-                               $entityIdHtmlLinkFormatter,
+                               
WikibaseRepo::getDefaultInstance()->getEntityTitleLookup(),
                                $languageNameLookup,
                                $this->getLanguage()->getCode()
                        );
diff --git a/repo/tests/phpunit/includes/ItemDisambiguationTest.php 
b/repo/tests/phpunit/includes/ItemDisambiguationTest.php
index 2adfaaf..bd0eeba 100644
--- a/repo/tests/phpunit/includes/ItemDisambiguationTest.php
+++ b/repo/tests/phpunit/includes/ItemDisambiguationTest.php
@@ -3,11 +3,12 @@
 namespace Wikibase\Test;
 
 use MediaWikiTestCase;
+use Title;
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\DataModel\Term\Term;
 use Wikibase\ItemDisambiguation;
-use Wikibase\Lib\EntityIdFormatter;
 use Wikibase\Lib\LanguageNameLookup;
+use Wikibase\Lib\Store\EntityTitleLookup;
 use Wikibase\Repo\Interactors\TermSearchResult;
 
 /**
@@ -26,14 +27,14 @@
 class ItemDisambiguationTest extends \MediaWikiTestCase {
 
        /**
-        * @return EntityIdFormatter
+        * @return EntityTitleLookup
         */
-       private function getMockEntityIdFormatter() {
-               $entityIdFormatter = $this->getMock( 
'Wikibase\Lib\EntityIdFormatter' );
+       private function getMockEntityTitleLookup() {
+               $entityIdFormatter = $this->getMock( 
'Wikibase\Lib\Store\EntityTitleLookup' );
                $entityIdFormatter->expects( $this->any() )
-                       ->method( 'formatEntityId' )
+                       ->method( 'getTitleForId' )
                        ->will( $this->returnCallback( function( ItemId $itemId 
) {
-                               return $itemId->getSerialization();
+                               return Title::makeTitle( NS_MAIN, 
$itemId->getSerialization() );
                        } ) );
                return $entityIdFormatter;
        }
@@ -43,7 +44,7 @@
         */
        private function newItemDisambiguation() {
                return new ItemDisambiguation(
-                       $this->getMockEntityIdFormatter(),
+                       $this->getMockEntityTitleLookup(),
                        new LanguageNameLookup(),
                        'en'
                );

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I133e0082ea0c99d4c5781b290b254eec700b0d93
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Daniel Kinzler <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to