diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2012-05-03 13:01:35 +0200 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2012-05-03 13:01:35 +0200 |
commit | d9022f63880ce039446fba8364f68e656b7bf4cb (patch) | |
tree | 16b40fbf17bf7c9ee6f4ead25b16dd192378050a /includes/Skin.php | |
parent | 27cf83d177256813e2e802241085fce5dd0f3fb9 (diff) |
Update to MediaWiki 1.19.0
Diffstat (limited to 'includes/Skin.php')
-rw-r--r-- | includes/Skin.php | 423 |
1 files changed, 203 insertions, 220 deletions
diff --git a/includes/Skin.php b/includes/Skin.php index 83e9ee98..430537d4 100644 --- a/includes/Skin.php +++ b/includes/Skin.php @@ -22,7 +22,7 @@ abstract class Skin extends ContextSource { /** * Fetch the set of available skins. - * @return array of strings + * @return associative array of strings */ static function getSkinNames() { global $wgValidSkinNames; @@ -55,6 +55,18 @@ abstract class Skin extends ContextSource { } return $wgValidSkinNames; } + + /** + * Fetch the skinname messages for available skins. + * @return array of strings + */ + static function getSkinNameMessages() { + $messages = array(); + foreach( self::getSkinNames() as $skinKey => $skinName ) { + $messages[] = "skinname-$skinKey"; + } + return $messages; + } /** * Fetch the list of usable skins in regards to $wgSkipSkins. @@ -156,25 +168,22 @@ abstract class Skin extends ContextSource { } } } - $skin = new $className; + $skin = new $className( $key ); return $skin; } - /** @return string path to the skin stylesheet */ - function getStylesheet() { - return 'common/wikistandard.css'; - } - /** @return string skin name */ public function getSkinName() { return $this->skinname; } + /** + * @param $out OutputPage + */ function initPage( OutputPage $out ) { wfProfileIn( __METHOD__ ); $this->preloadExistence(); - $this->setMembers(); wfProfileOut( __METHOD__ ); } @@ -189,7 +198,7 @@ abstract class Skin extends ContextSource { $titles = array( $user->getUserPage(), $user->getTalkPage() ); // Other tab link - if ( $this->getTitle()->getNamespace() == NS_SPECIAL ) { + if ( $this->getTitle()->isSpecialPage() ) { // nothing } elseif ( $this->getTitle()->isTalkPage() ) { $titles[] = $this->getTitle()->getSubjectPage(); @@ -203,13 +212,6 @@ abstract class Skin extends ContextSource { } /** - * Set some local variables - */ - protected function setMembers() { - $this->userpage = $this->getUser()->getUserPage()->getPrefixedText(); - } - - /** * Get the current revision ID * * @return Integer @@ -282,7 +284,7 @@ abstract class Skin extends ContextSource { $this->mRelevantUser = User::newFromName( $rootUser, false ); } else { $user = User::newFromName( $rootUser, false ); - if ( $user->isLoggedIn() ) { + if ( $user && $user->isLoggedIn() ) { $this->mRelevantUser = $user; } } @@ -295,8 +297,12 @@ abstract class Skin extends ContextSource { * Outputs the HTML generated by other functions. * @param $out OutputPage */ - abstract function outputPage( OutputPage $out ); + abstract function outputPage( OutputPage $out = null ); + /** + * @param $data array + * @return string + */ static function makeVariablesScript( $data ) { if ( $data ) { return Html::inlineScript( @@ -308,103 +314,9 @@ abstract class Skin extends ContextSource { } /** - * To make it harder for someone to slip a user a fake - * user-JavaScript or user-CSS preview, a random token - * is associated with the login session. If it's not - * passed back with the preview request, we won't render - * the code. - * - * @param $action String: 'edit', 'submit' etc. - * @return bool - */ - public function userCanPreview( $action ) { - if ( $action != 'submit' ) { - return false; - } - if ( !$this->getRequest()->wasPosted() ) { - return false; - } - if ( !$this->getTitle()->userCanEditCssSubpage() ) { - return false; - } - if ( !$this->getTitle()->userCanEditJsSubpage() ) { - return false; - } - - return $this->getUser()->matchEditToken( - $this->getRequest()->getVal( 'wpEditToken' ) ); - } - - /** - * Generated JavaScript action=raw&gen=js - * This used to load MediaWiki:Common.js and the skin-specific style - * before the ResourceLoader. - * - * @deprecated since 1.18 Use the ResourceLoader instead. This may be removed at some - * point. - * @param $skinName String: If set, overrides the skin name - * @return String - */ - public function generateUserJs( $skinName = null ) { - return ''; - } - - /** - * Generate user stylesheet for action=raw&gen=css - * - * @deprecated since 1.18 Use the ResourceLoader instead. This may be removed at some - * point. - * @return String - */ - public function generateUserStylesheet() { - return ''; - } - - /** - * @private - * @todo document - * @param $out OutputPage - */ - function setupUserCss( OutputPage $out ) { - global $wgUseSiteCss, $wgAllowUserCss, $wgAllowUserCssPrefs; - - wfProfileIn( __METHOD__ ); - - $this->setupSkinUserCss( $out ); - // Add any extension CSS - foreach ( $out->getExtStyle() as $url ) { - $out->addStyle( $url ); - } - - // Per-site custom styles - if ( $wgUseSiteCss ) { - $out->addModuleStyles( array( 'site', 'noscript' ) ); - if( $this->getUser()->isLoggedIn() ){ - $out->addModuleStyles( 'user.groups' ); - } - } - - // Per-user custom styles - if ( $wgAllowUserCss ) { - if ( $this->getTitle()->isCssSubpage() && $this->userCanPreview( $this->getRequest()->getVal( 'action' ) ) ) { - // @todo FIXME: Properly escape the cdata! - $out->addInlineStyle( $this->getRequest()->getText( 'wpTextbox1' ) ); - } else { - $out->addModuleStyles( 'user' ); - } - } - - // Per-user preference styles - if ( $wgAllowUserCssPrefs ) { - $out->addModuleStyles( 'user.options' ); - } - - wfProfileOut( __METHOD__ ); - } - - /** * Make a <script> tag containing global variables * + * @deprecated in 1.19 * @param $unused Unused * @return string HTML fragment */ @@ -449,10 +361,9 @@ abstract class Skin extends ContextSource { * @return String */ function getPageClasses( $title ) { - global $wgRequest; $numeric = 'ns-' . $title->getNamespace(); - if ( $title->getNamespace() == NS_SPECIAL ) { + if ( $title->isSpecialPage() ) { $type = 'ns-special'; // bug 23315: provide a class based on the canonical special page name without subpages list( $canonicalName ) = SpecialPageFactory::resolveAlias( $title->getDBkey() ); @@ -468,13 +379,8 @@ abstract class Skin extends ContextSource { } $name = Sanitizer::escapeClass( 'page-' . $title->getPrefixedText() ); - - if ( $wgRequest->getVal('action') ) { - $action = 'action-' . $wgRequest->getVal('action'); - } else { - $action = 'action-view'; - } - return "$numeric $type $name $action"; + + return "$numeric $type $name"; } /** @@ -497,43 +403,47 @@ abstract class Skin extends ContextSource { return $wgLogo; } + /** + * @return string + */ function getCategoryLinks() { global $wgUseCategoryBrowser; $out = $this->getOutput(); + $allCats = $out->getCategoryLinks(); - if ( count( $out->mCategoryLinks ) == 0 ) { + if ( !count( $allCats ) ) { return ''; } $embed = "<li>"; $pop = "</li>"; - $allCats = $out->getCategoryLinks(); $s = ''; - $colon = wfMsgExt( 'colon-separator', 'escapenoentities' ); + $colon = $this->msg( 'colon-separator' )->escaped(); if ( !empty( $allCats['normal'] ) ) { $t = $embed . implode( "{$pop}{$embed}" , $allCats['normal'] ) . $pop; - $msg = wfMsgExt( 'pagecategories', array( 'parsemag', 'escapenoentities' ), count( $allCats['normal'] ) ); - $s .= '<div id="mw-normal-catlinks">' . - Linker::link( Title::newFromText( wfMsgForContent( 'pagecategorieslink' ) ), $msg ) + $msg = $this->msg( 'pagecategories', count( $allCats['normal'] ) )->escaped(); + $linkPage = wfMessage( 'pagecategorieslink' )->inContentLanguage()->text(); + $s .= '<div id="mw-normal-catlinks" class="mw-normal-catlinks">' . + Linker::link( Title::newFromText( $linkPage ), $msg ) . $colon . '<ul>' . $t . '</ul>' . '</div>'; } # Hidden categories if ( isset( $allCats['hidden'] ) ) { if ( $this->getUser()->getBoolOption( 'showhiddencats' ) ) { - $class = 'mw-hidden-cats-user-shown'; + $class = ' mw-hidden-cats-user-shown'; } elseif ( $this->getTitle()->getNamespace() == NS_CATEGORY ) { - $class = 'mw-hidden-cats-ns-shown'; + $class = ' mw-hidden-cats-ns-shown'; } else { - $class = 'mw-hidden-cats-hidden'; + $class = ' mw-hidden-cats-hidden'; } - $s .= "<div id=\"mw-hidden-catlinks\" class=\"$class\">" . - wfMsgExt( 'hidden-categories', array( 'parsemag', 'escapenoentities' ), count( $allCats['hidden'] ) ) . + $s .= "<div id=\"mw-hidden-catlinks\" class=\"mw-hidden-catlinks$class\">" . + $this->msg( 'hidden-categories', count( $allCats['hidden'] ) )->escaped() . $colon . '<ul>' . $embed . implode( "{$pop}{$embed}" , $allCats['hidden'] ) . $pop . '</ul>' . '</div>'; } @@ -577,12 +487,15 @@ abstract class Skin extends ContextSource { # add our current element to the list $eltitle = Title::newFromText( $element ); - $return .= Linker::link( $eltitle, $eltitle->getText() ); + $return .= Linker::link( $eltitle, htmlspecialchars( $eltitle->getText() ) ); } return $return; } + /** + * @return string + */ function getCategories() { $out = $this->getOutput(); @@ -645,15 +558,21 @@ abstract class Skin extends ContextSource { protected function generateDebugHTML() { global $wgShowDebug; + $html = MWDebug::getDebugHTML( $this->getContext() ); + if ( $wgShowDebug ) { $listInternals = $this->formatDebugHTML( $this->getOutput()->mDebugtext ); - return "\n<hr />\n<strong>Debug data:</strong><ul id=\"mw-debug-html\">" . + $html .= "\n<hr />\n<strong>Debug data:</strong><ul id=\"mw-debug-html\">" . $listInternals . "</ul>\n"; } - return ''; + return $html; } + /** + * @param $debugText string + * @return string + */ private function formatDebugHTML( $debugText ) { global $wgDebugTimestamps; @@ -665,7 +584,7 @@ abstract class Skin extends ContextSource { $pre = ''; if ( $wgDebugTimestamps ) { $matches = array(); - if ( preg_match( '/^(\d+\.\d+\s{2})/', $line, $matches ) ) { + if ( preg_match( '/^(\d+\.\d+ {1,3}\d+.\dM\s{2})/', $line, $matches ) ) { $pre = $matches[1]; $line = substr( $line, strlen( $pre ) ); } @@ -706,14 +625,14 @@ abstract class Skin extends ContextSource { /** * This gets called shortly before the </body> tag. - * @param $out OutputPage object + * * @return String HTML-wrapped JS code to be put before </body> */ - function bottomScripts( $out ) { + function bottomScripts() { // TODO and the suckage continues. This function is really just a wrapper around // OutputPage::getBottomScripts() which takes a Skin param. This should be cleaned // up at some point - $bottomScriptText = $out->getBottomScripts( $this ); + $bottomScriptText = $this->getOutput()->getBottomScripts(); wfRunHooks( 'SkinAfterBottomScripts', array( $this, &$bottomScriptText ) ); return $bottomScriptText; @@ -733,9 +652,12 @@ abstract class Skin extends ContextSource { // oldid not available for non existing pages $url = htmlspecialchars( $this->getTitle()->getCanonicalURL() ); } - return wfMsg( 'retrievedfrom', '<a href="' . $url . '">' . $url . '</a>' ); + return $this->msg( 'retrievedfrom', '<a href="' . $url . '">' . $url . '</a>' )->text(); } + /** + * @return String + */ function getUndeleteLink() { $action = $this->getRequest()->getVal( 'action', 'view' ); @@ -751,22 +673,20 @@ abstract class Skin extends ContextSource { $msg = 'viewdeleted'; } - return wfMsg( - $msg, - Linker::link( + return $this->msg( $msg )->rawParams( + Linker::linkKnown( SpecialPage::getTitleFor( 'Undelete', $this->getTitle()->getPrefixedDBkey() ), - wfMsgExt( 'restorelink', array( 'parsemag', 'escape' ), $this->getLang()->formatNum( $n ) ), - array(), - array(), - array( 'known', 'noclasses' ) - ) - ); + $this->msg( 'restorelink' )->numParams( $n )->escaped() ) + )->text(); } } return ''; } + /** + * @return string + */ function subPageSubtitle() { $out = $this->getOutput(); $subpages = ''; @@ -790,18 +710,15 @@ abstract class Skin extends ContextSource { $linkObj = Title::newFromText( $growinglink ); if ( is_object( $linkObj ) && $linkObj->exists() ) { - $getlink = $this->link( + $getlink = Linker::linkKnown( $linkObj, - htmlspecialchars( $display ), - array(), - array(), - array( 'known', 'noclasses' ) + htmlspecialchars( $display ) ); $c++; if ( $c > 1 ) { - $subpages .= wfMsgExt( 'pipe-separator', 'escapenoentities' ); + $subpages .= $this->msg( 'pipe-separator' )->escaped(); } else { $subpages .= '< '; } @@ -828,22 +745,30 @@ abstract class Skin extends ContextSource { return $wgShowIPinHeader && session_id() != ''; } + /** + * @return String + */ function getSearchLink() { $searchPage = SpecialPage::getTitleFor( 'Search' ); return $searchPage->getLocalURL(); } + /** + * @return string + */ function escapeSearchLink() { return htmlspecialchars( $this->getSearchLink() ); } + /** + * @param $type string + * @return string + */ function getCopyright( $type = 'detect' ) { - global $wgRightsPage, $wgRightsUrl, $wgRightsText; + global $wgRightsPage, $wgRightsUrl, $wgRightsText, $wgContLang; if ( $type == 'detect' ) { - $diff = $this->getRequest()->getVal( 'diff' ); - - if ( is_null( $diff ) && !$this->isRevisionCurrent() && wfMsgForContent( 'history_copyright' ) !== '-' ) { + if ( !$this->isRevisionCurrent() && !$this->msg( 'history_copyright' )->inContentLanguage()->isDisabled() ) { $type = 'history'; } else { $type = 'normal'; @@ -856,8 +781,6 @@ abstract class Skin extends ContextSource { $msg = 'copyright'; } - $out = ''; - if ( $wgRightsPage ) { $title = Title::newFromText( $wgRightsPage ); $link = Linker::linkKnown( $title, $wgRightsText ); @@ -867,7 +790,7 @@ abstract class Skin extends ContextSource { $link = $wgRightsText; } else { # Give up now - return $out; + return ''; } // Allow for site and per-namespace customization of copyright notice. @@ -875,15 +798,21 @@ abstract class Skin extends ContextSource { wfRunHooks( 'SkinCopyrightFooter', array( $this->getTitle(), $type, &$msg, &$link, &$forContent ) ); + $msgObj = $this->msg( $msg )->rawParams( $link ); if ( $forContent ) { - $out .= wfMsgForContent( $msg, $link ); + $msg = $msgObj->inContentLanguage()->text(); + if ( $this->getLanguage()->getCode() !== $wgContLang->getCode() ) { + $msg = Html::rawElement( 'span', array( 'lang' => $wgContLang->getHtmlCode(), 'dir' => $wgContLang->getDir() ), $msg ); + } + return $msg; } else { - $out .= wfMsg( $msg, $link ); + return $msgObj->text(); } - - return $out; } + /** + * @return null|string + */ function getCopyrightIcon() { global $wgRightsUrl, $wgRightsText, $wgRightsIcon, $wgCopyrightIcon; @@ -918,7 +847,7 @@ abstract class Skin extends ContextSource { global $wgStylePath; $url = htmlspecialchars( "$wgStylePath/common/images/poweredby_mediawiki_88x31.png" ); - $text = '<a href="http://www.mediawiki.org/"><img src="' . $url . '" height="31" width="88" alt="Powered by MediaWiki" /></a>'; + $text = '<a href="//www.mediawiki.org/"><img src="' . $url . '" height="31" width="88" alt="Powered by MediaWiki" /></a>'; wfRunHooks( 'SkinGetPoweredBy', array( &$text, $this ) ); return $text; } @@ -926,31 +855,35 @@ abstract class Skin extends ContextSource { /** * Get the timestamp of the latest revision, formatted in user language * - * @param $article Article object. Used if we're working with the current revision * @return String */ - protected function lastModified( $article ) { - if ( !$this->isRevisionCurrent() ) { + protected function lastModified() { + $timestamp = $this->getOutput()->getRevisionTimestamp(); + + # No cached timestamp, load it from the database + if ( $timestamp === null ) { $timestamp = Revision::getTimestampFromId( $this->getTitle(), $this->getRevisionId() ); - } else { - $timestamp = $article->getTimestamp(); } if ( $timestamp ) { - $d = $this->getLang()->date( $timestamp, true ); - $t = $this->getLang()->time( $timestamp, true ); - $s = ' ' . wfMsg( 'lastmodifiedat', $d, $t ); + $d = $this->getLanguage()->userDate( $timestamp, $this->getUser() ); + $t = $this->getLanguage()->userTime( $timestamp, $this->getUser() ); + $s = ' ' . $this->msg( 'lastmodifiedat', $d, $t )->text(); } else { $s = ''; } if ( wfGetLB()->getLaggedSlaveMode() ) { - $s .= ' <strong>' . wfMsg( 'laggedslavemode' ) . '</strong>'; + $s .= ' <strong>' . $this->msg( 'laggedslavemode' )->text() . '</strong>'; } return $s; } + /** + * @param $align string + * @return string + */ function logoText( $align = '' ) { if ( $align != '' ) { $a = " align='{$align}'"; @@ -958,9 +891,9 @@ abstract class Skin extends ContextSource { $a = ''; } - $mp = wfMsg( 'mainpage' ); + $mp = $this->msg( 'mainpage' )->escaped(); $mptitle = Title::newMainPage(); - $url = ( is_object( $mptitle ) ? $mptitle->escapeLocalURL() : '' ); + $url = ( is_object( $mptitle ) ? htmlspecialchars( $mptitle->getLocalURL() ) : '' ); $logourl = $this->getLogo(); $s = "<a href='{$url}'><img{$a} src='{$logourl}' alt='[{$mp}]' /></a>"; @@ -997,31 +930,33 @@ abstract class Skin extends ContextSource { * @return string */ function mainPageLink() { - $s = Linker::link( + $s = Linker::linkKnown( Title::newMainPage(), - wfMsg( 'mainpage' ), - array(), - array(), - array( 'known', 'noclasses' ) + $this->msg( 'mainpage' )->escaped() ); return $s; } + /** + * @param $desc + * @param $page + * @return string + */ public function footerLink( $desc, $page ) { // if the link description has been set to "-" in the default language, - if ( wfMsgForContent( $desc ) == '-' ) { + if ( $this->msg( $desc )->inContentLanguage()->isDisabled() ) { // then it is disabled, for all languages. return ''; } else { // Otherwise, we display the link for the user, described in their // language (which may or may not be the same as the default language), // but we make the link target be the one site-wide page. - $title = Title::newFromText( wfMsgForContent( $page ) ); + $title = Title::newFromText( $this->msg( $page )->inContentLanguage()->text() ); return Linker::linkKnown( $title, - wfMsgExt( $desc, array( 'parsemag', 'escapenoentities' ) ) + $this->msg( $desc )->escaped() ); } } @@ -1067,8 +1002,16 @@ abstract class Skin extends ContextSource { return $options; } + /** + * @param $id User|int + * @return bool + */ function showEmailUser( $id ) { - $targetUser = User::newFromId( $id ); + if ( $id instanceof User ) { + $targetUser = $id; + } else { + $targetUser = User::newFromId( $id ); + } return $this->getUser()->canSendEmail() && # the sending user must have a confirmed email address $targetUser->canReceiveEmail(); # the target user must have a confirmed email address and allow emails from users } @@ -1098,6 +1041,11 @@ abstract class Skin extends ContextSource { } /* these are used extensively in SkinTemplate, but also some other places */ + + /** + * @param $urlaction string + * @return String + */ static function makeMainPageUrl( $urlaction = '' ) { $title = Title::newMainPage(); self::checkTitle( $title, '' ); @@ -1105,22 +1053,43 @@ abstract class Skin extends ContextSource { return $title->getLocalURL( $urlaction ); } + /** + * @param $name string + * @param $urlaction string + * @return String + */ static function makeSpecialUrl( $name, $urlaction = '' ) { $title = SpecialPage::getSafeTitleFor( $name ); return $title->getLocalURL( $urlaction ); } + /** + * @param $name string + * @param $subpage string + * @param $urlaction string + * @return String + */ static function makeSpecialUrlSubpage( $name, $subpage, $urlaction = '' ) { $title = SpecialPage::getSafeTitleFor( $name, $subpage ); return $title->getLocalURL( $urlaction ); } + /** + * @param $name string + * @param $urlaction string + * @return String + */ static function makeI18nUrl( $name, $urlaction = '' ) { $title = Title::newFromText( wfMsgForContent( $name ) ); self::checkTitle( $title, $name ); return $title->getLocalURL( $urlaction ); } + /** + * @param $name string + * @param $urlaction string + * @return String + */ static function makeUrl( $name, $urlaction = '' ) { $title = Title::newFromText( $name ); self::checkTitle( $title, $name ); @@ -1142,7 +1111,13 @@ abstract class Skin extends ContextSource { } } - # this can be passed the NS number as defined in Language.php + /** + * this can be passed the NS number as defined in Language.php + * @param $name + * @param $urlaction string + * @param $namespace int + * @return String + */ static function makeNSUrl( $name, $urlaction = '', $namespace = NS_MAIN ) { $title = Title::makeTitleSafe( $namespace, $name ); self::checkTitle( $title, $name ); @@ -1150,7 +1125,12 @@ abstract class Skin extends ContextSource { return $title->getLocalURL( $urlaction ); } - /* these return an array with the 'href' and boolean 'exists' */ + /** + * these return an array with the 'href' and boolean 'exists' + * @param $name + * @param $urlaction string + * @return array + */ static function makeUrlDetails( $name, $urlaction = '' ) { $title = Title::newFromText( $name ); self::checkTitle( $title, $name ); @@ -1177,7 +1157,12 @@ abstract class Skin extends ContextSource { ); } - # make sure we have some title to operate on + /** + * make sure we have some title to operate on + * + * @param $title Title + * @param $name string + */ static function checkTitle( &$title, $name ) { if ( !is_object( $title ) ) { $title = Title::newFromText( $name ); @@ -1193,13 +1178,13 @@ abstract class Skin extends ContextSource { * @return array */ function buildSidebar() { - global $parserMemc, $wgEnableSidebarCache, $wgSidebarCacheExpiry; + global $wgMemc, $wgEnableSidebarCache, $wgSidebarCacheExpiry; wfProfileIn( __METHOD__ ); - $key = wfMemcKey( 'sidebar', $this->getLang()->getCode() ); + $key = wfMemcKey( 'sidebar', $this->getLanguage()->getCode() ); if ( $wgEnableSidebarCache ) { - $cachedsidebar = $parserMemc->get( $key ); + $cachedsidebar = $wgMemc->get( $key ); if ( $cachedsidebar ) { wfProfileOut( __METHOD__ ); return $cachedsidebar; @@ -1211,7 +1196,7 @@ abstract class Skin extends ContextSource { wfRunHooks( 'SkinBuildSidebar', array( $this, &$bar ) ); if ( $wgEnableSidebarCache ) { - $parserMemc->set( $key, $bar, $wgSidebarCacheExpiry ); + $wgMemc->set( $key, $bar, $wgSidebarCacheExpiry ); } wfProfileOut( __METHOD__ ); @@ -1223,7 +1208,7 @@ abstract class Skin extends ContextSource { * * This is just a wrapper around addToSidebarPlain() for backwards compatibility * - * @param &$bar array + * @param $bar array * @param $message String */ function addToSidebar( &$bar, $message ) { @@ -1233,7 +1218,7 @@ abstract class Skin extends ContextSource { /** * Add content from plain text * @since 1.17 - * @param &$bar array + * @param $bar array * @param $text string * @return Array */ @@ -1246,6 +1231,7 @@ abstract class Skin extends ContextSource { if ( strpos( $line, '*' ) !== 0 ) { continue; } + $line = rtrim( $line, "\r" ); // for Windows compat if ( strpos( $line, '**' ) !== 0 ) { $heading = trim( $line, '* ' ); @@ -1260,13 +1246,13 @@ abstract class Skin extends ContextSource { $line = array_map( 'trim', explode( '|', $line, 2 ) ); if ( count( $line ) !== 2 ) { // Second sanity check, could be hit by people doing - // funky stuff with parserfuncs... (bug 3321) + // funky stuff with parserfuncs... (bug 33321) continue; } $extraAttribs = array(); - $msgLink = wfMessage( $line[0] )->inContentLanguage(); + $msgLink = $this->msg( $line[0] )->inContentLanguage(); if ( $msgLink->exists() ) { $link = $msgLink->text(); if ( $link == '-' ) { @@ -1275,7 +1261,7 @@ abstract class Skin extends ContextSource { } else { $link = $line[0]; } - $msgText = wfMessage( $line[1] ); + $msgText = $this->msg( $line[1] ); if ( $msgText->exists() ) { $text = $msgText->text(); } else { @@ -1284,13 +1270,13 @@ abstract class Skin extends ContextSource { if ( preg_match( '/^(?:' . wfUrlProtocols() . ')/', $link ) ) { $href = $link; - + // Parser::getExternalLinkAttribs won't work here because of the Namespace things global $wgNoFollowLinks, $wgNoFollowDomainExceptions; if ( $wgNoFollowLinks && !wfMatchesDomainList( $href, $wgNoFollowDomainExceptions ) ) { $extraAttribs['rel'] = 'nofollow'; } - + global $wgExternalLinkTarget; if ( $wgExternalLinkTarget) { $extraAttribs['target'] = $wgExternalLinkTarget; @@ -1300,7 +1286,7 @@ abstract class Skin extends ContextSource { if ( $title ) { $title = $title->fixSpecialName(); - $href = $title->getLocalURL(); + $href = $title->getLinkURL(); } else { $href = 'INVALID-TITLE'; } @@ -1322,10 +1308,9 @@ abstract class Skin extends ContextSource { } /** - * Should we include common/wikiprintable.css? Skins that have their own + * Should we load mediawiki.legacy.wikiprintable? Skins that have their own * print stylesheet should override this and return false. (This is an - * ugly hack to get Monobook to play nicely with - * OutputPage::headElement().) + * ugly hack to get Monobook to play nicely with OutputPage::headElement().) * * @return bool */ @@ -1348,33 +1333,31 @@ abstract class Skin extends ContextSource { $userTalkTitle = $userTitle->getTalkPage(); if ( !$userTalkTitle->equals( $out->getTitle() ) ) { - $newMessagesLink = $this->link( + $newMessagesLink = Linker::linkKnown( $userTalkTitle, - wfMsgHtml( 'newmessageslink' ), + $this->msg( 'newmessageslink' )->escaped(), array(), - array( 'redirect' => 'no' ), - array( 'known', 'noclasses' ) + array( 'redirect' => 'no' ) ); - $newMessagesDiffLink = $this->link( + $newMessagesDiffLink = Linker::linkKnown( $userTalkTitle, - wfMsgHtml( 'newmessagesdifflink' ), + $this->msg( 'newmessagesdifflink' )->escaped(), array(), - array( 'diff' => 'cur' ), - array( 'known', 'noclasses' ) + array( 'diff' => 'cur' ) ); - $ntl = wfMsg( + $ntl = $this->msg( 'youhavenewmessages', $newMessagesLink, $newMessagesDiffLink - ); + )->text(); # Disable Squid cache $out->setSquidMaxage( 0 ); } } elseif ( count( $newtalks ) ) { // _>" " for BC <= 1.16 - $sep = str_replace( '_', ' ', wfMsgHtml( 'newtalkseparator' ) ); + $sep = str_replace( '_', ' ', $this->msg( 'newtalkseparator' )->escaped() ); $msgs = array(); foreach ( $newtalks as $newtalk ) { @@ -1384,7 +1367,7 @@ abstract class Skin extends ContextSource { ); } $parts = implode( $sep, $msgs ); - $ntl = wfMsgHtml( 'youhavenewmessagesmulti', $parts ); + $ntl = $this->msg( 'youhavenewmessagesmulti' )->rawParams( $parts )->escaped(); $out->setSquidMaxage( 0 ); } @@ -1413,7 +1396,7 @@ abstract class Skin extends ContextSource { return false; } } else { - $msg = wfMessage( $name )->inContentLanguage(); + $msg = $this->msg( $name )->inContentLanguage(); if( $msg->isDisabled() ) { wfProfileOut( __METHOD__ ); return false; @@ -1441,7 +1424,7 @@ abstract class Skin extends ContextSource { } $notice = Html::rawElement( 'div', array( 'id' => 'localNotice', - 'lang' => $wgContLang->getCode(), 'dir' => $wgContLang->getDir() ), $notice ); + 'lang' => $wgContLang->getHtmlCode(), 'dir' => $wgContLang->getDir() ), $notice ); wfProfileOut( __METHOD__ ); return $notice; } |