X-Git-Url: http://git.cyclocoop.org/%28?a=blobdiff_plain;f=includes%2FSkin.php;h=8f7a950077d2e132a2fd6ed5c7164f5c8f63c7f3;hb=4c2d645ef3966dc75fa4c4aa6cbe2b5d87c60c69;hp=15842bc75249820bb8436906ccc2fdff64dbd37d;hpb=7051b7b2441dc0677e362df230e0d06d5854e634;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Skin.php b/includes/Skin.php index 15842bc752..8f7a950077 100644 --- a/includes/Skin.php +++ b/includes/Skin.php @@ -62,7 +62,7 @@ class Skin extends Linker { } return $wgValidSkinNames; } - + /** * Fetch the list of usable skins in regards to $wgSkipSkins. * Useful for Special:Preferences and other places where you @@ -178,15 +178,17 @@ class Skin extends Linker { wfProfileIn( __METHOD__ ); + # Add favicons and Apple touch icons, if they're not the defaults + # # Generally the order of the favicon and apple-touch-icon links # should not matter, but Konqueror (3.5.9 at least) incorrectly # uses whichever one appears later in the HTML source. Make sure # apple-touch-icon is specified first to avoid this. - if( false !== $wgAppleTouchIcon ) { + if( false !== $wgAppleTouchIcon && wfExpandUrl('/apple-touch-icon.png') != wfExpandUrl($wgAppleTouchIcon) ) { $out->addLink( array( 'rel' => 'apple-touch-icon', 'href' => $wgAppleTouchIcon ) ); } - if( false !== $wgFavicon ) { + if( false !== $wgFavicon && wfExpandUrl('/favicon.ico') != wfExpandUrl($wgFavicon) ) { $out->addLink( array( 'rel' => 'shortcut icon', 'href' => $wgFavicon ) ); } @@ -277,7 +279,7 @@ class Skin extends Linker { $this->userpage = $wgUser->getUserPage()->getPrefixedText(); $this->usercss = false; } - + /** * Set the title * @param Title $t The title to use @@ -285,7 +287,7 @@ class Skin extends Linker { public function setTitle( $t ) { $this->mTitle = $t; } - + /** Get the title */ public function getTitle() { return $this->mTitle; @@ -319,7 +321,7 @@ class Skin extends Linker { $out->out( $out->mBodytext . "\n" ); $out->out( $this->afterContent() ); - + $out->out( $afterContent ); $out->out( $this->bottomScripts() ); @@ -333,21 +335,13 @@ class Skin extends Linker { static function makeVariablesScript( $data ) { global $wgJsMimeType; - $doneFirstVar = false; - $r = array( "\n"; - - return implode( $r ); + $r[] = "/*]]>*/\n"; + return implode( "\n\t\t", $r ); } /** @@ -418,7 +412,14 @@ class Skin extends Linker { if ( !( $wgContLang->hasVariants() ) ) { unset( $vars['wgUserVariant'] ); } - + + //if on upload page output the extension list & js_upload + if( SpecialPage::resolveAlias( $wgTitle->getDBkey() ) == "Upload" ){ + global $wgFileExtensions, $wgAjaxUploadInterface; + $vars['wgFileExtensions'] = $wgFileExtensions; + $vars['wgAjaxUploadInterface'] = $wgAjaxUploadInterface; + } + if( $wgUseAjax && $wgEnableMWSuggest && !$wgUser->getOption( 'disablesuggest', false ) ){ $vars['wgMWSuggestTemplate'] = SearchEngine::getMWSuggestTemplate(); $vars['wgDBname'] = $wgDBname; @@ -449,7 +450,6 @@ class Skin extends Linker { return self::makeVariablesScript( $vars ); } - /** * Return a random selection of the scripts we want in the header, * according to no particular rhyme or reason. Various other scripts are @@ -457,41 +457,34 @@ class Skin extends Linker { * various files. This entire hackish system needs to be burned to the * ground and rebuilt. * - * @var $allowUserJs bool Should probably be identical to $wgAllowUserJs, - * but is passed as a local variable for some - * obscure reason. - * @var $extraHtml string A bunch of raw HTML to jam into some arbitrary - * place where MonoBook has historically wanted it. - * Old-style skins formerly put it in a different - * place, but if either of those is broken it's - * likely to be the old-style skins. - * @return string Raw HTML to output in some location in the that's - * entirely arbitrary but which will probably break - * everything if you put it someplace else. + * @param $out OutputPage object, should be $wgOut + * + * @return string Raw HTML to output to */ - function getHeadScripts( $allowUserJs, $extraHtml = '' ) { - global $wgStylePath, $wgUser, $wgJsMimeType, $wgStyleVersion; + function getHeadScripts( OutputPage $out ) { + global $wgStylePath, $wgUser, $wgJsMimeType, $wgStyleVersion, $wgOut; + global $wgUseSiteJs; $vars = self::makeGlobalVariablesScript( $this->getSkinName() ); - $r = array( "\n$extraHtml" ); - global $wgUseSiteJs; + //moved wikibits to be called earlier on + //$out->addScriptFile( "{$wgStylePath}/common/wikibits.js" ); if( $wgUseSiteJs ) { $jsCache = $wgUser->isLoggedIn() ? '&smaxage=0' : ''; - $r[] = ""; + urlencode( $this->getSkinName() ) + ) + ); } - if( $allowUserJs && $wgUser->isLoggedIn() ) { + if( $out->isUserJsAllowed() && $wgUser->isLoggedIn() ) { $userpage = $wgUser->getUserPage(); - $userjs = htmlspecialchars( self::makeUrl( + $userjs = self::makeUrl( $userpage->getPrefixedText().'/'.$this->getSkinName().'.js', - 'action=raw&ctype='.$wgJsMimeType ) ); - $r[] = '"; + 'action=raw&ctype='.$wgJsMimeType ); + $wgOut->addScriptFile( $userjs ); } - return $vars . "\t" . implode ( "\n\t", $r ); + return "\t" . $vars . "\t" . $out->mScripts; } /** @@ -529,15 +522,20 @@ class Skin extends Linker { * top. For now Monobook.js will be maintained, but it should be consi- * dered deprecated. * + * @param force_skin lets you override the skin name + * * @return string */ - public function generateUserJs() { + public function generateUserJs( $skinName = null) { global $wgStylePath; wfProfileIn( __METHOD__ ); + if(!$skinName){ + $skinName = $this->getSkinName(); + } $s = "/* generated javascript */\n"; - $s .= "var skin = '" . Xml::escapeJsString( $this->getSkinName() ) . "';\n"; + $s .= "var skin = '" . Xml::escapeJsString($skinName ) . "';\n"; $s .= "var stylepath = '" . Xml::escapeJsString( $wgStylePath ) . "';"; $s .= "\n\n/* MediaWiki:Common.js */\n"; $commonJs = wfMsgForContent( 'common.js' ); @@ -545,10 +543,10 @@ class Skin extends Linker { $s .= $commonJs; } - $s .= "\n\n/* MediaWiki:".ucfirst( $this->getSkinName() ).".js */\n"; + $s .= "\n\n/* MediaWiki:".ucfirst( $skinName ).".js */\n"; // avoid inclusion of non defined user JavaScript (with custom skins only) // by checking for default message content - $msgKey = ucfirst( $this->getSkinName() ).'.js'; + $msgKey = ucfirst( $skinName ).'.js'; $userJS = wfMsgForContent( $msgKey ); if ( !wfEmptyMsg( $msgKey, $userJS ) ) { $s .= $userJS; @@ -568,7 +566,7 @@ class Skin extends Linker { wfProfileOut( __METHOD__ ); return $s; } - + /** * Split for easier subclassing in SkinSimple, SkinStandard and SkinCologneBlue */ @@ -606,6 +604,10 @@ END; if( !$wgUser->getOption( 'editsection' ) ) { $s .= ".editsection { display: none; }\n"; } + $fontstyle = $wgUser->getOption( 'editfont' ); + if ( $fontstyle !== 'default' ) { + $s .= "textarea { font-family: $fontstyle; }\n"; + } return $s; } @@ -712,7 +714,7 @@ END; ' skin-'. Sanitizer::escapeClass( $this->getSkinName() ); return $a; } - + function getPageClasses( $title ) { $numeric = 'ns-'.$title->getNamespace(); if( $title->getNamespace() == NS_SPECIAL ) { @@ -1381,7 +1383,7 @@ END; $element[] = $this->emailUserLink(); } } - + $s = implode( $element, $sep ); if ( $this->mTitle->getArticleId() ) { @@ -1472,7 +1474,7 @@ END; // Allow for site and per-namespace customization of copyright notice. if( isset($wgArticle) ) wfRunHooks( 'SkinCopyrightFooter', array( $wgArticle->getTitle(), $type, &$msg, &$link ) ); - + $out .= wfMsgForContent( $msg, $link ); return $out; } @@ -1654,7 +1656,7 @@ END; function editUrlOptions() { global $wgArticle; - $options = array( 'action' => 'edit' ); + $options = array( 'action' => 'edit' ); if( $this->mRevisionId && ! $wgArticle->isCurrent() ) { $options['oldid'] = intval( $this->mRevisionId ); @@ -1743,7 +1745,7 @@ END; SpecialPage::getTitleFor( 'Movepage' ), wfMsg( 'movethispage' ), array(), - array( 'target' => $this->mTitle->getPrefixedURL() ), + array( 'target' => $this->mTitle->getPrefixedDBkey() ), array( 'known', 'noclasses' ) ); } else { @@ -1844,7 +1846,7 @@ END; $text = $wgContLang->getLanguageName( $nt->getInterwiki() ); if ( '' == $text ) { $text = $l; } - $style = $this->getExternalLinkAttributes( $l, $text ); + $style = $this->getExternalLinkAttributes(); $s .= "{$text}"; } if( $wgContLang->isRTL() ) $s .= ''; @@ -2080,9 +2082,9 @@ END; } /** - * Should we include common/wikiprintable.css? 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 + * Should we include common/wikiprintable.css? 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().) * * @return bool @@ -2090,4 +2092,4 @@ END; public function commonPrintStylesheet() { return true; } -} +} \ No newline at end of file