Jdlrobson has uploaded a new change for review.

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


Change subject: Cleanup Skin language and variants
......................................................................

Cleanup Skin language and variants

Change-Id: I2e339b52e780a686ebc77cf341e346aa90550571
---
M MobileFrontend.php
A includes/skins/MinervaTemplate.php
M includes/skins/SkinMobile.php
M includes/skins/SkinMobileTemplate.php
4 files changed, 72 insertions(+), 87 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MobileFrontend 
refs/changes/59/58459/1

diff --git a/MobileFrontend.php b/MobileFrontend.php
index ccb9d4f..7523124 100644
--- a/MobileFrontend.php
+++ b/MobileFrontend.php
@@ -61,6 +61,7 @@
        'UnlistedSpecialMobilePage' => 'specials/UnlistedSpecialMobilePage',
        'SpecialLoginHandshake' => 'specials/SpecialLoginHandshake',
 
+       'MinervaTemplate' => 'skins/MinervaTemplate',
        'SkinMobile' => 'skins/SkinMobile',
        'SkinMobileTemplate' => 'skins/SkinMobileTemplate',
        'SkinMobileBase' => 'skins/SkinMobileBase',
diff --git a/includes/skins/MinervaTemplate.php 
b/includes/skins/MinervaTemplate.php
new file mode 100644
index 0000000..89ce6b6
--- /dev/null
+++ b/includes/skins/MinervaTemplate.php
@@ -0,0 +1,18 @@
+<?php
+class MinervaTemplate extends BaseTemplate {
+       public function execute() {
+               parent::execute();
+       }
+
+       public function getLanguageVariants() {
+               if ( isset( $this->data['content_navigation'] ) ) {
+                       return $this->data['content_navigation']['variants'];
+               } else {
+                       return $this->data['variants'];
+               }
+       }
+
+       public function getLanguages() {
+               return $this->data['language_urls'];
+       }
+}
diff --git a/includes/skins/SkinMobile.php b/includes/skins/SkinMobile.php
index 7920091..0257f85 100644
--- a/includes/skins/SkinMobile.php
+++ b/includes/skins/SkinMobile.php
@@ -48,9 +48,10 @@
 
                $this->prepareTemplatePageContent( $tpl );
                $this->prepareTemplateLinks( $tpl );
+               $this->prepareLanguages( $tpl );
+               $this->prepareLanguageVariants( $tpl );
 
                $tpl->set( 'isMainPage', $title->isMainPage() );
-               $tpl->set( 'languageCount', count( $this->getLanguageUrls() ) + 
1 );
 
                wfProfileIn( __METHOD__ . '-modules' );
 
@@ -200,9 +201,8 @@
                                $this->getLanguage()->userTime( $timestamp, 
$user )
                        )->parse();
                        $timestamp = wfTimestamp( TS_UNIX, $timestamp );
-                       $postBodyText = $this->buildLanguageSelection();
                        // add last modified timestamp
-                       $postBodyText .= "<p id=\"mw-mf-last-modified\" 
data-timestamp=\"$timestamp\">$lastModified</p>";
+                       $postBodyText = "<p id=\"mw-mf-last-modified\" 
data-timestamp=\"$timestamp\">$lastModified</p>";
                }
 
                $htmlHeader = $this->getOutput()->getProperty( 
'mobile.htmlHeader' );
@@ -371,81 +371,8 @@
                );
        }
 
-       public function buildLanguageSelection() {
-               wfProfileIn( __METHOD__ );
-               $supportedLanguages = array();
-               if ( is_array( $this->hookOptions ) && isset( 
$this->hookOptions['supported_languages'] ) ) {
-                       $supportedLanguages = 
$this->hookOptions['supported_languages'];
-               }
-               $languageUrls = $this->getLanguageUrls();
-               $languageVariantUrls = $this->getLanguageVariantUrls();
-               if ( empty( $languageUrls ) && count( $languageVariantUrls ) <= 
1 ) {
-                       wfProfileOut( __METHOD__ );
-                       return '';
-               }
-
-               // language variants list
-               if ( count( $languageVariantUrls ) > 1 ) {
-                       $msgLanguageVariants = wfMessage( 
'mobile-frontend-language-variant-header' )->text();
-                       $languageVariants = '<p 
id="mw-mf-language-variant-header">' . $msgLanguageVariants . '</p>';
-                       $languageVariants .= Html::openElement( 'ul', array( 
'id' => 'mw-mf-language-variant-selection' ) );
-
-                       foreach ( $languageVariantUrls as $languageVariantUrl ) 
{
-                               $languageVariants .= Html::openElement( 'li' ) 
. Html::element( 'a',
-                                       array( 'href' => 
$languageVariantUrl['href'],
-                                               'lang' => 
$languageVariantUrl['lang'],
-                                               'hreflang' => 
$languageVariantUrl['lang']
-                                       ),
-                                       $languageVariantUrl['text'] ) . 
Html::closeElement( 'li' );
-                               }
-
-                       $languageVariants .= Html::closeElement( 'ul' );
-               } else {
-                       $languageVariants = '';
-               }
-
-               // languages list
-               $msgLanguages = wfMessage( 'mobile-frontend-language-header', 
count( $languageUrls ) )->text();
-               $languages = '<p id="mw-mf-language-header">' . $msgLanguages . 
'</p>';
-               $languages .= Html::openElement( 'ul', array( 'id' => 
'mw-mf-language-selection' ) );
-
-               foreach ( $languageUrls as $languageUrl ) {
-                       $languageUrlHref = $languageUrl['href'];
-                       $languageUrlLanguage = $languageUrl['language'];
-                       if ( is_array( $supportedLanguages ) && in_array( 
$languageUrl['lang'], $supportedLanguages ) ) {
-                               if ( isset( 
$this->hookOptions['toggle_view_desktop'] ) ) {
-                                       $request = $this->getRequest();
-                                       $returnto = $request->appendQuery( 
$this->hookOptions['toggle_view_desktop'] );
-                                       $languageUrlHref =  $returnto  .
-                                               urlencode( $languageUrlHref );
-                               }
-                       }
-                       $languages .= Html::openElement( 'li' ) . 
Html::element( 'a',
-                               array( 'href' => $languageUrlHref,
-                                       'lang' => $languageUrl['lang'],
-                                       'hreflang' => $languageUrl['lang']
-                               ),
-                               $languageUrlLanguage ) . Html::closeElement( 
'li' );
-               }
-
-               $languages .= Html::closeElement( 'ul' );
-
-               $heading = wfMessage( 
'mobile-frontend-language-article-heading' )->text();
-               $output = <<<HTML
-                       <div class="section" id="mw-mf-language-section">
-                               <h2 id="section_language" 
class="section_heading">{$heading}</h2>
-                               <div id="content_language" 
class="content_block">
-                                       {$languageVariants}
-                                       {$languages}
-                               </div>
-                       </div>
-HTML;
-               wfProfileOut( __METHOD__ );
-               return $output;
-       }
-
-
-       public function getLanguageUrls() {
+       // FIXME: Becomes obsolete on SkinMobileBase::outputPage removed
+       public function prepareLanguages( QuickTemplate $tpl ) {
                global $wgContLang;
 
                wfProfileIn( __METHOD__ );
@@ -472,12 +399,12 @@
                                );
                        }
                }
+               $tpl->set( 'language_urls', $languageUrls );
                wfProfileOut( __METHOD__ );
-
-               return $languageUrls;
        }
 
-       public function getLanguageVariantUrls() {
+       // FIXME: Becomes obsolete on SkinMobileBase::outputPage removed
+       public function prepareLanguageVariants( QuickTemplate $tpl ) {
                global $wgDisableLangConversion;
 
                wfProfileIn( __METHOD__ );
@@ -512,9 +439,8 @@
                        }
                }
 
+               $tpl->set( 'variants', $languageVariantUrls );
                wfProfileOut( __METHOD__ );
-
-               return $languageVariantUrls;
        }
 
        /**
diff --git a/includes/skins/SkinMobileTemplate.php 
b/includes/skins/SkinMobileTemplate.php
index 8a5c88f..1c6bcc7 100644
--- a/includes/skins/SkinMobileTemplate.php
+++ b/includes/skins/SkinMobileTemplate.php
@@ -1,7 +1,44 @@
 <?php
 
-class SkinMobileTemplate extends BaseTemplate {
+class SkinMobileTemplate extends MinervaTemplate {
+       private function renderLanguages( $data ) {
+               if ( $data['languages'] && count( $data['languages'] ) > 0 ) {
+               ?>
+               <div class="section" id="mw-mf-language-section">
+                       <h2 id="section_language" class="section_heading"><?php 
echo $data['heading']; ?></h2>
+                       <div id="content_language" class="content_block">
+                               <p id="mw-mf-language-variant-header"><?php 
echo $data['variantSummary']; ?></p>
+                               <ul id="mw-mf-language-variant-selection">
+                               <?php
+                               foreach( $data['variants'] as $key => $val ):
+                                       echo $this->makeListItem( $key, $val );
+                               endforeach;
+                               ?>
+                               </ul>
+                               <p id="mw-mf-language-header"><?php echo 
$data['languageSummary']; ?></p>
+                               <ul id="mw-mf-language-selection">
+                               <?php
+                               foreach( $data['languages'] as $key => $val ):
+                                       echo $this->makeListItem( $key, $val );
+                               endforeach;
+                               ?>
+                               </ul>
+                       </div>
+               </div>
+               <?php
+               }
+       }
+
        public function renderArticleSkin() {
+               $languages = $this->getLanguages();
+               $variants = $this->getLanguageVariants();
+               $languageData = array(
+                       'heading' => wfMessage( 
'mobile-frontend-language-article-heading' )->text(),
+                       'languages' => $languages,
+                       'variants' => $variants,
+                       'languageSummary' => wfMessage( 
'mobile-frontend-language-header', count( $languages ) )->text(),
+                       'variantSummary' => count( $variants ) > 1 ? wfMessage( 
'mobile-frontend-language-variant-header' )->text() : '',
+               );
                $this->navigationStart();
                ?>
                <?php $this->html( 'zeroRatedBanner' ) ?>
@@ -12,9 +49,12 @@
                <?php $this->renderArticleHeader() ?>
        <div class='show' id='content_wrapper'>
                        <div id="content" class="content">
-                       <?php $this->html( 'prebodytext' ) ?>
-                       <?php $this->html( 'bodytext' ) ?>
-                       <?php $this->html( 'postbodytext' ) ?>
+                       <?php
+                               $this->html( 'prebodytext' );
+                               $this->html( 'bodytext' );
+                               $this->renderLanguages( $languageData );
+                               $this->html( 'postbodytext' );
+                       ?>
                        </div><!-- close #content -->
        </div><!-- close #content_wrapper -->
                <?php

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2e339b52e780a686ebc77cf341e346aa90550571
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MobileFrontend
Gerrit-Branch: master
Gerrit-Owner: Jdlrobson <[email protected]>

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

Reply via email to