summaryrefslogtreecommitdiff
path: root/skins/vector
diff options
context:
space:
mode:
authorPierre Schmitz <pierre@archlinux.de>2011-06-22 11:28:20 +0200
committerPierre Schmitz <pierre@archlinux.de>2011-06-22 11:28:20 +0200
commit9db190c7e736ec8d063187d4241b59feaf7dc2d1 (patch)
tree46d1a0dee7febef5c2d57a9f7b972be16a163b3d /skins/vector
parent78677c7bbdcc9739f6c10c75935898a20e1acd9e (diff)
update to MediaWiki 1.17.0
Diffstat (limited to 'skins/vector')
-rw-r--r--skins/vector/Makefile18
-rw-r--r--skins/vector/csshover.htc144
-rw-r--r--skins/vector/csshover.min.htc12
-rw-r--r--skins/vector/cssjanus/COPYING13
-rw-r--r--skins/vector/cssjanus/LICENSE202
-rw-r--r--skins/vector/cssjanus/README91
-rw-r--r--skins/vector/cssjanus/cssjanus.py574
-rw-r--r--skins/vector/cssjanus/csslex.py114
-rw-r--r--skins/vector/experiments/babaco-colors-a.css109
-rw-r--r--skins/vector/experiments/babaco-colors-b.css67
-rw-r--r--skins/vector/experiments/babaco-colors-c.css91
-rw-r--r--skins/vector/experiments/images/new-border.pngbin124 -> 0 bytes
-rw-r--r--skins/vector/experiments/images/new-portal-break-ltr.pngbin891 -> 0 bytes
-rw-r--r--skins/vector/experiments/images/new-portal-break-rtl.pngbin891 -> 0 bytes
-rw-r--r--skins/vector/experiments/images/page-base-fade.pngbin306 -> 0 bytes
-rw-r--r--skins/vector/experiments/images/page-base-updated.pngbin124 -> 0 bytes
-rw-r--r--skins/vector/experiments/images/tab-active-first.pngbin981 -> 0 bytes
-rw-r--r--skins/vector/experiments/images/tab-active-last.pngbin980 -> 0 bytes
-rw-r--r--skins/vector/experiments/images/tab-fade.pngbin226 -> 0 bytes
-rw-r--r--skins/vector/experiments/images/tab-first.pngbin1057 -> 0 bytes
-rw-r--r--skins/vector/experiments/images/tab-last.pngbin1057 -> 0 bytes
-rw-r--r--skins/vector/experiments/images/tab-new-fade.pngbin216 -> 0 bytes
-rw-r--r--skins/vector/experiments/new-tabs.css322
-rw-r--r--skins/vector/images/arrow-down-icon.pngbin181 -> 188 bytes
-rw-r--r--skins/vector/images/audio-icon.pngbin345 -> 240 bytes
-rw-r--r--skins/vector/images/border.pngbin119 -> 118 bytes
-rw-r--r--skins/vector/images/bullet-icon.pngbin152 -> 137 bytes
-rw-r--r--skins/vector/images/document-icon.pngbin345 -> 172 bytes
-rw-r--r--skins/vector/images/edit-icon.pngbin358 -> 314 bytes
-rw-r--r--skins/vector/images/external-link-ltr-icon.pngbin279 -> 180 bytes
-rw-r--r--skins/vector/images/external-link-rtl-icon.pngbin277 -> 178 bytes
-rw-r--r--skins/vector/images/file-icon.pngbin402 -> 170 bytes
-rw-r--r--skins/vector/images/link-icon.pngbin429 -> 406 bytes
-rw-r--r--skins/vector/images/lock-icon.pngbin370 -> 227 bytes
-rw-r--r--skins/vector/images/mail-icon.pngbin375 -> 245 bytes
-rw-r--r--skins/vector/images/news-icon.pngbin359 -> 217 bytes
-rw-r--r--skins/vector/images/page-base.pngbin119 -> 114 bytes
-rw-r--r--skins/vector/images/page-fade.pngbin253 -> 152 bytes
-rw-r--r--skins/vector/images/portal-break-ltr.pngbin287 -> 206 bytes
-rw-r--r--skins/vector/images/portal-break-rtl.pngbin280 -> 198 bytes
-rw-r--r--skins/vector/images/portal-break.pngbin242 -> 135 bytes
-rw-r--r--skins/vector/images/preferences-base.pngbin119 -> 114 bytes
-rw-r--r--skins/vector/images/preferences-edge.pngbin119 -> 114 bytes
-rw-r--r--skins/vector/images/preferences-fade.pngbin248 -> 126 bytes
-rw-r--r--skins/vector/images/search-fade.pngbin185 -> 132 bytes
-rw-r--r--skins/vector/images/tab-break.pngbin263 -> 162 bytes
-rw-r--r--skins/vector/images/tab-current-fade.pngbin121 -> 115 bytes
-rw-r--r--skins/vector/images/tab-normal-fade.pngbin254 -> 154 bytes
-rw-r--r--skins/vector/images/talk-icon.pngbin377 -> 210 bytes
-rw-r--r--skins/vector/images/user-icon.pngbin345 -> 308 bytes
-rw-r--r--skins/vector/images/video-icon.pngbin395 -> 200 bytes
-rw-r--r--skins/vector/images/watch-icons.pngbin1745 -> 1745 bytes
-rw-r--r--skins/vector/main-rtl.css1128
-rw-r--r--skins/vector/screen.css (renamed from skins/vector/main-ltr.css)425
-rw-r--r--skins/vector/wiki-indexed.pngbin8205 -> 0 bytes
-rw-r--r--skins/vector/wiki.pngbin22987 -> 0 bytes
56 files changed, 345 insertions, 2965 deletions
diff --git a/skins/vector/Makefile b/skins/vector/Makefile
deleted file mode 100644
index 74e36c45..00000000
--- a/skins/vector/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Handy makefile to build the RTL variant with cssjanus
-#
-
-all: main-rtl.css
-
-main-rtl.css: main-ltr.css cssjanus/cssjanus.py
- python cssjanus/cssjanus.py --swap_ltr_rtl_in_url < main-ltr.css > main-rtl.css
-
-# SVN version is broken; checking in our own.
-#cssjanus/cssjanus.py:
-# svn co http://cssjanus.googlecode.com/svn/trunk cssjanus
-
-#distclean: clean
-# rm -rf cssjanus
-
-clean:
- rm -f main-rtl.css
diff --git a/skins/vector/csshover.htc b/skins/vector/csshover.htc
index a88fa08d..a13ea68d 100644
--- a/skins/vector/csshover.htc
+++ b/skins/vector/csshover.htc
@@ -1,12 +1,14 @@
<public:attach event="ondocumentready" onevent="CSSHover()" />
<script>
-// <![CDATA[
/**
- * Whatever:hover - V3.00.081222
+ * Whatever:hover - V3.11
* ------------------------------------------------------------
* Author - Peter Nederlof, http://www.xs4all.nl/~peterned
* License - http://creativecommons.org/licenses/LGPL/2.1
*
+ * Special thanks to Sergiu Dumitriu, http://purl.org/net/sergiu,
+ * for fixing the expression loop.
+ *
* Whatever:hover is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
@@ -24,16 +26,31 @@
window.CSSHover = (function(){
// regular expressions, used and explained later on.
- var REG_INTERACTIVE = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active|focus))/i,
- REG_AFFECTED = /(.*?)\:(hover|active|focus)/i,
- REG_PSEUDO = /[^:]+:([a-z-]+).*/i,
- REG_SELECT = /(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi,
- REG_CLASS = /\.([a-z0-9_-]*on(hover|active|focus))/i,
- REG_MSIE = /msie (5|6|7)/i,
- REG_COMPAT = /backcompat/i;
+ var REG_INTERACTIVE = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active|focus))/i;
+ var REG_AFFECTED = /(.*?)\:(hover|active|focus)/i;
+ var REG_PSEUDO = /[^:]+:([a-z\-]+).*/i;
+ var REG_SELECT = /(\.([a-z0-9_\-]+):[a-z]+)|(:[a-z]+)/gi;
+ var REG_CLASS = /\.([a-z0-9_\-]*on(hover|active|focus))/i;
+ var REG_MSIE = /msie (5|6|7)/i;
+ var REG_COMPAT = /backcompat/i;
+
+ // property mapping, real css properties must be used in order to clear expressions later on...
+ // Uses obscure css properties that no-one is likely to use. The properties are borrowed to
+ // set an expression, and are then restored to the most likely correct value.
+ var Properties = {
+ index: 0,
+ list: ['text-kashida', 'text-kashida-space', 'text-justify'],
+ get: function() {
+ return this.list[(this.index++)%this.list.length];
+ }
+ };
- // css prefix, a leading dash would be nice (spec), but IE6 doesn't like that.
- var CSSHOVER_PREFIX = 'csh-';
+ // camelize is used to convert css properties from (eg) text-kashida to textKashida
+ var camelize = function(str) {
+ return str.replace(/-(.)/mg, function(result, match){
+ return match.toUpperCase();
+ });
+ };
/**
* Local CSSHover object
@@ -52,7 +69,9 @@ window.CSSHover = (function(){
init:function() {
// don't run in IE8 standards; expressions don't work in standards mode anyway,
// and the stuff we're trying to fix should already work properly
- if(!REG_MSIE.test(navigator.userAgent) && !REG_COMPAT.test(window.document.compatMode)) return;
+ if(!REG_MSIE.test(navigator.userAgent) && !REG_COMPAT.test(window.document.compatMode)) {
+ return;
+ }
// start parsing the existing stylesheets
var sheets = window.document.styleSheets, l = sheets.length;
@@ -66,26 +85,25 @@ window.CSSHover = (function(){
// check sheet imports and parse those recursively
if(sheet.imports) {
try {
- var imports = sheet.imports, l = imports.length;
+ var imports = sheet.imports;
+ var l = imports.length;
for(var i=0; i<l; i++) {
this.parseStylesheet(sheet.imports[i]);
}
} catch(securityException){
- // trycatch for various possible errors,
- // todo; might need to be placed inside the for loop, since an error
- // on an import stops following imports from being processed.
+ // trycatch for various possible errors
}
}
// interate the sheet's rules and send them to the parser
try {
- var rules = sheet.rules, l = rules.length;
- for(var j=0; j<l; j++) {
+ var rules = sheet.rules;
+ var r = rules.length;
+ for(var j=0; j<r; j++) {
this.parseCSSRule(rules[j], sheet);
}
- } catch(securityException){
- // trycatch for various errors, most likely accessing the sheet's rules,
- // don't see how individual rules would throw errors, but you never know.
+ } catch(someException){
+ // trycatch for various errors, most likely accessing the sheet's rules.
}
},
@@ -98,39 +116,40 @@ window.CSSHover = (function(){
// only parse a rule if it contains an interactive pseudo.
var select = rule.selectorText;
if(REG_INTERACTIVE.test(select)) {
- var style = rule.style.cssText,
+ var style = rule.style.cssText;
- // affected elements are found by truncating the selector after the interactive pseudo,
- // eg: "div li:hover" >> "div li"
- affected = REG_AFFECTED.exec(select)[1],
+ // affected elements are found by truncating the selector after the interactive pseudo,
+ // eg: "div li:hover" >> "div li"
+ var affected = REG_AFFECTED.exec(select)[1];
- // that pseudo is needed for a classname, and defines the type of interaction (focus, hover, active)
- // eg: "li:hover" >> "onhover"
- pseudo = select.replace(REG_PSEUDO, 'on$1'),
+ // that pseudo is needed for a classname, and defines the type of interaction (focus, hover, active)
+ // eg: "li:hover" >> "onhover"
+ var pseudo = select.replace(REG_PSEUDO, 'on$1');
- // the new selector is going to use that classname in a new css rule,
- // since IE6 doesn't support multiple classnames, this is merged into one classname
- // eg: "li:hover" >> "li.onhover", "li.folder:hover" >> "li.folderonhover"
- newSelect = select.replace(REG_SELECT, '.$2' + pseudo),
+ // the new selector is going to use that classname in a new css rule,
+ // since IE6 doesn't support multiple classnames, this is merged into one classname
+ // eg: "li:hover" >> "li.onhover", "li.folder:hover" >> "li.folderonhover"
+ var newSelect = select.replace(REG_SELECT, '.$2' + pseudo);
- // the classname is needed for the events that are going to be set on affected nodes
- // eg: "li.folder:hover" >> "folderonhover"
- className = REG_CLASS.exec(newSelect)[1];
+ // the classname is needed for the events that are going to be set on affected nodes
+ // eg: "li.folder:hover" >> "folderonhover"
+ var className = REG_CLASS.exec(newSelect)[1];
// no need to set the same callback more than once when the same selector uses the same classname
var hash = affected + className;
if(!this.callbacks[hash]) {
-
- // affected elements are given an expression under a fake css property, the classname is used
- // because a unique name (eg "behavior:") would be overruled (in IE6, not 7) by a following rule
- // selecting the same element. The expression does a callback to CSSHover.patch, rerouted via the
- // exposed window.CSSHover function.
+
+ // affected elements are given an expression under a borrowed css property, because fake properties
+ // can't have their expressions cleared. Different properties are used per pseudo, to avoid
+ // expressions from overwriting eachother. The expression does a callback to CSSHover.patch,
+ // rerouted via the exposed window.CSSHover function.
+ var property = Properties.get();
+ var atRuntime = camelize(property);
// because the expression is added to the stylesheet, and styles are always applied to html that is
// dynamically added to the dom, the expression will also trigger for those new elements (provided
// they are selected by the affected selector).
-
- sheet.addRule(affected, CSSHOVER_PREFIX + className + ':expression(CSSHover(this, "'+pseudo+'", "'+className+'"))');
+ sheet.addRule(affected, property + ':expression(CSSHover(this, "'+pseudo+'", "'+className+'", "'+atRuntime+'"))');
// hash it, so an identical selector/class combo does not duplicate the expression
this.callbacks[hash] = true;
@@ -142,18 +161,23 @@ window.CSSHover = (function(){
},
// called via the expression, patches individual nodes
- patch:function(node, type, className) {
-
- // the patch's type is returned to the expression. That way the expression property
- // can be found and removed, to stop it from calling patch over and over.
- // The if will fail the first time, since the expression has not yet received a value.
- var property = CSSHOVER_PREFIX + className;
- if(node.style[property]) {
- node.style[property] = null;
- }
+ patch:function(node, type, className, property) {
+ // restores the borrowed css property to the value of its immediate parent, clearing
+ // the expression so that it's not repeatedly called.
+ try {
+ var value = node.parentNode.currentStyle[property];
+ node.style[property] = value;
+ } catch(e) {
+ // the above reset should never fail, but just in case, clear the runtimeStyle if it does.
+ // this will also stop the expression.
+ node.runtimeStyle[property] = '';
+ }
+
// just to make sure, also keep track of patched classnames locally on the node
- if(!node.csshover) node.csshover = [];
+ if(!node.csshover) {
+ node.csshover = [];
+ }
// and check for it to prevent duplicate events with the same classname from being set
if(!node.csshover[className]) {
@@ -189,11 +213,6 @@ window.CSSHover = (function(){
}
};
- // add the unload to the onbeforeunload event
- window.attachEvent('onbeforeunload', function(){
- CSSHover.unload();
- });
-
/**
* CSSHoverElement
* --------------------------
@@ -241,15 +260,20 @@ window.CSSHover = (function(){
}
};
+ // add the unload to the onbeforeunload event
+ window.attachEvent('onbeforeunload', function(){
+ CSSHover.unload();
+ });
+
/**
* Public hook
* --------------------------
*/
- return function(node, type, className) {
+ return function(node, type, className, property) {
if(node) {
// called via the css expression; patches individual nodes
- return CSSHover.patch(node, type, className);
+ return CSSHover.patch(node, type, className, property);
} else {
// called ondomcontentready via the public:attach node
CSSHover.init();
@@ -257,6 +281,4 @@ window.CSSHover = (function(){
};
})();
-
-// ]]>
</script> \ No newline at end of file
diff --git a/skins/vector/csshover.min.htc b/skins/vector/csshover.min.htc
new file mode 100644
index 00000000..7e5c57b3
--- /dev/null
+++ b/skins/vector/csshover.min.htc
@@ -0,0 +1,12 @@
+<public:attach event="ondocumentready" onevent="CSSHover()" />
+<script>
+/**
+ * Whatever:hover - V3.11
+ * http://www.xs4all.nl/~peterned/
+ *
+ * Copyright (c) 2009 Peter Nederlof
+ * Licensed under the LGPL license
+ * http://creativecommons.org/licenses/LGPL/2.1
+ */
+window.CSSHover=(function(){var m=/(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active|focus))/i;var n=/(.*?)\:(hover|active|focus)/i;var o=/[^:]+:([a-z\-]+).*/i;var p=/(\.([a-z0-9_\-]+):[a-z]+)|(:[a-z]+)/gi;var q=/\.([a-z0-9_\-]*on(hover|active|focus))/i;var s=/msie (5|6|7)/i;var t=/backcompat/i;var u={index:0,list:['text-kashida','text-kashida-space','text-justify'],get:function(){return this.list[(this.index++)%this.list.length]}};var v=function(c){return c.replace(/-(.)/mg,function(a,b){return b.toUpperCase()})};var w={elements:[],callbacks:{},init:function(){if(!s.test(navigator.userAgent)&&!t.test(window.document.compatMode)){return}var a=window.document.styleSheets,l=a.length;for(var i=0;i<l;i++){this.parseStylesheet(a[i])}},parseStylesheet:function(a){if(a.imports){try{var b=a.imports;var l=b.length;for(var i=0;i<l;i++){this.parseStylesheet(a.imports[i])}}catch(securityException){}}try{var c=a.rules;var r=c.length;for(var j=0;j<r;j++){this.parseCSSRule(c[j],a)}}catch(someException){}},parseCSSRule:function(a,b){var c=a.selectorText;if(m.test(c)){var d=a.style.cssText;var e=n.exec(c)[1];var f=c.replace(o,'on$1');var g=c.replace(p,'.$2'+f);var h=q.exec(g)[1];var i=e+h;if(!this.callbacks[i]){var j=u.get();var k=v(j);b.addRule(e,j+':expression(CSSHover(this, "'+f+'", "'+h+'", "'+k+'"))');this.callbacks[i]=true}b.addRule(g,d)}},patch:function(a,b,c,d){try{var f=a.parentNode.currentStyle[d];a.style[d]=f}catch(e){a.runtimeStyle[d]=''}if(!a.csshover){a.csshover=[]}if(!a.csshover[c]){a.csshover[c]=true;var g=new CSSHoverElement(a,b,c);this.elements.push(g)}return b},unload:function(){try{var l=this.elements.length;for(var i=0;i<l;i++){this.elements[i].unload()}this.elements=[];this.callbacks={}}catch(e){}}};var x={onhover:{activator:'onmouseenter',deactivator:'onmouseleave'},onactive:{activator:'onmousedown',deactivator:'onmouseup'},onfocus:{activator:'onfocus',deactivator:'onblur'}};function CSSHoverElement(a,b,c){this.node=a;this.type=b;var d=new RegExp('(^|\\s)'+c+'(\\s|$)','g');this.activator=function(){a.className+=' '+c};this.deactivator=function(){a.className=a.className.replace(d,' ')};a.attachEvent(x[b].activator,this.activator);a.attachEvent(x[b].deactivator,this.deactivator)}CSSHoverElement.prototype={unload:function(){this.node.detachEvent(x[this.type].activator,this.activator);this.node.detachEvent(x[this.type].deactivator,this.deactivator);this.activator=null;this.deactivator=null;this.node=null;this.type=null}};window.attachEvent('onbeforeunload',function(){w.unload()});return function(a,b,c,d){if(a){return w.patch(a,b,c,d)}else{w.init()}}})();
+</script>
diff --git a/skins/vector/cssjanus/COPYING b/skins/vector/cssjanus/COPYING
deleted file mode 100644
index 3f2c8953..00000000
--- a/skins/vector/cssjanus/COPYING
+++ /dev/null
@@ -1,13 +0,0 @@
- Copyright 2008 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/skins/vector/cssjanus/LICENSE b/skins/vector/cssjanus/LICENSE
deleted file mode 100644
index d6456956..00000000
--- a/skins/vector/cssjanus/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/skins/vector/cssjanus/README b/skins/vector/cssjanus/README
deleted file mode 100644
index 9b922156..00000000
--- a/skins/vector/cssjanus/README
+++ /dev/null
@@ -1,91 +0,0 @@
-=CSSJanus=
-
-_Flips CSS from LTR to an RTL orienation and vice-versa_
-
-Author: `Lindsey Simon <elsigh@google.com>`
-
-==Introduction==
-
-CSSJanus is CSS parser utility designed to aid the conversion of a website's
-layout from left-to-right(LTR) to right-to-left(RTL). The script was born out of
-a need to convert CSS for RTL languages when tables are not being used for layout (since tables will automatically reorder TD's in RTL).
-CSSJanus will change most of the obvious CSS property names and their values as
-well as some not-so-obvious ones (cursor, background-position %, etc...).
-The script is designed to offer flexibility to account for cases when you do
-not want to change certain rules which exist to account for bidirectional text
-display bugs, as well as situations where you may or may not want to flip annotations inside of the background url string.
-Note that you can disable CSSJanus from running on an entire class or any
-rule within a class by prepending a /* @noflip */ comment before the rule(s)
-you want CSSJanus to ignore.
-
-CSSJanus itself is not always enough to make a website that works in a LTR
-language context work in a RTL language all the way, but it is a start.
-
-==Getting the code==
-
-View the trunk at:
-
- http://cssjanus.googlecode.com/svn/trunk/
-
-Check out the latest development version anonymously with:
-
-{{{
- $ svn checkout http://cssjanus.googlecode.com/svn/trunk/ cssjanus
-}}}
-
-==Using==
-
-Usage:
- ./cssjanus.py < file.css > file-rtl.css
-Flags:
- --swap_left_right_in_url: Fixes "left"/"right" string within urls.
- Ex: ./cssjanus.py --swap_left_right_in_url < file.css > file_rtl.css
- --swap_ltr_rtl_in_url: Fixes "ltr"/"rtl" string within urls.
- Ex: ./cssjanus.py --swap_ltr_rtl_in_url < file.css > file_rtl.css
-
-If you'd like to make use of the webapp version of cssjanus, you'll need to
-download the Google App Engine SDK
- http://code.google.com/appengine/downloads.html
-and also drop a "django" directory into this directory, with the latest svn
-from django. You should be good to go with that setup. Please let me know
-otherwise.
-
-==Bugs, Patches==
-
-Patches and bug reports are welcome, just please keep the style
-consistent with the original source. If you find a bug, please include a diff
-of cssjanus_test.py with the bug included as a new unit test which fails. It
-will make understanding and fixing the bug easier.
-
-==Todo==
-
-* Include some helpers for some typical bidi text solutions?
-* Aural CSS (azimuth) swapping?
-
-==Contributors==
-
-Additional thanks to Mike Samuel for his work on csslex.py, Andy Perelson for
-his help coding and reviewing, Stephen Zabel for his help with i18n and my sanity,
-and to Eric Meyer for his thoughtful input.
-Thanks to Junyu Wang for the Chinese translation.
-Thanks to Masashi Kawashima for the Japanese translation.
-Thanks to Taaryk Taar and Tariq Al-Omaireeni for an updated Arabic translation.
-Thanks to Jens Meiert for the German translation.
-
-==License==
-
-{{{
- Copyright 2008 Google Inc. All Rights Reserved.
-
- Licensed under the Apache License, Version 2.0 (the 'License');
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an 'AS IS' BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-}}}
diff --git a/skins/vector/cssjanus/cssjanus.py b/skins/vector/cssjanus/cssjanus.py
deleted file mode 100644
index dd14bd58..00000000
--- a/skins/vector/cssjanus/cssjanus.py
+++ /dev/null
@@ -1,574 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright 2008 Google Inc. All Rights Reserved.
-
-"""Converts a LeftToRight Cascading Style Sheet into a RightToLeft one.
-
- This is a utility script for replacing "left" oriented things in a CSS file
- like float, padding, margin with "right" oriented values.
- It also does the opposite.
- The goal is to be able to conditionally serve one large, cat'd, compiled CSS
- file appropriate for LeftToRight oriented languages and RightToLeft ones.
- This utility will hopefully help your structural layout done in CSS in
- terms of its RTL compatibility. It will not help with some of the more
- complicated bidirectional text issues.
-"""
-
-__author__ = 'elsigh@google.com (Lindsey Simon)'
-__version__ = '0.1'
-
-import logging
-import re
-import sys
-import getopt
-import os
-
-import csslex
-
-logging.getLogger().setLevel(logging.INFO)
-
-# Global for the command line flags.
-SWAP_LTR_RTL_IN_URL_DEFAULT = False
-SWAP_LEFT_RIGHT_IN_URL_DEFAULT = False
-FLAGS = {'swap_ltr_rtl_in_url': SWAP_LTR_RTL_IN_URL_DEFAULT,
- 'swap_left_right_in_url': SWAP_LEFT_RIGHT_IN_URL_DEFAULT}
-
-# Generic token delimiter character.
-TOKEN_DELIMITER = '~'
-
-# This is a temporary match token we use when swapping strings.
-TMP_TOKEN = '%sTMP%s' % (TOKEN_DELIMITER, TOKEN_DELIMITER)
-
-# Token to be used for joining lines.
-TOKEN_LINES = '%sJ%s' % (TOKEN_DELIMITER, TOKEN_DELIMITER)
-
-# Global constant text strings for CSS value matches.
-LTR = 'ltr'
-RTL = 'rtl'
-LEFT = 'left'
-RIGHT = 'right'
-
-# This is a lookbehind match to ensure that we don't replace instances
-# of our string token (left, rtl, etc...) if there's a letter in front of it.
-# Specifically, this prevents replacements like 'background: url(bright.png)'.
-LOOKBEHIND_NOT_LETTER = r'(?<![a-zA-Z])'
-
-# This is a lookahead match to make sure we don't replace left and right
-# in actual classnames, so that we don't break the HTML/CSS dependencies.
-# Read literally, it says ignore cases where the word left, for instance, is
-# directly followed by valid classname characters and a curly brace.
-# ex: .column-left {float: left} will become .column-left {float: right}
-LOOKAHEAD_NOT_OPEN_BRACE = (r'(?!(?:%s|%s|%s|#|\:|\.|\,|\+|>)*?{)' %
- (csslex.NMCHAR, TOKEN_LINES, csslex.SPACE))
-
-
-# These two lookaheads are to test whether or not we are within a
-# background: url(HERE) situation.
-# Ref: http://www.w3.org/TR/CSS21/syndata.html#uri
-VALID_AFTER_URI_CHARS = r'[\'\"]?%s' % csslex.WHITESPACE
-LOOKAHEAD_NOT_CLOSING_PAREN = r'(?!%s?%s\))' % (csslex.URL_CHARS,
- VALID_AFTER_URI_CHARS)
-LOOKAHEAD_FOR_CLOSING_PAREN = r'(?=%s?%s\))' % (csslex.URL_CHARS,
- VALID_AFTER_URI_CHARS)
-
-# Compile a regex to swap left and right values in 4 part notations.
-# We need to match negatives and decimal numeric values.
-# ex. 'margin: .25em -2px 3px 0' becomes 'margin: .25em 0 3px -2px'.
-POSSIBLY_NEGATIVE_QUANTITY = r'((?:-?%s)|(?:inherit|auto))' % csslex.QUANTITY
-POSSIBLY_NEGATIVE_QUANTITY_SPACE = r'%s%s%s' % (POSSIBLY_NEGATIVE_QUANTITY,
- csslex.SPACE,
- csslex.WHITESPACE)
-FOUR_NOTATION_QUANTITY_RE = re.compile(r'%s%s%s%s' %
- (POSSIBLY_NEGATIVE_QUANTITY_SPACE,
- POSSIBLY_NEGATIVE_QUANTITY_SPACE,
- POSSIBLY_NEGATIVE_QUANTITY_SPACE,
- POSSIBLY_NEGATIVE_QUANTITY),
- re.I)
-COLOR = r'(%s|%s)' % (csslex.NAME, csslex.HASH)
-COLOR_SPACE = r'%s%s' % (COLOR, csslex.SPACE)
-FOUR_NOTATION_COLOR_RE = re.compile(r'(-color%s:%s)%s%s%s(%s)' %
- (csslex.WHITESPACE,
- csslex.WHITESPACE,
- COLOR_SPACE,
- COLOR_SPACE,
- COLOR_SPACE,
- COLOR),
- re.I)
-
-# Compile the cursor resize regexes
-CURSOR_EAST_RE = re.compile(LOOKBEHIND_NOT_LETTER + '([ns]?)e-resize')
-CURSOR_WEST_RE = re.compile(LOOKBEHIND_NOT_LETTER + '([ns]?)w-resize')
-
-# Matches the condition where we need to replace the horizontal component
-# of a background-position value when expressed in horizontal percentage.
-# Had to make two regexes because in the case of position-x there is only
-# one quantity, and otherwise we don't want to match and change cases with only
-# one quantity.
-BG_HORIZONTAL_PERCENTAGE_RE = re.compile(r'background(-position)?(%s:%s)'
- '([^%%]*?)(%s)%%'
- '(%s(?:%s|%s))' % (csslex.WHITESPACE,
- csslex.WHITESPACE,
- csslex.NUM,
- csslex.WHITESPACE,
- csslex.QUANTITY,
- csslex.IDENT))
-
-BG_HORIZONTAL_PERCENTAGE_X_RE = re.compile(r'background-position-x(%s:%s)'
- '(%s)%%' % (csslex.WHITESPACE,
- csslex.WHITESPACE,
- csslex.NUM))
-
-# Matches the opening of a body selector.
-BODY_SELECTOR = r'body%s{%s' % (csslex.WHITESPACE, csslex.WHITESPACE)
-
-# Matches anything up until the closing of a selector.
-CHARS_WITHIN_SELECTOR = r'[^\}]*?'
-
-# Matches the direction property in a selector.
-DIRECTION_RE = r'direction%s:%s' % (csslex.WHITESPACE, csslex.WHITESPACE)
-
-# These allow us to swap "ltr" with "rtl" and vice versa ONLY within the
-# body selector and on the same line.
-BODY_DIRECTION_LTR_RE = re.compile(r'(%s)(%s)(%s)(ltr)' %
- (BODY_SELECTOR, CHARS_WITHIN_SELECTOR,
- DIRECTION_RE),
- re.I)
-BODY_DIRECTION_RTL_RE = re.compile(r'(%s)(%s)(%s)(rtl)' %
- (BODY_SELECTOR, CHARS_WITHIN_SELECTOR,
- DIRECTION_RE),
- re.I)
-
-
-# Allows us to swap "direction:ltr" with "direction:rtl" and
-# vice versa anywhere in a line.
-DIRECTION_LTR_RE = re.compile(r'%s(ltr)' % DIRECTION_RE)
-DIRECTION_RTL_RE = re.compile(r'%s(rtl)' % DIRECTION_RE)
-
-# We want to be able to switch left with right and vice versa anywhere
-# we encounter left/right strings, EXCEPT inside the background:url(). The next
-# two regexes are for that purpose. We have alternate IN_URL versions of the
-# regexes compiled in case the user passes the flag that they do
-# actually want to have left and right swapped inside of background:urls.
-LEFT_RE = re.compile('%s(%s)%s%s' % (LOOKBEHIND_NOT_LETTER,
- LEFT,
- LOOKAHEAD_NOT_CLOSING_PAREN,
- LOOKAHEAD_NOT_OPEN_BRACE),
- re.I)
-RIGHT_RE = re.compile('%s(%s)%s%s' % (LOOKBEHIND_NOT_LETTER,
- RIGHT,
- LOOKAHEAD_NOT_CLOSING_PAREN,
- LOOKAHEAD_NOT_OPEN_BRACE),
- re.I)
-LEFT_IN_URL_RE = re.compile('%s(%s)%s' % (LOOKBEHIND_NOT_LETTER,
- LEFT,
- LOOKAHEAD_FOR_CLOSING_PAREN),
- re.I)
-RIGHT_IN_URL_RE = re.compile('%s(%s)%s' % (LOOKBEHIND_NOT_LETTER,
- RIGHT,
- LOOKAHEAD_FOR_CLOSING_PAREN),
- re.I)
-LTR_IN_URL_RE = re.compile('%s(%s)%s' % (LOOKBEHIND_NOT_LETTER,
- LTR,
- LOOKAHEAD_FOR_CLOSING_PAREN),
- re.I)
-RTL_IN_URL_RE = re.compile('%s(%s)%s' % (LOOKBEHIND_NOT_LETTER,
- RTL,
- LOOKAHEAD_FOR_CLOSING_PAREN),
- re.I)
-
-COMMENT_RE = re.compile('(%s)' % csslex.COMMENT, re.I)
-
-NOFLIP_TOKEN = r'\@noflip'
-# The NOFLIP_TOKEN inside of a comment. For now, this requires that comments
-# be in the input, which means users of a css compiler would have to run
-# this script first if they want this functionality.
-NOFLIP_ANNOTATION = r'/\*%s%s%s\*/' % (csslex.WHITESPACE,
- NOFLIP_TOKEN,
- csslex. WHITESPACE)
-
-# After a NOFLIP_ANNOTATION, and within a class selector, we want to be able
-# to set aside a single rule not to be flipped. We can do this by matching
-# our NOFLIP annotation and then using a lookahead to make sure there is not
-# an opening brace before the match.
-NOFLIP_SINGLE_RE = re.compile(r'(%s%s[^;}]+;?)' % (NOFLIP_ANNOTATION,
- LOOKAHEAD_NOT_OPEN_BRACE),
- re.I)
-
-# After a NOFLIP_ANNOTATION, we want to grab anything up until the next } which
-# means the entire following class block. This will prevent all of its
-# declarations from being flipped.
-NOFLIP_CLASS_RE = re.compile(r'(%s%s})' % (NOFLIP_ANNOTATION,
- CHARS_WITHIN_SELECTOR),
- re.I)
-
-
-class Tokenizer:
- """Replaces any CSS comments with string tokens and vice versa."""
-
- def __init__(self, token_re, token_string):
- """Constructor for the Tokenizer.
-
- Args:
- token_re: A regex for the string to be replace by a token.
- token_string: The string to put between token delimiters when tokenizing.
- """
- logging.debug('Tokenizer::init token_string=%s' % token_string)
- self.token_re = token_re
- self.token_string = token_string
- self.originals = []
-
- def Tokenize(self, line):
- """Replaces any string matching token_re in line with string tokens.
-
- By passing a function as an argument to the re.sub line below, we bypass
- the usual rule where re.sub will only replace the left-most occurrence of
- a match by calling the passed in function for each occurrence.
-
- Args:
- line: A line to replace token_re matches in.
-
- Returns:
- line: A line with token_re matches tokenized.
- """
- line = self.token_re.sub(self.TokenizeMatches, line)
- logging.debug('Tokenizer::Tokenize returns: %s' % line)
- return line
-
- def DeTokenize(self, line):
- """Replaces tokens with the original string.
-
- Args:
- line: A line with tokens.
-
- Returns:
- line with any tokens replaced by the original string.
- """
-
- # Put all of the comments back in by their comment token.
- for i, original in enumerate(self.originals):
- token = '%s%s_%s%s' % (TOKEN_DELIMITER, self.token_string, i + 1,
- TOKEN_DELIMITER)
- line = line.replace(token, original)
- logging.debug('Tokenizer::DeTokenize i:%s w/%s' % (i, token))
- logging.debug('Tokenizer::DeTokenize returns: %s' % line)
- return line
-
- def TokenizeMatches(self, m):
- """Replaces matches with tokens and stores the originals.
-
- Args:
- m: A match object.
-
- Returns:
- A string token which replaces the CSS comment.
- """
- logging.debug('Tokenizer::TokenizeMatches %s' % m.group(1))
- self.originals.append(m.group(1))
- return '%s%s_%s%s' % (TOKEN_DELIMITER,
- self.token_string,
- len(self.originals),
- TOKEN_DELIMITER)
-
-
-def FixBodyDirectionLtrAndRtl(line):
- """Replaces ltr with rtl and vice versa ONLY in the body direction.
-
- Args:
- line: A string to replace instances of ltr with rtl.
- Returns:
- line with direction: ltr and direction: rtl swapped only in body selector.
- line = FixBodyDirectionLtrAndRtl('body { direction:ltr }')
- line will now be 'body { direction:rtl }'.
- """
-
- line = BODY_DIRECTION_LTR_RE.sub('\\1\\2\\3%s' % TMP_TOKEN, line)
- line = BODY_DIRECTION_RTL_RE.sub('\\1\\2\\3%s' % LTR, line)
- line = line.replace(TMP_TOKEN, RTL)
- logging.debug('FixBodyDirectionLtrAndRtl returns: %s' % line)
- return line
-
-
-def FixLeftAndRight(line):
- """Replaces left with right and vice versa in line.
-
- Args:
- line: A string in which to perform the replacement.
-
- Returns:
- line with left and right swapped. For example:
- line = FixLeftAndRight('padding-left: 2px; margin-right: 1px;')
- line will now be 'padding-right: 2px; margin-left: 1px;'.
- """
-
- line = LEFT_RE.sub(TMP_TOKEN, line)
- line = RIGHT_RE.sub(LEFT, line)
- line = line.replace(TMP_TOKEN, RIGHT)
- logging.debug('FixLeftAndRight returns: %s' % line)
- return line
-
-
-def FixLeftAndRightInUrl(line):
- """Replaces left with right and vice versa ONLY within background urls.
-
- Args:
- line: A string in which to replace left with right and vice versa.
-
- Returns:
- line with left and right swapped in the url string. For example:
- line = FixLeftAndRightInUrl('background:url(right.png)')
- line will now be 'background:url(left.png)'.
- """
-
- line = LEFT_IN_URL_RE.sub(TMP_TOKEN, line)
- line = RIGHT_IN_URL_RE.sub(LEFT, line)
- line = line.replace(TMP_TOKEN, RIGHT)
- logging.debug('FixLeftAndRightInUrl returns: %s' % line)
- return line
-
-
-def FixLtrAndRtlInUrl(line):
- """Replaces ltr with rtl and vice versa ONLY within background urls.
-
- Args:
- line: A string in which to replace ltr with rtl and vice versa.
-
- Returns:
- line with left and right swapped. For example:
- line = FixLtrAndRtlInUrl('background:url(rtl.png)')
- line will now be 'background:url(ltr.png)'.
- """
-
- line = LTR_IN_URL_RE.sub(TMP_TOKEN, line)
- line = RTL_IN_URL_RE.sub(LTR, line)
- line = line.replace(TMP_TOKEN, RTL)
- logging.debug('FixLtrAndRtlInUrl returns: %s' % line)
- return line
-
-
-def FixCursorProperties(line):
- """Fixes directional CSS cursor properties.
-
- Args:
- line: A string to fix CSS cursor properties in.
-
- Returns:
- line reformatted with the cursor properties substituted. For example:
- line = FixCursorProperties('cursor: ne-resize')
- line will now be 'cursor: nw-resize'.
- """
-
- line = CURSOR_EAST_RE.sub('\\1' + TMP_TOKEN, line)
- line = CURSOR_WEST_RE.sub('\\1e-resize', line)
- line = line.replace(TMP_TOKEN, 'w-resize')
- logging.debug('FixCursorProperties returns: %s' % line)
- return line
-
-
-def FixFourPartNotation(line):
- """Fixes the second and fourth positions in 4 part CSS notation.
-
- Args:
- line: A string to fix 4 part CSS notation in.
-
- Returns:
- line reformatted with the 4 part notations swapped. For example:
- line = FixFourPartNotation('padding: 1px 2px 3px 4px')
- line will now be 'padding: 1px 4px 3px 2px'.
- """
- line = FOUR_NOTATION_QUANTITY_RE.sub('\\1 \\4 \\3 \\2', line)
- line = FOUR_NOTATION_COLOR_RE.sub('\\1\\2 \\5 \\4 \\3', line)
- logging.debug('FixFourPartNotation returns: %s' % line)
- return line
-
-
-def FixBackgroundPosition(line):
- """Fixes horizontal background percentage values in line.
-
- Args:
- line: A string to fix horizontal background position values in.
-
- Returns:
- line reformatted with the 4 part notations swapped.
- """
- line = BG_HORIZONTAL_PERCENTAGE_RE.sub(CalculateNewBackgroundPosition, line)
- line = BG_HORIZONTAL_PERCENTAGE_X_RE.sub(CalculateNewBackgroundPositionX,
- line)
- logging.debug('FixBackgroundPosition returns: %s' % line)
- return line
-
-
-def CalculateNewBackgroundPosition(m):
- """Fixes horizontal background-position percentages.
-
- This function should be used as an argument to re.sub since it needs to
- perform replacement specific calculations.
-
- Args:
- m: A match object.
-
- Returns:
- A string with the horizontal background position percentage fixed.
- BG_HORIZONTAL_PERCENTAGE_RE.sub(FixBackgroundPosition,
- 'background-position: 75% 50%')
- will return 'background-position: 25% 50%'.
- """
-
- # The flipped value is the offset from 100%
- new_x = str(100-int(m.group(4)))
-
- # Since m.group(1) may very well be None type and we need a string..
- if m.group(1):
- position_string = m.group(1)
- else:
- position_string = ''
-
- return 'background%s%s%s%s%%%s' % (position_string, m.group(2), m.group(3),
- new_x, m.group(5))
-
-
-def CalculateNewBackgroundPositionX(m):
- """Fixes percent based background-position-x.
-
- This function should be used as an argument to re.sub since it needs to
- perform replacement specific calculations.
-
- Args:
- m: A match object.
-
- Returns:
- A string with the background-position-x percentage fixed.
- BG_HORIZONTAL_PERCENTAGE_X_RE.sub(CalculateNewBackgroundPosition,
- 'background-position-x: 75%')
- will return 'background-position-x: 25%'.
- """
-
- # The flipped value is the offset from 100%
- new_x = str(100-int(m.group(2)))
-
- return 'background-position-x%s%s%%' % (m.group(1), new_x)
-
-
-def ChangeLeftToRightToLeft(lines,
- swap_ltr_rtl_in_url=None,
- swap_left_right_in_url=None):
- """Turns lines into a stream and runs the fixing functions against it.
-
- Args:
- lines: An list of CSS lines.
- swap_ltr_rtl_in_url: Overrides this flag if param is set.
- swap_left_right_in_url: Overrides this flag if param is set.
-
- Returns:
- The same lines, but with left and right fixes.
- """
-
- global FLAGS
-
- # Possibly override flags with params.
- logging.debug('ChangeLeftToRightToLeft swap_ltr_rtl_in_url=%s, '
- 'swap_left_right_in_url=%s' % (swap_ltr_rtl_in_url,
- swap_left_right_in_url))
- if swap_ltr_rtl_in_url is None:
- swap_ltr_rtl_in_url = FLAGS['swap_ltr_rtl_in_url']
- if swap_left_right_in_url is None:
- swap_left_right_in_url = FLAGS['swap_left_right_in_url']
-
- # Turns the array of lines into a single line stream.
- logging.debug('LINES COUNT: %s' % len(lines))
- line = TOKEN_LINES.join(lines)
-
- # Tokenize any single line rules with the /* noflip */ annotation.
- noflip_single_tokenizer = Tokenizer(NOFLIP_SINGLE_RE, 'NOFLIP_SINGLE')
- line = noflip_single_tokenizer.Tokenize(line)
-
- # Tokenize any class rules with the /* noflip */ annotation.
- noflip_class_tokenizer = Tokenizer(NOFLIP_CLASS_RE, 'NOFLIP_CLASS')
- line = noflip_class_tokenizer.Tokenize(line)
-
- # Tokenize the comments so we can preserve them through the changes.
- comment_tokenizer = Tokenizer(COMMENT_RE, 'C')
- line = comment_tokenizer.Tokenize(line)
-
- # Here starteth the various left/right orientation fixes.
- line = FixBodyDirectionLtrAndRtl(line)
-
- if swap_left_right_in_url:
- line = FixLeftAndRightInUrl(line)
-
- if swap_ltr_rtl_in_url:
- line = FixLtrAndRtlInUrl(line)
-
- line = FixLeftAndRight(line)
- line = FixCursorProperties(line)
- line = FixFourPartNotation(line)
- line = FixBackgroundPosition(line)
-
- # DeTokenize the single line noflips.
- line = noflip_single_tokenizer.DeTokenize(line)
-
- # DeTokenize the class-level noflips.
- line = noflip_class_tokenizer.DeTokenize(line)
-
- # DeTokenize the comments.
- line = comment_tokenizer.DeTokenize(line)
-
- # Rejoin the lines back together.
- lines = line.split(TOKEN_LINES)
-
- return lines
-
-def usage():
- """Prints out usage information."""
-
- print 'Usage:'
- print ' ./cssjanus.py < file.css > file-rtl.css'
- print 'Flags:'
- print ' --swap_left_right_in_url: Fixes "left"/"right" string within urls.'
- print ' Ex: ./cssjanus.py --swap_left_right_in_url < file.css > file_rtl.css'
- print ' --swap_ltr_rtl_in_url: Fixes "ltr"/"rtl" string within urls.'
- print ' Ex: ./cssjanus --swap_ltr_rtl_in_url < file.css > file_rtl.css'
-
-def setflags(opts):
- """Parse the passed in command line arguments and set the FLAGS global.
-
- Args:
- opts: getopt iterable intercepted from argv.
- """
-
- global FLAGS
-
- # Parse the arguments.
- for opt, arg in opts:
- logging.debug('opt: %s, arg: %s' % (opt, arg))
- if opt in ("-h", "--help"):
- usage()
- sys.exit()
- elif opt in ("-d", "--debug"):
- logging.getLogger().setLevel(logging.DEBUG)
- elif opt == '--swap_ltr_rtl_in_url':
- FLAGS['swap_ltr_rtl_in_url'] = True
- elif opt == '--swap_left_right_in_url':
- FLAGS['swap_left_right_in_url'] = True
-
-
-def main(argv):
- """Sends stdin lines to ChangeLeftToRightToLeft and writes to stdout."""
-
- # Define the flags.
- try:
- opts, args = getopt.getopt(argv, 'hd', ['help', 'debug',
- 'swap_left_right_in_url',
- 'swap_ltr_rtl_in_url'])
- except getopt.GetoptError:
- usage()
- sys.exit(2)
-
- # Parse and set the flags.
- setflags(opts)
-
- # Call the main routine with all our functionality.
- fixed_lines = ChangeLeftToRightToLeft(sys.stdin.readlines())
- sys.stdout.write(''.join(fixed_lines))
-
-if __name__ == '__main__':
- main(sys.argv[1:])
diff --git a/skins/vector/cssjanus/csslex.py b/skins/vector/cssjanus/csslex.py
deleted file mode 100644
index 1fc7304e..00000000
--- a/skins/vector/cssjanus/csslex.py
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright 2007 Google Inc. All Rights Reserved.
-
-"""CSS Lexical Grammar rules.
-
-CSS lexical grammar from http://www.w3.org/TR/CSS21/grammar.html
-"""
-
-__author__ = ['elsigh@google.com (Lindsey Simon)',
- 'msamuel@google.com (Mike Samuel)']
-
-# public symbols
-__all__ = [ "NEWLINE", "HEX", "NON_ASCII", "UNICODE", "ESCAPE", "NMSTART", "NMCHAR", "STRING1", "STRING2", "IDENT", "NAME", "HASH", "NUM", "STRING", "URL", "SPACE", "WHITESPACE", "COMMENT", "QUANTITY", "PUNC" ]
-
-# The comments below are mostly copied verbatim from the grammar.
-
-# "@import" {return IMPORT_SYM;}
-# "@page" {return PAGE_SYM;}
-# "@media" {return MEDIA_SYM;}
-# "@charset" {return CHARSET_SYM;}
-KEYWORD = r'(?:\@(?:import|page|media|charset))'
-
-# nl \n|\r\n|\r|\f ; a newline
-NEWLINE = r'\n|\r\n|\r|\f'
-
-# h [0-9a-f] ; a hexadecimal digit
-HEX = r'[0-9a-f]'
-
-# nonascii [\200-\377]
-NON_ASCII = r'[\200-\377]'
-
-# unicode \\{h}{1,6}(\r\n|[ \t\r\n\f])?
-UNICODE = r'(?:(?:\\' + HEX + r'{1,6})(?:\r\n|[ \t\r\n\f])?)'
-
-# escape {unicode}|\\[^\r\n\f0-9a-f]
-ESCAPE = r'(?:' + UNICODE + r'|\\[^\r\n\f0-9a-f])'
-
-# nmstart [_a-z]|{nonascii}|{escape}
-NMSTART = r'(?:[_a-z]|' + NON_ASCII + r'|' + ESCAPE + r')'
-
-# nmchar [_a-z0-9-]|{nonascii}|{escape}
-NMCHAR = r'(?:[_a-z0-9-]|' + NON_ASCII + r'|' + ESCAPE + r')'
-
-# ident -?{nmstart}{nmchar}*
-IDENT = r'-?' + NMSTART + NMCHAR + '*'
-
-# name {nmchar}+
-NAME = NMCHAR + r'+'
-
-# hash
-HASH = r'#' + NAME
-
-# string1 \"([^\n\r\f\\"]|\\{nl}|{escape})*\" ; "string"
-STRING1 = r'"(?:[^\"\\]|\\.)*"'
-
-# string2 \'([^\n\r\f\\']|\\{nl}|{escape})*\' ; 'string'
-STRING2 = r"'(?:[^\'\\]|\\.)*'"
-
-# string {string1}|{string2}
-STRING = '(?:' + STRING1 + r'|' + STRING2 + ')'
-
-# num [0-9]+|[0-9]*"."[0-9]+
-NUM = r'(?:[0-9]*\.[0-9]+|[0-9]+)'
-
-# s [ \t\r\n\f]
-SPACE = r'[ \t\r\n\f]'
-
-# w {s}*
-WHITESPACE = '(?:' + SPACE + r'*)'
-
-# url special chars
-URL_SPECIAL_CHARS = r'[!#$%&*-~]'
-
-# url chars ({url_special_chars}|{nonascii}|{escape})*
-URL_CHARS = r'(?:%s|%s|%s)*' % (URL_SPECIAL_CHARS, NON_ASCII, ESCAPE)
-
-# url
-URL = r'url\(%s(%s|%s)%s\)' % (WHITESPACE, STRING, URL_CHARS, WHITESPACE)
-
-# comments
-# see http://www.w3.org/TR/CSS21/grammar.html
-COMMENT = r'/\*[^*]*\*+([^/*][^*]*\*+)*/'
-
-# {E}{M} {return EMS;}
-# {E}{X} {return EXS;}
-# {P}{X} {return LENGTH;}
-# {C}{M} {return LENGTH;}
-# {M}{M} {return LENGTH;}
-# {I}{N} {return LENGTH;}
-# {P}{T} {return LENGTH;}
-# {P}{C} {return LENGTH;}
-# {D}{E}{G} {return ANGLE;}
-# {R}{A}{D} {return ANGLE;}
-# {G}{R}{A}{D} {return ANGLE;}
-# {M}{S} {return TIME;}
-# {S} {return TIME;}
-# {H}{Z} {return FREQ;}
-# {K}{H}{Z} {return FREQ;}
-# % {return PERCENTAGE;}
-UNIT = r'(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)'
-
-# {num}{UNIT|IDENT} {return NUMBER;}
-QUANTITY = '%s(?:%s%s|%s)?' % (NUM, WHITESPACE, UNIT, IDENT)
-
-# "<!--" {return CDO;}
-# "-->" {return CDC;}
-# "~=" {return INCLUDES;}
-# "|=" {return DASHMATCH;}
-# {w}"{" {return LBRACE;}
-# {w}"+" {return PLUS;}
-# {w}">" {return GREATER;}
-# {w}"," {return COMMA;}
-PUNC = r'<!--|-->|~=|\|=|[\{\+>,:;]'
diff --git a/skins/vector/experiments/babaco-colors-a.css b/skins/vector/experiments/babaco-colors-a.css
deleted file mode 100644
index ce6f67dd..00000000
--- a/skins/vector/experiments/babaco-colors-a.css
+++ /dev/null
@@ -1,109 +0,0 @@
-/* Babaco Color Scheme A */
-
-
-a:visited,
-a:visited div.vectorTabs li.selected a:visited span {
- color: #260e9c;
-}
-
-html .thumbimage,
-#toc, .toc, .mw-warning, div.thumbinner {
- border-color: #cccccc;
- background-color: #f7f7f7;
-}
-
-/* Framework */
-#mw-page-base {
- background-color: inherit !important;
- background-image: none !important;
-}
-body {
- background-color: #f9f9f9 !important;
- background-image:url(images/page-base-updated.png);
-}
-
-/* Links */
-a {
- color: #0066cc;
-}
-a:visited {
- color: #004d99;
-}
-a:active {
- color: #ff6600;
-}
-a.stub {
- color: #56228b;
-}
-a.new, #p-personal a.new {
- color: #a31205 !important;
-}
-a.new:visited, #p-personal a.new:visited {
- color: #a31205;
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
- border-color:#999999;
- font-family:georgia, times, serif;
- font-weight:bold;
-}
-#firstHeading {
- font-size:1.5em;
-}
-h2 .editsection,
-.portal h5{
- font-family:sans-serif;
- font-weight:normal;
-
-}
-#toc h2, .toc h2 {
- font-family:sans-serif;
- font-weight:normal;
-}
-body #mw-panel div.portal div.body {
- background-image:url(images/new-portal-break-ltr.png);
-}
-body.rtl #mw-panel div.portal div.body {
- background-image:url(images/new-portal-break-rtl.png);
-}
-body div.vectorTabs li a, div.vectorTabs li a span{
- color:#4d4d4d;
-}
-body div.vectorTabs li.selected a,
-body div.vectorTabs li.selected a span,
-body div.vectorTabs li.selected a:visited
-body div.vectorTabs li.selected a:visited span {
- color: #ff9900 !important;
- font-weight:bold;
-}
-div.vectorTabs li.new a,
-div.vectorTabs li.new a span,
-div.vectorTabs li.new a:visited,
-div.vectorTabs li.new a:visited span {
- color:#a31205;
-}
-#toc,
-.toc,
-.mw-warning,
-div.gallerybox div.thumb,
-table.gallery,
-#preferences fieldset.prefsection fieldset,
-#preferences,
-html .thumbimage,
-.usermessage,
-img.thumbborder,
-div.thumbinner{
- border: 1px solid #cccccc;
- background-color: #f7f7f7;
-}
-#mw-panel div.portal h5 {
- font-weight:bold;
- margin-bottom:0;
- padding-bottom:0.05em;
- color:#000000;
-}
diff --git a/skins/vector/experiments/babaco-colors-b.css b/skins/vector/experiments/babaco-colors-b.css
deleted file mode 100644
index 227e197c..00000000
--- a/skins/vector/experiments/babaco-colors-b.css
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Babaco Color Scheme A */
-
-
-html .thumbimage,
-#toc, .toc, .mw-warning, div.thumbinner {
- border-color: #cccccc;
- background-color: #f7f7f7;
-}
-
-/* Framework */
-#mw-page-base {
- background-color: inherit !important;
- background-image: none !important;
-}
-body {
- background-color: #f9f9f9 !important;
- background-image:url(images/page-base-updated.png);
-}
-/* Links */
-a {
- color: #003cb3;
-}
-a.stub {
- color: #772233;
-}
-a.new, #p-personal a.new {
- color: #a31205 !important;
-}
-{
- color: #260e9c;
-}
-a:visited,
-a:visited div.vectorTabs li.selected a:visited span,
-a.new:visited,
-#p-personal a.new:visited {
- color: #260e9c;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
- border-color:#999999;
-}
-
-div.vectorTabs li.new a,
-div.vectorTabs li.new a span,
-div.vectorTabs li.new a:visited,
-div.vectorTabs li.new a:visited span {
- color:#a31205;
-}
-
-#toc,
-.toc,
-.mw-warning,
-div.gallerybox div.thumb,
-table.gallery,
-#preferences fieldset.prefsection fieldset,
-#preferences,
-html .thumbimage,
-.usermessage,
-img.thumbborder,
-div.thumbinner{
- border: 1px solid #cccccc;
- background-color: #f7f7f7;
-}
diff --git a/skins/vector/experiments/babaco-colors-c.css b/skins/vector/experiments/babaco-colors-c.css
deleted file mode 100644
index d2dabf7d..00000000
--- a/skins/vector/experiments/babaco-colors-c.css
+++ /dev/null
@@ -1,91 +0,0 @@
-/* Babaco Color Scheme C */
-
-/* ridding ourselves of the gradient */
-#mw-page-base {
- background-color: inherit !important;
- background-image: none !important;
-}
-
-a:visited,
-a:visited div.vectorTabs li.selected a:visited span {
- color: #260e9c;
-}
-
-html .thumbimage,
-#toc, .toc, .mw-warning, div.thumbinner {
- border-color: #cccccc;
- background-color: #f7f7f7;
-}
-
-/* Framework */
-body {
- background-color: #f9f9f9 !important;
- background-image:url(images/page-base-updated.png);
-}
-
-/* Links */
-a {
- color: #0066cc;
-}
-a:visited {
- color: #004d99;
-}
-a:active {
- color: #ff6600;
-}
-a.stub {
- color: #56228b;
-}
-a.new, #p-personal a.new {
- color: #a31205 !important;
-}
-a.new:visited, #p-personal a.new:visited {
- color: #a31205;
-}
-
-#firstHeading {
- font-size:1.5em;
-}
-h2 .editsection,
-.portal h5 {
- font-weight:normal;
-}
-#toc h2, .toc h2 {
- font-weight:normal;
-}
-body #mw-panel div.portal div.body {
- background-image:url(images/new-portal-break-ltr.png);
-}
-
-div.vectorTabs li.new a,
-div.vectorTabs li.new a span,
-div.vectorTabs li.new a:visited,
-div.vectorTabs li.new a:visited span {
- color:#a31205;
-}
-#toc,
-.toc,
-.mw-warning,
-div.gallerybox div.thumb,
-table.gallery,
-#preferences fieldset.prefsection fieldset,
-#preferences,
-html .thumbimage,
-.usermessage,
-img.thumbborder,
-div.thumbinner {
- border: 1px solid #cccccc;
- background-color: #f7f7f7;
-}
-#mw-panel div.portal h5 {
- font-weight:bold;
- margin-bottom:0;
- padding-bottom:0.05em;
- color:#000000;
-}
-div.vectorTabs li.selected a,
-div.vectorTabs li.selected a span,
-div.vectorTabs li.selected a:visited
-div.vectorTabs li.selected a:visited span {
- color: #333333 !important;
-} \ No newline at end of file
diff --git a/skins/vector/experiments/images/new-border.png b/skins/vector/experiments/images/new-border.png
deleted file mode 100644
index 735324ef..00000000
--- a/skins/vector/experiments/images/new-border.png
+++ /dev/null
Binary files differ
diff --git a/skins/vector/experiments/images/new-portal-break-ltr.png b/skins/vector/experiments/images/new-portal-break-ltr.png
deleted file mode 100644
index cd8f3b15..00000000
--- a/skins/vector/experiments/images/new-portal-break-ltr.png
+++ /dev/null
Binary files differ
diff --git a/skins/vector/experiments/images/new-portal-break-rtl.png b/skins/vector/experiments/images/new-portal-break-rtl.png
deleted file mode 100644
index 45c5b2f9..00000000
--- a/skins/vector/experiments/images/new-portal-break-rtl.png
+++ /dev/null
Binary files differ
diff --git a/skins/vector/experiments/images/page-base-fade.png b/skins/vector/experiments/images/page-base-fade.png
deleted file mode 100644
index dc631823..00000000
--- a/skins/vector/experiments/images/page-base-fade.png
+++ /dev/null
Binary files differ
diff --git a/skins/vector/experiments/images/page-base-updated.png b/skins/vector/experiments/images/page-base-updated.png
deleted file mode 100644
index 54ffeb00..00000000
--- a/skins/vector/experiments/images/page-base-updated.png
+++ /dev/null
Binary files differ
diff --git a/skins/vector/experiments/images/tab-active-first.png b/skins/vector/experiments/images/tab-active-first.png
deleted file mode 100644
index e4c39c42..00000000
--- a/skins/vector/experiments/images/tab-active-first.png
+++ /dev/null
Binary files differ
diff --git a/skins/vector/experiments/images/tab-active-last.png b/skins/vector/experiments/images/tab-active-last.png
deleted file mode 100644
index a96f3916..00000000
--- a/skins/vector/experiments/images/tab-active-last.png
+++ /dev/null
Binary files differ
diff --git a/skins/vector/experiments/images/tab-fade.png b/skins/vector/experiments/images/tab-fade.png
deleted file mode 100644
index 1eb0e23b..00000000
--- a/skins/vector/experiments/images/tab-fade.png
+++ /dev/null
Binary files differ
diff --git a/skins/vector/experiments/images/tab-first.png b/skins/vector/experiments/images/tab-first.png
deleted file mode 100644
index 439b713f..00000000
--- a/skins/vector/experiments/images/tab-first.png
+++ /dev/null
Binary files differ
diff --git a/skins/vector/experiments/images/tab-last.png b/skins/vector/experiments/images/tab-last.png
deleted file mode 100644
index 08e283dd..00000000
--- a/skins/vector/experiments/images/tab-last.png
+++ /dev/null
Binary files differ
diff --git a/skins/vector/experiments/images/tab-new-fade.png b/skins/vector/experiments/images/tab-new-fade.png
deleted file mode 100644
index 44925505..00000000
--- a/skins/vector/experiments/images/tab-new-fade.png
+++ /dev/null
Binary files differ
diff --git a/skins/vector/experiments/new-tabs.css b/skins/vector/experiments/new-tabs.css
deleted file mode 100644
index e3850e8e..00000000
--- a/skins/vector/experiments/new-tabs.css
+++ /dev/null
@@ -1,322 +0,0 @@
-/* new border color */
-#content {
- background-image: url(images/new-border.png);
-}
-
-#footer {
- background-image: url(images/new-border.png);
-}
- body div#left-navigation,
- body div#right-navigation {
- top:3.2em;
- }
- body div#right-navigation {
- margin-top:3.2em;
- }
- body #p-search form,
- body #p-search input,
- body #simpleSearch {
- margin-top:0;
- }
- body div#p-cactions {
- margin-top:0;
- }
- /* Namespaces and Views */
- /* @noflip */
- div.vectorTabs {
- float: left;
- }
- body div.vectorTabs {
- background-image: none;
- padding-left: 0;
- }
- /* @noflip */
- div.vectorTabs ul {
- float: left;
- }
- div.vectorTabs ul {
- height: 100%;
- list-style: none;
- background-image:none;
- margin: 0;
- padding: 0;
- }
- /* @noflip */
- div.vectorTabs ul li {
- float: left;
- }
- /* OVERRIDDEN BY COMPLIANT BROWSERS */
- body div.vectorTabs ul li {
- line-height: 1em;
- display: inline-block;
- height: 2em;
- margin: 0 1px 0 0;
- padding: 0;
- background:none;
- overflow:hidden;
- white-space:nowrap;
- }
- /* IGNORED BY IE6 */
- div.vectorTabs ul > li {
- display: block;
- }
- body div.vectorTabs li.selected {
- background-image: none;
- border:none;
- }
- /* OVERRIDDEN BY COMPLIANT BROWSERS */
- body div.vectorTabs li a {
- border-top:1px solid #cccccc;
- border-left:1px solid #cccccc;
- border-right:1px solid #cccccc;
- display: inline-block;
- height: 1.7em;
- padding-left: 0.6em;
- padding-right: 0.6em;
- background-image:url(images/tab-fade.png);
- background-position:bottom left;
- background-repeat:repeat-x;
- background-color:#ffffff;
- }
- body div.vectorTabs li.new a{
- background-image:url(images/tab-new-fade.png);
-
- }
- div.vectorTabs li a,
- div.vectorTabs li a span {
- cursor: pointer;
- }
- div.vectorTabs li a span {
- font-size: 0.8em;
- }
- /* IGNORED BY IE6 */
- div.vectorTabs li > a {
- display: block;
- }
- /* OVERRIDDEN BY COMPLIANT BROWSERS */
- body div.vectorTabs a span {
- display: inline-block;
- padding-top: 0.5em;
- }
- /* IGNORED BY IE6 */
- /* @noflip */
- div.vectorTabs a > span {
- float: left;
- display: block;
- }
- body div.vectorTabs li.last {
- background-image: url(images/tab-last.png);
- background-repeat:no-repeat;
- background-position:top right;
- border:none;
- }
- body div.vectorTabs li.last a {
- margin-right:7px;
- padding-left:0.4em;
- padding-right:0;
- border-left:1px solid #cccccc;
- border-top:1px solid #cccccc;
- border-right:none;
- background-image:url(images/tab-fade.png);
- background-position:top left;
- background-repeat:repeat-x;
- }
- body div.vectorTabs li.first {
- background-image: url(images/tab-first.png);
- background-repeat:no-repeat;
- background-position:top left;
- border:none;
- }
- body div.vectorTabs li.first a {
- margin-left:7px;
- padding-left:0em;
- padding-right:0.4em;
- border-right:1px solid #cccccc;
- border-top:1px solid #cccccc;
- background-image:url(images/tab-fade.png);
- background-position:top left;
- background-repeat:repeat-x;
- }
-
- div.vectorTabs li.selected a,
- div.vectorTabs li.selected a span,
- div.vectorTabs li.selected a:visited
- div.vectorTabs li.selected a:visited span {
- color: #be5900 !important;
- text-decoration: none;
- }
-
- body div.vectorTabs li.selected a {
- border-top:1px solid #6cc8f3;
- border-right:1px solid #6cc8f3;
- border-left:1px solid #6cc8f3;
- background-color:#fff;
- height:1.75em;
- background-image:none;
- }
- body div.vectorTabs li.selected.first {
- background-image: url(images/tab-active-first.png);
- background-repeat:no-repeat;
- background-position:top left;
- }
- body div.vectorTabs li.selected.first a {
- margin-left:7px;
- padding-right:0.6em;
- padding-left:0.4em;
- border-left:none;
- }
- body div.vectorTabs li.selected.last {
- background-image: url(images/tab-active-last.png);
- background-repeat:no-repeat;
- background-position:top right;
- }
- body div.vectorTabs li.selected.last a {
- margin-right:7px;
- padding-left:0.6em;
- padding-right:0.4em;
- border-right:none;
- }
-
- /* Variants and Actions */
- /* @noflip */
- div.vectorMenu {
- background-image:url(images/tab-fade.png);
- background-position:bottom left;
- background-repeat:repeat-x;
- border-top:1px solid #cccccc;
- border-left:1px solid #cccccc;
- border-right:1px solid #cccccc;
- }
- body.rtl div.vectorMenu {
- direction: rtl;
- }
- /* @noflip */
- body #mw-head div.vectorMenu h5 {
- background-image: url(../images/arrow-down-icon.png);
- background-position: center center;
- background-repeat: no-repeat;
- padding-left: 0;
- margin-left: 0px;
- }
- /* OVERRIDDEN BY COMPLIANT BROWSERS */
- body div.vectorMenu h5 a {
- display: inline-block;
- width: 24px;
- height:1.5em;
- background-image: none !important;
-
- }
- /* IGNORED BY IE6 */
- div.vectorMenu h5 > a {
- display: block;
- }
- div.vectorMenu div.menu {
- position: relative;
- left:1px;
- display: none;
- clear: both;
- text-align: left;
- }
- /* OVERRIDDEN BY COMPLIANT BROWSERS */
- body.rtl div.vectorMenu div.menu {
- margin-right: 24px;
- }
- /* IGNORED BY IE6 */
- body.rtl div.vectorMenu > div.menu {
- margin-right: auto;
- }
- /* Fixes old versions of FireFox */
- body.rtl div.vectorMenu > div.menu,
- x:-moz-any-link {
- margin-right: 24px;
- }
- div.vectorMenu:hover div.menu {
- display: block;
- }
- div.vectorMenu ul {
- position: absolute;
- background-color: white;
- border: solid 1px silver;
- border-top-width: 0;
- list-style: none;
- list-style-image: none;
- list-style-type: none;
- padding: 0;
- margin: 0;
- margin-left: -1px;
- text-align: left;
- }
- /* Fixes old versions of FireFox */
- div.vectorMenu ul,
- x:-moz-any-link {
- min-width: 5em;
- }
- /* Returns things back to normal in modern versions of FireFox */
- div.vectorMenu ul,
- x:-moz-any-link,
- x:default {
- min-width: 0;
- }
- div.vectorMenu li {
- padding: 0;
- margin: 0;
- text-align: left;
- line-height: 1em;
- }
- /* OVERRIDDEN BY COMPLIANT BROWSERS */
- div.vectorMenu li a {
- display: inline-block;
- padding: 0.5em;
- white-space: nowrap;
- }
- /* IGNORED BY IE6 */
- div.vectorMenu li > a {
- display: block;
- }
- div.vectorMenu li a {
- color: #0645ad;
- cursor: pointer;
- font-size: 0.8em;
- }
- div.vectorMenu li.selected a,
- div.vectorMenu li.selected a:visited {
- color: #333333;
- text-decoration: none;
- }
-#ca-unwatch.icon,
-#ca-watch.icon {
- background-color:#ffffff;
- height:1.75em !important;
- background-image:url(images/tab-fade.png);
- background-position:bottom left;
- background-repeat:repeat-x;
-}
-#ca-unwatch.icon a,
-#ca-watch.icon a {
- height: 1.7em !important;
- border-bottom:none;
- background-color:transparent;
-}
-#ca-watch.icon a,
-#ca-unwatch.icon a {
- background-repeat:no-repeat;
-}
-.wikiEditor-ui-tabs {
- border: none;
- height: 2.15em;
-}
-.wikiEditor-ui-buttons {
- height: 2.15em;
-}
-.wikiEditor-ui-tabs div {
- border: 1px solid silver;
- margin-right: 1px;
- height: 2.15em;
-}
-.wikiEditor-ui-tabs div a {
- line-height: 2.15em;
- background: #FFFFFF url(images/tab-fade.png) repeat-x 0 100%;
-}
-.wikiEditor-ui-tabs div.current a {
- background: #FFFFFF;
-}
diff --git a/skins/vector/images/arrow-down-icon.png b/skins/vector/images/arrow-down-icon.png
index bf2d4fb4..437b9518 100644
--- a/skins/vector/images/arrow-down-icon.png
+++ b/skins/vector/images/arrow-down-icon.png
Binary files differ
diff --git a/skins/vector/images/audio-icon.png b/skins/vector/images/audio-icon.png
index 0f59a2bb..ffd0b1c2 100644
--- a/skins/vector/images/audio-icon.png
+++ b/skins/vector/images/audio-icon.png
Binary files differ
diff --git a/skins/vector/images/border.png b/skins/vector/images/border.png
index 54b47922..6e3330ff 100644
--- a/skins/vector/images/border.png
+++ b/skins/vector/images/border.png
Binary files differ
diff --git a/skins/vector/images/bullet-icon.png b/skins/vector/images/bullet-icon.png
index e304b267..c4c44382 100644
--- a/skins/vector/images/bullet-icon.png
+++ b/skins/vector/images/bullet-icon.png
Binary files differ
diff --git a/skins/vector/images/document-icon.png b/skins/vector/images/document-icon.png
index 91dc16f6..7b68120a 100644
--- a/skins/vector/images/document-icon.png
+++ b/skins/vector/images/document-icon.png
Binary files differ
diff --git a/skins/vector/images/edit-icon.png b/skins/vector/images/edit-icon.png
index 4a962767..92153e8e 100644
--- a/skins/vector/images/edit-icon.png
+++ b/skins/vector/images/edit-icon.png
Binary files differ
diff --git a/skins/vector/images/external-link-ltr-icon.png b/skins/vector/images/external-link-ltr-icon.png
index 4b710b03..fe642b5c 100644
--- a/skins/vector/images/external-link-ltr-icon.png
+++ b/skins/vector/images/external-link-ltr-icon.png
Binary files differ
diff --git a/skins/vector/images/external-link-rtl-icon.png b/skins/vector/images/external-link-rtl-icon.png
index 17df03a3..01e0d798 100644
--- a/skins/vector/images/external-link-rtl-icon.png
+++ b/skins/vector/images/external-link-rtl-icon.png
Binary files differ
diff --git a/skins/vector/images/file-icon.png b/skins/vector/images/file-icon.png
index 1261f00c..8a4baf2c 100644
--- a/skins/vector/images/file-icon.png
+++ b/skins/vector/images/file-icon.png
Binary files differ
diff --git a/skins/vector/images/link-icon.png b/skins/vector/images/link-icon.png
index fc77e81d..469fd2b4 100644
--- a/skins/vector/images/link-icon.png
+++ b/skins/vector/images/link-icon.png
Binary files differ
diff --git a/skins/vector/images/lock-icon.png b/skins/vector/images/lock-icon.png
index 9e63807a..46b72f52 100644
--- a/skins/vector/images/lock-icon.png
+++ b/skins/vector/images/lock-icon.png
Binary files differ
diff --git a/skins/vector/images/mail-icon.png b/skins/vector/images/mail-icon.png
index 50de0781..a8ad2fd7 100644
--- a/skins/vector/images/mail-icon.png
+++ b/skins/vector/images/mail-icon.png
Binary files differ
diff --git a/skins/vector/images/news-icon.png b/skins/vector/images/news-icon.png
index 8ab49957..bb03a892 100644
--- a/skins/vector/images/news-icon.png
+++ b/skins/vector/images/news-icon.png
Binary files differ
diff --git a/skins/vector/images/page-base.png b/skins/vector/images/page-base.png
index 17d02a74..be760917 100644
--- a/skins/vector/images/page-base.png
+++ b/skins/vector/images/page-base.png
Binary files differ
diff --git a/skins/vector/images/page-fade.png b/skins/vector/images/page-fade.png
index 815a0486..2b08cfe2 100644
--- a/skins/vector/images/page-fade.png
+++ b/skins/vector/images/page-fade.png
Binary files differ
diff --git a/skins/vector/images/portal-break-ltr.png b/skins/vector/images/portal-break-ltr.png
index c1823705..76ca4915 100644
--- a/skins/vector/images/portal-break-ltr.png
+++ b/skins/vector/images/portal-break-ltr.png
Binary files differ
diff --git a/skins/vector/images/portal-break-rtl.png b/skins/vector/images/portal-break-rtl.png
index a45144c0..773792aa 100644
--- a/skins/vector/images/portal-break-rtl.png
+++ b/skins/vector/images/portal-break-rtl.png
Binary files differ
diff --git a/skins/vector/images/portal-break.png b/skins/vector/images/portal-break.png
index e81b5597..5feaa459 100644
--- a/skins/vector/images/portal-break.png
+++ b/skins/vector/images/portal-break.png
Binary files differ
diff --git a/skins/vector/images/preferences-base.png b/skins/vector/images/preferences-base.png
index adfd70d7..947895f1 100644
--- a/skins/vector/images/preferences-base.png
+++ b/skins/vector/images/preferences-base.png
Binary files differ
diff --git a/skins/vector/images/preferences-edge.png b/skins/vector/images/preferences-edge.png
index 3da0d099..e6a9a480 100644
--- a/skins/vector/images/preferences-edge.png
+++ b/skins/vector/images/preferences-edge.png
Binary files differ
diff --git a/skins/vector/images/preferences-fade.png b/skins/vector/images/preferences-fade.png
index b4773c5c..3aa30bb9 100644
--- a/skins/vector/images/preferences-fade.png
+++ b/skins/vector/images/preferences-fade.png
Binary files differ
diff --git a/skins/vector/images/search-fade.png b/skins/vector/images/search-fade.png
index 53461d6d..e96f6678 100644
--- a/skins/vector/images/search-fade.png
+++ b/skins/vector/images/search-fade.png
Binary files differ
diff --git a/skins/vector/images/tab-break.png b/skins/vector/images/tab-break.png
index 81155562..95be27b5 100644
--- a/skins/vector/images/tab-break.png
+++ b/skins/vector/images/tab-break.png
Binary files differ
diff --git a/skins/vector/images/tab-current-fade.png b/skins/vector/images/tab-current-fade.png
index c6238d26..fb3a2cb6 100644
--- a/skins/vector/images/tab-current-fade.png
+++ b/skins/vector/images/tab-current-fade.png
Binary files differ
diff --git a/skins/vector/images/tab-normal-fade.png b/skins/vector/images/tab-normal-fade.png
index 4a5e3e4a..fcee0dfb 100644
--- a/skins/vector/images/tab-normal-fade.png
+++ b/skins/vector/images/tab-normal-fade.png
Binary files differ
diff --git a/skins/vector/images/talk-icon.png b/skins/vector/images/talk-icon.png
index 0b80ee91..12862a09 100644
--- a/skins/vector/images/talk-icon.png
+++ b/skins/vector/images/talk-icon.png
Binary files differ
diff --git a/skins/vector/images/user-icon.png b/skins/vector/images/user-icon.png
index ac3d59d5..2fbfe4e5 100644
--- a/skins/vector/images/user-icon.png
+++ b/skins/vector/images/user-icon.png
Binary files differ
diff --git a/skins/vector/images/video-icon.png b/skins/vector/images/video-icon.png
index 5e7f4af7..06bc9b64 100644
--- a/skins/vector/images/video-icon.png
+++ b/skins/vector/images/video-icon.png
Binary files differ
diff --git a/skins/vector/images/watch-icons.png b/skins/vector/images/watch-icons.png
index 54b2c793..a2871626 100644
--- a/skins/vector/images/watch-icons.png
+++ b/skins/vector/images/watch-icons.png
Binary files differ
diff --git a/skins/vector/main-rtl.css b/skins/vector/main-rtl.css
deleted file mode 100644
index 5387289f..00000000
--- a/skins/vector/main-rtl.css
+++ /dev/null
@@ -1,1128 +0,0 @@
-/*
- * main-rtl.css is automatically generated using CSSJanus, a python script for
- * creating RTL versions of otherwise LTR stylesheets.
- *
- * You may download the tool to rebuild this stylesheet
- * http://code.google.com/p/cssjanus/
- *
- * An online version of this tool can be used at:
- * http://cssjanus.commoner.com/
- *
- * The following command is used to generate the RTL version of this file
- * ./cssjanus.py --swap_ltr_rtl_in_url < main-ltr.css > main-rtl.css
- *
- * Any rules which should not be flipped should be prepended with @noflip in
- * a comment block.
- */
-/* Framework */
-html,
-body {
- height: 100%;
- margin: 0;
- padding: 0;
- font-family: sans-serif;
- font-size: 1em;
-}
-body {
- background-color: #f3f3f3;
- background-image: url(images/page-base.png);
-}
-/* Content */
-#content {
- margin-right: 10em;
- padding: 1em;
- background-image: url(images/border.png);
- background-position: top right;
- background-repeat: repeat-y;
- background-color: white;
-}
-/* Head */
-#mw-page-base {
- height: 5em;
- background-color: white;
- background-image: url(images/page-fade.png);
- background-position: bottom right;
- background-repeat: repeat-x;
-}
-#mw-head-base {
- margin-top: -5em;
- margin-right: 10em;
- height: 5em;
- background-image: url(images/border.png);
- background-position: bottom right;
- background-repeat: repeat-x;
-}
-#mw-head {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
-}
-#mw-head h5 {
- margin: 0;
- padding: 0;
-}
- /* Hide empty portlets */
- div.emptyPortlet {
- display: none;
- }
- /* Personal */
- #p-personal {
- position: absolute;
- top: 0;
- margin-right: 10em;
- left: 0.75em;
- }
- #p-personal h5 {
- display: none;
- }
- #p-personal ul {
- list-style: none;
- margin: 0;
- padding: 0;
- }
- /* @noflip */
- #p-personal li {
- line-height: 1.125em;
- float: left;
- }
- #p-personal li {
- margin-right: 0.75em;
- margin-top: 0.5em;
- font-size: 0.75em;
- }
- /* Navigation Containers */
- #left-navigation {
- position: absolute;
- right: 10em;
- top: 2.5em;
- }
- #right-navigation {
- float: left;
- margin-top: 2.5em;
- }
- /* Navigation Labels */
- div.vectorTabs h5,
- div.vectorMenu h5 span {
- display: none;
- }
- /* Namespaces and Views */
- /* @noflip */
- div.vectorTabs {
- float: left;
- }
- div.vectorTabs {
- background-image: url(images/tab-break.png);
- background-position: bottom right;
- background-repeat: no-repeat;
- padding-right: 1px;
- }
- /* @noflip */
- div.vectorTabs ul {
- float: left;
- }
- div.vectorTabs ul {
- height: 100%;
- list-style: none;
- margin: 0;
- padding: 0;
- }
- /* @noflip */
- div.vectorTabs ul li {
- float: left;
- }
- /* OVERRIDDEN BY COMPLIANT BROWSERS */
- div.vectorTabs ul li {
- line-height: 1.125em;
- display: inline-block;
- height: 100%;
- margin: 0;
- padding: 0;
- background-color: #f3f3f3;
- background-image: url(images/tab-normal-fade.png);
- background-position: bottom right;
- background-repeat: repeat-x;
- white-space:nowrap;
- }
- /* IGNORED BY IE6 */
- div.vectorTabs ul > li {
- display: block;
- }
- div.vectorTabs li.selected {
- background-image: url(images/tab-current-fade.png);
- }
- /* OVERRIDDEN BY COMPLIANT BROWSERS */
- div.vectorTabs li a {
- display: inline-block;
- height: 2.5em;
- padding-right: 0.4em;
- padding-left: 0.4em;
- background-image: url(images/tab-break.png);
- background-position: bottom left;
- background-repeat: no-repeat;
- }
- div.vectorTabs li a,
- div.vectorTabs li a span {
- color: #0645ad;
- cursor: pointer;
- }
- div.vectorTabs li a span {
- font-size: 0.8em;
- }
- /* IGNORED BY IE6 */
- div.vectorTabs li > a {
- display: block;
- }
- /* OVERRIDDEN BY COMPLIANT BROWSERS */
- div.vectorTabs a span {
- display: inline-block;
- padding-top: 1.25em;
- }
- /* IGNORED BY IE6 */
- /* @noflip */
- div.vectorTabs a > span {
- float: left;
- display: block;
- }
- div.vectorTabs li.selected a,
- div.vectorTabs li.selected a span,
- div.vectorTabs li.selected a:visited
- div.vectorTabs li.selected a:visited span {
- color: #333333;
- text-decoration: none;
- }
- div.vectorTabs li.new a,
- div.vectorTabs li.new a span,
- div.vectorTabs li.new a:visited,
- div.vectorTabs li.new a:visited span {
- color: #a55858;
- }
- /* Variants and Actions */
- /* @noflip */
- div.vectorMenu {
- direction: ltr;
- float: left;
- background-image: url(images/arrow-down-icon.png);
- background-position: center center;
- background-repeat: no-repeat;
- }
- /* @noflip */
- body.rtl div.vectorMenu {
- direction: rtl;
- }
- /* OVERRIDDEN BY COMPLIANT BROWSERS */
- /* @noflip */
- #mw-head div.vectorMenu h5 {
- float: left;
- background-image: url(images/tab-break.png);
- background-repeat: no-repeat;
- }
- /* IGNORED BY IE6 */
- #mw-head div.vectorMenu > h5 {
- background-image: none;
- }
- #mw-head div.vectorMenu h5 {
- background-position: bottom right;
- margin-right: -1px;
- }
- /* OVERRIDDEN BY COMPLIANT BROWSERS */
- /* @noflip */
- div.vectorMenu h5 a {
- display: inline-block;
- width: 24px;
- height: 2.5em;
- text-decoration: none;
- background-image: url(images/tab-break.png);
- background-repeat: no-repeat;
- }
- div.vectorMenu h5 a{
- background-position: bottom left;
- }
- /* IGNORED BY IE6 */
- div.vectorMenu h5 > a {
- display: block;
- }
- div.vectorMenu div.menu {
- position: relative;
- display: none;
- clear: both;
- text-align: right;
- }
- /* OVERRIDDEN BY COMPLIANT BROWSERS */
- /* @noflip */
- body.rtl div.vectorMenu div.menu {
- margin-left: 24px;
- }
- /* IGNORED BY IE6 */
- /* @noflip */
- body.rtl div.vectorMenu > div.menu {
- margin-left: auto;
- }
- /* Fixes old versions of FireFox */
- /* @noflip */
- body.rtl div.vectorMenu > div.menu,
- x:-moz-any-link {
- margin-left: 23px;
- }
- div.vectorMenu:hover div.menu {
- display: block;
- }
- div.vectorMenu ul {
- position: absolute;
- background-color: white;
- border: solid 1px silver;
- border-top-width: 0;
- list-style: none;
- list-style-image: none;
- list-style-type: none;
- padding: 0;
- margin: 0;
- margin-right: -1px;
- text-align: right;
- }
- /* Fixes old versions of FireFox */
- div.vectorMenu ul,
- x:-moz-any-link {
- min-width: 5em;
- }
- /* Returns things back to normal in modern versions of FireFox */
- div.vectorMenu ul,
- x:-moz-any-link,
- x:default {
- min-width: 0;
- }
- div.vectorMenu li {
- padding: 0;
- margin: 0;
- text-align: right;
- line-height: 1em;
- }
- /* OVERRIDDEN BY COMPLIANT BROWSERS */
- div.vectorMenu li a {
- display: inline-block;
- padding: 0.5em;
- white-space: nowrap;
- }
- /* IGNORED BY IE6 */
- div.vectorMenu li > a {
- display: block;
- }
- div.vectorMenu li a {
- color: #0645ad;
- cursor: pointer;
- font-size: 0.8em;
- }
- div.vectorMenu li.selected a,
- div.vectorMenu li.selected a:visited {
- color: #333333;
- text-decoration: none;
- }
- /* Search */
- #p-search h5 {
- display: none;
- }
- /* @noflip */
- #p-search {
- float: left;
- }
- #p-search {
- margin-left: 0.5em;
- margin-right: 0.5em;
- }
- #p-search form,
- #p-search input {
- margin: 0;
- margin-top: 0.4em;
- }
- #simpleSearch {
- margin-top: 0.5em;
- position: relative;
- border: solid 1px #AAAAAA;
- background-color: white;
- background-image: url(images/search-fade.png);
- background-position: top right;
- background-repeat: repeat-x;
- }
- #simpleSearch label {
- font-size: 0.8em;
- top: 0.25em;
- }
- #simpleSearch input#searchInput {
- margin: 0;
- border-width: 0;
- padding: 0.25em;
- line-height: 1em;
- font-size: 0.8em;
- width: 9em;
- background-color: transparent;
- }
- /* OVERRIDDEN BY COMPLIANT BROWSERS */
- #simpleSearch button#searchButton {
- margin: 0;
- padding: 0;
- width: 1.75em;
- height: 1.5em;
- border: none;
- cursor: pointer;
- background-color: transparent;
- background-image: url(images/search-rtl.png);
- background-position: center center;
- background-repeat: no-repeat;
- }
- /* IGNORED BY IE6 */
- #simpleSearch > button#searchButton {
- height: 100%;
- }
- .suggestions-special .special-label {
- font-size: 0.8em;
- color: gray;
- }
- .suggestions-special .special-query {
- color: black;
- font-style: italic;
- }
- .suggestions-special .special-hover {
- background-color: silver;
- }
-/* Panel */
-#mw-panel {
- position: absolute;
- top: 160px;
- padding-top: 1em;
- width: 10em;
- right: 0;
-}
- #mw-panel div.portal {
- padding-bottom: 1.5em;
- }
- #mw-panel div.portal h5 {
- font-weight: normal;
- color: #444444;
- padding: 0.25em;
- padding-top: 0;
- padding-right: 1.75em;
- cursor: default;
- border: none;
- font-size: 0.75em;
- }
- #mw-panel div.portal div.body {
- margin: 0;
- padding-top: 0.5em;
- margin-right: 1.25em;
- background-image: url(images/portal-break.png);
- background-repeat: no-repeat;
- background-position: top right;
- }
- #mw-panel div.portal div.body ul {
- list-style: none;
- list-style-image: none;
- list-style-type: none;
- padding: 0;
- margin: 0;
- }
- #mw-panel div.portal div.body ul li {
- line-height: 1.125em;
- padding: 0;
- padding-bottom: 0.5em;
- margin: 0;
- overflow: hidden;
- font-size: 0.75em;
- }
- #mw-panel div.portal div.body ul li a {
- color: #0645ad;
- }
- #mw-panel div.portal div.body ul li a:visited {
- color: #0b0080;
- }
-/* Footer */
-#footer {
- margin-right: 10em;
- margin-top: 0;
- padding: 0.75em;
- background-image: url(images/border.png);
- background-position: top right;
- background-repeat: repeat-x;
-}
-#footer ul {
- list-style: none;
- list-style-image: none;
- list-style-type: none;
- margin: 0;
- padding: 0;
-}
-#footer ul li {
- margin: 0;
- padding: 0;
- padding-top: 0.5em;
- padding-bottom: 0.5em;
- color: #333333;
- font-size: 0.7em;
-}
-#footer #footer-icons {
- float: left;
-}
-/* @noflip */
-body.ltr #footer #footer-places {
- float: left;
-}
-#footer #footer-info li {
- line-height: 1.4em;
-}
-#footer #footer-icons li {
- float: right;
- margin-right: 0.5em;
- line-height: 2em;
-}
-#footer #footer-places li {
- float: right;
- margin-left: 1em;
- line-height: 2em;
-}
-/* Logo */
-#p-logo {
- position: absolute;
- top: -160px;
- right: 0;
- width: 10em;
- height: 160px;
-}
-#p-logo a {
- display: block;
- width: 10em;
- height: 160px;
- background-repeat: no-repeat;
- background-position: center center;
- text-decoration: none;
-}
-
-/*
- *
- * The following code is highly modified from monobook. It would be nice if the
- * preftoc id was more human readable like preferences-toc for instance,
- * howerver this would require backporting the other skins.
- */
-
-/* Preferences */
-#preftoc {
- /* Tabs */
- width: 100%;
- float: right;
- clear: both;
- margin: 0 !important;
- padding: 0 !important;
- background-image: url(images/preferences-break.png);
- background-position: bottom right;
- background-repeat: no-repeat;
-}
- #preftoc li {
- /* Tab */
- float: right;
- margin: 0;
- padding: 0;
- padding-left: 1px;
- height: 2.25em;
- white-space: nowrap;
- list-style-type: none;
- list-style-image: none;
- background-image: url(images/preferences-break.png);
- background-position: bottom left;
- background-repeat: no-repeat;
- }
- /* IGNORED BY IE6 */
- #preftoc li:first-child {
- margin-right: 1px;
- }
- #preftoc a,
- #preftoc a:active {
- display: inline-block;
- position: relative;
- color: #0645ad;
- padding: 0.5em;
- text-decoration: none;
- background-image: none;
- font-size: 0.9em;
- }
- #preftoc a:hover {
- text-decoration: underline;
- }
- #preftoc li.selected a {
- background-image: url(images/preferences-fade.png);
- background-position: bottom;
- background-repeat: repeat-x;
- color: #333333;
- text-decoration: none;
- }
-#preferences {
- float: right;
- width: 100%;
- margin: 0;
- margin-top: -2px;
- clear: both;
- border: solid 1px #cccccc;
- background-color: #f9f9f9;
- background-image: url(images/preferences-base.png);
-}
-#preferences fieldset.prefsection {
- border: none;
- padding: 0;
- margin: 1em;
-}
-#preferences fieldset.prefsection fieldset {
- border: none;
- border-top: solid 1px #cccccc;
-}
-#preferences legend {
- color: #666666;
-}
-#preferences fieldset.prefsection legend.mainLegend {
- display: none;
-}
-#preferences td {
- padding-right: 0.5em;
- padding-left: 0.5em;
-}
-#preferences td.htmlform-tip {
- font-size: x-small;
- padding: .2em 2em;
- color: #666666;
-}
-#preferences div.mw-prefs-buttons {
- padding: 1em;
-}
-#preferences div.mw-prefs-buttons input {
- margin-left: 0.25em;
-}
-
-/*
- * Styles for the user login and create account forms
- */
-#userlogin, #userloginForm {
- border: solid 1px #cccccc;
- padding: 1.2em;
- margin: .5em;
- float: right;
-}
-
-#userlogin {
- min-width: 20em;
- max-width: 90%;
- width: 40em;
-}
-
-/*
- *
- * The following code is slightly modified from monobook
- *
- */
-#content {
- line-height: 1.5em;
-}
-#bodyContent {
- font-size: 0.8em;
-}
-/* Links */
-a {
- text-decoration: none;
- color: #0645ad;
- background: none;
-}
-a:visited {
- color: #0b0080;
-}
-a:active {
- color: #faa700;
-}
-a:hover {
- text-decoration: underline;
-}
-a.stub {
- color: #772233;
-}
-a.new, #p-personal a.new {
- color: #ba0000;
-}
-a.new:visited, #p-personal a.new:visited {
- color: #a55858;
-}
-
-/* Inline Elements */
-img {
- border: none;
- vertical-align: middle;
-}
-hr {
- height: 1px;
- color: #aaa;
- background-color: #aaa;
- border: 0;
- margin: .2em 0 .2em 0;
-}
-
-/* Structural Elements */
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
- color: black;
- background: none;
- font-weight: normal;
- margin: 0;
- padding-top: .5em;
- padding-bottom: .17em;
- border-bottom: 1px solid #aaa;
- width: auto;
-}
-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; }
-p {
- margin: .4em 0 .5em 0;
- line-height: 1.5em;
-}
- p img {
- margin: 0;
- }
-abbr,
-acronym,
-.explain {
- border-bottom: 1px dotted black;
- color: black;
- background: none;
- cursor: help;
-}
-q {
- font-family: Times, "Times New Roman", serif;
- font-style: italic;
-}
-/* Disabled for now
-blockquote {
- font-family: Times, "Times New Roman", serif;
- font-style: italic;
-}*/
-code {
- background-color: #f9f9f9;
-}
-pre {
- padding: 1em;
- border: 1px dashed #2f6fab;
- color: black;
- background-color: #f9f9f9;
- line-height: 1.1em;
-}
-ul {
- line-height: 1.5em;
- list-style-type: square;
- margin: .3em 1.5em 0 0;
- padding: 0;
- list-style-image: url(images/bullet-icon.png);
-}
-ol {
- line-height: 1.5em;
- margin: .3em 3.2em 0 0;
- padding: 0;
- list-style-image: none;
-}
-li {
- margin-bottom: .1em;
-}
-dt {
- font-weight: bold;
- margin-bottom: .1em;
-}
-dl {
- margin-top: .2em;
- margin-bottom: .5em;
-}
-dd {
- line-height: 1.5em;
- margin-right: 2em;
- margin-bottom: .1em;
-}
-/* Tables */
-table {
- font-size: 100%;
- color: black;
- /* we don't want the bottom borders of <h2>s to be visible through
- * floated tables */
- background-color: white;
-}
-fieldset table {
- /* but keep table layouts in forms clean... */
- background: none;
-}
-/* Forms */
-fieldset {
- border: 1px solid #2f6fab;
- margin: 1em 0 1em 0;
- padding: 0 1em 1em;
- line-height: 1.5em;
-}
- fieldset.nested {
- margin: 0 0 0.5em 0;
- padding: 0 0.5em 0.5em;
- }
-legend {
- padding: .5em;
- font-size: 95%;
-}
-form {
- border: none;
- margin: 0;
-}
-textarea {
- width: 100%;
- padding: .1em;
-}
-select {
- vertical-align: top;
-}
-/* Table of Contents */
-#toc,
-.toc,
-.mw-warning {
- border: 1px solid #aaa;
- background-color: #f9f9f9;
- padding: 5px;
- font-size: 95%;
-}
-#toc h2,
-.toc h2 {
- display: inline;
- border: none;
- padding: 0;
- font-size: 100%;
- font-weight: bold;
-}
-#toc #toctitle,
-.toc #toctitle,
-#toc .toctitle,
-.toc .toctitle {
- text-align: center;
-}
-#toc ul,
-.toc ul {
- list-style-type: none;
- list-style-image: none;
- margin-right: 0;
- padding-right: 0;
- text-align: right;
-}
-#toc ul ul,
-.toc ul ul {
- margin: 0 2em 0 0;
-}
-#toc .toctoggle,
-.toc .toctoggle {
- font-size: 94%;
-}
-/* Images */
-div.floatright, table.floatright {
- clear: left;
- float: left;
- position: relative;
- margin: 0 .5em .5em 0;
- border: 0;
-}
-div.floatright p { font-style: italic; }
-div.floatleft, table.floatleft {
- float: right;
- clear: right;
- position: relative;
- margin: 0 0 .5em .5em;
- border: 0;
-}
-div.floatleft p { font-style: italic; }
-/* Thumbnails */
-div.thumb {
- margin-bottom: .5em;
- border-style: solid;
- border-color: white;
- width: auto;
- background-color: transparent;
-}
-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: right;
- line-height: 1.4em;
- padding: 3px !important;
- font-size: 94%;
-}
-div.magnify {
- float: left;
- border: none !important;
- background: none !important;
-}
-div.magnify a, div.magnify img {
- display: block;
- border: none !important;
- background: none !important;
-}
-div.tright {
- clear: left;
- float: left;
- border-width: .5em 1.4em .8em 0;
-}
-div.tleft {
- float: right;
- clear: right;
- margin-left: .5em;
- border-width: .5em 0 .8em 1.4em;
-}
-img.thumbborder {
- border: 1px solid #dddddd;
-}
-.hiddenStructure {
- display: none;
-}
-/* Warning */
-.mw-warning {
- margin-right: 50px;
- margin-left: 50px;
- text-align: center;
-}
-/* User Message */
-.usermessage {
- background-color: #ffce7b;
- border: 1px solid #ffa500;
- color: black;
- font-weight: bold;
- margin: 2em 0 1em;
- padding: .5em 1em;
- vertical-align: middle;
-}
-/* Site Notice */
-#siteNotice {
- text-align: center;
- font-size: 0.8em;
- margin: 0;
-}
- #siteNotice div,
- #siteNotice p {
- margin: 0;
- padding: 0;
- margin-bottom: 0.9em;
- }
-/* Categories */
-.catlinks {
- border: 1px solid #aaa;
- background-color: #f9f9f9;
- padding: 5px;
- margin-top: 1em;
- clear: both;
-}
-/* Sub-navigation */
-#siteSub {
- display: none;
-}
-#jump-to-nav {
- display: none;
-}
-#contentSub, #contentSub2 {
- font-size: 84%;
- line-height: 1.2em;
- margin: 0 1em 1.4em 0;
- color: #7d7d7d;
- width: auto;
-}
-span.subpages {
- display: block;
-}
-/* Emulate Center */
-.center {
- width: 100%;
- text-align: center;
-}
-*.center * {
- margin-right: auto;
- margin-left: auto;
-}
-/* Small for tables and similar */
-.small, .small * {
- font-size: 94%;
-}
-table.small {
- font-size: 100%;
-}
-/* Edge Cases for Content */
-h1, h2 {
- margin-bottom: .6em;
-}
-h3, h4, h5 {
- margin-bottom: .3em;
-}
-#firstHeading {
- padding-top: 0;
- margin-top: 0;
- padding-top: 0;
- margin-bottom: 0.1em;
- line-height: 1.2em;
- font-size: 1.6em;
- padding-bottom: 0;
-}
-#content a.external,
-#content a[href ^="gopher://"] {
- background: url(images/external-link-rtl-icon.png) center left no-repeat;
- padding: 0 0 0 13px;
-}
-#content a[href ^="https://"],
-.link-https {
- background: url(images/lock-icon.png) center left no-repeat;
- padding: 0 0 0 18px;
-}
-#content a[href ^="mailto:"],
-.link-mailto {
- background: url(images/mail-icon.png) center left no-repeat;
- padding: 0 0 0 18px;
-}
-#content a[href ^="news://"] {
- background: url(images/news-icon.png) center left no-repeat;
- padding: 0 0 0 18px;
-}
-#content a[href ^="ftp://"],
-.link-ftp {
- background: url(images/file-icon.png) center left no-repeat;
- padding: 0 0 0 18px;
-}
-#content a[href ^="irc://"],
-#content a.extiw[href ^="irc://"],
-.link-irc {
- background: url(images/talk-icon.png) center left no-repeat;
- padding: 0 0 0 18px;
-}
-#content a.external[href $=".ogg"], #content a.external[href $=".OGG"],
-#content a.external[href $=".mid"], #content a.external[href $=".MID"],
-#content a.external[href $=".midi"], #content a.external[href $=".MIDI"],
-#content a.external[href $=".mp3"], #content a.external[href $=".MP3"],
-#content a.external[href $=".wav"], #content a.external[href $=".WAV"],
-#content a.external[href $=".wma"], #content a.external[href $=".WMA"],
-.link-audio {
- background: url("images/audio-icon.png") center left no-repeat;
- padding: 0 0 0 18px;
-}
-#content a.external[href $=".ogm"], #content a.external[href $=".OGM"],
-#content a.external[href $=".avi"], #content a.external[href $=".AVI"],
-#content a.external[href $=".mpeg"], #content a.external[href $=".MPEG"],
-#content a.external[href $=".mpg"], #content a.external[href $=".MPG"],
-.link-video {
- background: url("images/video-icon.png") center left no-repeat;
- padding: 0 0 0 18px;
-}
-#content a.external[href $=".pdf"], #content a.external[href $=".PDF"],
-#content a.external[href *=".pdf#"], #content a.external[href *=".PDF#"],
-#content a.external[href *=".pdf?"], #content a.external[href *=".PDF?"],
-.link-document {
- background: url("images/document-icon.png") center left no-repeat;
- padding: 0 0 0 18px;
-}
-/* Interwiki Styling (Disabled) */
-#content a.extiw,
-#content a.extiw:active {
- color: #36b;
- background: none;
- padding: 0;
-}
-#content a.external {
- color: #36b;
-}
-#content .printfooter {
- display: none;
-}
-/* Icon for Usernames */
-#pt-userpage,
-#pt-anonuserpage,
-#pt-login {
- background: url(images/user-icon.png) right top no-repeat;
- padding-right: 15px !important;
- text-transform: none;
-}
-
-.toccolours {
- border: 1px solid #aaa;
- background-color: #f9f9f9;
- padding: 5px;
- font-size: 95%;
-}
-#bodyContent {
- position: relative;
- width: 100%;
-}
-#mw-js-message {
- font-size: 0.8em;
-}
-div#bodyContent {
- line-height: 1.5em;
-}
-
-/* Watch/Unwatch Icon Styling */
-#ca-unwatch.icon,
-#ca-watch.icon {
- margin-left:1px;
-}
-#ca-unwatch.icon a,
-#ca-watch.icon a {
- margin: 0;
- padding: 0;
- outline: none;
- display: block;
- width: 26px;
- height: 2.5em;
-}
-#ca-unwatch.icon a {
- background-image: url(images/watch-icons.png);
- background-position: -43px 60%;
-}
-#ca-watch.icon a {
- background-image: url(images/watch-icons.png);
- background-position: 5px 60%;
-}
-#ca-unwatch.icon a:hover {
- background-image: url(images/watch-icons.png);
- background-position: -67px 60%;
-}
-#ca-watch.icon a:hover {
- background-image: url(images/watch-icons.png);
- background-position: -19px 60%;
-}
-#ca-unwatch.icon a.loading,
-#ca-watch.icon a.loading {
- background-image: url(images/watch-icon-loading.gif);
- background-position: center 60%;
-}
-#ca-unwatch.icon a span,
-#ca-watch.icon a span {
- display: none;
-}
-div.vectorTabs ul {
- background-image:url(images/tab-break.png);
- background-position:left bottom;
- background-repeat:no-repeat;
-}
diff --git a/skins/vector/main-ltr.css b/skins/vector/screen.css
index 78dd1e2b..703db0ab 100644
--- a/skins/vector/main-ltr.css
+++ b/skins/vector/screen.css
@@ -1,19 +1,16 @@
/*
- * main-rtl.css is automatically generated using CSSJanus, a python script for
- * creating RTL versions of otherwise LTR stylesheets.
+ * Any rules which should not be flipped automatically in right-to-left situations should be
+ * prepended with @noflip in a comment block. Images that should be embedded as base64 data-URLs
+ * should be prepended with @embed in a comment block.
*
- * You may download the tool to rebuild this stylesheet
- * http://code.google.com/p/cssjanus/
- *
- * An online version of this tool can be used at:
- * http://cssjanus.commoner.com/
- *
- * The following command is used to generate the RTL version of this file
- * ./cssjanus.py --swap_ltr_rtl_in_url < main-ltr.css > main-rtl.css
- *
- * Any rules which should not be flipped should be prepended with @noflip in
- * a comment block.
+ * This style-sheet employs a few CSS trick to accomplish compatibility with a wide range of web
+ * browsers. The most common trick is to use some styles in IE6 only. This is accomplished by using
+ * a rule that makes things work in IE6, and then following it with a rule that begins with
+ * "html > body" or use a child selector ">", which is ignored by IE6 because it does not support
+ * the child selector. You can spot this by looking for the "OVERRIDDEN BY COMPLIANT BROWSERS" and
+ * "IGNORED BY IE6" comments.
*/
+
/* Framework */
html,
body {
@@ -25,21 +22,26 @@ body {
}
body {
background-color: #f3f3f3;
+ /* @embed */
background-image: url(images/page-base.png);
}
/* Content */
-#content {
+div#content {
margin-left: 10em;
padding: 1em;
+ /* @embed */
background-image: url(images/border.png);
background-position: top left;
background-repeat: repeat-y;
background-color: white;
+ color: black;
+ direction: ltr;
}
/* Head */
#mw-page-base {
height: 5em;
background-color: white;
+ /* @embed */
background-image: url(images/page-fade.png);
background-position: bottom left;
background-repeat: repeat-x;
@@ -48,17 +50,18 @@ body {
margin-top: -5em;
margin-left: 10em;
height: 5em;
+ /* @embed */
background-image: url(images/border.png);
background-position: bottom left;
background-repeat: repeat-x;
}
-#mw-head {
+div#mw-head {
position: absolute;
top: 0;
right: 0;
width: 100%;
}
-#mw-head h5 {
+div#mw-head h5 {
margin: 0;
padding: 0;
}
@@ -70,7 +73,6 @@ body {
#p-personal {
position: absolute;
top: 0;
- margin-left: 10em;
right: 0.75em;
}
#p-personal h5 {
@@ -79,17 +81,19 @@ body {
#p-personal ul {
list-style: none;
margin: 0;
- padding: 0;
+ padding-left: 10em; /* Keep from overlapping logo */
}
/* @noflip */
#p-personal li {
line-height: 1.125em;
float: left;
}
+ /* This one flips! */
#p-personal li {
margin-left: 0.75em;
margin-top: 0.5em;
font-size: 0.75em;
+ white-space: nowrap;
}
/* Navigation Containers */
#left-navigation {
@@ -110,8 +114,10 @@ body {
/* @noflip */
div.vectorTabs {
float: left;
+ height: 2.5em;
}
div.vectorTabs {
+ /* @embed */
background-image: url(images/tab-break.png);
background-position: bottom left;
background-repeat: no-repeat;
@@ -139,6 +145,7 @@ body {
margin: 0;
padding: 0;
background-color: #f3f3f3;
+ /* @embed */
background-image: url(images/tab-normal-fade.png);
background-position: bottom left;
background-repeat: repeat-x;
@@ -149,24 +156,21 @@ body {
display: block;
}
div.vectorTabs li.selected {
+ /* @embed */
background-image: url(images/tab-current-fade.png);
}
/* OVERRIDDEN BY COMPLIANT BROWSERS */
div.vectorTabs li a {
display: inline-block;
- height: 2.5em;
- padding-left: 0.4em;
- padding-right: 0.4em;
+ height: 1.9em;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ /* @embed */
background-image: url(images/tab-break.png);
background-position: bottom right;
background-repeat: no-repeat;
- }
- div.vectorTabs li a,
- div.vectorTabs li a span {
color: #0645ad;
cursor: pointer;
- }
- div.vectorTabs li a span {
font-size: 0.8em;
}
/* IGNORED BY IE6 */
@@ -174,27 +178,23 @@ body {
display: block;
}
/* OVERRIDDEN BY COMPLIANT BROWSERS */
- div.vectorTabs a span {
+ div.vectorTabs span a {
display: inline-block;
padding-top: 1.25em;
}
/* IGNORED BY IE6 */
/* @noflip */
- div.vectorTabs a > span {
+ div.vectorTabs span > a {
float: left;
display: block;
}
div.vectorTabs li.selected a,
- div.vectorTabs li.selected a span,
- div.vectorTabs li.selected a:visited
- div.vectorTabs li.selected a:visited span {
+ div.vectorTabs li.selected a:visited{
color: #333333;
text-decoration: none;
}
div.vectorTabs li.new a,
- div.vectorTabs li.new a span,
- div.vectorTabs li.new a:visited,
- div.vectorTabs li.new a:visited span {
+ div.vectorTabs li.new a:visited{
color: #a55858;
}
/* Variants and Actions */
@@ -202,9 +202,11 @@ body {
div.vectorMenu {
direction: ltr;
float: left;
+ /* @embed */
background-image: url(images/arrow-down-icon.png);
- background-position: center center;
+ background-position: 100% 60%;
background-repeat: no-repeat;
+ cursor: pointer;
}
/* @noflip */
body.rtl div.vectorMenu {
@@ -212,18 +214,29 @@ body {
}
/* OVERRIDDEN BY COMPLIANT BROWSERS */
/* @noflip */
- #mw-head div.vectorMenu h5 {
+ div#mw-head div.vectorMenu h5 {
float: left;
+ /* @embed */
background-image: url(images/tab-break.png);
background-repeat: no-repeat;
}
+ /* This will be flipped - unlike the one above it */
+ div#mw-head div.vectorMenu h5 {
+ background-position: bottom left;
+ margin-left: -1px;
+ }
/* IGNORED BY IE6 */
- #mw-head div.vectorMenu > h5 {
+ div#mw-head div.vectorMenu > h5 {
background-image: none;
}
- #mw-head div.vectorMenu h5 {
- background-position: bottom left;
- margin-left: -1px;
+ div#mw-head div.vectorMenu h4 {
+ display: inline-block;
+ float: left;
+ font-size: 0.8em;
+ padding-left: 0.5em;
+ padding-top: 1.375em;
+ font-weight: normal;
+ border: none;
}
/* OVERRIDDEN BY COMPLIANT BROWSERS */
/* @noflip */
@@ -232,10 +245,12 @@ body {
width: 24px;
height: 2.5em;
text-decoration: none;
+ /* @embed */
background-image: url(images/tab-break.png);
background-repeat: no-repeat;
}
- div.vectorMenu h5 a{
+ /* This will be flipped - unlike the one above it */
+ div.vectorMenu h5 a {
background-position: bottom right;
}
/* IGNORED BY IE6 */
@@ -258,7 +273,8 @@ body {
body.rtl div.vectorMenu > div.menu {
margin-left: auto;
}
- /* Fixes old versions of FireFox */
+ /* IGNORED BY IE6 */
+ /* Also fixes old versions of FireFox */
/* @noflip */
body.rtl div.vectorMenu > div.menu,
x:-moz-any-link {
@@ -302,16 +318,14 @@ body {
display: inline-block;
padding: 0.5em;
white-space: nowrap;
+ color: #0645ad;
+ cursor: pointer;
+ font-size: 0.8em;
}
/* IGNORED BY IE6 */
div.vectorMenu li > a {
display: block;
}
- div.vectorMenu li a {
- color: #0645ad;
- cursor: pointer;
- font-size: 0.8em;
- }
div.vectorMenu li.selected a,
div.vectorMenu li.selected a:visited {
color: #333333;
@@ -334,68 +348,101 @@ body {
margin: 0;
margin-top: 0.4em;
}
- #simpleSearch {
- margin-top: 0.5em;
+ div#simpleSearch {
+ display: block;
+ width: 14em;
+ height: 1.4em;
+ margin-top: 0.65em;
position: relative;
+ min-height: 1px; /* Gotta trigger hasLayout for IE7 */
border: solid 1px #AAAAAA;
+ color: black;
background-color: white;
+ /* @embed */
background-image: url(images/search-fade.png);
background-position: top left;
background-repeat: repeat-x;
}
- #simpleSearch label {
- font-size: 0.8em;
+ div#simpleSearch label {
+ /*
+ * DON'T PANIC! Browsers that won't scale this properly are the same browsers that have JS issues that prevent
+ * this from ever being shown anyways.
+ */
+ font-size: 13px;
top: 0.25em;
+ direction: ltr;
+ }
+ div#simpleSearch input {
+ color: black;
+ direction: ltr;
+ }
+ div#simpleSearch input:focus {
+ outline: none;
+ }
+ div#simpleSearch input.placeholder {
+ color: #999999;
+ }
+ div#simpleSearch input::-webkit-input-placeholder {
+ color: #999999;
}
- #simpleSearch input#searchInput {
+ div#simpleSearch input#searchInput {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 90%;
margin: 0;
- border-width: 0;
- padding: 0.25em;
- line-height: 1em;
- font-size: 0.8em;
- width: 9em;
+ padding: 0;
+ padding-left: 0.2em;
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+ outline: none;
+ border: none;
+ /*
+ * DON'T PANIC! Browsers that won't scale this properly are the same browsers that have JS issues that prevent
+ * this from ever being shown anyways.
+ */
+ font-size: 13px;
background-color: transparent;
+ direction: ltr;
}
- /* OVERRIDDEN BY COMPLIANT BROWSERS */
- #simpleSearch button#searchButton {
- margin: 0;
+ div#simpleSearch button#searchButton {
+ position: absolute;
+ width: 10%;
+ right: 0;
+ top: 0;
padding: 0;
- width: 1.75em;
- height: 1.5em;
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+ padding-right: 0.4em;
+ margin: 0;
border: none;
cursor: pointer;
background-color: transparent;
- background-image: url(images/search-ltr.png);
- background-position: center center;
- background-repeat: no-repeat;
}
- /* IGNORED BY IE6 */
- #simpleSearch > button#searchButton {
- height: 100%;
- }
- .suggestions-special .special-label {
- font-size: 0.8em;
- color: gray;
- }
- .suggestions-special .special-query {
- color: black;
- font-style: italic;
+ /* OVERRIDDEN BY COMPLIANT BROWSERS */
+ div#simpleSearch button#searchButton img {
+ border: none;
+ margin: 0;
+ margin-top: -3px;
+ padding: 0;
}
- .suggestions-special .special-hover {
- background-color: silver;
+ /* IGNORED BY IE6 */
+ div#simpleSearch button#searchButton > img {
+ margin: 0;
}
/* Panel */
-#mw-panel {
+div#mw-panel {
position: absolute;
top: 160px;
padding-top: 1em;
width: 10em;
left: 0;
}
- #mw-panel div.portal {
+ div#mw-panel div.portal {
padding-bottom: 1.5em;
+ direction: ltr;
}
- #mw-panel div.portal h5 {
+ div#mw-panel div.portal h5 {
font-weight: normal;
color: #444444;
padding: 0.25em;
@@ -405,22 +452,23 @@ body {
border: none;
font-size: 0.75em;
}
- #mw-panel div.portal div.body {
+ div#mw-panel div.portal div.body {
margin: 0;
padding-top: 0.5em;
margin-left: 1.25em;
+ /* @embed */
background-image: url(images/portal-break.png);
background-repeat: no-repeat;
background-position: top left;
}
- #mw-panel div.portal div.body ul {
+ div#mw-panel div.portal div.body ul {
list-style: none;
list-style-image: none;
list-style-type: none;
padding: 0;
margin: 0;
}
- #mw-panel div.portal div.body ul li {
+ div#mw-panel div.portal div.body ul li {
line-height: 1.125em;
padding: 0;
padding-bottom: 0.5em;
@@ -428,29 +476,31 @@ body {
overflow: hidden;
font-size: 0.75em;
}
- #mw-panel div.portal div.body ul li a {
+ div#mw-panel div.portal div.body ul li a {
color: #0645ad;
}
- #mw-panel div.portal div.body ul li a:visited {
+ div#mw-panel div.portal div.body ul li a:visited {
color: #0b0080;
}
/* Footer */
-#footer {
+div#footer {
margin-left: 10em;
margin-top: 0;
padding: 0.75em;
+ /* @embed */
background-image: url(images/border.png);
background-position: top left;
background-repeat: repeat-x;
+ direction: ltr;
}
-#footer ul {
+div#footer ul {
list-style: none;
list-style-image: none;
list-style-type: none;
margin: 0;
padding: 0;
}
-#footer ul li {
+div#footer ul li {
margin: 0;
padding: 0;
padding-top: 0.5em;
@@ -458,22 +508,22 @@ body {
color: #333333;
font-size: 0.7em;
}
-#footer #footer-icons {
+div#footer #footer-icons {
float: right;
}
/* @noflip */
-body.ltr #footer #footer-places {
+body.ltr div#footer #footer-places {
float: left;
}
-#footer #footer-info li {
+div#footer #footer-info li {
line-height: 1.4em;
}
-#footer #footer-icons li {
+div#footer #footer-icons li {
float: left;
margin-left: 0.5em;
line-height: 2em;
}
-#footer #footer-places li {
+div#footer #footer-places li {
float: left;
margin-right: 1em;
line-height: 2em;
@@ -510,6 +560,7 @@ body.ltr #footer #footer-places {
clear: both;
margin: 0 !important;
padding: 0 !important;
+ /* @embed */
background-image: url(images/preferences-break.png);
background-position: bottom left;
background-repeat: no-repeat;
@@ -524,11 +575,12 @@ body.ltr #footer #footer-places {
white-space: nowrap;
list-style-type: none;
list-style-image: none;
+ /* @embed */
background-image: url(images/preferences-break.png);
background-position: bottom right;
background-repeat: no-repeat;
}
- /* IGNORED BY IE6 */
+ /* Sadly, IE6 won't understand this */
#preftoc li:first-child {
margin-left: 1px;
}
@@ -542,10 +594,12 @@ body.ltr #footer #footer-places {
background-image: none;
font-size: 0.9em;
}
- #preftoc a:hover {
+ #preftoc a:hover,
+ #preftoc a:focus {
text-decoration: underline;
}
#preftoc li.selected a {
+ /* @embed */
background-image: url(images/preferences-fade.png);
background-position: bottom;
background-repeat: repeat-x;
@@ -560,6 +614,7 @@ body.ltr #footer #footer-places {
clear: both;
border: solid 1px #cccccc;
background-color: #f9f9f9;
+ /* @embed */
background-image: url(images/preferences-base.png);
}
#preferences fieldset.prefsection {
@@ -614,7 +669,7 @@ body.ltr #footer #footer-places {
* The following code is slightly modified from monobook
*
*/
-#content {
+div#content {
line-height: 1.5em;
}
#bodyContent {
@@ -632,7 +687,7 @@ a:visited {
a:active {
color: #faa700;
}
-a:hover {
+a:hover, a:focus {
text-decoration: underline;
}
a.stub {
@@ -669,6 +724,7 @@ h6 {
background: none;
font-weight: normal;
margin: 0;
+ overflow: hidden;
padding-top: .5em;
padding-bottom: .17em;
border-bottom: 1px solid #aaa;
@@ -693,20 +749,13 @@ h5 { font-size: 100%; }
h5 .editsection { font-weight: normal; }
h6 { font-size: 80%; }
h6 .editsection { font-size: 125%; font-weight: normal; }
+.editsection { float: right; }
p {
margin: .4em 0 .5em 0;
line-height: 1.5em;
}
- p img {
- margin: 0;
- }
-abbr,
-acronym,
-.explain {
- border-bottom: 1px dotted black;
- color: black;
- background: none;
- cursor: help;
+p img {
+ margin: 0;
}
q {
font-family: Times, "Times New Roman", serif;
@@ -717,6 +766,13 @@ blockquote {
font-family: Times, "Times New Roman", serif;
font-style: italic;
}*/
+pre, code, tt, kbd, samp {
+ /*
+ * It's important for this rule to first reference an actual font name, some browsers will render the monospace text
+ * too small otherwise, namely Firefox, Chrome and Safari
+ */
+ font-family: monospace, "Courier New";
+}
code {
background-color: #f9f9f9;
}
@@ -732,6 +788,7 @@ ul {
list-style-type: square;
margin: .3em 0 0 1.5em;
padding: 0;
+ /* @embed */
list-style-image: url(images/bullet-icon.png);
}
ol {
@@ -759,14 +816,6 @@ dd {
/* Tables */
table {
font-size: 100%;
- color: black;
- /* we don't want the bottom borders of <h2>s to be visible through
- * floated tables */
- background-color: white;
-}
-fieldset table {
- /* but keep table layouts in forms clean... */
- background: none;
}
/* Forms */
fieldset {
@@ -853,8 +902,6 @@ div.floatleft p { font-style: italic; }
/* Thumbnails */
div.thumb {
margin-bottom: .5em;
- border-style: solid;
- border-color: white;
width: auto;
background-color: transparent;
}
@@ -886,16 +933,17 @@ div.magnify a, div.magnify img {
border: none !important;
background: none !important;
}
+/* @noflip */
div.tright {
clear: right;
float: right;
- border-width: .5em 0 .8em 1.4em;
+ margin: .5em 0 1.3em 1.4em;
}
+/* @noflip */
div.tleft {
float: left;
clear: left;
- margin-right: .5em;
- border-width: .5em 1.4em .8em 0;
+ margin: .5em 1.4em 1.3em 0;
}
img.thumbborder {
border: 1px solid #dddddd;
@@ -919,18 +967,16 @@ img.thumbborder {
padding: .5em 1em;
vertical-align: middle;
}
-/* Site Notice */
+/* Site Notice (includes notices from CentralNotice extension) */
#siteNotice {
+ position: relative;
text-align: center;
font-size: 0.8em;
margin: 0;
}
- #siteNotice div,
- #siteNotice p {
- margin: 0;
- padding: 0;
- margin-bottom: 0.9em;
- }
+#localNotice {
+ margin-bottom: 0.9em;
+}
/* Categories */
.catlinks {
border: 1px solid #aaa;
@@ -988,78 +1034,88 @@ h3, h4, h5 {
font-size: 1.6em;
padding-bottom: 0;
}
-#content a.external,
-#content a[href ^="gopher://"] {
+div#content a.external,
+div#content a[href ^="gopher://"] {
+ /* @embed */
background: url(images/external-link-ltr-icon.png) center right no-repeat;
- padding: 0 13px 0 0;
+ padding-right: 13px;
}
-#content a[href ^="https://"],
+div#content a[href ^="https://"],
.link-https {
+ /* @embed */
background: url(images/lock-icon.png) center right no-repeat;
- padding: 0 18px 0 0;
+ padding-right: 13px;
}
-#content a[href ^="mailto:"],
+div#content a[href ^="mailto:"],
.link-mailto {
+ /* @embed */
background: url(images/mail-icon.png) center right no-repeat;
- padding: 0 18px 0 0;
+ padding-right: 13px;
}
-#content a[href ^="news://"] {
+div#content a[href ^="news://"] {
+ /* @embed */
background: url(images/news-icon.png) center right no-repeat;
- padding: 0 18px 0 0;
+ padding-right: 13px;
}
-#content a[href ^="ftp://"],
+div#content a[href ^="ftp://"],
.link-ftp {
+ /* @embed */
background: url(images/file-icon.png) center right no-repeat;
- padding: 0 18px 0 0;
+ padding-right: 13px;
}
-#content a[href ^="irc://"],
-#content a.extiw[href ^="irc://"],
+div#content a[href ^="irc://"],
+div#content a.extiw[href ^="irc://"],
.link-irc {
+ /* @embed */
background: url(images/talk-icon.png) center right no-repeat;
- padding: 0 18px 0 0;
-}
-#content a.external[href $=".ogg"], #content a.external[href $=".OGG"],
-#content a.external[href $=".mid"], #content a.external[href $=".MID"],
-#content a.external[href $=".midi"], #content a.external[href $=".MIDI"],
-#content a.external[href $=".mp3"], #content a.external[href $=".MP3"],
-#content a.external[href $=".wav"], #content a.external[href $=".WAV"],
-#content a.external[href $=".wma"], #content a.external[href $=".WMA"],
+ padding-right: 13px;
+}
+div#content a.external[href $=".ogg"], div#content a.external[href $=".OGG"],
+div#content a.external[href $=".mid"], div#content a.external[href $=".MID"],
+div#content a.external[href $=".midi"], div#content a.external[href $=".MIDI"],
+div#content a.external[href $=".mp3"], div#content a.external[href $=".MP3"],
+div#content a.external[href $=".wav"], div#content a.external[href $=".WAV"],
+div#content a.external[href $=".wma"], div#content a.external[href $=".WMA"],
.link-audio {
- background: url("images/audio-icon.png") center right no-repeat;
- padding: 0 18px 0 0;
-}
-#content a.external[href $=".ogm"], #content a.external[href $=".OGM"],
-#content a.external[href $=".avi"], #content a.external[href $=".AVI"],
-#content a.external[href $=".mpeg"], #content a.external[href $=".MPEG"],
-#content a.external[href $=".mpg"], #content a.external[href $=".MPG"],
+ /* @embed */
+ background: url("images/audio-icon.png?2") center right no-repeat;
+ padding-right: 13px;
+}
+div#content a.external[href $=".ogm"], div#content a.external[href $=".OGM"],
+div#content a.external[href $=".avi"], div#content a.external[href $=".AVI"],
+div#content a.external[href $=".mpeg"], div#content a.external[href $=".MPEG"],
+div#content a.external[href $=".mpg"], div#content a.external[href $=".MPG"],
.link-video {
- background: url("images/video-icon.png") center right no-repeat;
- padding: 0 18px 0 0;
+ /* @embed */
+ background: url("images/video-icon.png?2") center right no-repeat;
+ padding-right: 13px;
}
-#content a.external[href $=".pdf"], #content a.external[href $=".PDF"],
-#content a.external[href *=".pdf#"], #content a.external[href *=".PDF#"],
-#content a.external[href *=".pdf?"], #content a.external[href *=".PDF?"],
+div#content a.external[href $=".pdf"], div#content a.external[href $=".PDF"],
+div#content a.external[href *=".pdf#"], div#content a.external[href *=".PDF#"],
+div#content a.external[href *=".pdf?"], div#content a.external[href *=".PDF?"],
.link-document {
- background: url("images/document-icon.png") center right no-repeat;
- padding: 0 18px 0 0;
+ /* @embed */
+ background: url("images/document-icon.png?2") center right no-repeat;
+ padding-right: 13px;
}
/* Interwiki Styling (Disabled) */
-#content a.extiw,
-#content a.extiw:active {
+div#content a.extiw,
+div#content a.extiw:active {
color: #36b;
background: none;
padding: 0;
}
-#content a.external {
+div#content a.external {
color: #36b;
}
-#content .printfooter {
+div#content .printfooter {
display: none;
}
/* Icon for Usernames */
#pt-userpage,
#pt-anonuserpage,
#pt-login {
+ /* @embed */
background: url(images/user-icon.png) left top no-repeat;
padding-left: 15px !important;
text-transform: none;
@@ -1094,35 +1150,54 @@ div#bodyContent {
outline: none;
display: block;
width: 26px;
- height: 2.5em;
+ /* This hides the text but shows the background image */
+ padding-top: 3.1em;
+ margin-top: 0;
+ /* Only applied in IE6 */
+ margin-top: -0.8em !ie;
+ height: 0;
+ overflow: hidden;
+ /* @embed */
+ background-image: url(images/watch-icons.png);
}
#ca-unwatch.icon a {
- background-image: url(images/watch-icons.png);
background-position: -43px 60%;
}
#ca-watch.icon a {
- background-image: url(images/watch-icons.png);
background-position: 5px 60%;
}
-#ca-unwatch.icon a:hover {
- background-image: url(images/watch-icons.png);
+#ca-unwatch.icon a:hover,
+#ca-unwatch.icon a:focus {
background-position: -67px 60%;
}
-#ca-watch.icon a:hover {
- background-image: url(images/watch-icons.png);
+#ca-watch.icon a:hover,
+#ca-watch.icon a:focus {
background-position: -19px 60%;
}
#ca-unwatch.icon a.loading,
#ca-watch.icon a.loading {
+ /* @embed */
background-image: url(images/watch-icon-loading.gif);
- background-position: center 60%;
+ background-position: 5px 60%;
}
#ca-unwatch.icon a span,
#ca-watch.icon a span {
display: none;
}
div.vectorTabs ul {
+ /* @embed */
background-image:url(images/tab-break.png);
background-position:right bottom;
background-repeat:no-repeat;
}
+
+/* Convenience links to edit block, delete and protect reasons */
+p.mw-ipb-conveniencelinks, p.mw-protect-editreasons,
+p.mw-filedelete-editreasons, p.mw-delete-editreasons {
+ float: right;
+}
+
+/* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */
+.tipsy {
+ font-size: 0.8em;
+} \ No newline at end of file
diff --git a/skins/vector/wiki-indexed.png b/skins/vector/wiki-indexed.png
deleted file mode 100644
index 189a2ae3..00000000
--- a/skins/vector/wiki-indexed.png
+++ /dev/null
Binary files differ
diff --git a/skins/vector/wiki.png b/skins/vector/wiki.png
deleted file mode 100644
index 2463b521..00000000
--- a/skins/vector/wiki.png
+++ /dev/null
Binary files differ