X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FSkinTemplate.php;h=414312ac91cd6b4c401eafbdfb31309e467fbc88;hb=aceb322ede0ccfc7b47094b6f2ad3c8e9accd689;hp=77ea307303a7582f5f43a77a098a9d658c46fd0b;hpb=111fc60bbdb545cf86abaa0623f878478e29c6e1;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/SkinTemplate.php b/includes/SkinTemplate.php index 77ea307303..18e36ba426 100644 --- a/includes/SkinTemplate.php +++ b/includes/SkinTemplate.php @@ -130,44 +130,63 @@ class SkinTemplate extends Skin { */ public function getLanguages() { global $wgHideInterlanguageLinks; - $out = $this->getOutput(); + if ( $wgHideInterlanguageLinks ) { + return array(); + } + $userLang = $this->getLanguage(); + $languageLinks = array(); - # 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 ); - } + foreach ( $this->getOutput()->getLanguageLinks() as $languageLinkText ) { + $languageLinkParts = explode( ':', $languageLinkText, 2 ); + $class = 'interlanguage-link interwiki-' . $languageLinkParts[0]; + unset( $languageLinkParts ); - // CLDR extension or similar is required to localize the language name; - // otherwise we'll end up with the autonym again. - $ilLangLocalName = Language::fetchLanguageName( $ilInterwikiCode, $userLang->getCode() ); - - $language_urls[] = array( - 'href' => $languageLinkTitle->getFullURL(), - 'text' => $ilLangName, - 'title' => wfMessage( 'interlanguage-link-title', $languageLinkTitle->getText(), $ilLangLocalName )->text(), - 'class' => $class, - 'lang' => wfBCP47( $ilInterwikiCode ), - 'hreflang' => wfBCP47( $ilInterwikiCode ), - ); + $languageLinkTitle = Title::newFromText( $languageLinkText ); + if ( $languageLinkTitle ) { + $ilInterwikiCode = $languageLinkTitle->getInterwiki(); + $ilLangName = Language::fetchLanguageName( $ilInterwikiCode ); + + if ( strval( $ilLangName ) === '' ) { + $ilLangName = $languageLinkText; + } else { + $ilLangName = $this->formatLanguageName( $ilLangName ); } + + // CLDR extension or similar is required to localize the language name; + // otherwise we'll end up with the autonym again. + $ilLangLocalName = Language::fetchLanguageName( + $ilInterwikiCode, + $userLang->getCode() + ); + + $languageLinkTitleText = $languageLinkTitle->getText(); + if ( $languageLinkTitleText === '' ) { + $ilTitle = wfMessage( + 'interlanguage-link-title-langonly', + $ilLangLocalName + )->text(); + } else { + $ilTitle = wfMessage( + 'interlanguage-link-title', + $languageLinkTitleText, + $ilLangLocalName + )->text(); + } + + $ilInterwikiCodeBCP47 = wfBCP47( $ilInterwikiCode ); + $languageLinks[] = array( + 'href' => $languageLinkTitle->getFullURL(), + 'text' => $ilLangName, + 'title' => $ilTitle, + 'class' => $class, + 'lang' => $ilInterwikiCodeBCP47, + 'hreflang' => $ilInterwikiCodeBCP47, + ); } } - return $language_urls; + + return $languageLinks; } protected function setupTemplateForOutput() { @@ -228,7 +247,6 @@ class SkinTemplate extends Skin { } $out = $this->getOutput(); - $user = $this->getUser(); wfProfileIn( __METHOD__ . '-init' ); $this->initPage( $out ); @@ -253,10 +271,9 @@ class SkinTemplate extends Skin { * initialize various variables and generate the template * * @since 1.23 - * @param $out OutputPage * @return QuickTemplate the template to be executed by outputPage */ - protected function prepareQuickTemplate( OutputPage $out = null ) { + protected function prepareQuickTemplate() { global $wgContLang, $wgScript, $wgStylePath, $wgMimeType, $wgJsMimeType, $wgXhtmlNamespaces, $wgHtml5Version, $wgDisableCounters, $wgSitename, $wgLogo, $wgMaxCredits, @@ -267,6 +284,7 @@ class SkinTemplate extends Skin { $title = $this->getTitle(); $request = $this->getRequest(); + $out = $this->getOutput(); $tpl = $this->setupTemplateForOutput(); wfProfileIn( __METHOD__ . '-stuff-head' ); @@ -741,7 +759,7 @@ class SkinTemplate extends Skin { $personal_urls[$login_id] = $login_url; } - wfRunHooks( 'PersonalUrls', array( &$personal_urls, &$title ) ); + wfRunHooks( 'PersonalUrls', array( &$personal_urls, &$title, $this ) ); wfProfileOut( __METHOD__ ); return $personal_urls; } @@ -1020,7 +1038,9 @@ class SkinTemplate extends Skin { } } - if ( $title->getNamespace() !== NS_MEDIAWIKI && $title->quickUserCan( 'protect', $user ) && $title->getRestrictionTypes() ) { + if ( $title->quickUserCan( 'protect', $user ) && $title->getRestrictionTypes() && + MWNamespace::getRestrictionLevels( $title->getNamespace(), $user ) !== array( '' ) + ) { $mode = $title->isProtected() ? 'unprotect' : 'protect'; $content_navigation['actions'][$mode] = array( 'class' => ( $onPage && $action == $mode ) ? 'selected' : false, @@ -1383,15 +1403,6 @@ abstract class QuickTemplate { echo htmlspecialchars( $this->data[$str] ); } - /** - * @private - * @deprecated since 1.21; use Xml::encodeJsVar() or Xml::encodeJsCall() instead - */ - function jstext( $str ) { - wfDeprecated( __METHOD__, '1.21' ); - echo Xml::escapeJsString( $this->data[$str] ); - } - /** * @private */ @@ -1450,6 +1461,20 @@ abstract class QuickTemplate { public function getSkin() { return $this->data['skin']; } + + /** + * Fetch the output of a QuickTemplate and return it + * + * @since 1.23 + * @return String + */ + public function getHTML() { + ob_start(); + $this->execute(); + $html = ob_get_contents(); + ob_end_clean(); + return $html; + } } /**