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

Change subject: Emit lang and dir for fallback terms in header
......................................................................


Emit lang and dir for fallback terms in header

Change-Id: I004950863101b9a5d20970b299efbef125cbe1c8
---
M repo/includes/ParserOutput/EntityParserOutputGenerator.php
M repo/includes/ParserOutput/FallbackHintHtmlTermRenderer.php
M repo/tests/phpunit/includes/ParserOutput/FallbackHintHtmlTermRendererTest.php
M view/src/HtmlTermRenderer.php
4 files changed, 41 insertions(+), 6 deletions(-)

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



diff --git a/repo/includes/ParserOutput/EntityParserOutputGenerator.php 
b/repo/includes/ParserOutput/EntityParserOutputGenerator.php
index 149b161..ac15692 100644
--- a/repo/includes/ParserOutput/EntityParserOutputGenerator.php
+++ b/repo/includes/ParserOutput/EntityParserOutputGenerator.php
@@ -284,17 +284,21 @@
                        $this->textProvider
                ) : new EmptyEditSectionGenerator();
 
+               $languageDirectionalityLookup = new 
MediaWikiLanguageDirectionalityLookup();
                $languageNameLookup = new LanguageNameLookup( 
$this->languageCode );
                $termsListView = new TermsListView(
                        TemplateFactory::getDefaultInstance(),
                        $languageNameLookup,
                        new MediaWikiLocalizedTextProvider( $this->languageCode 
),
-                       new MediaWikiLanguageDirectionalityLookup()
+                       $languageDirectionalityLookup
                );
 
                $textInjector = new TextInjector();
                $entityTermsView = new PlaceholderEmittingEntityTermsView(
-                       new FallbackHintHtmlTermRenderer( $languageNameLookup ),
+                       new FallbackHintHtmlTermRenderer(
+                               $languageDirectionalityLookup,
+                               $languageNameLookup
+                       ),
                        $labelDescriptionLookup,
                        $this->templateFactory,
                        $editSectionGenerator,
diff --git a/repo/includes/ParserOutput/FallbackHintHtmlTermRenderer.php 
b/repo/includes/ParserOutput/FallbackHintHtmlTermRenderer.php
index 3c4b61b..3f7447f 100644
--- a/repo/includes/ParserOutput/FallbackHintHtmlTermRenderer.php
+++ b/repo/includes/ParserOutput/FallbackHintHtmlTermRenderer.php
@@ -7,6 +7,7 @@
 use Wikibase\Lib\LanguageFallbackIndicator;
 use Wikibase\Lib\LanguageNameLookup;
 use Wikibase\View\HtmlTermRenderer;
+use Wikibase\View\LanguageDirectionalityLookup;
 
 /**
  * @since 0.5
@@ -22,19 +23,36 @@
        private $languageFallbackIndicator;
 
        /**
+        * @var LanguageDirectionalityLookup
+        */
+       private $languageDirectionalityLookup;
+
+       /**
         * @param LanguageNameLookup $languageNameLookup
         */
-       public function __construct( LanguageNameLookup $languageNameLookup ) {
+       public function __construct(
+               LanguageDirectionalityLookup $languageDirectionalityLookup,
+               LanguageNameLookup $languageNameLookup
+       ) {
                $this->languageFallbackIndicator = new 
LanguageFallbackIndicator( $languageNameLookup );
+               $this->languageDirectionalityLookup = 
$languageDirectionalityLookup;
        }
 
        /**
         * @param Term $term
-        * @return string HTML
+        * @return string HTML representing the term; This will be used in an 
HTML language and directionality context
+        *   that corresponds to $term->getLanguageCode().
         */
        public function renderTerm( Term $term ) {
                $html = htmlspecialchars( $term->getText() );
                if ( $term instanceof TermFallback ) {
+                       $actualLanguageCode = $term->getActualLanguageCode();
+                       if ( $actualLanguageCode !== $term->getLanguageCode() ) 
{
+                               $html = '<span ' .
+                                       'lang="' . htmlspecialchars( 
$actualLanguageCode ) . '" ' .
+                                       'dir="' . ( 
$this->languageDirectionalityLookup->getDirectionality( $actualLanguageCode ) 
?: 'auto' ) . '"' .
+                               '>' . $html . '</span>';
+                       }
                        $html .= $this->languageFallbackIndicator->getHtml( 
$term );
                }
                return $html;
diff --git 
a/repo/tests/phpunit/includes/ParserOutput/FallbackHintHtmlTermRendererTest.php 
b/repo/tests/phpunit/includes/ParserOutput/FallbackHintHtmlTermRendererTest.php
index c5eca9e..a434e53 100644
--- 
a/repo/tests/phpunit/includes/ParserOutput/FallbackHintHtmlTermRendererTest.php
+++ 
b/repo/tests/phpunit/includes/ParserOutput/FallbackHintHtmlTermRendererTest.php
@@ -6,6 +6,7 @@
 use Wikibase\DataModel\Term\Term;
 use Wikibase\DataModel\Term\TermFallback;
 use Wikibase\Lib\LanguageNameLookup;
+use Wikibase\Repo\MediaWikiLanguageDirectionalityLookup;
 use Wikibase\Repo\ParserOutput\FallbackHintHtmlTermRenderer;
 
 /**
@@ -17,9 +18,11 @@
 class FallbackHintHtmlTermRendererTest extends PHPUnit_Framework_TestCase {
 
        private function newHtmlTermRenderer() {
+               $languageDirectionalityLookup = new 
MediaWikiLanguageDirectionalityLookup();
                $languageNameLookup = $this->getMock( LanguageNameLookup::class 
);
 
                return new FallbackHintHtmlTermRenderer(
+                       $languageDirectionalityLookup,
                        $languageNameLookup
                );
        }
@@ -36,7 +39,16 @@
                                        'de',
                                        'de'
                                ),
-                               'lkt &amp; term<sup 
class="wb-language-fallback-indicator wb-language-fallback-variant"></sup>'
+                               '<span lang="de" dir="ltr">lkt &amp; 
term</span><sup class="wb-language-fallback-indicator 
wb-language-fallback-variant"></sup>'
+                       ],
+                       [
+                               new TermFallback(
+                                       'en',
+                                       'arc term',
+                                       'arc',
+                                       'arc'
+                               ),
+                               '<span lang="arc" dir="rtl">arc term</span><sup 
class="wb-language-fallback-indicator"></sup>'
                        ],
                ];
        }
diff --git a/view/src/HtmlTermRenderer.php b/view/src/HtmlTermRenderer.php
index c474d3f..6308144 100644
--- a/view/src/HtmlTermRenderer.php
+++ b/view/src/HtmlTermRenderer.php
@@ -14,7 +14,8 @@
 
        /**
         * @param Term $term
-        * @return string HTML
+        * @return string HTML representing the term; This will be used in an 
HTML language and directionality context
+        *   that corresponds to $term->getLanguageCode().
         */
        public function renderTerm( Term $term );
 

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I004950863101b9a5d20970b299efbef125cbe1c8
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Adrian Heine <[email protected]>
Gerrit-Reviewer: Adrian Heine <[email protected]>
Gerrit-Reviewer: Daniel Kinzler <[email protected]>
Gerrit-Reviewer: Jonas Kress (WMDE) <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to