diff options
Diffstat (limited to 'skins')
27 files changed, 2770 insertions, 547 deletions
diff --git a/skins/CologneBlue.php b/skins/CologneBlue.php index 08389c43..6862274a 100644 --- a/skins/CologneBlue.php +++ b/skins/CologneBlue.php @@ -17,8 +17,11 @@ if( !defined( 'MEDIAWIKI' ) ) */ class SkinCologneBlue extends Skin { + private $searchboxes = ''; + // How many search boxes have we made? Avoid duplicate id's. + function getStylesheet() { - return "common/cologneblue.css?2"; + return 'common/cologneblue.css'; } function getSkinName() { return "cologneblue"; @@ -81,7 +84,7 @@ class SkinCologneBlue extends Skin { $s .= "<td class='bottom' align='center' valign='top'>"; $s .= $this->bottomLinks(); - $s .= "\n<br />" . $this->makeKnownLink( wfMsgForContent( "mainpage" ) ) . " | " + $s .= "\n<br />" . $this->makeKnownLinkObj( Title::newMainPage() ) . " | " . $this->aboutLink() . " | " . $this->searchForm( wfMsg( "qbfind" ) ); @@ -135,7 +138,7 @@ class SkinCologneBlue extends Skin { } $s = "" . - $this->makeKnownLink( wfMsgForContent( "mainpage" ), wfMsg( "mainpage" ) ) + $this->mainPageLink() . " | " . $this->makeKnownLink( wfMsgForContent( "aboutpage" ), wfMsg( "about" ) ) . " | " . @@ -143,27 +146,19 @@ class SkinCologneBlue extends Skin { . " | " . $this->makeKnownLink( wfMsgForContent( "faqpage" ), wfMsg("faq") ) . " | " . - $this->specialLink( "specialpages" ) . " | "; + $this->specialLink( "specialpages" ); + /* show links to different language variants */ + $s .= $this->variantLinks(); + $s .= $this->extensionTabLinks(); + + $s .= " | "; if ( $wgUser->isLoggedIn() ) { $s .= $this->makeKnownLink( $lo, wfMsg( "logout" ), $q ); } else { $s .= $this->makeKnownLink( $li, wfMsg( "login" ), $q ); } - /* show links to different language variants */ - global $wgDisableLangConversion; - $variants = $wgContLang->getVariants(); - if( !$wgDisableLangConversion && sizeof( $variants ) > 1 ) { - $actstr = ''; - foreach( $variants as $code ) { - $varname = $wgContLang->getVariantname( $code ); - if( $varname == 'disable' ) - continue; - $s .= ' | <a href="' . $wgTitle->getLocalUrl( 'variant=' . $code ) . '">' . $varname . '</a>'; - } - } - return $s; } @@ -259,8 +254,8 @@ class SkinCologneBlue extends Skin { wfMsg( "mypage" ) ) . $sep . $tl . $sep . $this->specialLink( "watchlist" ) - . $sep . $this->makeKnownLinkObj( Title::makeTitle( NS_SPECIAL, "Contributions" ), - wfMsg( "mycontris" ), "target=" . wfUrlencode($wgUser->getName() ) ) + . $sep . $this->makeKnownLinkObj( SpecialPage::getSafeTitleFor( "Contributions", $wgUser->getName() ), + wfMsg( "mycontris" ) ) . $sep . $this->specialLink( "preferences" ) . $sep . $this->specialLink( "userlogout" ); } else { @@ -282,7 +277,7 @@ class SkinCologneBlue extends Skin { } $s .= $sep . $this->makeKnownLinkObj( - Title::makeTitle( NS_SPECIAL, 'Specialpages' ), + SpecialPage::getTitleFor( 'Specialpages' ), wfMsg( 'moredotdotdot' ) ); $s .= $sep . "\n</div>\n"; @@ -301,12 +296,16 @@ class SkinCologneBlue extends Skin { $search = $wgRequest->getText( 'search' ); $action = $this->escapeSearchLink(); - $s = "<form id=\"search\" method=\"get\" class=\"inline\" action=\"$action\">"; + $s = "<form id=\"searchform{$this->searchboxes}\" method=\"get\" class=\"inline\" action=\"$action\">"; if ( "" != $label ) { $s .= "{$label}: "; } - $s .= "<input type='text' name=\"search\" size='14' value=\"" - . htmlspecialchars(substr($search,0,256)) . "\" />" - . "<br /><input type='submit' name=\"go\" value=\"" . htmlspecialchars( wfMsg( "searcharticle" ) ) . "\" /> <input type='submit' name=\"fulltext\" value=\"" . htmlspecialchars( wfMsg( "search" ) ) . "\" /></form>"; + $s .= "<input type='text' id=\"searchInput{$this->searchboxes}\" class=\"mw-searchInput\" name=\"search\" size=\"14\" value=\"" + . htmlspecialchars(substr($search,0,256)) . "\" /><br />" + . "<input type='submit' id=\"searchGoButton{$this->searchboxes}\" class=\"searchButton\" name=\"go\" value=\"" . htmlspecialchars( wfMsg( "searcharticle" ) ) . "\" />" + . "<input type='submit' id=\"mw-searchButton{$this->searchboxes}\" class=\"searchButton\" name=\"fulltext\" value=\"" . htmlspecialchars( wfMsg( "search" ) ) . "\" /></form>"; + + // Ensure unique id's for search boxes made after the first + $this->searchboxes = $this->searchboxes == '' ? 2 : $this->searchboxes + 1; return $s; } diff --git a/skins/MonoBook.php b/skins/MonoBook.php index 698585c7..0b9619a2 100644 --- a/skins/MonoBook.php +++ b/skins/MonoBook.php @@ -51,23 +51,27 @@ class MonoBookTemplate extends QuickTemplate { wfSuppressWarnings(); ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php $this->text('lang') ?>" lang="<?php $this->text('lang') ?>" dir="<?php $this->text('dir') ?>"> +<html xmlns="<?php $this->text('xhtmldefaultnamespace') ?>" <?php + foreach($this->data['xhtmlnamespaces'] as $tag => $ns) { + ?>xmlns:<?php echo "{$tag}=\"{$ns}\" "; + } ?>xml:lang="<?php $this->text('lang') ?>" lang="<?php $this->text('lang') ?>" dir="<?php $this->text('dir') ?>"> <head> <meta http-equiv="Content-Type" content="<?php $this->text('mimetype') ?>; charset=<?php $this->text('charset') ?>" /> <?php $this->html('headlinks') ?> <title><?php $this->text('pagetitle') ?></title> - <style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/main.css?9"; /*]]>*/</style> - <link rel="stylesheet" type="text/css" <?php if(empty($this->data['printable']) ) { ?>media="print"<?php } ?> href="<?php $this->text('stylepath') ?>/common/commonPrint.css" /> - <!--[if lt IE 5.5000]><style type="text/css">@import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/IE50Fixes.css";</style><![endif]--> - <!--[if IE 5.5000]><style type="text/css">@import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/IE55Fixes.css";</style><![endif]--> - <!--[if IE 6]><style type="text/css">@import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/IE60Fixes.css";</style><![endif]--> - <!--[if IE 7]><style type="text/css">@import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/IE70Fixes.css?1";</style><![endif]--> - <!--[if lt IE 7]><script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath') ?>/common/IEFixes.js"></script> + <style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/main.css?<?php echo $GLOBALS['wgStyleVersion'] ?>"; /*]]>*/</style> + <link rel="stylesheet" type="text/css" <?php if(empty($this->data['printable']) ) { ?>media="print"<?php } ?> href="<?php $this->text('stylepath') ?>/common/commonPrint.css?<?php echo $GLOBALS['wgStyleVersion'] ?>" /> + <link rel="stylesheet" type="text/css" media="handheld" href="<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/handheld.css?<?php echo $GLOBALS['wgStyleVersion'] ?>" /> + <!--[if lt IE 5.5000]><style type="text/css">@import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/IE50Fixes.css?<?php echo $GLOBALS['wgStyleVersion'] ?>";</style><![endif]--> + <!--[if IE 5.5000]><style type="text/css">@import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/IE55Fixes.css?<?php echo $GLOBALS['wgStyleVersion'] ?>";</style><![endif]--> + <!--[if IE 6]><style type="text/css">@import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/IE60Fixes.css?<?php echo $GLOBALS['wgStyleVersion'] ?>";</style><![endif]--> + <!--[if IE 7]><style type="text/css">@import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/IE70Fixes.css?<?php echo $GLOBALS['wgStyleVersion'] ?>";</style><![endif]--> + <!--[if lt IE 7]><script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath') ?>/common/IEFixes.js?<?php echo $GLOBALS['wgStyleVersion'] ?>"></script> <meta http-equiv="imagetoolbar" content="no" /><![endif]--> <?php print Skin::makeGlobalVariablesScript( $this->data ); ?> - <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/common/wikibits.js?1"><!-- wikibits js --></script> + <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/common/wikibits.js?<?php echo $GLOBALS['wgStyleVersion'] ?>"><!-- wikibits js --></script> <?php if($this->data['jsvarurl' ]) { ?> <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('jsvarurl' ) ?>"><!-- site js --></script> <?php } ?> @@ -89,7 +93,7 @@ class MonoBookTemplate extends QuickTemplate { </head> <body <?php if($this->data['body_ondblclick']) { ?>ondblclick="<?php $this->text('body_ondblclick') ?>"<?php } ?> <?php if($this->data['body_onload' ]) { ?>onload="<?php $this->text('body_onload') ?>"<?php } ?> - class="mediawiki <?php $this->text('nsclass') ?> <?php $this->text('dir') ?>"> + class="mediawiki <?php $this->text('nsclass') ?> <?php $this->text('dir') ?> <?php $this->text('pageclass') ?>"> <div id="globalWrapper"> <div id="column-content"> <div id="content"> @@ -113,21 +117,23 @@ class MonoBookTemplate extends QuickTemplate { <div id="column-one"> <div id="p-cactions" class="portlet"> <h5><?php $this->msg('views') ?></h5> - <ul> -<?php foreach($this->data['content_actions'] as $key => $tab) { ?> - <li id="ca-<?php echo htmlspecialchars($key) ?>"<?php - if($tab['class']) { ?> class="<?php echo htmlspecialchars($tab['class']) ?>"<?php } - ?>><a href="<?php echo htmlspecialchars($tab['href']) ?>"><?php - echo htmlspecialchars($tab['text']) ?></a></li> -<?php } ?> - </ul> + <div class="pBody"> + <ul> + <?php foreach($this->data['content_actions'] as $key => $tab) { ?> + <li id="ca-<?php echo Sanitizer::escapeId($key) ?>"<?php + if($tab['class']) { ?> class="<?php echo htmlspecialchars($tab['class']) ?>"<?php } + ?>><a href="<?php echo htmlspecialchars($tab['href']) ?>"><?php + echo htmlspecialchars($tab['text']) ?></a></li> + <?php } ?> + </ul> + </div> </div> <div class="portlet" id="p-personal"> <h5><?php $this->msg('personaltools') ?></h5> <div class="pBody"> <ul> <?php foreach($this->data['personal_urls'] as $key => $item) { ?> - <li id="pt-<?php echo htmlspecialchars($key) ?>"<?php + <li id="pt-<?php echo Sanitizer::escapeId($key) ?>"<?php if ($item['active']) { ?> class="active"<?php } ?>><a href="<?php echo htmlspecialchars($item['href']) ?>"<?php if(!empty($item['class'])) { ?> class="<?php @@ -144,12 +150,12 @@ class MonoBookTemplate extends QuickTemplate { </div> <script type="<?php $this->text('jsmimetype') ?>"> if (window.isMSIE55) fixalpha(); </script> <?php foreach ($this->data['sidebar'] as $bar => $cont) { ?> - <div class='portlet' id='p-<?php echo htmlspecialchars($bar) ?>'> + <div class='portlet' id='p-<?php echo Sanitizer::escapeId($bar) ?>'> <h5><?php $out = wfMsg( $bar ); if (wfEmptyMsg($bar, $out)) echo $bar; else echo $out; ?></h5> <div class='pBody'> <ul> <?php foreach($cont as $key => $val) { ?> - <li id="<?php echo htmlspecialchars($val['id']) ?>"<?php + <li id="<?php echo Sanitizer::escapeId($val['id']) ?>"<?php if ( $val['active'] ) { ?> class="active" <?php } ?>><a href="<?php echo htmlspecialchars($val['href']) ?>"><?php echo htmlspecialchars($val['text']) ?></a></li> <?php } ?> @@ -167,7 +173,7 @@ class MonoBookTemplate extends QuickTemplate { if( isset( $this->data['search'] ) ) { ?> value="<?php $this->text('search') ?>"<?php } ?> /> <input type='submit' name="go" class="searchButton" id="searchGoButton" value="<?php $this->msg('searcharticle') ?>" /> - <input type='submit' name="fulltext" class="searchButton" value="<?php $this->msg('searchbutton') ?>" /> + <input type='submit' name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg('searchbutton') ?>" /> </div></form> </div> </div> @@ -194,7 +200,7 @@ class MonoBookTemplate extends QuickTemplate { <?php } if($this->data['feeds']) { ?> <li id="feedlinks"><?php foreach($this->data['feeds'] as $key => $feed) { - ?><span id="feed-<?php echo htmlspecialchars($key) ?>"><a href="<?php + ?><span id="feed-<?php echo Sanitizer::escapeId($key) ?>"><a href="<?php echo htmlspecialchars($feed['href']) ?>"><?php echo htmlspecialchars($feed['text'])?></a> </span> <?php } ?></li><?php } @@ -258,7 +264,7 @@ class MonoBookTemplate extends QuickTemplate { 'privacy', 'about', 'disclaimer', 'tagline', ); foreach( $footerlinks as $aLink ) { - if( $this->data[$aLink] ) { + if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) { ?> <li id="<?php echo$aLink?>"><?php $this->html($aLink) ?></li> <?php } } diff --git a/skins/Nostalgia.php b/skins/Nostalgia.php index 1b54aab9..3b19e41e 100644 --- a/skins/Nostalgia.php +++ b/skins/Nostalgia.php @@ -18,7 +18,7 @@ if( !defined( 'MEDIAWIKI' ) ) class SkinNostalgia extends Skin { function getStylesheet() { - return 'common/nostalgia.css?1'; + return 'common/nostalgia.css'; } function getSkinName() { return "nostalgia"; @@ -63,11 +63,17 @@ class SkinNostalgia extends Skin { $s .= $sep . $this->editThisPage() . $sep . $this->historyLink(); } + + /* show links to different language variants */ + $s .= $this->variantLinks(); + $s .= $this->extensionTabLinks(); + if ( $wgUser->isAnon() ) { $s .= $sep . $this->specialLink( "userlogin" ); } else { $s .= $sep . $this->specialLink( "userlogout" ); } + $s .= $sep . $this->specialPagesList(); return $s; diff --git a/skins/Standard.php b/skins/Standard.php index 90bcfc5b..517fd194 100644 --- a/skins/Standard.php +++ b/skins/Standard.php @@ -21,12 +21,12 @@ class SkinStandard extends Skin { * */ function getHeadScripts() { - global $wgStylePath, $wgJsMimeType; + global $wgStylePath, $wgJsMimeType, $wgStyleVersion; $s = parent::getHeadScripts(); if ( 3 == $this->qbSetting() ) { # Floating left $s .= "<script language='javascript' type='$wgJsMimeType' " . - "src='{$wgStylePath}/common/sticky.js'></script>\n"; + "src='{$wgStylePath}/common/sticky.js?$wgStyleVersion'></script>\n"; } return $s; } @@ -35,14 +35,14 @@ class SkinStandard extends Skin { * */ function getUserStyles() { - global $wgStylePath; + global $wgStylePath, $wgStyleVersion; $s = ''; if ( 3 == $this->qbSetting() ) { # Floating left $s .= "<style type='text/css'>\n" . - "@import '{$wgStylePath}/common/quickbar.css';\n</style>\n"; + "@import '{$wgStylePath}/common/quickbar.css?$wgStyleVersion';\n</style>\n"; } else if ( 4 == $this->qbSetting() ) { # Floating right $s .= "<style type='text/css'>\n" . - "@import '{$wgStylePath}/common/quickbar-right.css';\n</style>\n"; + "@import '{$wgStylePath}/common/quickbar-right.css?$wgStyleVersion';\n</style>\n"; } $s .= parent::getUserStyles(); return $s; diff --git a/skins/chick/main.css b/skins/chick/main.css index 5d3d15bd..b84b291e 100644 --- a/skins/chick/main.css +++ b/skins/chick/main.css @@ -50,16 +50,26 @@ h1, h2, h3, h4, h5, h6 { padding-bottom: 0.17em; border-bottom: 1px solid #aaaaaa; } +.editsection { + font-weight: normal; + float: right; + margin-left: 5px; +} h1 { font-size: 188%; } +h1 .editsection { font-size: 53.2%; } h2 { font-size: 150%; } +h2 .editsection { font-size: 66.7%; } h3, h4, h5, h6 { border-bottom: none; font-weight: bold; } h3 { font-size: 132%; } +h3 .editsection { font-size: 75.8%; } h4 { font-size: 116%; } +h4 .editsection { font-size: 86.2%; } h5 { font-size: 100%; } h6 { font-size: 80%; } +h6 .editsection { font-size: 125%; } ul { line-height: 1.5em; @@ -260,6 +270,7 @@ div.floatright, table.floatright { div.floatright p { font-style: italic; } div.floatleft, table.floatleft { float: left; + clear: left; margin: 0.3em 0.5em 0.5em 0; position: relative; border: 0.5em solid White; @@ -306,6 +317,7 @@ div.tright { } div.tleft { float: left; + clear: left; margin-right:0.5em; border-width: 0.5em 1.4em 0.8em 0; } @@ -478,4 +490,10 @@ div.gallerytext { #jump-to-nav { display: none; -}
\ No newline at end of file +} + +.templatesUsed { margin-top: 1.5em; } + +#toolbar { clear: both; } + +.mw-plusminus-null { color: #aaa; }
\ No newline at end of file diff --git a/skins/common/ajax.js b/skins/common/ajax.js index 6cc652b3..40065593 100644 --- a/skins/common/ajax.js +++ b/skins/common/ajax.js @@ -75,7 +75,7 @@ function sajax_do_call(func_name, args, target) { var i, x, n; var uri; var post_data; - uri = wgServer + "/" + wgScriptPath + "/index.php?action=ajax"; + uri = wgServer + wgScriptPath + "/index.php?action=ajax"; if (sajax_request_type == "GET") { if (uri.indexOf("?") == -1) uri = uri + "?rs=" + encodeURIComponent(func_name); @@ -96,7 +96,14 @@ function sajax_do_call(func_name, args, target) { return false; } - x.open(sajax_request_type, uri, true); + try { + x.open(sajax_request_type, uri, true); + } catch (e) { + if (window.location.hostname == "localhost") { + alert("Your browser blocks XMLHttpRequest to 'localhost', try using a real hostname for development/testing."); + } + throw e; + } if (sajax_request_type == "POST") { x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1"); x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); diff --git a/skins/common/ajaxwatch.js b/skins/common/ajaxwatch.js new file mode 100644 index 00000000..16e4fdc4 --- /dev/null +++ b/skins/common/ajaxwatch.js @@ -0,0 +1,127 @@ +// dependencies: +// * ajax.js: + /*extern sajax_init_object, sajax_do_call */ +// * wikibits.js: + /*extern changeText, akeytt, hookEvent */ + +// These should have been initialized in the generated js +/*extern wgAjaxWatch, wgArticleId */ + +if(typeof wgAjaxWatch === "undefined" || !wgAjaxWatch) { + var wgAjaxWatch = { + watchMsg: "Watch", + unwatchMsg: "Unwatch", + watchingMsg: "Watching...", + unwatchingMsg: "Unwatching..." + }; +} + +wgAjaxWatch.supported = true; // supported on current page and by browser +wgAjaxWatch.watching = false; // currently watching page +wgAjaxWatch.inprogress = false; // ajax request in progress +wgAjaxWatch.timeoutID = null; // see wgAjaxWatch.ajaxCall +wgAjaxWatch.watchLink1 = null; // "watch"/"unwatch" link +wgAjaxWatch.watchLink2 = null; // second one, for (some?) non-Monobook-based +wgAjaxWatch.oldHref = null; // url for action=watch/action=unwatch + +wgAjaxWatch.setLinkText = function(newText) { + changeText(wgAjaxWatch.watchLink1, newText); + if (wgAjaxWatch.watchLink2) { + changeText(wgAjaxWatch.watchLink2, newText); + } +}; + +wgAjaxWatch.setLinkID = function(newId) { + wgAjaxWatch.watchLink1.id = newId; + akeytt(newId); // update tooltips for Monobook +}; + +wgAjaxWatch.ajaxCall = function() { + if(!wgAjaxWatch.supported || wgAjaxWatch.inprogress) { + return; + } + wgAjaxWatch.inprogress = true; + wgAjaxWatch.setLinkText(wgAjaxWatch.watching ? wgAjaxWatch.unwatchingMsg : wgAjaxWatch.watchingMsg); + sajax_do_call("wfAjaxWatch", [wgArticleId, (wgAjaxWatch.watching ? "u" : "w")], wgAjaxWatch.processResult); + // if the request isn't done in 10 seconds, allow user to try again + wgAjaxWatch.timeoutID = window.setTimeout(function() { wgAjaxWatch.inprogress = false; }, 10000); + return; +}; + +wgAjaxWatch.processResult = function(request) { + if(!wgAjaxWatch.supported) { + return; + } + var response = request.responseText; + if(response == "<err#>") { + window.location.href = wgAjaxWatch.oldHref; + return; + } else if(response == "<w#>") { + wgAjaxWatch.watching = true; + wgAjaxWatch.setLinkText(wgAjaxWatch.unwatchMsg); + wgAjaxWatch.setLinkID("ca-unwatch"); + wgAjaxWatch.oldHref = wgAjaxWatch.oldHref.replace(/action=watch/, "action=unwatch"); + } else if(response == "<u#>") { + wgAjaxWatch.watching = false; + wgAjaxWatch.setLinkText(wgAjaxWatch.watchMsg); + wgAjaxWatch.setLinkID("ca-watch"); + wgAjaxWatch.oldHref = wgAjaxWatch.oldHref.replace(/action=unwatch/, "action=watch"); + } + wgAjaxWatch.inprogress = false; + if(wgAjaxWatch.timeoutID) { + window.clearTimeout(wgAjaxWatch.timeoutID); + } + return; +}; + +wgAjaxWatch.onLoad = function() { + var el1 = document.getElementById("ca-unwatch"); + var el2 = null; + if (!el1) { + el1 = document.getElementById("mw-unwatch-link1"); + el2 = document.getElementById("mw-unwatch-link2"); + } + if(el1) { + wgAjaxWatch.watching = true; + } else { + wgAjaxWatch.watching = false; + el1 = document.getElementById("ca-watch"); + if (!el1) { + el1 = document.getElementById("mw-watch-link1"); + el2 = document.getElementById("mw-watch-link2"); + } + if(!el1) { + wgAjaxWatch.supported = false; + return; + } + } + + if(!wfSupportsAjax()) { + wgAjaxWatch.supported = false; + return; + } + + // The id can be either for the parent (Monobook-based) or the element + // itself (non-Monobook) + wgAjaxWatch.watchLink1 = el1.tagName.toLowerCase() == "a" ? el1 : el1.firstChild; + wgAjaxWatch.watchLink2 = el2 ? el2 : null; + + wgAjaxWatch.oldHref = wgAjaxWatch.watchLink1.getAttribute("href"); + wgAjaxWatch.watchLink1.setAttribute("href", "javascript:wgAjaxWatch.ajaxCall()"); + if (wgAjaxWatch.watchLink2) { + wgAjaxWatch.watchLink2.setAttribute("href", "javascript:wgAjaxWatch.ajaxCall()"); + } + return; +}; + +hookEvent("load", wgAjaxWatch.onLoad); + +/** + * @return boolean whether the browser supports XMLHttpRequest + */ +function wfSupportsAjax() { + var request = sajax_init_object(); + var supportsAjax = request ? true : false; + delete request; + return supportsAjax; +}
\ No newline at end of file diff --git a/skins/common/cologneblue.css b/skins/common/cologneblue.css index 33c12abb..5b6e5bca 100644 --- a/skins/common/cologneblue.css +++ b/skins/common/cologneblue.css @@ -1,5 +1,3 @@ -@import url("common.css?2"); - body { margin: 0px; padding: 0px; color: black; } #specialform { display: inline; } #content { top: 0; margin: 0; padding: 0; } @@ -78,8 +76,9 @@ td.bottom { h1 { color: #666666; font-family: Verdana, Arial, sans-serif; - font-size: 18pt; font-weight: bold; line-height: 21pt; + font-size: 180%; line-height: 21pt; } +h1 .editsection { font-size: 55.6%; } h1.pagetitle { padding-bottom: 0; margin-bottom: 0; } #article p.subtitle { color: #666666; font-size: 11pt; font-weight: bold; @@ -93,4 +92,5 @@ a.printable { text-decoration: underline; } a.stub, #quickbar a.stub { color:#772233; text-decoration:none; } a.new, #quickbar a.new { color: #CC2200; } h2, h3, h4, h5, h6 { margin-bottom: 0; } -small { font-size: 75%; }
\ No newline at end of file +small { font-size: 75%; } +input.mw-searchInput { width: 106px; }
\ No newline at end of file diff --git a/skins/common/common.css b/skins/common/common.css index e630b77e..f3e5b574 100644 --- a/skins/common/common.css +++ b/skins/common/common.css @@ -2,11 +2,36 @@ * common.css * This file contains CSS settings common to Wikistandard, Nostalgia and CologneBlue */ + +/* For clarity, explicitly state some recommendations from <http://www.w3.org/ + TR/CSS21/sample.html> to make sure the editsection links scale right */ + +h1 { font-size: 2em; } +h2 { font-size: 1.5em; } +h3 { font-size: 1.17em; } +h5 { font-size: .83em; } +h6 { font-size: .75em; } +h1, h2, h3, h4, h5, h6 { font-weight: bolder } + +/* Now the custom parts */ + +/* Make edit sections (which are inside h# tags) normal-sized */ +.editsection { + font-weight: normal; + float: right; + margin-left: 5px; +} +h1 .editsection { font-size: 50% } +h2 .editsection { font-size: 66.7% } +h3 .editsection { font-size: 85.5% } +h5 .editsection { font-size: 120% } +h6 .editsection { font-size: 133% } + #footer { clear: both } /* images */ -div.floatright { float: right; margin: 0 0 1em 1em; } +div.floatright { float: right; clear: right; margin: 0 0 1em 1em; } div.floatright p { font-style: italic; } -div.floatleft { float: left; margin: 0.3em 0.5em 0.5em 0; } +div.floatleft { float: left; clear: left; margin: 0.3em 0.5em 0.5em 0; } div.floatleft p { font-style: italic; } @@ -26,43 +51,49 @@ table.rimage { /* thumbnails */ div.thumb { - margin: 10px; - text-align: center; - width: auto; -} -div.thumb div { - border: 1px solid #8888aa; - background-color: #f7f8ff; - padding: 2px; - font-size: 94%; - text-align: center; - overflow: hidden; + margin-bottom: .5em; + border-style: solid; + border-color: white; + width: auto; +} +div.thumbinner { + border: 1px solid #ccc; + padding: 3px !important; + background-color: #f9f9f9; + font-size: 94%; + text-align: center; + overflow: hidden; } -div.thumb div * { - border: none; - background: none; +html .thumbimage { + border: 1px solid #ccc; } -div.thumb img { - border:1px solid #8888AA; - margin-bottom:3px; - background:#FFFFFF; +html .thumbcaption { + border: none; + text-align: left; + line-height: 1.4em; + padding: 3px !important; + font-size: 94%; } -div.thumbcaption, -div.thumbcaption * { - border: none !important; - background: none !important; +div.magnify { + float: right; + border: none !important; + background: none !important; } -div.thumbcaption { - padding: 0.2em 0 0.2em 0 !important; - text-align: left !important; +div.magnify a, div.magnify img { + display: block; + border: none !important; + background: none !important; } div.tright { - float: right; - margin-left:0.5em; + clear: right; + float: right; + border-width: .5em 0 .8em 1.4em; } div.tleft { - float: left; - margin-right:0.5em; + float: left; + clear: left; + margin-right: .5em; + border-width: .5em 1.4em .8em 0; } /* Page history styling */ @@ -314,7 +345,6 @@ li span.deleted { font-style: italic; } - /* Classes for EXIF data display */ table.mw_metadata { margin-left: 0.5em; @@ -430,3 +460,8 @@ table.multipageimage td { .imagelist .TablePager_col_img_description { white-space: normal } .imagelist th.TablePager_sort { background-color: #ccccff } +.templatesUsed { margin-top: 1em; } + +#toolbar { clear: both; } + +.mw-plusminus-null { color: #aaa; }
\ No newline at end of file diff --git a/skins/common/commonPrint.css b/skins/common/commonPrint.css index 7dcb5700..992ac4db 100644 --- a/skins/common/commonPrint.css +++ b/skins/common/commonPrint.css @@ -22,13 +22,11 @@ a.new{ color:#ba0000; text-decoration:none; } .tocline { margin-bottom: 0px; } -.toctoggle, .editsection { - font-size: smaller; -} /* images */ div.floatright { - float: right; + float: right; + clear: right; margin: 0; position:relative; border: 0.5em solid White; @@ -67,6 +65,7 @@ div.thumb div div.thumbcaption { div.magnify { display: none; } div.tright { float: right; + clear: right; border-width: 0.5em 0 0.8em 1.4em; } div.tleft { @@ -103,10 +102,10 @@ div#column-one, .tochidden, div#f-poweredbyico, div#f-copyrightico, -li#f-viewcount, -li#f-about, -li#f-disclaimer, -li#f-privacy { +li#viewcount, +li#about, +li#disclaimer, +li#privacy { /* Hides all the elements irrelevant for printing */ display: none; } @@ -130,12 +129,12 @@ ul { h1, h2, h3, h4, h5, h6 { - font-weight: bold; + font-weight: bold; } p, .documentDescription { margin: 1em 0 ! important; - line-height: 1.2em; + line-height: 1.2em; } .tocindent p { @@ -160,7 +159,8 @@ table.listing td { a { color: Black !important; - padding: 0 !important + background: none !important; + padding: 0 !important; } a:link, a:visited { diff --git a/skins/common/common_rtl.css b/skins/common/common_rtl.css index 8f50b2ab..54186bb8 100644 --- a/skins/common/common_rtl.css +++ b/skins/common/common_rtl.css @@ -1,3 +1,6 @@ +/* This CSS file is called from absolutely every wiki that's RTL: unlike + * common.css, it's actually common to all skins. */ + /* js pref toc */ #preftoc { float: right; } /* workaround for moz bug, displayed bullets on left side */ @@ -13,3 +16,13 @@ fieldset.operaprefsection { margin-right: 1.4em; margin-left: 0.4em; } +.editsection { + float: left; + margin-right: 5px; +} +div.tright, div.floatright { + clear: none; +} +div.tleft, div.floatleft { + clear: left; +}
\ No newline at end of file diff --git a/skins/common/images/sort_down.gif b/skins/common/images/sort_down.gif Binary files differnew file mode 100644 index 00000000..5ff08160 --- /dev/null +++ b/skins/common/images/sort_down.gif diff --git a/skins/common/images/sort_none.gif b/skins/common/images/sort_none.gif Binary files differnew file mode 100644 index 00000000..6bb02824 --- /dev/null +++ b/skins/common/images/sort_none.gif diff --git a/skins/common/images/sort_up.gif b/skins/common/images/sort_up.gif Binary files differnew file mode 100644 index 00000000..53002968 --- /dev/null +++ b/skins/common/images/sort_up.gif diff --git a/skins/common/nostalgia.css b/skins/common/nostalgia.css index cc427bc9..c9b36a70 100644 --- a/skins/common/nostalgia.css +++ b/skins/common/nostalgia.css @@ -1,4 +1,3 @@ -@import url("common.css?1"); body { /* Background color is set separately on page type */ color: black; diff --git a/skins/common/sorttable.js b/skins/common/sorttable.js new file mode 100644 index 00000000..24877865 --- /dev/null +++ b/skins/common/sorttable.js @@ -0,0 +1,359 @@ +/* + * Table sorting script by Joost de Valk, check it out at http://www.joostdevalk.nl/code/sortable-table/. + * Based on a script from http://www.kryogenix.org/code/browser/sorttable/. + * Distributed under the MIT license: http://www.kryogenix.org/code/browser/licence.html . + * + * Copyright (c) 1997-2006 Stuart Langridge, Joost de Valk. + * + * @todo don't break on colspans/rowspans (bug 8028) + * @todo language-specific digit grouping/decimals (bug 8063) + * @todo support all accepted date formats (bug 8226) + */ + +var image_path = stylepath+"/common/images/"; +var image_up = "sort_up.gif"; +var image_down = "sort_down.gif"; +var image_none = "sort_none.gif"; +var europeandate = wgContentLanguage != "en"; // The non-American-inclined can change to "true" + +var alternate_row_colors = true; + + +hookEvent( "load", sortables_init); + +var SORT_COLUMN_INDEX; +var thead = false; + +function sortables_init() { + var idnum = 0; + // Find all tables with class sortable and make them sortable + if (!document.getElementsByTagName) return; + tbls = document.getElementsByTagName("table"); + for (ti=0;ti<tbls.length;ti++) { + thisTbl = tbls[ti]; + if ( (' '+thisTbl.className+' ').indexOf("sortable") != -1 ) { + if (!thisTbl.id) { + thisTbl.setAttribute('id','sortable_table_id_'+idnum); + ++idnum; + } + ts_makeSortable(thisTbl); + } + } +} + +function ts_makeSortable(table) { + if (table.rows && table.rows.length > 0) { + if (table.tHead && table.tHead.rows.length > 0) { + var firstRow = table.tHead.rows[table.tHead.rows.length-1]; + thead = true; + } else { + var firstRow = table.rows[0]; + } + } + if (!firstRow) return; + + // We have a first row: assume it's the header, and make its contents clickable links + for (var i=0;i<firstRow.cells.length;i++) { + var cell = firstRow.cells[i]; + var txt = ts_getInnerText(cell); + if (cell.className != "unsortable" && cell.className.indexOf("unsortable") == -1) { + cell.innerHTML = txt+' <a href="#" class="sortheader" onclick="ts_resortTable(this);return false;"><span class="sortarrow"><img src="'+ image_path + image_none + '" alt="↓"/></span></a>'; + } + } + if (alternate_row_colors) { + alternate(table); + } +} + +function ts_getInnerText(el) { + if (typeof el == "string") return el; + if (typeof el == "undefined") { return el }; + if (el.innerText) return el.innerText; //Not needed but it is faster + var str = ""; + + var cs = el.childNodes; + var l = cs.length; + for (var i = 0; i < l; i++) { + switch (cs[i].nodeType) { + case 1: //ELEMENT_NODE + str += ts_getInnerText(cs[i]); + break; + case 3: //TEXT_NODE + str += cs[i].nodeValue; + break; + } + } + return str; +} + +function ts_resortTable(lnk) { + // get the span + var span; + for (var ci=0;ci<lnk.childNodes.length;ci++) { + if (lnk.childNodes[ci].tagName && lnk.childNodes[ci].tagName.toLowerCase() == 'span') span = lnk.childNodes[ci]; + } + var spantext = ts_getInnerText(span); + var td = lnk.parentNode; + var column = td.cellIndex; + var table = getParent(td,'TABLE'); + + // Work out a type for the column + if (table.rows.length <= 1) return; + + for( var i = 1, itm = ""; itm.match(/^([\s]|\n|\ |<!--[^-]+-->)*$/); i++) { + var itm = ts_getInnerText(table.tBodies[0].rows[i].cells[column]); + itm = trim(itm); + } + sortfn = ts_sort_caseinsensitive; + if (itm.match(/^\d\d[\/. -][a-zA-Z]{3}[\/. -]\d\d\d\d$/)) sortfn = ts_sort_date; + if (itm.match(/^\d\d[\/.-]\d\d[\/.-]\d\d\d\d$/)) sortfn = ts_sort_date; + if (itm.match(/^\d\d[\/.-]\d\d[\/.-]\d\d$/)) sortfn = ts_sort_date; + if (itm.match(/^[£$€Û¢´]/)) sortfn = ts_sort_currency; + if (itm.match(/^[\d.,]+\%?$/)) sortfn = ts_sort_numeric; + SORT_COLUMN_INDEX = column; + var firstRow = new Array(); + var newRows = new Array(); + + for (k=0;k<table.tBodies.length;k++) { + for (i=0;i<table.tBodies[k].rows[0].length;i++) { + firstRow[i] = table.tBodies[k].rows[0][i]; + } + } + + for (k=0;k<table.tBodies.length;k++) { + if (!thead) { + // Skip the first row + for (j=1;j<table.tBodies[k].rows.length;j++) { + newRows[j-1] = table.tBodies[k].rows[j]; + } + } else { + // Do NOT skip the first row + for (j=0;j<table.tBodies[k].rows.length;j++) { + newRows[j] = table.tBodies[k].rows[j]; + } + } + } + + newRows.sort(sortfn); + + if (span.getAttribute("sortdir") == 'down') { + ARROW = '<img src="'+ image_path + image_down + '" alt="↓"/>'; + newRows.reverse(); + span.setAttribute('sortdir','up'); + } else { + ARROW = '<img src="'+ image_path + image_up + '" alt="↑"/>'; + span.setAttribute('sortdir','down'); + } + + // We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones + // don't do sortbottom rows + for (i=0; i<newRows.length; i++) { + if (!newRows[i].className || (newRows[i].className && (newRows[i].className.indexOf('sortbottom') == -1))) { + table.tBodies[0].appendChild(newRows[i]); + } + } + // do sortbottom rows only + for (i=0; i<newRows.length; i++) { + if (newRows[i].className && (newRows[i].className.indexOf('sortbottom') != -1)) + table.tBodies[0].appendChild(newRows[i]); + } + + // Delete any other arrows there may be showing + var allspans = document.getElementsByTagName("span"); + for (var ci=0;ci<allspans.length;ci++) { + if (allspans[ci].className == 'sortarrow') { + if (getParent(allspans[ci],"table") == getParent(lnk,"table")) { // in the same table as us? + allspans[ci].innerHTML = '<img src="'+ image_path + image_none + '" alt="↓"/>'; + } + } + } + + span.innerHTML = ARROW; + alternate(table); +} + +function getParent(el, pTagName) { + if (el == null) { + return null; + } else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase()) { // Gecko bug, supposed to be uppercase + return el; + } else { + return getParent(el.parentNode, pTagName); + } +} + +function sort_date(date) { + // y2k notes: two digit years less than 50 are treated as 20XX, greater than 50 are treated as 19XX + dt = "00000000"; + if (date.length == 11) { + monthstr = date.substr(3,3); + monthstr = monthstr.toLowerCase(); + switch(monthstr) { + case "jan": var month = "01"; break; + case "feb": var month = "02"; break; + case "mar": var month = "03"; break; + case "apr": var month = "04"; break; + case "may": var month = "05"; break; + case "jun": var month = "06"; break; + case "jul": var month = "07"; break; + case "aug": var month = "08"; break; + case "sep": var month = "09"; break; + case "oct": var month = "10"; break; + case "nov": var month = "11"; break; + case "dec": var month = "12"; break; + // default: var month = "00"; + } + dt = date.substr(7,4)+month+date.substr(0,2); + return dt; + } else if (date.length == 10) { + if (europeandate == false) { + dt = date.substr(6,4)+date.substr(0,2)+date.substr(3,2); + return dt; + } else { + dt = date.substr(6,4)+date.substr(3,2)+date.substr(0,2); + return dt; + } + } else if (date.length == 8) { + yr = date.substr(6,2); + if (parseInt(yr) < 50) { + yr = '20'+yr; + } else { + yr = '19'+yr; + } + if (europeandate == true) { + dt = yr+date.substr(3,2)+date.substr(0,2); + return dt; + } else { + dt = yr+date.substr(0,2)+date.substr(3,2); + return dt; + } + } + return dt; +} + +function ts_sort_date(a,b) { + dt1 = sort_date(ts_getInnerText(a.cells[SORT_COLUMN_INDEX])); + dt2 = sort_date(ts_getInnerText(b.cells[SORT_COLUMN_INDEX])); + + if (dt1==dt2) { + return 0; + } + if (dt1<dt2) { + return -1; + } + return 1; +} + +function ts_sort_currency(a,b) { + aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).replace(/[^0-9.]/g,''); + bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).replace(/[^0-9.]/g,''); + return compare_numeric(aa,bb); +} + +function ts_sort_numeric(a,b) { + aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]); + bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]); + return compare_numeric(aa,bb); +} + +function compare_numeric(a,b) { + a = parseFloat(a.replace(/,/, "")); + a = (isNaN(a) ? 0 : a); + b = parseFloat(b.replace(/,/, "")); + b = (isNaN(b) ? 0 : b); + return a - b; +} + +function ts_sort_caseinsensitive(a,b) { + aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).toLowerCase(); + bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).toLowerCase(); + if (aa==bb) { + return 0; + } + if (aa<bb) { + return -1; + } + return 1; +} + +function ts_sort_default(a,b) { + aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]); + bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]); + if (aa==bb) { + return 0; + } + if (aa<bb) { + return -1; + } + return 1; +} + +function addEvent(elm, evType, fn, useCapture) +// addEvent and removeEvent +// cross-browser event handling for IE5+, NS6 and Mozilla +// By Scott Andrew +{ + if (elm.addEventListener){ + elm.addEventListener(evType, fn, useCapture); + return true; + } else if (elm.attachEvent){ + var r = elm.attachEvent("on"+evType, fn); + return r; + } else { + alert("Handler could not be removed"); + } +} + +function replace(s, t, u) { + /* + ** Replace a token in a string + ** s string to be processed + ** t token to be found and removed + ** u token to be inserted + ** returns new String + */ + i = s.indexOf(t); + r = ""; + if (i == -1) return s; + r += s.substring(0,i) + u; + if ( i + t.length < s.length) { + r += replace(s.substring(i + t.length, s.length), t, u); + } + return r; +} + +function trim(s) { + return s.replace(/^([ \t]|\n|\ |<!--[^-]+-->)*/, "").replace(/([ \t]|\n|\ |<!--[^-]+-->)*$/, ""); +} + +function alternate(table) { + // Take object table and get all it's tbodies. + var tableBodies = table.getElementsByTagName("tbody"); + // Loop through these tbodies + for (var i = 0; i < tableBodies.length; i++) { + // Take the tbody, and get all it's rows + var tableRows = tableBodies[i].getElementsByTagName("tr"); + // Loop through these rows + // Start at 1 because we want to leave the heading row untouched + for (var j = 0; j < tableRows.length; j++) { + // Check if j is even, and apply classes for both possible results + if ( (j % 2) == 0 ) { + if ( !(tableRows[j].className.indexOf('odd') == -1) ) { + tableRows[j].className = replace(tableRows[j].className, 'odd', 'even'); + } else { + if ( tableRows[j].className.indexOf('even') == -1 ) { + tableRows[j].className += " even"; + } + } + } else { + if ( !(tableRows[j].className.indexOf('even') == -1) ) { + tableRows[j].className = replace(tableRows[j].className, 'even', 'odd'); + } else { + if ( tableRows[j].className.indexOf('odd') == -1 ) { + tableRows[j].className += " odd"; + } + } + } + } + } +} diff --git a/skins/common/wikibits.js b/skins/common/wikibits.js index 3a8fd6c6..eabdcbb4 100644 --- a/skins/common/wikibits.js +++ b/skins/common/wikibits.js @@ -5,54 +5,38 @@ var is_gecko = ((clientPC.indexOf('gecko')!=-1) && (clientPC.indexOf('spoofer')= && (clientPC.indexOf('khtml') == -1) && (clientPC.indexOf('netscape/7.0')==-1)); var is_safari = ((clientPC.indexOf('applewebkit')!=-1) && (clientPC.indexOf('spoofer')==-1)); var is_khtml = (navigator.vendor == 'KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled )); +// For accesskeys +var is_ff2_win = (clientPC.indexOf('firefox/2')!=-1 || clientPC.indexOf('minefield/3')!=-1) && clientPC.indexOf('windows')!=-1; +var is_ff2_x11 = (clientPC.indexOf('firefox/2')!=-1 || clientPC.indexOf('minefield/3')!=-1) && clientPC.indexOf('x11')!=-1; if (clientPC.indexOf('opera') != -1) { var is_opera = true; var is_opera_preseven = (window.opera && !document.childNodes); var is_opera_seven = (window.opera && document.childNodes); } -// add any onload functions in this hook (please don't hard-code any events in the xhtml source) +// Global external objects used by this script. +/*extern ta, stylepath, skin */ +// add any onload functions in this hook (please don't hard-code any events in the xhtml source) var doneOnloadHook; -if (!window.onloadFuncts) +if (!window.onloadFuncts) { var onloadFuncts = []; +} function addOnloadHook(hookFunct) { // Allows add-on scripts to add onload functions onloadFuncts[onloadFuncts.length] = hookFunct; } -function runOnloadHook() { - // don't run anything below this for non-dom browsers - if (doneOnloadHook || !(document.getElementById && document.getElementsByTagName)) - return; - - histrowinit(); - unhidetzbutton(); - tabbedprefs(); - akeytt(); - scrollEditBox(); - setupCheckboxShiftClick(); - - // Run any added-on functions - for (var i = 0; i < onloadFuncts.length; i++) - onloadFuncts[i](); - - doneOnloadHook = true; -} - function hookEvent(hookName, hookFunct) { - if (window.addEventListener) - addEventListener(hookName, hookFunct, false); - else if (window.attachEvent) - attachEvent("on" + hookName, hookFunct); + if (window.addEventListener) { + window.addEventListener(hookName, hookFunct, false); + } else if (window.attachEvent) { + window.attachEvent("on" + hookName, hookFunct); + } } -//note: all skins shoud call runOnloadHook() at the end of html output, -// so the below should be redundant. It's there just in case. -hookEvent("load", runOnloadHook); - // document.write special stylesheet links if (typeof stylepath != 'undefined' && typeof skin != 'undefined') { if (is_opera_preseven) { @@ -63,9 +47,13 @@ if (typeof stylepath != 'undefined' && typeof skin != 'undefined') { document.write('<link rel="stylesheet" type="text/css" href="'+stylepath+'/'+skin+'/KHTMLFixes.css">'); } } -// Un-trap us from framesets -if (window.top != window) - window.top.location = window.location; + +if (wgBreakFrames) { + // Un-trap us from framesets + if (window.top != window) { + window.top.location = window.location; + } +} // for enhanced RecentChanges function toggleVisibility(_levelId, _otherId, _linkId) { @@ -83,29 +71,13 @@ function toggleVisibility(_levelId, _otherId, _linkId) { } } -// page history stuff -// attach event handlers to the input elements on history page -function histrowinit() { - var hf = document.getElementById('pagehistory'); - if (!hf) - return; - var lis = hf.getElementsByTagName('li'); - for (var i = 0; i < lis.length; i++) { - var inputs = historyRadios(lis[i]); - if (inputs[0] && inputs[1]) { - inputs[0].onclick = diffcheck; - inputs[1].onclick = diffcheck; - } - } - diffcheck(); -} - function historyRadios(parent) { var inputs = parent.getElementsByTagName('input'); var radios = []; for (var i = 0; i < inputs.length; i++) { - if (inputs[i].name == "diff" || inputs[i].name == "oldid") + if (inputs[i].name == "diff" || inputs[i].name == "oldid") { radios[radios.length] = inputs[i]; + } } return radios; } @@ -115,15 +87,17 @@ function diffcheck() { var dli = false; // the li where the diff radio is checked var oli = false; // the li where the oldid radio is checked var hf = document.getElementById('pagehistory'); - if (!hf) + if (!hf) { return true; + } var lis = hf.getElementsByTagName('li'); - for (i=0;i<lis.length;i++) { + for (var i=0;i<lis.length;i++) { var inputs = historyRadios(lis[i]); if (inputs[1] && inputs[0]) { if (inputs[1].checked || inputs[0].checked) { // this row has a checked radio button - if (inputs[1].checked && inputs[0].checked && inputs[0].value == inputs[1].value) + if (inputs[1].checked && inputs[0].checked && inputs[0].value == inputs[1].value) { return false; + } if (oli) { // it's the second checked radio if (inputs[1].checked) { oli.className = "selected"; @@ -132,23 +106,28 @@ function diffcheck() { } else if (inputs[0].checked) { return false; } - if (inputs[0].checked) + if (inputs[0].checked) { dli = lis[i]; - if (!oli) + } + if (!oli) { inputs[0].style.visibility = 'hidden'; - if (dli) + } + if (dli) { inputs[1].style.visibility = 'hidden'; + } lis[i].className = "selected"; oli = lis[i]; } else { // no radio is checked in this row - if (!oli) + if (!oli) { inputs[0].style.visibility = 'hidden'; - else + } else { inputs[0].style.visibility = 'visible'; - if (dli) + } + if (dli) { inputs[1].style.visibility = 'hidden'; - else + } else { inputs[1].style.visibility = 'visible'; + } lis[i].className = ""; } } @@ -156,38 +135,61 @@ function diffcheck() { return true; } +// page history stuff +// attach event handlers to the input elements on history page +function histrowinit() { + var hf = document.getElementById('pagehistory'); + if (!hf) { + return; + } + var lis = hf.getElementsByTagName('li'); + for (var i = 0; i < lis.length; i++) { + var inputs = historyRadios(lis[i]); + if (inputs[0] && inputs[1]) { + inputs[0].onclick = diffcheck; + inputs[1].onclick = diffcheck; + } + } + diffcheck(); +} + // generate toc from prefs form, fold sections // XXX: needs testing on IE/Mac and safari // more comments to follow function tabbedprefs() { var prefform = document.getElementById('preferences'); - if (!prefform || !document.createElement) + if (!prefform || !document.createElement) { return; - if (prefform.nodeName.toLowerCase() == 'a') + } + if (prefform.nodeName.toLowerCase() == 'a') { return; // Occasional IE problem + } prefform.className = prefform.className + 'jsprefs'; - var sections = new Array(); + var sections = []; var children = prefform.childNodes; var seci = 0; for (var i = 0; i < children.length; i++) { if (children[i].nodeName.toLowerCase() == 'fieldset') { children[i].id = 'prefsection-' + seci; children[i].className = 'prefsection'; - if (is_opera || is_khtml) + if (is_opera || is_khtml) { children[i].className = 'prefsection operaprefsection'; + } var legends = children[i].getElementsByTagName('legend'); - sections[seci] = new Object(); + sections[seci] = {}; legends[0].className = 'mainLegend'; - if (legends[0] && legends[0].firstChild.nodeValue) + if (legends[0] && legends[0].firstChild.nodeValue) { sections[seci].text = legends[0].firstChild.nodeValue; - else + } else { sections[seci].text = '# ' + seci; + } sections[seci].secid = children[i].id; seci++; - if (sections.length != 1) + if (sections.length != 1) { children[i].style.display = 'none'; - else + } else { var selectedid = children[i].id; + } } } var toc = document.createElement('ul'); @@ -195,8 +197,9 @@ function tabbedprefs() { toc.selectedid = selectedid; for (i = 0; i < sections.length; i++) { var li = document.createElement('li'); - if (i == 0) + if (i === 0) { li.className = 'selected'; + } var a = document.createElement('a'); a.href = '#' + sections[i].secid; a.onmousedown = a.onclick = uncoversection; @@ -243,8 +246,9 @@ function checkTimezone(tz, msg) { function unhidetzbutton() { var tzb = document.getElementById('guesstimezonebutton'); - if (tzb) + if (tzb) { tzb.style.display = 'inline'; + } } // in [-]HH:MM format... @@ -269,9 +273,10 @@ function showTocToggle() { if (document.createTextNode) { // Uses DOM calls to avoid document.write + XHTML issues - var linkHolder = document.getElementById('toctitle') - if (!linkHolder) + var linkHolder = document.getElementById('toctitle'); + if (!linkHolder) { return; + } var outerSpan = document.createElement('span'); outerSpan.className = 'toctoggle'; @@ -290,22 +295,24 @@ function showTocToggle() { linkHolder.appendChild(outerSpan); var cookiePos = document.cookie.indexOf("hidetoc="); - if (cookiePos > -1 && document.cookie.charAt(cookiePos + 8) == 1) + if (cookiePos > -1 && document.cookie.charAt(cookiePos + 8) == 1) { toggleToc(); + } } } function changeText(el, newText) { // Safari work around - if (el.innerText) + if (el.innerText) { el.innerText = newText; - else if (el.firstChild && el.firstChild.nodeValue) + } else if (el.firstChild && el.firstChild.nodeValue) { el.firstChild.nodeValue = newText; + } } function toggleToc() { var toc = document.getElementById('toc').getElementsByTagName('ul')[0]; - var toggleLink = document.getElementById('togglelink') + var toggleLink = document.getElementById('togglelink'); if (toc && toggleLink && toc.style.display == 'none') { changeText(toggleLink, tocHideText); @@ -348,7 +355,7 @@ function mwInsertEditButton(parent, item) { image.onclick = function() { insertTags(item.tagOpen, item.tagClose, item.sampleText); return false; - } + }; parent.appendChild(image); return true; @@ -356,20 +363,21 @@ function mwInsertEditButton(parent, item) { function mwSetupToolbar() { var toolbar = document.getElementById('toolbar'); - if (!toolbar) return false; + if (!toolbar) { return false; } var textbox = document.getElementById('wpTextbox1'); - if (!textbox) return false; + if (!textbox) { return false; } // Don't generate buttons for browsers which don't fully // support it. - if (!document.selection && textbox.selectionStart == null) + if (!document.selection && textbox.selectionStart === null) { return false; + } for (var i in mwEditButtons) { mwInsertEditButton(toolbar, mwEditButtons[i]); } - for (var i in mwCustomEditButtons) { + for (i in mwCustomEditButtons) { mwInsertEditButton(toolbar, mwCustomEditButtons[i]); } return true; @@ -386,11 +394,11 @@ function escapeQuotes(text) { function escapeQuotesHTML(text) { var re = new RegExp('&',"g"); text = text.replace(re,"&"); - var re = new RegExp('"',"g"); + re = new RegExp('"',"g"); text = text.replace(re,"""); - var re = new RegExp('<',"g"); + re = new RegExp('<',"g"); text = text.replace(re,"<"); - var re = new RegExp('>',"g"); + re = new RegExp('>',"g"); text = text.replace(re,">"); return text; } @@ -399,19 +407,21 @@ function escapeQuotesHTML(text) { // use sampleText instead of selection if there is none // copied and adapted from phpBB function insertTags(tagOpen, tagClose, sampleText) { - if (document.editform) - var txtarea = document.editform.wpTextbox1; - else { + var txtarea; + if (document.editform) { + txtarea = document.editform.wpTextbox1; + } else { // some alternate form? take the first one we can find var areas = document.getElementsByTagName('textarea'); - var txtarea = areas[0]; + txtarea = areas[0]; } // IE if (document.selection && !is_gecko) { var theSelection = document.selection.createRange().text; - if (!theSelection) + if (!theSelection) { theSelection=sampleText; + } txtarea.focus(); if (theSelection.charAt(theSelection.length - 1) == " ") { // exclude ending space char, if any theSelection = theSelection.substring(0, theSelection.length - 1); @@ -425,12 +435,15 @@ function insertTags(tagOpen, tagClose, sampleText) { var replaced = false; var startPos = txtarea.selectionStart; var endPos = txtarea.selectionEnd; - if (endPos-startPos) + if (endPos-startPos) { replaced = true; + } var scrollTop = txtarea.scrollTop; var myText = (txtarea.value).substring(startPos, endPos); - if (!myText) + if (!myText) { myText=sampleText; + } + var subst; if (myText.charAt(myText.length - 1) == " ") { // exclude ending space char, if any subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " "; } else { @@ -455,19 +468,38 @@ function insertTags(tagOpen, tagClose, sampleText) { // bar, but that caused more problems than it solved. } // reposition cursor if possible - if (txtarea.createTextRange) + if (txtarea.createTextRange) { txtarea.caretPos = document.selection.createRange().duplicate(); + } } -function akeytt() { - if (typeof ta == "undefined" || !ta) +/** + * Set up accesskeys/tooltips. If doId is specified, only set up for that id. + * + * @param mixed doId string or null + */ +function akeytt( doId ) { + if (typeof ta == "undefined" || !ta) { return; - var pref = 'alt-'; + } + + var pref; if (is_safari || navigator.userAgent.toLowerCase().indexOf('mac') + 1 - || navigator.userAgent.toLowerCase().indexOf('konqueror') + 1 ) + || navigator.userAgent.toLowerCase().indexOf('konqueror') + 1 ) { pref = 'control-'; - if (is_opera) + } else if (is_opera) { pref = 'shift-esc-'; + } else if (is_ff2_x11) { + pref = 'ctrl-shift-'; + } else if (is_ff2_win) { + pref = 'alt-shift-'; + } else { + pref = 'alt-'; + } + + if ( doId ) { + ta = [ta[doId]]; + } for (var id in ta) { var n = document.getElementById(id); @@ -483,8 +515,10 @@ function akeytt() { } else { a = n.childNodes[0]; } - - if (a) { + // Don't add an accesskey for the watch tab if the watch + // checkbox is also available. + if (a && ((id != 'ca-watch' && id != 'ca-unwatch') || + !(window.location.search.match(/[\?&](action=edit|action=submit)/i)))) { a.accessKey = ta[id][0]; ak = ' ['+pref+ta[id][0]+']'; } @@ -503,9 +537,9 @@ function akeytt() { function setupRightClickEdit() { if (document.getElementsByTagName) { - var divs = document.getElementsByTagName('div'); - for (var i = 0; i < divs.length; i++) { - var el = divs[i]; + var spans = document.getElementsByTagName('span'); + for (var i = 0; i < spans.length; i++) { + var el = spans[i]; if(el.className == 'editsection') { addRightClickEditHandler(el); } @@ -518,23 +552,31 @@ function addRightClickEditHandler(el) { var link = el.childNodes[i]; if (link.nodeType == 1 && link.nodeName.toLowerCase() == 'a') { var editHref = link.getAttribute('href'); - - // find the following a - var next = el.nextSibling; - while (next.nodeType != 1) - next = next.nextSibling; - - // find the following header - next = next.nextSibling; - while (next.nodeType != 1) - next = next.nextSibling; - - if (next && next.nodeType == 1 && - next.nodeName.match(/^[Hh][1-6]$/)) { - next.oncontextmenu = function() { - document.location = editHref; - return false; - } + // find the enclosing (parent) header + var prev = el.parentNode; + if (prev && prev.nodeType == 1 && + prev.nodeName.match(/^[Hh][1-6]$/)) { + prev.oncontextmenu = function(e) { + if (!e) { e = window.event; } + // e is now the event in all browsers + var targ; + if (e.target) { targ = e.target; } + else if (e.srcElement) { targ = e.srcElement; } + if (targ.nodeType == 3) { // defeat Safari bug + targ = targ.parentNode; + } + // targ is now the target element + + // We don't want to deprive the noble reader of a context menu + // for the section edit link, do we? (Might want to extend this + // to all <a>'s?) + if (targ.nodeName.toLowerCase() != 'a' + || targ.parentNode.className != 'editsection') { + document.location = editHref; + return false; + } + return true; + }; } } } @@ -613,22 +655,25 @@ function checkboxMouseupHandler(e) { } function toggle_element_activation(ida,idb) { - if (!document.getElementById) + if (!document.getElementById) { return; + } document.getElementById(ida).disabled=true; document.getElementById(idb).disabled=false; } function toggle_element_check(ida,idb) { - if (!document.getElementById) + if (!document.getElementById) { return; + } document.getElementById(ida).checked=true; document.getElementById(idb).checked=false; } function fillDestFilename(id) { - if (!document.getElementById) + if (!document.getElementById) { return; + } var path = document.getElementById(id).value; // Find trailing part var slash = path.lastIndexOf('/'); @@ -647,25 +692,30 @@ function fillDestFilename(id) { // Output result var destFile = document.getElementById('wpDestFile'); - if (destFile) + if (destFile) { destFile.value = fname; + } } function considerChangingExpiryFocus() { - if (!document.getElementById) + if (!document.getElementById) { return; + } var drop = document.getElementById('wpBlockExpiry'); - if (!drop) + if (!drop) { return; + } var field = document.getElementById('wpBlockOther'); - if (!field) + if (!field) { return; + } var opt = drop.value; - if (opt == 'other') + if (opt == 'other') { field.style.display = ''; - else + } else { field.style.display = 'none'; + } } function scrollEditBox() { @@ -674,91 +724,187 @@ function scrollEditBox() { var editFormEl = document.getElementById("editform"); if (editBoxEl && scrollTopEl) { - if (scrollTopEl.value) editBoxEl.scrollTop = scrollTopEl.value; + if (scrollTopEl.value) { editBoxEl.scrollTop = scrollTopEl.value; } editFormEl.onsubmit = function() { document.getElementById("wpScrolltop").value = document.getElementById("wpTextbox1").scrollTop; - } + }; } } hookEvent("load", scrollEditBox); +var allmessages_nodelist = false; +var allmessages_modified = false; +var allmessages_timeout = false; +var allmessages_running = false; + +function allmessagesmodified() { + allmessages_modified = !allmessages_modified; + allmessagesfilter(); +} + function allmessagesfilter() { - text = document.getElementById('allmessagesinput').value; - k = document.getElementById('allmessagestable'); - if (!k) { return;} + if ( allmessages_timeout ) + window.clearTimeout( allmessages_timeout ); - var items = k.getElementsByTagName('span'); + if ( !allmessages_running ) + allmessages_timeout = window.setTimeout( 'allmessagesfilter_do();', 500 ); +} - if ( text.length > allmessages_prev.length ) { - for (var i = items.length-1, j = 0; i >= 0; i--) { - j = allmessagesforeach(items, i, j); - } - } else { - for (var i = 0, j = 0; i < items.length; i++) { - j = allmessagesforeach(items, i, j); - } +function allmessagesfilter_do() { + if ( !allmessages_nodelist ) + return; + + var text = document.getElementById('allmessagesinput').value; + var nodef = allmessages_modified; + + allmessages_running = true; + + for ( var name in allmessages_nodelist ) { + var nodes = allmessages_nodelist[name]; + var display = ( name.indexOf( text ) == -1 ? 'none' : '' ); + + for ( var i = 0; i < nodes.length; i++) + nodes[i].style.display = + ( nodes[i].className == "def" && nodef + ? 'none' : display ); } - allmessages_prev = text; + + if ( text != document.getElementById('allmessagesinput').value || + nodef != allmessages_modified ) + allmessagesfilter_do(); // repeat + + allmessages_running = false; } -function allmessagesforeach(items, i, j) { - var hItem = items[i].getAttribute('id'); - if (hItem.substring(0,17) == 'sp-allmessages-i-') { - if (items[i].firstChild && items[i].firstChild.nodeName == '#text' && items[i].firstChild.nodeValue.indexOf(text) != -1) { - var itemA = document.getElementById( hItem.replace('i', 'r1') ); - var itemB = document.getElementById( hItem.replace('i', 'r2') ); - if ( itemA.style.display != '' ) { - var s = "allmessageshider(\"" + hItem.replace('i', 'r1') + "\", \"" + hItem.replace('i', 'r2') + "\", '')"; - var k = window.setTimeout(s,j++*5); - } - } else { - var itemA = document.getElementById( hItem.replace('i', 'r1') ); - var itemB = document.getElementById( hItem.replace('i', 'r2') ); - if ( itemA.style.display != 'none' ) { - var s = "allmessageshider(\"" + hItem.replace('i', 'r1') + "\", \"" + hItem.replace('i', 'r2') + "\", 'none')"; - var k = window.setTimeout(s,j++*5); +function allmessagesfilter_init() { + if ( allmessages_nodelist ) + return; + + var nodelist = new Array(); + var templist = new Array(); + + var table = document.getElementById('allmessagestable'); + if ( !table ) return; + + var rows = document.getElementsByTagName('tr'); + for ( var i = 0; i < rows.length; i++ ) { + var id = rows[i].getAttribute('id') + if ( id && id.substring(0,16) != 'sp-allmessages-r' ) continue; + templist[ id ] = rows[i]; + } + + var spans = table.getElementsByTagName('span'); + for ( var i = 0; i < spans.length; i++ ) { + var id = spans[i].getAttribute('id') + if ( id && id.substring(0,17) != 'sp-allmessages-i-' ) continue; + if ( !spans[i].firstChild || spans[i].firstChild.nodeType != 3 ) continue; + + var nodes = new Array(); + var row1 = templist[ id.replace('i', 'r1') ]; + var row2 = templist[ id.replace('i', 'r2') ]; + + if ( row1 ) nodes[nodes.length] = row1; + if ( row2 ) nodes[nodes.length] = row2; + nodelist[ spans[i].firstChild.nodeValue ] = nodes; + } + + var k = document.getElementById('allmessagesfilter'); + if (k) { k.style.display = ''; } + + allmessages_nodelist = nodelist; +} + +hookEvent( "load", allmessagesfilter_init ); + +/* + Written by Jonathan Snook, http://www.snook.ca/jonathan + Add-ons by Robert Nyman, http://www.robertnyman.com + Author says "The credit comment is all it takes, no license. Go crazy with it!:-)" + From http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/ +*/ +function getElementsByClassName(oElm, strTagName, oClassNames){ + var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName); + var arrReturnElements = new Array(); + var arrRegExpClassNames = new Array(); + if(typeof oClassNames == "object"){ + for(var i=0; i<oClassNames.length; i++){ + arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)")); + } + } + else{ + arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)")); + } + var oElement; + var bMatchesAll; + for(var j=0; j<arrElements.length; j++){ + oElement = arrElements[j]; + bMatchesAll = true; + for(var k=0; k<arrRegExpClassNames.length; k++){ + if(!arrRegExpClassNames[k].test(oElement.className)){ + bMatchesAll = false; + break; } } + if(bMatchesAll){ + arrReturnElements.push(oElement); + } } - return j; + return (arrReturnElements) } - -function allmessageshider(idA, idB, cstyle) { - var itemA = document.getElementById( idA ); - var itemB = document.getElementById( idB ); - if (itemA) { itemA.style.display = cstyle; } - if (itemB) { itemB.style.display = cstyle; } +function sortableTables() { + if (getElementsByClassName(document, "table", "sortable").length != 0) { + document.write('<script type="text/javascript" src="'+stylepath+'/common/sorttable.js"></script>'); + } } -function allmessagesmodified() { - allmessages_modified = !allmessages_modified; - k = document.getElementById('allmessagestable'); - if (!k) { return;} - var items = k.getElementsByTagName('tr'); - for (var i = 0, j = 0; i< items.length; i++) { - if (!allmessages_modified ) { - if ( items[i].style.display != '' ) { - var s = "allmessageshider(\"" + items[i].getAttribute('id') + "\", null, '')"; - var k = window.setTimeout(s,j++*5); - } - } else if (items[i].getAttribute('class') == 'def' && allmessages_modified) { - if ( items[i].style.display != 'none' ) { - var s = "allmessageshider(\"" + items[i].getAttribute('id') + "\", null, 'none')"; - var k = window.setTimeout(s,j++*5); - } +function redirectToFragment(fragment) { + var match = navigator.userAgent.match(/AppleWebKit\/(\d+)/); + if (match) { + var webKitVersion = parseInt(match[1]); + if (webKitVersion < 420) { + // Released Safari w/ WebKit 418.9.1 messes up horribly + // Nightlies of 420+ are ok + return; } } + if (is_gecko) { + // Mozilla needs to wait until after load, otherwise the window doesn't scroll + addOnloadHook(function () { + if (window.location.hash == "") + window.location.hash = fragment; + }); + } else { + if (window.location.hash == "") + window.location.hash = fragment; + } } -function allmessagesshow() { - k = document.getElementById('allmessagesfilter'); - if (k) { k.style.display = ''; } +function runOnloadHook() { + // don't run anything below this for non-dom browsers + if (doneOnloadHook || !(document.getElementById && document.getElementsByTagName)) { + return; + } + + histrowinit(); + unhidetzbutton(); + tabbedprefs(); + akeytt( null ); + scrollEditBox(); + setupCheckboxShiftClick(); + sortableTables(); - allmessages_prev = ''; - allmessages_modified = false; + // Run any added-on functions + for (var i = 0; i < onloadFuncts.length; i++) { + onloadFuncts[i](); + } + + doneOnloadHook = true; } -hookEvent("load", allmessagesshow); +//note: all skins should call runOnloadHook() at the end of html output, +// so the below should be redundant. It's there just in case. +hookEvent("load", runOnloadHook); + hookEvent("load", mwSetupToolbar); diff --git a/skins/common/wikistandard.css b/skins/common/wikistandard.css index 3985f1d9..532e4fdc 100644 --- a/skins/common/wikistandard.css +++ b/skins/common/wikistandard.css @@ -1,5 +1,3 @@ -@import url("common.css?1"); - #article { padding: 4px; } #content { margin: 0; padding: 0; } #footer { padding: 4px;font-size:95%;clear: both; } @@ -29,12 +27,18 @@ textarea { overflow: auto; } h1.pagetitle { padding-top: 0; margin-top: 0; padding-bottom: 0; margin-bottom: 0; font-size:150%; } +h1.pagetitle .editsection { font-size: 66.7%; } h2 { font-size: 120%; } +h2 .editsection { font-size: 83.3%; } h2, h3, h4, h5, h6 { margin-bottom: 0;} h3 { font-size: 106.25%; } +h3 .editsection { font-size: 94.1%; } h4 { font-size: 103.125%; } +h4 .editsection { font-size: 97.0%; } h5 { font-size: 100%; } +h5 .editsection { font-size: 100%; } h6 { font-size: 95%; } +h6 .editsection { font-size: 105.3%; } hr.sep { color:gray;height:1px;background-color:gray;} p.subpages { font-size:small;} p.subtitle { padding-top: 0; margin-top: 0;} diff --git a/skins/disabled/MonoBookCBT.php b/skins/disabled/MonoBookCBT.php index f5f742d6..3d145b24 100644 --- a/skins/disabled/MonoBookCBT.php +++ b/skins/disabled/MonoBookCBT.php @@ -764,7 +764,7 @@ class SkinMonoBookCBT extends SkinTemplate { } function logopath() { return $GLOBALS['wgLogo']; } - function mainpage() { return self::makeI18nUrl( 'mainpage' ); } + function mainpage() { return self::makeMainPageUrl(); } function sidebar( $startSection, $endSection, $innerTpl ) { $s = ''; diff --git a/skins/monobook/IE70Fixes.css b/skins/monobook/IE70Fixes.css index 2a2c9c77..43ff7076 100644 --- a/skins/monobook/IE70Fixes.css +++ b/skins/monobook/IE70Fixes.css @@ -12,10 +12,9 @@ .rtl #column-one { /* For some reason it tries to inherit the padding-top into every div, * and I can't figure out how to get it back off. + * Margin works correctly for this use, though. */ padding-top: 0; -} -.rtl #column-one #p-navigation { margin-top: 160px; } diff --git a/skins/monobook/audio.png b/skins/monobook/audio.png Binary files differnew file mode 100644 index 00000000..1c56bdc8 --- /dev/null +++ b/skins/monobook/audio.png diff --git a/skins/monobook/document.png b/skins/monobook/document.png Binary files differnew file mode 100644 index 00000000..b48138e9 --- /dev/null +++ b/skins/monobook/document.png diff --git a/skins/monobook/handheld.css b/skins/monobook/handheld.css new file mode 100644 index 00000000..38fe1ebe --- /dev/null +++ b/skins/monobook/handheld.css @@ -0,0 +1,1337 @@ +/* +** MediaWiki 'monobook' style sheet for CSS2-capable browsers. +** Copyright Gabriel Wicke - http://wikidev.net/ +** License: GPL (http://www.gnu.org/copyleft/gpl.html) +** +** Loosely based on http://www.positioniseverything.net/ordered-floats.html by Big John +** and the Plone 2.0 styles, see http://plone.org/ (Alexander Limi,Joe Geldart & Tom Croucher, +** Michael Zeltner and Geir Bækholt) +** All you guys rock :) +*/ + +/** + * Stylesheet for handhelds. All rules not marked media-specific are shared + * with main.css and should be updated in tandem. The rules can't be in the + * same file because old browsers like IE5 won't obey @media rules. + * + * Rules that are handheld-specific are given @media rules in case old browsers + * don't recognize the media attribute and load this file anyway. + */ + +#content { + background: white; + color: black; + border: 1px solid #aaa; + border-right: none; + line-height: 1.5em; +} +/* the left column width is specified in class .portlet */ + +/* Font size: +** We take advantage of keyword scaling- browsers won't go below 9px +** More at http://www.w3.org/2003/07/30-font-size +** http://style.cleverchimp.com/font_size_intervals/altintervals.html +*/ + +body { + font: x-small sans-serif; + background: #f9f9f9 url(headbg.jpg) 0 0 no-repeat; + color: black; + margin: 0; + padding: 0; +} + +/* scale back up to a sane default */ +#globalWrapper { + font-size: 127%; + width: 100%; + margin: 0; + padding: 0; +} +.visualClear { + clear: both; +} + +/* general styles */ + +table { + font-size: 100%; + color: black; + /* we don't want the bottom borders of <h2>s to be visible through + floated tables */ + background-color: white; +} +a { + text-decoration: none; + color: #002bb8; + background: none; +} +a:visited { + color: #5a3696; +} +a:active { + color: #faa700; +} +a:hover { + text-decoration: underline; +} +a.stub { + color: #772233; +} +a.new, #p-personal a.new { + color: #ba0000; +} +a.new:visited, #p-personal a.new:visited { + color: #a55858; +} + +img { + border: none; + vertical-align: middle; +} +p img { + margin: 0; +} + +hr { + height: 1px; + color: #aaa; + background-color: #aaa; + border: 0; + margin: .2em 0 .2em 0; +} + +h1, h2, h3, h4, h5, h6 { + color: black; + background: none; + font-weight: normal; + margin: 0; + padding-top: .5em; + padding-bottom: .17em; + border-bottom: 1px solid #aaa; +} +h1 { font-size: 188%; } +h1 .editsection { font-size: 53%; } +h2 { font-size: 150%; } +h2 .editsection { font-size: 67%; } +h3, h4, h5, h6 { + border-bottom: none; + font-weight: bold; +} +h3 { font-size: 132%; } +h3 .editsection { font-size: 76%; font-weight: normal; } +h4 { font-size: 116%; } +h4 .editsection { font-size: 86%; font-weight: normal; } +h5 { font-size: 100%; } +h5 .editsection { font-weight: normal; } +h6 { font-size: 80%; } +h6 .editsection { font-size: 125%; font-weight: normal; } + +.editsection { + float: right; + margin-left: 5px; +} + +ul { + line-height: 1.5em; + list-style-type: square; + margin: .3em 0 0 1.5em; + padding: 0; + list-style-image: url(bullet.gif); +} +ol { + line-height: 1.5em; + margin: .3em 0 0 3.2em; + padding: 0; + list-style-image: none; +} +li { + margin-bottom: .1em; +} +dt { + font-weight: bold; + margin-bottom: .1em; +} +dl { + margin-top: .2em; + margin-bottom: .5em; +} +dd { + line-height: 1.5em; + margin-left: 2em; + margin-bottom: .1em; +} + +fieldset { + border: 1px solid #2f6fab; + margin: 1em 0 1em 0; + padding: 0 1em 1em; + line-height: 1.5em; +} +legend { + padding: .5em; + font-size: 95%; +} +form { + border: none; + margin: 0; +} + +textarea { + width: 100%; + padding: .1em; +} + +input.historysubmit { + padding: 0 .3em .3em .3em !important; + font-size: 94%; + cursor: pointer; + height: 1.7em !important; + margin-left: 1.6em; +} +select { + vertical-align: top; +} +abbr, acronym, .explain { + border-bottom: 1px dotted black; + color: black; + background: none; + cursor: help; +} +q { + font-family: Times, "Times New Roman", serif; + font-style: italic; +} +/* disabled for now +blockquote { + font-family: Times, "Times New Roman", serif; + font-style: italic; +}*/ +code { + background-color: #f9f9f9; +} +pre { + padding: 1em; + border: 1px dashed #2f6fab; + color: black; + background-color: #f9f9f9; + line-height: 1.1em; +} + +/* +** the main content area +*/ + +#contentSub, #contentSub2 { + font-size: 84%; + line-height: 1.2em; + margin: 0 0 1.4em 1em; + color: #7d7d7d; + width: auto; +} +span.subpages { + display: block; +} + +/* Some space under the headers in the content area */ +#bodyContent h1, #bodyContent h2 { + margin-bottom: .6em; +} +#bodyContent h3, #bodyContent h4, #bodyContent h5 { + margin-bottom: .3em; +} +.firstHeading { + margin-bottom: .1em; +} + +/* user notification thing */ +.usermessage { + background-color: #ffce7b; + border: 1px solid #ffa500; + color: black; + font-weight: bold; + margin: 2em 0 1em; + padding: .5em 1em; + vertical-align: middle; +} +#siteNotice { + text-align: center; + font-size: 95%; + padding: 0 .9em; +} +#siteNotice p { + margin: 0; + padding: 0; +} +.error { + color: red; + font-size: larger; +} +.errorbox, .successbox { + font-size: larger; + border: 2px solid; + padding: .5em 1em; + float: left; + margin-bottom: 2em; + color: #000; +} +.errorbox { + border-color: red; + background-color: #fff2f2; +} +.successbox { + border-color: green; + background-color: #dfd; +} +.errorbox h2, .successbox h2 { + font-size: 1em; + font-weight: bold; + display: inline; + margin: 0 .5em 0 0; + border: none; +} + +#catlinks { + border: 1px solid #aaa; + background-color: #f9f9f9; + padding: 5px; + margin-top: 1em; + clear: both; +} +/* currently unused, intended to be used by a metadata box +in the bottom-right corner of the content area */ +.documentDescription { + /* The summary text describing the document */ + font-weight: bold; + display: block; + margin: 1em 0; + line-height: 1.5em; +} +.documentByLine { + text-align: right; + font-size: 90%; + clear: both; + font-weight: normal; + color: #76797c; +} + +/* emulate center */ +.center { + width: 100%; + text-align: center; +} +*.center * { + margin-left: auto; + margin-right: auto; +} +/* small for tables and similar */ +.small, .small * { + font-size: 94%; +} +table.small { + font-size: 100%; +} + +/* +** content styles +*/ + +#toc, +.toc, +.mw-warning { + border: 1px solid #aaa; + background-color: #f9f9f9; + padding: 5px; + font-size: 95%; +} +#toc h2, +.toc h2 { + display: inline; + border: none; + padding: 0; + font-size: 100%; + font-weight: bold; +} +#toc #toctitle, +.toc #toctitle, +#toc .toctitle, +.toc .toctitle { + text-align: center; +} +#toc ul, +.toc ul { + list-style-type: none; + list-style-image: none; + margin-left: 0; + padding-left: 0; + text-align: left; +} +#toc ul ul, +.toc ul ul { + margin: 0 0 0 2em; +} +#toc .toctoggle, +.toc .toctoggle { + font-size: 94%; +} + +.mw-warning { + margin-left: 50px; + margin-right: 50px; + text-align: center; +} + +/* images */ +div.floatright, table.floatright { + clear: right; + float: right; + position: relative; + margin: 0 0 .5em .5em; + border: 0; +/* + border: .5em solid white; + border-width: .5em 0 .8em 1.4em; +*/ +} +div.floatright p { font-style: italic; } +div.floatleft, table.floatleft { + float: left; + clear: left; + position: relative; + margin: 0 .5em .5em 0; + border: 0; +/* + margin: .3em .5em .5em 0; + border: .5em solid white; + border-width: .5em 1.4em .8em 0; +*/ +} +div.floatleft p { font-style: italic; } +/* thumbnails */ +div.thumb { + margin-bottom: .5em; + border-style: solid; + border-color: white; + width: auto; +} +div.thumbinner { + border: 1px solid #ccc; + padding: 3px !important; + background-color: #f9f9f9; + font-size: 94%; + text-align: center; + overflow: hidden; +} +html .thumbimage { + border: 1px solid #ccc; +} +html .thumbcaption { + border: none; + text-align: left; + line-height: 1.4em; + padding: 3px !important; + font-size: 94%; +} +div.magnify { + float: right; + border: none !important; + background: none !important; +} +div.magnify a, div.magnify img { + display: block; + border: none !important; + background: none !important; +} +div.tright { + clear: right; + float: right; + border-width: .5em 0 .8em 1.4em; +} +div.tleft { + float: left; + clear: left; + margin-right: .5em; + border-width: .5em 1.4em .8em 0; +} + +.hiddenStructure { + display: none; + speak: none; +} +img.tex { + vertical-align: middle; +} +span.texhtml { + font-family: serif; +} + +/* +** classes for special content elements like town boxes +** intended to be referenced directly from the wiki src +*/ + +/* +** User styles +*/ +/* table standards */ +table.rimage { + float: right; + position: relative; + margin-left: 1em; + margin-bottom: 1em; + text-align: center; +} +.toccolours { + border: 1px solid #aaa; + background-color: #f9f9f9; + padding: 5px; + font-size: 95%; +} +div.townBox { + position: relative; + float: right; + background: white; + margin-left: 1em; + border: 1px solid gray; + padding: .3em; + width: 200px; + overflow: hidden; + clear: right; +} +div.townBox dl { + padding: 0; + margin: 0 0 .3em; + font-size: 96%; +} +div.townBox dl dt { + background: none; + margin: .4em 0 0; +} +div.townBox dl dd { + margin: .1em 0 0 1.1em; + background-color: #f3f3f3; +} + +/* +** edit views etc +*/ +.special li { + line-height: 1.4em; + margin: 0; + padding: 0; +} + +/* Page history styling */ +/* the auto-generated edit comments */ +.autocomment { + color: gray; +} +#pagehistory span.user { + margin-left: 1.4em; + margin-right: .4em; +} +#pagehistory span.minor { + font-weight: bold; +} +#pagehistory li { + border: 1px solid white; +} +#pagehistory li.selected { + background-color: #f9f9f9; + border: 1px dashed #aaa; +} + +/* +** Diff rendering +*/ +table.diff, td.diff-otitle, td.diff-ntitle { + background-color: white; +} +td.diff-addedline { + background: #cfc; + font-size: smaller; +} +td.diff-deletedline { + background: #ffa; + font-size: smaller; +} +td.diff-context { + background: #eee; + font-size: smaller; +} +span.diffchange { + color: red; + font-weight: bold; +} + +/* +** keep the whitespace in front of the ^=, hides rule from konqueror +** this is css3, the validator doesn't like it when validating as css2 +*/ +#bodyContent a.external, +#bodyContent a[href ^="gopher://"] { + background: url(external.png) center right no-repeat; + padding-right: 13px; +} +#bodyContent a[href ^="https://"], +.link-https { + background: url(lock_icon.gif) center right no-repeat; + padding-right: 16px; +} +#bodyContent a[href ^="mailto:"], +.link-mailto { + background: url(mail_icon.gif) center right no-repeat; + padding-right: 18px; +} +#bodyContent a[href ^="news://"] { + background: url(news_icon.png) center right no-repeat; + padding-right: 18px; +} +#bodyContent a[href ^="ftp://"], +.link-ftp { + background: url(file_icon.gif) center right no-repeat; + padding-right: 18px; +} +#bodyContent a[href ^="irc://"], +.link-irc { + background: url(discussionitem_icon.gif) center right no-repeat; + padding-right: 18px; +} +#bodyContent a.external[href $=".ogg"], #bodyContent a.external[href $=".OGG"], +#bodyContent a.external[href $=".mid"], #bodyContent a.external[href $=".MID"], +#bodyContent a.external[href $=".midi"], #bodyContent a.external[href $=".MIDI"], +#bodyContent a.external[href $=".mp3"], #bodyContent a.external[href $=".MP3"], +#bodyContent a.external[href $=".wav"], #bodyContent a.external[href $=".WAV"], +#bodyContent a.external[href $=".wma"], #bodyContent a.external[href $=".WMA"], +.link-audio { + background: url("audio.png") center right no-repeat; + padding-right: 13px; +} +#bodyContent a.external[href $=".ogm"], #bodyContent a.external[href $=".OGM"], +#bodyContent a.external[href $=".avi"], #bodyContent a.external[href $=".AVI"], +#bodyContent a.external[href $=".mpeg"], #bodyContent a.external[href $=".MPEG"], +#bodyContent a.external[href $=".mpg"], #bodyContent a.external[href $=".MPG"], +.link-video { + background: url("video.png") center right no-repeat; + padding-right: 13px; +} +#bodyContent a.external[href $=".pdf"], #bodyContent a.external[href $=".PDF"], +#bodyContent a.external[href *=".pdf#"], #bodyContent a.external[href *=".PDF#"], +#bodyContent a.external[href *=".pdf?"], #bodyContent a.external[href *=".PDF?"], +.link-document { + background: url("document.png") center right no-repeat; + padding-right: 12px; +} + +/* disable interwiki styling */ +#bodyContent a.extiw, +#bodyContent a.extiw:active { + color: #36b; + background: none; + padding: 0; +} +#bodyContent a.external { + color: #36b; +} +/* this can be used in the content area to switch off +special external link styling */ +#bodyContent .plainlinks a { + background: none !important; + padding: 0 !important; +} +/* +** Structural Elements +*/ + +/* +** general portlet styles (elements in the quickbar) +*/ +.portlet { + border: none; + margin: 0 0 .5em; + padding: 0; + float: none; + width: 11.6em; + overflow: hidden; +} +.portlet h4 { + font-size: 95%; + font-weight: normal; + white-space: nowrap; +} +.portlet h5 { + background: transparent; + padding: 0 1em 0 .5em; + display: inline; + height: 1em; + text-transform: lowercase; + font-size: 91%; + font-weight: normal; + white-space: nowrap; +} +.portlet h6 { + background: #ffae2e; + border: 1px solid #2f6fab; + border-style: solid solid none solid; + padding: 0 1em 0 1em; + text-transform: lowercase; + display: block; + font-size: 1em; + height: 1.2em; + font-weight: normal; + white-space: nowrap; +} +.pBody { + font-size: 95%; + background-color: white; + color: black; + border-collapse: collapse; + border: 1px solid #aaa; + padding: 0 .8em .3em .5em; +} +.portlet h1, +.portlet h2, +.portlet h3, +.portlet h4 { + margin: 0; + padding: 0; +} +.portlet ul { + line-height: 1.5em; + list-style-type: square; + list-style-image: url(bullet.gif); + font-size: 95%; +} +.portlet li { + padding: 0; + margin: 0; +} + +/* +** Logo properties +*/ + +@media handheld { + #p-logo { display: none } +} + +/* +** the navigation portlet +*/ + +#p-navigation .pBody { + padding-right: 0; +} + +#p-navigation li.active a, #p-navigation li.active a:hover { + text-decoration: none; + font-weight: bold; +} + + +/* +** Search portlet +*/ +input.searchButton { + margin-top: 1px; + font-size: 95%; +} +#searchGoButton { + padding-left: .5em; + padding-right: .5em; + font-weight: bold; +} +#searchInput { + width: 10.9em; + margin: 0; + font-size: 95%; +} +#p-search .pBody { + padding: .5em .4em .4em .4em; + text-align: center; +} + +/* +** the personal toolbar +*/ +#p-personal ul { + text-transform: lowercase; +} +#p-personal li.active { + font-weight: bold; +} +/* +** the page-related actions- page/talk, edit etc +*/ +#p-cactions .hiddenStructure { + display: none; +} +#p-cactions li a { + text-transform: lowercase; +} + +/* TODO: #t-iscite is only used by the Cite extension, come up with some + * system which allows extensions to add to this file on the fly + */ +#t-ispermalink, #t-iscite { + color: #999; +} +/* +** footer +*/ +#footer { + background-color: white; + border-top: 1px solid #fabd23; + border-bottom: 1px solid #fabd23; + margin: .6em 0 1em 0; + padding: .4em 0 1.2em 0; + text-align: center; + font-size: 90%; +} +#footer li { + display: inline; + margin: 0 1.3em; +} +/* hide from incapable browsers */ +head:first-child+body #footer li { white-space: nowrap; } +#f-poweredbyico, #f-copyrightico { + margin: 0 8px; + position: relative; + top: -2px; /* Bump it up just a tad */ +} +#f-poweredbyico { + float: right; + height: 1%; +} +#f-copyrightico { + float: left; + height: 1%; +} + +/* js pref toc */ +#preftoc { + margin: 0; + padding: 0; + width: 100%; + clear: both; +} +#preftoc li { + background-color: #f0f0f0; + color: #000; +} +#preftoc li.selected { + font-weight: bold; + background-color: #f9f9f9; + border: 1px solid #aaa; + border-bottom: none; + cursor: default; + top: 1px; + padding-top: 2px; + margin-right: -3px; +} +#preftoc > li.selected { + top: 2px; +} +#preftoc a, +#preftoc a:active { + display: block; + color: #000; + padding: 0 .7em; + position: relative; + text-decoration: none; +} +#preftoc li.selected a { + cursor: default; + text-decoration: none; +} +#prefcontrol { + padding-top: 2em; + clear: both; +} +#preferences { + margin: 0; + border: 1px solid #aaa; + clear: both; + padding: 1.5em; + background-color: #F9F9F9; +} +.prefsection { + border: none; + padding: 0; + margin: 0; +} +.prefsection fieldset { + border: 1px solid #aaa; + float: left; + margin-right: 2em; +} +.prefsection legend { + font-weight: bold; +} +.prefsection table, .prefsection legend { + background-color: #F9F9F9; +} +div.prefsectiontip { + font-size: 95%; + margin-top: 0; + background-color: #FFC1C1; + padding: .2em .7em; + clear: both; +} +.btnSavePrefs { + font-weight: bold; + padding-left: .3em; + padding-right: .3em; +} + +.preferences-login { + clear: both; + margin-bottom: 1.5em; +} + +.prefcache { + font-size: 90%; + margin-top: 2em; +} + +div#userloginForm form, +div#userlogin form#userlogin2 { + margin: 0 3em 1em 0; + border: 1px solid #aaa; + clear: both; + padding: 1.5em 2em; + background-color: #f9f9f9; + float: left; +} + +div#userloginForm table, +div#userlogin form#userlogin2 table { + background-color: #f9f9f9; +} + +div#userloginForm h2, +div#userlogin form#userlogin2 h2 { + padding-top: 0; +} + +div#userlogin .captcha { + border: 1px solid #bbb; + padding: 1.5em 2em; + width: 400px; + background-color: white; +} + + +#userloginprompt, #languagelinks { + font-size: 85%; +} + +#login-sectiontip { + font-size: 85%; + line-height: 1.2; + padding-top: 2em; +} + +#userlogin .loginText, #userlogin .loginPassword { + width: 12em; +} + +#userloginlink a, #wpLoginattempt, #wpCreateaccount { + font-weight: bold; +} + +/* more IE fixes */ +/* float/negative margin brokenness */ +* html #footer {margin-top: 0;} +* html #column-content { + display: inline; + margin-bottom: 0; +} +* html div.editsection { font-size: smaller; } +#pagehistory li.selected { position: relative; } + +/* Mac IE 5.0 fix; floated content turns invisible */ +* > html #column-content { + float: none; +} +* > html #column-one { + position: absolute; + left: 0; + top: 0; +} +* > html #footer { + margin-left: 13.2em; +} +.redirectText { + font-size: 150%; + margin: 5px; +} + +.printfooter { + display: none; +} + +.not-patrolled { + background-color: #ffa; +} +div.patrollink { + font-size: 75%; + text-align: right; +} +span.newpage, span.minor, span.searchmatch, span.bot { + font-weight: bold; +} +span.unpatrolled { + font-weight: bold; + color: red; +} + +span.searchmatch { + color: red; +} +.sharedUploadNotice { + font-style: italic; +} + +span.updatedmarker { + color: black; + background-color: #0f0; +} +span.newpageletter { + font-weight: bold; + color: black; + background-color: yellow; +} +span.minoreditletter { + color: black; + background-color: #c5ffe6; +} + +table.gallery { + border: 1px solid #ccc; + margin: 2px; + padding: 2px; + background-color: white; +} + +table.gallery tr { + vertical-align: top; +} + +table.gallery td { + vertical-align: top; + background-color: #f9f9f9; + border: solid 2px white; +} + +table.gallery td.galleryheader { + text-align: center; + font-weight: bold; +} + +div.gallerybox { + margin: 2px; + width: 150px; +} + +div.gallerybox div.thumb { + text-align: center; + border: 1px solid #ccc; + margin: 2px; +} + +div.gallerytext { + font-size: 94%; + padding: 2px 4px; +} + +span.comment { + font-style: italic; +} + +span.changedby { + font-size: 95%; +} + +.previewnote { + text-indent: 3em; + color: #c00; + border-bottom: 1px solid #aaa; + padding-bottom: 1em; + margin-bottom: 1em; +} + +.previewnote p { + margin: 0; + padding: 0; +} + +.editExternally { + border: 1px solid gray; + background-color: #ffffff; + padding: 3px; + margin-top: 0.5em; + float: left; + font-size: small; + text-align: center; +} +.editExternallyHelp { + font-style: italic; + color: gray; +} + +li span.deleted, span.history-deleted { + text-decoration: line-through; + color: #888; + font-style: italic; +} + +.toggle { + margin-left: 2em; + text-indent: -2em; +} + +/* Classes for EXIF data display */ +table.mw_metadata { + font-size: 0.8em; + margin-left: 0.5em; + margin-bottom: 0.5em; + width: 300px; +} + +table.mw_metadata caption { + font-weight: bold; +} + +table.mw_metadata th { + font-weight: normal; +} + +table.mw_metadata td { + padding: 0.1em; +} + +table.mw_metadata { + border: none; + border-collapse: collapse; +} + +table.mw_metadata td, table.mw_metadata th { + text-align: center; + border: 1px solid #aaaaaa; + padding-left: 0.1em; + padding-right: 0.1em; +} + +table.mw_metadata th { + background-color: #f9f9f9; +} + +table.mw_metadata td { + background-color: #fcfcfc; +} + +table.collapsed tr.collapsable { + display: none; +} + + +/* filetoc */ +ul#filetoc { + text-align: center; + border: 1px solid #aaaaaa; + background-color: #f9f9f9; + padding: 5px; + font-size: 95%; + margin-bottom: 0.5em; + margin-left: 0; + margin-right: 0; +} + +#filetoc li { + display: inline; + list-style-type: none; + padding-right: 2em; +} + +input#wpSummary { + width: 80%; +} + +/* @bug 1714 */ +input#wpSave, input#wpDiff { + margin-right: 0.33em; +} + +#editform .editOptions { + display: inline; +} + +#wpSave { + font-weight: bold; +} + +/* Classes for article validation */ + +table.revisionform_default { + border: 1px solid #000000; +} + +table.revisionform_focus { + border: 1px solid #000000; + background-color:#00BBFF; +} + +tr.revision_tr_default { + background-color:#EEEEEE; +} + +tr.revision_tr_first { + background-color:#DDDDDD; +} + +p.revision_saved { + color: green; + font-weight:bold; +} + +#mw_trackbacks { + border: solid 1px #bbbbff; + background-color: #eeeeff; + padding: 0.2em; +} + + +/* Allmessages table */ + +#allmessagestable th { + background-color: #b2b2ff; +} + +#allmessagestable tr.orig { + background-color: #ffe2e2; +} + +#allmessagestable tr.new { + background-color: #e2ffe2; +} + +#allmessagestable tr.def { + background-color: #f0f0ff; +} + + +/* noarticletext */ +div.noarticletext { + border: 1px solid #ccc; + background: #fff; + padding: .2em 1em; + color: #000; +} + +div#searchTargetContainer { + left: 10px; + top: 10px; + width: 90%; + background: white; +} + +div#searchTarget { + padding: 3px; + margin: 5px; + background: #F0F0F0; + border: solid 1px blue; +} + +div#searchTarget ul li { + list-style: none; +} + +div#searchTarget ul li:before { + color: orange; + content: "\00BB \0020"; +} + +div.multipageimagenavbox { + border: solid 1px silver; + padding: 4px; + margin: 1em; + -moz-border-radius: 6px; + background: #f0f0f0; +} + +div.multipageimagenavbox div.thumb { + border: none; + margin-left: 2em; + margin-right: 2em; +} + +div.multipageimagenavbox hr { + margin: 6px; +} + +table.multipageimage td { + text-align: center; +} + +/** Special:Version */ + +table#sv-ext, table#sv-hooks { + margin: 1em; + padding:0em; +} + +#sv-ext td, #sv-hooks td, +#sv-ext th, #sv-hooks th { + border: 1px solid #A0A0A0; + padding: 0 0.15em 0 0.15em; +} +#sv-ext th, #sv-hooks th { + background-color: #F0F0F0; + color: black; + padding: 0 0.15em 0 0.15em; +} +tr.sv-space{ + height: 0.8em; + border:none; +} +tr.sv-space td { display: none; } + +/* + Table pager (e.g. Special:Imagelist) + - remove underlines from the navigation link + - collapse borders + - set the borders to outsets (similar to Special:Allmessages) + - remove line wrapping for all td and th, set background color + - restore line wrapping for the last two table cells (description and size) +*/ +.TablePager_nav a { text-decoration: none; } +.TablePager { border-collapse: collapse; } +.TablePager, .TablePager td, .TablePager th { + border: 0.15em solid #777777; + padding: 0 0.15em 0 0.15em; +} +.TablePager th { background-color: #eeeeff } +.TablePager td { background-color: #ffffff } +.TablePager tr:hover td { background-color: #eeeeff } + +.imagelist td, .imagelist th { white-space: nowrap } +.imagelist .TablePager_col_links { background-color: #eeeeff } +.imagelist .TablePager_col_img_description { white-space: normal } +.imagelist th.TablePager_sort { background-color: #ccccff } + +.templatesUsed { margin-top: 1.5em; } + +.mw-summary-preview { + margin: 0.1em 0; +} +#toolbar { clear: both; } + +.mw-plusminus-null { color: #aaa; } + +@media handheld { + .nonessential { + /* Kill big bulky stuff that will clog up the screen */ + display: none; + } +}
\ No newline at end of file diff --git a/skins/monobook/main.css b/skins/monobook/main.css index 95b4c735..dbfc0801 100644 --- a/skins/monobook/main.css +++ b/skins/monobook/main.css @@ -9,25 +9,38 @@ ** All you guys rock :) */ -#column-content { - width: 100%; - float: right; - margin: 0 0 .6em -12.2em; - padding: 0; -} +/** + * Stylesheet for screen/projection. All rules not marked media-specific are + * shared with handheld.css and should be updated in tandem. The rules can't + * be in the same file because old browsers like IE5 won't obey @media rules. + * + * Rules that are screen/projection-specific are marked with commented-out + * @media rules and indentation. + */ + +/* @media screen, projection { */ + #column-content { + width: 100%; + float: right; + margin: 0 0 .6em -12.2em; + padding: 0; + } + #content { + margin: 2.8em 0 0 12.2em; + padding: 0 1em 1.5em 1em; + position: relative; + z-index: 2; + } + #column-one { + padding-top: 160px; + } +/* } */ #content { - margin: 2.8em 0 0 12.2em; - padding: 0 1em 1.5em 1em; background: white; color: black; border: 1px solid #aaa; border-right: none; line-height: 1.5em; - position: relative; - z-index: 2; -} -#column-one { - padding-top: 160px; } /* the left column width is specified in class .portlet */ @@ -61,6 +74,9 @@ body { table { font-size: 100%; color: black; + /* we don't want the bottom borders of <h2>s to be visible through + floated tables */ + background-color: white; } a { text-decoration: none; @@ -90,10 +106,12 @@ img { border: none; vertical-align: middle; } -p { - margin: .4em 0 .5em 0; - line-height: 1.5em; -} +/* @media screen, projection { */ + p { + margin: .4em 0 .5em 0; + line-height: 1.5em; + } +/* } */ p img { margin: 0; } @@ -116,15 +134,26 @@ h1, h2, h3, h4, h5, h6 { border-bottom: 1px solid #aaa; } h1 { font-size: 188%; } +h1 .editsection { font-size: 53%; } h2 { font-size: 150%; } +h2 .editsection { font-size: 67%; } h3, h4, h5, h6 { border-bottom: none; font-weight: bold; } h3 { font-size: 132%; } +h3 .editsection { font-size: 76%; font-weight: normal; } h4 { font-size: 116%; } +h4 .editsection { font-size: 86%; font-weight: normal; } h5 { font-size: 100%; } +h5 .editsection { font-weight: normal; } h6 { font-size: 80%; } +h6 .editsection { font-size: 125%; font-weight: normal; } + +.editsection { + float: right; + margin-left: 5px; +} ul { line-height: 1.5em; @@ -216,13 +245,14 @@ pre { ** the main content area */ -#siteSub { - display: none; -} - -#jump-to-nav { - display: none; -} +/* @media screen, projection { */ + #siteSub { + display: none; + } + #jump-to-nav { + display: none; + } +/* } */ #contentSub, #contentSub2 { font-size: 84%; @@ -398,6 +428,7 @@ div.floatright, table.floatright { div.floatright p { font-style: italic; } div.floatleft, table.floatleft { float: left; + clear: left; position: relative; margin: 0 .5em .5em 0; border: 0; @@ -415,7 +446,7 @@ div.thumb { border-color: white; width: auto; } -div.thumb div { +div.thumbinner { border: 1px solid #ccc; padding: 3px !important; background-color: #f9f9f9; @@ -423,14 +454,15 @@ div.thumb div { text-align: center; overflow: hidden; } -div.thumb div a img { +html .thumbimage { border: 1px solid #ccc; } -div.thumb div div.thumbcaption { +html .thumbcaption { border: none; text-align: left; line-height: 1.4em; - padding: .3em 0 .1em 0; + padding: 3px !important; + font-size: 94%; } div.magnify { float: right; @@ -449,6 +481,7 @@ div.tright { } div.tleft { float: left; + clear: left; margin-right: .5em; border-width: .5em 1.4em .8em 0; } @@ -596,6 +629,32 @@ span.diffchange { background: url(discussionitem_icon.gif) center right no-repeat; padding-right: 18px; } +#bodyContent a.external[href $=".ogg"], #bodyContent a.external[href $=".OGG"], +#bodyContent a.external[href $=".mid"], #bodyContent a.external[href $=".MID"], +#bodyContent a.external[href $=".midi"], #bodyContent a.external[href $=".MIDI"], +#bodyContent a.external[href $=".mp3"], #bodyContent a.external[href $=".MP3"], +#bodyContent a.external[href $=".wav"], #bodyContent a.external[href $=".WAV"], +#bodyContent a.external[href $=".wma"], #bodyContent a.external[href $=".WMA"], +.link-audio { + background: url("audio.png") center right no-repeat; + padding-right: 13px; +} +#bodyContent a.external[href $=".ogm"], #bodyContent a.external[href $=".OGM"], +#bodyContent a.external[href $=".avi"], #bodyContent a.external[href $=".AVI"], +#bodyContent a.external[href $=".mpeg"], #bodyContent a.external[href $=".MPEG"], +#bodyContent a.external[href $=".mpg"], #bodyContent a.external[href $=".MPG"], +.link-video { + background: url("video.png") center right no-repeat; + padding-right: 13px; +} +#bodyContent a.external[href $=".pdf"], #bodyContent a.external[href $=".PDF"], +#bodyContent a.external[href *=".pdf#"], #bodyContent a.external[href *=".PDF#"], +#bodyContent a.external[href *=".pdf?"], #bodyContent a.external[href *=".PDF?"], +.link-document { + background: url("document.png") center right no-repeat; + padding-right: 12px; +} + /* disable interwiki styling */ #bodyContent a.extiw, #bodyContent a.extiw:active { @@ -684,48 +743,52 @@ special external link styling */ ** Logo properties */ -#p-logo { - z-index: 3; - position: absolute; /*needed to use z-index */ - top: 0; - left: 0; - height: 155px; - width: 12em; - overflow: visible; -} -#p-logo h5 { - display: none; -} -#p-logo a, -#p-logo a:hover { - display: block; - height: 155px; - width: 12.2em; - background-repeat: no-repeat; - background-position: 35% 50% !important; - text-decoration: none; -} - +/* @media screen, projection { */ + #p-logo { + top: 0; + left: 0; + position: absolute; /*needed to use z-index */ + z-index: 3; + height: 155px; + width: 12em; + overflow: visible; + } + #p-logo h5 { + display: none; + } + #p-logo a, + #p-logo a:hover { + display: block; + height: 155px; + width: 12.2em; + background-repeat: no-repeat; + background-position: 35% 50% !important; + text-decoration: none; + } +/* } */ /* ** the navigation portlet */ -#p-navigation { - position: relative; - z-index: 3; -} +/* @media screen, projection { */ + #p-navigation { + position: relative; + z-index: 3; + } + #p-navigation a { + display: block; + } + #p-navigation li.active a, #p-navigation li.active a:hover { + display: inline; + } +/* } */ #p-navigation .pBody { padding-right: 0; } -#p-navigation a { - display: block; -} - #p-navigation li.active a, #p-navigation li.active a:hover { text-decoration: none; - display: inline; font-weight: bold; } @@ -733,10 +796,12 @@ special external link styling */ /* ** Search portlet */ -#p-search { - position: relative; - z-index: 3; -} +/* @media screen, projection { */ + #p-search { + position: relative; + z-index: 3; + } +/* } */ input.searchButton { margin-top: 1px; font-size: 95%; @@ -759,176 +824,193 @@ input.searchButton { /* ** the personal toolbar */ - -#p-personal { - width: 100%; - white-space: nowrap; - padding: 0; - margin: 0; - position: absolute; - left: 0; - top: 0; - z-index: 0; - border: none; - background: none; - overflow: visible; - line-height: 1.2em; -} - -#p-personal h5 { - display: none; -} -#p-personal .portlet, -#p-personal .pBody { - padding: 0; - margin: 0; - border: none; - z-index: 0; - overflow: visible; - background: none; -} +/* @media screen, projection { */ + #p-personal { + position: absolute; + left: 0; + top: 0; + z-index: 0; + } + #p-personal { + width: 100%; + white-space: nowrap; + padding: 0; + margin: 0; + border: none; + background: none; + overflow: visible; + line-height: 1.2em; + } + #p-personal h5 { + display: none; + } + #p-personal .portlet, + #p-personal .pBody { + z-index: 0; + padding: 0; + margin: 0; + border: none; + overflow: visible; + background: none; + } /* this is the ul contained in the portlet */ + #p-personal ul { + border: none; + line-height: 1.4em; + color: #2f6fab; + padding: 0 2em 0 3em; + margin: 0; + text-align: right; + list-style: none; + z-index: 0; + background: none; + cursor: default; + } + #p-personal li { + z-index: 0; + border: none; + padding: 0; + display: inline; + color: #2f6fab; + margin-left: 1em; + line-height: 1.2em; + background: none; + } + #p-personal li a { + text-decoration: none; + color: #005896; + padding-bottom: .2em; + background: none; + } + #p-personal li a:hover { + background-color: white; + padding-bottom: .2em; + text-decoration: none; + } + #p-personal li.active a:hover { + background-color: transparent; + } + /* the icon in front of the user name, single quotes + in bg url to hide it from iemac */ + li#pt-userpage, + li#pt-anonuserpage, + li#pt-login { + background: url(user.gif) top left no-repeat; + padding-left: 20px; + text-transform: none; + } +/* } */ #p-personal ul { - border: none; - line-height: 1.4em; - color: #2f6fab; - padding: 0 2em 0 3em; - margin: 0; - text-align: right; text-transform: lowercase; - list-style: none; - z-index: 0; - background: none; - cursor: default; -} -#p-personal li { - z-index: 0; - border: none; - padding: 0; - display: inline; - color: #2f6fab; - margin-left: 1em; - line-height: 1.2em; - background: none; } #p-personal li.active { font-weight: bold; } -#p-personal li a { - text-decoration: none; - color: #005896; - padding-bottom: .2em; - background: none; -} -#p-personal li a:hover { - background-color: white; - padding-bottom: .2em; - text-decoration: none; -} -#p-personal li.active a:hover { - background-color: transparent; -} -/* the icon in front of the user name, single quotes -in bg url to hide it from iemac */ -li#pt-userpage, -li#pt-anonuserpage, -li#pt-login { - background: url(user.gif) top left no-repeat; - padding-left: 20px; - text-transform: none; -} - /* ** the page-related actions- page/talk, edit etc */ -#p-cactions { - position: absolute; - top: 1.3em; - left: 11.5em; - margin: 0; - white-space: nowrap; - width: 76%; - line-height: 1.1em; - overflow: visible; - background: none; - border-collapse: collapse; - padding-left: 1em; - list-style: none; - font-size: 95%; -} +/* @media screen, projection { */ + #p-cactions { + position: absolute; + top: 1.3em; + left: 11.5em; + margin: 0; + white-space: nowrap; + width: 76%; + line-height: 1.1em; + overflow: visible; + background: none; + border-collapse: collapse; + padding-left: 1em; + list-style: none; + font-size: 95%; + } + #p-cactions ul { + list-style: none; + } + #p-cactions li { + display: inline; + border: 1px solid #aaa; + border-bottom: none; + padding: 0 0 .1em 0; + margin: 0 .3em 0 0; + overflow: visible; + background: white; + } + #p-cactions li.selected { + border-color: #fabd23; + padding: 0 0 .2em 0; + font-weight: bold; + } + #p-cactions li a { + background-color: #fbfbfb; + color: #002bb8; + border: none; + padding: 0 .8em .3em; + position: relative; + z-index: 0; + margin: 0; + text-decoration: none; + } + #p-cactions li.selected a { + z-index: 3; + padding: 0 1em .2em!important; + background-color: white; + } + #p-cactions .new a { + color: #ba0000; + } + #p-cactions li a:hover { + z-index: 3; + text-decoration: none; + background-color: white; + } + #p-cactions h5 { + display: none; + } + #p-cactions li.istalk { + margin-right: 0; + } + #p-cactions li.istalk a { + padding-right: .5em; + } + #p-cactions #ca-addsection a { + padding-left: .4em; + padding-right: .4em; + } + /* offsets to distinguish the tab groups */ + li#ca-talk { + margin-right: 1.6em; + } + li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print { + margin-left: 1.6em; + } + #p-cactions .pBody { + font-size: 1em; + background-color: transparent; + color: inherit; + border-collapse: inherit; + border: 0; + padding: 0; + } +/* } */ #p-cactions .hiddenStructure { display: none; } -#p-cactions ul { - list-style: none; -} -#p-cactions li { - display: inline; - border: 1px solid #aaa; - border-bottom: none; - padding: 0 0 .1em 0; - margin: 0 .3em 0 0; - overflow: visible; - background: white; -} -#p-cactions li.selected { - border-color: #fabd23; - padding: 0 0 .2em 0; - font-weight: bold; -} #p-cactions li a { - background-color: #fbfbfb; - color: #002bb8; - border: none; - padding: 0 .8em .3em; - text-decoration: none; text-transform: lowercase; - position: relative; - z-index: 0; - margin: 0; -} -#p-cactions li.selected a { - z-index: 3; - background-color: #fff; - padding: 0 1em .2em!important; -} -#p-cactions .new a { - color: #ba0000; -} -#p-cactions li a:hover { - z-index: 3; - text-decoration: none; - background-color: #fff; -} -#p-cactions h5 { - display: none; -} -#p-cactions li.istalk { - margin-right: 0; -} -#p-cactions li.istalk a { - padding-right: .5em; -} -#p-cactions #ca-addsection a { - padding-left: .4em; - padding-right: .4em; -} -/* offsets to distinguish the tab groups */ -li#ca-talk { - margin-right: 1.6em; -} -li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print { - margin-left: 1.6em; } /* ** the remaining portlets */ -#p-tbx, -#p-lang { - position: relative; - z-index: 3; -} +/* @media screen, projection { */ + #p-tbx, + #p-lang { + position: relative; + z-index: 3; + } +/* } */ /* TODO: #t-iscite is only used by the Cite extension, come up with some * system which allows extensions to add to this file on the fly @@ -976,20 +1058,24 @@ head:first-child+body #footer li { white-space: nowrap; } clear: both; } #preftoc li { - margin: 1px -2px 1px 2px; - float: left; - padding: 2px 0 3px 0; background-color: #f0f0f0; color: #000; - border: 1px solid #fff; - border-right-color: #716f64; - border-bottom: 0; - position: relative; - white-space: nowrap; - list-style-type: none; - list-style-image: none; - z-index: 3; } +/* @media screen, projection { */ + #preftoc li { + margin: 1px -2px 1px 2px; + float: left; + padding: 2px 0 3px 0; + border: 1px solid #fff; + border-right-color: #716f64; + border-bottom: 0; + position: relative; + white-space: nowrap; + list-style-type: none; + list-style-image: none; + z-index: 3; + } +/* } */ #preftoc li.selected { font-weight: bold; background-color: #f9f9f9; @@ -1042,9 +1128,11 @@ head:first-child+body #footer li { white-space: nowrap; } .prefsection table, .prefsection legend { background-color: #F9F9F9; } -.mainLegend { - display: none; -} +/* @media screen, projection { */ + .mainLegend { + display: none; + } +/* } */ div.prefsectiontip { font-size: 95%; margin-top: 0; @@ -1114,27 +1202,29 @@ div#userlogin .captcha { font-weight: bold; } -/* -** IE/Mac fixes, hope to find a validating way to move this -** to a separate stylesheet. This would work but doesn't validate: -** @import("IEMacFixes.css"); -*/ -/* tabs: border on the a, not the div */ -* > html #p-cactions li { border: none; } -* > html #p-cactions li a { - border: 1px solid #aaa; - border-bottom: none; -} -* > html #p-cactions li.selected a { border-color: #fabd23; } -/* footer icons need a fixed width */ -* > html #f-poweredbyico, -* > html #f-copyrightico { width: 88px; } -* > html #bodyContent, -* > html #bodyContent pre { - overflow-x: auto; - width: 100%; - padding-bottom: 25px; -} +/* @media screen, projection { */ + /* + ** IE/Mac fixes, hope to find a validating way to move this + ** to a separate stylesheet. This would work but doesn't validate: + ** @import("IEMacFixes.css"); + */ + /* tabs: border on the a, not the div */ + * > html #p-cactions li { border: none; } + * > html #p-cactions li a { + border: 1px solid #aaa; + border-bottom: none; + } + * > html #p-cactions li.selected a { border-color: #fabd23; } + /* footer icons need a fixed width */ + * > html #f-poweredbyico, + * > html #f-copyrightico { width: 88px; } + * > html #bodyContent, + * > html #bodyContent pre { + overflow-x: auto; + width: 100%; + padding-bottom: 25px; + } +/* } */ /* more IE fixes */ /* float/negative margin brokenness */ @@ -1350,6 +1440,10 @@ ul#filetoc { padding-right: 2em; } +input#wpSummary { + width: 80%; +} + /* @bug 1714 */ input#wpSave, input#wpDiff { margin-right: 0.33em; @@ -1466,6 +1560,29 @@ table.multipageimage td { text-align: center; } +/** Special:Version */ + +table#sv-ext, table#sv-hooks { + margin: 1em; + padding:0em; +} + +#sv-ext td, #sv-hooks td, +#sv-ext th, #sv-hooks th { + border: 1px solid #A0A0A0; + padding: 0 0.15em 0 0.15em; +} +#sv-ext th, #sv-hooks th { + background-color: #F0F0F0; + color: black; + padding: 0 0.15em 0 0.15em; +} +tr.sv-space{ + height: 0.8em; + border:none; +} +tr.sv-space td { display: none; } + /* Table pager (e.g. Special:Imagelist) - remove underlines from the navigation link @@ -1488,3 +1605,12 @@ table.multipageimage td { .imagelist .TablePager_col_links { background-color: #eeeeff } .imagelist .TablePager_col_img_description { white-space: normal } .imagelist th.TablePager_sort { background-color: #ccccff } + +.templatesUsed { margin-top: 1.5em; } + +.mw-summary-preview { + margin: 0.1em 0; +} +#toolbar { clear: both; } + +.mw-plusminus-null { color: #aaa; }
\ No newline at end of file diff --git a/skins/monobook/rtl.css b/skins/monobook/rtl.css index 91e2fb37..f4a67683 100644 --- a/skins/monobook/rtl.css +++ b/skins/monobook/rtl.css @@ -41,6 +41,10 @@ html>body .portlet { float: right; clear: right; } +.editsection { + float: left; + margin-right: 5px; +} /* recover IEMac (might be fine with the float, but usually it's close to IE */ *>body .portlet { float: none; diff --git a/skins/monobook/video.png b/skins/monobook/video.png Binary files differnew file mode 100644 index 00000000..38103dac --- /dev/null +++ b/skins/monobook/video.png diff --git a/skins/simple/main.css b/skins/simple/main.css index d55552fc..e474f436 100644 --- a/skins/simple/main.css +++ b/skins/simple/main.css @@ -1,3 +1,29 @@ +/* For clarity, explicitly state some recommendations from <http://www.w3.org/ + TR/CSS21/sample.html> to make sure the editsection links scale right */ + +h1 { font-size: 2em; } +h2 { font-size: 1.5em; } +h3 { font-size: 1.17em; } +h5 { font-size: .83em; } +h6 { font-size: .75em; } +h1, h2, h3, h4, h5, h6 { font-weight: bolder } + +/* Now the custom parts */ + +/* Make edit sections (which are inside h# tags) normal-sized + and otherwise format */ +.editsection { + font-weight: normal; + float: right; + margin-left: 5px; +} +h1 .editsection { font-size: 50% } +h2 .editsection { font-size: 66.7% } +h3 .editsection { font-size: 85.5% } +h5 .editsection { font-size: 120% } +h6 .editsection { font-size: 133% } + + #toolbar { display: none; } @@ -276,6 +302,7 @@ div.floatright, table.floatright { div.floatright p { font-style: italic; } div.floatleft, table.floatleft { float: left; + clear: left; margin: 0.3em 0.5em 0.5em 0; position: relative; border-width: 0.5em 1.4em 0.8em 0; @@ -315,6 +342,7 @@ div.tright { } div.tleft { float: left; + clear: left; margin-right:0.5em; border-width: 0.5em 1.4em 0.8em 0; } @@ -402,3 +430,13 @@ div.prefsectiontip { table.collapsed tr.collapsable { display: none; } + +.editsection { + float: right; + margin-left: 5px; +} + +.templatesUsed { margin-top: 1.5em; } +#toolbar { clear: both; } + +.mw-plusminus-null { color: #aaa; }
\ No newline at end of file |