From da953994c843ba2782949d66c006631944ee5aaf Mon Sep 17 00:00:00 2001 From: jrobson Date: Thu, 18 Apr 2013 22:54:54 -0700 Subject: [PATCH] Separate language generation from outputPage Helps with readability - outputPage function is extremely long Also helps with extensions of SkinTemplate that override outputPage (for example skin in MobileFrontend) See related change id: I04b625c8d76bb6a061e3201847bf97185c6b7a29 Change-Id: I4a49e704f6fe72c74ecb9103fb081aed93a86de7 --- includes/SkinTemplate.php | 76 +++++++++++++++++++++++---------------- 1 file changed, 45 insertions(+), 31 deletions(-) diff --git a/includes/SkinTemplate.php b/includes/SkinTemplate.php index fee3058ac1..460212199d 100644 --- a/includes/SkinTemplate.php +++ b/includes/SkinTemplate.php @@ -122,6 +122,49 @@ class SkinTemplate extends Skin { return new $classname(); } + /** + * Generates array of language links for the current page + * + * @return array + * @public + */ + public function getLanguages() { + global $wgHideInterlanguageLinks; + $out = $this->getOutput(); + + # Language links + $language_urls = array(); + + if ( !$wgHideInterlanguageLinks ) { + foreach( $out->getLanguageLinks() as $languageLinkText ) { + $languageLinkParts = explode( ':', $languageLinkText, 2 ); + $class = 'interwiki-' . $languageLinkParts[0]; + unset( $languageLinkParts ); + $languageLinkTitle = Title::newFromText( $languageLinkText ); + if ( $languageLinkTitle ) { + $ilInterwikiCode = $languageLinkTitle->getInterwiki(); + $ilLangName = Language::fetchLanguageName( $ilInterwikiCode ); + + if ( strval( $ilLangName ) === '' ) { + $ilLangName = $languageLinkText; + } else { + $ilLangName = $this->formatLanguageName( $ilLangName ); + } + + $language_urls[] = array( + 'href' => $languageLinkTitle->getFullURL(), + 'text' => $ilLangName, + 'title' => $languageLinkTitle->getText(), + 'class' => $class, + 'lang' => $ilInterwikiCode, + 'hreflang' => $ilInterwikiCode + ); + } + } + } + return $language_urls; + } + /** * initialize various variables and generate the template * @@ -132,7 +175,7 @@ class SkinTemplate extends Skin { global $wgScript, $wgStylePath; global $wgMimeType, $wgJsMimeType; global $wgXhtmlDefaultNamespace, $wgXhtmlNamespaces, $wgHtml5Version; - global $wgDisableCounters, $wgSitename, $wgLogo, $wgHideInterlanguageLinks; + global $wgDisableCounters, $wgSitename, $wgLogo; global $wgMaxCredits, $wgShowCreditsIfMax; global $wgPageShowWatchingUsers; global $wgArticlePath, $wgScriptPath, $wgServer; @@ -409,36 +452,7 @@ class SkinTemplate extends Skin { $out->mBodytext = Html::rawElement( 'div', $realBodyAttribs, $out->mBodytext ); $tpl->setRef( 'bodytext', $out->mBodytext ); - # Language links - $language_urls = array(); - - if ( !$wgHideInterlanguageLinks ) { - foreach( $out->getLanguageLinks() as $languageLinkText ) { - $languageLinkParts = explode( ':', $languageLinkText, 2 ); - $class = 'interwiki-' . $languageLinkParts[0]; - unset( $languageLinkParts ); - $languageLinkTitle = Title::newFromText( $languageLinkText ); - if ( $languageLinkTitle ) { - $ilInterwikiCode = $languageLinkTitle->getInterwiki(); - $ilLangName = Language::fetchLanguageName( $ilInterwikiCode ); - - if ( strval( $ilLangName ) === '' ) { - $ilLangName = $languageLinkText; - } else { - $ilLangName = $this->formatLanguageName( $ilLangName ); - } - - $language_urls[] = array( - 'href' => $languageLinkTitle->getFullURL(), - 'text' => $ilLangName, - 'title' => $languageLinkTitle->getText(), - 'class' => $class, - 'lang' => $ilInterwikiCode, - 'hreflang' => $ilInterwikiCode - ); - } - } - } + $language_urls = $this->getLanguages(); if ( count( $language_urls ) ) { $tpl->setRef( 'language_urls', $language_urls ); } else { -- 2.20.1