summaryrefslogtreecommitdiff
path: root/includes/Skin.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/Skin.php')
-rw-r--r--includes/Skin.php423
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 .= '&lt; ';
}
@@ -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;
}