diff options
Diffstat (limited to 'resources/src/mediawiki.legacy')
15 files changed, 2731 insertions, 0 deletions
diff --git a/resources/src/mediawiki.legacy/ajax.js b/resources/src/mediawiki.legacy/ajax.js new file mode 100644 index 00000000..6b9464a9 --- /dev/null +++ b/resources/src/mediawiki.legacy/ajax.js @@ -0,0 +1,194 @@ +/** + * Remote Scripting Library + * Copyright 2005 modernmethod, inc + * Under the open source BSD license + * http://www.modernmethod.com/sajax/ + */ + +/*jshint camelcase:false */ +/*global alert */ +( function ( mw ) { + +/** + * 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 debug( text ) { + if ( !window.sajax_debug_mode ) { + return false; + } + + var b, m, + e = document.getElementById( 'sajax_debug' ); + + if ( !e ) { + e = document.createElement( 'p' ); + e.className = 'sajax_debug'; + e.id = 'sajax_debug'; + + b = document.getElementsByTagName( 'body' )[0]; + + if ( b.firstChild ) { + b.insertBefore( e, b.firstChild ); + } else { + b.appendChild( e ); + } + } + + m = document.createElement( 'div' ); + m.appendChild( document.createTextNode( text ) ); + + e.appendChild( m ); + + return true; +} + +/** + * Compatibility wrapper for creating a new XMLHttpRequest object. + */ +function createXhr() { + 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 ( xhrE ) { + try { + a = new window.ActiveXObject( 'Msxml2.XMLHTTP' ); + } catch ( msXmlE ) { + try { + a = new window.ActiveXObject( 'Microsoft.XMLHTTP' ); + } catch ( msXhrE ) { + a = null; + } + } + } + if ( !a ) { + debug( 'Could not create connection object.' ); + } + + return a; +} + +/** + * Perform an AJAX call to MediaWiki. Calls are handled 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 doAjaxRequest( func_name, args, target ) { + var i, x, uri, post_data; + uri = mw.util.wikiScript() + '?action=ajax'; + if ( window.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 = createXhr(); + if ( !x ) { + alert( 'AJAX not supported' ); + return false; + } + + try { + x.open( window.sajax_request_type, uri, true ); + } catch ( e ) { + if ( location.hostname === 'localhost' ) { + alert( 'Your browser blocks XMLHttpRequest to "localhost", try using a real hostname for development/testing.' ); + } + throw e; + } + if ( window.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; + } + + 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 ); + } + }; + + debug( func_name + ' uri = ' + uri + ' / post = ' + post_data ); + x.send( post_data ); + debug( func_name + ' waiting..' ); + + return true; +} + +/** + * @return {boolean} Whether the browser supports AJAX + */ +function wfSupportsAjax() { + var request = createXhr(), + supportsAjax = request ? true : false; + + request = undefined; + return supportsAjax; +} + +// Expose + Mark as deprecated +var deprecationNotice = 'Sajax is deprecated, use jQuery.ajax or mediawiki.api instead.'; + +// Variables +mw.log.deprecate( window, 'sajax_debug_mode', false, deprecationNotice ); +mw.log.deprecate( window, 'sajax_request_type', 'GET', deprecationNotice ); +// Methods +mw.log.deprecate( window, 'sajax_debug', debug, deprecationNotice ); +mw.log.deprecate( window, 'sajax_init_object', createXhr, deprecationNotice ); +mw.log.deprecate( window, 'sajax_do_call', doAjaxRequest, deprecationNotice ); +mw.log.deprecate( window, 'wfSupportsAjax', wfSupportsAjax, deprecationNotice ); + +}( mediaWiki ) ); diff --git a/resources/src/mediawiki.legacy/commonPrint.css b/resources/src/mediawiki.legacy/commonPrint.css new file mode 100644 index 00000000..830b02fa --- /dev/null +++ b/resources/src/mediawiki.legacy/commonPrint.css @@ -0,0 +1,435 @@ +/** + * 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 */ + +/** + * Hide all the elements irrelevant for printing + */ +.noprint, +div#jump-to-nav, +.mw-jump, +div.top, +div#column-one, +#colophon, +.mw-editsection, +.mw-editsection-like, +.toctoggle, +#toc.tochidden, +div#f-poweredbyico, +div#f-copyrightico, +li#viewcount, +li#about, +li#disclaimer, +li#mobileview, +li#privacy, +#footer-places, +.mw-hidden-catlinks, +tr.mw-metadata-show-hide-extended, +span.mw-filepage-other-resolutions, +#filetoc, +.usermessage, +.patrollink, +#mw-navigation, +#siteNotice { + display: none; +} + +/** + * Pagination + */ +.wikitable, .thumb, img { + page-break-inside: avoid; +} + +h2, h3, h4, h5, h6 { + page-break-after: avoid; +} + +p { + widows: 3; + orphans: 3; +} + +/** + * Generic HTML elements + */ +body { + background: white; + color: black; + margin: 0; + padding: 0; +} + +ul { + list-style-type: square; +} + +h1, h2, h3, h4, h5, h6 { + font-weight: bold; +} + +dt { + font-weight: bold; +} + +p { + margin: 1em 0; + line-height: 1.2em; +} + +pre, .mw-code { + border: 1pt dashed black; + white-space: pre; + font-size: 8pt; + overflow: auto; + padding: 1em 0; + background: white; + color: black; +} + +/** + * MediaWiki-specific elements + */ +#globalWrapper { + width: 100% !important; + min-width: 0 !important; +} + +.mw-body { + background: white; + border: none !important; + padding: 0 !important; + margin: 0 !important; + direction: ltr; + color: black; +} + +#column-content { + margin: 0 !important; +} + +#column-content .mw-body { + padding: 1em; + margin: 0 !important; +} + +#toc { + border: 1px solid #aaaaaa; + background-color: #f9f9f9; + padding: 5px; + display: -moz-inline-block; + display: inline-block; + display: table; + /* IE7 and earlier */ + zoom: 1; + *display: inline; +} + +#footer { + background: white; + color: black; + margin-top: 1em; + border-top: 1px solid #AAA; + direction: ltr; +} + +img { + border: none; + vertical-align: middle; +} + +/* math */ +span.texhtml { + font-family: serif; +} + +/** + * Links + */ +a.stub, +a.new { + color: #ba0000; + text-decoration: none; +} + +a { + color: black !important; + background: none !important; + padding: 0 !important; +} + +a:link, a:visited { + color: #520; + background: transparent; + text-decoration: underline; +} + +/* Expand URLs for printing */ +.mw-body a.external.text:after, +.mw-body a.external.autonumber:after { + content: " (" attr(href) ")"; +} + +/* Expand protocol-relative URLs for printing */ +.mw-body a.external.text[href^='//']:after, +.mw-body a.external.autonumber[href^='//']:after { + content: " (https:" attr(href) ")"; +} + +/* 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; +} + +/** + * Floating divs + */ +div.floatright { + float: right; + clear: right; + position: relative; + margin: 0.5em 0 0.8em 1.4em; +} + +div.floatright p { + font-style: italic; +} + +div.floatleft { + float: left; + clear: left; + position: relative; + margin: 0.5em 1.4em 0.8em 0; +} + +div.floatleft p { + font-style: italic; +} + +div.center { + text-align: center; +} + +/** + * Thumbnails + */ +div.thumb { + border: none; + width: auto; + margin-top: 0.5em; + margin-bottom: 0.8em; + background-color: transparent; +} + +div.thumbinner { + border: 1px solid #cccccc; + padding: 3px !important; + background-color: White; + font-size: 94%; + text-align: center; + overflow: hidden; +} + +html .thumbimage { + border: 1px solid #cccccc; +} + +html .thumbcaption { + border: none; + text-align: left; + line-height: 1.4em; + padding: 3px !important; + font-size: 94%; +} + +div.magnify { + display: none; +} + +/* @noflip */ +div.tright { + float: right; + clear: right; + margin: 0.5em 0 0.8em 1.4em; +} + +/* @noflip */ +div.tleft { + float: left; + clear: left; + margin: 0.5em 1.4em 0.8em 0; +} + +img.thumbborder { + border: 1px solid #dddddd; +} + +/** + * Galleries (see shared.css for more info) + */ +li.gallerybox { + vertical-align: top; + display: inline-block; +} + +ul.gallery, li.gallerybox { + zoom: 1; + *display: inline; +} + +ul.gallery { + margin: 2px; + padding: 2px; + display: block; +} + +li.gallerycaption { + font-weight: bold; + text-align: center; + display: block; + word-wrap: break-word; +} + +li.gallerybox div.thumb { + text-align: center; + border: 1px solid #ccc; + margin: 2px; +} + +div.gallerytext { + overflow: hidden; + font-size: 94%; + padding: 2px 4px; + word-wrap: break-word; +} + +/** + * 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; +} + +/** + * Table rendering + * As on shared.css but with white background. + */ +table.wikitable, +table.mw_metadata { + margin: 1em 0; + border: 1px #aaa solid; + background: white; + border-collapse: collapse; +} + +table.wikitable > tr > th, table.wikitable > tr > td, +table.wikitable > * > tr > th, table.wikitable > * > tr > td, +.mw_metadata th, .mw_metadata td { + border: 1px #aaa solid; + padding: 0.2em; +} + +table.wikitable > tr > th, +table.wikitable > * > tr > th, +.mw_metadata th { + text-align: center; + background: white; + font-weight: bold; +} + +table.wikitable > caption, +.mw_metadata caption { + font-weight: bold; +} + +table.listing, +table.listing td { + border: 1pt solid black; + border-collapse: collapse; +} + +a.sortheader { + margin: 0 0.3em; +} + +/** + * Categories + */ +.catlinks ul { + display: inline; + margin: 0; + padding: 0; + list-style: none; + list-style-type: none; + list-style-image: none; + vertical-align: middle !ie; +} + +.catlinks li { + display: inline-block; + line-height: 1.15em; + padding: 0 .4em; + border-left: 1px solid #AAA; + margin: 0.1em 0; + zoom: 1; + display: inline !ie; +} + +.catlinks li:first-child { + padding-left: .2em; + border-left: none; +} + +.printfooter { + padding: 1em 0 1em 0; +} diff --git a/resources/src/mediawiki.legacy/images/ajax-loader.gif b/resources/src/mediawiki.legacy/images/ajax-loader.gif Binary files differnew file mode 100644 index 00000000..72203fdd --- /dev/null +++ b/resources/src/mediawiki.legacy/images/ajax-loader.gif diff --git a/resources/src/mediawiki.legacy/images/checker.png b/resources/src/mediawiki.legacy/images/checker.png Binary files differnew file mode 100644 index 00000000..3e9e3d09 --- /dev/null +++ b/resources/src/mediawiki.legacy/images/checker.png diff --git a/resources/src/mediawiki.legacy/images/feed-icon.png b/resources/src/mediawiki.legacy/images/feed-icon.png Binary files differnew file mode 100644 index 00000000..00f49f6c --- /dev/null +++ b/resources/src/mediawiki.legacy/images/feed-icon.png diff --git a/resources/src/mediawiki.legacy/images/feed-icon.svg b/resources/src/mediawiki.legacy/images/feed-icon.svg new file mode 100644 index 00000000..6e5f570a --- /dev/null +++ b/resources/src/mediawiki.legacy/images/feed-icon.svg @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 256 256"><defs><linearGradient x1=".085" y1=".085" x2=".915" y2=".915" id="a"><stop offset="0" stop-color="#E3702D"/><stop offset=".107" stop-color="#EA7D31"/><stop offset=".35" stop-color="#F69537"/><stop offset=".5" stop-color="#FB9E3A"/><stop offset=".702" stop-color="#EA7C31"/><stop offset=".887" stop-color="#DE642B"/><stop offset="1" stop-color="#D95B29"/></linearGradient></defs><rect width="256" height="256" rx="55" ry="55" fill="#CC5D15"/><rect width="246" height="246" rx="50" ry="50" x="5" y="5" fill="#F49C52"/><rect width="236" height="236" rx="47" ry="47" x="10" y="10" fill="url(#a)"/><circle cx="68" cy="189" r="24" fill="#FFF"/><path d="M160 213h-34a82 82 0 0 0-82-82v-34a116 116 0 0 1 116 116zM184 213a140 140 0 0 0-140-140v-35a175 175 0 0 1 175 175z" fill="#FFF"/></svg>
\ No newline at end of file diff --git a/resources/src/mediawiki.legacy/images/help-question-hover.gif b/resources/src/mediawiki.legacy/images/help-question-hover.gif Binary files differnew file mode 100644 index 00000000..515138db --- /dev/null +++ b/resources/src/mediawiki.legacy/images/help-question-hover.gif diff --git a/resources/src/mediawiki.legacy/images/help-question.gif b/resources/src/mediawiki.legacy/images/help-question.gif Binary files differnew file mode 100644 index 00000000..b4fc9c5b --- /dev/null +++ b/resources/src/mediawiki.legacy/images/help-question.gif diff --git a/resources/src/mediawiki.legacy/images/question.png b/resources/src/mediawiki.legacy/images/question.png Binary files differnew file mode 100644 index 00000000..f7405d26 --- /dev/null +++ b/resources/src/mediawiki.legacy/images/question.png diff --git a/resources/src/mediawiki.legacy/images/question.svg b/resources/src/mediawiki.legacy/images/question.svg new file mode 100644 index 00000000..98fbe8dd --- /dev/null +++ b/resources/src/mediawiki.legacy/images/question.svg @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="21.059" height="21.06"><path fill="#575757" d="M10.529 0c-5.814 0-10.529 4.714-10.529 10.529s4.715 10.53 10.529 10.53c5.816 0 10.529-4.715 10.529-10.53s-4.712-10.529-10.529-10.529zm-.002 16.767c-.861 0-1.498-.688-1.498-1.516 0-.862.637-1.534 1.498-1.534.828 0 1.5.672 1.5 1.534 0 .827-.672 1.516-1.5 1.516zm2.137-6.512c-.723.568-1 .931-1 1.739v.5h-2.205v-.603c0-1.517.449-2.136 1.154-2.688.707-.552 1.139-.845 1.139-1.637 0-.672-.414-1.051-1.24-1.051-.707 0-1.328.189-1.982.638l-1.051-1.807c.861-.604 1.93-1.034 3.342-1.034 1.912 0 3.516 1.051 3.516 3.066-.001 1.43-.794 2.188-1.673 2.877z"/></svg>
\ No newline at end of file diff --git a/resources/src/mediawiki.legacy/images/spinner.gif b/resources/src/mediawiki.legacy/images/spinner.gif Binary files differnew file mode 100644 index 00000000..6146be4e --- /dev/null +++ b/resources/src/mediawiki.legacy/images/spinner.gif diff --git a/resources/src/mediawiki.legacy/oldshared.css b/resources/src/mediawiki.legacy/oldshared.css new file mode 100644 index 00000000..d92d3bb9 --- /dev/null +++ b/resources/src/mediawiki.legacy/oldshared.css @@ -0,0 +1,489 @@ +/** + * oldshared.css + * This file contains CSS settings common to Wikistandard, Nostalgia and + * CologneBlue, the old pre-Monobook skins + */ + +/* For clarity, explicitly state some recommendations from + * http://www.w3.org/TR/CSS21/sample.html to make sure the editsection links scale right + */ + +h1 { + font-size: 2em; +} + +h2 { + font-size: 1.5em; +} + +h3 { + font-size: 1.17em; +} + +h4 { + font-size: 1.11em; +} + +h5 { + font-size: 1.05em; +} + +h6 { + font-size: 1em; +} + +h1, h2, h3, h4, h5, h6 { + font-weight: bolder; +} + +/* Now the custom parts */ + +#footer { + clear: both; +} + +/* images */ +/* @noflip */ +div.floatright { + float: right; + clear: right; + margin: 0 0 1em 1em; +} + +/* @noflip */ +div.floatright p { + font-style: italic; +} + +/* @noflip */ +div.floatleft { + float: left; + clear: left; + margin: 0.3em 0.5em 0.5em 0; +} + +/* @noflip */ +div.floatleft p { + font-style: italic; +} + +/* table standards */ +table.rimage { + float: right; + margin-left: 1em; + margin-bottom: 1em; + text-align: center; + font-size: smaller; +} + +/* thumbnails */ +div.thumb { + margin-bottom: .5em; + border-style: solid; + border-color: white; + width: auto; +} + +div.thumbinner { + border: 1px solid #ccc; + padding: 3px; + background-color: #f9f9f9; + font-size: 94%; + text-align: center; + overflow: hidden; +} + +html .thumbimage { + border: 1px solid #ccc; +} + +html .thumbcaption { + border: none; + line-height: 1.4em; + padding: 3px; + font-size: 94%; + text-align: left; +} + +div.magnify { + float: right; + margin-left: 3px; +} + +div.magnify a { + display: block; + /* Hide the text… */ + text-indent: 15px; + white-space: nowrap; + overflow: hidden; + /* …and replace it with the image */ + width: 15px; + height: 11px; + /* @embed */ + background: url(images/magnify-clip-ltr.png) center center no-repeat; + /* Don't annoy people who copy-paste everything too much */ + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} + +/* @noflip */ +div.tright { + clear: right; + float: right; + border-width: .5em 0 .8em 1.4em; +} + +/* @noflip */ +div.tleft { + float: left; + clear: left; + margin-right: .5em; + border-width: .5em 1.4em .8em 0; +} + +img.thumbborder { + border: 1px solid #dddddd; +} + +/* Page history styling */ +/* the auto-generated edit comments */ +.autocomment { + color: #4b4b4b; +} + +img { + border: none; +} + +#toc, +.toc { + border: 1px solid #bba; + background-color: #f7f8ff; + padding: 5px; + font-size: 95%; + text-align: center; + display: -moz-inline-block; + display: inline-block; + display: table; + + /* IE7 and earlier */ + zoom: 1; + *display: inline; + + padding: 7px; +} + +/* CSS for backwards-compatibility with cached page renders and creative uses in wikitext */ +table#toc, +table.toc { + border-collapse: collapse; +} + +/* Remove additional paddings inside table-cells that are not present in <div>s */ +table#toc td, +table.toc td { + padding: 0; +} + +#toc h2, +.toc h2 { + display: inline; + border: none; + padding: 0; + font-size: 100%; + font-weight: bold; +} + +#toc ul, +.toc ul { + list-style-type: none; + list-style-image: none; + padding: 0; + text-align: left; +} + +#toc ul ul, +.toc ul ul { + margin: 0 0 0 2em; +} + +#toc .toctoggle, +.toc .toctoggle { + font-size: 94%; +} + +.error { + color: red; + font-size: larger; +} + +/* preference page with js-genrated toc */ +#preftoc { + float: left; + margin: 1em 1em 1em 1em; + width: 13em; +} + +#preftoc li { + border: 1px solid White; +} + +#preftoc li.selected { + background-color: #f9f9f9; + border: 1px dashed #aaaaaa; +} + +#preftoc a, +#preftoc a:active { + display: block; + color: #005189; +} + +.mw-prefs-buttons { + clear: left; + float: left; + margin-top: 1em; +} + +div.htmlform-tip { + font-size: 94%; + margin-top: 0.4em; + color: #666; +} + +fieldset.prefsection { + margin-top: 1em; +} + +fieldset.operaprefsection { + margin-left: 15em; +} + +/* emulate center */ +.center { + width: 100%; + text-align: center; +} + +*.center * { + margin-left: auto; + margin-right: auto; +} + +/* small for tables and similar */ +.small { + font-size: 94%; +} + +table.small { + font-size: 100%; +} + +/* use this instead of #toc for page content */ +.toccolours { + border: 1px solid #aaaaaa; + background-color: #f9f9f9; + padding: 5px; + font-size: 95%; +} + +#siteNotice { + border: 1px solid #aaaaaa; + padding-left: 0.5em; + padding-right: 0.5em; +} + +.sharedUploadNotice { + font-style: italic; +} + +span.unpatrolled { + font-weight: bold; + color: red; +} + +span.updatedmarker { + color: black; + background-color: #00FF00; +} + +div.gallerybox { + width: 150px; +} + +span.comment { + font-style: italic; +} + +span.changedby { + font-size: 95%; +} + +.previewnote { + text-align: center; + color: #cc0000; +} + +.editExternally { + border-style: solid; + border-width: 1px; + border-color: gray; + background: #ffffff; + padding: 3px; + margin-top: 0.5em; + float: left; + font-size: small; + text-align: center; +} + +.editExternallyHelp { + font-style: italic; + color: gray; +} + +li span.deleted { + text-decoration: line-through; + color: #888; + font-style: italic; +} + +/* Classes for Exif data display */ +table.mw_metadata { + margin-left: 0.5em; +} + +table.mw_metadata caption { + font-weight: bold; +} + +table.mw_metadata th { + font-weight: normal; +} + +table.mw_metadata td { + padding: 0.1em; +} + +table.mw_metadata { + border: none; + border-collapse: collapse; +} + +table.mw_metadata td, +table.mw_metadata th { + border: 1px solid #aaaaaa; + padding-left: 4px; + padding-right: 4px; +} + +table.mw_metadata th { + background-color: #f9f9f9; +} + +table.mw_metadata td { + background-color: #fcfcfc; +} + +table.mw_metadata td.spacer { + background: inherit; + border-top: none; + border-bottom: none; +} + +.visualClear { + clear: both; +} + +/* Allmessages table */ +#allmessagestable th { + background-color: #b2b2ff; +} + +#allmessagestable tr.orig { + background-color: #ffe2e2; +} + +#allmessagestable tr.new { + background-color: #e2ffe2; +} + +#allmessagestable tr.def { + background-color: #f0f0ff; +} + +#jump-to-nav { + display: none; +} + +div.multipageimagenavbox { + border: solid 1px silver; + padding: 4px; + margin: 1em; + background: #f0f0f0; +} + +div.multipageimagenavbox div.thumb { + border: none; + margin-left: 2em; + margin-right: 2em; +} + +div.multipageimagenavbox hr { + margin: 6px; +} + +table.multipageimage td { + text-align: center; +} + +.templatesUsed { + margin-top: 1em; +} + +.MediaTransformError { + border: thin solid #777; + background-color: #ccc; + padding: 0.1em; +} + +.MediaTransformError td { + text-align: center; + vertical-align: middle; + font-size: 90%; +} + +form#specialpages { + display: inline; +} + +body { + direction: ltr; + unicode-bidi: embed; + background-color: #ffffec; +} + +body.ns-0 { + background-color: white; +} + +/** RTL specific CSS starts here **/ + +/** + * Lists: + * The following lines don't have a visible effect on non-Gecko browsers + * They fix a problem with Gecko browsers rendering lists to the right of + * left-floated objects in an RTL layout. + */ +/* @noflip */ +html > body.rtl div#article ul { + display: table; +} + +/* @noflip */ +html > body.rtl .mw-body ul#filetoc { + display: block; +} + +/* RTL specific CSS ends here **/ diff --git a/resources/src/mediawiki.legacy/protect.js b/resources/src/mediawiki.legacy/protect.js new file mode 100644 index 00000000..f9069b6f --- /dev/null +++ b/resources/src/mediawiki.legacy/protect.js @@ -0,0 +1,240 @@ +( function ( mw, $ ) { + +var ProtectionForm = window.ProtectionForm = { + /** + * Set up the protection chaining interface (i.e. "unlock move permissions" checkbox) + * on the protection form + */ + init: function () { + var $cell = $( '<td>' ), $row = $( '<tr>' ).append( $cell ); + + if ( !$( '#mwProtectSet' ).length ) { + return false; + } + + if ( mw.config.get( 'wgCascadeableLevels' ) !== undefined ) { + $( 'form#mw-Protect-Form' ).submit( this.toggleUnchainedInputs.bind( ProtectionForm, true ) ); + } + this.getExpirySelectors().each( function () { + $( this ).change( ProtectionForm.updateExpiryList.bind( ProtectionForm, this ) ); + } ); + this.getExpiryInputs().each( function () { + $( this ).on( 'keyup change', ProtectionForm.updateExpiry.bind( ProtectionForm, this ) ); + } ); + this.getLevelSelectors().each( function () { + $( this ).change( ProtectionForm.updateLevels.bind( ProtectionForm, this ) ); + } ); + + $( '#mwProtectSet > tbody > tr:first' ).after( $row ); + + // If there is only one protection type, there is nothing to chain + if ( $( '[id ^= mw-protect-table-]' ).length > 1 ) { + $cell.append( + $( '<input>' ) + .attr( { id: 'mwProtectUnchained', type: 'checkbox' } ) + .click( this.onChainClick.bind( this ) ) + .prop( 'checked', !this.areAllTypesMatching() ), + document.createTextNode( ' ' ), + $( '<label>' ) + .attr( 'for', 'mwProtectUnchained' ) + .text( mw.msg( 'protect-unchain-permissions' ) ) + ); + + this.toggleUnchainedInputs( !this.areAllTypesMatching() ); + } + + $( '#mwProtect-reason' ).byteLimit( 180 ); + + this.updateCascadeCheckbox(); + }, + + /** + * Sets the disabled attribute on the cascade checkbox depending on the current selected levels + */ + updateCascadeCheckbox: function () { + this.getLevelSelectors().each( function () { + if ( !ProtectionForm.isCascadeableLevel( $( this ).val() ) ) { + $( '#mwProtect-cascade' ).prop( { checked: false, disabled: true } ); + return false; + } else { + $( '#mwProtect-cascade' ).prop( 'disabled', false ); + } + } ); + }, + + /** + * Checks if a cerain protection level is cascadeable. + * + * @param {string} level + * @return {boolean} + */ + isCascadeableLevel: function ( level ) { + return $.inArray( level, mw.config.get( 'wgCascadeableLevels' ) ) !== -1; + }, + + /** + * When protection levels are locked together, update the rest + * when one action's level changes + * + * @param {Element} source Level selector that changed + */ + updateLevels: function ( source ) { + if ( !this.isUnchained() ) { + this.setAllSelectors( source.selectedIndex ); + } + this.updateCascadeCheckbox(); + }, + + /** + * When protection levels are locked together, update the + * expiries when one changes + * + * @param {Element} source expiry input that changed + */ + + updateExpiry: function ( source ) { + if ( !this.isUnchained() ) { + this.getExpiryInputs().each( function () { + this.value = source.value; + } ); + } + if ( this.isUnchained() ) { + $( '#' + source.id.replace( /^mwProtect-(\w+)-expires$/, 'mwProtectExpirySelection-$1' ) ).val( 'othertime' ); + } else { + this.getExpirySelectors().each( function () { + this.value = 'othertime'; + } ); + } + }, + + /** + * When protection levels are locked together, update the + * expiry lists when one changes and clear the custom inputs + * + * @param {Element} source Expiry selector that changed + */ + updateExpiryList: function ( source ) { + if ( !this.isUnchained() ) { + this.getExpirySelectors().each( function () { + this.value = source.value; + } ); + this.getExpiryInputs().each( function () { + this.value = ''; + } ); + } + }, + + /** + * Update chain status and enable/disable various bits of the UI + * when the user changes the "unlock move permissions" checkbox + */ + onChainClick: function () { + this.toggleUnchainedInputs( this.isUnchained() ); + if ( !this.isUnchained() ) { + this.setAllSelectors( this.getMaxLevel() ); + } + this.updateCascadeCheckbox(); + }, + + /** + * Returns true if the named attribute in all objects in the given array are matching + * + * @param {Object[]} objects + * @param {string} attrName + * @return {boolean} + */ + matchAttribute: function ( objects, attrName ) { + return $.map( objects, function ( object ) { + return object[attrName]; + } ).filter( function ( item, index, a ) { + return index === a.indexOf( item ); + } ).length === 1; + }, + + /** + * Are all actions protected at the same level, with the same expiry time? + * + * @return {boolean} + */ + areAllTypesMatching: function () { + return this.matchAttribute( this.getLevelSelectors(), 'selectedIndex' ) + && this.matchAttribute( this.getExpirySelectors(), 'selectedIndex' ) + && this.matchAttribute( this.getExpiryInputs(), 'value' ); + }, + + /** + * Is protection chaining off? + * + * @return {boolean} + */ + isUnchained: function () { + var element = document.getElementById( 'mwProtectUnchained' ); + return element + ? element.checked + : true; // No control, so we need to let the user set both levels + }, + + /** + * Find the highest protection level in any selector + * @return {number} + */ + getMaxLevel: function () { + return Math.max.apply( Math, this.getLevelSelectors().map( function () { + return this.selectedIndex; + } ) ); + }, + + /** + * Protect all actions at the specified level + * + * @param {number} index Protection level + */ + setAllSelectors: function ( index ) { + this.getLevelSelectors().each( function () { + this.selectedIndex = index; + } ); + }, + + /** + * Get a list of all protection selectors on the page + * + * @return {jQuery} + */ + getLevelSelectors: function () { + return $( 'select[id ^= mwProtect-level-]' ); + }, + + /** + * Get a list of all expiry inputs on the page + * + * @return {jQuery} + */ + getExpiryInputs: function () { + return $( 'input[id ^= mwProtect-][id $= -expires]' ); + }, + + /** + * Get a list of all expiry selector lists on the page + * + * @return {jQuery} + */ + getExpirySelectors: function () { + return $( 'select[id ^= mwProtectExpirySelection-]' ); + }, + + /** + * Enable/disable protection selectors and expiry inputs + * + * @param {boolean} val Enable? + */ + toggleUnchainedInputs: function ( val ) { + var setDisabled = function () { this.disabled = !val; }; + this.getLevelSelectors().slice( 1 ).each( setDisabled ); + this.getExpiryInputs().slice( 1 ).each( setDisabled ); + this.getExpirySelectors().slice( 1 ).each( setDisabled ); + } +}; + +$( ProtectionForm.init.bind( ProtectionForm ) ); + +}( mediaWiki, jQuery ) ); diff --git a/resources/src/mediawiki.legacy/shared.css b/resources/src/mediawiki.legacy/shared.css new file mode 100644 index 00000000..0604773e --- /dev/null +++ b/resources/src/mediawiki.legacy/shared.css @@ -0,0 +1,1167 @@ +/** + * 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 pre-Monobook users either. + */ + +/* GENERAL CLASSES FOR DIRECTIONALITY SUPPORT */ + +/** + * These classes should be used for text depending on the content direction. + * Content stuff like editsection, ul/ol and TOC depend on this. + */ +.mw-content-ltr { + /* @noflip */ + direction: ltr; +} + +.mw-content-rtl { + /* @noflip */ + direction: rtl; +} + +/* Most input fields should be in site direction */ +.sitedir-ltr textarea, +.sitedir-ltr input { + /* @noflip */ + direction: ltr; +} + +.sitedir-rtl textarea, +.sitedir-rtl input { + /* @noflip */ + direction: rtl; +} + +.mw-userlink { + unicode-bidi: embed; +} + +/* User-Agent styles for new HTML5 elements */ +mark { + background-color: yellow; + color: black; +} + +/* Helper for wbr element on IE 8+; in HTML5, but not supported by default as of IE 11. */ +/* Note canonical HTML5 styles recommend "content: \u200B", but this doesn't work as of IE 11. */ +wbr { + display: inline-block; +} + +/* Input types that should follow user direction, like buttons */ +/* TODO: What about buttons in wikipage content ? */ +input[type="submit"], +input[type="button"], +input[type="reset"], +input[type="file"] { + direction: ltr; +} + +/* Override default values */ +textarea[dir="ltr"], +input[dir="ltr"] { + /* @noflip */ + direction: ltr; +} + +textarea[dir="rtl"], +input[dir="rtl"] { + /* @noflip */ + direction: rtl; +} + +/* Default style for semantic tags */ +abbr[title], +.explain[title] { + border-bottom: 1px dotted; + cursor: help; +} + +/* 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 */ +} + +/** + * Links to redirects appear italicized on [[Special:AllPages]], [[Special:PrefixIndex]], + * [[Special:Watchlist/edit]] and in category listings. + */ +.allpagesredirect, +.redirect-in-category, +.watchlistredir { + font-style: italic; +} + +/* 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; +} + +/** + * File description page + */ + +div.mw-filepage-resolutioninfo { + font-size: smaller; +} + +/** + * File histories + */ +h2#filehistory { + clear: both; +} + +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; +} + +/** + * Add a checkered background image on hover for file + * description pages. (bug 26470) + */ +.filehistory a img, +#file img:hover { + /* @embed */ + background: white url(images/checker.png) repeat; +} + +/** + * 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 + */ +td.mw-label { + text-align: right; +} + +td.mw-input { + text-align: left; +} + +td.mw-submit { + text-align: left; +} + +td.mw-label { + vertical-align: top; +} + +.prefsection td.mw-label { + width: 20%; +} + +.prefsection table { + width: 100%; +} + +.prefsection table.mw-htmlform-matrix { + width: auto; +} + +.mw-icon-question { + /* SVG support using a transparent gradient to guarantee cross-browser + * compatibility (browsers able to understand gradient syntax support also SVG). + * http://pauginer.tumblr.com/post/36614680636/invisible-gradient-technique */ + background-image: url(images/question.png); + /* @embed */ + background-image: -webkit-linear-gradient(transparent, transparent), url(images/question.svg); + /* @embed */ + background-image: linear-gradient(transparent, transparent), url(images/question.svg); + background-repeat: no-repeat; + background-size: 13px 13px; + display: inline-block; + height: 13px; + width: 13px; + margin-left: 4px; +} + +.mw-icon-question:lang(ar), +.mw-icon-question:lang(fa), +.mw-icon-question:lang(ur) { + -webkit-transform: scaleX(-1); + -ms-transform: scaleX(-1); + transform: scaleX(-1); +} + +td.mw-submit { + white-space: nowrap; +} + +table.mw-htmlform-nolabel td.mw-label { + width: 1px; +} + +tr.mw-htmlform-vertical-label td.mw-label { + text-align: left !important; +} + +.mw-htmlform-invalid-input td.mw-input input { + border-color: red; +} + +.mw-htmlform-flatlist div.mw-htmlform-flatlist-item { + display: inline; + margin-right: 1em; + white-space: nowrap; +} + +.mw-htmlform-matrix td { + padding-left: 0.5em; + padding-right: 0.5em; +} + +input#wpSummary { + width: 80%; + margin-bottom: 1em; +} + +/** + * Image captions. + * + * This is only meant to provide the most basic of styles, visual settings shouldn't be added here. + */ + +/* @noflip */ +.mw-content-ltr .thumbcaption { + text-align: left; +} + +/* @noflip */ +.mw-content-ltr .magnify { + float: right; +} + +/* @noflip */ +.mw-content-rtl .thumbcaption { + text-align: right; +} + +/* @noflip */ +.mw-content-rtl .magnify { + float: left; +} + +/** + * Categories + */ +#catlinks { + /** + * Overrides text justification (user preference) + * See bug 31990 + */ + text-align: left; +} + +.catlinks ul { + display: inline; + margin: 0; + padding: 0; + list-style: none; + list-style-type: none; + list-style-image: none; + vertical-align: middle !ie; +} + +.catlinks li { + display: inline-block; + line-height: 1.25em; + border-left: 1px solid #AAA; + margin: 0.125em 0; + padding: 0 0.5em; + zoom: 1; + display: inline !ie; +} + +.catlinks li:first-child { + padding-left: 0.25em; + border-left: none; +} + +/* (bug 5346) make category redirects italic */ +.catlinks li a.mw-redirect { + font-style: italic; +} + +/** + * Hidden categories + */ +.mw-hidden-cats-hidden { + display: none; +} + +.catlinks-allhidden { + display: none; +} + +/** + * Convenience links to edit block, delete and protect reasons + * and upload licenses + */ +p.mw-ipb-conveniencelinks, +p.mw-protect-editreasons, +p.mw-filedelete-editreasons, +p.mw-delete-editreasons, +p.mw-revdel-editreasons, +p.mw-upload-editlicenses { + font-size: 90%; + text-align: right; +} + +/* 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; +} + +.mw-history-revisiondelete-button, #mw-fileduplicatesearch-icon { + float: right; +} + +/** Generic minor/bot/newpage styling (recent changes) */ +.newpage, +.minoredit, +.botedit { + font-weight: bold; +} + +#shared-image-dup, +#shared-image-conflict { + font-style: italic; +} + +/** + * 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; + clear: both; +} + +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; +} + +td.mw-revdel-checkbox, +th.mw-revdel-checkbox { + padding-right: 10px; + text-align: center; +} + +/* red links; see bug 36276 */ +a.new { + color: #BA0000; +} + +/* feed links */ +a.feedlink { + /* SVG support using a transparent gradient to guarantee cross-browser + * compatibility (browsers able to understand gradient syntax support also SVG). + * http://pauginer.tumblr.com/post/36614680636/invisible-gradient-technique */ + background-image: url(images/feed-icon.png); + /* @embed */ + background-image: -webkit-linear-gradient(transparent, transparent), url(images/feed-icon.svg); + /* @embed */ + background-image: linear-gradient(transparent, transparent), url(images/feed-icon.svg); + background-position: center left; + background-repeat: no-repeat; + background-size: 12px 12px; + padding-left: 16px; +} + +/* Plainlinks - this can be used to switch + * off special external link styling */ +.plainlinks a.external { + background: none !important; + padding: 0 !important; +} + +/* External URLs should always be treated as LTR (bug 4330) */ +/* @noflip */ .rtl a.external.free, +.rtl a.external.autonumber { + direction: ltr; + unicode-bidi: embed; +} + +/** + * wikitable class for skinning normal tables + * keep in sync with commonPrint.css + */ +table.wikitable { + margin: 1em 0; + background-color: #f9f9f9; + border: 1px #aaa solid; + border-collapse: collapse; + color: black; +} + +table.wikitable > tr > th, +table.wikitable > tr > td, +table.wikitable > * > tr > th, +table.wikitable > * > tr > td { + border: 1px #aaa solid; + padding: 0.2em; +} + +table.wikitable > tr > th, +table.wikitable > * > tr > th { + background-color: #f2f2f2; + text-align: center; +} + +table.wikitable > caption { + font-weight: bold; +} + +/* success and error messages */ +.error, +.warning, +.success { + font-size: larger; +} + +.error { + color: #cc0000; +} + +.warning { + color: #705000; +} + +.success { + color: #009000; +} + +.errorbox, +.warningbox, +.successbox { + border: 1px solid; + padding: .5em 1em; + margin-bottom: 1em; + display: -moz-inline-block; + display: inline-block; + zoom: 1; + *display: inline; +} + +.errorbox h2, +.warningbox h2, +.successbox h2 { + font-size: 1em; + color: inherit; + font-weight: bold; + display: inline; + margin: 0 .5em 0 0; + border: none; +} + +.errorbox { + color: #cc0000; + border-color: #fac5c5; + background-color: #fae3e3; +} + +.warningbox { + color: #705000; + border-color: #fde29b; + background-color: #fdf1d1; +} + +.successbox { + color: #009000; + border-color: #b7fdb5; + background-color: #e1fddf; +} + +/* general info/warning box for SP */ +.mw-infobox { + border: 2px solid #ff7f00; + margin: 0.5em; + clear: left; + overflow: hidden; +} + +.mw-infobox-left { + margin: 7px; + float: left; + width: 35px; +} + +.mw-infobox-right { + margin: 0.5em 0.5em 0.5em 49px; +} + +/* Note on preview page */ +.previewnote { + color: #c00; + margin-bottom: 1em; +} + +.previewnote p { + text-indent: 3em; + margin: 0.8em 0; +} + +.visualClear { + clear: both; +} + +/** + * Data table style + * + * Transparent table with suddle borders + * and blue row-highlighting. + */ +.mw-datatable { + border-collapse: collapse; +} + +.mw-datatable, +.mw-datatable td, +.mw-datatable th { + border: 1px solid #aaaaaa; + padding: 0 0.15em 0 0.15em; +} + +.mw-datatable th { + background-color: #ddddff; +} + +.mw-datatable td { + background-color: #ffffff; +} + +.mw-datatable tr:hover td { + background-color: #eeeeff; +} + +/* 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: 400px; +} + +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: 5px; + padding-right: 5px; +} + +table.mw_metadata th { + background-color: #f9f9f9; +} + +table.mw_metadata td { + background-color: #fcfcfc; +} + +table.mw_metadata ul.metadata-langlist { + list-style-type: none; + list-style-image: none; + padding-right: 5px; + padding-left: 5px; + margin: 0; +} + +/* Correct directionality when page dir is different from site/user dir */ +.mw-content-ltr ul, +.mw-content-rtl .mw-content-ltr ul { + /* @noflip */ + margin: 0.3em 0 0 1.6em; + padding: 0; +} + +.mw-content-rtl ul, +.mw-content-ltr .mw-content-rtl ul { + /* @noflip */ + margin: 0.3em 1.6em 0 0; + padding: 0; +} + +.mw-content-ltr ol, +.mw-content-rtl .mw-content-ltr ol { + /* @noflip */ + margin: 0.3em 0 0 3.2em; + padding: 0; +} + +.mw-content-rtl ol, +.mw-content-ltr .mw-content-rtl ol { + /* @noflip */ + margin: 0.3em 3.2em 0 0; + padding: 0; +} + +/* @noflip */ +.mw-content-ltr dd, +.mw-content-rtl .mw-content-ltr dd { + margin-left: 1.6em; + margin-right: 0; +} + +/* @noflip */ +.mw-content-rtl dd, +.mw-content-ltr .mw-content-rtl dd { + margin-right: 1.6em; + margin-left: 0; +} + +/* Galleries */ +/* These display attributes look nonsensical, but are needed to support IE and FF2 */ +/* Don't forget to update commonPrint.css */ +li.gallerybox { + vertical-align: top; + display: -moz-inline-box; + display: inline-block; +} + +ul.gallery, +li.gallerybox { + zoom: 1; + *display: inline; +} + +ul.gallery { + margin: 2px; + padding: 2px; + display: block; +} + +li.gallerycaption { + font-weight: bold; + text-align: center; + display: block; + word-wrap: break-word; +} + +li.gallerybox div.thumb { + text-align: center; + border: 1px solid #ccc; + background-color: #f9f9f9; + margin: 2px; +} + +li.gallerybox div.thumb img { + display: block; + margin: 0 auto; +} + +div.gallerytext { + overflow: hidden; + font-size: 94%; + padding: 2px 4px; + word-wrap: break-word; +} + +/* new gallery stuff */ +ul.mw-gallery-nolines li.gallerybox div.thumb { + background-color: transparent; + border: none; +} + +ul.mw-gallery-nolines li.gallerybox div.gallerytext { + text-align: center; +} + +/* height constrained gallery */ + +ul.mw-gallery-packed li.gallerybox div.thumb, +ul.mw-gallery-packed-overlay li.gallerybox div.thumb, +ul.mw-gallery-packed-hover li.gallerybox div.thumb { + background-color: transparent; + border: none; +} + +ul.mw-gallery-packed li.gallerybox div.thumb img, +ul.mw-gallery-packed-overlay li.gallerybox div.thumb img, +ul.mw-gallery-packed-hover li.gallerybox div.thumb img { + margin: 0 auto; +} + +ul.mw-gallery-packed-hover li.gallerybox, +ul.mw-gallery-packed-overlay li.gallerybox { + position: relative; +} + +ul.mw-gallery-packed-hover div.gallerytextwrapper { + overflow: hidden; + height: 0; +} + +ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper, +ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper, +ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper { + position: absolute; + background: white; + background: rgba(255, 255, 255, 0.8); + padding: 5px 10px; + bottom: 0; + left: 0; /* Needed for IE */ + height: auto; + font-weight: bold; + margin: 2px; /* correspond to style on div.thumb */ +} + +ul.mw-gallery-packed-hover, +ul.mw-gallery-packed-overlay, +ul.mw-gallery-packed { + text-align: center; +} + +.mw-ajax-loader { + /* @embed */ + background-image: url(images/ajax-loader.gif); + background-position: center center; + background-repeat: no-repeat; + padding: 16px; + position: relative; + top: -16px; +} + +.mw-small-spinner { + padding: 10px !important; + margin-right: 0.6em; + /* @embed */ + background-image: url(images/spinner.gif); + background-position: center center; + background-repeat: no-repeat; +} + +/* Language specific height correction for titles. Ref Bug 29405 and Bug 30809 */ +/* Languages like hi or ml require slightly more vertical space to show diacritics properly */ +h1:lang(anp), +h1:lang(as), +h1:lang(bh), /* Macrolanguage, used on bh.wikipedia.org, should be removed one day */ +h1:lang(bho), +h1:lang(bn), +h1:lang(gu), +h1:lang(hi), +h1:lang(kn), +h1:lang(ks), +h1:lang(ml), +h1:lang(mr), +h1:lang(my), +h1:lang(mai), +h1:lang(ne), +h1:lang(new), +h1:lang(or), +h1:lang(pa), +h1:lang(pi), +h1:lang(sa), +h1:lang(ta), +h1:lang(te) { + line-height: 1.6em !important; +} + +h2:lang(anp), h3:lang(anp), h4:lang(anp), h5:lang(anp), h6:lang(anp), +h2:lang(as), h3:lang(as), h4:lang(as), h5:lang(as), h6:lang(as), +h2:lang(bho), h3:lang(bho), h4:lang(bho), h5:lang(bho), h6:lang(bho), +h2:lang(bh), h3:lang(bh), h4:lang(bh), h5:lang(bh), h6:lang(bh), +h2:lang(bn), h3:lang(bn), h4:lang(bn), h5:lang(bn), h6:lang(bn), +h2:lang(gu), h3:lang(gu), h4:lang(gu), h5:lang(gu), h6:lang(gu), +h2:lang(hi), h3:lang(hi), h4:lang(hi), h5:lang(hi), h6:lang(hi), +h2:lang(kn), h3:lang(kn), h4:lang(kn), h5:lang(kn), h6:lang(kn), +h2:lang(ks), h3:lang(ks), h4:lang(ks), h5:lang(ks), h6:lang(ks), +h2:lang(ml), h3:lang(ml), h4:lang(ml), h5:lang(ml), h6:lang(ml), +h2:lang(mr), h3:lang(mr), h4:lang(mr), h5:lang(mr), h6:lang(mr), +h2:lang(my), h3:lang(my), h4:lang(my), h5:lang(my), h6:lang(my), +h2:lang(mai), h3:lang(mai), h4:lang(mai), h5:lang(mai), h6:lang(mai), +h2:lang(ne), h3:lang(ne), h4:lang(ne), h5:lang(ne), h6:lang(ne), +h2:lang(new), h3:lang(new), h4:lang(new), h5:lang(new), h6:lang(new), +h2:lang(or), h3:lang(or), h4:lang(or), h5:lang(or), h6:lang(or), +h2:lang(pa), h3:lang(pa), h4:lang(pa), h5:lang(pa), h6:lang(pa), +h2:lang(pi), h3:lang(pi), h4:lang(pi), h5:lang(pi), h6:lang(pi), +h2:lang(sa), h3:lang(sa), h4:lang(sa), h5:lang(sa), h6:lang(sa), +h2:lang(ta), h3:lang(ta), h4:lang(ta), h5:lang(ta), h6:lang(ta), +h2:lang(te), h3:lang(te), h4:lang(te), h5:lang(te), h6:lang(te) { + line-height: 1.2em; +} + +/* Localised ordered list numbering for some languages */ +ol:lang(bcc) li, +ol:lang(bqi) li, +ol:lang(fa) li, +ol:lang(glk) li, +ol:lang(kk-arab) li, +ol:lang(mzn) li { + list-style-type: -moz-persian; + list-style-type: persian; +} + +ol:lang(ckb) li { + list-style-type: -moz-arabic-indic; + list-style-type: arabic-indic; +} + +ol:lang(hi) li, +ol:lang(mr) li { + list-style-type: -moz-devanagari; + list-style-type: devanagari; +} + +ol:lang(as) li, +ol:lang(bn) li { + list-style-type: -moz-bengali; + list-style-type: bengali; +} + +ol:lang(or) li { + list-style-type: -moz-oriya; + list-style-type: oriya; +} + +#toc ul, .toc ul { + margin: .3em 0; +} + +/* Correct directionality when page dir is different from site/user dir */ +/* @noflip */ .mw-content-ltr .toc ul, +.mw-content-ltr #toc ul, +.mw-content-rtl .mw-content-ltr .toc ul, +.mw-content-rtl .mw-content-ltr #toc ul { + text-align: left; +} + +/* @noflip */ .mw-content-rtl .toc ul, +.mw-content-rtl #toc ul, +.mw-content-ltr .mw-content-rtl .toc ul, +.mw-content-ltr .mw-content-rtl #toc ul { + text-align: right; +} + +/* @noflip */ .mw-content-ltr .toc ul ul, +.mw-content-ltr #toc ul ul, +.mw-content-rtl .mw-content-ltr .toc ul ul, +.mw-content-rtl .mw-content-ltr #toc ul ul { + margin: 0 0 0 2em; +} + +/* @noflip */ .mw-content-rtl .toc ul ul, +.mw-content-rtl #toc ul ul, +.mw-content-ltr .mw-content-rtl .toc ul ul, +.mw-content-ltr .mw-content-rtl #toc ul ul { + margin: 0 2em 0 0; +} + +#toc #toctitle, +.toc #toctitle, +#toc .toctitle, +.toc .toctitle { + direction: ltr; +} + +/* tooltip styles */ +.mw-help-field-hint { + display: none; + margin-left: 2px; + margin-bottom: -8px; + padding: 0 0 0 15px; + /* @embed */ + background-image: url(images/help-question.gif); + background-position: left center; + background-repeat: no-repeat; + cursor: pointer; + font-size: .8em; + text-decoration: underline; + color: #0645ad; +} + +.mw-help-field-hint:hover { + /* @embed */ + background-image: url(images/help-question-hover.gif); +} + +.mw-help-field-data { + display: block; + background-color: #d6f3ff; + padding: 5px 8px 4px 8px; + border: 1px solid #5dc9f4; + margin-left: 20px; +} + +#mw-clearyourcache, +#mw-sitecsspreview, +#mw-sitejspreview, +#mw-usercsspreview, +#mw-userjspreview { + direction: ltr; + unicode-bidi: embed; +} + +/* Correct user & content directionality when viewing a diff */ +.diff-currentversion-title, +.diff { + direction: ltr; + unicode-bidi: embed; +} + +/* @noflip */ .diff-contentalign-right td { + direction: rtl; + unicode-bidi: embed; +} + +/* @noflip */ .diff-contentalign-left td { + direction: ltr; + unicode-bidi: embed; +} + +.diff-multi, +.diff-otitle, +.diff-ntitle, +.diff-lineno { + direction: ltr !important; + unicode-bidi: embed; +} + +#mw-revision-info, +#mw-revision-info-current, +#mw-revision-nav { + direction: ltr; + display: inline; +} + +/* Images */ + +/* @noflip */ div.tright, +div.floatright, +table.floatright { + clear: right; + float: right; +} + +/* @noflip */ div.tleft, +div.floatleft, +table.floatleft { + float: left; + clear: left; +} + +div.floatright, +table.floatright, +div.floatleft, +table.floatleft { + position: relative; +} + +/* bug 12205 */ +#mw-credits a { + unicode-bidi: embed; +} + +/* Accessibility */ +.mw-jump, +#jump-to-nav { + overflow: hidden; + height: 0; + zoom: 1; /* http://webaim.org/techniques/skipnav/#iequirk */ +} + +/* Print footer should be hidden by default in screen. */ +.printfooter { + display: none; +} + +/* For developers */ +.xdebug-error { + position: absolute; + z-index: 99; +} + +.mw-editsection, +.toctoggle, +#jump-to-nav { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} + +/* Display editsection links smaller and next to headings */ +.mw-editsection, +.mw-editsection-like { + font-size: small; + font-weight: normal; + margin-left: 1em; + vertical-align: baseline; + /* Reset line-height; headings tend to have it set to larger values */ + line-height: 1em; + /* As .mw-editsection is a <span> (inline element), it is treated as part */ + /* of the heading content when selecting text by multiple clicks and thus */ + /* selected together with heading content, despite the user-select: none; */ + /* rule set above. This enforces non-selection without changing the look. */ + display: inline-block; +} + +/* Correct directionality when page dir is different from site/user dir */ +/* @noflip */ +.mw-content-ltr .mw-editsection, +.mw-content-rtl .mw-content-ltr .mw-editsection { + margin-left: 1em; +} + +/* @noflip */ +.mw-content-rtl .mw-editsection, +.mw-content-ltr .mw-content-rtl .mw-editsection { + margin-right: 1em; +} + +/* Prevent citations and subscripts from interfering with the line-height */ +sup, +sub { + line-height: 1; +} diff --git a/resources/src/mediawiki.legacy/wikibits.js b/resources/src/mediawiki.legacy/wikibits.js new file mode 100644 index 00000000..a4039966 --- /dev/null +++ b/resources/src/mediawiki.legacy/wikibits.js @@ -0,0 +1,204 @@ +/** + * MediaWiki legacy wikibits + */ +( function ( mw, $ ) { + var msg, + win = window, + ua = navigator.userAgent.toLowerCase(), + onloadFuncts = []; + +/** + * User-agent sniffing. + * + * @deprecated since 1.17 Use jquery.client instead + */ + +msg = 'Use feature detection or module jquery.client instead.'; + +mw.log.deprecate( win, 'clientPC', ua, msg ); + +// Ignored dummy values +mw.log.deprecate( win, 'is_gecko', false, msg ); +mw.log.deprecate( win, 'is_chrome_mac', false, msg ); +mw.log.deprecate( win, 'is_chrome', false, msg ); +mw.log.deprecate( win, 'webkit_version', false, msg ); +mw.log.deprecate( win, 'is_safari_win', false, msg ); +mw.log.deprecate( win, 'is_safari', false, msg ); +mw.log.deprecate( win, 'webkit_match', false, msg ); +mw.log.deprecate( win, 'is_ff2', false, msg ); +mw.log.deprecate( win, 'ff2_bugs', false, msg ); +mw.log.deprecate( win, 'is_ff2_win', false, msg ); +mw.log.deprecate( win, 'is_ff2_x11', false, msg ); +mw.log.deprecate( win, 'opera95_bugs', false, msg ); +mw.log.deprecate( win, 'opera7_bugs', false, msg ); +mw.log.deprecate( win, 'opera6_bugs', false, msg ); +mw.log.deprecate( win, 'is_opera_95', false, msg ); +mw.log.deprecate( win, 'is_opera_preseven', false, msg ); +mw.log.deprecate( win, 'is_opera', false, msg ); +mw.log.deprecate( win, 'ie6_bugs', false, msg ); + +/** + * DOM utilities for handling of events, text nodes and selecting elements + * + * @deprecated since 1.17 Use jQuery instead + */ +msg = 'Use jQuery instead.'; + +// Ignored dummy values +mw.log.deprecate( win, 'doneOnloadHook', undefined, msg ); +mw.log.deprecate( win, 'onloadFuncts', [], msg ); +mw.log.deprecate( win, 'runOnloadHook', $.noop, msg ); +mw.log.deprecate( win, 'changeText', $.noop, msg ); +mw.log.deprecate( win, 'killEvt', $.noop, msg ); +mw.log.deprecate( win, 'addHandler', $.noop, msg ); +mw.log.deprecate( win, 'hookEvent', $.noop, msg ); +mw.log.deprecate( win, 'addClickHandler', $.noop, msg ); +mw.log.deprecate( win, 'removeHandler', $.noop, msg ); +mw.log.deprecate( win, 'getElementsByClassName', function () { return []; }, msg ); +mw.log.deprecate( win, 'getInnerText', function () { return ''; }, msg ); + +// Run a function after the window onload event is fired +mw.log.deprecate( win, 'addOnloadHook', function ( hookFunct ) { + if ( onloadFuncts ) { + onloadFuncts.push(hookFunct); + } else { + // If func queue is gone the event has happened already, + // run immediately instead of queueing. + hookFunct(); + } +}, msg ); + +$( win ).on( 'load', function () { + var i, functs; + + // Don't run twice + if ( !onloadFuncts ) { + return; + } + + // Deference and clear onloadFuncts before running any + // hooks to make sure we don't miss any addOnloadHook + // calls. + functs = onloadFuncts.slice(); + onloadFuncts = undefined; + + // Execute the queued functions + for ( i = 0; i < functs.length; i++ ) { + functs[i](); + } +} ); + +/** + * Toggle checkboxes with shift selection + * + * @deprecated since 1.17 Use jquery.checkboxShiftClick instead + */ +msg = 'Use jquery.checkboxShiftClick instead.'; +mw.log.deprecate( win, 'checkboxes', [], msg ); +mw.log.deprecate( win, 'lastCheckbox', null, msg ); +mw.log.deprecate( win, 'setupCheckboxShiftClick', $.noop, msg ); +mw.log.deprecate( win, 'addCheckboxClickHandlers', $.noop, msg ); +mw.log.deprecate( win, 'checkboxClickHandler', $.noop, msg ); + +/** + * Add a button to the default editor toolbar + * + * @deprecated since 1.17 Use mw.toolbar instead + */ +mw.log.deprecate( win, 'mwEditButtons', [], 'Use mw.toolbar instead.' ); +mw.log.deprecate( win, 'mwCustomEditButtons', [], 'Use mw.toolbar instead.' ); + +/** + * Spinner creation, injection and removal + * + * @deprecated since 1.18 Use jquery.spinner instead + */ +mw.log.deprecate( win, 'injectSpinner', $.noop, 'Use jquery.spinner instead.' ); +mw.log.deprecate( win, 'removeSpinner', $.noop, 'Use jquery.spinner instead.' ); + +/** + * Escape utilities + * + * @deprecated since 1.18 Use mw.html instead + */ +mw.log.deprecate( win, 'escapeQuotes', $.noop, 'Use mw.html instead.' ); +mw.log.deprecate( win, 'escapeQuotesHTML', $.noop, 'Use mw.html instead.' ); + +/** + * Display a message to the user + * + * @deprecated since 1.17 Use mediawiki.notify instead + * @param {string|HTMLElement} message To be put inside the message box + */ +mw.log.deprecate( win, 'jsMsg', function ( message ) { + if ( !arguments.length || message === '' || message === null ) { + return true; + } + if ( typeof message !== 'object' ) { + message = $.parseHTML( message ); + } + mw.notify( message, { autoHide: true, tag: 'legacy' } ); + return true; +}, 'Use mediawiki.notify instead.' ); + +/** + * Misc. utilities + * + * @deprecated since 1.17 Use mediawiki.util or jquery.accessKeyLabel instead + */ +msg = 'Use mediawiki.util instead.'; +mw.log.deprecate( win, 'addPortletLink', mw.util.addPortletLink, msg ); +mw.log.deprecate( win, 'appendCSS', mw.util.addCSS, msg ); +msg = 'Use jquery.accessKeyLabel instead.'; +mw.log.deprecate( win, 'tooltipAccessKeyPrefix', 'alt-', msg ); +mw.log.deprecate( win, 'tooltipAccessKeyRegexp', /\[(alt-)?(.)\]$/, msg ); +// mw.util.updateTooltipAccessKeys already generates a deprecation message. +win.updateTooltipAccessKeys = function () { + return mw.util.updateTooltipAccessKeys.apply( null, arguments ); +}; + +/** + * Wikipage import methods + */ + +// included-scripts tracker +win.loadedScripts = {}; + +win.importScript = function ( page ) { + var uri = mw.config.get( 'wgScript' ) + '?title=' + + mw.util.wikiUrlencode( page ) + + '&action=raw&ctype=text/javascript'; + return win.importScriptURI( uri ); +}; + +win.importScriptURI = function ( url ) { + if ( win.loadedScripts[url] ) { + return null; + } + win.loadedScripts[url] = true; + var s = document.createElement( 'script' ); + s.setAttribute( 'src', url ); + s.setAttribute( 'type', 'text/javascript' ); + document.getElementsByTagName( 'head' )[0].appendChild( s ); + return s; +}; + +win.importStylesheet = function ( page ) { + var uri = mw.config.get( 'wgScript' ) + '?title=' + + mw.util.wikiUrlencode( page ) + + '&action=raw&ctype=text/css'; + return win.importStylesheetURI( uri ); +}; + +win.importStylesheetURI = function ( url, media ) { + var l = document.createElement( 'link' ); + l.rel = 'stylesheet'; + l.href = url; + if ( media ) { + l.media = media; + } + document.getElementsByTagName('head')[0].appendChild( l ); + return l; +}; + +}( mediaWiki, jQuery ) ); |