Bug 553041 (update fennecmark to work with static page set and dynamic web server) p=jmaher r=anodelman

git-svn-id: svn://10.0.0.236/trunk@260096 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
anodelman%mozilla.com 2010-03-29 21:38:07 +00:00
parent a7a8f13d61
commit 4b51afe718
56 changed files with 6200 additions and 4 deletions

View File

@ -198,7 +198,7 @@ tests :
shutdown : False
profile_path: base_profile
- name: tpan
url: startup_test/fennecmark.html?test=PanDown
url: startup_test/fennecmark/fennecmark.html?test=PanDown
resolution: 1
cycles : 10
timeout : 300
@ -208,7 +208,7 @@ tests :
shutdown : False
profile_path: base_profile
- name: tzoom
url: startup_test/fennecmark.html?test=Zoom
url: startup_test/fennecmark/fennecmark.html?test=Zoom
resolution: 1
cycles : 10
timeout : 300

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 891 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 817 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 725 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 664 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 873 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 790 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 768 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 438 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 551 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 867 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 976 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 745 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -0,0 +1,167 @@
// remote scripting library
// (c) copyright 2005 modernmethod, inc
var sajax_debug_mode = false;
var sajax_request_type = "GET";
/**
* if sajax_debug_mode is true, this function outputs given the message into
* the element with id = sajax_debug; if no such element exists in the document,
* it is injected.
*/
function sajax_debug(text) {
if (!sajax_debug_mode) return false;
var e= document.getElementById('sajax_debug');
if (!e) {
e= document.createElement("p");
e.className= 'sajax_debug';
e.id= 'sajax_debug';
var b= document.getElementsByTagName("body")[0];
if (b.firstChild) b.insertBefore(e, b.firstChild);
else b.appendChild(e);
}
var m= document.createElement("div");
m.appendChild( document.createTextNode( text ) );
e.appendChild( m );
return true;
}
/**
* compatibility wrapper for creating a new XMLHttpRequest object.
*/
function sajax_init_object() {
sajax_debug("sajax_init_object() called..")
var A;
try {
// Try the new style before ActiveX so we don't
// unnecessarily trigger warnings in IE 7 when
// set to prompt about ActiveX usage
A = new XMLHttpRequest();
} catch (e) {
try {
A=new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
A=new ActiveXObject("Microsoft.XMLHTTP");
} catch (oc) {
A=null;
}
}
}
if (!A)
sajax_debug("Could not create connection object.");
return A;
}
/**
* Perform an ajax call to mediawiki. Calls are handeled by AjaxDispatcher.php
* func_name - the name of the function to call. Must be registered in $wgAjaxExportList
* args - an array of arguments to that function
* target - the target that will handle the result of the call. If this is a function,
* if will be called with the XMLHttpRequest as a parameter; if it's an input
* element, its value will be set to the resultText; if it's another type of
* element, its innerHTML will be set to the resultText.
*
* Example:
* sajax_do_call('doFoo', [1, 2, 3], document.getElementById("showFoo"));
*
* This will call the doFoo function via MediaWiki's AjaxDispatcher, with
* (1, 2, 3) as the parameter list, and will show the result in the element
* with id = showFoo
*/
function sajax_do_call(func_name, args, target) {
var i, x, n;
var uri;
var post_data;
uri = wgServer +
((wgScript == null) ? (wgScriptPath + "/index.php") : wgScript) +
"?action=ajax";
if (sajax_request_type == "GET") {
if (uri.indexOf("?") == -1)
uri = uri + "?rs=" + encodeURIComponent(func_name);
else
uri = uri + "&rs=" + encodeURIComponent(func_name);
for (i = 0; i < args.length; i++)
uri = uri + "&rsargs[]=" + encodeURIComponent(args[i]);
//uri = uri + "&rsrnd=" + new Date().getTime();
post_data = null;
} else {
post_data = "rs=" + encodeURIComponent(func_name);
for (i = 0; i < args.length; i++)
post_data = post_data + "&rsargs[]=" + encodeURIComponent(args[i]);
}
x = sajax_init_object();
if (!x) {
alert("AJAX not supported");
return false;
}
try {
x.open(sajax_request_type, uri, true);
} catch (e) {
if (window.location.hostname == "localhost") {
alert("Your browser blocks XMLHttpRequest to 'localhost', try using a real hostname for development/testing.");
}
throw e;
}
if (sajax_request_type == "POST") {
x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
}
x.setRequestHeader("Pragma", "cache=yes");
x.setRequestHeader("Cache-Control", "no-transform");
x.onreadystatechange = function() {
if (x.readyState != 4)
return;
sajax_debug("received (" + x.status + " " + x.statusText + ") " + x.responseText);
//if (x.status != 200)
// alert("Error: " + x.status + " " + x.statusText + ": " + x.responseText);
//else
if ( typeof( target ) == 'function' ) {
target( x );
}
else if ( typeof( target ) == 'object' ) {
if ( target.tagName == 'INPUT' ) {
if (x.status == 200) target.value= x.responseText;
//else alert("Error: " + x.status + " " + x.statusText + " (" + x.responseText + ")");
}
else {
if (x.status == 200) target.innerHTML = x.responseText;
else target.innerHTML= "<div class='error'>Error: " + x.status + " " + x.statusText + " (" + x.responseText + ")</div>";
}
}
else {
alert("bad target for sajax_do_call: not a function or object: " + target);
}
return;
}
sajax_debug(func_name + " uri = " + uri + " / post = " + post_data);
x.send(post_data);
sajax_debug(func_name + " waiting..");
delete x;
return true;
}
/**
* @return boolean whether the browser supports XMLHttpRequest
*/
function wfSupportsAjax() {
var request = sajax_init_object();
var supportsAjax = request ? true : false;
delete request;
return supportsAjax;
}

View File

@ -0,0 +1,53 @@
function toggleNotice() {
var notice = document.getElementById('centralNotice');
if (!wgNoticeToggleState) {
notice.className = notice.className.replace('collapsed', 'expanded');
toggleNoticeCookie('0');
} else {
notice.className = notice.className.replace('expanded', 'collapsed');
toggleNoticeCookie('1');
}
wgNoticeToggleState = !wgNoticeToggleState;
}
function toggleNoticeStyle(elems, display) {
if(elems)
for(var i=0;i<elems.length;i++)
elems[i].style.display = display;
}
function toggleNoticeCookie(state) {
var e = new Date();
e.setTime( e.getTime() + (7*24*60*60*1000) ); // one week
var work='hidesnmessage='+state+'; expires=' + e.toGMTString() + '; path=/';
document.cookie = work;
}
function pickTemplate(templates, weights) {
var weightedTemplates = new Array();
var currentTemplate = 0;
var totalWeight = 0;
if (templates.length == 0)
return '';
while (currentTemplate < templates.length) {
totalWeight += weights[currentTemplate];
for (i=0; i<weights[currentTemplate]; i++) {
weightedTemplates[weightedTemplates.length] = templates[currentTemplate];
}
currentTemplate++;
}
if (totalWeight == 0)
return '';
var randomnumber=Math.floor(Math.random()*totalWeight);
return weightedTemplates[randomnumber];
}
var wgNoticeToggleState = (document.cookie.indexOf('hidesnmessage=1')==-1);
document.writeln("\x3cstyle type=\"text/css\"\x3e\n#centralNotice .siteNoticeSmall{display:none;}\n#centralNotice .siteNoticeSmallAnon{display:none;}\n#centralNotice .siteNoticeSmallUser{display:none;}\n#centralNotice.collapsed .siteNoticeBig{display:none;}\n#centralNotice.collapsed .siteNoticeSmall{display:block;}\n#centralNotice.collapsed .siteNoticeSmallUser{display:block;}\n#centralNotice.collapsed .siteNoticeSmallAnon{display:block;}\n#centralNotice.anonnotice .siteNoticeSmallUser{display:none !important;}\n#centralNotice.usernotice .siteNoticeSmallAnon{display:none !important;}\n\x3c/style\x3e");
wgNotice=pickTemplate([],[]);
if (wgNotice != '')
wgNotice='<div id="centralNotice" class="' + (wgNoticeToggleState ? 'expanded' : 'collapsed') + ' ' + (wgUserName ? 'usernotice' : 'anonnotice' ) + '">' + wgNotice+'</div>';

View File

@ -0,0 +1,249 @@
/*
** MediaWiki Print style sheet for CSS2-capable browsers.
** Copyright Gabriel Wicke, http://www.aulinx.de/
**
** Derived from the plone (http://plone.org/) styles
** Copyright Alexander Limi
*/
/* Thanks to A List Apart (http://alistapart.com/) for useful extras */
a.stub,
a.new{ color:#ba0000; text-decoration:none; }
#toc {
/*border:1px solid #2f6fab;*/
border:1px solid #aaaaaa;
background-color:#f9f9f9;
padding:5px;
}
.tocindent {
margin-left: 2em;
}
.tocline {
margin-bottom: 0px;
}
/* images */
div.floatright {
float: right;
clear: right;
margin: 0;
position:relative;
border: 0.5em solid White;
border-width: 0.5em 0 0.8em 1.4em;
}
div.floatright p { font-style: italic;}
div.floatleft {
float: left;
margin: 0.3em 0.5em 0.5em 0;
position:relative;
border: 0.5em solid White;
border-width: 0.5em 1.4em 0.8em 0;
}
div.floatleft p { font-style: italic; }
/* thumbnails */
div.thumb {
margin-bottom: 0.5em;
border-style: solid; border-color: White;
width: auto;
overflow: hidden;
}
div.thumb div {
border:1px solid #cccccc;
padding: 3px !important;
background-color:#f9f9f9;
font-size: 94%;
text-align: center;
}
div.thumb div a img {
border:1px solid #cccccc;
}
div.thumb div div.thumbcaption {
border: none;
padding: 0.3em 0 0.1em 0;
}
div.magnify { display: none; }
div.tright {
float: right;
clear: right;
border-width: 0.5em 0 0.8em 1.4em;
}
div.tleft {
float: left;
margin-right:0.5em;
border-width: 0.5em 1.4em 0.8em 0;
}
img.thumbborder {
border: 1px solid #dddddd;
}
/* table standards */
table.rimage {
float:right;
width:1pt;
position:relative;
margin-left:1em;
margin-bottom:1em;
text-align:center;
}
body {
background: White;
/*font-size: 11pt !important;*/
color: Black;
margin: 0;
padding: 0;
}
.noprint,
div#jump-to-nav,
div.top,
div#column-one,
#colophon,
.editsection,
.toctoggle,
.tochidden,
div#f-poweredbyico,
div#f-copyrightico,
li#viewcount,
li#about,
li#disclaimer,
li#privacy,
#mw-hidden-catlinks {
/* Hides all the elements irrelevant for printing */
display: none;
}
ul {
list-style-type: square;
}
#content {
background: none;
border: none ! important;
padding: 0 ! important;
margin: 0 ! important;
}
#footer {
background : white;
color : black;
border-top: 1px solid black;
}
h1, h2, h3, h4, h5, h6 {
font-weight: bold;
}
p, .documentDescription {
margin: 1em 0 ! important;
line-height: 1.2em;
}
.tocindent p {
margin: 0 0 0 0 ! important;
}
pre {
border: 1pt dashed black;
white-space: pre;
font-size: 8pt;
overflow: auto;
padding: 1em 0;
background : white;
color : black;
}
table.listing,
table.listing td {
border: 1pt solid black;
border-collapse: collapse;
}
a {
color: Black !important;
background: none !important;
padding: 0 !important;
}
a:link, a:visited {
color: #520;
background: transparent;
text-decoration: underline;
}
#content a.external.text:after, #content a.external.autonumber:after {
/* Expand URLs for printing */
content: " (" attr(href) ") ";
}
#globalWrapper {
width: 100% !important;
min-width: 0 !important;
}
#content {
background : white;
color : black;
}
#column-content {
margin: 0 !important;
}
#column-content #content {
padding: 1em;
margin: 0 !important;
}
/* MSIE/Win doesn't understand 'inherit' */
a, a.external, a.new, a.stub {
color: black ! important;
text-decoration: none ! important;
}
/* Continue ... */
a, a.external, a.new, a.stub {
color: inherit ! important;
text-decoration: inherit ! important;
}
img { border: none; }
img.tex { vertical-align: middle; }
span.texhtml { font-family: serif; }
#siteNotice { display: none; }
div.gallerybox {
border: 1px solid #cccccc;
background-color:#f9f9f9;
width: 150px;
}
div.gallerytext {
overflow: visible;
}
/*
** Diff rendering
*/
table.diff { background:white; }
td.diff-otitle { background:#ffffff; }
td.diff-ntitle { background:#ffffff; }
td.diff-addedline {
background:#ccffcc;
font-size: smaller;
border: solid 2px black;
}
td.diff-deletedline {
background:#ffffaa;
font-size: smaller;
border: dotted 2px black;
}
td.diff-context {
background:#eeeeee;
font-size: smaller;
}
.diffchange {
color: silver;
font-weight: bold;
text-decoration: underline;
}

View File

@ -0,0 +1 @@
<html> <head><title>404 Not Found</title></head> <body> <h1>404 Not Found</h1> <p> <span style='font-family: monospace;'>&#47;&#119;&#47;&#105;&#110;&#100;&#101;&#120;&#46;&#112;&#104;&#112;</span> was not found. </p> </body> </html>

View File

@ -0,0 +1 @@
<html> <head><title>404 Not Found</title></head> <body> <h1>404 Not Found</h1> <p> <span style='font-family: monospace;'>&#47;&#119;&#47;&#105;&#110;&#100;&#101;&#120;&#46;&#112;&#104;&#112;</span> was not found. </p> </body> </html>

View File

@ -0,0 +1 @@
<html> <head><title>404 Not Found</title></head> <body> <h1>404 Not Found</h1> <p> <span style='font-family: monospace;'>&#47;&#119;&#47;&#105;&#110;&#100;&#101;&#120;&#46;&#112;&#104;&#112;</span> was not found. </p> </body> </html>

View File

@ -0,0 +1 @@
<html> <head><title>404 Not Found</title></head> <body> <h1>404 Not Found</h1> <p> <span style='font-family: monospace;'>&#47;&#119;&#47;&#105;&#110;&#100;&#101;&#120;&#46;&#112;&#104;&#112;</span> was not found. </p> </body> </html>

View File

@ -0,0 +1 @@
<html> <head><title>404 Not Found</title></head> <body> <h1>404 Not Found</h1> <p> <span style='font-family: monospace;'>&#47;&#119;&#47;&#105;&#110;&#100;&#101;&#120;&#46;&#112;&#104;&#112;</span> was not found. </p> </body> </html>

View File

@ -0,0 +1 @@
<html> <head><title>404 Not Found</title></head> <body> <h1>404 Not Found</h1> <p> <span style='font-family: monospace;'>&#47;&#119;&#47;&#105;&#110;&#100;&#101;&#120;&#46;&#112;&#104;&#112;</span> was not found. </p> </body> </html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 B

View File

@ -0,0 +1,410 @@
/*
** MediaWiki 'chick' style sheet for PDAs or other small-screen devices.
** Copyright Timwi
** License: GPL (http://www.gnu.org/copyleft/gpl.html)
**
** Loosely based on Monobook by Gabriel Wicke
*/
body {
font-family: sans-serif;
color: Black;
margin: 0;
padding: 0.3em;
}
a { color: #002bb8; }
a:visited { color: #5a3696; }
a:active { color: #ffa500; }
a.stub { color: #772233; }
a.new,
#p-personal a.new { color:#ba0000; }
a.new:visited,
#p-personal a.new:visited { color:#a55858; }
img {
border: none;
vertical-align: middle;
}
p {
margin: 0.4em 0em 0.5em 0em;
line-height: 1.5em;
}
p img { margin: 0; }
hr {
height: 1px;
color: #aaaaaa;
background-color: #aaaaaa;
border: 0;
margin: 0.2em 0 0.2em 0;
}
h1, h2, h3, h4, h5, h6 {
color: Black;
background: none;
font-weight: normal;
margin: 0;
padding-top: 0.5em;
padding-bottom: 0.17em;
border-bottom: 1px solid #aaaaaa;
}
.editsection {
font-weight: normal;
}
h1 { font-size: 188%; }
h1 .editsection { font-size: 53.2%; }
h2 { font-size: 150%; }
h2 .editsection { font-size: 66.7%; }
h3, h4, h5, h6 {
border-bottom: none;
font-weight: bold;
}
h3 { font-size: 132%; }
h3 .editsection { font-size: 75.8%; }
h4 { font-size: 116%; }
h4 .editsection { font-size: 86.2%; }
h5 { font-size: 100%; }
h6 { font-size: 80%; }
h6 .editsection { font-size: 125%; }
ul {
line-height: 1.5em;
margin: 0.3em 0 0 1.5em;
padding:0;
}
ol {
line-height: 1.5em;
margin: 0.3em 0 0 3.2em;
padding:0;
list-style-image: none;
}
li { margin-bottom: 0.1em; }
dt {
font-weight: bold;
margin-bottom: 0.1em;
}
dl{
margin-top: 0.2em;
margin-bottom: 0.5em;
}
dd {
line-height: 1.5em;
margin-left: 2em;
margin-bottom: 0.1em;
}
fieldset {
border: 1px solid #2f6fab;
margin: 1em 0em 1em 0em;
padding: 0em 1em 1em 1em;
line-height: 1.5em;
}
legend {
background: White;
padding: 0.5em;
font-size: 95%;
}
form {
border: none;
margin: 0;
}
textarea {
border: 1px solid #2f6fab;
color: Black;
background-color: white;
width: 100%;
padding: 0.1em;
overflow: auto;
}
/* hide this from ie/mac and konq2.2 */
@media All {
head:first-child+body input {
visibility: visible;
border: 1px solid #2f6fab;
color: Black;
background-color: white;
vertical-align: middle;
padding: 0.2em;
}
}
input.historysubmit {
padding: 0 0.3em 0.3em 0.3em !important;
font-size: 94%;
cursor: pointer;
height: 1.7em !important;
margin-left: 1.6em;
}
input[type="radio"],
input[type="checkbox"] { border:none; }
select {
border: 1px solid #2f6fab;
color: Black;
vertical-align: top;
}
abbr, acronym, .explain {
border-bottom: 1px dotted Black;
color: Black;
background: none;
cursor: help;
}
q {
font-family: Times, "Times New Roman", serif;
font-style: italic;
}
code { background-color: #f9f9f9; }
pre {
padding: 1em;
border: 1px dashed #2f6fab;
color: Black;
background-color: #f9f9f9;
line-height: 1.1em;
}
/*
** the main content area
*/
span.subpages { display: block; }
/* Some space under the headers in the content area */
#bodyContent h1, #bodyContent h2 { margin-bottom:0.6em; }
#bodyContent h3,
#bodyContent h4,
#bodyContent h5 {
margin-bottom: 0.3em;
}
#firstHeading { margin-bottom:0.1em; }
/* user notification thing */
.usermessage {
background-color: #ffce7b;
border: 1px solid #ffa500;
color: Black;
font-weight: bold;
margin: 0.1em 0 0 0;
padding: 2px 5px;
vertical-align: middle;
}
#siteNotice {
text-align: center;
font-size: 95%;
padding: 0 0.9em 0 0.9em;
}
#siteNotice p { margin: 0; padding: 0; }
.error {
color: red;
font-size: larger;
}
.catlinks {
border:1px solid #aaaaaa;
background-color:#f9f9f9;
padding: 2px 5px;
margin: 0.1em 0 0 0;
clear: both;
}
.catlinks { margin: 0; padding: 0; }
/* currently unused, intended to be used by a metadata box
in the bottom-right corner of the content area */
.documentDescription {
/* The summary text describing the document */
font-weight: bold;
display: block;
margin: 1em 0em;
line-height: 1.5em;
}
.documentByLine {
text-align: right;
font-size: 90%;
clear: both;
font-weight: normal;
color: #76797c;
}
/* emulate center */
.center {
width: 100%;
text-align: center;
}
*.center * {
margin-left: auto;
margin-right: auto;
}
/* small for tables and similar */
.small, .small * { font-size: 94%; }
table.small { font-size: 100% }
/*
** content styles
*/
#toc {
/*border:1px solid #2f6fab;*/
border:1px solid #aaaaaa;
background-color:#f9f9f9;
padding:5px;
font-size: 95%;
}
#toc ul { margin-left: 2em; }
#toc .toctoggle { font-size: 94%; }
#toc .editsection {
margin-top: 0.7em;
font-size: 94%;
}
/* images */
div.floatright, table.floatright {
clear: right;
float: right;
margin: 0;
position: relative;
border: 0.5em solid White;
border-width: 0.5em 0 0.8em 1.4em;
}
div.floatright p { font-style: italic; }
div.floatleft, table.floatleft {
float: left;
clear: left;
margin: 0.3em 0.5em 0.5em 0;
position: relative;
border: 0.5em solid White;
border-width: 0.5em 1.4em 0.8em 0;
}
div.floatleft p { font-style: italic; }
/* thumbnails */
div.thumb {
margin-bottom: 0.5em;
border-style: solid; border-color: White;
width: auto;
}
div.thumb div {
border:1px solid #cccccc;
padding: 3px !important;
background-color:#f9f9f9;
font-size: 94%;
text-align: center;
overflow: hidden;
}
div.thumb div a img {
border:1px solid #cccccc;
}
div.thumb div div.thumbcaption {
border: none;
text-align: left;
line-height: 1.4em;
padding: 0.3em 0 0.1em 0;
}
div.magnify {
float: right;
border: none !important;
background: none !important;
}
div.magnify a, div.magnify img {
display: block;
border: none !important;
background: none !important;
}
div.tright {
clear: right;
float: right;
border-width: 0.5em 0 0.8em 1.4em;
}
div.tleft {
float: left;
clear: left;
margin-right:0.5em;
border-width: 0.5em 1.4em 0.8em 0;
}
img.thumbborder {
border: 1px solid #dddddd;
}
.hiddenStructure {
display: none;
}
/*
** classes for special content elements like town boxes
** intended to be referenced directly from the wiki src
*/
/*
** User styles
*/
/* table standards */
table.rimage {
float:right;
position:relative;
margin-left:1em;
margin-bottom:1em;
text-align:center;
}
.toccolours {
border:1px solid #aaaaaa;
background-color:#f9f9f9;
padding:5px;
font-size: 95%;
}
/*
** edit views etc
*/
.special li {
line-height: 1.4em;
margin: 0;
padding: 0;
}
a.external { color: #3366bb; }
div#footer { text-align: center; }
ul#f-list li { list-style: none; text-align: center; }
div.portlet { margin: 0.5em 0; }
.redirectText {
font-size:150%;
margin:5px;
}
ul.special li.not-patrolled, ol.special li.not-patrolled {
background-color: #ffa;
}
div.patrollink {
font-size: 75%;
text-align: right;
}
span.updatedmarker {
color:black;
background-color:#00FF00;
}
div.gallerybox {
width: 150px;
}
#xjump-to-nav {
display: none;
}
.templatesUsed { margin-top: 1.5em; }
.printfooter {
display: none;
}
#footer {
background-color: white;
border-top: 1px solid #fabd23;
border-bottom: 1px solid #fabd23;
margin: .6em 0 1em 0;
padding: .4em 0 1.2em 0;
text-align: center;
font-size: 90%;
}
#f-poweredbyico, #f-copyrightico {
display: inline;
}

View File

@ -0,0 +1,861 @@
/*
* OpenSearch ajax suggestion engine for MediaWiki
*
* uses core MediaWiki open search support to fetch suggestions
* and show them below search boxes and other inputs
*
* by Robert Stojnic (April 2008)
*/
// search_box_id -> Results object
var os_map = {};
// cached data, url -> json_text
var os_cache = {};
// global variables for suggest_keypress
var os_cur_keypressed = 0;
var os_keypressed_count = 0;
// type: Timer
var os_timer = null;
// tie mousedown/up events
var os_mouse_pressed = false;
var os_mouse_num = -1;
// if true, the last change was made by mouse (and not keyboard)
var os_mouse_moved = false;
// delay between keypress and suggestion (in ms)
var os_search_timeout = 250;
// these pairs of inputs/forms will be autoloaded at startup
var os_autoload_inputs = new Array('searchInput', 'searchInput2', 'powerSearchText', 'searchText');
var os_autoload_forms = new Array('searchform', 'searchform2', 'powersearch', 'search' );
// if we stopped the service
var os_is_stopped = false;
// max lines to show in suggest table
var os_max_lines_per_suggest = 7;
// number of steps to animate expansion/contraction of container width
var os_animation_steps = 6;
// num of pixels of smallest step
var os_animation_min_step = 2;
// delay between steps (in ms)
var os_animation_delay = 30;
// max width of container in percent of normal size (1 == 100%)
var os_container_max_width = 2;
// currently active animation timer
var os_animation_timer = null;
/** Timeout timer class that will fetch the results */
function os_Timer(id,r,query){
this.id = id;
this.r = r;
this.query = query;
}
/** Timer user to animate expansion/contraction of container width */
function os_AnimationTimer(r, target){
this.r = r;
var current = document.getElementById(r.container).offsetWidth;
this.inc = Math.round((target-current) / os_animation_steps);
if(this.inc < os_animation_min_step && this.inc >=0)
this.inc = os_animation_min_step; // minimal animation step
if(this.inc > -os_animation_min_step && this.inc <0)
this.inc = -os_animation_min_step;
this.target = target;
}
/** Property class for single search box */
function os_Results(name, formname){
this.searchform = formname; // id of the searchform
this.searchbox = name; // id of the searchbox
this.container = name+"Suggest"; // div that holds results
this.resultTable = name+"Result"; // id base for the result table (+num = table row)
this.resultText = name+"ResultText"; // id base for the spans within result tables (+num)
this.toggle = name+"Toggle"; // div that has the toggle (enable/disable) link
this.query = null; // last processed query
this.results = null; // parsed titles
this.resultCount = 0; // number of results
this.original = null; // query that user entered
this.selected = -1; // which result is selected
this.containerCount = 0; // number of results visible in container
this.containerRow = 0; // height of result field in the container
this.containerTotal = 0; // total height of the container will all results
this.visible = false; // if container is visible
this.stayHidden = false; // don't try to show if lost focus
}
/** Hide results div */
function os_hideResults(r){
var c = document.getElementById(r.container);
if(c != null)
c.style.visibility = "hidden";
r.visible = false;
r.selected = -1;
}
/** Show results div */
function os_showResults(r){
if(os_is_stopped)
return;
if(r.stayHidden)
return
os_fitContainer(r);
var c = document.getElementById(r.container);
r.selected = -1;
if(c != null){
c.scrollTop = 0;
c.style.visibility = "visible";
r.visible = true;
}
}
function os_operaWidthFix(x){
// For browsers that don't understand overflow-x, estimate scrollbar width
if(typeof document.body.style.overflowX != "string"){
return 30;
}
return 0;
}
function os_encodeQuery(value){
if (encodeURIComponent) {
return encodeURIComponent(value);
}
if(escape) {
return escape(value);
}
return null;
}
function os_decodeValue(value){
if (decodeURIComponent) {
return decodeURIComponent(value);
}
if(unescape){
return unescape(value);
}
return null;
}
/** Brower-dependent functions to find window inner size, and scroll status */
function f_clientWidth() {
return f_filterResults (
window.innerWidth ? window.innerWidth : 0,
document.documentElement ? document.documentElement.clientWidth : 0,
document.body ? document.body.clientWidth : 0
);
}
function f_clientHeight() {
return f_filterResults (
window.innerHeight ? window.innerHeight : 0,
document.documentElement ? document.documentElement.clientHeight : 0,
document.body ? document.body.clientHeight : 0
);
}
function f_scrollLeft() {
return f_filterResults (
window.pageXOffset ? window.pageXOffset : 0,
document.documentElement ? document.documentElement.scrollLeft : 0,
document.body ? document.body.scrollLeft : 0
);
}
function f_scrollTop() {
return f_filterResults (
window.pageYOffset ? window.pageYOffset : 0,
document.documentElement ? document.documentElement.scrollTop : 0,
document.body ? document.body.scrollTop : 0
);
}
function f_filterResults(n_win, n_docel, n_body) {
var n_result = n_win ? n_win : 0;
if (n_docel && (!n_result || (n_result > n_docel)))
n_result = n_docel;
return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}
/** Get the height available for the results container */
function os_availableHeight(r){
var absTop = document.getElementById(r.container).style.top;
var px = absTop.lastIndexOf("px");
if(px > 0)
absTop = absTop.substring(0,px);
return f_clientHeight() - (absTop - f_scrollTop());
}
/** Get element absolute position {left,top} */
function os_getElementPosition(elemID){
var offsetTrail = document.getElementById(elemID);
var offsetLeft = 0;
var offsetTop = 0;
while (offsetTrail){
offsetLeft += offsetTrail.offsetLeft;
offsetTop += offsetTrail.offsetTop;
offsetTrail = offsetTrail.offsetParent;
}
if (navigator.userAgent.indexOf('Mac') != -1 && typeof document.body.leftMargin != 'undefined'){
offsetLeft += document.body.leftMargin;
offsetTop += document.body.topMargin;
}
return {left:offsetLeft,top:offsetTop};
}
/** Create the container div that will hold the suggested titles */
function os_createContainer(r){
var c = document.createElement("div");
var s = document.getElementById(r.searchbox);
var pos = os_getElementPosition(r.searchbox);
var left = pos.left;
var top = pos.top + s.offsetHeight;
c.className = "os-suggest";
c.setAttribute("id", r.container);
document.body.appendChild(c);
// dynamically generated style params
// IE workaround, cannot explicitely set "style" attribute
c = document.getElementById(r.container);
c.style.top = top+"px";
c.style.left = left+"px";
c.style.width = s.offsetWidth+"px";
// mouse event handlers
c.onmouseover = function(event) { os_eventMouseover(r.searchbox, event); };
c.onmousemove = function(event) { os_eventMousemove(r.searchbox, event); };
c.onmousedown = function(event) { return os_eventMousedown(r.searchbox, event); };
c.onmouseup = function(event) { os_eventMouseup(r.searchbox, event); };
return c;
}
/** change container height to fit to screen */
function os_fitContainer(r){
var c = document.getElementById(r.container);
var h = os_availableHeight(r) - 20;
var inc = r.containerRow;
h = parseInt(h/inc) * inc;
if(h < (2 * inc) && r.resultCount > 1) // min: two results
h = 2 * inc;
if((h/inc) > os_max_lines_per_suggest )
h = inc * os_max_lines_per_suggest;
if(h < r.containerTotal){
c.style.height = h +"px";
r.containerCount = parseInt(Math.round(h/inc));
} else{
c.style.height = r.containerTotal+"px";
r.containerCount = r.resultCount;
}
}
/** If some entries are longer than the box, replace text with "..." */
function os_trimResultText(r){
// find max width, first see if we could expand the container to fit it
var maxW = 0;
for(var i=0;i<r.resultCount;i++){
var e = document.getElementById(r.resultText+i);
if(e.offsetWidth > maxW)
maxW = e.offsetWidth;
}
var w = document.getElementById(r.container).offsetWidth;
var fix = 0;
if(r.containerCount < r.resultCount){
fix = 20; // give 20px for scrollbar
} else
fix = os_operaWidthFix(w);
if(fix < 4)
fix = 4; // basic padding
maxW += fix;
// resize container to fit more data if permitted
var normW = document.getElementById(r.searchbox).offsetWidth;
var prop = maxW / normW;
if(prop > os_container_max_width)
prop = os_container_max_width;
else if(prop < 1)
prop = 1;
var newW = Math.round( normW * prop );
if( w != newW ){
w = newW;
if( os_animation_timer != null )
clearInterval(os_animation_timer.id)
os_animation_timer = new os_AnimationTimer(r,w);
os_animation_timer.id = setInterval("os_animateChangeWidth()",os_animation_delay);
w -= fix; // this much is reserved
}
// trim results
if(w < 10)
return;
for(var i=0;i<r.resultCount;i++){
var e = document.getElementById(r.resultText+i);
var replace = 1;
var lastW = e.offsetWidth+1;
var iteration = 0;
var changedText = false;
while(e.offsetWidth > w && (e.offsetWidth < lastW || iteration<2)){
changedText = true;
lastW = e.offsetWidth;
var l = e.innerHTML;
e.innerHTML = l.substring(0,l.length-replace)+"...";
iteration++;
replace = 4; // how many chars to replace
}
if(changedText){
// show hint for trimmed titles
document.getElementById(r.resultTable+i).setAttribute("title",r.results[i]);
}
}
}
/** Invoked on timer to animate change in container width */
function os_animateChangeWidth(){
var r = os_animation_timer.r;
var c = document.getElementById(r.container);
var w = c.offsetWidth;
var normW = document.getElementById(r.searchbox).offsetWidth;
var normL = os_getElementPosition(r.searchbox).left;
var inc = os_animation_timer.inc;
var target = os_animation_timer.target;
var nw = w + inc;
if( (inc > 0 && nw >= target) || (inc <= 0 && nw <= target) ){
// finished !
c.style.width = target+"px";
clearInterval(os_animation_timer.id)
os_animation_timer = null;
} else{
// in-progress
c.style.width = nw+"px";
if(document.documentElement.dir == "rtl")
c.style.left = (normL + normW + (target - nw) - os_animation_timer.target - 1)+"px";
}
}
/** Handles data from XMLHttpRequest, and updates the suggest results */
function os_updateResults(r, query, text, cacheKey){
os_cache[cacheKey] = text;
r.query = query;
r.original = query;
if(text == ""){
r.results = null;
r.resultCount = 0;
os_hideResults(r);
} else{
try {
var p = eval('('+text+')'); // simple json parse, could do a safer one
if(p.length<2 || p[1].length == 0){
r.results = null;
r.resultCount = 0;
os_hideResults(r);
return;
}
var c = document.getElementById(r.container);
if(c == null)
c = os_createContainer(r);
c.innerHTML = os_createResultTable(r,p[1]);
// init container table sizes
var t = document.getElementById(r.resultTable);
r.containerTotal = t.offsetHeight;
r.containerRow = t.offsetHeight / r.resultCount;
os_fitContainer(r);
os_trimResultText(r);
os_showResults(r);
} catch(e){
// bad response from server or such
os_hideResults(r);
os_cache[cacheKey] = null;
}
}
}
/** Create the result table to be placed in the container div */
function os_createResultTable(r, results){
var c = document.getElementById(r.container);
var width = c.offsetWidth - os_operaWidthFix(c.offsetWidth);
var html = "<table class=\"os-suggest-results\" id=\""+r.resultTable+"\" style=\"width: "+width+"px;\">";
r.results = new Array();
r.resultCount = results.length;
for(i=0;i<results.length;i++){
var title = os_decodeValue(results[i]);
r.results[i] = title;
html += "<tr><td class=\"os-suggest-result\" id=\""+r.resultTable+i+"\"><span id=\""+r.resultText+i+"\">"+title+"</span></td></tr>";
}
html+="</table>"
return html;
}
/** Fetch namespaces from checkboxes or hidden fields in the search form,
if none defined use wgSearchNamespaces global */
function os_getNamespaces(r){
var namespaces = "";
var elements = document.forms[r.searchform].elements;
for(i=0; i < elements.length; i++){
var name = elements[i].name;
if(typeof name != 'undefined' && name.length > 2
&& name[0]=='n' && name[1]=='s'
&& ((elements[i].type=='checkbox' && elements[i].checked)
|| (elements[i].type=='hidden' && elements[i].value=="1")) ){
if(namespaces!="")
namespaces+="|";
namespaces+=name.substring(2);
}
}
if(namespaces == "")
namespaces = wgSearchNamespaces.join("|");
return namespaces;
}
/** Update results if user hasn't already typed something else */
function os_updateIfRelevant(r, query, text, cacheKey){
var t = document.getElementById(r.searchbox);
if(t != null && t.value == query){ // check if response is still relevant
os_updateResults(r, query, text, cacheKey);
}
r.query = query;
}
/** Fetch results after some timeout */
function os_delayedFetch(){
if(os_timer == null)
return;
var r = os_timer.r;
var query = os_timer.query;
os_timer = null;
var path = wgMWSuggestTemplate.replace("{namespaces}",os_getNamespaces(r))
.replace("{dbname}",wgDBname)
.replace("{searchTerms}",os_encodeQuery(query));
// try to get from cache, if not fetch using ajax
var cached = os_cache[path];
if(cached != null){
os_updateIfRelevant(r, query, cached, path);
} else{
var xmlhttp = sajax_init_object();
if(xmlhttp){
try {
xmlhttp.open("GET", path, true);
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && typeof os_updateIfRelevant == 'function') {
os_updateIfRelevant(r, query, xmlhttp.responseText, path);
}
};
xmlhttp.send(null);
} catch (e) {
if (window.location.hostname == "localhost") {
alert("Your browser blocks XMLHttpRequest to 'localhost', try using a real hostname for development/testing.");
}
throw e;
}
}
}
}
/** Init timed update via os_delayedUpdate() */
function os_fetchResults(r, query, timeout){
if(query == ""){
r.query = "";
os_hideResults(r);
return;
} else if(query == r.query)
return; // no change
os_is_stopped = false; // make sure we're running
/* var cacheKey = wgDBname+":"+query;
var cached = os_cache[cacheKey];
if(cached != null){
os_updateResults(r,wgDBname,query,cached);
return;
} */
// cancel any pending fetches
if(os_timer != null && os_timer.id != null)
clearTimeout(os_timer.id);
// schedule delayed fetching of results
if(timeout != 0){
os_timer = new os_Timer(setTimeout("os_delayedFetch()",timeout),r,query);
} else{
os_timer = new os_Timer(null,r,query);
os_delayedFetch(); // do it now!
}
}
/** Change the highlighted row (i.e. suggestion), from position cur to next */
function os_changeHighlight(r, cur, next, updateSearchBox){
if (next >= r.resultCount)
next = r.resultCount-1;
if (next < -1)
next = -1;
r.selected = next;
if (cur == next)
return; // nothing to do.
if(cur >= 0){
var curRow = document.getElementById(r.resultTable + cur);
if(curRow != null)
curRow.className = "os-suggest-result";
}
var newText;
if(next >= 0){
var nextRow = document.getElementById(r.resultTable + next);
if(nextRow != null)
nextRow.className = os_HighlightClass();
newText = r.results[next];
} else
newText = r.original;
// adjust the scrollbar if any
if(r.containerCount < r.resultCount){
var c = document.getElementById(r.container);
var vStart = c.scrollTop / r.containerRow;
var vEnd = vStart + r.containerCount;
if(next < vStart)
c.scrollTop = next * r.containerRow;
else if(next >= vEnd)
c.scrollTop = (next - r.containerCount + 1) * r.containerRow;
}
// update the contents of the search box
if(updateSearchBox){
os_updateSearchQuery(r,newText);
}
}
function os_HighlightClass() {
var match = navigator.userAgent.match(/AppleWebKit\/(\d+)/);
if (match) {
var webKitVersion = parseInt(match[1]);
if (webKitVersion < 523) {
// CSS system highlight colors broken on old Safari
// https://bugs.webkit.org/show_bug.cgi?id=6129
// Safari 3.0.4, 3.1 known ok
return "os-suggest-result-hl-webkit";
}
}
return "os-suggest-result-hl";
}
function os_updateSearchQuery(r,newText){
document.getElementById(r.searchbox).value = newText;
r.query = newText;
}
/** Find event target */
function os_getTarget(e){
if (!e) e = window.event;
if (e.target) return e.target;
else if (e.srcElement) return e.srcElement;
else return null;
}
/********************
* Keyboard events
********************/
/** Event handler that will fetch results on keyup */
function os_eventKeyup(e){
var targ = os_getTarget(e);
var r = os_map[targ.id];
if(r == null)
return; // not our event
// some browsers won't generate keypressed for arrow keys, catch it
if(os_keypressed_count == 0){
os_processKey(r,os_cur_keypressed,targ);
}
var query = targ.value;
os_fetchResults(r,query,os_search_timeout);
}
/** catch arrows up/down and escape to hide the suggestions */
function os_processKey(r,keypressed,targ){
if (keypressed == 40){ // Arrow Down
if (r.visible) {
os_changeHighlight(r, r.selected, r.selected+1, true);
} else if(os_timer == null){
// user wants to get suggestions now
r.query = "";
os_fetchResults(r,targ.value,0);
}
} else if (keypressed == 38){ // Arrow Up
if (r.visible){
os_changeHighlight(r, r.selected, r.selected-1, true);
}
} else if(keypressed == 27){ // Escape
document.getElementById(r.searchbox).value = r.original;
r.query = r.original;
os_hideResults(r);
} else if(r.query != document.getElementById(r.searchbox).value){
// os_hideResults(r); // don't show old suggestions
}
}
/** When keys is held down use a timer to output regular events */
function os_eventKeypress(e){
var targ = os_getTarget(e);
var r = os_map[targ.id];
if(r == null)
return; // not our event
var keypressed = os_cur_keypressed;
os_keypressed_count++;
os_processKey(r,keypressed,targ);
}
/** Catch the key code (Firefox bug) */
function os_eventKeydown(e){
if (!e) e = window.event;
var targ = os_getTarget(e);
var r = os_map[targ.id];
if(r == null)
return; // not our event
os_mouse_moved = false;
os_cur_keypressed = (e.keyCode == undefined) ? e.which : e.keyCode;
os_keypressed_count = 0;
}
/** Event: loss of focus of input box */
function os_eventBlur(e){
var targ = os_getTarget(e);
var r = os_map[targ.id];
if(r == null)
return; // not our event
if(!os_mouse_pressed){
os_hideResults(r);
// force canvas to stay hidden
r.stayHidden = true
// cancel any pending fetches
if(os_timer != null && os_timer.id != null)
clearTimeout(os_timer.id);
os_timer = null
}
}
/** Event: focus (catch only when stopped) */
function os_eventFocus(e){
var targ = os_getTarget(e);
var r = os_map[targ.id];
if(r == null)
return; // not our event
r.stayHidden = false
}
/********************
* Mouse events
********************/
/** Mouse over the container */
function os_eventMouseover(srcId, e){
var targ = os_getTarget(e);
var r = os_map[srcId];
if(r == null || !os_mouse_moved)
return; // not our event
var num = os_getNumberSuffix(targ.id);
if(num >= 0)
os_changeHighlight(r,r.selected,num,false);
}
/* Get row where the event occured (from its id) */
function os_getNumberSuffix(id){
var num = id.substring(id.length-2);
if( ! (num.charAt(0) >= '0' && num.charAt(0) <= '9') )
num = num.substring(1);
if(os_isNumber(num))
return parseInt(num);
else
return -1;
}
/** Save mouse move as last action */
function os_eventMousemove(srcId, e){
os_mouse_moved = true;
}
/** Mouse button held down, register possible click */
function os_eventMousedown(srcId, e){
var targ = os_getTarget(e);
var r = os_map[srcId];
if(r == null)
return; // not our event
var num = os_getNumberSuffix(targ.id);
os_mouse_pressed = true;
if(num >= 0){
os_mouse_num = num;
// os_updateSearchQuery(r,r.results[num]);
}
// keep the focus on the search field
document.getElementById(r.searchbox).focus();
return false; // prevents selection
}
/** Mouse button released, check for click on some row */
function os_eventMouseup(srcId, e){
var targ = os_getTarget(e);
var r = os_map[srcId];
if(r == null)
return; // not our event
var num = os_getNumberSuffix(targ.id);
if(num >= 0 && os_mouse_num == num){
os_updateSearchQuery(r,r.results[num]);
os_hideResults(r);
document.getElementById(r.searchform).submit();
}
os_mouse_pressed = false;
// keep the focus on the search field
document.getElementById(r.searchbox).focus();
}
/** Check if x is a valid integer */
function os_isNumber(x){
if(x == "" || isNaN(x))
return false;
for(var i=0;i<x.length;i++){
var c = x.charAt(i);
if( ! (c >= '0' && c <= '9') )
return false;
}
return true;
}
/** When the form is submitted hide everything, cancel updates... */
function os_eventOnsubmit(e){
var targ = os_getTarget(e);
os_is_stopped = true;
// kill timed requests
if(os_timer != null && os_timer.id != null){
clearTimeout(os_timer.id);
os_timer = null;
}
// Hide all suggestions
for(i=0;i<os_autoload_inputs.length;i++){
var r = os_map[os_autoload_inputs[i]];
if(r != null){
var b = document.getElementById(r.searchform);
if(b != null && b == targ){
// set query value so the handler won't try to fetch additional results
r.query = document.getElementById(r.searchbox).value;
}
os_hideResults(r);
}
}
return true;
}
function os_hookEvent(element, hookName, hookFunct) {
if (element.addEventListener) {
element.addEventListener(hookName, hookFunct, false);
} else if (window.attachEvent) {
element.attachEvent("on" + hookName, hookFunct);
}
}
/** Init Result objects and event handlers */
function os_initHandlers(name, formname, element){
var r = new os_Results(name, formname);
// event handler
os_hookEvent(element, "keyup", function(event) { os_eventKeyup(event); });
os_hookEvent(element, "keydown", function(event) { os_eventKeydown(event); });
os_hookEvent(element, "keypress", function(event) { os_eventKeypress(event); });
os_hookEvent(element, "blur", function(event) { os_eventBlur(event); });
os_hookEvent(element, "focus", function(event) { os_eventFocus(event); });
element.setAttribute("autocomplete","off");
// stopping handler
os_hookEvent(document.getElementById(formname), "submit", function(event){ return os_eventOnsubmit(event); });
os_map[name] = r;
// toggle link
if(document.getElementById(r.toggle) == null){
// TODO: disable this while we figure out a way for this to work in all browsers
/* if(name=='searchInput'){
// special case: place above the main search box
var t = os_createToggle(r,"os-suggest-toggle");
var searchBody = document.getElementById('searchBody');
var first = searchBody.parentNode.firstChild.nextSibling.appendChild(t);
} else{
// default: place below search box to the right
var t = os_createToggle(r,"os-suggest-toggle-def");
var top = element.offsetTop + element.offsetHeight;
var left = element.offsetLeft + element.offsetWidth;
t.style.position = "absolute";
t.style.top = top + "px";
t.style.left = left + "px";
element.parentNode.appendChild(t);
// only now width gets calculated, shift right
left -= t.offsetWidth;
t.style.left = left + "px";
t.style.visibility = "visible";
} */
}
}
/** Return the span element that contains the toggle link */
function os_createToggle(r,className){
var t = document.createElement("span");
t.className = className;
t.setAttribute("id", r.toggle);
var link = document.createElement("a");
link.setAttribute("href","javascript:void(0);");
link.onclick = function(){ os_toggle(r.searchbox,r.searchform) };
var msg = document.createTextNode(wgMWSuggestMessages[0]);
link.appendChild(msg);
t.appendChild(link);
return t;
}
/** Call when user clicks on some of the toggle links */
function os_toggle(inputId,formName){
r = os_map[inputId];
var msg = '';
if(r == null){
os_enableSuggestionsOn(inputId,formName);
r = os_map[inputId];
msg = wgMWSuggestMessages[0];
} else{
os_disableSuggestionsOn(inputId,formName);
msg = wgMWSuggestMessages[1];
}
// change message
var link = document.getElementById(r.toggle).firstChild;
link.replaceChild(document.createTextNode(msg),link.firstChild);
}
/** Call this to enable suggestions on input (id=inputId), on a form (name=formName) */
function os_enableSuggestionsOn(inputId, formName){
os_initHandlers( inputId, formName, document.getElementById(inputId) );
}
/** Call this to disable suggestios on input box (id=inputId) */
function os_disableSuggestionsOn(inputId){
r = os_map[inputId];
if(r != null){
// cancel/hide results
os_timer = null;
os_hideResults(r);
// turn autocomplete on !
document.getElementById(inputId).setAttribute("autocomplete","on");
// remove descriptor
os_map[inputId] = null;
}
// Remove the element from the os_autoload_* arrays
var index = os_autoload_inputs.indexOf(inputId);
if ( index >= 0 )
os_autoload_inputs[index] = os_autoload_forms[index] = '';
}
/** Initialization, call upon page onload */
function os_MWSuggestInit() {
for(i=0;i<os_autoload_inputs.length;i++){
var id = os_autoload_inputs[i];
var form = os_autoload_forms[i];
element = document.getElementById( id );
if(element != null)
os_initHandlers(id,form,element);
}
}
hookEvent("load", os_MWSuggestInit);

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,808 @@
/**
* CSS in this file is used by *all* skins (that have any CSS at all). Be
* careful what you put in here, since what looks good in one skin may not in
* another, but don't ignore the poor non-Monobook users either.
*/
/* Colored watchlist and recent changes numbers */
.mw-plusminus-pos { color: #006400; } /* dark green */
.mw-plusminus-neg { color: #8b0000; } /* dark red */
.mw-plusminus-null { color: #aaa; } /* gray */
/* Comment and username portions of RC entries */
span.comment {
font-style: italic;
}
span.changedby {
font-size: 95%;
}
/* Math */
.texvc { direction: ltr; unicode-bidi: embed; }
img.tex { vertical-align: middle; }
span.texhtml { font-family: serif; }
/* add a bit of margin space between the preview and the toolbar */
/* this replaces the ugly <p><br /></p> we used to insert into the page source */
#wikiPreview.ontop { margin-bottom: 1em; }
/* Stop floats from intruding into edit area in previews */
#editform, #toolbar, #wpTextbox1 { clear: both; }
div#mw-js-message {
margin: 1em 5%;
padding: 0.5em 2.5%;
border: solid 1px #ddd;
background-color: #fcfcfc;
}
/* Edit section links */
.editsection {
float: right;
margin-left: 5px;
}
/**
* File histories
*/
table.filehistory th,
table.filehistory td {
vertical-align:top;
}
table.filehistory th {
text-align: left;
}
table.filehistory td.mw-imagepage-filesize,
table.filehistory th.mw-imagepage-filesize {
white-space:nowrap;
}
table.filehistory td.filehistory-selected {
font-weight: bold;
}
/*
* rev_deleted stuff
*/
li span.deleted, span.history-deleted {
text-decoration: line-through;
color: #888;
font-style: italic;
}
/**
* Patrol stuff
*/
.not-patrolled {
background-color: #ffa;
}
.unpatrolled {
font-weight: bold;
color: red;
}
div.patrollink {
font-size: 75%;
text-align: right;
}
/**
* Forms
*/
body.ltr td.mw-label { text-align: right; }
body.ltr td.mw-input { text-align: left; }
body.ltr td.mw-submit { text-align: left; }
body.rtl td.mw-label { text-align: left; }
body.rtl td.mw-input { text-align: right; }
body.rtl td.mw-submit { text-align: right; }
td.mw-label { vertical-align: top; }
.prefsection td.mw-label { width: 20%; }
.prefsection table { width: 100%; }
td.mw-submit { white-space: nowrap; }
table.mw-htmlform-nolabel td.mw-label { width: 0 !important; }
/**
* Image captions
*/
body.rtl .thumbcaption { text-align:right; }
body.rtl .magnify { float:left; }
body.ltr .thumbcaption { text-align:left; }
body.ltr .magnify { float:right; }
/**
* Hidden categories
*/
.mw-hidden-cats-hidden { display: none; }
.catlinks-allhidden { display: none; }
/* 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,
p.mw-revdel-editreasons {
font-size: 90%;
float: right;
}
/* Search results */
.searchresults {
}
.searchresults p {
margin-left: 0.4em;
margin-top: 1em;
margin-bottom: 1.2em;
}
div.searchresult {
font-size: 95%;
width:38em;
}
.mw-search-results {
margin-left: 0.4em;
}
.mw-search-results li {
padding-bottom: 1em;
list-style:none;
list-style-image:none;
}
.mw-search-results li a {
font-size: 108%;
}
.mw-search-result-data {
color: green;
font-size: 97%;
}
.mw-search-formheader {
background-color: #f3f3f3;
margin-top: 1em;
border: 1px solid silver;
}
.mw-search-formheader div.search-types {
float:left;
padding-left: 0.25em;
}
.rtl .mw-search-formheader div.search-types {
float: right;
}
.mw-search-formheader div.search-types ul {
margin: 0 !important;
padding: 0 !important;
list-style: none !important;
}
.mw-search-formheader div.search-types ul li {
float: left;
margin: 0;
padding: 0;
}
.mw-search-formheader div.search-types ul li a {
display: block;
padding: 0.5em;
}
.mw-search-formheader div.search-types ul li.current a {
color: #333333;
cursor: default;
}
.mw-search-formheader div.search-types ul li.current a:hover {
text-decoration: none;
}
.mw-search-formheader div.results-info {
float: right;
padding: 0.5em;
padding-right: 0.75em;
}
.mw-search-formheader div.results-info ul {
margin: 0 !important;
padding: 0 !important;
list-style: none !important;
}
.mw-search-formheader div.results-info ul li {
float: right;
margin: 0;
padding: 0;
}
fieldset#mw-searchoptions {
margin: 0;
padding-left: 0.75em !important;
padding-right: 0.75em !important;
padding-bottom: 0.5em !important;
padding-top: 0.5em !important;
border: none;
background-color: #f9f9f9;
border: 1px solid silver !important;
border-top-width: 0 !important;
}
fieldset#mw-searchoptions legend {
display: none;
}
fieldset#mw-searchoptions h4 {
padding: 0;
margin: 0;
float: left;
}
.rtl fieldset#mw-searchoptions h4 {
float: right;
}
fieldset#mw-searchoptions div#mw-search-togglebox {
float: right;
}
.rtl fieldset#mw-searchoptions div#mw-search-togglebox {
float: left;
}
fieldset#mw-searchoptions div#mw-search-togglebox label {
margin-right: 0.25em;
}
fieldset#mw-searchoptions div#mw-search-togglebox input {
margin-left: 0.25em;
}
fieldset#mw-searchoptions table {
float: left;
margin-right: 3em;
}
fieldset#mw-searchoptions table td {
padding-right: 1em;
}
.rtl fieldset#mw-searchoptions table td {
padding-left: 1em;
padding-right: 0;
}
body.rtl fieldset#mw-searchoptions table {
margin-right: 0;
margin-left: 3em;
float: right;
}
fieldset#mw-searchoptions div.divider {
clear: both;
border-bottom: 1px solid #DDDDDD;
padding-top: 0.5em;
margin-bottom: 0.5em;
}
td#mw-search-menu {
padding-left:6em;
font-size:85%;
}
div#mw-search-interwiki {
float: right;
width: 18em;
border-style: solid;
border-color: #AAAAAA;
border-width: 1px;
margin-top: 2ex;
}
.rtl div#mw-search-interwiki {
float: left;
}
div#mw-search-interwiki li {
font-size: 95%;
}
.mw-search-interwiki-more {
float: right;
font-size: 90%;
}
.rtl .mw-search-interwiki-more {
float: left;
}
div#mw-search-interwiki-caption {
text-align: center;
font-weight: bold;
font-size: 95%;
}
.mw-search-interwiki-project {
font-size: 97%;
text-align: left;
padding-left: 0.2em;
padding-right: 0.15em;
padding-bottom: 0.2em;
padding-top: 0.15em;
background-color:#ececec;
border-top:1px solid #BBBBBB;
}
.rtl .mw-search-interwiki-project {
text-align: right;
}
span.searchalttitle {
font-size: 95%;
}
div.searchdidyoumean {
font-size: 127%;
margin-top: 0.8em;
/* Note that this color won't affect the link, as desired. */
color: #c00;
}
div.searchdidyoumean em {
font-weight: bold;
}
.searchmatch {
font-weight: bold;
}
table#mw-search-top-table {
background-color: transparent;
}
/*
* Advanced PowerSearch box
*/
td#mw-search-togglebox {
text-align: right;
}
table#mw-search-powertable {
width:100%;
}
form#powersearch {
clear: both;
}
/*
* UserRights stuff
*/
.mw-userrights-disabled {
color: #888;
}
table.mw-userrights-groups * td,table.mw-userrights-groups * th {
padding-right: 1.5em;
}
/*
* OpenSearch ajax suggestions
*/
.os-suggest {
overflow: auto;
overflow-x: hidden;
position: absolute;
top: 0px;
left: 0px;
width: 0px;
background-color: white;
background-color: Window;
border-style: solid;
border-color: #AAAAAA;
border-width: 1px;
z-index:99;
font-size:95%;
}
table.os-suggest-results {
font-size: 95%;
cursor: pointer;
border: 0;
border-collapse: collapse;
width: 100%;
}
.os-suggest-result, .os-suggest-result-hl {
white-space: nowrap;
background-color: white;
background-color: Window;
color: black;
color: WindowText;
padding: 2px;
}
.os-suggest-result-hl,
.os-suggest-result-hl-webkit {
background-color: #4C59A6;
color: white;
}
.os-suggest-result-hl {
/* System colors are misimplemented in Safari 3.0 and earlier,
making highlighted text illegible... */
background-color: Highlight;
color: HighlightText;
}
.os-suggest-toggle {
position: relative;
left: 1ex;
font-size: 65%;
}
.os-suggest-toggle-def {
position: absolute;
top: 0px;
left: 0px;
font-size: 65%;
visibility: hidden;
}
/* Page history styling */
/* the auto-generated edit comments */
.autocomment { color: gray; }
#pagehistory .history-user {
margin-left: 0.4em;
margin-right: 0.2em;
}
#pagehistory span.minor { font-weight: bold; }
#pagehistory li { border: 1px solid white; }
#pagehistory li.selected {
background-color: #f9f9f9;
border: 1px dashed #aaa;
}
/** Generic minor/bot/newpage styling */
.newpage, .minor, .bot {
font-weight: bold;
}
/* Special:Contributions styling */
.mw-uctop {
font-weight: bold;
}
/* Special:ListGroupRights styling */
table.mw-listgrouprights-table tr {
vertical-align: top;
}
.listgrouprights-revoked { text-decoration: line-through; }
/* Special:Statistics styling */
td.mw-statistics-numbers {
text-align: right;
}
/* Special:SpecialPages styling */
h4.mw-specialpagesgroup {
background-color: #dcdcdc;
padding: 2px;
margin: .3em 0em 0em 0em;
}
.mw-specialpagerestricted {
font-weight: bold;
}
#shared-image-dup, #shared-image-conflict {
font-style: italic;
}
/* Special:EmailUser styling */
table.mw-emailuser-table {
width: 98%;
}
td#mw-emailuser-sender, td#mw-emailuser-recipient {
font-weight: bold;
}
/* Special:Allpages styling */
table.allpageslist {
background-color: transparent;
}
table.mw-allpages-table-form, table.mw-allpages-table-chunk {
background-color: transparent;
width: 100%;
}
td.mw-allpages-alphaindexline {
text-align: right;
}
td.mw-allpages-nav, p.mw-allpages-nav {
text-align: right;
font-size: smaller;
margin-bottom: 1em;
}
table.mw-allpages-table-form tr {
vertical-align: top;
}
/* Special:Prefixindex styling */
table#mw-prefixindex-list-table,
table#mw-prefixindex-nav-table {
width: 98%;
background-color: transparent;
}
td#mw-prefixindex-nav-form {
font-size: smaller;
margin-bottom: 1em;
text-align: right;
vertical-align: top;
}
/*
* Recreating deleted page warning
* Reupload file warning
* Page protection warning
* incl. log entries for these warnings
*/
div.mw-warning-with-logexcerpt {
padding: 3px;
margin-bottom: 3px;
border: 2px solid #2F6FAB;
}
div.mw-warning-with-logexcerpt ul li {
font-size: 90%;
}
/* (show/hide) revision deletion links */
span.mw-revdelundel-link,
strong.mw-revdelundel-link {
font-size: 90%;
}
span.mw-revdelundel-hidden,
input.mw-revdelundel-hidden {
visibility: hidden;
}
/* feed links */
a.feedlink {
background: url("images/feed-icon.png") center left no-repeat;
padding-left: 16px;
}
/* Plainlinks - this can be used to switch
* off special external link styling */
.plainlinks a {
background: none !important;
padding: 0 !important;
}
/* wikitable class for skinning normal tables */
table.wikitable {
margin: 1em 1em 1em 0;
background: #f9f9f9;
border: 1px #aaa solid;
border-collapse: collapse;
}
.wikitable th, .wikitable td {
border: 1px #aaa solid;
padding: 0.2em;
}
.wikitable th {
background: #f2f2f2;
text-align: center;
}
.wikitable caption {
font-weight: bold;
}
/* hide initially collapsed collapsable tables */
table.collapsed tr.collapsable {
display: none;
}
/* success and error messages */
.success {
color: green;
font-size: larger;
}
.error {
color: red;
font-size: larger;
}
.errorbox, .successbox {
font-size: larger;
border: 2px solid;
padding: .5em 1em;
float: left;
margin-bottom: 2em;
color: #000;
}
.errorbox {
border-color: red;
background-color: #fff2f2;
}
.successbox {
border-color: green;
background-color: #dfd;
}
.errorbox h2, .successbox h2 {
font-size: 1em;
font-weight: bold;
display: inline;
margin: 0 .5em 0 0;
border: none;
}
.visualClear {
clear: both;
}
#mw_trackbacks {
border: solid 1px #bbbbff;
background-color: #eeeeff;
padding: 0.2em;
}
/*
Table pager (e.g. Special:Imagelist)
- remove underlines from the navigation link
- collapse borders
- set the borders to outsets (similar to Special:Allmessages)
- remove line wrapping for all td and th, set background color
- restore line wrapping for the last two table cells (description and size)
*/
.TablePager { min-width: 80%; }
.TablePager_nav a { text-decoration: none; }
.TablePager { border-collapse: collapse; }
.TablePager, .TablePager td, .TablePager th {
border: 1px solid #aaaaaa;
padding: 0 0.15em 0 0.15em;
}
.TablePager th { background-color: #eeeeff }
.TablePager td { background-color: #ffffff }
.TablePager tr:hover td { background-color: #eeeeff }
.imagelist td, .imagelist th { white-space: nowrap }
.imagelist .TablePager_col_links { background-color: #eeeeff }
.imagelist .TablePager_col_img_description { white-space: normal }
.imagelist th.TablePager_sort { background-color: #ccccff }
/* Allmessages table */
#mw-allmessagestable .allmessages-customised td.am_default {
background-color: #fcffc4;
}
#mw-allmessagestable tr.allmessages-customised:hover td.am_default {
background-color: #faff90;
}
#mw-allmessagestable td.am_actual {
background-color: #e2ffe2;
}
#mw-allmessagestable tr.allmessages-customised:hover + tr.allmessages-customised td.am_actual {
background-color: #b1ffb1;
}
/* filetoc */
ul#filetoc {
text-align: center;
border: 1px solid #aaaaaa;
background-color: #f9f9f9;
padding: 5px;
font-size: 95%;
margin-bottom: 0.5em;
margin-left: 0;
margin-right: 0;
}
#filetoc li {
display: inline;
list-style-type: none;
padding-right: 2em;
}
/* Classes for EXIF data display */
table.mw_metadata {
font-size: 0.8em;
margin-left: 0.5em;
margin-bottom: 0.5em;
width: 300px;
}
table.mw_metadata caption {
font-weight: bold;
}
table.mw_metadata th {
font-weight: normal;
}
table.mw_metadata td {
padding: 0.1em;
}
table.mw_metadata {
border: none;
border-collapse: collapse;
}
table.mw_metadata td, table.mw_metadata th {
text-align: center;
border: 1px solid #aaaaaa;
padding-left: 0.1em;
padding-right: 0.1em;
}
table.mw_metadata th {
background-color: #f9f9f9;
}
table.mw_metadata td {
background-color: #fcfcfc;
}
/* Galleries */
table.gallery {
border: 1px solid #ccc;
margin: 2px;
padding: 2px;
background-color: white;
}
table.gallery tr {
vertical-align: top;
}
table.gallery td {
vertical-align: top;
background-color: #f9f9f9;
border: solid 2px white;
}
table.gallery caption {
font-weight: bold;
}
div.gallerybox {
margin: 2px;
}
div.gallerybox div.thumb {
text-align: center;
border: 1px solid #ccc;
margin: 2px;
}
div.gallerytext {
overflow: hidden;
font-size: 94%;
padding: 2px 4px;
}
table.mw-enhanced-rc {
background: none;
border:0;
border-spacing:0;
}
td.mw-enhanced-rc {
white-space:nowrap;
padding:0;
vertical-align:top;
font-family:monospace
}
#mw-addcategory-prompt {
display: inline;
margin-left: 1em;
}
#mw-addcategory-prompt input {
margin-left: 0.5em;
margin-right: 0.5em;
}
.mw-remove-category {
padding: 8px;
background-image: url(images/remove.png);
background-position: center center;
background-repeat: no-repeat;
}
.mw-ajax-addcategory {
padding-left: 20px;
background-image: url(images/add.png);
background-position: left center;
background-repeat: no-repeat;
}
.mw-ajax-loader {
background-image: url(images/ajax-loader.gif);
background-position: center center;
background-repeat: no-repeat;
padding: 16px;
position: relative;
top: -16px;
}

View File

@ -0,0 +1 @@
<html> <head><title>404 Not Found</title></head> <body> <h1>404 Not Found</h1> <p> <span style='font-family: monospace;'>&#47;&#105;&#109;&#97;&#103;&#101;&#115;&#47;&#119;&#105;&#107;&#105;&#109;&#101;&#100;&#105;&#97;&#45;&#98;&#117;&#116;&#116;&#111;&#110;&#46;&#112;&#110;&#103;</span> was not found. </p> </body> </html>

View File

@ -5,6 +5,7 @@
<body>
<script>
var test = "";
var webServer = "localhost";
function parseParams() {
var s = document.location.search.substring(1);
var params = s.split('&');
@ -14,6 +15,9 @@
case 'test':
test = fields[1];
break;
case 'webServer':
webServer = fields[1].replace("%2f", "/").replace("%3c", ":");
break;
}
}
}
@ -21,6 +25,8 @@
if (test == "Zoom" || test == "PanDown") {
var element = document.createElement("myExtensionDataElement");
element.setAttribute("attribute1", test);
element.setAttribute("webServer", webServer);
document.documentElement.appendChild(element);
var evt = document.createEvent("Events");

File diff suppressed because it is too large Load Diff

View File

@ -201,7 +201,7 @@ tests :
shutdown : False
profile_path: base_profile
- name: tpan
url: startup_test/fennecmark.html?test=PanDown
url: startup_test/fennecmark/fennecmark.html?test=PanDown
resolution: 1
cycles : 10
timeout : 300
@ -211,7 +211,7 @@ tests :
shutdown : False
profile_path: base_profile
- name: tzoom
url: startup_test/fennecmark.html?test=Zoom
url: startup_test/fennecmark/fennecmark.html?test=Zoom
resolution: 1
cycles : 10
timeout : 300