r236 - in trunk/wiki.openmoko.org/space_www_wiki_skins: . chick common common/images common/images/icons disabled modern monobook openmoko simple
roh at daksha.openmoko.org
roh at daksha.openmoko.org
Wed May 28 20:51:14 CEST 2008
Author: roh
Date: 2008-05-28 18:51:12 +0000 (Wed, 28 May 2008)
New Revision: 236
Added:
trunk/wiki.openmoko.org/space_www_wiki_skins/Modern.deps.php
trunk/wiki.openmoko.org/space_www_wiki_skins/Modern.php
trunk/wiki.openmoko.org/space_www_wiki_skins/common/ajaxsearch.js
trunk/wiki.openmoko.org/space_www_wiki_skins/common/ajaxwatch.js
trunk/wiki.openmoko.org/space_www_wiki_skins/common/block.js
trunk/wiki.openmoko.org/space_www_wiki_skins/common/diff.css
trunk/wiki.openmoko.org/space_www_wiki_skins/common/diff.js
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Arr_u.png
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Checker-16x16.png
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_disabled_first_25.png
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_disabled_last_25.png
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_disabled_left_25.png
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_disabled_right_25.png
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_first.svg
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_first_25.png
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_last_25.png
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_left.svg
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_left_25.png
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_right_25.png
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-djvu.png
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-djvu.xcf
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/mediawiki-large.xcf
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/mediawiki-largesquare.xcf
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/sort_down.gif
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/sort_none.gif
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/sort_up.gif
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/spinner.gif
trunk/wiki.openmoko.org/space_www_wiki_skins/common/oldshared.css
trunk/wiki.openmoko.org/space_www_wiki_skins/common/shared.css
trunk/wiki.openmoko.org/space_www_wiki_skins/modern/
trunk/wiki.openmoko.org/space_www_wiki_skins/modern/audio.png
trunk/wiki.openmoko.org/space_www_wiki_skins/modern/bullet.gif
trunk/wiki.openmoko.org/space_www_wiki_skins/modern/discussionitem_icon.gif
trunk/wiki.openmoko.org/space_www_wiki_skins/modern/document.png
trunk/wiki.openmoko.org/space_www_wiki_skins/modern/external.png
trunk/wiki.openmoko.org/space_www_wiki_skins/modern/file_icon.gif
trunk/wiki.openmoko.org/space_www_wiki_skins/modern/footer-grad.png
trunk/wiki.openmoko.org/space_www_wiki_skins/modern/link_icon.gif
trunk/wiki.openmoko.org/space_www_wiki_skins/modern/lock_icon.gif
trunk/wiki.openmoko.org/space_www_wiki_skins/modern/mail_icon.gif
trunk/wiki.openmoko.org/space_www_wiki_skins/modern/main.css
trunk/wiki.openmoko.org/space_www_wiki_skins/modern/news_icon.png
trunk/wiki.openmoko.org/space_www_wiki_skins/modern/print.css
trunk/wiki.openmoko.org/space_www_wiki_skins/modern/rtl.css
trunk/wiki.openmoko.org/space_www_wiki_skins/modern/video.png
trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/audio.png
trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/document.png
trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/video.png
trunk/wiki.openmoko.org/space_www_wiki_skins/simple/rtl.css
Removed:
trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.tpl
trunk/wiki.openmoko.org/space_www_wiki_skins/common/common.css
trunk/wiki.openmoko.org/space_www_wiki_skins/disabled/HTMLDump.php
trunk/wiki.openmoko.org/space_www_wiki_skins/htmldump/
Modified:
trunk/wiki.openmoko.org/space_www_wiki_skins/Chick.deps.php
trunk/wiki.openmoko.org/space_www_wiki_skins/Chick.php
trunk/wiki.openmoko.org/space_www_wiki_skins/CologneBlue.php
trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.deps.php
trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.php
trunk/wiki.openmoko.org/space_www_wiki_skins/MySkin.deps.php
trunk/wiki.openmoko.org/space_www_wiki_skins/MySkin.php
trunk/wiki.openmoko.org/space_www_wiki_skins/Nostalgia.php
trunk/wiki.openmoko.org/space_www_wiki_skins/OpenMoko.php
trunk/wiki.openmoko.org/space_www_wiki_skins/Simple.deps.php
trunk/wiki.openmoko.org/space_www_wiki_skins/Simple.php
trunk/wiki.openmoko.org/space_www_wiki_skins/Standard.php
trunk/wiki.openmoko.org/space_www_wiki_skins/chick/main.css
trunk/wiki.openmoko.org/space_www_wiki_skins/common/IEFixes.js
trunk/wiki.openmoko.org/space_www_wiki_skins/common/ajax.js
trunk/wiki.openmoko.org/space_www_wiki_skins/common/cologneblue.css
trunk/wiki.openmoko.org/space_www_wiki_skins/common/commonPrint.css
trunk/wiki.openmoko.org/space_www_wiki_skins/common/common_rtl.css
trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-ogg.xcf
trunk/wiki.openmoko.org/space_www_wiki_skins/common/metadata.js
trunk/wiki.openmoko.org/space_www_wiki_skins/common/nostalgia.css
trunk/wiki.openmoko.org/space_www_wiki_skins/common/preview.js
trunk/wiki.openmoko.org/space_www_wiki_skins/common/protect.js
trunk/wiki.openmoko.org/space_www_wiki_skins/common/sticky.js
trunk/wiki.openmoko.org/space_www_wiki_skins/common/upload.js
trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikibits.js
trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikistandard.css
trunk/wiki.openmoko.org/space_www_wiki_skins/disabled/MonoBookCBT.php
trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE60Fixes.css
trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE70Fixes.css
trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/KHTMLFixes.css
trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/main.css
trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/rtl.css
trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/user.gif
trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/IE60Fixes.css
trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/IE70Fixes.css
trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/KHTMLFixes.css
trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/main.css
trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/rtl.css
trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/user.gif
trunk/wiki.openmoko.org/space_www_wiki_skins/simple/main.css
Log:
- major skin update. please test and report errors to roh
* the old openmoko wiki skin was based on some older version of monobook
* reworked the skin to the recent version of monobook delivered with mediawiki 1.12
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/Chick.deps.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/Chick.deps.php 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/Chick.deps.php 2008-05-28 18:51:12 UTC (rev 236)
@@ -5,6 +5,9 @@
// changed on a subsequent page view.
// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
-require_once('includes/SkinTemplate.php');
-require_once('MonoBook.php');
-?>
\ No newline at end of file
+if ( ! defined( 'MEDIAWIKI' ) )
+ die( 1 );
+
+require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
+require_once( dirname(__FILE__) . '/MonoBook.php' );
+
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/Chick.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/Chick.php 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/Chick.php 2008-05-28 18:51:12 UTC (rev 236)
@@ -3,20 +3,18 @@
* See skin.txt
*
* @todo document
- * @package MediaWiki
- * @subpackage Skins
+ * @addtogroup Skins
*/
if( !defined( 'MEDIAWIKI' ) )
die( -1 );
/** */
-require_once('MonoBook.php');
+require_once( dirname(__FILE__) . '/MonoBook.php' );
/**
* @todo document
- * @package MediaWiki
- * @subpackage Skins
+ * @addtogroup Skins
*/
class SkinChick extends SkinTemplate {
function initPage( &$out ) {
@@ -27,4 +25,4 @@
}
}
-?>
+
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/CologneBlue.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/CologneBlue.php 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/CologneBlue.php 2008-05-28 18:51:12 UTC (rev 236)
@@ -3,8 +3,7 @@
* See skin.txt
*
* @todo document
- * @package MediaWiki
- * @subpackage Skins
+ * @addtogroup Skins
*/
if( !defined( 'MEDIAWIKI' ) )
@@ -12,20 +11,21 @@
/**
* @todo document
- * @package MediaWiki
- * @subpackage Skins
+ * @addtogroup Skins
*/
class SkinCologneBlue extends Skin {
+ private $searchboxes = '';
+ // How many search boxes have we made? Avoid duplicate id's.
+
function getStylesheet() {
- return "common/cologneblue.css?1";
+ return 'common/cologneblue.css';
}
function getSkinName() {
return "cologneblue";
}
function doBeforeContent() {
- global $wgOut, $wgTitle;
$s = "";
$qb = $this->qbSetting();
@@ -82,7 +82,7 @@
$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" ) );
@@ -99,7 +99,7 @@
}
function doGetUserStyles() {
- global $wgOut, $wgStyleSheetPath;
+ global $wgOut;
$s = parent::doGetUserStyles();
$qb = $this->qbSetting();
@@ -136,7 +136,7 @@
}
$s = "" .
- $this->makeKnownLink( wfMsgForContent( "mainpage" ), wfMsg( "mainpage" ) )
+ $this->mainPageLink()
. " | " .
$this->makeKnownLink( wfMsgForContent( "aboutpage" ), wfMsg( "about" ) )
. " | " .
@@ -144,29 +144,19 @@
. " | " .
$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;
}
@@ -262,8 +252,8 @@
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 {
@@ -285,7 +275,7 @@
}
$s .= $sep . $this->makeKnownLinkObj(
- Title::makeTitle( NS_SPECIAL, 'Specialpages' ),
+ SpecialPage::getTitleFor( 'Specialpages' ),
wfMsg( 'moredotdotdot' ) );
$s .= $sep . "\n</div>\n";
@@ -304,15 +294,19 @@
$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( "go" ) ) . "\" /> <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;
}
}
-?>
+
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/Modern.deps.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/Modern.deps.php (rev 0)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/Modern.deps.php 2008-05-28 18:51:12 UTC (rev 236)
@@ -0,0 +1,13 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// Simple.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+if ( ! defined( 'MEDIAWIKI' ) )
+ die( 1 );
+
+require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
+require_once( dirname(__FILE__) . '/Modern.php' );
+
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/Modern.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/Modern.php (rev 0)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/Modern.php 2008-05-28 18:51:12 UTC (rev 236)
@@ -0,0 +1,293 @@
+<?php
+/**
+ * Modern skin, derived from monobook template.
+ *
+ * @todo document
+ * @addtogroup Skins
+ */
+
+if( !defined( 'MEDIAWIKI' ) )
+ die( -1 );
+
+/**
+ * Inherit main code from SkinTemplate, set the CSS and template filter.
+ * @todo document
+ * @addtogroup Skins
+ */
+class SkinModern extends SkinTemplate {
+ function initPage( &$out ) {
+ SkinTemplate::initPage( $out );
+ $this->skinname = 'modern';
+ $this->stylename = 'modern';
+ $this->template = 'ModernTemplate';
+ }
+}
+
+/**
+ * @todo document
+ * @addtogroup Skins
+ */
+class ModernTemplate extends QuickTemplate {
+ /**
+ * Template filter callback for Modern skin.
+ * Takes an associative array of data set from a SkinTemplate-based
+ * class, and a wrapper for MediaWiki's localization database, and
+ * outputs a formatted page.
+ *
+ * @access private
+ */
+ function execute() {
+ global $wgUser;
+ $skin = $wgUser->getSkin();
+
+ // Suppress warnings to prevent notices about missing indexes in $this->data
+ wfSuppressWarnings();
+
+?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<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') ?>/common/shared.css?<?php echo $GLOBALS['wgStyleVersion'] ?>";
+ @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') ?>/<?php $this->text('stylename') ?>/print.css?<?php echo $GLOBALS['wgStyleVersion'] ?>" />
+ <!--[if lt IE 7]><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?<?php echo $GLOBALS['wgStyleVersion'] ?>"><!-- wikibits js --></script>
+ <!-- Head Scripts -->
+<?php $this->html('headscripts') ?>
+<?php if($this->data['jsvarurl' ]) { ?>
+ <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('jsvarurl' ) ?>"><!-- site js --></script>
+<?php } ?>
+<?php if($this->data['pagecss' ]) { ?>
+ <style type="text/css"><?php $this->html('pagecss' ) ?></style>
+<?php }
+ if($this->data['usercss' ]) { ?>
+ <style type="text/css"><?php $this->html('usercss' ) ?></style>
+<?php }
+ if($this->data['userjs' ]) { ?>
+ <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('userjs' ) ?>"></script>
+<?php }
+ if($this->data['userjsprev']) { ?>
+ <script type="<?php $this->text('jsmimetype') ?>"><?php $this->html('userjsprev') ?></script>
+<?php }
+ if($this->data['trackbackhtml']) print $this->data['trackbackhtml']; ?>
+ </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') ?> <?php $this->text('pageclass') ?>">
+
+ <!-- heading -->
+ <div id="mw_header">
+ <h1 id="firstHeading"><?php $this->data['displaytitle']!=""?$this->html('title'):$this->text('title') ?></h1>
+ </div>
+
+ <div id="mw_main">
+ <div id="mw_contentwrapper">
+ <!-- navigation portlet -->
+ <div id="p-cactions" class="portlet">
+ <h5><?php $this->msg('views') ?></h5>
+ <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 $skin->tooltipAndAccesskey('ca-'.$key) ?>><?php
+ echo htmlspecialchars($tab['text']) ?></a></li>
+ <?php } ?>
+ </ul>
+ </div>
+ </div>
+
+ <!-- content -->
+ <div id="mw_content">
+ <!-- contentholder does nothing by default, but it allows users to style the text inside
+ the content area without affecting the meaning of 'em' in #mw_content, which is used
+ for the margins -->
+ <div id="mw_contentholder">
+ <div class='mw-topboxes'>
+ <div class="mw-topbox" id="siteSub"><?php $this->msg('tagline') ?></div>
+ <?php if($this->data['newtalk'] ) {
+ ?><div class="usermessage mw-topbox"><?php $this->html('newtalk') ?></div>
+ <?php } ?>
+ <?php if($this->data['sitenotice']) {
+ ?><div class="mw-topbox" id="siteNotice"><?php $this->html('sitenotice') ?></div>
+ <?php } ?>
+ </div>
+
+ <div id="contentSub"><?php $this->html('subtitle') ?></div>
+
+ <?php if($this->data['undelete']) { ?><div id="contentSub2"><?php $this->html('undelete') ?></div><?php } ?>
+ <?php if($this->data['showjumplinks']) { ?><div id="jump-to-nav"><?php $this->msg('jumpto') ?> <a href="#column-one"><?php $this->msg('jumptonavigation') ?></a>, <a href="#searchInput"><?php $this->msg('jumptosearch') ?></a></div><?php } ?>
+
+ <?php $this->html('bodytext') ?>
+ <div class='mw_clear'></div>
+ <?php if($this->data['catlinks']) { ?><div id="catlinks"><?php $this->html('catlinks') ?></div><?php } ?>
+ </div><!-- mw_contentholder -->
+ </div><!-- mw_content -->
+ </div><!-- mw_contentwrapper -->
+
+ <div id="mw_portlets">
+
+ <!-- other portlets -->
+ <?php foreach ($this->data['sidebar'] as $bar => $cont) { ?>
+ <div class='portlet' id='p-<?php echo Sanitizer::escapeId($bar) ?>'<?php echo $skin->tooltip('p-'.$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 Sanitizer::escapeId($val['id']) ?>"<?php
+ if ( $val['active'] ) { ?> class="active" <?php }
+ ?>><a href="<?php echo htmlspecialchars($val['href']) ?>"<?php echo $skin->tooltipAndAccesskey($val['id']) ?>><?php echo htmlspecialchars($val['text']) ?></a></li>
+<?php } ?>
+ </ul>
+ </div><!-- pBody -->
+ </div><!-- portlet -->
+ <?php } ?>
+
+ <!-- search -->
+ <div id="p-search" class="portlet">
+ <h5><label for="searchInput"><?php $this->msg('search') ?></label></h5>
+ <div id="searchBody" class="pBody">
+ <form action="<?php $this->text('searchaction') ?>" id="searchform"><div>
+ <input id="searchInput" name="search" type="text"<?php echo $skin->tooltipAndAccesskey('search');
+ 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') ?>"<?php echo $skin->tooltipAndAccesskey( 'search-go' ); ?> />
+ <input type='submit' name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg('searchbutton') ?>"<?php echo $skin->tooltipAndAccesskey( 'search-fulltext' ); ?> />
+ </div></form>
+ </div><!-- pBody -->
+ </div><!-- portlet -->
+
+ <!-- toolbox -->
+ <div class="portlet" id="p-tb">
+ <h5><?php $this->msg('toolbox') ?></h5>
+ <div class="pBody">
+ <ul>
+<?php
+ if($this->data['notspecialpage']) { ?>
+ <li id="t-whatlinkshere"><a href="<?php
+ echo htmlspecialchars($this->data['nav_urls']['whatlinkshere']['href'])
+ ?>"<?php echo $skin->tooltipAndAccesskey('t-whatlinkshere') ?>><?php $this->msg('whatlinkshere') ?></a></li>
+<?php
+ if( $this->data['nav_urls']['recentchangeslinked'] ) { ?>
+ <li id="t-recentchangeslinked"><a href="<?php
+ echo htmlspecialchars($this->data['nav_urls']['recentchangeslinked']['href'])
+ ?>"<?php echo $skin->tooltipAndAccesskey('t-recentchangeslinked') ?>><?php $this->msg('recentchangeslinked') ?></a></li>
+<?php }
+ }
+ if(isset($this->data['nav_urls']['trackbacklink'])) { ?>
+ <li id="t-trackbacklink"><a href="<?php
+ echo htmlspecialchars($this->data['nav_urls']['trackbacklink']['href'])
+ ?>"<?php echo $skin->tooltipAndAccesskey('t-trackbacklink') ?>><?php $this->msg('trackbacklink') ?></a></li>
+<?php }
+ if($this->data['feeds']) { ?>
+ <li id="feedlinks"><?php foreach($this->data['feeds'] as $key => $feed) {
+ ?><span id="feed-<?php echo Sanitizer::escapeId($key) ?>"><a href="<?php
+ echo htmlspecialchars($feed['href']) ?>"<?php echo $skin->tooltipAndAccesskey('feed-'.$key) ?>><?php echo htmlspecialchars($feed['text'])?></a> </span>
+ <?php } ?></li><?php
+ }
+
+ foreach( array('contributions', 'log', 'blockip', 'emailuser', 'upload', 'specialpages') as $special ) {
+
+ if($this->data['nav_urls'][$special]) {
+ ?><li id="t-<?php echo $special ?>"><a href="<?php echo htmlspecialchars($this->data['nav_urls'][$special]['href'])
+ ?>"<?php echo $skin->tooltipAndAccesskey('t-'.$special) ?>><?php $this->msg($special) ?></a></li>
+<?php }
+ }
+
+ if(!empty($this->data['nav_urls']['print']['href'])) { ?>
+ <li id="t-print"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['print']['href'])
+ ?>"<?php echo $skin->tooltipAndAccesskey('t-print') ?>><?php $this->msg('printableversion') ?></a></li><?php
+ }
+
+ if(!empty($this->data['nav_urls']['permalink']['href'])) { ?>
+ <li id="t-permalink"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['permalink']['href'])
+ ?>"<?php echo $skin->tooltipAndAccesskey('t-permalink') ?>><?php $this->msg('permalink') ?></a></li><?php
+ } elseif ($this->data['nav_urls']['permalink']['href'] === '') { ?>
+ <li id="t-ispermalink"<?php echo $skin->tooltip('t-ispermalink') ?>><?php $this->msg('permalink') ?></li><?php
+ }
+?>
+ </ul>
+ </div><!-- pBody -->
+ </div><!-- portlet -->
+
+ <!-- languages -->
+<?php
+ if( $this->data['language_urls'] ) { ?>
+ <div id="p-lang" class="portlet">
+ <h5><?php $this->msg('otherlanguages') ?></h5>
+ <div class="pBody">
+ <ul>
+<?php foreach($this->data['language_urls'] as $langlink) { ?>
+ <li class="<?php echo htmlspecialchars($langlink['class'])?>"><?php
+ ?><a href="<?php echo htmlspecialchars($langlink['href']) ?>"><?php echo $langlink['text'] ?></a></li>
+<?php } ?>
+ </ul>
+ </div><!-- pBody -->
+ </div><!-- portlet -->
+<?php } ?>
+
+ </div><!-- mw_portlets -->
+
+
+ </div><!-- main -->
+
+ <div class="mw_clear"></div>
+
+ <!-- personal portlet -->
+ <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 Sanitizer::escapeId($key) ?>"<?php
+ if ($item['active']) { ?> class="active"<?php } ?>><a href="<?php
+ echo htmlspecialchars($item['href']) ?>"<?php echo $skin->tooltipAndAccesskey('pt-'.$key) ?><?php
+ if(!empty($item['class'])) { ?> class="<?php
+ echo htmlspecialchars($item['class']) ?>"<?php } ?>><?php
+ echo htmlspecialchars($item['text']) ?></a></li>
+<?php } ?>
+ </ul>
+ </div>
+ </div>
+
+
+ <!-- footer -->
+ <div id="footer">
+ <ul id="f-list">
+<?php
+ $footerlinks = array(
+ 'lastmod', 'viewcount', 'numberofwatchingusers', 'credits', 'copyright',
+ 'privacy', 'about', 'disclaimer', 'tagline',
+ );
+ foreach( $footerlinks as $aLink ) {
+ if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
+?> <li id="<?php echo$aLink?>"><?php $this->html($aLink) ?></li>
+<?php }
+ }
+?>
+ </ul>
+ </div>
+
+ <?php $this->html('bottomscripts'); /* JS call to runBodyOnloadHook */ ?>
+<?php $this->html('reporttime') ?>
+<?php if ( $this->data['debug'] ): ?>
+<!-- Debug output:
+<?php $this->text( 'debug' ); ?>
+-->
+<?php endif; ?>
+</body></html>
+<?php
+ wfRestoreWarnings();
+ } // end of execute() method
+} // end of class
+?>
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.deps.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.deps.php 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.deps.php 2008-05-28 18:51:12 UTC (rev 236)
@@ -5,5 +5,8 @@
// changed on a subsequent page view.
// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
-require_once('includes/SkinTemplate.php');
-?>
\ No newline at end of file
+if ( ! defined( 'MEDIAWIKI' ) )
+ die( 1 );
+
+require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
+
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.php 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.php 2008-05-28 18:51:12 UTC (rev 236)
@@ -6,21 +6,16 @@
* dependency on PHPTAL.
*
* @todo document
- * @package MediaWiki
- * @subpackage Skins
+ * @addtogroup Skins
*/
if( !defined( 'MEDIAWIKI' ) )
die( -1 );
-/** */
-require_once('includes/SkinTemplate.php');
-
/**
* Inherit main code from SkinTemplate, set the CSS and template filter.
* @todo document
- * @package MediaWiki
- * @subpackage Skins
+ * @addtogroup Skins
*/
class SkinMonoBook extends SkinTemplate {
/** Using monobook. */
@@ -34,8 +29,7 @@
/**
* @todo document
- * @package MediaWiki
- * @subpackage Skins
+ * @addtogroup Skins
*/
class MonoBookTemplate extends QuickTemplate {
/**
@@ -47,25 +41,38 @@
* @access private
*/
function execute() {
+ global $wgUser;
+ $skin = $wgUser->getSkin();
+
// Suppress warnings to prevent notices about missing indexes in $this->data
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?7"; /*]]>*/</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') ?>/common/shared.css?<?php echo $GLOBALS['wgStyleVersion'] ?>";
+ @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'] ?>" />
+ <!--[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]-->
- <script type="<?php $this->text('jsmimetype') ?>">var skin = '<?php $this->text('skinname')?>';var stylepath = '<?php $this->text('stylepath')?>';</script>
- <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/common/wikibits.js"><!-- wikibits js --></script>
+
+ <?php print Skin::makeGlobalVariablesScript( $this->data ); ?>
+
+ <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/common/wikibits.js?<?php echo $GLOBALS['wgStyleVersion'] ?>"><!-- wikibits js --></script>
+ <!-- Head Scripts -->
+<?php $this->html('headscripts') ?>
<?php if($this->data['jsvarurl' ]) { ?>
<script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('jsvarurl' ) ?>"><!-- site js --></script>
<?php } ?>
@@ -82,18 +89,16 @@
<script type="<?php $this->text('jsmimetype') ?>"><?php $this->html('userjsprev') ?></script>
<?php }
if($this->data['trackbackhtml']) print $this->data['trackbackhtml']; ?>
- <!-- Head Scripts -->
- <?php $this->html('headscripts') ?>
</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="<?php $this->text('nsclass') ?> <?php $this->text('dir') ?>">
+<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') ?> <?php $this->text('pageclass') ?>">
<div id="globalWrapper">
<div id="column-content">
<div id="content">
<a name="top" id="top"></a>
<?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
- <h1 class="firstHeading"><?php $this->text('title') ?></h1>
+ <h1 class="firstHeading"><?php $this->data['displaytitle']!=""?$this->html('title'):$this->text('title') ?></h1>
<div id="bodyContent">
<h3 id="siteSub"><?php $this->msg('tagline') ?></h3>
<div id="contentSub"><?php $this->html('subtitle') ?></div>
@@ -111,23 +116,25 @@
<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 $skin->tooltipAndAccesskey('ca-'.$key) ?>><?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
+ echo htmlspecialchars($item['href']) ?>"<?php echo $skin->tooltipAndAccesskey('pt-'.$key) ?><?php
if(!empty($item['class'])) { ?> class="<?php
echo htmlspecialchars($item['class']) ?>"<?php } ?>><?php
echo htmlspecialchars($item['text']) ?></a></li>
@@ -137,19 +144,19 @@
</div>
<div class="portlet" id="p-logo">
<a style="background-image: url(<?php $this->text('logopath') ?>);" <?php
- ?>href="<?php echo htmlspecialchars($this->data['nav_urls']['mainpage']['href'])?>" <?php
- ?>title="<?php $this->msg('mainpage') ?>"></a>
+ ?>href="<?php echo htmlspecialchars($this->data['nav_urls']['mainpage']['href'])?>"<?php
+ echo $skin->tooltipAndAccesskey('n-mainpage') ?>></a>
</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) ?>'<?php echo $skin->tooltip('p-'.$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>
+ ?>><a href="<?php echo htmlspecialchars($val['href']) ?>"<?php echo $skin->tooltipAndAccesskey($val['id']) ?>><?php echo htmlspecialchars($val['text']) ?></a></li>
<?php } ?>
</ul>
</div>
@@ -159,13 +166,11 @@
<h5><label for="searchInput"><?php $this->msg('search') ?></label></h5>
<div id="searchBody" class="pBody">
<form action="<?php $this->text('searchaction') ?>" id="searchform"><div>
- <input id="searchInput" name="search" type="text" <?php
- if($this->haveMsg('accesskey-search')) {
- ?>accesskey="<?php $this->msg('accesskey-search') ?>"<?php }
+ <input id="searchInput" name="search" type="text"<?php echo $skin->tooltipAndAccesskey('search');
if( isset( $this->data['search'] ) ) {
?> value="<?php $this->text('search') ?>"<?php } ?> />
- <input type='submit' name="go" class="searchButton" id="searchGoButton" value="<?php $this->msg('go') ?>" />
- <input type='submit' name="fulltext" class="searchButton" value="<?php $this->msg('search') ?>" />
+ <input type='submit' name="go" class="searchButton" id="searchGoButton" value="<?php $this->msg('searcharticle') ?>"<?php echo $skin->tooltipAndAccesskey( 'search-go' ); ?> />
+ <input type='submit' name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg('searchbutton') ?>"<?php echo $skin->tooltipAndAccesskey( 'search-fulltext' ); ?> />
</div></form>
</div>
</div>
@@ -177,44 +182,44 @@
if($this->data['notspecialpage']) { ?>
<li id="t-whatlinkshere"><a href="<?php
echo htmlspecialchars($this->data['nav_urls']['whatlinkshere']['href'])
- ?>"><?php $this->msg('whatlinkshere') ?></a></li>
+ ?>"<?php echo $skin->tooltipAndAccesskey('t-whatlinkshere') ?>><?php $this->msg('whatlinkshere') ?></a></li>
<?php
if( $this->data['nav_urls']['recentchangeslinked'] ) { ?>
<li id="t-recentchangeslinked"><a href="<?php
echo htmlspecialchars($this->data['nav_urls']['recentchangeslinked']['href'])
- ?>"><?php $this->msg('recentchangeslinked') ?></a></li>
+ ?>"<?php echo $skin->tooltipAndAccesskey('t-recentchangeslinked') ?>><?php $this->msg('recentchangeslinked') ?></a></li>
<?php }
}
if(isset($this->data['nav_urls']['trackbacklink'])) { ?>
<li id="t-trackbacklink"><a href="<?php
echo htmlspecialchars($this->data['nav_urls']['trackbacklink']['href'])
- ?>"><?php $this->msg('trackbacklink') ?></a></li>
+ ?>"<?php echo $skin->tooltipAndAccesskey('t-trackbacklink') ?>><?php $this->msg('trackbacklink') ?></a></li>
<?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
- echo htmlspecialchars($feed['href']) ?>"><?php echo htmlspecialchars($feed['text'])?></a> </span>
+ ?><span id="feed-<?php echo Sanitizer::escapeId($key) ?>"><a href="<?php
+ echo htmlspecialchars($feed['href']) ?>"<?php echo $skin->tooltipAndAccesskey('feed-'.$key) ?>><?php echo htmlspecialchars($feed['text'])?></a> </span>
<?php } ?></li><?php
}
- foreach( array('contributions', 'blockip', 'emailuser', 'upload', 'specialpages') as $special ) {
+ foreach( array('contributions', 'log', 'blockip', 'emailuser', 'upload', 'specialpages') as $special ) {
if($this->data['nav_urls'][$special]) {
?><li id="t-<?php echo $special ?>"><a href="<?php echo htmlspecialchars($this->data['nav_urls'][$special]['href'])
- ?>"><?php $this->msg($special) ?></a></li>
+ ?>"<?php echo $skin->tooltipAndAccesskey('t-'.$special) ?>><?php $this->msg($special) ?></a></li>
<?php }
}
if(!empty($this->data['nav_urls']['print']['href'])) { ?>
<li id="t-print"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['print']['href'])
- ?>"><?php $this->msg('printableversion') ?></a></li><?php
+ ?>"<?php echo $skin->tooltipAndAccesskey('t-print') ?>><?php $this->msg('printableversion') ?></a></li><?php
}
if(!empty($this->data['nav_urls']['permalink']['href'])) { ?>
<li id="t-permalink"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['permalink']['href'])
- ?>"><?php $this->msg('permalink') ?></a></li><?php
+ ?>"<?php echo $skin->tooltipAndAccesskey('t-permalink') ?>><?php $this->msg('permalink') ?></a></li><?php
} elseif ($this->data['nav_urls']['permalink']['href'] === '') { ?>
- <li id="t-ispermalink"><?php $this->msg('permalink') ?></li><?php
+ <li id="t-ispermalink"<?php echo $skin->tooltip('t-ispermalink') ?>><?php $this->msg('permalink') ?></li><?php
}
wfRunHooks( 'MonoBookTemplateToolboxEnd', array( &$this ) );
@@ -256,17 +261,23 @@
'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 }
}
?>
</ul>
</div>
- <script type="text/javascript"> if (window.runOnloadHook) runOnloadHook();</script>
+
+ <?php $this->html('bottomscripts'); /* JS call to runBodyOnloadHook */ ?>
</div>
<?php $this->html('reporttime') ?>
+<?php if ( $this->data['debug'] ): ?>
+<!-- Debug output:
+<?php $this->text( 'debug' ); ?>
+-->
+<?php endif; ?>
</body></html>
<?php
wfRestoreWarnings();
Deleted: trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.tpl
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.tpl 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/MonoBook.tpl 2008-05-28 18:51:12 UTC (rev 236)
@@ -1,199 +0,0 @@
-<!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="{lang}" lang="{lang}" dir="{dir}">
-<head>
- <meta http-equiv="Content-Type" content="{~ mimetype}; charset={~ charset}" />
- {headlinks}
- {headscripts}
- <title>{pagetitle}</title>
- <style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "{~ stylepath}/{~ stylename}/main.css?5"; /*]]>*/</style>
- <link rel="stylesheet" type="text/css" {if notprintable {media="print"}} href="{~ stylepath}/common/commonPrint.css" />
- <!--[if lt IE 5.5000]><style type="text/css">@import "{~ stylepath}/{~ stylename}/IE50Fixes.css";</style><![endif]-->
- <!--[if IE 5.5000]><style type="text/css">@import "{~ stylepath}/{~ stylename}/IE55Fixes.css";</style><![endif]-->
- <!--[if IE 6]><style type="text/css">@import "{~ stylepath}/{~ stylename}/IE60Fixes.css";</style><![endif]-->
- <!--[if IE 7]><style type="text/css">@import "{~ stylepath}/{~ stylename}/IE70Fixes.css?1";</style><![endif]-->
- <!--[if lt IE 7]><script type="{jsmimetype}" src="{~ stylepath}/common/IEFixes.js"></script>
- <meta http-equiv="imagetoolbar" content="no" /><![endif]-->
- <script type="{jsmimetype}" src="{~ stylepath}/common/wikibits.js"><!-- wikibits js --></script>
- {if jsvarurl {<script type="{jsmimetype}" src="{jsvarurl}"><!-- site js --></script>}}
- {if pagecss {<style type="text/css">{pagecss}</style>}}
- {usercss}
- {sitecss}
- {gencss}
- {if userjs {<script type="{jsmimetype}" src="{userjs}"></script>}}
- {if userjsprev {<script type="{jsmimetype}">{userjsprev}</script>}}
- {trackbackhtml}
-</head>
-<body {if body_ondblclick {ondblclick="{body_ondblclick}"}} {if body_onload {onload="{body_onload}" }} class="{~ nsclass} {~ dir}">
-<div id="globalWrapper">
- <div id="column-content">
- <div id="content">
- <a name="top" id="top"></a>
- {if sitenotice {<div id="siteNotice">{sitenotice}</div> }}
- <h1 class="firstHeading">{title}</h1>
- <div id="bodyContent">
- <h3 id="siteSub">{msg {tagline}}</h3>
- <div id="contentSub">{subtitle}</div>
- {if undelete {<div id="contentSub2"><span class="subpages">{undelete}</span></div> }}
- {if newtalk {<div class="usermessage">{newtalk}</div> }}
- {if showjumplinks {
- <div id="jump-to-nav">{msg {jumpto}} <a href="#column-one">{msg {jumptonavigation}}</a>,
- <a href="#searchInput">{msg {jumptosearch}}</a></div>
- }}
- <!-- start content -->
- {bodytext}
- {if catlinks {<div id="catlinks">{catlinks}</div> }}
- <!-- end content -->
- <div class="visualClear"></div>
- </div>
- </div>
- </div>
- <div id="column-one">
- <div id="p-cactions" class="portlet">
- <h5>{msg {views}}</h5>
- <ul>
- {if is_special {
- <li id="ca-article" class="selected"><a href="{request_url}">{msg {specialpage}}</a></li>
- } {
- <li id="ca-{nskey}" {selecttab {subject} subject_newclass}><a href="{subject_url}">{msg nskey}</a></li>
- <li id="ca-talk" {selecttab {talk} talk_newclass}><a href="{talk_url}">{msg {talk}}</a></li>
- {if can_edit {
- {if is_talk {
- <li id="ca-edit" {selecttab {edit} {istalk}}><a href="{edit_url}">{msg {edit}}</a></li>
- <li id="ca-addsection" {selecttab {addsection}}><a href="{localurl {action=edit§ion=new}}">{msg {addsection}}</a></li>
- } {
- <li id="ca-edit" {selecttab {edit}}><a href="{edit_url}">{msg {edit}}</a></li>
- }}
- } {
- <li id="ca-viewsource" {selecttab {edit}}><a href="{edit_url}">{msg {viewsource}}</a></li>
- }}
-
- {if article_exists {
- <li id="ca-history" {selecttab {history}}><a href="{localurl {action=history}}">{msg {history_short}}</a></li>
- {if {{ is_allowed {protect} }} {
- {if is_ns_mediawiki {} {
- {if is_protected {
- <li id="ca-protect" {selecttab {protect}}><a href="{localurl {action=unprotect}}">{msg {unprotect}}</a></li>
- } {
- <li id="ca-protect" {selecttab {protect}}><a href="{localurl {action=protect}}">{msg {protect}}</a></li>
- }}
- }}
- }}
-
- {if {{ is_allowed {delete} }} {
- <li id="ca-delete" {selecttab {delete}}><a href="{localurl {action=delete}}">{msg {delete}}</a></li>
- }}
- {if {{ is_allowed {move} }} {
- {if can_move {
- <li id="ca-move" {selecttab {move}}><a href="{move_url}">{msg {move}}</a></li>
- }}
- }}
- {if is_loggedin {
- {if is_watching {
- <li id="ca-unwatch" {selecttab {watch}}><a href="{localurl {action=unwatch}}">{msg {unwatch}}</a></li>
- } {
- <li id="ca-watch" {selecttab {watch}}><a href="{localurl {action=watch}}">{msg {watch}}</a></li>
- }}
- }}
- }}
- }}
- {extratabs {<li id="ca-$id" $class><a href="$href">$text</a></li>}}
- </ul>
- </div>
- <div class="portlet" id="p-personal">
- <h5>{msg {personaltools}}</h5>
- <div class="pBody">
- <ul>
- {personal_urls { <li id="pt-$key" $classactive ><a href="$href" $class>$text</a></li> }}
- </ul>
- </div>
- </div>
- <div class="portlet" id="p-logo">
- <a style="background-image: url({~ logopath});" href="{mainpage}" title="{msg {mainpage}}"></a>
- </div>
- <script type="{jsmimetype}"> if (window.isMSIE55) fixalpha(); </script>
- {sidebar {
- <div class='portlet' id="p-$bar">
- <h5>$barname</h5>
- <div class='pBody'>
- <ul>
- } {
- </ul>
- </div>
- </div>
- } {<li id="$id" $classactive><a href="$href">$text</a></li>
- }
- }
-
- <div id="p-search" class="portlet">
- <h5><label for="searchInput">{msg {search}}</label></h5>
- <div id="searchBody" class="pBody">
- <form action="{searchaction}" id="searchform"><div>
- <input id="searchInput" name="search" type="text" {
- }{if {{fallbackmsg {accesskey-search} {} }} {accesskey="{fallbackmsg {accesskey-search} {} }"}}{
- }{if search { value="{search}"}} />
- <input type='submit' name="go" class="searchButton" id="searchGoButton" value="{msg {go}}" />
- <input type='submit' name="fulltext" class="searchButton" value="{msg {search}}" />
- </div></form>
- </div>
- </div>
- <div class="portlet" id="p-tb">
- <h5>{msg {toolbox}}</h5>
- <div class="pBody">
- <ul>
- {if notspecialpage {<li id="t-whatlinkshere"><a href="{nav_whatlinkshere}">{msg {whatlinkshere}}</a></li> }}
- {if article_exists {<li id="t-recentchangeslinked"><a href="{nav_recentchangeslinked}">{msg {recentchangeslinked}}</a></li> }}
- {if nav_trackbacklink {<li id="t-trackbacklink"><a href="{nav_trackbacklink}">{msg {trackbacklink}}</a></li>}}
- {if feeds
- {<li id="feedlinks">{feeds {<span id="feed-$key"><a href="$href">$text</a> </span>}}
- </li>}}
- {if is_userpage {
- <li id="t-contributions"><a href="{nav_contributions}">{msg {contributions}}</a></li>
- {if {{is_allowed {block}}} {<li id="t-blockip"><a href="{nav_blockip}">{msg {blockip}}</a></li>}}
- {if is_loggedin {<li id="t-emailuser"><a href="{nav_emailuser}">{msg {emailuser}}</a></li>}}
- }}
- {if nav_upload {<li id="t-upload"><a href="{nav_upload}">{msg {upload}}</a></li>}}
- {if nav_specialpages {<li id="t-specialpages"><a href="{nav_specialpages}">{msg {specialpages}}</a></li>}}
- {if nav_print {<li id="t-print"><a href="{nav_print}">{msg {printableversion}}</a></li>}}
- {if nav_permalink {<li id="t-permalink"><a href="{nav_permalink}">{msg {permalink}}</a></li>}}
- {if is_permalink {<li id="t-ispermalink">{msg {permalink}}</li>}}
-
- {toolboxend}
- </ul>
- </div>
- </div>
- {language_urls {
- <div id="p-lang" class="portlet">
- <h5>{msg {otherlanguages}}</h5>
- <div class="pBody">
- <ul>
- $body
- </ul>
- </div>
- </div>
- } {
- <li class="$class"><a href="$href">$text</a></li>
- }}
- </div><!-- end of the left (by default at least) column -->
- <div class="visualClear"></div>
- <div id="footer">
- {if poweredbyico { <div id="f-poweredbyico">{poweredbyico}</div> }}
- {if copyrightico { <div id="f-copyrightico">{copyrightico}</div> }}
-
- <ul id="f-list">
- {if lastmod { <li id="lastmod">{lastmod}</li> }}
- {if viewcount { <li id="viewcount">{viewcount}</li> }}
- {if numberofwatchingusers { <li id="numberofwatchingusers">{numberofwatchingusers}</li> }}
- {if credits { <li id="credits">{credits}</li> }}
- {if is_currentview { <li id="copyright">{normalcopyright}</li> }}
- {if usehistorycopyright { <li id="copyright">{historycopyright}</li> }}
- {if privacy { <li id="privacy">{privacy}</li> }}
- {if about { <li id="about">{about}</li> }}
- {if disclaimer { <li id="disclaimer">{disclaimer}</li> }}
- {if tagline { <li id="tagline">{tagline}</li> }}
- </ul>
- </div>
- <script type="text/javascript"> if (window.runOnloadHook) runOnloadHook();</script>
-</div>
-{reporttime}
-{if {} { vim: set syn=html ts=2 : }}
-</body></html>
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/MySkin.deps.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/MySkin.deps.php 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/MySkin.deps.php 2008-05-28 18:51:12 UTC (rev 236)
@@ -5,6 +5,9 @@
// changed on a subsequent page view.
// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
-require_once('includes/SkinTemplate.php');
-require_once('MonoBook.php');
-?>
\ No newline at end of file
+if ( ! defined( 'MEDIAWIKI' ) )
+ die( 1 );
+
+require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
+require_once( dirname(__FILE__) . '/MonoBook.php' );
+
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/MySkin.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/MySkin.php 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/MySkin.php 2008-05-28 18:51:12 UTC (rev 236)
@@ -3,20 +3,18 @@
* See skin.txt
*
* @todo document
- * @package MediaWiki
- * @subpackage Skins
+ * @addtogroup Skins
*/
if( !defined( 'MEDIAWIKI' ) )
die( -1 );
/** */
-require_once('MonoBook.php');
+require_once( dirname(__FILE__) . '/MonoBook.php' );
/**
* @todo document
- * @package MediaWiki
- * @subpackage Skins
+ * @addtogroup Skins
*/
class SkinMySkin extends SkinTemplate {
function initPage( &$out ) {
@@ -27,4 +25,4 @@
}
}
-?>
+
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/Nostalgia.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/Nostalgia.php 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/Nostalgia.php 2008-05-28 18:51:12 UTC (rev 236)
@@ -3,8 +3,7 @@
* See skin.txt
*
* @todo document
- * @package MediaWiki
- * @subpackage Skins
+ * @addtogroup Skins
*/
if( !defined( 'MEDIAWIKI' ) )
@@ -12,20 +11,18 @@
/**
* @todo document
- * @package MediaWiki
- * @subpackage Skins
+ * @addtogroup Skins
*/
class SkinNostalgia extends Skin {
function getStylesheet() {
- return 'common/nostalgia.css?1';
+ return 'common/nostalgia.css';
}
function getSkinName() {
return "nostalgia";
}
function doBeforeContent() {
- global $wgUser, $wgOut, $wgTitle;
$s = "\n<div id='content'>\n<div id='topbar'>";
$s .= $this->logoText( "right" );
@@ -64,11 +61,17 @@
$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;
@@ -91,4 +94,4 @@
}
}
-?>
+
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/OpenMoko.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/OpenMoko.php 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/OpenMoko.php 2008-05-28 18:51:12 UTC (rev 236)
@@ -6,21 +6,16 @@
* dependency on PHPTAL.
*
* @todo document
- * @package MediaWiki
- * @subpackage Skins
+ * @addtogroup Skins
*/
if( !defined( 'MEDIAWIKI' ) )
die( -1 );
-/** */
-require_once('includes/SkinTemplate.php');
-
/**
* Inherit main code from SkinTemplate, set the CSS and template filter.
* @todo document
- * @package MediaWiki
- * @subpackage Skins
+ * @addtogroup Skins
*/
class SkinOpenMoko extends SkinTemplate {
/** Using openmoko. */
@@ -34,8 +29,7 @@
/**
* @todo document
- * @package MediaWiki
- * @subpackage Skins
+ * @addtogroup Skins
*/
class OpenMokoTemplate extends QuickTemplate {
/**
@@ -47,25 +41,38 @@
* @access private
*/
function execute() {
+ global $wgUser;
+ $skin = $wgUser->getSkin();
+
// Suppress warnings to prevent notices about missing indexes in $this->data
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?7"; /*]]>*/</style>
-
- <!--[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') ?>/common/shared.css?<?php echo $GLOBALS['wgStyleVersion'] ?>";
+ @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'] ?>" />
+ <!--[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]-->
- <script type="<?php $this->text('jsmimetype') ?>">var skin = '<?php $this->text('skinname')?>';var stylepath = '<?php $this->text('stylepath')?>';</script>
- <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/common/wikibits.js"><!-- wikibits js --></script>
+
+ <?php print Skin::makeGlobalVariablesScript( $this->data ); ?>
+
+ <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/common/wikibits.js?<?php echo $GLOBALS['wgStyleVersion'] ?>"><!-- wikibits js --></script>
+ <!-- Head Scripts -->
+<?php $this->html('headscripts') ?>
<?php if($this->data['jsvarurl' ]) { ?>
<script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('jsvarurl' ) ?>"><!-- site js --></script>
<?php } ?>
@@ -82,12 +89,10 @@
<script type="<?php $this->text('jsmimetype') ?>"><?php $this->html('userjsprev') ?></script>
<?php }
if($this->data['trackbackhtml']) print $this->data['trackbackhtml']; ?>
- <!-- Head Scripts -->
- <?php $this->html('headscripts') ?>
</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="<?php $this->text('nsclass') ?> <?php $this->text('dir') ?>">
+<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') ?> <?php $this->text('pageclass') ?>">
<div id="globalWrapper">
<div id="common_header">
@@ -109,7 +114,7 @@
<div id="content">
<a name="top" id="top"></a>
<?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
- <h1 class="firstHeading"><?php $this->text('title') ?></h1>
+ <h1 class="firstHeading"><?php $this->data['displaytitle']!=""?$this->html('title'):$this->text('title') ?></h1>
<div id="bodyContent">
<h3 id="siteSub"><?php $this->msg('tagline') ?></h3>
<div id="contentSub"><?php $this->html('subtitle') ?></div>
@@ -127,23 +132,25 @@
<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 $skin->tooltipAndAccesskey('ca-'.$key) ?>><?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
+ echo htmlspecialchars($item['href']) ?>"<?php echo $skin->tooltipAndAccesskey('pt-'.$key) ?><?php
if(!empty($item['class'])) { ?> class="<?php
echo htmlspecialchars($item['class']) ?>"<?php } ?>><?php
echo htmlspecialchars($item['text']) ?></a></li>
@@ -153,8 +160,8 @@
</div>
<div class="portlet" id="p-logo">
<a style="background-image: url(<?php $this->text('logopath') ?>);" <?php
- ?>href="<?php echo htmlspecialchars($this->data['nav_urls']['mainpage']['href'])?>" <?php
- ?>title="<?php $this->msg('mainpage') ?>"></a>
+ ?>href="<?php echo htmlspecialchars($this->data['nav_urls']['mainpage']['href'])?>"<?php
+ echo $skin->tooltipAndAccesskey('n-mainpage') ?>></a>
</div>
<script type="<?php $this->text('jsmimetype') ?>"> if (window.isMSIE55) fixalpha(); </script>
@@ -176,13 +183,11 @@
<h5><label for="searchInput"><?php $this->msg('search') ?></label></h5>
<div id="searchBody" class="pBody">
<form action="<?php $this->text('searchaction') ?>" id="searchform"><div>
- <input id="searchInput" name="search" type="text" <?php
- if($this->haveMsg('accesskey-search')) {
- ?>accesskey="<?php $this->msg('accesskey-search') ?>"<?php }
+ <input id="searchInput" name="search" type="text"<?php echo $skin->tooltipAndAccesskey('search');
if( isset( $this->data['search'] ) ) {
?> value="<?php $this->text('search') ?>"<?php } ?> />
- <input type='submit' name="go" class="searchButton" id="searchGoButton" value="<?php $this->msg('go') ?>" />
- <input type='submit' name="fulltext" class="searchButton" value="<?php $this->msg('search') ?>" />
+ <input type='submit' name="go" class="searchButton" id="searchGoButton" value="<?php $this->msg('searcharticle') ?>"<?php echo $skin->tooltipAndAccesskey( 'search-go' ); ?> />
+ <input type='submit' name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg('searchbutton') ?>"<?php echo $skin->tooltipAndAccesskey( 'search-fulltext' ); ?> />
</div></form>
</div>
</div>
@@ -194,44 +199,44 @@
if($this->data['notspecialpage']) { ?>
<li id="t-whatlinkshere"><a href="<?php
echo htmlspecialchars($this->data['nav_urls']['whatlinkshere']['href'])
- ?>"><?php $this->msg('whatlinkshere') ?></a></li>
+ ?>"<?php echo $skin->tooltipAndAccesskey('t-whatlinkshere') ?>><?php $this->msg('whatlinkshere') ?></a></li>
<?php
if( $this->data['nav_urls']['recentchangeslinked'] ) { ?>
<li id="t-recentchangeslinked"><a href="<?php
echo htmlspecialchars($this->data['nav_urls']['recentchangeslinked']['href'])
- ?>"><?php $this->msg('recentchangeslinked') ?></a></li>
+ ?>"<?php echo $skin->tooltipAndAccesskey('t-recentchangeslinked') ?>><?php $this->msg('recentchangeslinked') ?></a></li>
<?php }
}
if(isset($this->data['nav_urls']['trackbacklink'])) { ?>
<li id="t-trackbacklink"><a href="<?php
echo htmlspecialchars($this->data['nav_urls']['trackbacklink']['href'])
- ?>"><?php $this->msg('trackbacklink') ?></a></li>
+ ?>"<?php echo $skin->tooltipAndAccesskey('t-trackbacklink') ?>><?php $this->msg('trackbacklink') ?></a></li>
<?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
- echo htmlspecialchars($feed['href']) ?>"><?php echo htmlspecialchars($feed['text'])?></a> </span>
+ ?><span id="feed-<?php echo Sanitizer::escapeId($key) ?>"><a href="<?php
+ echo htmlspecialchars($feed['href']) ?>"<?php echo $skin->tooltipAndAccesskey('feed-'.$key) ?>><?php echo htmlspecialchars($feed['text'])?></a> </span>
<?php } ?></li><?php
}
- foreach( array('contributions', 'blockip', 'emailuser', 'upload', 'specialpages') as $special ) {
+ foreach( array('contributions', 'log', 'blockip', 'emailuser', 'upload', 'specialpages') as $special ) {
if($this->data['nav_urls'][$special]) {
?><li id="t-<?php echo $special ?>"><a href="<?php echo htmlspecialchars($this->data['nav_urls'][$special]['href'])
- ?>"><?php $this->msg($special) ?></a></li>
+ ?>"<?php echo $skin->tooltipAndAccesskey('t-'.$special) ?>><?php $this->msg($special) ?></a></li>
<?php }
}
if(!empty($this->data['nav_urls']['print']['href'])) { ?>
<li id="t-print"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['print']['href'])
- ?>"><?php $this->msg('printableversion') ?></a></li><?php
+ ?>"<?php echo $skin->tooltipAndAccesskey('t-print') ?>><?php $this->msg('printableversion') ?></a></li><?php
}
if(!empty($this->data['nav_urls']['permalink']['href'])) { ?>
<li id="t-permalink"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['permalink']['href'])
- ?>"><?php $this->msg('permalink') ?></a></li><?php
+ ?>"<?php echo $skin->tooltipAndAccesskey('t-permalink') ?>><?php $this->msg('permalink') ?></a></li><?php
} elseif ($this->data['nav_urls']['permalink']['href'] === '') { ?>
- <li id="t-ispermalink"><?php $this->msg('permalink') ?></li><?php
+ <li id="t-ispermalink"<?php echo $skin->tooltip('t-ispermalink') ?>><?php $this->msg('permalink') ?></li><?php
}
wfRunHooks( 'OpenMokoTemplateToolboxEnd', array( &$this ) );
@@ -273,17 +278,23 @@
'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 }
}
?>
</ul>
</div>
- <script type="text/javascript"> if (window.runOnloadHook) runOnloadHook();</script>
+
+ <?php $this->html('bottomscripts'); /* JS call to runBodyOnloadHook */ ?>
</div>
<?php $this->html('reporttime') ?>
+<?php if ( $this->data['debug'] ): ?>
+<!-- Debug output:
+<?php $this->text( 'debug' ); ?>
+-->
+<?php endif; ?>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/Simple.deps.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/Simple.deps.php 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/Simple.deps.php 2008-05-28 18:51:12 UTC (rev 236)
@@ -5,6 +5,9 @@
// changed on a subsequent page view.
// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
-require_once('includes/SkinTemplate.php');
-require_once('MonoBook.php');
-?>
\ No newline at end of file
+if ( ! defined( 'MEDIAWIKI' ) )
+ die( 1 );
+
+require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
+require_once( dirname(__FILE__) . '/MonoBook.php' );
+
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/Simple.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/Simple.php 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/Simple.php 2008-05-28 18:51:12 UTC (rev 236)
@@ -3,20 +3,18 @@
* See skin.txt
*
* @todo document
- * @package MediaWiki
- * @subpackage Skins
+ * @addtogroup Skins
*/
if( !defined( 'MEDIAWIKI' ) )
die( -1 );
/** */
-require_once('MonoBook.php');
+require_once( dirname(__FILE__) . '/MonoBook.php' );
/**
* @todo document
- * @package MediaWiki
- * @subpackage Skins
+ * @addtogroup Skins
*/
class SkinSimple extends SkinTemplate {
function initPage( &$out ) {
@@ -67,4 +65,4 @@
}
}
-?>
+
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/Standard.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/Standard.php 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/Standard.php 2008-05-28 18:51:12 UTC (rev 236)
@@ -3,8 +3,7 @@
* See skin.txt
*
* @todo document
- * @package MediaWiki
- * @subpackage Skins
+ * @addtogroup Skins
*/
if( !defined( 'MEDIAWIKI' ) )
@@ -12,21 +11,20 @@
/**
* @todo document
- * @package MediaWiki
- * @subpackage Skins
+ * @addtogroup Skins
*/
class SkinStandard extends Skin {
/**
*
*/
- function getHeadScripts() {
- global $wgStylePath, $wgJsMimeType;
+ function getHeadScripts( $allowUserJs ) {
+ global $wgStylePath, $wgJsMimeType, $wgStyleVersion;
- $s = parent::getHeadScripts();
+ $s = parent::getHeadScripts( $allowUserJs );
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 +33,14 @@
*
*/
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;
@@ -52,7 +50,7 @@
*
*/
function doGetUserStyles() {
- global $wgUser, $wgOut, $wgStylePath;
+ global $wgStylePath;
$s = parent::doGetUserStyles();
$qb = $this->qbSetting();
@@ -90,7 +88,7 @@
}
function doAfterContent() {
- global $wgUser, $wgOut, $wgContLang;
+ global $wgContLang;
$fname = 'SkinStandard::doAfterContent';
wfProfileIn( $fname );
wfProfileIn( $fname.'-1' );
@@ -177,32 +175,42 @@
} else { # backlink to the article in edit or history mode
if($articleExists){ # no backlink if no article
switch($tns) {
- case 0:
- $text = wfMsg('articlepage');
- break;
- case 1:
- $text = wfMsg('viewtalkpage');
- break;
- case 2:
- $text = wfMsg('userpage');
- break;
- case 3:
- $text = wfMsg('viewtalkpage');
- break;
- case 4:
- $text = wfMsg('wikipediapage');
- break;
- case 5:
- $text = wfMsg('viewtalkpage');
- break;
- case 6:
- $text = wfMsg('imagepage');
- break;
- case 7:
- $text = wfMsg('viewtalkpage');
- break;
+ case NS_TALK:
+ case NS_USER_TALK:
+ case NS_PROJECT_TALK:
+ case NS_IMAGE_TALK:
+ case NS_MEDIAWIKI_TALK:
+ case NS_TEMPLATE_TALK:
+ case NS_HELP_TALK:
+ case NS_CATEGORY_TALK:
+ $text = wfMsg('viewtalkpage');
+ break;
+ case NS_MAIN:
+ $text = wfMsg( 'articlepage' );
+ break;
+ case NS_USER:
+ $text = wfMsg( 'userpage' );
+ break;
+ case NS_PROJECT:
+ $text = wfMsg( 'projectpage' );
+ break;
+ case NS_IMAGE:
+ $text = wfMsg( 'imagepage' );
+ break;
+ case NS_MEDIAWIKI:
+ $text = wfMsg( 'mediawikipage' );
+ break;
+ case NS_TEMPLATE:
+ $text = wfMsg( 'templatepage' );
+ break;
+ case NS_HELP:
+ $text = wfMsg( 'viewhelppage' );
+ break;
+ case NS_CATEGORY:
+ $text = wfMsg( 'categorypage' );
+ break;
default:
- $text= wfMsg('articlepage');
+ $text= wfMsg( 'articlepage' );
}
$link = $wgTitle->getText();
@@ -219,11 +227,14 @@
}
+ # "Post a comment" link
+ if( ( $wgTitle->isTalkPage() || $wgOut->showNewSectionLink() ) && $action != 'edit' && !$wpPreview )
+ $s .= '<br />' . $this->makeKnownLinkObj( $wgTitle, wfMsg( 'postcomment' ), 'action=edit§ion=new' );
+
+ #if( $tns%2 && $action!='edit' && !$wpPreview) {
+ #$s.= '<br />'.$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg('postcomment'),'action=edit§ion=new');
+ #}
- if( $tns%2 && $action!='edit' && !$wpPreview) {
- $s.= '<br />'.$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg('postcomment'),'action=edit§ion=new');
- }
-
/*
watching could cause problems in edit mode:
if user edits article, then loads "watch this article" in background and then saves
@@ -235,7 +246,7 @@
{
$s .= $sep . $this->watchThisPage();
}
- if ( $wgTitle->userCanEdit() )
+ if ( $wgTitle->userCan( 'edit' ) )
$s .= $sep . $this->moveThisPage();
}
if ( $wgUser->isAllowed('delete') and $articleExists ) {
@@ -288,4 +299,4 @@
}
-?>
+
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/chick/main.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/chick/main.css 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/chick/main.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -50,16 +50,24 @@
padding-bottom: 0.17em;
border-bottom: 1px solid #aaaaaa;
}
+.editsection {
+ font-weight: normal;
+}
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 +268,7 @@
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,15 +315,17 @@
}
div.tleft {
float: left;
+ clear: left;
margin-right:0.5em;
border-width: 0.5em 1.4em 0.8em 0;
}
+img.thumbborder {
+ border: 1px solid #dddddd;
+}
.hiddenStructure {
display: none;
}
-img.tex { vertical-align: middle; }
-span.texhtml { font-family: serif; }
/*
** classes for special content elements like town boxes
@@ -385,25 +396,6 @@
background-color:#f9f9f9;
border:1px dashed #aaaaaa;
}
-/*
-** Diff rendering
-*/
-table.diff { background:white; }
-td.diff-otitle { background:#ffffff; }
-td.diff-ntitle { background:#ffffff; }
-td.diff-addedline {
- background:#ccffcc;
- font-size: smaller;
-}
-td.diff-deletedline {
- background:#ffffaa;
- font-size: smaller;
-}
-td.diff-context {
- background:#eeeeee;
- font-size: smaller;
-}
-span.diffchange { color: red; }
a.external { color: #3366bb; }
@@ -433,15 +425,6 @@
color:black;
background-color:#00FF00;
}
-span.newpageletter {
- font-weight:bold;
- color:black;
- background-color:yellow;
-}
-span.minoreditletter {
- color:black;
- background-color:#C5FFE6;
-}
table.gallery {
border: 1px solid #cccccc;
@@ -472,10 +455,19 @@
}
div.gallerytext {
+ overflow: hidden;
font-size: 94%;
padding: 2px 4px;
}
#jump-to-nav {
display: none;
-}
\ No newline at end of file
+}
+
+.templatesUsed { margin-top: 1.5em; }
+
+/* Recreating-deleted-page/reupload file warning and log entries */
+div#mw-upload-deleted-warn ul li,
+div#mw-recreate-deleted-warn ul li {
+ font-size: 95%;
+}
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/common/IEFixes.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/IEFixes.js 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/IEFixes.js 2008-05-28 18:51:12 UTC (rev 236)
@@ -33,7 +33,7 @@
if (imageUrl.substr(imageUrl.length-4).toLowerCase() == '.png') {
var logospan = logoa.appendChild(document.createElement('span'));
-
+
logoa.style.backgroundImage = 'none';
logospan.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + imageUrl + ')';
logospan.style.height = '100%';
@@ -41,7 +41,7 @@
logospan.style.width = logoa.currentStyle.width;
logospan.style.cursor = 'hand';
// Center image with hack for IE5.5
- if (document.documentElement.dir == "rtl")
+ if (document.documentElement.dir == "rtl")
{
logospan.style.right = '50%';
logospan.style.setExpression('marginRight', '"-" + (this.offsetWidth / 2) + "px"');
@@ -53,7 +53,7 @@
}
logospan.style.top = '50%';
logospan.style.setExpression('marginTop', '"-" + (this.offsetHeight / 2) + "px"');
-
+
var linkFix = logoa.appendChild(logoa.cloneNode());
linkFix.style.position = 'absolute';
linkFix.style.height = '100%';
@@ -124,4 +124,4 @@
for (var i=0; i < expandedURLs.length; i++)
if (expandedURLs[i])
expandedURLs[i].removeNode(true);
-}
\ No newline at end of file
+}
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/common/ajax.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/ajax.js 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/ajax.js 2008-05-28 18:51:12 UTC (rev 236)
@@ -3,59 +3,114 @@
var sajax_debug_mode = false;
var sajax_request_type = "GET";
-var started;
-var typing;
-var memory=null;
-var body=null;
-var oldbody=null;
-
+/**
+* if sajax_debug_mode is true, this function outputs given the message into
+* the element with id = sajax_debug; if no such element exists in the document,
+* it is injected.
+*/
function sajax_debug(text) {
- if (sajax_debug_mode)
- alert("RSD: " + text)
-}
+ if (!sajax_debug_mode) return false;
+ var e= document.getElementById('sajax_debug');
+ if (!e) {
+ e= document.createElement("p");
+ e.className= 'sajax_debug';
+ e.id= 'sajax_debug';
+
+ var b= document.getElementsByTagName("body")[0];
+
+ if (b.firstChild) b.insertBefore(e, b.firstChild);
+ else b.appendChild(e);
+ }
+
+ var m= document.createElement("div");
+ m.appendChild( document.createTextNode( text ) );
+
+ e.appendChild( m );
+
+ return true;
+}
+
+/**
+* compatibility wrapper for creating a new XMLHttpRequest object.
+*/
function sajax_init_object() {
sajax_debug("sajax_init_object() called..")
var A;
try {
- A=new ActiveXObject("Msxml2.XMLHTTP");
+ // Try the new style before ActiveX so we don't
+ // unnecessarily trigger warnings in IE 7 when
+ // set to prompt about ActiveX usage
+ A = new XMLHttpRequest();
} catch (e) {
try {
- A=new ActiveXObject("Microsoft.XMLHTTP");
- } catch (oc) {
- A=null;
+ A=new ActiveXObject("Msxml2.XMLHTTP");
+ } catch (e) {
+ try {
+ A=new ActiveXObject("Microsoft.XMLHTTP");
+ } catch (oc) {
+ A=null;
+ }
}
}
- if(!A && typeof XMLHttpRequest != "undefined")
- A = new XMLHttpRequest();
if (!A)
sajax_debug("Could not create connection object.");
+
return A;
}
-
-function sajax_do_call(func_name, args) {
+/**
+* Perform an ajax call to mediawiki. Calls are handeled by AjaxDispatcher.php
+* func_name - the name of the function to call. Must be registered in $wgAjaxExportList
+* args - an array of arguments to that function
+* target - the target that will handle the result of the call. If this is a function,
+* if will be called with the XMLHttpRequest as a parameter; if it's an input
+* element, its value will be set to the resultText; if it's another type of
+* element, its innerHTML will be set to the resultText.
+*
+* Example:
+* sajax_do_call('doFoo', [1, 2, 3], document.getElementById("showFoo"));
+*
+* This will call the doFoo function via MediaWiki's AjaxDispatcher, with
+* (1, 2, 3) as the parameter list, and will show the result in the element
+* with id = showFoo
+*/
+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 +
+ ((wgScript == null) ? (wgScriptPath + "/index.php") : wgScript) +
+ "?action=ajax";
if (sajax_request_type == "GET") {
if (uri.indexOf("?") == -1)
- uri = uri + "?rs=" + escape(func_name);
+ uri = uri + "?rs=" + encodeURIComponent(func_name);
else
- uri = uri + "&rs=" + escape(func_name);
- for (i = 0; i < args.length-1; i++)
- uri = uri + "&rsargs[]=" + escape(args[i]);
+ uri = uri + "&rs=" + encodeURIComponent(func_name);
+ for (i = 0; i < args.length; i++)
+ uri = uri + "&rsargs[]=" + encodeURIComponent(args[i]);
//uri = uri + "&rsrnd=" + new Date().getTime();
post_data = null;
} else {
- post_data = "rs=" + escape(func_name);
- for (i = 0; i < args.length-1; i++)
- post_data = post_data + "&rsargs[]=" + escape(args[i]);
+ post_data = "rs=" + encodeURIComponent(func_name);
+ for (i = 0; i < args.length; i++)
+ post_data = post_data + "&rsargs[]=" + encodeURIComponent(args[i]);
}
x = sajax_init_object();
- x.open(sajax_request_type, uri, true);
+ if (!x) {
+ alert("AJAX not supported");
+ return false;
+ }
+
+ 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");
@@ -65,113 +120,37 @@
x.onreadystatechange = function() {
if (x.readyState != 4)
return;
- sajax_debug("received " + x.responseText);
- var status;
- var data;
- status = x.responseText.charAt(0);
- data = x.responseText.substring(2);
- if (status == "-")
- alert("Error: " + data);
- else
- args[args.length-1](data);
- }
- x.send(post_data);
- sajax_debug(func_name + " uri = " + uri + "/post = " + post_data);
- sajax_debug(func_name + " waiting..");
- delete x;
-}
-// Remove the typing barrier to allow call() to complete
-function Search_doneTyping()
-{
- typing=false;
-}
+ sajax_debug("received (" + x.status + " " + x.statusText + ") " + x.responseText);
-// Wait 500ms to run call()
-function Searching_Go()
-{
- setTimeout("Searching_Call()", 500);
-}
+ //if (x.status != 200)
+ // alert("Error: " + x.status + " " + x.statusText + ": " + x.responseText);
+ //else
-// If the user is typing wait until they are done.
-function Search_Typing() {
- started=true;
- typing=true;
- window.status = "Waiting until you're done typing...";
- setTimeout("Search_doneTyping()", 500);
-
- // I believe these are needed by IE for when the users press return?
- if (window.event)
- {
- if (event.keyCode == 13)
- {
- event.cancelBubble = true;
- event.returnValue = false;
+ if ( typeof( target ) == 'function' ) {
+ target( x );
}
- }
-}
+ else if ( typeof( target ) == 'object' ) {
+ if ( target.tagName == 'INPUT' ) {
+ if (x.status == 200) target.value= x.responseText;
+ //else alert("Error: " + x.status + " " + x.statusText + " (" + x.responseText + ")");
+ }
+ else {
+ if (x.status == 200) target.innerHTML = x.responseText;
+ else target.innerHTML= "<div class='error'>Error: " + x.status + " " + x.statusText + " (" + x.responseText + ")</div>";
+ }
+ }
+ else {
+ alert("bad target for sajax_do_call: not a function or object: " + target);
+ }
-// Set the body div to the results
-function Searching_SetResult(result)
-{
- //body.innerHTML = result;
- t = document.getElementById("searchTarget");
- if ( t == null ) {
- oldbody=body.innerHTML;
- body.innerHTML= '<div id="searchTargetContainer"><div id="searchTarget" ></div></div>' ;
- t = document.getElementById("searchTarget");
- }
- t.innerHTML = result;
- t.style.display='block';
-}
-
-function Searching_Hide_Results()
-{
- t = document.getElementById("searchTarget");
- t.style.display='none';
- body.innerHTML = oldbody;
-}
-
-
-// This will call the php function that will eventually
-// return a results table
-function Searching_Call()
-{
- var x;
- Searching_Go();
-
- //Don't proceed if user is typing
- if (typing)
return;
-
- x = document.getElementById("searchInput").value;
-
- // Don't search again if the query is the same
- if (x==memory)
- return;
-
- memory=x;
- if (started) {
- // Don't search for blank or < 3 chars.
- if ((x=="") || (x.length < 3))
- {
- return;
- }
- x_wfSajaxSearch(x, Searching_SetResult);
}
-}
-function x_wfSajaxSearch() {
- sajax_do_call( "wfSajaxSearch", x_wfSajaxSearch.arguments );
-}
+ sajax_debug(func_name + " uri = " + uri + " / post = " + post_data);
+ x.send(post_data);
+ sajax_debug(func_name + " waiting..");
+ delete x;
-
-//Initialize
-function sajax_onload() {
- x = document.getElementById( 'searchInput' );
- x.onkeypress= function() { Search_Typing(); };
- Searching_Go();
- body = document.getElementById("content");
+ return true;
}
-
-hookEvent("load", sajax_onload);
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/ajaxsearch.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/ajaxsearch.js (rev 0)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/ajaxsearch.js 2008-05-28 18:51:12 UTC (rev 236)
@@ -0,0 +1,103 @@
+// remote scripting library
+// (c) copyright 2005 modernmethod, inc
+
+var started;
+var typing;
+var memory=null;
+var body=null;
+var oldbody=null;
+
+// Remove the typing barrier to allow call() to complete
+function Search_doneTyping()
+{
+ typing=false;
+}
+
+// Wait 500ms to run call()
+function Searching_Go()
+{
+ setTimeout("Searching_Call()", 500);
+}
+
+// If the user is typing wait until they are done.
+function Search_Typing() {
+ started=true;
+ typing=true;
+ setTimeout("Search_doneTyping()", 500);
+
+ // I believe these are needed by IE for when the users press return?
+ if (window.event)
+ {
+ if (event.keyCode == 13)
+ {
+ event.cancelBubble = true;
+ event.returnValue = true;
+ }
+ }
+}
+
+// Set the body div to the results
+function Searching_SetResult( request )
+{
+ if ( request.status != 200 ) {
+ alert("Error: " + request.status + " " + request.statusText + ": " + request.responseText);
+ return;
+ }
+
+ var result = request.responseText;
+
+ //body.innerHTML = result;
+ t = document.getElementById("searchTarget");
+ if ( t == null ) {
+ oldbody=body.innerHTML;
+ body.innerHTML= '<div id="searchTargetContainer"><div id="searchTarget" ></div></div>' ;
+ t = document.getElementById("searchTarget");
+ }
+ t.innerHTML = result;
+ t.style.display='block';
+}
+
+function Searching_Hide_Results()
+{
+ t = document.getElementById("searchTarget");
+ t.style.display='none';
+ body.innerHTML = oldbody;
+}
+
+
+// This will call the php function that will eventually
+// return a results table
+function Searching_Call()
+{
+ var x;
+ Searching_Go();
+
+ //Don't proceed if user is typing
+ if (typing)
+ return;
+
+ x = document.getElementById("searchInput").value;
+
+ // Don't search again if the query is the same
+ if (x==memory)
+ return;
+
+ memory=x;
+ if (started) {
+ // Don't search for blank or < 3 chars.
+ if ((x=="") || (x.length < 3))
+ {
+ return;
+ }
+
+ sajax_do_call( "wfSajaxSearch", [ x ], Searching_SetResult );
+ }
+}
+
+//Initialize
+function sajax_onload() {
+ x = document.getElementById( 'searchInput' );
+ x.onkeypress= function() { Search_Typing(); };
+ Searching_Go();
+ body = document.getElementById("content");
+}
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/ajaxwatch.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/ajaxwatch.js (rev 0)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/ajaxwatch.js 2008-05-28 18:51:12 UTC (rev 236)
@@ -0,0 +1,158 @@
+// dependencies:
+// * ajax.js:
+ /*extern sajax_init_object, sajax_do_call */
+// * wikibits.js:
+ /*extern changeText, akeytt, hookEvent, jsMsg */
+
+// These should have been initialized in the generated js
+/*extern wgAjaxWatch, wgPageName */
+
+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.watchLinks = []; // "watch"/"unwatch" links
+
+wgAjaxWatch.setLinkText = function(newText) {
+ for (i = 0; i < wgAjaxWatch.watchLinks.length; i++) {
+ changeText(wgAjaxWatch.watchLinks[i], newText);
+ }
+};
+
+wgAjaxWatch.setLinkID = function(newId) {
+ // We can only set the first one
+ wgAjaxWatch.watchLinks[0].setAttribute( 'id', newId );
+ akeytt(newId); // update tooltips for Monobook
+};
+
+wgAjaxWatch.setHref = function( string ) {
+ for( i = 0; i < wgAjaxWatch.watchLinks.length; i++ ) {
+ if( string == 'watch' ) {
+ wgAjaxWatch.watchLinks[i].href = wgAjaxWatch.watchLinks[i].href
+ .replace( /&action=unwatch/, '&action=watch' );
+ } else if( string == 'unwatch' ) {
+ wgAjaxWatch.watchLinks[i].href = wgAjaxWatch.watchLinks[i].href
+ .replace( /&action=watch/, '&action=unwatch' );
+ }
+ }
+}
+
+wgAjaxWatch.ajaxCall = function() {
+ if(!wgAjaxWatch.supported) {
+ return true;
+ } else if (wgAjaxWatch.inprogress) {
+ return false;
+ }
+ if(!wfSupportsAjax()) {
+ // Lazy initialization so we don't toss up
+ // ActiveX warnings on initial page load
+ // for IE 6 users with security settings.
+ wgAjaxWatch.supported = false;
+ return true;
+ }
+
+ wgAjaxWatch.inprogress = true;
+ wgAjaxWatch.setLinkText( wgAjaxWatch.watching
+ ? wgAjaxWatch.unwatchingMsg : wgAjaxWatch.watchingMsg);
+ sajax_do_call(
+ "wfAjaxWatch",
+ [wgPageName, (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 false;
+};
+
+wgAjaxWatch.processResult = function(request) {
+ if(!wgAjaxWatch.supported) {
+ return;
+ }
+ var response = request.responseText;
+ if( response.match(/^<w#>/) ) {
+ wgAjaxWatch.watching = true;
+ wgAjaxWatch.setLinkText(wgAjaxWatch.unwatchMsg);
+ wgAjaxWatch.setLinkID("ca-unwatch");
+ wgAjaxWatch.setHref( 'unwatch' );
+ } else if( response.match(/^<u#>/) ) {
+ wgAjaxWatch.watching = false;
+ wgAjaxWatch.setLinkText(wgAjaxWatch.watchMsg);
+ wgAjaxWatch.setLinkID("ca-watch");
+ wgAjaxWatch.setHref( 'watch' );
+ } else {
+ // Either we got a <err#> error code or it just plain broke.
+ window.location.href = wgAjaxWatch.watchLinks[0].href;
+ return;
+ }
+ jsMsg( response.substr(4), 'watch' );
+ wgAjaxWatch.inprogress = false;
+ if(wgAjaxWatch.timeoutID) {
+ window.clearTimeout(wgAjaxWatch.timeoutID);
+ }
+ return;
+};
+
+wgAjaxWatch.onLoad = function() {
+ // This document structure hardcoding sucks. We should make a class and
+ // toss all this out the window.
+ 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;
+ }
+ }
+
+ // The id can be either for the parent (Monobook-based) or the element
+ // itself (non-Monobook)
+ wgAjaxWatch.watchLinks.push( el1.tagName.toLowerCase() == "a"
+ ? el1 : el1.firstChild );
+
+ if( el2 ) {
+ wgAjaxWatch.watchLinks.push( el2 );
+ }
+
+ // I couldn't get for (watchLink in wgAjaxWatch.watchLinks) to work, if
+ // you can be my guest.
+ for( i = 0; i < wgAjaxWatch.watchLinks.length; i++ ) {
+ wgAjaxWatch.watchLinks[i].onclick = 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;
+}
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/block.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/block.js (rev 0)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/block.js 2008-05-28 18:51:12 UTC (rev 236)
@@ -0,0 +1,52 @@
+function considerChangingExpiryFocus() {
+ if (!document.getElementById) {
+ return;
+ }
+ var drop = document.getElementById('wpBlockExpiry');
+ if (!drop) {
+ return;
+ }
+ var field = document.getElementById('wpBlockOther');
+ if (!field) {
+ return;
+ }
+ var opt = drop.value;
+ if (opt == 'other') {
+ field.style.display = '';
+ } else {
+ field.style.display = 'none';
+ }
+}
+
+function updateBlockOptions() {
+ if (!document.getElementById)
+ return;
+
+ var target = document.getElementById('mw-bi-target');
+ if (!target)
+ return;
+
+ var addy = target.value;
+ var isEmpty = addy.match(/^\s*$/);
+ var isIp = addy.match(/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|:(:[0-9A-Fa-f]{1,4}){1,7}|[0-9A-Fa-f]{1,4}(:{1,2}[0-9A-Fa-f]{1,4}|::$){1,7})(\/\d+)?$/);
+
+ var anonymousRow = document.getElementById('wpAnonOnlyRow');
+ if( anonymousRow ) {
+ anonymousRow.style.display = (!isIp && !isEmpty) ? 'none' : '';
+ }
+
+ var autoblockRow = document.getElementById('wpEnableAutoblockRow');
+ if( autoblockRow ) {
+ autoblockRow.style.display = isIp && !isEmpty ? 'none' : '';
+ }
+
+ var emailblockRow = document.getElementById('wpEnableEmailBan');
+ if( emailblockRow ) {
+ emailblockRow.style.display = isIp && !isEmpty ? 'none' : '';
+ }
+
+ var hideuserRow = document.getElementById('wpEnableHideUser');
+ if( hideuserRow ) {
+ hideuserRow.style.display = isIp && !isEmpty ? 'none' : '';
+ }
+}
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/common/cologneblue.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/cologneblue.css 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/cologneblue.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -1,5 +1,3 @@
- at import url("common.css?1");
-
body { margin: 0px; padding: 0px; color: black; }
#specialform { display: inline; }
#content { top: 0; margin: 0; padding: 0; }
@@ -78,8 +76,9 @@
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;
@@ -94,4 +93,17 @@
a.new, #quickbar a.new { color: #CC2200; }
h2, h3, h4, h5, h6 { margin-bottom: 0; }
small { font-size: 75%; }
+input.mw-searchInput { width: 106px; }
+/* Recreating-deleted-page/reupload file warning and log entries */
+div#mw-upload-deleted-warn,
+div#mw-recreate-deleted-warn {
+ padding: 3px;
+ margin-top: 3px;
+ margin-bottom: 3px;
+ border: 1px solid #6688AA;
+}
+div#mw-upload-deleted-warn ul li,
+div#mw-recreate-deleted-warn ul li {
+ font-size: 90%;
+}
\ No newline at end of file
Deleted: trunk/wiki.openmoko.org/space_www_wiki_skins/common/common.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/common.css 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/common.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -1,381 +0,0 @@
-/*
- * common.css
- * This file contains CSS settings common to Wikistandard, Nostalgia and CologneBlue
- */
-#footer { clear: both }
-/* images */
-div.floatright { float: 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 p { font-style: italic; }
-
-
-/* Print-specific things to hide */
-.printfooter {
- display: none;
-}
-
-/* table standards */
-table.rimage {
- float:right;
- margin-left:1em;
- margin-bottom:1em;
- text-align:center;
- font-size:smaller;
-}
-
-/* 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;
-}
-div.thumb div * {
- border: none;
- background: none;
-}
-div.thumb img {
- border:1px solid #8888AA;
- margin-bottom:3px;
- background:#FFFFFF;
-}
-div.thumbcaption,
-div.thumbcaption * {
- border: none !important;
- background: none !important;
-}
-div.thumbcaption {
- padding: 0.2em 0 0.2em 0 !important;
- text-align: left !important;
-}
-div.tright {
- float: right;
- margin-left:0.5em;
-}
-div.tleft {
- float: left;
- margin-right:0.5em;
-}
-
-/* Page history styling */
-/* the auto-generated edit comments */
-.autocomment { color: #4b4b4b; }
-#pagehistory span.user {
- margin-left: 1.4em;
- margin-right: 0.4em;
-}
-#pagehistory span.minor { font-weight: bold; }
-#pagehistory li { border: 1px solid White; }
-#pagehistory li.selected {
- background-color:#f9f9f9;
- border:1px dashed #aaaaaa;
-}
-
-table.diff { background:white; }
-td.diff-otitle { background:#cccccc; }
-td.diff-ntitle { background:#cccccc; }
-td.diff-addedline {
- background:#ccffcc;
- font-size: 94%;
-}
-td.diff-deletedline {
- background:#ffffaa;
- font-size: 94%;
-}
-td.diff-context {
- background:#eeeeee;
- font-size: 94%;
-}
-span.diffchange { color: red; font-weight: bold; }
-
-img { border: none; }
-img.tex { vertical-align: middle; }
-span.texhtml { font-family: serif; }
-
-
-#toc,
-.toc {
- border: 1px solid #bba;
- background-color: #f7f8ff;
- padding: 5px;
- font-size: 95%;
- text-align: center;
-}
-#toc h2,
-.toc h2 {
- display: inline;
- border: none;
- padding: 0;
- font-size: 100%;
- font-weight: bold;
-}
-#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%;
-}
-
-
-.error {
- color: red;
- font-size: larger;
-}
-
-/* preference page with js-genrated toc */
-#preftoc {
- float: left;
- margin: 1em 1em 1em 1em;
- width: 13em;
-}
-#preftoc li { border: 1px solid White; }
-#preftoc li.selected {
- background-color:#f9f9f9;
- border:1px dashed #aaaaaa;
-}
-#preftoc a,
-#preftoc a:active {
- display: block;
- color: #005189;
-}
-#prefcontrol {
- clear: left;
- float: left;
- margin-top: 1em;
-}
-div.prefsectiontip {
- font-size: 94%;
- margin-top: 1em;
-}
-fieldset.prefsection { margin-top: 1em }
-fieldset.operaprefsection { margin-left: 15em }
-
-/* 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% }
-
-div.townBox {
- position:relative;
- float:right;
- background:White;
- margin-left:1em;
- border: 1px solid gray;
- padding:0.3em;
- width: 200px;
- overflow: hidden;
- clear: right;
-}
-div.townBox dl {
- padding: 0;
- margin: 0 0 0.3em 0;
- font-size: 96%;
-}
-div.townBox dl dt {
- background: none;
- margin: 0.4em 0 0 0;
-}
-div.townBox dl dd {
- margin: 0.1em 0 0 1.1em;
- background-color: #f3f3f3;
-}
-/* use this instead of #toc for page content */
-.toccolours {
- border:1px solid #aaaaaa;
- background-color:#f9f9f9;
- padding:5px;
- font-size: 95%;
-}
-#siteNotice {
- border:1px solid #aaaaaa;
- padding-left: 0.5em;
- padding-right: 0.5em;
-}
-.redirectText {
- font-size:150%;
- margin:5px;
-}
-.searchmatch {
- color: red;
- font-weight: bold;
-}
-.sharedUploadNotice {
- font-style: italic;
-}
-span.unpatrolled {
- font-weight:bold;
- color:red;
-}
-
-span.updatedmarker {
- color:black;
- background-color:#00FF00;
-}
-span.newpageletter {
- font-weight:bold;
- color:black;
- background-color:yellow;
-}
-span.minoreditletter {
- color:black;
- background-color:#C5FFE6;
-}
-
-table.gallery {
- border: 1px solid #cccccc;
- margin: 2px;
- padding: 2px;
- background-color:#ffffff;
-}
-
-table.gallery tr {
- vertical-align:top;
-}
-
-table.gallery td {
- vertical-align:top;
- background-color:#f9f9f9;
- border: solid 2px white;
-}
-
-div.gallerybox {
- margin: 2px;
- width: 150px;
-}
-
-div.gallerybox div.thumb {
- text-align: center;
- border: 1px solid #cccccc;
- margin: 2px;
-}
-
-div.gallerytext {
- font-size: 94%;
- padding: 2px 4px;
-}
-
-span.comment {
- font-style: italic;
-}
-
-span.changedby {
- font-size: 95%;
-}
-
-.previewnote {
- text-align: center;
- color: #cc0000;
-}
-.editExternally {
- border-style:solid;
- border-width:1px;
- border-color:gray;
- background: #ffffff;
- padding:3px;
- margin-top:0.5em;
- float:left;
- font-size:small;
- text-align:center;
-}
-.editExternallyHelp {
- font-style:italic;
- color:gray;
-}
-
-li span.deleted {
- text-decoration: line-through;
- color: #888;
- font-style: italic;
-}
-
-
-/* Classes for EXIF data display */
-table.mw_metadata {
- margin-left: 0.5em;
-}
-
-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 {
- border: 1px solid #aaaaaa;
- padding-left: 4px;
- padding-right: 4px;
-}
-table.mw_metadata th {
- background-color: #f9f9f9;
-}
-table.mw_metadata td {
- background-color: #fcfcfc;
-}
-table.mw_metadata td.spacer {
- background: inherit;
- border-top: none;
- border-bottom: none;
-}
-table.collapsed tr.collapsable {
- display: none;
-}
-
-.visualClear {
- clear: both;
-}
-
-#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;
-}
-
-#jump-to-nav {
- display: none;
-}
\ No newline at end of file
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/common/commonPrint.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/commonPrint.css 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/commonPrint.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -22,13 +22,11 @@
.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.magnify { display: none; }
div.tright {
float: right;
+ clear: right;
border-width: 0.5em 0 0.8em 1.4em;
}
div.tleft {
@@ -74,6 +73,9 @@
margin-right:0.5em;
border-width: 0.5em 1.4em 0.8em 0;
}
+img.thumbborder {
+ border: 1px solid #dddddd;
+}
/* table standards */
table.rimage {
@@ -103,10 +105,10 @@
.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;
}
@@ -118,7 +120,6 @@
#content {
background: none;
border: none ! important;
- font-size: 11pt;
padding: 0 ! important;
margin: 0 ! important;
}
@@ -128,14 +129,13 @@
border-top: 1px solid black;
}
-h1, h2, h3, h4, h5, h6
-{
- font-weight: bold;
+h1, h2, h3, h4, h5, h6 {
+ font-weight: bold;
}
p, .documentDescription {
margin: 1em 0 ! important;
- line-height: 1.2em;
+ line-height: 1.2em;
}
.tocindent p {
@@ -160,7 +160,8 @@
a {
color: Black !important;
- padding: 0 !important
+ background: none !important;
+ padding: 0 !important;
}
a:link, a:visited {
@@ -284,5 +285,8 @@
background:#eeeeee;
font-size: smaller;
}
-span.diffchange { color: silver; font-weight: bold; text-decoration: underline; }
-
+.diffchange {
+ color: silver;
+ font-weight: bold;
+ text-decoration: underline;
+}
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/common/common_rtl.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/common_rtl.css 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/common_rtl.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -1,3 +1,8 @@
+/*
+ * This file contains CSS settings common to RTL wikis use the old
+ * pre-Monobook skins Wikistandard, Nostalgia and CologneBlue
+ */
+
/* js pref toc */
#preftoc { float: right; }
/* workaround for moz bug, displayed bullets on left side */
@@ -13,3 +18,20 @@
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;
+}
+/* Unblock and Ipblocklist links of Special:Blockip */
+p.mw-ipb-conveniencelinks {
+ float: left;
+}
+table.filehistory th {
+ text-align: right;
+}
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/diff.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/diff.css (rev 0)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/diff.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -0,0 +1,74 @@
+/*
+** Diff rendering
+*/
+table.diff, td.diff-otitle, td.diff-ntitle {
+ background-color: white;
+}
+td.diff-otitle,
+td.diff-ntitle {
+ text-align: center;
+}
+td.diff-marker {
+ text-align: right;
+}
+.rtl td.diff-marker {
+ text-align: left;
+}
+td.diff-lineno {
+ font-weight: bold;
+}
+td.diff-addedline {
+ background: #cfc;
+ font-size: smaller;
+}
+td.diff-deletedline {
+ background: #ffa;
+ font-size: smaller;
+}
+td.diff-context {
+ background: #eee;
+ font-size: smaller;
+}
+.diffchange {
+ color: red;
+ font-weight: bold;
+ text-decoration: none;
+}
+
+table.diff {
+ border: none;
+ width: 98%;
+ border-spacing: 4px;
+
+ /* Fixed layout is required to ensure that cells containing long URLs
+ don't widen in Safari, Internet Explorer, or iCab */
+ table-layout: fixed;
+}
+table.diff td {
+ padding: 0;
+}
+table.diff col.diff-marker {
+ width: 2%;
+}
+table.diff col.diff-content {
+ width: 48%;
+}
+table.diff td div {
+ /* Force-wrap very long lines such as URLs or page-widening char strings.
+ CSS 3 draft..., but Gecko doesn't support it yet:
+ https://bugzilla.mozilla.org/show_bug.cgi?id=99457 */
+ word-wrap: break-word;
+
+ /* As fallback, scrollbars will be added for very wide cells
+ instead of text overflowing or widening */
+ overflow: auto;
+
+ /* The above rule breaks on very old versions of Mozilla due
+ to a bug which collapses the table cells to a single line.
+
+ In Mozilla 1.1 and below with JavaScript enabled, the rule
+ will be overridden with this by diff.js; wide cell contents
+ then spill horizontally without widening the rest of the
+ table: */
+ /* overflow: visible; */
+}
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/diff.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/diff.js (rev 0)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/diff.js 2008-05-28 18:51:12 UTC (rev 236)
@@ -0,0 +1,20 @@
+/*
+Workaround for overflow bug in Mozilla 1.1 and earlier, where scrolling
+<div>s in <td> cells collapse their height to a single line.
+
+Known to be fixed in 1.2.1 (Gecko 20021130), but the CSS hacks I've tried
+with overflow-x disable the scrolling all the way until Mozilla 1.8 / FF 1.5
+and break Opera as well.
+
+So... we check for reaaaally old Gecko and hack in an alternate rule to let
+the wide cells spill instead of scrolling them. Not ideal as it won't work
+if JS is disabled, of course.
+*/
+
+if (navigator && navigator.product == "Gecko" && navigator.productSub < "20021130") {
+ var sheets = document.styleSheets;
+ var lastSheet = sheets[sheets.length-1];
+ lastSheet.insertRule(
+ "table.diff td div { overflow: visible; }",
+ lastSheet.cssRules.length);
+}
\ No newline at end of file
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Arr_u.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Arr_u.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Checker-16x16.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/Checker-16x16.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_disabled_first_25.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_disabled_first_25.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_disabled_last_25.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_disabled_last_25.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_disabled_left_25.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_disabled_left_25.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_disabled_right_25.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_disabled_right_25.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_first.svg
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_first.svg (rev 0)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_first.svg 2008-05-28 18:51:12 UTC (rev 236)
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512.85712"
+ height="600"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.44"
+ version="1.0"
+ sodipodi:docbase="C:\htdocs\w\skins\common\images"
+ sodipodi:docname="big_arrow_first.svg"
+ inkscape:export-filename="C:\htdocs\w\skins\common\images\big_arrow_left.png"
+ inkscape:export-xdpi="5.0520902"
+ inkscape:export-ydpi="5.0520902">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.35"
+ inkscape:cx="375"
+ inkscape:cy="520"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ width="600.24px"
+ height="600.88px"
+ inkscape:window-width="853"
+ inkscape:window-height="573"
+ inkscape:window-x="66"
+ inkscape:window-y="87" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-239.3783,-208.0743)">
+ <path
+ sodipodi:type="star"
+ style="fill:#00a;fill-opacity:1;fill-rule:evenodd;stroke:#00a;stroke-width:10.35552788;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path1874"
+ sodipodi:sides="3"
+ sodipodi:cx="94.285713"
+ sodipodi:cy="343.79074"
+ sodipodi:r1="75.484825"
+ sodipodi:r2="37.742413"
+ sodipodi:arg1="1.056345"
+ sodipodi:arg2="2.1035426"
+ inkscape:flatsided="true"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="M 131.42857,409.50502 L 18.804046,343.10026 L 132.62452,278.76694 L 131.42857,409.50502 z "
+ transform="matrix(3.596688,0,0,4.278606,254.9147,-964.348)" />
+ <rect
+ style="fill:#00a;fill-opacity:1;stroke:#00a;stroke-width:39.31948471;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3737"
+ width="20.680517"
+ height="560.68054"
+ x="259.03799"
+ y="227.73401" />
+ </g>
+</svg>
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_first_25.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_first_25.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_last_25.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_last_25.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_left.svg
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_left.svg (rev 0)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_left.svg 2008-05-28 18:51:12 UTC (rev 236)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="450"
+ height="600"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.44"
+ version="1.0"
+ sodipodi:docbase="C:\htdocs\w\skins\common\images"
+ sodipodi:docname="big_arrow_left.svg"
+ inkscape:export-filename="C:\htdocs\w\skins\common\images\big_arrow_left.png"
+ inkscape:export-xdpi="5.0520902"
+ inkscape:export-ydpi="5.0520902">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.35"
+ inkscape:cx="375"
+ inkscape:cy="520"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ width="600.24px"
+ height="600.88px"
+ inkscape:window-width="853"
+ inkscape:window-height="573"
+ inkscape:window-x="66"
+ inkscape:window-y="87" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-302.2354,-208.0743)">
+ <path
+ sodipodi:type="star"
+ style="fill:#00a;fill-opacity:1;fill-rule:evenodd;stroke:#00a;stroke-width:10.35552788;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path1874"
+ sodipodi:sides="3"
+ sodipodi:cx="94.285713"
+ sodipodi:cy="343.79074"
+ sodipodi:r1="75.484825"
+ sodipodi:r2="37.742413"
+ sodipodi:arg1="1.056345"
+ sodipodi:arg2="2.1035426"
+ inkscape:flatsided="true"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="M 131.42857,409.50502 L 18.804046,343.10026 L 132.62452,278.76694 L 131.42857,409.50502 z "
+ transform="matrix(3.596688,0,0,4.278606,254.9147,-964.348)" />
+ </g>
+</svg>
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_left_25.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_left_25.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_right_25.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/arrow_right_25.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-djvu.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-djvu.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-djvu.xcf
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-djvu.xcf
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/icons/fileicon-ogg.xcf
===================================================================
(Binary files differ)
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/mediawiki-large.xcf
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/mediawiki-large.xcf
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/mediawiki-largesquare.xcf
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/mediawiki-largesquare.xcf
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/sort_down.gif
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/sort_down.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/sort_none.gif
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/sort_none.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/sort_up.gif
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/sort_up.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/spinner.gif
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/common/images/spinner.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/common/metadata.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/metadata.js 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/metadata.js 2008-05-28 18:51:12 UTC (rev 236)
@@ -11,17 +11,17 @@
var box = document.getElementById(tableId);
if (!box)
return false;
-
+
var tbody = box.getElementsByTagName('tbody')[0];
-
+
var row = document.createElement('tr');
-
+
var col = document.createElement('td');
col.colSpan = 2;
-
+
var link = document.createElement('a');
link.href = '#';
-
+
link.onclick = function() {
if (box.className == 'mw_metadata collapsed') {
changeText(link, hideText);
@@ -32,17 +32,17 @@
}
return false;
}
-
+
var text = document.createTextNode(hideText);
-
+
link.appendChild(text);
col.appendChild(link);
row.appendChild(col);
tbody.appendChild(row);
-
+
// And collapse!
link.onclick();
-
+
return true;
}
return false;
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/common/nostalgia.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/nostalgia.css 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/nostalgia.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -1,4 +1,3 @@
- at import url("common.css?1");
body {
/* Background color is set separately on page type */
color: black;
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/oldshared.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/oldshared.css (rev 0)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/oldshared.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -0,0 +1,466 @@
+/*
+ * oldshared.css
+ * This file contains CSS settings common to Wikistandard, Nostalgia and
+ * CologneBlue, the old pre-Monobook skins
+ */
+
+/* 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;
+}
+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; clear: right; margin: 0 0 1em 1em; }
+div.floatright p { font-style: italic; }
+div.floatleft { float: left; clear: left; margin: 0.3em 0.5em 0.5em 0; }
+div.floatleft p { font-style: italic; }
+
+
+/* Print-specific things to hide */
+.printfooter {
+ display: none;
+}
+
+/* table standards */
+table.rimage {
+ float:right;
+ margin-left:1em;
+ margin-bottom:1em;
+ text-align:center;
+ font-size:smaller;
+}
+
+/* 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;
+}
+img.thumbborder {
+ border: 1px solid #dddddd;
+}
+
+/* Page history styling */
+/* the auto-generated edit comments */
+.autocomment { color: #4b4b4b; }
+#pagehistory span.user {
+ margin-left: 1.4em;
+ margin-right: 0.4em;
+}
+#pagehistory span.minor { font-weight: bold; }
+#pagehistory li { border: 1px solid White; }
+#pagehistory li.selected {
+ background-color:#f9f9f9;
+ border:1px dashed #aaaaaa;
+}
+
+img { border: none; }
+
+#toc,
+.toc {
+ border: 1px solid #bba;
+ background-color: #f7f8ff;
+ padding: 5px;
+ font-size: 95%;
+ text-align: center;
+}
+#toc h2,
+.toc h2 {
+ display: inline;
+ border: none;
+ padding: 0;
+ font-size: 100%;
+ font-weight: bold;
+}
+#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%;
+}
+
+
+.error {
+ color: red;
+ font-size: larger;
+}
+
+/* preference page with js-genrated toc */
+#preftoc {
+ float: left;
+ margin: 1em 1em 1em 1em;
+ width: 13em;
+}
+#preftoc li { border: 1px solid White; }
+#preftoc li.selected {
+ background-color:#f9f9f9;
+ border:1px dashed #aaaaaa;
+}
+#preftoc a,
+#preftoc a:active {
+ display: block;
+ color: #005189;
+}
+#prefcontrol {
+ clear: left;
+ float: left;
+ margin-top: 1em;
+}
+div.prefsectiontip {
+ font-size: 94%;
+ margin-top: 0.4em;
+ color: #666;
+}
+fieldset.prefsection { margin-top: 1em }
+fieldset.operaprefsection { margin-left: 15em }
+
+/* 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% }
+
+div.townBox {
+ position:relative;
+ float:right;
+ background:White;
+ margin-left:1em;
+ border: 1px solid gray;
+ padding:0.3em;
+ width: 200px;
+ overflow: hidden;
+ clear: right;
+}
+div.townBox dl {
+ padding: 0;
+ margin: 0 0 0.3em 0;
+ font-size: 96%;
+}
+div.townBox dl dt {
+ background: none;
+ margin: 0.4em 0 0 0;
+}
+div.townBox dl dd {
+ margin: 0.1em 0 0 1.1em;
+ background-color: #f3f3f3;
+}
+/* use this instead of #toc for page content */
+.toccolours {
+ border:1px solid #aaaaaa;
+ background-color:#f9f9f9;
+ padding:5px;
+ font-size: 95%;
+}
+#siteNotice {
+ border:1px solid #aaaaaa;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+}
+.redirectText {
+ font-size:150%;
+ margin:5px;
+}
+.searchmatch {
+ color: red;
+ font-weight: bold;
+}
+.sharedUploadNotice {
+ font-style: italic;
+}
+span.unpatrolled {
+ font-weight:bold;
+ color:red;
+}
+
+span.updatedmarker {
+ color:black;
+ background-color:#00FF00;
+}
+
+table.gallery {
+ border: 1px solid #cccccc;
+ margin: 2px;
+ padding: 2px;
+ background-color:#ffffff;
+}
+
+table.gallery tr {
+ vertical-align:top;
+}
+
+table.gallery td {
+ vertical-align:top;
+ background-color:#f9f9f9;
+ border: solid 2px white;
+}
+
+div.gallerybox {
+ margin: 2px;
+ width: 150px;
+}
+
+div.gallerybox div.thumb {
+ text-align: center;
+ border: 1px solid #cccccc;
+ margin: 2px;
+}
+
+div.gallerytext {
+ overflow: hidden;
+ font-size: 94%;
+ padding: 2px 4px;
+}
+
+span.comment {
+ font-style: italic;
+}
+
+span.changedby {
+ font-size: 95%;
+}
+
+.previewnote {
+ text-align: center;
+ color: #cc0000;
+}
+.editExternally {
+ border-style:solid;
+ border-width:1px;
+ border-color:gray;
+ background: #ffffff;
+ padding:3px;
+ margin-top:0.5em;
+ float:left;
+ font-size:small;
+ text-align:center;
+}
+.editExternallyHelp {
+ font-style:italic;
+ color:gray;
+}
+
+li span.deleted {
+ text-decoration: line-through;
+ color: #888;
+ font-style: italic;
+}
+
+/* Classes for EXIF data display */
+table.mw_metadata {
+ margin-left: 0.5em;
+}
+
+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 {
+ border: 1px solid #aaaaaa;
+ padding-left: 4px;
+ padding-right: 4px;
+}
+table.mw_metadata th {
+ background-color: #f9f9f9;
+}
+table.mw_metadata td {
+ background-color: #fcfcfc;
+}
+table.mw_metadata td.spacer {
+ background: inherit;
+ border-top: none;
+ border-bottom: none;
+}
+table.collapsed tr.collapsable {
+ display: none;
+}
+
+.visualClear {
+ clear: both;
+}
+
+#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;
+}
+
+#jump-to-nav {
+ display: none;
+}
+
+/* Keep this temporarily so that cached pages will display right */
+table.gallery td.galleryheader {
+ text-align: center;
+ font-weight: bold;
+}
+table.gallery caption {
+ font-weight: bold;
+}
+
+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;
+}
+
+/*
+ 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: 1em; }
+
+/* Convenience links on Special:Ipblocklist */
+p.mw-ipb-conveniencelinks {
+ font-size: 90%;
+ float: right;
+}
+
+/* Recreating-deleted-page/reupload file warning and log entries */
+div#mw-upload-deleted-warn ul li,
+div#mw-recreate-deleted-warn ul li {
+ font-size: 95%;
+}
+
+
+.MediaTransformError {
+ border: thin solid #777;
+ background-color: #ccc;
+ padding: 0.1em;
+}
+.MediaTransformError td {
+ text-align: center;
+ vertical-align: middle;
+ font-size: 90%;
+}
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/common/preview.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/preview.js 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/preview.js 2008-05-28 18:51:12 UTC (rev 236)
@@ -1,5 +1,19 @@
-// Live preview
+/**
+ * Live preview script for MediaWiki
+ *
+ * 2007-04-25 – Nikerabbit:
+ * Worked around text cutoff in mozilla-based browsers
+ * Support for categories
+ */
+
+lpIdPreview = 'wikiPreview';
+lpIdCategories = 'catlinks';
+lpIdDiff = 'wikiDiff';
+
+/*
+ * Returns XMLHttpRequest based on browser support or null
+ */
function openXMLHttpRequest() {
if( window.XMLHttpRequest ) {
return new XMLHttpRequest();
@@ -15,39 +29,147 @@
* Returns true if could open the request,
* false otherwise (eg no browser support).
*/
-function livePreview(target, text, postUrl) {
- prevTarget = target;
- if( !target ) {
- window.alert('Live preview failed!\nTry normal preview.');
- var fallback = document.getElementById('wpPreview');
- if ( fallback ) { fallback.style.display = 'inline'; }
- }
- prevReq = openXMLHttpRequest();
- if( !prevReq ) return false;
-
- prevReq.onreadystatechange = updatePreviewText;
- prevReq.open("POST", postUrl, true);
-
+function lpDoPreview(text, postUrl) {
+ lpRequest = openXMLHttpRequest();
+ if( !lpRequest ) return false;
+
+ lpRequest.onreadystatechange = lpStatusUpdate;
+ lpRequest.open("POST", postUrl, true);
+
var postData = 'wpTextbox1=' + encodeURIComponent(text);
- prevReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- prevReq.send(postData);
+ lpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+ lpRequest.send(postData);
return true;
}
-function updatePreviewText() {
- if( prevReq.readyState != 4 ) {
+function lpStatusUpdate() {
+
+ /* We are at some stage of loading */
+ if (lpRequest.readyState > 0 && lpRequest.readyState < 4) {
+ notify(i18n(wgLivepreviewMessageLoading));
+ }
+
+ /* Not loaded yet */
+ if(lpRequest.readyState != 4) {
return;
}
- if( prevReq.status != 200 ) {
- window.alert('Failed to connect: ' + prevReq.status +
- ' "' + prevReq.statusText + '"');
- var fallback = document.getElementById('wpPreview');
- if ( fallback ) { fallback.style.display = 'inline'; }
+
+ /* We got response, bug it not what we wanted */
+ if( lpRequest.status != 200 ) {
+ var keys = new Array();
+ keys[0] = lpRequest.status;
+ keys[1] = lpRequest.statusText;
+ window.alert(i18n(wgLivepreviewMessageError, keys));
+ lpShowNormalPreview();
return;
}
- prevTarget.innerHTML = prevReq.responseText;
+ /* All good */
+ dismissNotify(i18n(wgLivepreviewMessageReady), 750);
+
+
+ var XMLObject = lpRequest.responseXML.documentElement;
+
+
+ /* Work around Firefox (Gecko?) limitation where it shows only the first 4096
+ * bytes of data. Ref: http://www.thescripts.com/forum/thread482760.html
+ */
+ XMLObject.normalize();
+
+ var previewElement = XMLObject.getElementsByTagName('preview')[0];
+ var categoryElement = XMLObject.getElementsByTagName('category')[0];
+
/* Hide the active diff if it exists */
- var diff = document.getElementById('wikiDiff');
+ var diff = document.getElementById(lpIdDiff);
if ( diff ) { diff.style.display = 'none'; }
+
+ /* Inject preview */
+ var previewContainer = document.getElementById( lpIdPreview );
+ if ( previewContainer && previewElement ) {
+ previewContainer.innerHTML = previewElement.firstChild.data;
+ } else {
+ /* Should never happen */
+ window.alert(i18n(wgLivepreviewMessageFailed));
+ lpShowNormalPreview();
+ return;
+ }
+
+
+ /* Inject categories */
+ var categoryContainer = document.getElementById( lpIdCategories );
+ if ( categoryElement && categoryElement.firstChild ) {
+ if ( categoryContainer ) {
+ categoryContainer.innerHTML = categoryElement.firstChild.data;
+ /* May be hidden */
+ categoryContainer.style.display = 'block';
+ } else {
+ /* Just dump them somewhere */
+ /* previewContainer.innerHTML += '<div id="catlinks">' +
+ categoryElement.firstChild.data + '</div>';*/
+ }
+ } else {
+ /* Nothing to show, hide old data */
+ if ( categoryContainer ) {
+ categoryContainer.style.display = 'none';
+ }
+ }
+
}
+
+function lpShowNormalPreview() {
+ var fallback = document.getElementById('wpPreview');
+ if ( fallback ) { fallback.style.display = 'inline'; }
+}
+
+
+// TODO: move elsewhere
+/* Small non-intrusive popup which can be used for example to notify the user
+ * about completed AJAX action. Supports only one notify at a time.
+ */
+function notify(message) {
+ var notifyElement = document.getElementById('mw-js-notify');
+ if ( !notifyElement ) {
+ createNotify();
+ var notifyElement = document.getElementById('mw-js-notify');
+ }
+ notifyElement.style.display = 'block';
+ notifyElement.innerHTML = message;
+}
+
+function dismissNotify(message, timeout) {
+ var notifyElement = document.getElementById('mw-js-notify');
+ if ( notifyElement ) {
+ if ( timeout == 0 ) {
+ notifyElement.style.display = 'none';
+ } else {
+ notify(message);
+ setTimeout("dismissNotify('', 0)", timeout);
+ }
+ }
+}
+
+function createNotify() {
+ var div = document.createElement("div");
+ var txt = '###PLACEHOLDER###'
+ var txtNode = document.createTextNode(txt);
+ div.appendChild(txtNode);
+ div.id = 'mw-js-notify';
+ // TODO: move styles to css
+ div.setAttribute('style',
+ 'display: none; position: fixed; bottom: 0px; right: 0px; color: white; background-color: DarkRed; z-index: 5; padding: 0.1em 1em 0.1em 1em; font-size: 120%;');
+ var body = document.getElementsByTagName('body')[0];
+ body.appendChild(div);
+}
+
+
+
+/* Helper function similar to wfMsgReplaceArgs() */
+function i18n(message, keys) {
+ var localMessage = message;
+ if ( !keys ) { return localMessage; }
+ for( var i = 0; i < keys.length; i++) {
+ var myregexp = new RegExp("\\$"+(i+1), 'g');
+ localMessage = localMessage.replace(myregexp, keys[i]);
+ }
+ return localMessage;
+}
\ No newline at end of file
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/common/protect.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/protect.js 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/protect.js 2008-05-28 18:51:12 UTC (rev 236)
@@ -1,57 +1,124 @@
-function protectInitialize(tableId, labelText) {
- if (document.createTextNode) {
- var box = document.getElementById(tableId);
- if (!box)
- return false;
+/**
+ * Set up the protection chaining interface (i.e. "unlock move permissions" checkbox)
+ * on the protection form
+ *
+ * @param String tableId Identifier of the table containing UI bits
+ * @param String labelText Text to use for the checkbox label
+ */
+function protectInitialize( tableId, labelText, types ) {
+ if( !( document.createTextNode && document.getElementById && document.getElementsByTagName ) )
+ return false;
- var tbody = box.getElementsByTagName('tbody')[0];
- var row = document.createElement('tr');
- tbody.appendChild(row);
+ var box = document.getElementById( tableId );
+ if( !box )
+ return false;
- row.appendChild(document.createElement('td'));
- var col2 = document.createElement('td');
- row.appendChild(col2);
-
- var check = document.createElement('input');
- check.id = "mwProtectUnchained";
- check.type = "checkbox";
- check.onclick = protectChainUpdate;
- col2.appendChild(check);
-
- var label = document.createElement('label');
- label.setAttribute("for", "mwProtectUnchained");
- label.appendChild(document.createTextNode(labelText));
- col2.appendChild(label);
-
- if (protectAllMatch()) {
- check.checked = false;
- protectEnable(false);
- } else {
- check.checked = true;
- protectEnable(true);
+ var tbody = box.getElementsByTagName( 'tbody' )[0];
+ var row = document.createElement( 'tr' );
+ tbody.appendChild( row );
+
+ row.appendChild( document.createElement( 'td' ) );
+ var col = document.createElement( 'td' );
+ row.appendChild( col );
+ // If there is only one protection type, there is nothing to chain
+ if( types > 1 ) {
+ var check = document.createElement( 'input' );
+ check.id = 'mwProtectUnchained';
+ check.type = 'checkbox';
+ col.appendChild( check );
+ addClickHandler( check, protectChainUpdate );
+
+ col.appendChild( document.createTextNode( ' ' ) );
+ var label = document.createElement( 'label' );
+ label.htmlFor = 'mwProtectUnchained';
+ label.appendChild( document.createTextNode( labelText ) );
+ col.appendChild( label );
+
+ check.checked = !protectAllMatch();
+ protectEnable( check.checked );
+ }
+
+ setCascadeCheckbox();
+
+ return true;
+}
+
+/**
+* Determine if, given the cascadeable protection levels
+* and what is currently selected, if the cascade box
+* can be checked
+*
+* @return boolean
+*
+*/
+function setCascadeCheckbox() {
+ // For non-existent titles, there is no cascade option
+ if( !document.getElementById( 'mwProtect-cascade' ) ) {
+ return false;
+ }
+ var lists = protectSelectors();
+ for( var i = 0; i < lists.length; i++ ) {
+ if( lists[i].selectedIndex > -1 ) {
+ var items = lists[i].getElementsByTagName( 'option' );
+ var selected = items[ lists[i].selectedIndex ].value;
+ if( !isCascadeableLevel(selected) ) {
+ document.getElementById( 'mwProtect-cascade' ).checked = false;
+ document.getElementById( 'mwProtect-cascade' ).disabled = true;
+ return false;
+ }
}
-
- return true;
}
- return false;
+ document.getElementById( 'mwProtect-cascade' ).disabled = false;
+ return true;
}
+/**
+* Is this protection level cascadeable?
+* @param String level
+*
+* @return boolean
+*
+*/
+function isCascadeableLevel( level ) {
+ for (var k = 0; k < wgCascadeableLevels.length; k++) {
+ if ( wgCascadeableLevels[k] == level ) {
+ return true;
+ }
+ }
+ return false;
+}
+
+/**
+ * When protection levels are locked together, update the rest
+ * when one action's level changes
+ *
+ * @param Element source Level selector that changed
+ */
function protectLevelsUpdate(source) {
- if (!protectUnchained()) {
- protectUpdateAll(source.selectedIndex);
- }
+ if( !protectUnchained() )
+ protectUpdateAll( source.selectedIndex );
+ setCascadeCheckbox();
}
+/**
+ * Update chain status and enable/disable various bits of the UI
+ * when the user changes the "unlock move permissions" checkbox
+ */
function protectChainUpdate() {
- if (protectUnchained()) {
- protectEnable(true);
+ if( protectUnchained() ) {
+ protectEnable( true );
} else {
protectChain();
- protectEnable(false);
+ protectEnable( false );
}
+ setCascadeCheckbox();
}
-
+/**
+ * Are all actions protected at the same level?
+ *
+ * @return boolean
+ */
function protectAllMatch() {
var values = new Array();
protectForSelectors(function(set) {
@@ -65,17 +132,22 @@
return true;
}
+/**
+ * Is protection chaining on or off?
+ *
+ * @return bool
+ */
function protectUnchained() {
- var unchain = document.getElementById("mwProtectUnchained");
- if (!unchain) {
- alert("This shouldn't happen");
- return false;
- }
- return unchain.checked;
+ var unchain = document.getElementById( 'mwProtectUnchained' );
+ return unchain
+ ? unchain.checked
+ : true; // No control, so we need to let the user set both levels
}
+/**
+ * Find the highest-protected action and set all others to that level
+ */
function protectChain() {
- // Find the highest-protected action and bump them all to this level
var maxIndex = -1;
protectForSelectors(function(set) {
if (set.selectedIndex > maxIndex) {
@@ -85,6 +157,11 @@
protectUpdateAll(maxIndex);
}
+/**
+ * Protect all actions at the specified level
+ *
+ * @param int index Protection level
+ */
function protectUpdateAll(index) {
protectForSelectors(function(set) {
if (set.selectedIndex != index) {
@@ -93,6 +170,11 @@
});
}
+/**
+ * Apply a callback to each protection selector
+ *
+ * @param callable func Callback function
+ */
function protectForSelectors(func) {
var selectors = protectSelectors();
for (var i = 0; i < selectors.length; i++) {
@@ -100,6 +182,11 @@
}
}
+/**
+ * Get a list of all protection selectors on the page
+ *
+ * @return Array
+ */
function protectSelectors() {
var all = document.getElementsByTagName("select");
var ours = new Array();
@@ -112,6 +199,11 @@
return ours;
}
+/**
+ * Enable/disable protection selectors
+ *
+ * @param boolean val Enable?
+ */
function protectEnable(val) {
// fixme
var first = true;
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/common/shared.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/shared.css (rev 0)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/shared.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -0,0 +1,79 @@
+/**
+ * CSS in this file is used by *all* skins (that have any CSS at all). Be
+ * careful what you put in here, since what looks good in one skin may not in
+ * another, but don't ignore the poor non-Monobook users either.
+ */
+.mw-plusminus-null { color: #aaa; }
+
+.texvc { direction: ltr; unicode-bidi: embed; }
+img.tex { vertical-align: middle; }
+span.texhtml { font-family: serif; }
+
+/* Stop floats from intruding into edit area in previews */
+#toolbar, #wpTextbox1 { clear: both; }
+
+div#mw-js-message {
+ margin: 1em 5%;
+ padding: 0.5em 2.5%;
+ border: solid 1px #ddd;
+ background-color: #fcfcfc;
+}
+
+/* Edit section links */
+.editsection {
+ float: right;
+ margin-left: 5px;
+}
+
+/**
+ * File histories
+ */
+table.filehistory {
+ border:1px solid #ccc;
+ border-collapse:collapse;
+}
+
+table.filehistory th,
+table.filehistory td {
+ padding: 0 0.2em 0 0.2em;
+ vertical-align:top;
+ border:1px solid #ccc;
+}
+table.filehistory th {
+ text-align: left;
+}
+table.filehistory td.mw-imagepage-filesize,
+table.filehistory th.mw-imagepage-filesize {
+ white-space:nowrap;
+}
+
+/*
+ * rev_deleted stuff
+ */
+li span.deleted, span.history-deleted {
+ text-decoration: line-through;
+ color: #888;
+ font-style: italic;
+}
+
+/**
+ * Forms
+ */
+body.ltr td.mw-label { text-align: right; }
+body.ltr td.mw-input { text-align: left; }
+body.ltr td.mw-submit { text-align: left; }
+body.rtl td.mw-label { text-align: left; }
+body.rtl td.mw-input { text-align: right; }
+body.rtl td.mw-submit { text-align: right; }
+
+td.mw-label { vertical-align: top; }
+td.mw-submit { white-space: nowrap; }
+
+/**
+ * Image captions
+ */
+body.rtl .thumbcaption { text-align:right; }
+body.rtl .magnify { float:left; }
+
+body.ltr .thumbcaption { text-align:left; }
+body.ltr .magnify { float:right; }
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/common/sticky.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/sticky.js 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/sticky.js 2008-05-28 18:51:12 UTC (rev 236)
@@ -36,7 +36,7 @@
// emulate css 'position: fixed' in IE5+ Win
// code by aclover at 1value.com
fix_elements = new Array();
-
+
function fix_event(){
var i;
for (i=0; i < fix_elements.length; i++){
@@ -95,7 +95,7 @@
else if(document.all){this.css=document.all[eID].style;}
return this
}
-
+
function checkBrowser(){
this.ver=navigator.appVersion;
this.name=navigator.appName;
@@ -112,13 +112,13 @@
this.standards=document.getElementById?true:false;
this.dhtml=this.standards||this.ie4||this.ns4;
}
-
+
function showMe(eID){
myFloater=new makeLayerObj(eID)
myFloater.css.visibility="visible";
}
-
+
function hideMe(eID){
myFloater=new makeLayerObj(eID)
myFloater.css.visibility="hidden";
- }
\ No newline at end of file
+ }
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/common/upload.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/upload.js 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/upload.js 2008-05-28 18:51:12 UTC (rev 236)
@@ -1,23 +1,176 @@
function licenseSelectorCheck() {
- var selector = document.getElementById("wpLicense");
- if (selector.selectedIndex > 0 &&
- selector.options[selector.selectedIndex].value == "" ) {
- // Browser is broken, doesn't respect disabled attribute on <option>
- selector.selectedIndex = 0;
+ var selector = document.getElementById( "wpLicense" );
+ var selection = selector.options[selector.selectedIndex].value;
+ if( selector.selectedIndex > 0 ) {
+ if( selection == "" ) {
+ // Option disabled, but browser is broken and doesn't respect this
+ selector.selectedIndex = 0;
+ }
}
+ // We might show a preview
+ wgUploadLicenseObj.fetchPreview( selection );
}
function licenseSelectorFixup() {
// for MSIE/Mac; non-breaking spaces cause the <option> not to render
// but, for some reason, setting the text to itself works
var selector = document.getElementById("wpLicense");
- var ua = navigator.userAgent;
- var isMacIe = (ua.indexOf("MSIE") != -1) && (ua.indexOf("Mac") != -1);
- if (isMacIe) {
- for (var i = 0; i < selector.options.length; i++) {
- selector.options[i].text = selector.options[i].text;
+ if (selector) {
+ var ua = navigator.userAgent;
+ var isMacIe = (ua.indexOf("MSIE") != -1) && (ua.indexOf("Mac") != -1);
+ if (isMacIe) {
+ for (var i = 0; i < selector.options.length; i++) {
+ selector.options[i].text = selector.options[i].text;
+ }
}
}
}
-addOnloadHook(licenseSelectorFixup);
+var wgUploadWarningObj = {
+ 'responseCache' : { '' : ' ' },
+ 'nameToCheck' : '',
+ 'typing': false,
+ 'delay': 500, // ms
+ 'timeoutID': false,
+
+ 'keypress': function () {
+ if ( !wgAjaxUploadDestCheck || !sajax_init_object() ) return;
+
+ // Find file to upload
+ var destFile = document.getElementById('wpDestFile');
+ var warningElt = document.getElementById( 'wpDestFile-warning' );
+ if ( !destFile || !warningElt ) return ;
+
+ this.nameToCheck = destFile.value ;
+
+ // Clear timer
+ if ( this.timeoutID ) {
+ window.clearTimeout( this.timeoutID );
+ }
+ // Check response cache
+ for (cached in this.responseCache) {
+ if (this.nameToCheck == cached) {
+ this.setWarning(this.responseCache[this.nameToCheck]);
+ return;
+ }
+ }
+
+ this.timeoutID = window.setTimeout( 'wgUploadWarningObj.timeout()', this.delay );
+ },
+
+ 'checkNow': function (fname) {
+ if ( !wgAjaxUploadDestCheck || !sajax_init_object() ) return;
+ if ( this.timeoutID ) {
+ window.clearTimeout( this.timeoutID );
+ }
+ this.nameToCheck = fname;
+ this.timeout();
+ },
+
+ 'timeout' : function() {
+ if ( !wgAjaxUploadDestCheck || !sajax_init_object() ) return;
+ injectSpinner( document.getElementById( 'wpDestFile' ), 'destcheck' );
+
+ // Get variables into local scope so that they will be preserved for the
+ // anonymous callback. fileName is copied so that multiple overlapping
+ // ajax requests can be supported.
+ var obj = this;
+ var fileName = this.nameToCheck;
+ sajax_do_call( 'UploadForm::ajaxGetExistsWarning', [this.nameToCheck],
+ function (result) {
+ obj.processResult(result, fileName)
+ }
+ );
+ },
+
+ 'processResult' : function (result, fileName) {
+ removeSpinner( 'destcheck' );
+ this.setWarning(result.responseText);
+ this.responseCache[fileName] = result.responseText;
+ },
+
+ 'setWarning' : function (warning) {
+ var warningElt = document.getElementById( 'wpDestFile-warning' );
+ var ackElt = document.getElementById( 'wpDestFileWarningAck' );
+ this.setInnerHTML(warningElt, warning);
+
+ // Set a value in the form indicating that the warning is acknowledged and
+ // doesn't need to be redisplayed post-upload
+ if ( warning == '' || warning == ' ' ) {
+ ackElt.value = '';
+ } else {
+ ackElt.value = '1';
+ }
+ },
+
+ 'setInnerHTML' : function (element, text) {
+ // Check for no change to avoid flicker in IE 7
+ if (element.innerHTML != text) {
+ element.innerHTML = text;
+ }
+ }
+}
+
+function fillDestFilename(id) {
+ if (!document.getElementById) {
+ return;
+ }
+ var path = document.getElementById(id).value;
+ // Find trailing part
+ var slash = path.lastIndexOf('/');
+ var backslash = path.lastIndexOf('\\');
+ var fname;
+ if (slash == -1 && backslash == -1) {
+ fname = path;
+ } else if (slash > backslash) {
+ fname = path.substring(slash+1, 10000);
+ } else {
+ fname = path.substring(backslash+1, 10000);
+ }
+
+ // Capitalise first letter and replace spaces by underscores
+ fname = fname.charAt(0).toUpperCase().concat(fname.substring(1,10000)).replace(/ /g, '_');
+
+ // Output result
+ var destFile = document.getElementById('wpDestFile');
+ if (destFile) {
+ destFile.value = fname;
+ wgUploadWarningObj.checkNow(fname) ;
+ }
+}
+
+var wgUploadLicenseObj = {
+
+ 'responseCache' : { '' : '' },
+
+ 'fetchPreview': function( license ) {
+ if( !wgAjaxLicensePreview || !sajax_init_object() ) return;
+ for (cached in this.responseCache) {
+ if (cached == license) {
+ this.showPreview( this.responseCache[license] );
+ return;
+ }
+ }
+ injectSpinner( document.getElementById( 'wpLicense' ), 'license' );
+ sajax_do_call( 'UploadForm::ajaxGetLicensePreview', [license],
+ function( result ) {
+ wgUploadLicenseObj.processResult( result, license );
+ }
+ );
+ },
+
+ 'processResult' : function( result, license ) {
+ removeSpinner( 'license' );
+ this.showPreview( result.responseText );
+ this.responseCache[license] = result.responseText;
+ },
+
+ 'showPreview' : function( preview ) {
+ var previewPanel = document.getElementById( 'mw-license-preview' );
+ if( previewPanel.innerHTML != preview )
+ previewPanel.innerHTML = preview;
+ }
+
+}
+
+addOnloadHook( licenseSelectorFixup );
\ No newline at end of file
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikibits.js
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikibits.js 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikibits.js 2008-05-28 18:51:12 UTC (rev 236)
@@ -1,70 +1,61 @@
-// Wikipedia JavaScript support functions
+// MediaWiki JavaScript support functions
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
var is_gecko = ((clientPC.indexOf('gecko')!=-1) && (clientPC.indexOf('spoofer')==-1)
&& (clientPC.indexOf('khtml') == -1) && (clientPC.indexOf('netscape/7.0')==-1));
-var is_safari = ((clientPC.indexOf('AppleWebKit')!=-1) && (clientPC.indexOf('spoofer')==-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);
+ var is_opera_95 = (clientPC.search(/opera\/(9.[5-9]|[1-9][0-9])/)!=-1);
}
+// 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);
+ }
}
-hookEvent("load", runOnloadHook);
-
// document.write special stylesheet links
if (typeof stylepath != 'undefined' && typeof skin != 'undefined') {
if (is_opera_preseven) {
document.write('<link rel="stylesheet" type="text/css" href="'+stylepath+'/'+skin+'/Opera6Fixes.css">');
- } else if (is_opera_seven) {
+ } else if (is_opera_seven && !is_opera_95) {
document.write('<link rel="stylesheet" type="text/css" href="'+stylepath+'/'+skin+'/Opera7Fixes.css">');
} else if (is_khtml) {
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) {
var thisLevel = document.getElementById(_levelId);
@@ -81,29 +72,13 @@
}
}
-// 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 (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;
}
@@ -113,78 +88,109 @@
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)
- return;
+ 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";
- return false
+ return false;
}
} 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 = "";
}
}
}
+ 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();
- children = prefform.childNodes;
+ var sections = [];
+ var children = prefform.childNodes;
var seci = 0;
- for (i = 0; i < children.length; i++) {
+ 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';
- legends = children[i].getElementsByTagName('legend');
- sections[seci] = new Object();
+ }
+ var legends = children[i].getElementsByTagName('legend');
+ 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');
@@ -192,8 +198,9 @@
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;
@@ -207,15 +214,15 @@
}
function uncoversection() {
- oldsecid = this.parentNode.parentNode.selectedid;
- newsec = document.getElementById(this.secid);
+ var oldsecid = this.parentNode.parentNode.selectedid;
+ var newsec = document.getElementById(this.secid);
if (oldsecid != this.secid) {
- ul = document.getElementById('preftoc');
+ var ul = document.getElementById('preftoc');
document.getElementById(oldsecid).style.display = 'none';
newsec.style.display = 'block';
ul.selectedid = this.secid;
- lis = ul.getElementsByTagName('li');
- for (i = 0; i< lis.length; i++) {
+ var lis = ul.getElementsByTagName('li');
+ for (var i = 0; i< lis.length; i++) {
lis[i].className = '';
}
this.parentNode.className = 'selected';
@@ -239,9 +246,10 @@
}
function unhidetzbutton() {
- tzb = document.getElementById('guesstimezonebutton')
- if (tzb)
+ var tzb = document.getElementById('guesstimezonebutton');
+ if (tzb) {
tzb.style.display = 'inline';
+ }
}
// in [-]HH:MM format...
@@ -266,9 +274,10 @@
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';
@@ -287,22 +296,24 @@
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);
@@ -315,26 +326,66 @@
}
}
+var mwEditButtons = [];
+var mwCustomEditButtons = []; // eg to add in MediaWiki:Common.js
+
// this function generates the actual toolbar buttons with localized text
// we use it to avoid creating the toolbar where javascript is not enabled
-function addButton(imageFile, speedTip, tagOpen, tagClose, sampleText) {
+function addButton(imageFile, speedTip, tagOpen, tagClose, sampleText, imageId) {
// Don't generate buttons for browsers which don't fully
// support it.
- if (!document.selection && !is_gecko) {
+ mwEditButtons[mwEditButtons.length] =
+ {"imageId": imageId,
+ "imageFile": imageFile,
+ "speedTip": speedTip,
+ "tagOpen": tagOpen,
+ "tagClose": tagClose,
+ "sampleText": sampleText};
+}
+
+// this function generates the actual toolbar buttons with localized text
+// we use it to avoid creating the toolbar where javascript is not enabled
+function mwInsertEditButton(parent, item) {
+ var image = document.createElement("img");
+ image.width = 23;
+ image.height = 22;
+ image.className = "mw-toolbar-editbutton";
+ if (item.imageId) image.id = item.imageId;
+ image.src = item.imageFile;
+ image.border = 0;
+ image.alt = item.speedTip;
+ image.title = item.speedTip;
+ image.style.cursor = "pointer";
+ image.onclick = function() {
+ insertTags(item.tagOpen, item.tagClose, item.sampleText);
return false;
+ };
+
+ parent.appendChild(image);
+ return true;
+}
+
+function mwSetupToolbar() {
+ var toolbar = document.getElementById('toolbar');
+ if (!toolbar) { return false; }
+
+ var textbox = document.getElementById('wpTextbox1');
+ if (!textbox) { return false; }
+
+ // Don't generate buttons for browsers which don't fully
+ // support it.
+ if (!(document.selection && document.selection.createRange)
+ && textbox.selectionStart === null) {
+ return false;
}
- imageFile = escapeQuotesHTML(imageFile);
- speedTip = escapeQuotesHTML(speedTip);
- tagOpen = escapeQuotes(tagOpen);
- tagClose = escapeQuotes(tagClose);
- sampleText = escapeQuotes(sampleText);
- var mouseOver = "";
- document.write("<a href=\"javascript:insertTags");
- document.write("('"+tagOpen+"','"+tagClose+"','"+sampleText+"');\">");
- document.write("<img width=\"23\" height=\"22\" src=\""+imageFile+"\" border=\"0\" alt=\""+speedTip+"\" title=\""+speedTip+"\""+mouseOver+">");
- document.write("</a>");
- return;
+ for (var i = 0; i < mwEditButtons.length; i++) {
+ mwInsertEditButton(toolbar, mwEditButtons[i]);
+ }
+ for (var i = 0; i < mwCustomEditButtons.length; i++) {
+ mwInsertEditButton(toolbar, mwCustomEditButtons[i]);
+ }
+ return true;
}
function escapeQuotes(text) {
@@ -348,89 +399,229 @@
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;
}
// apply tagOpen/tagClose to selection in textarea,
// 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];
}
+ var selText, isSample = false;
- // IE
- if (document.selection && !is_gecko) {
- var theSelection = document.selection.createRange().text;
- if (!theSelection)
- theSelection=sampleText;
+ if (document.selection && document.selection.createRange) { // IE/Opera
+
+ //save window scroll position
+ if (document.documentElement && document.documentElement.scrollTop)
+ var winScroll = document.documentElement.scrollTop
+ else if (document.body)
+ var winScroll = document.body.scrollTop;
+ //get current selection
txtarea.focus();
- if (theSelection.charAt(theSelection.length - 1) == " ") { // exclude ending space char, if any
- theSelection = theSelection.substring(0, theSelection.length - 1);
- document.selection.createRange().text = tagOpen + theSelection + tagClose + " ";
- } else {
- document.selection.createRange().text = tagOpen + theSelection + tagClose;
+ var range = document.selection.createRange();
+ selText = range.text;
+ //insert tags
+ checkSelectedText();
+ range.text = tagOpen + selText + tagClose;
+ //mark sample text as selected
+ if (isSample && range.moveStart) {
+ if (window.opera)
+ tagClose = tagClose.replace(/\n/g,'');
+ range.moveStart('character', - tagClose.length - selText.length);
+ range.moveEnd('character', - tagClose.length);
}
+ range.select();
+ //restore window scroll position
+ if (document.documentElement && document.documentElement.scrollTop)
+ document.documentElement.scrollTop = winScroll
+ else if (document.body)
+ document.body.scrollTop = winScroll;
- // Mozilla
- } else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
- var replaced = false;
+ } else if (txtarea.selectionStart || txtarea.selectionStart == '0') { // Mozilla
+
+ //save textarea scroll position
+ var textScroll = txtarea.scrollTop;
+ //get current selection
+ txtarea.focus();
var startPos = txtarea.selectionStart;
var endPos = txtarea.selectionEnd;
- if (endPos-startPos)
- replaced = true;
- var scrollTop = txtarea.scrollTop;
- var myText = (txtarea.value).substring(startPos, endPos);
- if (!myText)
- myText=sampleText;
- if (myText.charAt(myText.length - 1) == " ") { // exclude ending space char, if any
- subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " ";
- } else {
- subst = tagOpen + myText + tagClose;
- }
- txtarea.value = txtarea.value.substring(0, startPos) + subst +
- txtarea.value.substring(endPos, txtarea.value.length);
- txtarea.focus();
+ selText = txtarea.value.substring(startPos, endPos);
+ //insert tags
+ checkSelectedText();
+ txtarea.value = txtarea.value.substring(0, startPos)
+ + tagOpen + selText + tagClose
+ + txtarea.value.substring(endPos, txtarea.value.length);
//set new selection
- if (replaced) {
- var cPos = startPos+(tagOpen.length+myText.length+tagClose.length);
- txtarea.selectionStart = cPos;
- txtarea.selectionEnd = cPos;
+ if (isSample) {
+ txtarea.selectionStart = startPos + tagOpen.length;
+ txtarea.selectionEnd = startPos + tagOpen.length + selText.length;
} else {
- txtarea.selectionStart = startPos+tagOpen.length;
- txtarea.selectionEnd = startPos+tagOpen.length+myText.length;
+ txtarea.selectionStart = startPos + tagOpen.length + selText.length + tagClose.length;
+ txtarea.selectionEnd = txtarea.selectionStart;
}
- txtarea.scrollTop = scrollTop;
+ //restore textarea scroll position
+ txtarea.scrollTop = textScroll;
+ }
- // All other browsers get no toolbar.
- // There was previously support for a crippled "help"
- // bar, but that caused more problems than it solved.
+ function checkSelectedText(){
+ if (!selText) {
+ selText = sampleText;
+ isSample = true;
+ } else if (selText.charAt(selText.length - 1) == ' ') { //exclude ending space char
+ selText = selText.substring(0, selText.length - 1);
+ tagClose += ' '
+ }
}
- // reposition cursor if possible
- if (txtarea.createTextRange)
- txtarea.caretPos = document.selection.createRange().duplicate();
+
}
-function akeytt() {
- if (typeof ta == "undefined" || !ta)
+
+/**
+ * Set the accesskey prefix based on browser detection.
+ */
+var tooltipAccessKeyPrefix = 'alt-';
+if (is_opera) {
+ tooltipAccessKeyPrefix = 'shift-esc-';
+} else if (is_safari
+ || navigator.userAgent.toLowerCase().indexOf('mac') != -1
+ || navigator.userAgent.toLowerCase().indexOf('konqueror') != -1 ) {
+ tooltipAccessKeyPrefix = 'ctrl-';
+} else if (is_ff2_x11 || is_ff2_win) {
+ tooltipAccessKeyPrefix = 'alt-shift-';
+}
+var tooltipAccessKeyRegexp = /\[(ctrl-)?(alt-)?(shift-)?(esc-)?.\]$/;
+
+/**
+ * Add the appropriate prefix to the accesskey shown in the tooltip.
+ * If the nodeList parameter is given, only those nodes are updated;
+ * otherwise, all the nodes that will probably have accesskeys by
+ * default are updated.
+ *
+ * @param Array nodeList -- list of elements to update
+ */
+function updateTooltipAccessKeys( nodeList ) {
+ if ( !nodeList ) {
+ // skins without a "column-one" element don't seem to have links with accesskeys either
+ var columnOne = document.getElementById("column-one");
+ if ( columnOne )
+ updateTooltipAccessKeys( columnOne.getElementsByTagName("a") );
+ // these are rare enough that no such optimization is needed
+ updateTooltipAccessKeys( document.getElementsByTagName("input") );
+ updateTooltipAccessKeys( document.getElementsByTagName("label") );
return;
- var pref = 'alt-';
- if (is_safari || navigator.userAgent.toLowerCase().indexOf('mac') + 1
- || navigator.userAgent.toLowerCase().indexOf('konqueror') + 1 )
- pref = 'control-';
- if (is_opera)
- pref = 'shift-esc-';
+ }
+ for ( var i = 0; i < nodeList.length; i++ ) {
+ var element = nodeList[i];
+ var tip = element.getAttribute("title");
+ var key = element.getAttribute("accesskey");
+ if ( key && tooltipAccessKeyRegexp.exec(tip) ) {
+ tip = tip.replace(tooltipAccessKeyRegexp,
+ "["+tooltipAccessKeyPrefix+key+"]");
+ element.setAttribute("title", tip );
+ }
+ }
+}
+
+/**
+ * Add a link to one of the portlet menus on the page, including:
+ *
+ * p-cactions: Content actions (shown as tabs above the main content in Monobook)
+ * p-personal: Personal tools (shown at the top right of the page in Monobook)
+ * p-navigation: Navigation
+ * p-tb: Toolbox
+ *
+ * This function exists for the convenience of custom JS authors. All
+ * but the first three parameters are optional, though providing at
+ * least an id and a tooltip is recommended.
+ *
+ * By default the new link will be added to the end of the list. To
+ * add the link before a given existing item, pass the DOM node of
+ * that item (easily obtained with document.getElementById()) as the
+ * nextnode parameter; to add the link _after_ an existing item, pass
+ * the node's nextSibling instead.
+ *
+ * @param String portlet -- id of the target portlet ("p-cactions", "p-personal", "p-navigation" or "p-tb")
+ * @param String href -- link URL
+ * @param String text -- link text (will be automatically lowercased by CSS for p-cactions in Monobook)
+ * @param String id -- id of the new item, should be unique and preferably have the appropriate prefix ("ca-", "pt-", "n-" or "t-")
+ * @param String tooltip -- text to show when hovering over the link, without accesskey suffix
+ * @param String accesskey -- accesskey to activate this link (one character, try to avoid conflicts)
+ * @param Node nextnode -- the DOM node before which the new item should be added, should be another item in the same list
+ *
+ * @return Node -- the DOM node of the new item (an LI element) or null
+ */
+function addPortletLink(portlet, href, text, id, tooltip, accesskey, nextnode) {
+ var node = document.getElementById(portlet);
+ if ( !node ) return null;
+ node = node.getElementsByTagName( "ul" )[0];
+ if ( !node ) return null;
+
+ var link = document.createElement( "a" );
+ link.appendChild( document.createTextNode( text ) );
+ link.href = href;
+
+ var item = document.createElement( "li" );
+ item.appendChild( link );
+ if ( id ) item.id = id;
+
+ if ( accesskey ) {
+ link.setAttribute( "accesskey", accesskey );
+ tooltip += " ["+accesskey+"]";
+ }
+ if ( tooltip ) {
+ link.setAttribute( "title", tooltip );
+ }
+ if ( accesskey && tooltip ) {
+ updateTooltipAccessKeys( new Array( link ) );
+ }
+
+ if ( nextnode && nextnode.parentNode == node )
+ node.insertBefore( item, nextnode );
+ else
+ node.appendChild( item ); // IE compatibility (?)
+
+ return item;
+}
+
+
+/**
+ * Set up accesskeys/tooltips from the deprecated ta array. If doId
+ * is specified, only set up for that id. Note that this function is
+ * deprecated and will not be supported indefinitely -- use
+ * updateTooltipAccessKey() instead.
+ *
+ * @param mixed doId string or null
+ */
+function akeytt( doId ) {
+ // A lot of user scripts (and some of the code below) break if
+ // ta isn't defined, so we make sure it is. Explictly using
+ // window.ta avoids a "ta is not defined" error.
+ if (!window.ta) window.ta = new Array;
+
+ // Make a local, possibly restricted, copy to avoid clobbering
+ // the original.
+ var ta;
+ if ( doId ) {
+ ta = [doId];
+ } else {
+ ta = window.ta;
+ }
+
+ // Now deal with evil deprecated ta
+ var watchCheckboxExists = document.getElementById( 'wpWatchthis' ) ? true : false;
for (var id in ta) {
var n = document.getElementById(id);
if (n) {
@@ -445,10 +636,11 @@
} 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') || !watchCheckboxExists)) {
a.accessKey = ta[id][0];
- ak = ' ['+pref+ta[id][0]+']';
+ ak = ' ['+tooltipAccessKeyPrefix+ta[id][0]+']';
}
} else {
// We don't care what type the object is when assigning tooltip
@@ -465,9 +657,9 @@
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);
}
@@ -480,232 +672,663 @@
var link = el.childNodes[i];
if (link.nodeType == 1 && link.nodeName.toLowerCase() == 'a') {
var editHref = link.getAttribute('href');
+ // 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
- // 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;
- }
+ // 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;
+ };
}
}
}
}
+var checkboxes;
+var lastCheckbox;
+
function setupCheckboxShiftClick() {
- if (document.getElementsByTagName) {
- var uls = document.getElementsByTagName('ul');
- var len = uls.length;
- for (var i = 0; i < len; ++i) {
- addCheckboxClickHandlers(uls[i]);
- }
- }
+ checkboxes = [];
+ lastCheckbox = null;
+ var inputs = document.getElementsByTagName('input');
+ addCheckboxClickHandlers(inputs);
}
-function addCheckboxClickHandlers(ul, start, finish) {
- if (ul.checkboxHandlersTimer) {
- clearInterval(ul.checkboxHandlersTimer);
+function addCheckboxClickHandlers(inputs, start) {
+ if ( !start) start = 0;
+
+ var finish = start + 250;
+ if ( finish > inputs.length )
+ finish = inputs.length;
+
+ for ( var i = start; i < finish; i++ ) {
+ var cb = inputs[i];
+ if ( !cb.type || cb.type.toLowerCase() != 'checkbox' )
+ continue;
+ var end = checkboxes.length;
+ checkboxes[end] = cb;
+ cb.index = end;
+ cb.onclick = checkboxClickHandler;
}
- if ( !ul.childNodes ) {
- return;
+
+ if ( finish < inputs.length ) {
+ setTimeout( function () {
+ addCheckboxClickHandlers(inputs, finish);
+ }, 200 );
}
- var len = ul.childNodes.length;
- if (len < 2) {
- return;
- }
- start = start || 0;
- finish = finish || start + 250;
- if ( finish > len ) { finish = len; }
- ul.checkboxes = ul.checkboxes || [];
- ul.lastCheckbox = ul.lastCheckbox || null;
- for (var i = start; i<finish; ++i) {
- var child = ul.childNodes[i];
- if ( child && child.childNodes && child.childNodes[0] ) {
- var cb = child.childNodes[0];
- if ( !cb.nodeName || cb.nodeName.toLowerCase() != 'input' ||
- !cb.type || cb.type.toLowerCase() != 'checkbox' ) {
- return;
- }
- cb.index = ul.checkboxes.push(cb) - 1;
- cb.container = ul;
- cb.onmouseup = checkboxMouseupHandler;
- }
- }
- if (finish < len) {
- var f=function(){ addCheckboxClickHandlers(ul, finish, finish+250); };
- ul.checkboxHandlersTimer=setInterval(f, 200);
- }
}
-function checkboxMouseupHandler(e) {
+function checkboxClickHandler(e) {
if (typeof e == 'undefined') {
e = window.event;
}
- if ( !e.shiftKey || this.container.lastCheckbox === null ) {
- this.container.lastCheckbox = this.index;
+ if ( !e.shiftKey || lastCheckbox === null ) {
+ lastCheckbox = this.index;
return true;
}
- var endState = !this.checked;
- if ( is_opera ) { // opera has already toggled the checkbox by this point
- endState = !endState;
- }
+ var endState = this.checked;
var start, finish;
- if ( this.index < this.container.lastCheckbox ) {
+ if ( this.index < lastCheckbox ) {
start = this.index + 1;
- finish = this.container.lastCheckbox;
+ finish = lastCheckbox;
} else {
- start = this.container.lastCheckbox;
+ start = lastCheckbox;
finish = this.index - 1;
}
for (var i = start; i <= finish; ++i ) {
- this.container.checkboxes[i].checked = endState;
+ checkboxes[i].checked = endState;
}
- this.container.lastCheckbox = this.index;
+ lastCheckbox = this.index;
return true;
}
-function fillDestFilename() {
- if (!document.getElementById)
+function toggle_element_activation(ida,idb) {
+ if (!document.getElementById) {
return;
- var path = document.getElementById('wpUploadFile').value;
- // Find trailing part
- var slash = path.lastIndexOf('/');
- var backslash = path.lastIndexOf('\\');
- var fname;
- if (slash == -1 && backslash == -1) {
- fname = path;
- } else if (slash > backslash) {
- fname = path.substring(slash+1, 10000);
- } else {
- fname = path.substring(backslash+1, 10000);
}
+ document.getElementById(ida).disabled=true;
+ document.getElementById(idb).disabled=false;
+}
- // Capitalise first letter and replace spaces by underscores
- fname = fname.charAt(0).toUpperCase().concat(fname.substring(1,10000)).replace(/ /g, '_');
+function toggle_element_check(ida,idb) {
+ if (!document.getElementById) {
+ return;
+ }
+ document.getElementById(ida).checked=true;
+ document.getElementById(idb).checked=false;
+}
- // Output result
- var destFile = document.getElementById('wpDestFile');
- if (destFile)
- destFile.value = fname;
+/**
+ * Restore the edit box scroll state following a preview operation,
+ * and set up a form submission handler to remember this state
+ */
+function scrollEditBox() {
+ var editBox = document.getElementById( 'wpTextbox1' );
+ var scrollTop = document.getElementById( 'wpScrolltop' );
+ var editForm = document.getElementById( 'editform' );
+ if( editBox && scrollTop ) {
+ if( scrollTop.value )
+ editBox.scrollTop = scrollTop.value;
+ addHandler( editForm, 'submit', 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 considerChangingExpiryFocus() {
- if (!document.getElementById)
+function allmessagesmodified() {
+ allmessages_modified = !allmessages_modified;
+ allmessagesfilter();
+}
+
+function allmessagesfilter() {
+ if ( allmessages_timeout )
+ window.clearTimeout( allmessages_timeout );
+
+ if ( !allmessages_running )
+ allmessages_timeout = window.setTimeout( 'allmessagesfilter_do();', 500 );
+}
+
+function allmessagesfilter_do() {
+ if ( !allmessages_nodelist )
return;
- var drop = document.getElementById('wpBlockExpiry');
- if (!drop)
+
+ 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 );
+ }
+
+ if ( text != document.getElementById('allmessagesinput').value ||
+ nodef != allmessages_modified )
+ allmessagesfilter_do(); // repeat
+
+ allmessages_running = false;
+}
+
+function allmessagesfilter_init() {
+ if ( allmessages_nodelist )
return;
- var field = document.getElementById('wpBlockOther');
- if (!field)
- return;
- var opt = drop.value;
- if (opt == 'other')
- field.style.display = '';
- else
- field.style.display = 'none';
+
+ 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;
}
-function scrollEditBox() {
- var editBoxEl = document.getElementById("wpTextbox1");
- var scrollTopEl = document.getElementById("wpScrolltop");
- var editFormEl = document.getElementById("editform");
+hookEvent( "load", allmessagesfilter_init );
- if (editBoxEl && scrollTopEl) {
- if (scrollTopEl.value) editBoxEl.scrollTop = scrollTopEl.value;
- editFormEl.onsubmit = function() {
- document.getElementById("wpScrolltop").value = document.getElementById("wpTextbox1").scrollTop;
+/*
+ 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[arrRegExpClassNames.length] =
+ new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)");
}
}
+ else{
+ arrRegExpClassNames[arrRegExpClassNames.length] =
+ 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[arrReturnElements.length] = oElement;
+ }
+ }
+ return (arrReturnElements)
}
-hookEvent("load", scrollEditBox);
+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 allmessagesfilter() {
- text = document.getElementById('allmessagesinput').value;
- k = document.getElementById('allmessagestable');
- if (!k) { return;}
+/*
+ * 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 items = k.getElementsByTagName('span');
+var ts_image_path = stylepath+"/common/images/";
+var ts_image_up = "sort_up.gif";
+var ts_image_down = "sort_down.gif";
+var ts_image_none = "sort_none.gif";
+var ts_europeandate = wgContentLanguage != "en"; // The non-American-inclined can change to "true"
+var ts_alternate_row_colors = true;
+var SORT_COLUMN_INDEX;
- if ( text.length > allmessages_prev.length ) {
- for (var i = items.length-1, j = 0; i >= 0; i--) {
- j = allmessagesforeach(items, i, j);
+function sortables_init() {
+ var idnum = 0;
+ // Find all tables with class sortable and make them sortable
+ var tables = getElementsByClassName(document, "table", "sortable");
+ for (var ti = 0; ti < tables.length ; ti++) {
+ if (!tables[ti].id) {
+ tables[ti].setAttribute('id','sortable_table_id_'+idnum);
+ ++idnum;
}
- } else {
- for (var i = 0, j = 0; i < items.length; i++) {
- j = allmessagesforeach(items, i, j);
+ ts_makeSortable(tables[ti]);
+ }
+}
+
+function ts_makeSortable(table) {
+ var firstRow;
+ if (table.rows && table.rows.length > 0) {
+ if (table.tHead && table.tHead.rows.length > 0) {
+ firstRow = table.tHead.rows[table.tHead.rows.length-1];
+ } else {
+ firstRow = table.rows[0];
}
}
- allmessages_prev = text;
+ 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];
+ if ((" "+cell.className+" ").indexOf(" unsortable ") == -1) {
+ cell.innerHTML += ' <a href="#" class="sortheader" onclick="ts_resortTable(this);return false;"><span class="sortarrow"><img src="'+ ts_image_path + ts_image_none + '" alt="↓"/></span></a>';
+ }
+ }
+ if (ts_alternate_row_colors) {
+ ts_alternate(table);
+ }
}
-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);
- }
+function ts_getInnerText(el) {
+ if (typeof el == "string") return el;
+ if (typeof el == "undefined") { return el };
+ if (el.textContent) return el.textContent; // not needed but it is faster
+ if (el.innerText) return el.innerText; // IE doesn't have textContent
+ 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 = lnk.getElementsByTagName('span')[0];
+
+ var td = lnk.parentNode;
+ var tr = td.parentNode;
+ var column = td.cellIndex;
+
+ var table = tr.parentNode;
+ while (table && !(table.tagName && table.tagName.toLowerCase() == 'table'))
+ table = table.parentNode;
+ if (!table) return;
+
+ // Work out a type for the column
+ if (table.rows.length <= 1) return;
+
+ // Skip the first row if that's where the headings are
+ var rowStart = (table.tHead && table.tHead.rows.length > 0 ? 0 : 1);
+
+ var itm = "";
+ for (var i = rowStart; i < table.rows.length; i++) {
+ if (table.rows[i].cells.length > column) {
+ itm = ts_getInnerText(table.rows[i].cells[column]);
+ itm = itm.replace(/^[\s\xa0]+/, "").replace(/[\s\xa0]+$/, "");
+ if (itm != "") break;
+ }
+ }
+
+ 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(/^[\u00a3$\u20ac]/)) // pound dollar euro
+ sortfn = ts_sort_currency;
+ if (itm.match(/^[\d.,]+\%?$/))
+ sortfn = ts_sort_numeric;
+
+ var reverse = (span.getAttribute("sortdir") == 'down');
+
+ var newRows = new Array();
+ for (var j = rowStart; j < table.rows.length; j++) {
+ var row = table.rows[j];
+ var keyText = ts_getInnerText(row.cells[column]);
+ var oldIndex = (reverse ? -j : j);
+
+ newRows[newRows.length] = new Array(row, keyText, oldIndex);
+ }
+
+ newRows.sort(sortfn);
+
+ var arrowHTML;
+ if (reverse) {
+ arrowHTML = '<img src="'+ ts_image_path + ts_image_down + '" alt="↓"/>';
+ newRows.reverse();
+ span.setAttribute('sortdir','up');
+ } else {
+ arrowHTML = '<img src="'+ ts_image_path + ts_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 (var i = 0; i < newRows.length; i++) {
+ if ((" "+newRows[i][0].className+" ").indexOf(" sortbottom ") == -1)
+ table.tBodies[0].appendChild(newRows[i][0]);
+ }
+ // do sortbottom rows only
+ for (var i = 0; i < newRows.length; i++) {
+ if ((" "+newRows[i][0].className+" ").indexOf(" sortbottom ") != -1)
+ table.tBodies[0].appendChild(newRows[i][0]);
+ }
+
+ // Delete any other arrows there may be showing
+ var spans = getElementsByClassName(tr, "span", "sortarrow");
+ for (var i = 0; i < spans.length; i++) {
+ spans[i].innerHTML = '<img src="'+ ts_image_path + ts_image_none + '" alt="↓"/>';
+ }
+ span.innerHTML = arrowHTML;
+
+ ts_alternate(table);
+}
+
+function ts_dateToSortKey(date) {
+ // y2k notes: two digit years less than 50 are treated as 20XX, greater than 50 are treated as 19XX
+ if (date.length == 11) {
+ switch (date.substr(3,3).toLowerCase()) {
+ 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";
+ }
+ return date.substr(7,4)+month+date.substr(0,2);
+ } else if (date.length == 10) {
+ if (ts_europeandate == false) {
+ return date.substr(6,4)+date.substr(0,2)+date.substr(3,2);
} 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);
- }
+ return date.substr(6,4)+date.substr(3,2)+date.substr(0,2);
}
+ } else if (date.length == 8) {
+ yr = date.substr(6,2);
+ if (parseInt(yr) < 50) {
+ yr = '20'+yr;
+ } else {
+ yr = '19'+yr;
+ }
+ if (ts_europeandate == true) {
+ return yr+date.substr(3,2)+date.substr(0,2);
+ } else {
+ return yr+date.substr(0,2)+date.substr(3,2);
+ }
}
- return j;
+ return "00000000";
}
+function ts_parseFloat(num) {
+ if (!num) return 0;
+ num = parseFloat(num.replace(/,/g, ""));
+ return (isNaN(num) ? 0 : num);
+}
-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 ts_sort_date(a,b) {
+ var aa = ts_dateToSortKey(a[1]);
+ var bb = ts_dateToSortKey(b[1]);
+ return (aa < bb ? -1 : aa > bb ? 1 : a[2] - b[2]);
}
-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);
+function ts_sort_currency(a,b) {
+ var aa = ts_parseFloat(a[1].replace(/[^0-9.]/g,''));
+ var bb = ts_parseFloat(b[1].replace(/[^0-9.]/g,''));
+ return (aa != bb ? aa - bb : a[2] - b[2]);
+}
+
+function ts_sort_numeric(a,b) {
+ var aa = ts_parseFloat(a[1]);
+ var bb = ts_parseFloat(b[1]);
+ return (aa != bb ? aa - bb : a[2] - b[2]);
+}
+
+function ts_sort_caseinsensitive(a,b) {
+ var aa = a[1].toLowerCase();
+ var bb = b[1].toLowerCase();
+ return (aa < bb ? -1 : aa > bb ? 1 : a[2] - b[2]);
+}
+
+function ts_sort_default(a,b) {
+ return (a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : a[2] - b[2]);
+}
+
+function ts_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
+ var oldClasses = tableRows[j].className.split(" ");
+ var newClassName = "";
+ for (var k = 0; k < oldClasses.length; k++) {
+ if (oldClasses[k] != "" && oldClasses[k] != "even" && oldClasses[k] != "odd")
+ newClassName += oldClasses[k] + " ";
}
- } 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);
- }
+ tableRows[j].className = newClassName + (j % 2 == 0 ? "even" : "odd");
}
}
}
-function allmessagesshow() {
- k = document.getElementById('allmessagesfilter');
- if (k) { k.style.display = ''; }
+/*
+ * End of table sorting code
+ */
+
+
+/**
+ * Add a cute little box at the top of the screen to inform the user of
+ * something, replacing any preexisting message.
+ *
+ * @param String message HTML to be put inside the right div
+ * @param String className Used in adding a class; should be different for each
+ * call to allow CSS/JS to hide different boxes. null = no class used.
+ * @return Boolean True on success, false on failure
+ */
+function jsMsg( message, className ) {
+ if ( !document.getElementById ) {
+ return false;
+ }
+ // We special-case skin structures provided by the software. Skins that
+ // choose to abandon or significantly modify our formatting can just define
+ // an mw-js-message div to start with.
+ var messageDiv = document.getElementById( 'mw-js-message' );
+ if ( !messageDiv ) {
+ messageDiv = document.createElement( 'div' );
+ if ( document.getElementById( 'column-content' )
+ && document.getElementById( 'content' ) ) {
+ // MonoBook, presumably
+ document.getElementById( 'content' ).insertBefore(
+ messageDiv,
+ document.getElementById( 'content' ).firstChild
+ );
+ } else if ( document.getElementById('content')
+ && document.getElementById( 'article' ) ) {
+ // Non-Monobook but still recognizable (old-style)
+ document.getElementById( 'article').insertBefore(
+ messageDiv,
+ document.getElementById( 'article' ).firstChild
+ );
+ } else {
+ return false;
+ }
+ }
- allmessages_prev = '';
- allmessages_modified = false;
+ messageDiv.setAttribute( 'id', 'mw-js-message' );
+ if( className ) {
+ messageDiv.setAttribute( 'class', 'mw-js-message-'+className );
+ }
+ messageDiv.innerHTML = message;
+ return true;
}
-hookEvent("load", allmessagesshow);
+/**
+ * Inject a cute little progress spinner after the specified element
+ *
+ * @param element Element to inject after
+ * @param id Identifier string (for use with removeSpinner(), below)
+ */
+function injectSpinner( element, id ) {
+ var spinner = document.createElement( "img" );
+ spinner.id = "mw-spinner-" + id;
+ spinner.src = stylepath + "/common/images/spinner.gif";
+ spinner.alt = spinner.title = "...";
+ if( element.nextSibling ) {
+ element.parentNode.insertBefore( spinner, element.nextSibling );
+ } else {
+ element.parentNode.appendChild( spinner );
+ }
+}
+
+/**
+ * Remove a progress spinner added with injectSpinner()
+ *
+ * @param id Identifier string
+ */
+function removeSpinner( id ) {
+ var spinner = document.getElementById( "mw-spinner-" + id );
+ if( spinner ) {
+ spinner.parentNode.removeChild( spinner );
+ }
+}
+
+function runOnloadHook() {
+ // don't run anything below this for non-dom browsers
+ if (doneOnloadHook || !(document.getElementById && document.getElementsByTagName)) {
+ return;
+ }
+
+ // set this before running any hooks, since any errors below
+ // might cause the function to terminate prematurely
+ doneOnloadHook = true;
+
+ histrowinit();
+ unhidetzbutton();
+ tabbedprefs();
+ updateTooltipAccessKeys( null );
+ akeytt( null );
+ scrollEditBox();
+ setupCheckboxShiftClick();
+ sortables_init();
+
+ // Run any added-on functions
+ for (var i = 0; i < onloadFuncts.length; i++) {
+ onloadFuncts[i]();
+ }
+}
+
+/**
+ * Add an event handler to an element
+ *
+ * @param Element element Element to add handler to
+ * @param String attach Event to attach to
+ * @param callable handler Event handler callback
+ */
+function addHandler( element, attach, handler ) {
+ if( window.addEventListener ) {
+ element.addEventListener( attach, handler, false );
+ } else if( window.attachEvent ) {
+ element.attachEvent( 'on' + attach, handler );
+ }
+}
+
+/**
+ * Add a click event handler to an element
+ *
+ * @param Element element Element to add handler to
+ * @param callable handler Event handler callback
+ */
+function addClickHandler( element, handler ) {
+ addHandler( element, 'click', handler );
+}
+//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);
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikistandard.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikistandard.css 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/common/wikistandard.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -1,5 +1,3 @@
- at 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 @@
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;}
Deleted: trunk/wiki.openmoko.org/space_www_wiki_skins/disabled/HTMLDump.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/disabled/HTMLDump.php 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/disabled/HTMLDump.php 2008-05-28 18:51:12 UTC (rev 236)
@@ -1,228 +0,0 @@
-<?php
-
-/**
- * Default skin for HTML dumps, based on MonoBook.php
- */
-
-if( !defined( 'MEDIAWIKI' ) )
- die( -1 );
-
-/** */
-require_once( 'includes/SkinTemplate.php' );
-
-/**
- * Inherit main code from SkinTemplate, set the CSS and template filter.
- * @todo document
- * @package MediaWiki
- * @subpackage Skins
- */
-class SkinHTMLDump extends SkinTemplate {
- /** Using monobook. */
- function initPage( &$out ) {
- SkinTemplate::initPage( $out );
- $this->template = 'HTMLDumpTemplate';
- }
-
- function buildSidebar() {
- $sections = parent::buildSidebar();
- $badMessages = array( 'recentchanges-url', 'randompage-url' );
- $badUrls = array();
- foreach ( $badMessages as $msg ) {
- $badUrls[] = $this->makeInternalOrExternalUrl( wfMsgForContent( $msg ) );
- }
-
- foreach ( $sections as $heading => $section ) {
- foreach ( $section as $index => $link ) {
- if ( in_array( $link['href'], $badUrls ) ) {
- unset( $sections[$heading][$index] );
- }
- }
- }
- return $sections;
- }
-
- function buildContentActionUrls() {
- global $wgHTMLDump;
-
- $content_actions = array();
- $nskey = $this->getNameSpaceKey();
- $content_actions[$nskey] = $this->tabAction(
- $this->mTitle->getSubjectPage(),
- $nskey,
- !$this->mTitle->isTalkPage() );
-
- $content_actions['talk'] = $this->tabAction(
- $this->mTitle->getTalkPage(),
- 'talk',
- $this->mTitle->isTalkPage(),
- '',
- true);
-
- if ( isset( $wgHTMLDump ) ) {
- $content_actions['current'] = array(
- 'text' => wfMsg( 'currentrev' ),
- 'href' => str_replace( '$1', wfUrlencode( $this->mTitle->getPrefixedDBkey() ),
- $wgHTMLDump->oldArticlePath ),
- 'class' => false
- );
- }
- return $content_actions;
- }
-
- function makeBrokenLinkObj( &$nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
- if ( !isset( $nt ) ) {
- return "<!-- ERROR -->{$prefix}{$text}{$trail}";
- }
-
- if ( $nt->getNamespace() == NS_CATEGORY ) {
- return $this->makeKnownLinkObj( $nt, $text, $query, $trail, $prefix );
- }
-
- if ( $text == '' ) {
- $text = $nt->getPrefixedText();
- }
- return $prefix . $text . $trail;
- }
-}
-
-/**
- * @todo document
- * @package MediaWiki
- * @subpackage Skins
- */
-class HTMLDumpTemplate extends QuickTemplate {
- /**
- * Template filter callback for MonoBook skin.
- * Takes an associative array of data set from a SkinTemplate-based
- * class, and a wrapper for MediaWiki's localization database, and
- * outputs a formatted page.
- *
- * @access private
- */
- function execute() {
- 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') ?>">
- <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">/*<![CDATA[*/ @import "<?php $this->text('stylepath') ?>/htmldump/main.css"; /*]]>*/</style>
- <link rel="stylesheet" type="text/css" media="print" 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]><script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath') ?>/common/IEFixes.js"></script>
- <meta http-equiv="imagetoolbar" content="no" /><![endif]-->
- <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/common/wikibits.js"></script>
- <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/htmldump/md5.js"></script>
- <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/htmldump/utf8.js"></script>
- <script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/htmldump/lookup.js"></script>
- <?php if($this->data['jsvarurl' ]) { ?><script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('jsvarurl' ) ?>"></script><?php } ?>
- <?php if($this->data['pagecss' ]) { ?><style type="text/css"><?php $this->html('pagecss' ) ?></style><?php } ?>
- <?php if($this->data['usercss' ]) { ?><style type="text/css"><?php $this->html('usercss' ) ?></style><?php } ?>
- <?php if($this->data['userjs' ]) { ?><script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('userjs' ) ?>"></script><?php } ?>
- <?php if($this->data['userjsprev']) { ?><script type="<?php $this->text('jsmimetype') ?>"><?php $this->html('userjsprev') ?></script><?php } ?>
- </head>
- <body
- <?php if($this->data['nsclass' ]) { ?>class="<?php $this->text('nsclass') ?>"<?php } ?>>
- <div id="globalWrapper">
- <div id="column-content">
- <div id="content">
- <a name="top" id="contentTop"></a>
- <?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
- <h1 class="firstHeading"><?php $this->text('title') ?></h1>
- <div id="bodyContent">
- <h3 id="siteSub"><?php $this->msg('tagline') ?></h3>
- <div id="contentSub"><?php $this->html('subtitle') ?></div>
- <?php if($this->data['undelete']) { ?><div id="contentSub"><?php $this->html('undelete') ?></div><?php } ?>
- <?php if($this->data['newtalk'] ) { ?><div class="usermessage"><?php $this->html('newtalk') ?></div><?php } ?>
- <!-- start content -->
- <?php $this->html('bodytext') ?>
- <?php if($this->data['catlinks']) { ?><div id="catlinks"><?php $this->html('catlinks') ?></div><?php } ?>
- <!-- end content -->
- <div class="visualClear"></div>
- </div>
- </div>
- </div>
- <div id="column-one">
- <div id="p-cactions" class="portlet">
- <h5>Views</h5>
- <ul>
- <?php foreach($this->data['content_actions'] as $key => $action) {
- ?><li id="ca-<?php echo htmlspecialchars($key) ?>"
- <?php if($action['class']) { ?>class="<?php echo htmlspecialchars($action['class']) ?>"<?php } ?>
- ><a href="<?php echo htmlspecialchars($action['href']) ?>"><?php
- echo htmlspecialchars($action['text']) ?></a></li><?php
- } ?>
- </ul>
- </div>
- <div class="portlet" id="p-logo">
- <a style="background-image: url(<?php $this->text('logopath') ?>);"
- href="<?php echo htmlspecialchars($this->data['nav_urls']['mainpage']['href'])?>"
- title="<?php $this->msg('mainpage') ?>"></a>
- </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) ?>'>
- <h5><?php $this->msg( $bar ) ?></h5>
- <div class='pBody'>
- <ul>
- <?php foreach($cont as $key => $val) { ?>
- <li id="<?php echo htmlspecialchars($val['id']) ?>"><a href="<?php echo htmlspecialchars($val['href']) ?>"><?php echo htmlspecialchars($val['text'])?></a></li>
- <?php } ?>
- </ul>
- </div>
- </div>
- <?php } ?>
- <div id="p-search" class="portlet">
- <h5><label for="searchInput"><?php $this->msg('search') ?></label></h5>
- <div class="pBody">
- <form action="javascript:goToStatic(3)" id="searchform"><div>
- <input id="searchInput" name="search" type="text"
- <?php if($this->haveMsg('accesskey-search')) {
- ?>accesskey="<?php $this->msg('accesskey-search') ?>"<?php }
- if( isset( $this->data['search'] ) ) {
- ?> value="<?php $this->text('search') ?>"<?php } ?> />
- <input type='submit' name="go" class="searchButton" id="searchGoButton"
- value="<?php $this->msg('go') ?>" />
- </div></form>
- </div>
- </div>
- <?php if( $this->data['language_urls'] ) { ?><div id="p-lang" class="portlet">
- <h5><?php $this->msg('otherlanguages') ?></h5>
- <div class="pBody">
- <ul>
- <?php foreach($this->data['language_urls'] as $langlink) { ?>
- <li>
- <a href="<?php echo htmlspecialchars($langlink['href'])
- ?>"><?php echo $langlink['text'] ?></a>
- </li>
- <?php } ?>
- </ul>
- </div>
- </div>
- <?php } ?>
- </div><!-- end of the left (by default at least) column -->
- <div class="visualClear"></div>
- <div id="footer">
- <?php if($this->data['poweredbyico']) { ?><div id="f-poweredbyico"><?php $this->html('poweredbyico') ?></div><?php } ?>
- <?php if($this->data['copyrightico']) { ?><div id="f-copyrightico"><?php $this->html('copyrightico') ?></div><?php } ?>
- <ul id="f-list">
- <?php if($this->data['lastmod' ]) { ?><li id="f-lastmod"><?php $this->html('lastmod') ?></li><?php } ?>
- <?php if($this->data['numberofwatchingusers' ]) { ?><li id="f-numberofwatchingusers"><?php $this->html('numberofwatchingusers') ?></li><?php } ?>
- <?php if($this->data['credits' ]) { ?><li id="f-credits"><?php $this->html('credits') ?></li><?php } ?>
- <?php if($this->data['copyright' ]) { ?><li id="f-copyright"><?php $this->html('copyright') ?></li><?php } ?>
- <?php if($this->data['about' ]) { ?><li id="f-about"><?php $this->html('about') ?></li><?php } ?>
- <?php if($this->data['disclaimer']) { ?><li id="f-disclaimer"><?php $this->html('disclaimer') ?></li><?php } ?>
- <?php if($this->data['tagline']) { ?><li id="f-tagline"><?php echo $this->data['tagline'] ?></li><?php } ?>
- </ul>
- </div>
- </div>
- </body>
-</html>
-<?php
- wfRestoreWarnings();
- }
-}
-?>
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/disabled/MonoBookCBT.php
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/disabled/MonoBookCBT.php 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/disabled/MonoBookCBT.php 2008-05-28 18:51:12 UTC (rev 236)
@@ -10,8 +10,10 @@
/**
* MonoBook clone using the new dependency-tracking template processor.
- * EXPERIMENTAL - use only for testing and profiling at this stage
+ * EXPERIMENTAL - use only for testing and profiling at this stage.
*
+ * See includes/cbt/README for an explanation.
+ *
* The main thing that's missing is cache invalidation, on change of:
* * messages
* * user preferences
@@ -236,9 +238,9 @@
if ( !$wgUseSiteJs ) return '';
if ( $wgUser->isLoggedIn() ) {
- $url = $this->makeUrl('-','action=raw&smaxage=0&gen=js');
+ $url = self::makeUrl( '-','action=raw&smaxage=0&gen=js' );
} else {
- $url = $this->makeUrl('-','action=raw&gen=js');
+ $url = self::makeUrl( '-','action=raw&gen=js' );
}
return cbt_value( $url, 'loggedin' );
}
@@ -258,7 +260,7 @@
global $wgRequest;
$usercss = $this->makeStylesheetCdata( $wgRequest->getText('wpTextbox1') );
} else {
- $usercss = $this->makeStylesheetLink( $this->makeUrl($this->getUserPageText() .
+ $usercss = $this->makeStylesheetLink( self::makeUrl($this->getUserPageText() .
'/'.$this->mStyleName.'.css', 'action=raw&ctype=text/css' ) );
}
@@ -281,9 +283,8 @@
$sitecss .= $this->makeStylesheetLink( $wgStylePath . '/' . $this->mStyleName . '/rtl.css' ) . "\n";
}
- $sitecss .= $this->makeStylesheetLink( $this->makeNSUrl('Common.css', $query, NS_MEDIAWIKI) ) . "\n";
- $sitecss .= $this->makeStylesheetLink( $this->makeNSUrl(
- ucfirst($this->mStyleName) . '.css', $query, NS_MEDIAWIKI) ) . "\n";
+ $sitecss .= $this->makeStylesheetLink( self::makeNSUrl( 'Common.css', $query, NS_MEDIAWIKI ) ) . "\n";
+ $sitecss .= $this->makeStylesheetLink( self::makeNSUrl( ucfirst( $this->mStyleName ) . '.css', $query, NS_MEDIAWIKI ) ) . "\n";
// No deps
return $sitecss;
@@ -306,7 +307,7 @@
$isTemplate = false;
}
- $link = $this->makeStylesheetLink( $this->makeUrl('-','action=raw&gen=css' . $siteargs) ) . "\n";
+ $link = $this->makeStylesheetLink( self::makeUrl('-','action=raw&gen=css' . $siteargs) ) . "\n";
if ( $wgAllowUserCss ) {
$deps = 'loggedin';
@@ -328,7 +329,7 @@
if ( $this->isJsPreview() ) {
$url = '';
} else {
- $url = $this->makeUrl($this->getUserPageText().'/'.$this->mStyleName.'.js', 'action=raw&ctype='.$wgJsMimeType.'&dontcountme=s');
+ $url = self::makeUrl($this->getUserPageText().'/'.$this->mStyleName.'.js', 'action=raw&ctype='.$wgJsMimeType.'&dontcountme=s');
}
return cbt_value( $url, array( 'nonview dynamic', 'user' ) );
}
@@ -498,8 +499,8 @@
}
function is_special() { return cbt_value( $this->mTitle->getNamespace() == NS_SPECIAL, 'title' ); }
- function can_edit() { return cbt_value( (string)($this->mTitle->userCanEdit()), 'dynamic' ); }
- function can_move() { return cbt_value( (string)($this->mTitle->userCanMove()), 'dynamic' ); }
+ function can_edit() { return cbt_value( (string)($this->mTitle->userCan( 'edit' )), 'dynamic' ); }
+ function can_move() { return cbt_value( (string)($this->mTitle->userCan( 'move' )), 'dynamic' ); }
function is_talk() { return cbt_value( (string)($this->mTitle->isTalkPage()), 'title' ); }
function is_protected() { return cbt_value( (string)$this->mTitle->isProtected(), 'dynamic' ); }
function nskey() { return cbt_value( $this->mTitle->getNamespaceKey(), 'title' ); }
@@ -763,7 +764,7 @@
}
function logopath() { return $GLOBALS['wgLogo']; }
- function mainpage() { return $this->makeI18nUrl( 'mainpage' ); }
+ function mainpage() { return self::makeMainPageUrl(); }
function sidebar( $startSection, $endSection, $innerTpl ) {
$s = '';
@@ -798,7 +799,7 @@
$text = $line[1];
if (wfEmptyMsg($line[0], $link))
$link = $line[0];
- $href = $this->makeInternalOrExternalUrl( $link );
+ $href = self::makeInternalOrExternalUrl( $link );
$s .= strtr( $innerTpl,
array(
@@ -909,12 +910,12 @@
} elseif ( $wgUploadNavigationUrl ) {
return $wgUploadNavigationUrl;
} else {
- return $this->makeSpecialUrl('Upload');
+ return self::makeSpecialUrl('Upload');
}
}
function nav_specialpages() {
- return $this->makeSpecialUrl('Specialpages');
+ return self::makeSpecialUrl('Specialpages');
}
function nav_print() {
@@ -1016,10 +1017,10 @@
global $wgPageShowWatchingUsers;
if ( !$wgPageShowWatchingUsers ) return '';
- $dbr =& wfGetDB( DB_SLAVE );
+ $dbr = wfGetDB( DB_SLAVE );
extract( $dbr->tableNames( 'watchlist' ) );
$sql = "SELECT COUNT(*) AS n FROM $watchlist
- WHERE wl_title='" . $dbr->strencode($this->mTitle->getDBKey()) .
+ WHERE wl_title='" . $dbr->strencode($this->mTitle->getDBkey()) .
"' AND wl_namespace=" . $this->mTitle->getNamespace() ;
$res = $dbr->query( $sql, 'SkinTemplate::outputPage');
$row = $dbr->fetchObject( $res );
@@ -1299,7 +1300,7 @@
/** Make a link to a special page using a template */
function makeSpecialTemplateLink( $template, $key, $specialName, $text, $query = '' ) {
- $url = $this->makeSpecialUrl( $specialName, $query );
+ $url = self::makeSpecialUrl( $specialName, $query );
// Ignore the query when comparing
$active = ($this->mTitle->getNamespace() == NS_SPECIAL && $this->mTitle->getDBkey() == $specialName);
return strtr( $template,
@@ -1385,4 +1386,4 @@
return $this->mTalkPage;
}
}
-?>
+
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/audio.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/audio.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/bullet.gif
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/bullet.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/discussionitem_icon.gif
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/discussionitem_icon.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/document.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/document.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/external.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/external.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/file_icon.gif
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/file_icon.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/footer-grad.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/footer-grad.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/link_icon.gif
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/link_icon.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/lock_icon.gif
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/lock_icon.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/mail_icon.gif
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/mail_icon.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/main.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/modern/main.css (rev 0)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/modern/main.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -0,0 +1,1119 @@
+body {
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+ /*font-size: 10pt;*/
+ font-size: x-small;
+
+
+ font-family: sans-serif;
+ color: black;
+ background-color: #f0f0f0;
+}
+
+#mw_main,
+#p-personal,
+#mw_header {
+ font-size: 130%;
+}
+
+#mw_header {
+ position: absolute;
+ top: 0;
+ left: 0;
+ margin: 0 0 0 0;
+ padding: 0 0em 0 0em;
+ border: none;
+ height: 2em;
+ width: 100%;
+
+ background-color: #003366;
+ color: white;
+}
+
+#mw_header h1 {
+ margin: 0 0 0 0.5em;
+ padding: 0 0 0 0;
+ text-decoration: none;
+ font-size: 150%;
+}
+
+#p-personal {
+ position: absolute;
+ top: 2em;
+ left: 0;
+ height: 1.5em;
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+ width: 100%;
+
+}
+
+#p-personal div.pBody {
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+ height: 1.5em;
+ font-variant: small-caps;
+}
+
+#p-personal h5 {
+ display: none;
+}
+
+#p-personal ul {
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+ display: block;
+ height: 1.5em;
+ background-color: #3c78b5;
+}
+
+#p-personal li {
+ display: block; float: left;
+ height: 1.5em;
+ margin: 0 0 0 0;
+ vertical-align: middle;
+
+ font-weight: bold;
+ text-transform: lowercase;
+}
+
+#p-personal li a {
+ text-decoration: none;
+ color: white;
+ padding: 0 1em 0 1em;
+}
+
+#p-personal li a:hover {
+ text-decoration: none;
+ color: white;
+}
+
+#p-personal li:hover {
+ background-color: #003366;
+}
+
+#jump-to-nav {
+ display: none;
+}
+
+#mw_contentwrapper {
+ width: 100%;
+ margin: 0 0 0 -15em;
+ float: right;
+}
+
+#mw_content {
+ margin: 0 0 0 14em;
+
+ background-color: white;
+ border-top: solid 1px #bbbbbb;
+ border-left: solid 1px #bbbbbb;
+ border-bottom: solid 1px #bbbbbb;
+
+ line-height: 1.5em;
+ padding: 0 1em 1em 1em;
+}
+
+#mw_portlets {
+ width: 14em;
+
+ border-right: solid 1px #bbbbbb;
+ background-color: #f0f0f0;
+}
+
+#mw_main {
+ padding: 0 0 0 0;
+ margin: 0 0 0 0;
+ margin-top: 3.5em;
+}
+
+div.mw_clear {
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+ clear: both;
+}
+
+.portlet {
+ padding: 0 0 0 0;
+ margin: 0 0 0 0;
+}
+
+.portlet div.pBody {
+ padding: 1em 0 1em 0;
+}
+
+textarea {
+ width: 100%;
+ padding: .1em;
+}
+
+#searchBody {
+ text-align: center;
+}
+
+#searchInput {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.portlet h5 {
+ padding: 0.1em 0 0.3em 1em;
+ margin: 0 0 0 0;
+ background-color: #dddddd;
+ font-weight: bold;
+ border-bottom: solid 1px #3c78b5;
+ height: 1.1em;
+}
+
+.portlet ul {
+ margin: 0 0 0 1.5em;
+ padding: 0 0 0 0;
+}
+
+#mw_portlets .portlet ul {
+ line-height: 1.4em;
+}
+
+ul {
+ list-style-image: url(bullet.gif);
+}
+
+#p-cactions {
+ height: 1.5em;
+ padding: 0 0 0 0;
+ margin: 0 0 0 14em;
+}
+
+#p-cactions div.pBody {
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+}
+
+#p-cactions a,
+#p-cactions a:hover {
+ color: black;
+ text-decoration: none;
+}
+
+#p-cactions ul {
+ display: inline;
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+}
+
+#p-cactions li {
+ margin: 0 0.5em 0 0.5em;
+ padding: 0 0.2em 0 0.2em;
+ display: block;
+ float: left;
+ height: 1.5em;
+ text-transform: lowercase;
+}
+
+#p-cactions li.selected {
+ background-color: #bbbbbb;
+}
+
+#p-cactions li a,
+#p-cactions li a:hover,
+#p-cactions li a:visited {
+ text-decoration: underline;
+ color: #003366;
+}
+
+#p-cactions li.selected a,
+#p-cactions li.selected a:hover,
+#p-cactions li.selected a:visited {
+ text-decoration: none;
+ color: white;
+}
+
+#p-cactions h5 {
+ display: none;
+}
+
+#siteSub {
+ display: none;
+}
+
+#footer {
+ background-color: #f0f0f0;
+ background: url(footer-grad.png) repeat-x 0 0;
+ padding: 10px 1em 1em 1em;
+ clear:both;
+ color: #444444;
+}
+
+#footer a,
+#footer a:hover,
+#footer a:visited {
+ color: #444444;
+ text-decoration: underline;
+}
+
+img {
+ border: none;
+}
+
+#footer li {
+ display: inline;
+ list-style-type: none;
+ padding: 0 0 0 0;
+ margin: 0 0 0 0;
+}
+
+#footer ul {
+ padding: 0 0 0 0;
+ margin: 0 0 0 0;
+}
+
+div.printfooter {
+ display: none;
+}
+
+p {
+ margin: 1em 0 1em 0;
+}
+
+#contentSub {
+ color: #888;
+ font-size: small;
+ padding-left: 2em;
+}
+
+#mw_portlets form {
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+}
+
+a {
+ text-decoration: none;
+ color: #003366;
+ background: none;
+}
+a:visited {
+ color: #5a3696;
+}
+a:active {
+ color: #faa700;
+}
+a:hover {
+ text-decoration: underline;
+}
+a.stub {
+ color: #772233;
+}
+a.new {
+ color: #ba0000;
+}
+a.new:visited {
+ color: #a55858;
+}
+
+span.editsection {
+ font-size: small;
+}
+
+h1, h2 {
+ border-bottom: solid 1px #003366;
+}
+
+#preftoc {
+ width: 100%;
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+ height: 1.5em;
+ clear: right;
+}
+
+#preftoc li {
+ margin: 0 0.5em 0 0.5em;
+ padding: 0 0.2em 0 0.2em;
+ display: block;
+ float: left;
+ height: 1.5em;
+ text-transform: lowercase;
+}
+
+#preferences {
+ margin: 0 0 0 0;
+ padding: 0em 1em 1em 1em;
+ border: solid 1px #bbbbbb;
+}
+
+#preferences fieldset {
+ margin-top: 0;
+ border: none;
+}
+
+#preferences h2 {
+}
+
+.mainLegend {
+ display: none;
+}
+
+#preftoc li.selected {
+ background-color: #bbbbbb;
+}
+
+#preftoc li a,
+#preftoc li a:hover,
+#preftoc li a:visited {
+ text-decoration: underline;
+ color: #003366;
+}
+
+#preftoc li.selected a,
+#preftoc li.selected a:hover,
+#preftoc li.selected a:visited {
+ text-decoration: none;
+ color: white;
+}
+
+#mw_content a.external,
+#mw_content a[href ^="gopher://"] {
+ background: url(external.png) center right no-repeat;
+ padding-right: 13px;
+}
+#mw_content a[href ^="https://"],
+.link-https {
+ background: url(lock_icon.gif) center right no-repeat;
+ padding-right: 16px;
+}
+#mw_content a[href ^="mailto:"],
+.link-mailto {
+ background: url(mail_icon.gif) center right no-repeat;
+ padding-right: 18px;
+}
+#mw_content a[href ^="news://"] {
+ background: url(news_icon.png) center right no-repeat;
+ padding-right: 18px;
+}
+#mw_content a[href ^="ftp://"],
+.link-ftp {
+ background: url(file_icon.gif) center right no-repeat;
+ padding-right: 18px;
+}
+#mw_content a[href ^="irc://"],
+.link-irc {
+ background: url(discussionitem_icon.gif) center right no-repeat;
+ padding-right: 18px;
+}
+
+#mw_content a.external[href $=".ogg"], #mw_content a.external[href $=".OGG"],
+#mw_content a.external[href $=".mid"], #mw_content a.external[href $=".MID"],
+#mw_content a.external[href $=".midi"], #mw_content a.external[href $=".MIDI"],
+#mw_content a.external[href $=".mp3"], #mw_content a.external[href $=".MP3"],
+#mw_content a.external[href $=".wav"], #mw_content a.external[href $=".WAV"],
+#mw_content a.external[href $=".wma"], #mw_content a.external[href $=".WMA"],
+.link-audio {
+ background: url("audio.png") center right no-repeat;
+ padding-right: 13px;
+}
+#mw_content a.external[href $=".ogm"], #mw_content a.external[href $=".OGM"],
+#mw_content a.external[href $=".avi"], #mw_content a.external[href $=".AVI"],
+#mw_content a.external[href $=".mpeg"], #mw_content a.external[href $=".MPEG"],
+#mw_content a.external[href $=".mpg"], #mw_content a.external[href $=".MPG"],
+.link-video {
+ background: url("video.png") center right no-repeat;
+ padding-right: 13px;
+}
+#mw_content a.external[href $=".pdf"], #mw_content a.external[href $=".PDF"],
+#mw_content a.external[href *=".pdf#"], #mw_content a.external[href *=".PDF#"],
+#mw_content a.external[href *=".pdf?"], #mw_content a.external[href *=".PDF?"],
+.link-document {
+ background: url("document.png") center right no-repeat;
+ padding-right: 12px;
+}
+
+/* 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;
+}
+img.thumbborder {
+ border: 1px solid #dddddd;
+}
+.hiddenStructure {
+ display: none;
+}
+
+#mw_content .plainlinks a {
+ background: none !important;
+ padding: 0 !important;
+}
+
+.mw-warning {
+ border: 1px solid #aaa;
+ background-color: #f9f9f9;
+ padding: 5px;
+ font-size: 95%;
+}
+
+#toc,
+.toc {
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+ border-spacing: 0;
+ background-color: #f0f0f0;
+ border: solid 1px #bbbbbb;
+}
+
+#toc tr, #toc td {
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+}
+
+#toctitle {
+ border-bottom: solid 1px #3c78b5;
+ background-color: #dddddd;
+ margin: 0 0 0 0;
+}
+
+#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: 0 1em 0 1em;
+ 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;
+}
+
+#catlinks {
+ border: solid 1px #bbbbbb;
+ background-color: #f0f0f0;
+ padding: 0.5em 0.5em 0.5em 0.5em;
+ margin: 0 0 0 0;
+}
+
+#catlinks p {
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+}
+
+#mw_header h1,
+#p-personal,
+#p-cactions {
+ overflow: hidden;
+}
+
+.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;
+}
+
+/* disable interwiki styling */
+#mw_content a.extiw,
+#mw_content a.extiw:active {
+ color: #36b;
+ background: none;
+ padding: 0;
+}
+#mw_content a.external {
+ color: #36b;
+}
+
+
+
+.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;
+}
+
+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;
+}
+/* Keep this temporarily so that cached pages will display right */
+table.gallery td.galleryheader {
+ text-align: center;
+ font-weight: bold;
+}
+table.gallery caption {
+ font-weight: bold;
+}
+
+div.gallerybox {
+ margin: 2px;
+}
+
+div.gallerybox div.thumb {
+ text-align: center;
+ border: 1px solid #ccc;
+ margin: 2px;
+}
+
+div.gallerytext {
+ overflow: hidden;
+ 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;
+}
+
+.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#searchTargetHide {
+ float:right;
+ border:solid 1px black;
+ background:gainsboro;
+ padding:2px;
+}
+
+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, table#sv-software {
+ margin: 1em;
+ padding:0em;
+}
+
+#sv-ext td, #sv-hooks td, #sv-software td,
+#sv-ext th, #sv-hooks th, #sv-software th {
+ border: 1px solid #A0A0A0;
+ padding: 0 0.15em 0 0.15em;
+}
+#sv-ext th, #sv-hooks th, #sv-software 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: 1px solid #aaaaaa;
+ 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;
+}
+
+/* Convenience links on Special:Ipblocklist */
+p.mw-ipb-conveniencelinks {
+ font-size: 90%;
+ float: right;
+}
+
+/* Friendlier slave lag warnings */
+div.mw-lag-warn-normal,
+div.mw-lag-warn-high {
+ padding: 3px;
+ text-align: center;
+ margin: 3px auto;
+}
+div.mw-lag-warn-normal {
+ border: 1px solid #FFCC66;
+ background-color: #FFFFCC;
+}
+div.mw-lag-warn-high {
+ font-weight: bold;
+ border: 2px solid #FF0033;
+ background-color: #FFCCCC;
+}
+
+/* Recreating-deleted-page/reupload file warning and log entries */
+div#mw-upload-deleted-warn,
+div#mw-recreate-deleted-warn {
+ padding: 3px;
+ margin-bottom: 3px;
+ border: 2px solid #2F6FAB;
+}
+div#mw-upload-deleted-warn ul li,
+div#mw-recreate-deleted-warn ul li {
+ font-size: 90%;
+}
+.MediaTransformError {
+ background-color: #ccc;
+ padding: 0.1em;
+}
+.MediaTransformError td {
+ text-align: center;
+ vertical-align: middle;
+ font-size: 90%;
+}
+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;
+}
+
+#p-cactions li.new a {
+ color: #cc2200;
+}
+
+pre {
+ border: solid 1px #3c78b5;
+ padding: 0.4em;
+ background-color: #f0f0f0;
+}
+
+.usermessage {
+ background-color: #dadaff;
+}
+
+.mw-topboxes {
+ border-collapse: collapse;
+ margin: 0 -1em 1em -1em;
+ padding: 0 0 8px 0;
+ background: url(footer-grad.png) repeat-x bottom left;
+}
+
+.mw-topbox p {
+ padding: 0 0 0 0;
+ margin: 0 0 0 0;
+}
+
+.mw-topbox {
+ color: black;
+ font-weight: bold;
+ margin: 0 0 0 0;
+ padding: 0 1em 0 1em;
+ vertical-align: middle;
+ border-collapse: collapse;
+ border-bottom: solid 1px #bbbbbb;
+}
+
+#siteSub {
+ background-color: #dddddd;
+}
+
+/* emulate center */
+.center {
+ width:100%;
+ text-align:center;
+}
+*.center * {
+ margin-left:auto;
+ margin-right:auto;
+}
+
+/* table standards */
+.toccolours {
+ border:1px solid #bbbbbb;
+ background-color:#f0f0f0;
+ border-spacing:0pt;
+ margin:0pt;
+ padding:0pt;
+}
+
+
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/news_icon.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/news_icon.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/print.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/modern/print.css (rev 0)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/modern/print.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -0,0 +1,9 @@
+#mw_portlets,
+#p-cactions,
+#p-personal,
+#jump-to-nav,
+#footer,
+span.editsection
+{
+ display: none;
+}
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/rtl.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/modern/rtl.css (rev 0)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/modern/rtl.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -0,0 +1,142 @@
+body {
+ direction: rtl;
+ unicode-bidi: embed;
+}
+
+.editsection {
+ float: left;
+ margin-right: 5px;
+ margin-left: 0; /* bug 9122: undo default LTR */
+}
+
+/* Fix alignment */
+.documentByLine,
+.portletDetails,
+.portletMore {
+ text-align: left;
+}
+
+div div.thumbcaption {
+ text-align: right;
+}
+
+div.magnify,
+#div.townBox {
+ left: auto;
+ right: 0;
+}
+
+/* Fix margins for non-css2 browsers */
+/* top right bottom left */
+
+dd {
+ margin-left: 0;
+ margin-right: 1.6em;
+}
+.tocindent {
+ margin-left: 0;
+ margin-right: 2em;
+}
+div.tright, div.floatright, table.floatright {
+ clear: none;
+}
+div.tleft, div.floatleft, table.floatleft {
+ clear: left;
+}
+div.townBox {
+ margin-left: 0;
+ margin-right: 1em;
+}
+div.townBox dl dd {
+ margin-left: 0;
+ margin-right: 1.1em;
+}
+
+/* Fix link icons */
+.external {
+ padding: 0 !important;
+ background: none !important;
+}
+
+/* js pref toc */
+
+#preftoc {
+ margin-right: 1em;
+}
+
+.errorbox, .successbox, #preftoc li, .prefsection fieldset {
+ float: right;
+}
+
+.prefsection {
+ padding-right: 2em;
+}
+
+/* workaround for moz bug, displayed bullets on left side */
+
+#toc ul {
+ text-align: right;
+}
+
+#toc ul ul {
+ margin: 0 2em 0 0;
+}
+
+input#wpSave, input#wpDiff {
+ margin-right: 0;
+ margin-left: .33em;
+}
+
+#userlogin {
+ float: right;
+ margin: 0 0 1em 3em;
+}
+/* Unblock and Ipblocklist links of Special:Blockip */
+p.mw-ipb-conveniencelinks {
+ float: left;
+}
+
+.toggle {
+ margin-left: 0em;
+ margin-right: 2em;
+}
+table.filehistory th {
+ text-align: right;
+}
+
+#mw_contentwrapper {
+ margin: 0 -15em 0 0;
+ float: left;
+}
+
+#mw_content {
+ margin: 0 14em 0 0;
+ border-left: none;
+ border-right: solid 1px #bbbbbb;
+}
+
+.portlet ul {
+ margin: 0 1.5em 0 0;
+ padding: 0 0 0 0;
+}
+
+.portlet h5 {
+ padding: 0.1em 1em 0.3em 0;
+}
+
+#p-cactions li {
+ float: right;
+}
+
+#p-personal li {
+ float: right;
+}
+
+#p-cactions {
+ margin: 0 14em 0 0;
+}
+
+#mw_portlets {
+ border-right: none;
+ border-left: solid 1px #bbbbbb;
+}
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/video.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/modern/video.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE60Fixes.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE60Fixes.css 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE60Fixes.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -80,5 +80,8 @@
div.tleft {
position: relative;
}
-/*{ border:1px solid Red !important;}*/
+/* bug 12846 */
+body.rtl #preftoc a, body.rtl #preftoc a:active {
+ float: left;
+}
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE70Fixes.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE70Fixes.css 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/IE70Fixes.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -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;
}
@@ -67,3 +66,9 @@
position: relative;
}
*/
+
+
+#footer li {
+ /* Work around bug with inline <li> tags with right margins and nowrap */
+ margin-right: 0;
+}
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/KHTMLFixes.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/KHTMLFixes.css 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/KHTMLFixes.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -1,3 +1,4 @@
/* KHTML fix stylesheet */
/* work around the horizontal scrollbars */
#column-content { margin-left: 0; }
+
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/audio.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/audio.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/document.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/document.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/main.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/main.css 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/main.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -18,17 +18,19 @@
#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 {
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 */
/* Font size:
@@ -59,9 +61,11 @@
/* general styles */
table {
- background: white;
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;
@@ -117,15 +121,21 @@
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; }
ul {
line-height: 1.5em;
@@ -164,7 +174,6 @@
line-height: 1.5em;
}
legend {
- background: white;
padding: .5em;
font-size: 95%;
}
@@ -221,7 +230,6 @@
#siteSub {
display: none;
}
-
#jump-to-nav {
display: none;
}
@@ -400,6 +408,7 @@
div.floatright p { font-style: italic; }
div.floatleft, table.floatleft {
float: left;
+ clear: left;
position: relative;
margin: 0 .5em .5em 0;
border: 0;
@@ -417,7 +426,7 @@
border-color: white;
width: auto;
}
-div.thumb div {
+div.thumbinner {
border: 1px solid #ccc;
padding: 3px !important;
background-color: #f9f9f9;
@@ -425,14 +434,15 @@
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;
@@ -451,20 +461,16 @@
}
div.tleft {
float: left;
+ clear: left;
margin-right: .5em;
border-width: .5em 1.4em .8em 0;
}
-
+img.thumbborder {
+ border: 1px solid #dddddd;
+}
.hiddenStructure {
display: none;
- speak: none;
}
-img.tex {
- vertical-align: middle;
-}
-span.texhtml {
- font-family: serif;
-}
/*
** classes for special content elements like town boxes
@@ -543,29 +549,6 @@
}
/*
-** 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
*/
@@ -598,6 +581,32 @@
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 {
@@ -687,10 +696,10 @@
*/
#p-logo {
- z-index: 3;
- position: absolute; /*needed to use z-index */
top: 0;
left: 0;
+ position: absolute; /*needed to use z-index */
+ z-index: 3;
height: 155px;
width: 12em;
overflow: visible;
@@ -709,30 +718,6 @@
}
/*
-** the navigation portlet
-*/
-
-#p-navigation {
- position: relative;
- z-index: 3;
-}
-
-#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;
-}
-
-
-/*
** Search portlet
*/
#p-search {
@@ -761,31 +746,31 @@
/*
** the personal toolbar
*/
-
#p-personal {
+ position: absolute;
+ left: 0;
+ top: 0;
+ z-index: 0;
+}
+#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 {
+ z-index: 0;
padding: 0;
margin: 0;
border: none;
- z-index: 0;
overflow: visible;
background: none;
}
@@ -797,7 +782,6 @@
padding: 0 2em 0 3em;
margin: 0;
text-align: right;
- text-transform: lowercase;
list-style: none;
z-index: 0;
background: none;
@@ -813,9 +797,6 @@
line-height: 1.2em;
background: none;
}
-#p-personal li.active {
- font-weight: bold;
-}
#p-personal li a {
text-decoration: none;
color: #005896;
@@ -839,7 +820,12 @@
padding-left: 20px;
text-transform: none;
}
-
+#p-personal ul {
+ text-transform: lowercase;
+}
+#p-personal li.active {
+ font-weight: bold;
+}
/*
** the page-related actions- page/talk, edit etc
*/
@@ -858,9 +844,6 @@
list-style: none;
font-size: 95%;
}
-#p-cactions .hiddenStructure {
- display: none;
-}
#p-cactions ul {
list-style: none;
}
@@ -883,16 +866,15 @@
color: #002bb8;
border: none;
padding: 0 .8em .3em;
- text-decoration: none;
- text-transform: lowercase;
position: relative;
z-index: 0;
margin: 0;
+ text-decoration: none;
}
#p-cactions li.selected a {
z-index: 3;
- background-color: #fff;
padding: 0 1em .2em!important;
+ background-color: white;
}
#p-cactions .new a {
color: #ba0000;
@@ -900,7 +882,7 @@
#p-cactions li a:hover {
z-index: 3;
text-decoration: none;
- background-color: #fff;
+ background-color: white;
}
#p-cactions h5 {
display: none;
@@ -922,6 +904,20 @@
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 li a {
+ text-transform: lowercase;
+}
/*
** the remaining portlets
@@ -954,8 +950,6 @@
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;
@@ -978,11 +972,13 @@
clear: both;
}
#preftoc li {
+ background-color: #f0f0f0;
+ color: #000;
+}
+#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;
@@ -1048,11 +1044,9 @@
display: none;
}
div.prefsectiontip {
- font-size: 95%;
- margin-top: 0;
- background-color: #FFC1C1;
- padding: .2em .7em;
- clear: both;
+ font-size: x-small;
+ padding: .2em 2em;
+ color: #666;
}
.btnSavePrefs {
font-weight: bold;
@@ -1090,19 +1084,19 @@
padding-top: 0;
}
-div#userlogin .captcha {
+div#userlogin .captcha,
+div#userloginForm .captcha {
border: 1px solid #bbb;
padding: 1.5em 2em;
- width: 400px;
background-color: white;
}
-#userloginprompt {
+#userloginprompt, #languagelinks {
font-size: 85%;
}
-#login-emailforlost {
+#login-sectiontip {
font-size: 85%;
line-height: 1.2;
padding-top: 2em;
@@ -1173,10 +1167,11 @@
background-color: #ffa;
}
div.patrollink {
+ clear: both;
font-size: 75%;
text-align: right;
}
-span.newpage, span.minor, span.searchmatch {
+span.newpage, span.minor, span.searchmatch, span.bot {
font-weight: bold;
}
span.unpatrolled {
@@ -1195,15 +1190,6 @@
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;
@@ -1221,10 +1207,17 @@
background-color: #f9f9f9;
border: solid 2px white;
}
+/* Keep this temporarily so that cached pages will display right */
+table.gallery td.galleryheader {
+ text-align: center;
+ font-weight: bold;
+}
+table.gallery caption {
+ font-weight: bold;
+}
div.gallerybox {
margin: 2px;
- width: 150px;
}
div.gallerybox div.thumb {
@@ -1234,6 +1227,7 @@
}
div.gallerytext {
+ overflow: hidden;
font-size: 94%;
padding: 2px 4px;
}
@@ -1273,12 +1267,6 @@
color: gray;
}
-li span.deleted, span.history-deleted {
- text-decoration: line-through;
- color: #888;
- font-style: italic;
-}
-
.toggle {
margin-left: 2em;
text-indent: -2em;
@@ -1347,6 +1335,10 @@
padding-right: 2em;
}
+input#wpSummary {
+ width: 80%;
+}
+
/* @bug 1714 */
input#wpSave, input#wpDiff {
margin-right: 0.33em;
@@ -1441,3 +1433,127 @@
content: "\00BB \0020";
}
+div#searchTargetHide {
+ float:right;
+ border:solid 1px black;
+ background:gainsboro;
+ padding:2px;
+}
+
+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, table#sv-software {
+ margin: 1em;
+ padding:0em;
+}
+
+#sv-ext td, #sv-hooks td, #sv-software td,
+#sv-ext th, #sv-hooks th, #sv-software th {
+ border: 1px solid #A0A0A0;
+ padding: 0 0.15em 0 0.15em;
+}
+#sv-ext th, #sv-hooks th, #sv-software 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: 1px solid #aaaaaa;
+ 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;
+}
+
+/* Convenience links on Special:Ipblocklist */
+p.mw-ipb-conveniencelinks {
+ font-size: 90%;
+ float: right;
+}
+
+/* Friendlier slave lag warnings */
+div.mw-lag-warn-normal,
+div.mw-lag-warn-high {
+ padding: 3px;
+ text-align: center;
+ margin: 3px auto;
+}
+div.mw-lag-warn-normal {
+ border: 1px solid #FFCC66;
+ background-color: #FFFFCC;
+}
+div.mw-lag-warn-high {
+ font-weight: bold;
+ border: 2px solid #FF0033;
+ background-color: #FFCCCC;
+}
+
+/* Recreating-deleted-page/reupload file warning and log entries */
+div#mw-upload-deleted-warn,
+div#mw-recreate-deleted-warn {
+ padding: 3px;
+ margin-bottom: 3px;
+ border: 2px solid #2F6FAB;
+}
+div#mw-upload-deleted-warn ul li,
+div#mw-recreate-deleted-warn ul li {
+ font-size: 90%;
+}
+.MediaTransformError {
+ background-color: #ccc;
+ padding: 0.1em;
+}
+.MediaTransformError td {
+ text-align: center;
+ vertical-align: middle;
+ font-size: 90%;
+}
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/rtl.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/rtl.css 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/rtl.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -41,6 +41,11 @@
float: right;
clear: right;
}
+.editsection {
+ float: left;
+ margin-right: 5px;
+ margin-left: 0; /* bug 9122: undo default LTR */
+}
/* recover IEMac (might be fine with the float, but usually it's close to IE */
*>body .portlet {
float: none;
@@ -210,3 +215,24 @@
float: right;
margin: 0 0 1em 3em;
}
+/* Unblock and Ipblocklist links of Special:Blockip */
+p.mw-ipb-conveniencelinks {
+ float: left;
+}
+
+.toggle {
+ margin-left: 0em;
+ margin-right: 2em;
+}
+table.filehistory th {
+ text-align: right;
+}
+
+/**
+ * Lists:
+ * The following lines don't have a visible effect on non-Gecko browsers
+ * They fix a problem ith Gecko browsers rendering lists to the right of
+ * left-floated objects in an RTL layout.
+ */
+html>body.rtl #bodyContent ul { display:table; }
+html>body.rtl #bodyContent ol { display:table; }
\ No newline at end of file
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/user.gif
===================================================================
(Binary files differ)
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/video.png
===================================================================
(Binary files differ)
Property changes on: trunk/wiki.openmoko.org/space_www_wiki_skins/monobook/video.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/IE60Fixes.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/IE60Fixes.css 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/IE60Fixes.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -7,20 +7,19 @@
height: 1%;
}
#column-content #content {
- margin-left: 14.2em;
- margin-top: 1.1em;
+ margin-left: 12.2em;
+ margin-top: 3em;
height: 1%;
}
#column-one {
position: absolute;
top: 0;
- left: 1.4em;
+ left: 0;
z-index: 4;
- padding-top: 160px;
}
#footer {
- margin-left: 15.7em;
-/* border-left: 1px solid #fabd23;*/
+ margin-left: 13.6em;
+ border-left: 1px solid #fabd23;
}
/* the tabs */
@@ -39,19 +38,17 @@
#p-cactions li a {
display: inline-block !important;
vertical-align: top;
- padding-bottom: 0.17em;
-/* border: solid #aaa;*/
-/* border-width: 1px 1px 0;*/
+ padding-bottom: 0;
+ border: solid #aaa;
+ border-width: 1px 1px 0;
}
#p-cactions li.selected a {
border-color: #fabd23;
padding-bottom: 0.17em;
- top: 1px;
}
#p-cactions li a:hover {
padding-bottom: 0.17em;
}
-
#p-navigation a {
display: inline-block;
width: 100%;
@@ -83,33 +80,8 @@
div.tleft {
position: relative;
}
-/*{ border:1px solid Red !important;}*/
-#p-logo {
-/* top: 1.4em;*/
- left: 0em;
- display: none;
+/* bug 12846 */
+body.rtl #preftoc a, body.rtl #preftoc a:active {
+ float: left;
}
-
-#p-logo a {
-}
-
-.portlet ul {
- margin-left: 2em;
-}
-
-.portlet a {
- margin-left: -5px;
-}
-
-
-#p-navigation {
- margin-top: 0;
-}
-
-#p-navigation,
-#p-search,
-#p-tb {
- position: relative;
- top: -4.85em;
-}
\ No newline at end of file
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/IE70Fixes.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/IE70Fixes.css 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/IE70Fixes.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -4,8 +4,8 @@
/* This bit is needed to make links clickable... WTF */
#column-content #content {
- margin-left: 14.2em;
- margin-top: 1.1em;
+ margin-left: 12.2em;
+ margin-top: 3em;
height: 1%;
}
@@ -18,30 +18,13 @@
margin-top: 160px;
}
-#column-one {
- position: absolute;
- top: 90px;
-}
-
-#p-logo {
- left: 0em;
-}
-
/* the tabs */
#p-cactions {
z-index: 3;
- top: -1.2em;
}
-#p-personal {
- position: relative;
- top: -12em;
- float: right;
- padding-right:15px;
-}
-
#p-cactions li {
padding-bottom: 0 !important;
border: none;
@@ -53,9 +36,9 @@
#p-cactions li a {
display: inline-block !important;
vertical-align: top;
- padding-bottom: 0.17em;
- /*border: solid #aaa;
- border-width: 1px 1px 0;*/
+ padding-bottom: 0;
+ border: solid #aaa;
+ border-width: 1px 1px 0;
}
#p-cactions li.selected a {
border-color: #fabd23;
@@ -85,11 +68,6 @@
*/
-#footer {
- margin-left: 15.8em;
- padding-top: 2.7em;
-}
-
#footer li {
/* Work around bug with inline <li> tags with right margins and nowrap */
margin-right: 0;
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/KHTMLFixes.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/KHTMLFixes.css 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/KHTMLFixes.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -1,3 +1,4 @@
/* KHTML fix stylesheet */
/* work around the horizontal scrollbars */
#column-content { margin-left: 0; }
+
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/main.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/main.css 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/main.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -9,35 +9,24 @@
** All you guys rock :)
*/
-/**
- * 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 {
- border-top: 1px solid #E1E1E1;
- margin: 1.0em 0 0 14.2em;
- padding: 0.63em 2em 1.5em 2em;
- position: relative;
- z-index: 2;
- font-size: 1.1em;
- }
- #column-one {
- padding-top: 5.20em;
- }
-/* } */
+#column-content {
+ width: 100%;
+ float: right;
+ margin: 0 0 .6em -12.2em;
+ padding: 0;
+}
#content {
+ border-top: 1px solid #E1E1E1;
+ margin: 1.0em 0 0 14.2em;
+ padding: 0.63em 2em 1.5em 2em;
+ position: relative;
+ z-index: 2;
+ font-size: 1.1em;
+}
+#column-one {
+ padding-top: 5.20em;
+}
+#content {
background: white;
color: #333;
/* border: 1px solid #aaa; */
@@ -114,12 +103,10 @@
border: none;
vertical-align: middle;
}
-/* @media screen, projection { */
- p {
- margin: .4em 0 .5em 0;
- line-height: 1.5em;
- }
-/* } */
+p {
+ margin: .4em 0 .5em 0;
+ line-height: 1.5em;
+}
p img {
margin: 0;
}
@@ -253,14 +240,12 @@
** the main content area
*/
-/* @media screen, projection { */
- #siteSub {
- display: none;
- }
- #jump-to-nav {
- display: none;
- }
-/* } */
+#siteSub {
+ display: none;
+}
+#jump-to-nav {
+ display: none;
+}
#contentSub, #contentSub2 {
font-size: 84%;
@@ -493,7 +478,9 @@
margin-right: .5em;
border-width: .5em 1.4em .8em 0;
}
-
+img.thumbborder {
+ border: 1px solid #dddddd;
+}
.hiddenStructure {
display: none;
speak: none;
@@ -755,47 +742,44 @@
** Logo properties
*/
-/* @media screen, projection { */
- #p-logo {
- top: 26px;
- left: 18px;
- position: absolute; /*needed to use z-index */
- z-index: 3;
- height: 40px;
- width: 12em;
- overflow: visible;
- display: none;
- }
- #p-logo h5 {
- display: none;
- }
- #p-logo a,
- #p-logo a:hover {
- display: block;
- height: 40px;
- width: 12.2em;
- background-repeat: no-repeat;
- background-position: 35% 50% !important;
- text-decoration: none;
- }
-/* } */
+#p-logo {
+ top: 26px;
+ left: 18px;
+ position: absolute; /*needed to use z-index */
+ z-index: 3;
+ height: 40px;
+ width: 12em;
+ overflow: visible;
+ display: none;
+}
+#p-logo h5 {
+ display: none;
+}
+#p-logo a,
+#p-logo a:hover {
+ display: block;
+ height: 40px;
+ width: 12.2em;
+ background-repeat: no-repeat;
+ background-position: 35% 50% !important;
+ text-decoration: none;
+}
+
/*
** the navigation portlet
*/
-/* @media screen, projection { */
- #p-navigation {
- position: relative;
- z-index: 3;
- margin-top: -5em;
- }
- #p-navigation a {
- display: block;
- }
- #p-navigation li.active a, #p-navigation li.active a:hover {
- display: inline;
- }
-/* } */
+#p-navigation {
+ position: relative;
+ z-index: 3;
+ margin-top: -5em;
+}
+#p-navigation a {
+ display: block;
+}
+#p-navigation li.active a, #p-navigation li.active a:hover {
+ display: inline;
+}
#p-navigation .pBody {
padding-right: 0;
@@ -810,12 +794,10 @@
/*
** Search portlet
*/
-/* @media screen, projection { */
- #p-search {
- position: relative;
- z-index: 3;
- }
-/* } */
+#p-search {
+ position: relative;
+ z-index: 3;
+}
input.searchButton {
margin-top: 1px;
font-size: 95%;
@@ -838,83 +820,81 @@
/*
** the personal toolbar
*/
-/* @media screen, projection { */
- #p-personal {
- position: absolute;
- left: 0;
- top: 5px;
- 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;
- }
+#p-personal {
+ position: absolute;
+ left: 0;
+ top: 5px;
+ 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: #333;
- 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: #333;
- 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: #333;
+ 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: #333;
+ 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 {
text-transform: lowercase;
}
#p-personal li.active {
@@ -923,95 +903,93 @@
/*
** the page-related actions- page/talk, edit etc
*/
-/* @media screen, projection { */
- #p-cactions {
- position: absolute;
- top: 6.2em;
- left: 16.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: 1.0em;
- }
- #p-cactions ul {
- list-style: none;
- }
- #p-cactions li {
- border: none;
- display: inline;
- /*border: 1px solid #aaa;*/
- border-bottom: none;
- padding: 0 0 .0em 0;
- margin: 0 .0em 0 0;
- overflow: visible;
- }
- #p-cactions li.selected {
- /*border-color: #fabd23;*/
-/* padding: 0 0 .2em 0;*/
- font-weight: bold;
- background: white;
- }
- #p-cactions li a {
- background-color: #f1f1f1;
- color: #333;
- border: none;
- padding: .2em 0.98em .4em;
- position: relative;
- top: 1px;
- z-index: 0;
- margin: 0;
- text-decoration: none;
- }
- #p-cactions li.selected a {
- top: 0px;
- z-index: 3;
-/* padding: 0 1em .2em!important;*/
- background-color: #ddd !important;
- color: #333;
- }
- #p-cactions .new a {
- color: #FF3300;
- }
- #p-cactions li a:hover {
- z-index: 3;
- text-decoration: none;
- background-color: #ddd;
- }
- #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 {
+ position: absolute;
+ top: 6.2em;
+ left: 16.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: 1.0em;
+}
+#p-cactions ul {
+ list-style: none;
+}
+#p-cactions li {
+ display: inline;
+ border: none;
+ /*border: 1px solid #aaa;*/
+ border-bottom: none;
+ padding: 0 0 .0em 0;
+ margin: 0 .0em 0 0;
+ overflow: visible;
+}
+#p-cactions li.selected {
+ /*border-color: #fabd23;*/
+/* padding: 0 0 .2em 0;*/
+ font-weight: bold;
+ background: white;
+}
+#p-cactions li a {
+ background-color: #f1f1f1;
+ color: #333;
+ border: none;
+ padding: .2em 0.98em .4em;
+ position: relative;
+ top: 1px;
+ z-index: 0;
+ margin: 0;
+ text-decoration: none;
+}
+#p-cactions li.selected a {
+ top: 0px;
+ z-index: 3;
+/* padding: 0 1em .2em!important;*/
+ background-color: #ddd !important;
+ color: #333;
+}
+#p-cactions .new a {
+ color: #FF3300;
+}
+#p-cactions li a:hover {
+ z-index: 3;
+ text-decoration: none;
+ background-color: #ddd;
+}
+#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;
}
@@ -1022,13 +1000,11 @@
/*
** the remaining portlets
*/
-/* @media screen, projection { */
- #p-tbx,
- #p-lang {
- position: relative;
- z-index: 3;
- }
-/* } */
+#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
@@ -1081,21 +1057,19 @@
background-color: #f0f0f0;
color: #000;
}
-/* @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 {
+ 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;
@@ -1148,11 +1122,9 @@
.prefsection table, .prefsection legend {
background-color: #F9F9F9;
}
-/* @media screen, projection { */
- .mainLegend {
- display: none;
- }
-/* } */
+.mainLegend {
+ display: none;
+}
div.prefsectiontip {
font-size: 95%;
margin-top: 0;
@@ -1196,7 +1168,8 @@
padding-top: 0;
}
-div#userlogin .captcha {
+div#userlogin .captcha,
+div#userloginForm .captcha {
border: 1px solid #bbb;
padding: 1.5em 2em;
width: 400px;
@@ -1222,29 +1195,27 @@
font-weight: bold;
}
-/* @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;
- }
-/* } */
+/*
+** 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 */
@@ -1329,11 +1300,14 @@
background-color: #f9f9f9;
border: solid 2px white;
}
-
+/* Keep this temporarily so that cached pages will display right */
table.gallery td.galleryheader {
- text-align: center;
+ text-align: center;
font-weight: bold;
}
+table.gallery caption {
+ font-weight: bold;
+}
div.gallerybox {
margin: 2px;
@@ -1558,6 +1532,13 @@
content: "\00BB \0020";
}
+div#searchTargetHide {
+ float:right;
+ border:solid 1px black;
+ background:gainsboro;
+ padding:2px;
+}
+
div.multipageimagenavbox {
border: solid 1px silver;
padding: 4px;
@@ -1582,17 +1563,17 @@
/** Special:Version */
-table#sv-ext, table#sv-hooks {
+table#sv-ext, table#sv-hooks, table#sv-software {
margin: 1em;
padding:0em;
}
-#sv-ext td, #sv-hooks td,
-#sv-ext th, #sv-hooks th {
+#sv-ext td, #sv-hooks td, #sv-software td,
+#sv-ext th, #sv-hooks th, #sv-software th {
border: 1px solid #A0A0A0;
padding: 0 0.15em 0 0.15em;
}
-#sv-ext th, #sv-hooks th {
+#sv-ext th, #sv-hooks th, #sv-software th {
background-color: #F0F0F0;
color: black;
padding: 0 0.15em 0 0.15em;
@@ -1631,6 +1612,51 @@
.mw-summary-preview {
margin: 0.1em 0;
}
+
+/* Convenience links on Special:Ipblocklist */
+p.mw-ipb-conveniencelinks {
+ font-size: 90%;
+ float: right;
+}
+
+/* Friendlier slave lag warnings */
+div.mw-lag-warn-normal,
+div.mw-lag-warn-high {
+ padding: 3px;
+ text-align: center;
+ margin: 3px auto;
+}
+div.mw-lag-warn-normal {
+ border: 1px solid #FFCC66;
+ background-color: #FFFFCC;
+}
+div.mw-lag-warn-high {
+ font-weight: bold;
+ border: 2px solid #FF0033;
+ background-color: #FFCCCC;
+}
+
+/* Recreating-deleted-page/reupload file warning and log entries */
+div#mw-upload-deleted-warn,
+div#mw-recreate-deleted-warn {
+ padding: 3px;
+ margin-bottom: 3px;
+ border: 2px solid #2F6FAB;
+}
+div#mw-upload-deleted-warn ul li,
+div#mw-recreate-deleted-warn ul li {
+ font-size: 90%;
+}
+.MediaTransformError {
+ background-color: #ccc;
+ padding: 0.1em;
+}
+.MediaTransformError td {
+ text-align: center;
+ vertical-align: middle;
+ font-size: 90%;
+}
+
#toolbar { clear: both; }
.mw-plusminus-null { color: #aaa; }
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/rtl.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/rtl.css 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/rtl.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -44,6 +44,7 @@
.editsection {
float: left;
margin-right: 5px;
+ margin-left: 0; /* bug 9122: undo default LTR */
}
/* recover IEMac (might be fine with the float, but usually it's close to IE */
*>body .portlet {
@@ -214,3 +215,24 @@
float: right;
margin: 0 0 1em 3em;
}
+/* Unblock and Ipblocklist links of Special:Blockip */
+p.mw-ipb-conveniencelinks {
+ float: left;
+}
+
+.toggle {
+ margin-left: 0em;
+ margin-right: 2em;
+}
+table.filehistory th {
+ text-align: right;
+}
+
+/**
+ * Lists:
+ * The following lines don't have a visible effect on non-Gecko browsers
+ * They fix a problem ith Gecko browsers rendering lists to the right of
+ * left-floated objects in an RTL layout.
+ */
+html>body.rtl #bodyContent ul { display:table; }
+html>body.rtl #bodyContent ol { display:table; }
\ No newline at end of file
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/openmoko/user.gif
===================================================================
(Binary files differ)
Modified: trunk/wiki.openmoko.org/space_www_wiki_skins/simple/main.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/simple/main.css 2008-05-27 04:56:05 UTC (rev 235)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/simple/main.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -1,3 +1,26 @@
+/* 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;
+}
+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;
}
@@ -176,19 +199,11 @@
width: 100%;
}
-#p-personal li, #p-personal ul,
-#p-tb li, #p-tb ul,
-#p-navigation li, #p-navigation ul,
-#p-cactions li, #p-cactions ul,
-#p-newlinks li, #p-newlinks ul {
- padding-left: 0em;
- margin-left: 0.5em;
+.pBody li, .pBody ul {
+ padding-left: 0em;
+ margin-left: 0.5em;
}
-#p-cactions li, #p-cactions ul {
- margin-left: 0.7em;
-}
-
pre {
margin: 2em;
border: solid 1px black;
@@ -242,7 +257,7 @@
background-color: #f8ffaa;
}
-span.diffchange { background-color: #FFCDF3; }
+.diffchange { background-color: #FFCDF3; text-decoration: none; }
.autocomment { color: grey; }
#pagehistory span.user {
margin-left: 1.4em;
@@ -276,6 +291,7 @@
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,9 +331,13 @@
}
div.tleft {
float: left;
+ clear: left;
margin-right:0.5em;
border-width: 0.5em 1.4em 0.8em 0;
}
+img.thumbborder {
+ border: 1px solid #dddddd;
+}
a.stub { color: #772233; }
a.new,
@@ -402,3 +422,20 @@
table.collapsed tr.collapsable {
display: none;
}
+
+.editsection {
+ float: right;
+ margin-left: 5px;
+}
+
+.templatesUsed { margin-top: 1.5em; }
+
+/* Recreating-deleted-page/reupload file warning and log entries */
+div#mw-upload-deleted-warn ul li,
+div#mw-recreate-deleted-warn ul li {
+ font-size: 95%;
+}
+div.mw-recreate-deleted-control {
+ float: right;
+ font-size: 90%;
+}
Added: trunk/wiki.openmoko.org/space_www_wiki_skins/simple/rtl.css
===================================================================
--- trunk/wiki.openmoko.org/space_www_wiki_skins/simple/rtl.css (rev 0)
+++ trunk/wiki.openmoko.org/space_www_wiki_skins/simple/rtl.css 2008-05-28 18:51:12 UTC (rev 236)
@@ -0,0 +1,175 @@
+/*
+Right-to-left fixes for MonoBook.
+Places sidebar on right, tweaks various alignment issues.
+
+Works mostly ok nicely on Safari 1.2.1; fine in Mozilla.
+
+Safari bugs (1.2.1):
+* Tabs are still appearing in left-to-right order. (Try after localizing)
+
+Opera bugs (7.23 linux):
+* Some bits of ltr text (sidebar box titles) have forward and backward versions overlapping each other
+
+IE/mac bugs:
+* The thing barfs on Hebrew and Arabic anyway, so no point testing.
+
+Missing features due to lack of support:
+* external link icons
+
+To test:
+* Opera6
+* IE 5.0
+* etc
+
+*/
+body {
+ direction: rtl;
+/* unicode-bidi: bidi-override;*/
+ unicode-bidi: embed;
+}
+#column-content {
+ margin: 0 -12.2em 0 0;
+ float: left;
+}
+#column-content #content{
+ margin-left: 0;
+ margin-right: 12.2em;
+ border-right: 1px solid #aaaaaa;
+ border-left: none;
+}
+html>body .portlet {
+ float: right;
+ clear: right;
+}
+.editsection {
+ float: left;
+ margin-right: 5px;
+ margin-left: 0; /* bug 9122: undo default LTR */
+}
+/* recover IEMac (might be fine with the float, but usually it's close to IE */
+*>body .portlet {
+ float: none;
+ clear: none;
+}
+.pBody {
+ padding: 0 0.5em 0.3em 0.8em;
+}
+
+/* Fix alignment */
+.documentByLine,
+.portletDetails,
+.portletMore {
+ text-align: left;
+}
+
+div div.thumbcaption {
+ text-align: right;
+}
+
+div.magnify,
+#div.townBox,
+#p-logo {
+ left: auto;
+ right: 0;
+}
+
+/* Fix margins for non-css2 browsers */
+/* top right bottom left */
+
+dd {
+ margin-left: 0;
+ margin-right: 1.6em;
+}
+#contentSub {
+ margin-right: 1em;
+ margin-left: 0;
+}
+.tocindent {
+ margin-left: 0;
+ margin-right: 2em;
+}
+div.tright, div.floatright, table.floatright {
+ clear: none;
+}
+div.tleft, div.floatleft, table.floatleft {
+ clear: left;
+}
+div.townBox {
+ margin-left: 0;
+ margin-right: 1em;
+}
+div.townBox dl dd {
+ margin-left: 0;
+ margin-right: 1.1em;
+}
+
+/* Fix link icons */
+.external {
+ padding: 0 !important;
+ background: none !important;
+}
+#footer {
+ clear: both;
+}
+* html #footer {
+ margin-left: 0;
+ margin-right: 13.6em;
+ border-left: 0;
+ border-right: 1px solid #fabd23;
+}
+* html #column-content {
+ float: none;
+ margin-left: 0;
+ margin-right: 0;
+}
+* html #column-content #content {
+ margin-left: 0;
+ margin-top: 3em;
+}
+* html #column-one { right: 0; }
+
+/* js pref toc */
+
+#preftoc {
+ margin-right: 1em;
+}
+
+.errorbox, .successbox, #preftoc li, .prefsection fieldset {
+ float: right;
+}
+
+.prefsection {
+ padding-right: 2em;
+}
+
+/* workaround for moz bug, displayed bullets on left side */
+
+#toc ul {
+ text-align: right;
+}
+
+#toc ul ul {
+ margin: 0 2em 0 0;
+}
+
+input#wpSave, input#wpDiff {
+ margin-right: 0;
+ margin-left: .33em;
+}
+
+#userlogin {
+ float: right;
+ margin: 0 0 1em 3em;
+}
+/* Unblock and Ipblocklist links of Special:Blockip */
+p.mw-ipb-conveniencelinks {
+ float: left;
+}
+
+.toggle {
+ margin-left: 0em;
+ margin-right: 2em;
+}
+table.filehistory th {
+ text-align: right;
+}
More information about the webdesign-commitlog
mailing list