X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FSkin.php;h=9118db939c1448fe6a2da68d32a162b494ee2ed4;hb=b36244532ec7e340dec933308c29621344ded1db;hp=821b6ea802a0b23c942e25f96f5393fb7f387854;hpb=a70213071d2bd8214d03c54f67ffbfca1ad3bec6;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Skin.php b/includes/Skin.php index 821b6ea802..9118db939c 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 @@ -277,7 +277,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 +285,7 @@ class Skin extends Linker { public function setTitle( $t ) { $this->mTitle = $t; } - + /** Get the title */ public function getTitle() { return $this->mTitle; @@ -319,7 +319,7 @@ class Skin extends Linker { $out->out( $out->mBodytext . "\n" ); $out->out( $this->afterContent() ); - + $out->out( $afterContent ); $out->out( $this->bottomScripts() ); @@ -331,23 +331,17 @@ class Skin extends Linker { } static function makeVariablesScript( $data ) { - global $wgJsMimeType; - - $doneFirstVar = false; - $r = array( "\n"; - - return implode( $r ); } /** @@ -362,7 +356,7 @@ class Skin extends Linker { $skinName = $skinName['skinname']; } global $wgScript, $wgTitle, $wgStylePath, $wgUser; - global $wgArticlePath, $wgScriptPath, $wgServer, $wgContLang, $wgLang, $wgVariant; + global $wgArticlePath, $wgScriptPath, $wgServer, $wgContLang, $wgLang; global $wgCanonicalNamespaceNames, $wgOut, $wgArticle; global $wgBreakFrames, $wgRequest, $wgVariantArticlePath, $wgActionPaths; global $wgUseAjax, $wgAjaxWatch; @@ -385,6 +379,7 @@ class Skin extends Linker { implode( "\t", $digitTransTable ), ); + $mainPage = Title::newFromText( wfMsgForContent( 'mainpage' ) ); $vars = array( 'skin' => $skinName, 'stylepath' => $wgStylePath, @@ -404,7 +399,6 @@ class Skin extends Linker { 'wgIsArticle' => $wgOut->isArticle(), 'wgUserName' => $wgUser->isAnon() ? NULL : $wgUser->getName(), 'wgUserGroups' => $wgUser->isAnon() ? NULL : $wgUser->getEffectiveGroups(), - 'wgUserVariant' => $wgVariant->getCode(), 'wgUserLanguage' => $wgLang->getCode(), 'wgContentLanguage' => $wgContLang->getCode(), 'wgBreakFrames' => $wgBreakFrames, @@ -414,11 +408,19 @@ class Skin extends Linker { 'wgEnableWriteAPI' => $wgEnableWriteAPI, 'wgSeparatorTransformTable' => $compactSeparatorTransTable, 'wgDigitTransformTable' => $compactDigitTransTable, + 'wgMainPageTitle' => $mainPage ? $mainPage->getPrefixedText() : null, ); - if ( !( $wgContLang->hasVariants() ) ) { - unset( $vars['wgUserVariant'] ); + if ( $wgContLang->hasVariants() ) { + $vars['wgUserVariant'] = $wgContLang->getPreferredVariant(); + } + + //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 +451,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 +458,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 $vars . "\n" . $out->mScripts; } /** @@ -512,7 +506,9 @@ class Skin extends Linker { return false; if( !$wgRequest->wasPosted() ) return false; - if( !$this->mTitle->userCanEditCssJsSubpage() ) + if( !$this->mTitle->userCanEditCssSubpage() ) + return false; + if( !$this->mTitle->userCanEditJsSubpage() ) return false; return $wgUser->matchEditToken( $wgRequest->getVal( 'wpEditToken' ) ); @@ -529,15 +525,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 +546,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 +569,7 @@ class Skin extends Linker { wfProfileOut( __METHOD__ ); return $s; } - + /** * Split for easier subclassing in SkinSimple, SkinStandard and SkinCologneBlue */ @@ -606,6 +607,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; } @@ -626,8 +631,8 @@ END; ); // Add any extension CSS - foreach( $out->getExtStyle() as $tag ) { - $out->addStyle( $tag['href'] ); + foreach ( $out->getExtStyle() as $url ) { + $out->addStyle( $url ); } // If we use the site's dynamic CSS, throw that in, too @@ -707,12 +712,12 @@ END; $a['onload'] = $wgOut->getOnloadHandler(); $a['class'] = 'mediawiki' . - ' '.( $wgContLang->isRTL() ? 'rtl' : 'ltr' ). + ' '.( $wgContLang->getDir() ). ' '.$this->getPageClasses( $this->mTitle ) . ' skin-'. Sanitizer::escapeClass( $this->getSkinName() ); return $a; } - + function getPageClasses( $title ) { $numeric = 'ns-'.$title->getNamespace(); if( $title->getNamespace() == NS_SPECIAL ) { @@ -771,13 +776,13 @@ END; } elseif( $left ) { $s .= $this->getQuickbarCompensator( $rows ); } - $l = $wgContLang->isRTL() ? 'right' : 'left'; + $l = $wgContLang->alignStart(); $s .= "\n"; $s .= $this->topLinks(); $s .= "

" . $this->pageTitleLinks() . "

\n"; - $r = $wgContLang->isRTL() ? 'left' : 'right'; + $r = $wgContLang->alignEnd(); $s .= "\n"; $s .= $this->nameAndLogin(); $s .= "\n
" . $this->searchForm() . ""; @@ -815,7 +820,7 @@ END; // Use Unicode bidi embedding override characters, // to make sure links don't smash each other up in ugly ways. - $dir = $wgContLang->isRTL() ? 'rtl' : 'ltr'; + $dir = $wgContLang->getDir(); $embed = ""; $pop = ''; @@ -894,14 +899,11 @@ END; $classes = 'catlinks'; - if( strpos( $catlinks, '