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

Change subject: Get label of badge in SiteLinksView
......................................................................


Get label of badge in SiteLinksView

Instead of the serialized entity id the label of the badge item is
displayed if it is available in the user's current language.

Bug: 68183
Change-Id: Iaab6fcd34b3e5831e971158250c1040d3f56de02
---
M repo/includes/ItemView.php
M repo/includes/View/SiteLinksView.php
M repo/tests/phpunit/includes/View/SiteLinksViewTest.php
3 files changed, 77 insertions(+), 9 deletions(-)

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



diff --git a/repo/includes/ItemView.php b/repo/includes/ItemView.php
index 7c25614..ec4f80d 100644
--- a/repo/includes/ItemView.php
+++ b/repo/includes/ItemView.php
@@ -74,12 +74,15 @@
         * @return string
         */
        public function getHtmlForSiteLinks( Item $item, $editable = true ) {
-               $groups = 
WikibaseRepo::getDefaultInstance()->getSettings()->getSetting( 'siteLinkGroups' 
);
+               $wikibaseRepo = WikibaseRepo::getDefaultInstance();
+               $groups = $wikibaseRepo->getSettings()->getSetting( 
'siteLinkGroups' );
 
                // FIXME: Inject this
                $siteLinksView = new SiteLinksView(
-                       
WikibaseRepo::getDefaultInstance()->getSiteStore()->getSites(),
-                       $this->sectionEditLinkGenerator
+                       $wikibaseRepo->getSiteStore()->getSites(),
+                       $this->sectionEditLinkGenerator,
+                       $wikibaseRepo->getEntityLookup(),
+                       $this->getLanguage()->getCode()
                );
 
                $itemId = $item->getId();
diff --git a/repo/includes/View/SiteLinksView.php 
b/repo/includes/View/SiteLinksView.php
index edd37c9..95f7be1 100644
--- a/repo/includes/View/SiteLinksView.php
+++ b/repo/includes/View/SiteLinksView.php
@@ -8,8 +8,10 @@
 use Sanitizer;
 use Site;
 use SiteList;
+use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\DataModel\SiteLink;
+use Wikibase\Lib\Store\EntityLookup;
 use Wikibase\Repo\WikibaseRepo;
 use Wikibase\Utils;
 
@@ -35,6 +37,16 @@
        private $sectionEditLinkGenerator;
 
        /**
+        * @var EntityLookup
+        */
+       private $entityLookup;
+
+       /**
+        * @var string
+        */
+       private $languageCode;
+
+       /**
         * @var string[]
         */
        private $specialSiteLinkGroups;
@@ -44,9 +56,12 @@
         */
        private $badgeItems;
 
-       public function __construct( SiteList $sites, SectionEditLinkGenerator 
$sectionEditLinkGenerator ) {
+       public function __construct( SiteList $sites, SectionEditLinkGenerator 
$sectionEditLinkGenerator,
+                       EntityLookup $entityLookup, $languageCode ) {
                $this->sites = $sites;
                $this->sectionEditLinkGenerator = $sectionEditLinkGenerator;
+               $this->entityLookup = $entityLookup;
+               $this->languageCode = $languageCode;
 
                // @todo inject option/objects instead of using the singleton
                $repo = WikibaseRepo::getDefaultInstance();
@@ -362,7 +377,7 @@
                                'span',
                                array(
                                        'class' => $classes,
-                                       'title' => $serialization // @todo get 
label here
+                                       'title' => $this->getTitleForBadge( 
$badge )
                                )
                        );
                }
@@ -370,4 +385,26 @@
                return $html;
        }
 
+       /**
+        * Returns the title for the given badge id.
+        * @todo use TermLookup when we have one
+        *
+        * @param EntityId $badgeId
+        *
+        * @return string
+        */
+       private function getTitleForBadge( EntityId $badgeId ) {
+               $entity = $this->entityLookup->getEntity( $badgeId );
+               if ( $entity === null ) {
+                       return $badgeId->getSerialization();
+               }
+
+               $labels = $entity->getFingerprint()->getLabels();
+               if ( $labels->hasTermForLanguage( $this->languageCode ) ) {
+                       return $labels->getByLanguage( $this->languageCode 
)->getText();
+               } else {
+                       return $badgeId->getSerialization();
+               }
+       }
+
 }
diff --git a/repo/tests/phpunit/includes/View/SiteLinksViewTest.php 
b/repo/tests/phpunit/includes/View/SiteLinksViewTest.php
index e78560c..ae1bf37 100644
--- a/repo/tests/phpunit/includes/View/SiteLinksViewTest.php
+++ b/repo/tests/phpunit/includes/View/SiteLinksViewTest.php
@@ -2,12 +2,13 @@
 
 namespace Wikibase\Test;
 
-use Language;
 use MediaWikiSite;
 use SiteList;
+use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Entity\Item;
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\DataModel\SiteLink;
+use Wikibase\Lib\Store\EntityLookup;
 use Wikibase\Repo\View\SectionEditLinkGenerator;
 use Wikibase\Repo\WikibaseRepo;
 use Wikibase\Repo\View\SiteLinksView;
@@ -195,7 +196,8 @@
                                        'descendant' => array(
                                                'tag' => 'span',
                                                'attributes' => array(
-                                                       'class' => 'wb-badge 
wb-badge-Q42 wb-badge-featuredarticle'
+                                                       'class' => 'wb-badge 
wb-badge-Q42 wb-badge-featuredarticle',
+                                                       'title' => 'Featured 
article'
                                                )
                                        )
                                )
@@ -210,7 +212,8 @@
                                        'descendant' => array(
                                                'tag' => 'span',
                                                'attributes' => array(
-                                                       'class' => 'wb-badge 
wb-badge-Q12 wb-badge-goodarticle'
+                                                       'class' => 'wb-badge 
wb-badge-Q12 wb-badge-goodarticle',
+                                                       'title' => 'Q12'
                                                )
                                        )
                                )
@@ -275,7 +278,9 @@
        private function getSiteLinksView() {
                return new SiteLinksView(
                        $this->newSiteList(),
-                       $this->getSectionEditLinkGeneratorMock()
+                       $this->getSectionEditLinkGeneratorMock(),
+                       $this->getEntityLookupMock(),
+                       'en'
                );
        }
 
@@ -320,4 +325,27 @@
                return new SiteList( array( $dummySite, $dummySite2, 
$dummySite3 ) );
        }
 
+       /**
+        * @return EntityLookup
+        */
+       private function getEntityLookupMock() {
+               $entityLookup = $this->getMockBuilder( 
'Wikibase\Lib\Store\EntityLookup' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+
+               $entityLookup->expects( $this->any() )
+                       ->method( 'getEntity' )
+                       ->will( $this->returnCallback( function( EntityId 
$entityId ) {
+                               if ( $entityId->getSerialization() === 'Q42' ) {
+                                       $item = Item::newEmpty();
+                                       $item->setLabel( 'en', 'Featured 
article' );
+                                       return $item;
+                               } else {
+                                       return null;
+                               }
+                       } ) );
+
+               return $entityLookup;
+       }
+
 }

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Iaab6fcd34b3e5831e971158250c1040d3f56de02
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Bene <benestar.wikime...@gmail.com>
Gerrit-Reviewer: Hoo man <h...@online.de>
Gerrit-Reviewer: WikidataJenkins <wikidata-servi...@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