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