|
|
Linje 1: |
Linje 1: |
| | /** Import module ************************************************************* |
| | * |
| | * Description: Includes a raw wiki page as javascript or CSS, |
| | * used for including user made modules. |
| | * Maintainers: [[User:AzaToth]] |
| | */ |
| | importedScripts = {}; // object keeping track of included scripts, so a script ain't included twice |
| | function importScript( page ) { |
| | if( importedScripts[page] ) { |
| | return; |
| | } |
| | importedScripts[page] = true; |
| | var url = wgScriptPath |
| | + '/index.php?title=' |
| | + encodeURIComponent( page.replace( / /g, '_' ) ) |
| | + '&action=raw&ctype=text/javascript'; |
| | var scriptElem = document.createElement( 'script' ); |
| | scriptElem.setAttribute( 'src' , url ); |
| | scriptElem.setAttribute( 'type' , 'text/javascript' ); |
| | document.getElementsByTagName( 'head' )[0].appendChild( scriptElem ); |
| | } |
| | |
| | function importStylesheet( page ) { |
| | var sheet = '@import "' |
| | + wgScriptPath |
| | + '/index.php?title=' |
| | + encodeURIComponent( page.replace( / /g, '_' ) ) |
| | + '&action=raw&ctype=text/css";' |
| | var styleElem = document.createElement( 'style' ); |
| | styleElem.setAttribute( 'type' , 'text/css' ); |
| | styleElem.appendChild( document.createTextNode( sheet ) ); |
| | document.getElementsByTagName( 'head' )[0].appendChild( styleElem ); |
| | } |
|
| |
|
| /* Any JavaScript here will be loaded for all users on every page load. */ | | /* Test if an element has a certain class ************************************** |
| | * |
| | * Description: Uses regular expressions and caching for better performance. |
| | * Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]] |
| | */ |
| | | |
| /*<source lang="javascript">*/
| | var hasClass = (function () { |
| //Overrides the function with the same name in http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/skins/common/wikibits.js
| | var reCache = {}; |
| //Fixes a bug: for the sorting order, takes the whole number, not the number before the second comma.
| | return function (element, className) { |
| //Also, removes spaces. See [[Help:Sorting]].
| | return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className); |
| function ts_parseFloat(num) {
| | }; |
| if (!num) return 0;
| | })(); |
| num = removeSpaces(num); | | |
| num = parseFloat(num.replace(/,/g, ""));
| | /** Internet Explorer bug fix ************************************************** |
| return (isNaN(num) ? 0 : num);
| | * |
| }
| | * Description: Fixes IE horizontal scrollbar bug |
| | * Maintainers: [[User:Tom-]]? |
| | */ |
| | | |
| //Keep spaces in "currency" mode, to sort a range "70 to 80" at 70, not 7080
| | if (navigator.appName == "Microsoft Internet Explorer" && document.compatMode == "CSS1Compat") |
| function ts_parseFloat_ks(num) {
| | { |
| if (!num) return 0;
| | var oldWidth; |
| num = parseFloat(num.replace(/,/g, ""));
| | var docEl = document.documentElement; |
| return (isNaN(num) ? 0 : num);
| |
| }
| |
| | | |
| //Auxiliary function for function ts_resortTable(lnk)
| | function fixIEScroll() |
| function removeSpaces(string) {
| | { |
| var tstring = "";
| | if (!oldWidth || docEl.clientWidth > oldWidth) |
| string = '' + string;
| | doFixIEScroll(); |
| splitstring = string.split(" ");
| | else |
| for(i = 0; i < splitstring.length; i++)
| | setTimeout(doFixIEScroll, 1); |
| tstring += splitstring[i];
| | |
| return tstring;
| | oldWidth = docEl.clientWidth; |
| } | | } |
| | | |
| //Overrides the function with the same name in http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/skins/common/wikibits.js
| | function doFixIEScroll() { |
| //Changes the criteria for various sorting modes, see [[Help:Sorting]].
| | docEl.style.overflowX = (docEl.scrollWidth - docEl.clientWidth < 4) ? "hidden" : ""; |
| //For easy maintenance the difference with wikibits.js is kept limited to a few lines.
| | } |
| function ts_resortTable(lnk) {
| |
| // get the span
| |
| var span = lnk.getElementsByTagName('span')[0];
| |
| | | |
| var td = lnk.parentNode;
| | document.attachEvent("onreadystatechange", fixIEScroll); |
| var tr = td.parentNode;
| | attachEvent("onresize", fixIEScroll); |
| var column = td.cellIndex;
| | } |
| | |
| | /** Interwiki links to featured articles *************************************** |
| | * |
| | * Description: Highlights interwiki links to featured articles (or |
| | * equivalents) by changing the bullet before the interwiki link |
| | * into a star. |
| | * Maintainers: [[User:R. Koot]] |
| | */ |
| | | |
| var table = tr.parentNode;
| | function LinkFA() |
| while (table && !(table.tagName && table.tagName.toLowerCase() == 'table'))
| | { |
| table = table.parentNode;
| | if ( document.getElementById( "p-lang" ) ) { |
| if (!table) return;
| | var InterwikiLinks = document.getElementById( "p-lang" ).getElementsByTagName( "li" ); |
| | | |
| // Work out a type for the column
| | for ( var i = 0; i < InterwikiLinks.length; i++ ) { |
| if (table.rows.length <= 1) return;
| | if ( document.getElementById( InterwikiLinks[i].className + "-fa" ) ) { |
|
| | InterwikiLinks[i].className += " FA" |
| // Skip the first row if that's where the headings are
| | InterwikiLinks[i].title = "This is a featured article in another language."; |
| var rowStart = (table.tHead && table.tHead.rows.length > 0 ? 0 : 1);
| | } |
|
| | } |
| var itm = "";
| | } |
| for (var i = rowStart; i < table.rows.length; i++) {
| | } |
| if (table.rows[i].cells.length > column) {
| |
| itm = ts_getInnerText(table.rows[i].cells[column]);
| |
| itm = itm.replace(/^[\s\xa0]+/, "").replace(/[\s\xa0]+$/, "");
| |
| if (itm != "") break;
| |
| }
| |
| }
| |
|
| |
| sortfn = ts_sort_caseinsensitive;
| |
| itmns = removeSpaces(itm);
| |
| if (itmns.match(/^[\d\.\,\-\+]+\%?$/)) sortfn = ts_sort_numeric;
| |
| if (itmns.match(/^[\d\.\,\-\+]+[eE][\d\-\+]+\%?$/)) sortfn = ts_sort_numeric;
| |
| if (itmns.match(/^[\d\.\,\-\+]+e[\d\-\+]+\u00d710[\d\-\+]+\%?$/)) sortfn = ts_sort_numeric;
| |
| if (itm.match(/^\d\d[\/. -][a-zA-Z]{3}[\/. -]\d\d\d\d$/))
| |
| sortfn = ts_sort_date;
| |
| if (itm.match(/^\d\d[\/.-]\d\d[\/.-]\d\d\d\d$/))
| |
| sortfn = ts_sort_date;
| |
| if (itm.match(/^\d\d[\/.-]\d\d[\/.-]\d\d$/))
| |
| sortfn = ts_sort_date;
| |
| if (itm.match(/^[\u00a3$\u20ac\u00a5]/)) // pound dollar euro yen
| |
| sortfn = ts_sort_currency;
| |
| if (itm.match(/sm=c$/)) sortfn = ts_sort_currency;
| |
| if (itm.match(/sm=d$/)) sortfn = ts_sort_date;
| |
| if (itm.match(/sm=n$/)) sortfn = ts_sort_numeric;
| |
|
| |
| var reverse = (span.getAttribute("sortdir") == 'down');
| |
|
| |
| var newRows = new Array();
| |
| for (var j = rowStart; j < table.rows.length; j++) {
| |
| var row = table.rows[j];
| |
| var keyText = ts_getInnerText(row.cells[column]);
| |
| var oldIndex = (reverse ? -j : j);
| |
|
| |
| newRows[newRows.length] = new Array(row, keyText, oldIndex);
| |
| }
| |
|
| |
| newRows.sort(sortfn);
| |
|
| |
| var arrowHTML;
| |
| if (reverse) {
| |
| arrowHTML = '<img src="'+ ts_image_path + ts_image_down + '" alt="↓"/>';
| |
| newRows.reverse();
| |
| span.setAttribute('sortdir','up');
| |
| } else {
| |
| arrowHTML = '<img src="'+ ts_image_path + ts_image_up + '" alt="↑"/>';
| |
| span.setAttribute('sortdir','down');
| |
| }
| |
|
| |
| // We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones
| |
| // don't do sortbottom rows
| |
| for (var i = 0; i < newRows.length; i++) {
| |
| if ((" "+newRows[i][0].className+" ").indexOf(" sortbottom ") == -1)
| |
| table.tBodies[0].appendChild(newRows[i][0]);
| |
| }
| |
| // do sortbottom rows only
| |
| for (var i = 0; i < newRows.length; i++) {
| |
| if ((" "+newRows[i][0].className+" ").indexOf(" sortbottom ") != -1)
| |
| table.tBodies[0].appendChild(newRows[i][0]);
| |
| }
| |
|
| |
| // Delete any other arrows there may be showing
| |
| var spans = getElementsByClassName(tr, "span", "sortarrow");
| |
| for (var i = 0; i < spans.length; i++) {
| |
| spans[i].innerHTML = '<img src="'+ ts_image_path + ts_image_none + '" alt="↓"/>';
| |
| }
| |
| span.innerHTML = arrowHTML;
| |
|
| |
| ts_alternate(table);
| |
| }
| |
|
| |
| function ts_dateToSortKey(date) {
| |
| // y2k notes: two digit years less than 50 are treated as 20XX, greater than 50 are treated as 19XX
| |
| if (date.length > 10) {
| |
| switch (date.substr(3,3).toLowerCase()) {
| |
| case "jan": var month = "01"; break;
| |
| case "feb": var month = "02"; break;
| |
| case "mar": var month = "03"; break;
| |
| case "apr": var month = "04"; break;
| |
| case "may": var month = "05"; break;
| |
| case "jun": var month = "06"; break;
| |
| case "jul": var month = "07"; break;
| |
| case "aug": var month = "08"; break;
| |
| case "sep": var month = "09"; break;
| |
| case "oct": var month = "10"; break;
| |
| case "nov": var month = "11"; break;
| |
| case "dec": var month = "12"; break;
| |
| // default: var month = "00";
| |
| }
| |
| return date.substr(7,4)+month+date.substr(0,2);
| |
| } else if (date.length == 10) {
| |
| return date.substr(6,4)+date.substr(3,2)+date.substr(0,2);
| |
| } else if (date.length == 8) {
| |
| yr = date.substr(6,2);
| |
| if (parseInt(yr) < 50) {
| |
| yr = '20'+yr;
| |
| } else {
| |
| yr = '19'+yr;
| |
| }
| |
| return yr+date.substr(3,2)+date.substr(0,2);
| |
| }
| |
| return "00000000";
| |
| } | |
| | |
| function ts_sort_currency(a,b) {
| |
| var aa = ts_parseFloat_ks(a[1].replace(/[\u00a3$\u20ac\u00a5a-zA-Z]/g,''));
| |
| var bb = ts_parseFloat_ks(b[1].replace(/[\u00a3$\u20ac\u00a5a-zA-Z]/g,''));
| |
| return (aa != bb ? aa - bb : a[2] - b[2]);
| |
| } | |
| | | |
| | addOnloadHook( LinkFA ); |
| | |
| /** Collapsible tables ********************************************************* | | /** Collapsible tables ********************************************************* |
| * | | * |
| * Description: Allows tables to be collapsed, showing only the header. See | | * Description: Allows tables to be collapsed, showing only the header. See |
| * [[Wikipedia:NavFrame]]. | | * [[Wikipedia:NavFrame]]. |
| * Maintainer on Wikipedia: [[User:R. Koot]] | | * Maintainers: [[User:R. Koot]] |
| */ | | */ |
| | | |
Linje 172: |
Linje 109: |
| var collapseCaption = "hide"; | | var collapseCaption = "hide"; |
| var expandCaption = "show"; | | var expandCaption = "show"; |
|
| |
| function hasClass( element, className ) {
| |
| var Classes = element.className.split( " " );
| |
| for ( var i = 0; i < Classes.length; i++ ) {
| |
| if ( Classes[i] == className ) {
| |
| return ( true );
| |
| }
| |
| }
| |
| return ( false );
| |
| }
| |
| | | |
| function collapseTable( tableIndex ) | | function collapseTable( tableIndex ) |
Linje 192: |
Linje 119: |
| } | | } |
| | | |
| var Rows = Table.getElementsByTagName( "tr" ); | | var Rows = Table.rows; |
| | | |
| if ( Button.firstChild.data == collapseCaption ) { | | if ( Button.firstChild.data == collapseCaption ) { |
Linje 215: |
Linje 142: |
| for ( var i = 0; i < Tables.length; i++ ) { | | for ( var i = 0; i < Tables.length; i++ ) { |
| if ( hasClass( Tables[i], "collapsible" ) ) { | | if ( hasClass( Tables[i], "collapsible" ) ) { |
| | |
| | /* only add button and increment count if there is a header row to work with */ |
| | var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0]; |
| | if (!HeaderRow) continue; |
| | var Header = HeaderRow.getElementsByTagName( "th" )[0]; |
| | if (!Header) continue; |
| | |
| NavigationBoxes[ tableIndex ] = Tables[i]; | | NavigationBoxes[ tableIndex ] = Tables[i]; |
| Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex ); | | Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex ); |
Linje 228: |
Linje 162: |
| Button.style.width = "6em"; | | Button.style.width = "6em"; |
| | | |
| | ButtonLink.style.color = Header.style.color; |
| ButtonLink.setAttribute( "id", "collapseButton" + tableIndex ); | | ButtonLink.setAttribute( "id", "collapseButton" + tableIndex ); |
| ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" ); | | ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" ); |
Linje 236: |
Linje 171: |
| Button.appendChild( document.createTextNode( "]" ) ); | | Button.appendChild( document.createTextNode( "]" ) ); |
| | | |
| var Header = Tables[i].getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0]; | | Header.insertBefore( Button, Header.childNodes[0] ); |
| /* only add button and increment count if there is a header row to work with */
| | tableIndex++; |
| if (Header) {
| |
| Header.insertBefore( Button, Header.childNodes[0] );
| |
| tableIndex++;
| |
| }
| |
| } | | } |
| } | | } |
Linje 253: |
Linje 184: |
| | | |
| addOnloadHook( createCollapseButtons ); | | addOnloadHook( createCollapseButtons ); |
| | |
| | /** Dynamic Navigation Bars (experimental) ************************************* |
| | * |
| | * Description: See [[Wikipedia:NavFrame]]. |
| | * Maintainers: UNMAINTAINED |
| | */ |
| | |
| | // set up the words in your language |
| | var NavigationBarHide = '[' + collapseCaption + ']'; |
| | var NavigationBarShow = '[' + expandCaption + ']'; |
| | |
| | // shows and hides content and picture (if available) of navigation bars |
| | // Parameters: |
| | // indexNavigationBar: the index of navigation bar to be toggled |
| | function toggleNavigationBar(indexNavigationBar) |
| | { |
| | var NavToggle = document.getElementById("NavToggle" + indexNavigationBar); |
| | var NavFrame = document.getElementById("NavFrame" + indexNavigationBar); |
| | |
| | if (!NavFrame || !NavToggle) { |
| | return false; |
| | } |
| | |
| | // if shown now |
| | if (NavToggle.firstChild.data == NavigationBarHide) { |
| | for ( |
| | var NavChild = NavFrame.firstChild; |
| | NavChild != null; |
| | NavChild = NavChild.nextSibling |
| | ) { |
| | if ( hasClass( NavChild, 'NavPic' ) ) { |
| | NavChild.style.display = 'none'; |
| | } |
| | if ( hasClass( NavChild, 'NavContent') ) { |
| | NavChild.style.display = 'none'; |
| | } |
| | } |
| | NavToggle.firstChild.data = NavigationBarShow; |
| | |
| | // if hidden now |
| | } else if (NavToggle.firstChild.data == NavigationBarShow) { |
| | for ( |
| | var NavChild = NavFrame.firstChild; |
| | NavChild != null; |
| | NavChild = NavChild.nextSibling |
| | ) { |
| | if (hasClass(NavChild, 'NavPic')) { |
| | NavChild.style.display = 'block'; |
| | } |
| | if (hasClass(NavChild, 'NavContent')) { |
| | NavChild.style.display = 'block'; |
| | } |
| | } |
| | NavToggle.firstChild.data = NavigationBarHide; |
| | } |
| | } |
| | |
| | // adds show/hide-button to navigation bars |
| | function createNavigationBarToggleButton() |
| | { |
| | var indexNavigationBar = 0; |
| | // iterate over all < div >-elements |
| | var divs = document.getElementsByTagName("div"); |
| | for( |
| | var i=0; |
| | NavFrame = divs[i]; |
| | i++ |
| | ) { |
| | // if found a navigation bar |
| | if (hasClass(NavFrame, "NavFrame")) { |
| | |
| | indexNavigationBar++; |
| | var NavToggle = document.createElement("a"); |
| | NavToggle.className = 'NavToggle'; |
| | NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar); |
| | NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');'); |
| | |
| | var NavToggleText = document.createTextNode(NavigationBarHide); |
| | for ( |
| | var NavChild = NavFrame.firstChild; |
| | NavChild != null; |
| | NavChild = NavChild.nextSibling |
| | ) { |
| | if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) { |
| | if (NavChild.style.display == 'none') { |
| | NavToggleText = document.createTextNode(NavigationBarShow); |
| | break; |
| | } |
| | } |
| | } |
| | |
| | NavToggle.appendChild(NavToggleText); |
| | // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked) |
| | for( |
| | var j=0; |
| | j < NavFrame.childNodes.length; |
| | j++ |
| | ) { |
| | if (hasClass(NavFrame.childNodes[j], "NavHead")) { |
| | NavFrame.childNodes[j].appendChild(NavToggle); |
| | } |
| | } |
| | NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar); |
| | } |
| | } |
| | } |
| | |
| | addOnloadHook( createNavigationBarToggleButton ); |
| | |
| | /** Main Page layout fixes ********************************************************* |
| | * |
| | * Description: Various layout fixes for the main page, including an |
| | * additional link to the complete list of languages available |
| | * and the renaming of the 'Article' to to 'Main Page'. |
| | * Maintainers: [[User:AzaToth]], [[User:R. Koot]], [[User:Alex Smotrov]] |
| | */ |
| | |
| | function mainPageRenameNamespaceTab() { |
| | try { |
| | var Node = document.getElementById( 'ca-nstab-main' ).firstChild; |
| | if ( Node.textContent ) { // Per DOM Level 3 |
| | Node.textContent = 'Main Page'; |
| | } else if ( Node.innerText ) { // IE doesn't handle .textContent |
| | Node.innerText = 'Main Page'; |
| | } else { // Fallback |
| | Node.replaceChild( Node.firstChild, document.createTextNode( 'Main Page' ) ); |
| | } |
| | } catch(e) { |
| | // bailing out! |
| | } |
| | } |
| | |
| | if ( wgTitle == 'Main Page' && ( wgNamespaceNumber == 0 || wgNamespaceNumber == 1 ) ) { |
| | addOnloadHook( mainPageRenameNamespaceTab ); |
| | } |
| | |
| | if ( wgTitle == 'Main Page' && wgNamespaceNumber == 0 ) { |
| | addOnloadHook( mainPageAppendCompleteListLink ); |
| | } |
| | | |
| //Shuffle for election candidates
| | function mainPageAppendCompleteListLink() { |
| function dshuf(){ | | addPortletLink('p-lang', 'http://meta.wikimedia.org/wiki/List_of_Wikipedias', |
| var shufsets=new Object()
| | 'Complete list', 'interwiki-completelist', 'Complete list of Wikipedias') |
| var rx=new RegExp('dshuf'+'\\s+(dshufset\\d+)', 'i')
| | } |
| var divs=document.getElementsByTagName("div")
| | |
| for (var i=0; i<divs.length; i++){
| | /** Extra toolbar options ****************************************************** |
| if (rx.test(divs[i].className)){
| | * |
| if (typeof shufsets[RegExp.$1]=="undefined"){
| | * Description: UNDOCUMENTED |
| shufsets[RegExp.$1]=new Object()
| | * Maintainers: [[User:MarkS]]?, [[User:Voice of All]], [[User:R. Koot]] |
| shufsets[RegExp.$1].inner=[]
| | */ |
| shufsets[RegExp.$1].member=[]
| | |
| }
| | //This is a modified copy of a script by User:MarkS for extra features added by User:Voice of All. |
| shufsets[RegExp.$1].inner.push(divs[i].innerHTML)
| | // This is based on the original code on Wikipedia:Tools/Editing tools |
| shufsets[RegExp.$1].member.push(divs[i])
| | // To disable this script, add <code>mwCustomEditButtons = [];<code> to [[Special:Mypage/monobook.js]] |
| }
| | |
| }
| | if (mwCustomEditButtons) { |
| for (shufset in shufsets){
| | mwCustomEditButtons[mwCustomEditButtons.length] = { |
| shufsets[shufset].inner.sort(function() {return 0.5 - Math.random()})
| | "imageFile": "http://upload.wikimedia.org/wikipedia/en/c/c8/Button_redirect.png", |
| for (var i=0; i<shufsets[shufset].member.length; i++){
| | "speedTip": "Redirect", |
| shufsets[shufset].member[i].innerHTML=shufsets[shufset].inner[i]
| | "tagOpen": "#REDIRECT [[", |
| shufsets[shufset].member[i].style.display="block"
| | "tagClose": "]]", |
| }
| | "sampleText": "Insert text"}; |
| }
| | |
| | mwCustomEditButtons[mwCustomEditButtons.length] = { |
| | "imageFile": "http://upload.wikimedia.org/wikipedia/en/c/c9/Button_strike.png", |
| | "speedTip": "Strike", |
| | "tagOpen": "<s>", |
| | "tagClose": "</s>", |
| | "sampleText": "Strike-through text"}; |
| | |
| | mwCustomEditButtons[mwCustomEditButtons.length] = { |
| | "imageFile": "http://upload.wikimedia.org/wikipedia/en/1/13/Button_enter.png", |
| | "speedTip": "Line break", |
| | "tagOpen": "<br />", |
| | "tagClose": "", |
| | "sampleText": ""}; |
| | |
| | mwCustomEditButtons[mwCustomEditButtons.length] = { |
| | "imageFile": "http://upload.wikimedia.org/wikipedia/en/8/80/Button_upper_letter.png", |
| | "speedTip": "Superscript", |
| | "tagOpen": "<sup>", |
| | "tagClose": "</sup>", |
| | "sampleText": "Superscript text"}; |
| | |
| | mwCustomEditButtons[mwCustomEditButtons.length] = { |
| | "imageFile": "http://upload.wikimedia.org/wikipedia/en/7/70/Button_lower_letter.png", |
| | "speedTip": "Subscript", |
| | "tagOpen": "<sub>", |
| | "tagClose": "</sub>", |
| | "sampleText": "Subscript text"}; |
| | |
| | mwCustomEditButtons[mwCustomEditButtons.length] = { |
| | "imageFile": "http://upload.wikimedia.org/wikipedia/en/5/58/Button_small.png", |
| | "speedTip": "Small", |
| | "tagOpen": "<small>", |
| | "tagClose": "</small>", |
| | "sampleText": "Small Text"}; |
| | |
| | mwCustomEditButtons[mwCustomEditButtons.length] = { |
| | "imageFile": "http://upload.wikimedia.org/wikipedia/en/3/34/Button_hide_comment.png", |
| | "speedTip": "Insert hidden Comment", |
| | "tagOpen": "<!-- ", |
| | "tagClose": " -->", |
| | "sampleText": "Comment"}; |
| | | |
| } | | mwCustomEditButtons[mwCustomEditButtons.length] = { |
| | "imageFile": "http://upload.wikimedia.org/wikipedia/en/1/12/Button_gallery.png", |
| | "speedTip": "Insert a picture gallery", |
| | "tagOpen": "\n<gallery>\n", |
| | "tagClose": "\n</gallery>", |
| | "sampleText": "Image:Example.jpg|Caption1\nImage:Example.jpg|Caption2"}; |
| | | |
| addOnloadHook(dshuf);
| | mwCustomEditButtons[mwCustomEditButtons.length] = { |
| | "imageFile": "http://upload.wikimedia.org/wikipedia/en/f/fd/Button_blockquote.png", |
| | "speedTip": "Insert block of quoted text", |
| | "tagOpen": "<blockquote>\n", |
| | "tagClose": "\n</blockquote>", |
| | "sampleText": "Block quote"}; |
| | | |
| /*************
| | mwCustomEditButtons[mwCustomEditButtons.length] = { |
| *** AJAX transclusion table <http://meta.wikimedia.org/wiki/User:Pathoschild/Scripts/AJAX_transclusion_table>
| | "imageFile": "http://upload.wikimedia.org/wikipedia/en/6/60/Button_insert_table.png", |
| *** by [[m:user:Pathoschild]]
| | "speedTip": "Insert a table", |
| *************/
| | "tagOpen": '{| class="wikitable"\n|-\n', |
| function attLoader() {
| | "tagClose": "\n|}", |
| if(getElementsByClassName(document.getElementsByTagName('body')[0],'table','attable').length) {
| | "sampleText": "! header 1\n! header 2\n! header 3\n|-\n| row 1, cell 1\n| row 1, cell 2\n| row 1, cell 3\n|-\n| row 2, cell 1\n| row 2, cell 2\n| row 2, cell 3"}; |
| document.write('<script type="text/javascript" src="'
| | |
| + 'http://meta.wikimedia.org/w/index.php?title=User:Pathoschild/Scripts/AJAX_transclusion_table.js'
| | mwCustomEditButtons[mwCustomEditButtons.length] = { |
| + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
| | "imageFile": "http://upload.wikimedia.org/wikipedia/commons/7/79/Button_reflink.png", |
| }
| | "speedTip": "Insert a reference", |
| } | | "tagOpen": "<ref>", |
| addOnloadHook(attLoader);
| | "tagClose": "</ref>", |
| | "sampleText": "Insert footnote text here"}; |
| | |
| | } |
| | | |
| /** JSconfig ************ | | /*</nowiki>*/ |
| * Global configuration options to enable/disable and configure | | |
| * specific script features from [[MediaWiki:Common.js]] and
| | /** pageview counter *********************************************************** |
| * [[MediaWiki:Monobook.js]] | | * |
| * This framework adds config options (saved as cookies) to [[Special:Preferences]]
| | * Description: Please talk to de:User:LeonWeber before changing anything or |
| * For a more permanent change you can override the default settings in your | | * if there are any issues with that. |
| * [[Special:Mypage/monobook.js]]
| | * Maintainers: [[:de:User:LeonWeber]]? |
| * for Example: JSconfig.keys[loadAutoInformationTemplate] = false;
| | */ |
| | |
| | // this should be adjusted to a good value. |
| | // BE CAREFUL, you will break zedler if it's too low! |
| | // And then DaB. will kill Leon :-( |
| | var disable_counter = 0; |
| | var counter_factor = 6000; |
| | |
| | function pgcounter_setup() |
| | { |
| | if(disable_counter == 0) |
| | { |
| | var url = window.location.href; |
| | if(Math.floor(Math.random()*counter_factor)==42) // the probability thing |
| | { |
| | if(wgIsArticle==true || wgArticleId==0) // do not count history pages etc. |
| | { |
| | var pgcountNs = wgCanonicalNamespace; |
| | if(wgCanonicalNamespace=="") |
| | { |
| | pgcountNs = "0"; |
| | } |
| | var cnt_url = "http://pgcount.wikimedia.de/index.png?ns=" + pgcountNs + "&title=" + encodeURI(wgTitle) + "&factor=" + counter_factor +"&wiki=enwiki"; |
| | var img = new Image(); |
| | img.src = cnt_url; |
| | } |
| | } |
| | } |
| | } |
| | // Do not use aOnloadFunctions[aOnloadFunctions.length] = pgcounter_setup;, some browsers don't like that. |
| | pgcounter_setup(); |
| | |
| | /** "Technical restrictions" title fix ***************************************** |
| * | | * |
| * Maintainer: [[User:Dschwen]] | | * Description: |
| | * Maintainers: User:Interiot, User:Mets501, User:Freakofnurture |
| */ | | */ |
|
| |
| var JSconfig =
| |
| {
| |
| prefix : 'jsconfig_',
| |
| keys : {},
| |
| meta : {},
| |
|
| |
| // | | // |
| // Register a new configuration item | | // For pages that have something like Template:Lowercase, replace the title, but only if it is cut-and-pasteable as a valid wikilink. |
| // * name : String, internal name
| | // (for instance iPod's title is updated. But [[C#]] is not an equivalent |
| // * default_value : String or Boolean (type determines configuration widget) | | // wikilink, so [[C Sharp]] doesn't have its main title changed) |
| // * description : String, text appearing next to the widget in the preferences | | // Likewise for users who have selected the U.K. date format ("1 March") the |
| // * prefpage : Integer (optional), section in the preferences to insert the widget: | | // titles of day-of-the-year articles will appear in that style. Users with any |
| // 0 : User profile | | // other date setting are not affected. |
| // 1 : Skin | |
| // 2 : Math
| |
| // 3 : Files
| |
| // 4 : Date and time
| |
| // 5 : Editing
| |
| // 6 : Recent changes
| |
| // 7 : Watchlist
| |
| // 8 : Search | |
| // 9 : Misc
| |
| // | | // |
| // Access keys through JSconfig.keys[name] | | // The function looks for a banner like this: |
| | // <div id="RealTitleBanner"> ... <span id="RealTitle">title</span> ... </div> |
| | // An element with id=DisableRealTitle disables the function. |
| // | | // |
| registerKey : function( name, default_value, description, prefpage ) | | var disableRealTitle = 0; // users can set disableRealTitle = 1 locally to disable. |
| { | | if (wgIsArticle) { // don't display the RealTitle when editing, since it is apparently inconsistent (doesn't show when editing sections, doesn't show when not previewing) |
| if( typeof(JSconfig.keys[name]) == 'undefined' )
| | addOnloadHook(function() { |
| JSconfig.keys[name] = default_value;
| | try { |
| else { | | var realTitleBanner = document.getElementById("RealTitleBanner"); |
| | if (realTitleBanner && !document.getElementById("DisableRealTitle") && !disableRealTitle ) { |
| | var realTitle = document.getElementById("RealTitle"); |
| | if (realTitle) { |
| | var realTitleHTML = realTitle.innerHTML; |
| | realTitleText = pickUpText(realTitle); |
| | |
| | var isPasteable = 0; |
| | //var containsHTML = /</.test(realTitleHTML); // contains ANY HTML |
| | var containsTooMuchHTML = /</.test( realTitleHTML.replace(/<\/?(sub|sup|small|big)>/gi, "") ); // contains HTML that will be ignored when cut-n-pasted as a wikilink |
| | // calculate whether the title is pasteable |
| | var verifyTitle = realTitleText.replace(/^ +/, ""); // trim left spaces |
| | verifyTitle = verifyTitle.charAt(0).toUpperCase() + verifyTitle.substring(1, verifyTitle.length); // uppercase first character |
| | |
| | // if the namespace prefix is there, remove it on our verification copy. If it isn't there, add it to the original realValue copy. |
| | if (wgNamespaceNumber != 0) { |
| | if (wgCanonicalNamespace == verifyTitle.substr(0, wgCanonicalNamespace.length).replace(/ /g, "_") && verifyTitle.charAt(wgCanonicalNamespace.length) == ":") { |
| | verifyTitle = verifyTitle.substr(wgCanonicalNamespace.length + 1); |
| | } else { |
| | realTitleText = wgCanonicalNamespace.replace(/_/g, " ") + ":" + realTitleText; |
| | realTitleHTML = wgCanonicalNamespace.replace(/_/g, " ") + ":" + realTitleHTML; |
| | } |
| | } |
| | |
| | // verify whether wgTitle matches |
| | verifyTitle = verifyTitle.replace(/[\s_]+/g, " "); // underscores and multiple spaces to single spaces |
| | verifyTitle = verifyTitle.replace(/^\s+/, "").replace(/\s+$/, ""); // trim left and right spaces |
| | verifyTitle = verifyTitle.charAt(0).toUpperCase() + verifyTitle.substring(1, verifyTitle.length); // uppercase first character |
| | if ( (verifyTitle == wgTitle) || (verifyTitle == wgTitle.replace(/^(.+)?(January|February|March|April|May|June|July|August|September|October|November|December)\s+([12]?[0-9]|3[0123])([^\d].*)?$/g, "$1$3 $2$4") )) isPasteable = 1; |
| | var h1 = document.getElementsByTagName("h1")[0]; |
| | if (h1 && isPasteable) { |
| | h1.innerHTML = containsTooMuchHTML ? realTitleText : realTitleHTML; |
| | if (!containsTooMuchHTML) |
| | realTitleBanner.style.display = "none"; |
| | } |
| | document.title = realTitleText + " - Wikipedia, the free encyclopedia"; |
| | } |
| | } |
| | } catch (e) { |
| | /* Something went wrong. */ |
| | } |
| | }); |
| | } |
| | |
| | // similar to innerHTML, but only returns the text portions of the insides, excludes HTML |
| | function pickUpText(aParentElement) { |
| | var str = ""; |
| | | |
| // all cookies are read as strings,
| | function pickUpTextInternal(aElement) { |
| // convert to the type of the default value | | var child = aElement.firstChild; |
| switch( typeof(default_value) )
| | while (child) { |
| { | | if (child.nodeType == 1) // ELEMENT_NODE |
| case 'boolean' : JSconfig.keys[name] = ( JSconfig.keys[name] == 'true' ); break;
| | pickUpTextInternal(child); |
| case 'number' : JSconfig.keys[name] = JSconfig.keys[name]/1; break; | | else if (child.nodeType == 3) // TEXT_NODE |
| }
| | str += child.nodeValue; |
| | | |
| | child = child.nextSibling; |
| } | | } |
| | } |
| | | |
| JSconfig.meta[name] = { 'description' : description, 'page' : prefpage || 0, 'default_value' : default_value }; | | pickUpTextInternal(aParentElement); |
| }, | | return str; |
| | } |
| | | |
| readCookies : function() | | //fix edit summary prompt for undo |
| { | | //this code fixes the fact that the undo function combined with the "no edit summary prompter" causes problems if leaving the |
| var cookies = document.cookie.split("; ");
| | //edit summary unchanged |
| var p =JSconfig.prefix.length;
| | //this was added by [[User:Deskana]], code by [[User:Tra]] |
| var i;
| | addOnloadHook(function () { |
| | | if (document.location.search.indexOf("undo=") != -1 |
| for( var key in cookies )
| | && document.getElementsByName('wpAutoSummary')[0]) { |
| {
| | document.getElementsByName('wpAutoSummary')[0].value='1'; |
| if( cookies[key].substring(0,p) == JSconfig.prefix ) | |
| { | |
| i = cookies[key].indexOf('=');
| |
| //alert( cookies[key] + ',' + key + ',' + cookies[key].substring(p,i) );
| |
| JSconfig.keys[cookies[key].substring(p,i)] = cookies[key].substring(i+1);
| |
| } | | } |
| } | | }) |
| }, | | |
| | /** Add dismiss button to watchlist-message ************************************* |
| | * |
| | * Description: Hide the watchlist message for one week. |
| | * Maintainers: [[User:Ruud Koot|Ruud Koot]] |
| | */ |
| | | |
| writeCookies : function() | | function addDismissButton() { |
| {
| | var watchlistMessage = document.getElementById("watchlist-message"); |
| for( var key in JSconfig.keys )
| | if ( watchlistMessage == null ) return; |
| document.cookie = JSconfig.prefix + key + '=' + JSconfig.keys[key] + '; path=/; expires=Thu, 2 Aug 2009 10:10:10 UTC';
| | var watchlistCookieID = watchlistMessage.className.replace(/cookie\-ID\_/ig,''); |
| },
| |
| | | |
| evaluateForm : function()
| | if ( document.cookie.indexOf( "hidewatchlistmessage-" + watchlistCookieID + "=yes" ) != -1 ) { |
| {
| | watchlistMessage.style.display = "none"; |
| var w_ctrl,wt;
| |
| //alert('about to save JSconfig');
| |
| for( var key in JSconfig.meta ) {
| |
| w_ctrl = document.getElementById( JSconfig.prefix + key )
| |
| if( w_ctrl )
| |
| {
| |
| wt = typeof( JSconfig.meta[key].default_value );
| |
| switch( wt ) {
| |
| case 'boolean' : JSconfig.keys[key] = w_ctrl.checked; break;
| |
| case 'string' : JSconfig.keys[key] = w_ctrl.value; break;
| |
| } | | } |
| }
| |
| }
| |
| | | |
| JSconfig.writeCookies();
| | var Button = document.createElement( "span" ); |
| return true;
| | var ButtonLink = document.createElement( "a" ); |
| }, | | var ButtonText = document.createTextNode( "dismiss" ); |
| | |
| | ButtonLink.setAttribute( "id", "dismissButton" ); |
| | ButtonLink.setAttribute( "href", "javascript:dismissWatchlistMessage();" ); |
| | ButtonLink.setAttribute( "title", "Hide this message for one week" ); |
| | ButtonLink.appendChild( ButtonText ); |
| | |
| | Button.appendChild( document.createTextNode( "[" ) ); |
| | Button.appendChild( ButtonLink ); |
| | Button.appendChild( document.createTextNode( "]" ) ); |
| | | |
| setUpForm : function()
| | watchlistMessage.appendChild( Button ); |
| {
| | } |
| var prefChild = document.getElementById('preferences');
| |
| if( !prefChild ) return;
| |
| prefChild = prefChild.childNodes;
| |
| | | |
| //
| | function dismissWatchlistMessage() { |
| // make a list of all preferences sections
| | var e = new Date(); |
| //
| | e.setTime( e.getTime() + (7*24*60*60*1000) ); |
| var tabs = new Array;
| | var watchlistMessage = document.getElementById("watchlist-message"); |
| var len = prefChild.length;
| | var watchlistCookieID = watchlistMessage.className.replace(/cookie\-ID\_/ig,''); |
| for( var key = 0; key < len; key++ ) {
| | document.cookie = "hidewatchlistmessage-" + watchlistCookieID + "=yes; expires=" + e.toGMTString() + "; path=/"; |
| if( prefChild[key].tagName && | | watchlistMessage.style.display = "none"; |
| prefChild[key].tagName.toLowerCase() == 'fieldset' )
| | } |
| tabs.push(prefChild[key]);
| | |
| }
| | addOnloadHook( addDismissButton ); |
| | |
| | /** Main Page deletion image ******************************************************* |
| | * |
| | * Description: If the Main Page does not exist (i.e., it's been deleted) then insert an image |
| | * instead of showing the "page does not exist" text. |
| | * Created by: [[User:Mark]], with invaluable help from [[User:Pathoschild]] |
| | */ |
| | | |
| //
| | function MainPageDeletedImage() { |
| // Create Widgets for all registered config keys
| | try { |
| //
| |
| var w_div, w_label, w_ctrl, wt;
| |
| for( var key in JSconfig.meta ) {
| |
| w_div = document.createElement( 'DIV' ); | |
| | | |
| w_label = document.createElement( 'LABEL' );
| | //If the article does not exist and it is the Main Page, proceed |
| w_label.appendChild( document.createTextNode( JSconfig.meta[key].description ) )
| | if ( document.getElementById( "noarticletext" ) && wgTitle == 'Main Page' ) { |
| w_label.htmlFor = JSconfig.prefix + key;
| |
| | | |
| wt = typeof( JSconfig.meta[key].default_value );
| | // Insert a protected commons image at the end of the document explaining it. |
| | var contentbox = document.getElementById('content'); |
| | var newimg = document.createElement('img'); |
| | newimg.setAttribute('src','http://upload.wikimedia.org/wikipedia/commons/9/99/WikipediaTechnical.png'); |
| | contentbox.appendChild(newimg); |
| | | |
| w_ctrl = document.createElement( 'INPUT' );
| | // Hide the article-does-not-exist text |
| w_ctrl.id = JSconfig.prefix + key;
| | var NoArticleMessage = document.getElementById('noarticletext'); |
| | NoArticleMessage.style.display="none"; |
| | | |
| // before insertion into the DOM tree
| | // Hide the edit button |
| switch( wt ) {
| | var EditThisPageButton = document.getElementById('ca-edit'); |
| case 'boolean' : w_ctrl.type = 'checkbox'; break;
| | EditThisPageButton.style.display="none"; |
| case 'string' : w_ctrl.type = 'text'; break;
| | } |
| | } catch(e) { |
| | // In case it does not work, do nothing |
| | return; |
| } | | } |
| | } |
| | | |
| w_div.appendChild( w_label );
| | addOnloadHook( MainPageDeletedImage ); |
| w_div.appendChild( w_ctrl ); | | |
| tabs[JSconfig.meta[key].page].appendChild( w_div ); | | /** Change Special:Search to use a drop-down menu ******************************************************* |
| | * |
| | * Description: Change Special:Search to use a drop-down menu, with the default being |
| | * the internal MediaWiki engine |
| | * Created and maintained by: [[User:Gracenotes]] |
| | */ |
| | | |
| // after insertion into the DOM tree
| | if (wgPageName == "Special:Search") { |
| switch( wt ) {
| | var searchEngines = []; |
| case 'boolean' : w_ctrl.defaultChecked = w_ctrl.checked = JSconfig.keys[key]; break;
| | addOnloadHook(SpecialSearchEnhanced); |
| case 'string' : w_ctrl.defaultValue = w_ctrl.value = JSconfig.keys[key]; break;
| | } |
| }
| |
| | | |
| }
| | function SpecialSearchEnhanced() { |
| addHandler(document.getElementById('preferences').parentNode, 'submit', JSconfig.evaluateForm );
| | var createOption = function(site, action, mainQ, addQ, addV) { |
| | var opt = document.createElement('option'); |
| | opt.appendChild(document.createTextNode(site)); |
| | searchEngines[searchEngines.length] = [action, mainQ, addQ, addV]; |
| | return opt; |
| | } |
| | |
| | if (document.forms['powersearch']) |
| | var searchForm = document.forms['powersearch']; |
| | if (document.forms['search']) |
| | var searchForm = document.forms['search']; |
| | |
| | if (searchForm.lsearchbox) { |
| | var searchBox = searchForm.lsearchbox; |
| | } else { |
| | var searchBox = searchForm.search; |
| | } |
| | var selectBox = document.createElement('select'); |
| | selectBox.id = 'searchEngine'; |
| | searchForm.onsubmit = function() { |
| | var optSelected = searchEngines[document.getElementById('searchEngine').selectedIndex]; |
| | searchForm.action = optSelected[0]; |
| | searchBox.name = optSelected[1]; |
| | searchForm.title.value = optSelected[3]; |
| | searchForm.title.name = optSelected[2]; |
| | } |
| | selectBox.appendChild(createOption('MediaWiki search', wgScriptPath + '/index.php', 'search', 'title', 'Special:Search')); |
| | selectBox.appendChild(createOption('Google', 'http://www.google.com/search', 'q', 'sitesearch', 'en.wikipedia.org')); |
| | selectBox.appendChild(createOption('Yahoo', 'http://search.yahoo.com/search', 'p', 'vs', 'en.wikipedia.org')); |
| | selectBox.appendChild(createOption('Windows Live', 'http://search.live.com/results.aspx', 'q', 'q1', 'site:http://en.wikipedia.org')); |
| | selectBox.appendChild(createOption('Wikiwix', 'http://www.wikiwix.com/', 'action', 'lang', 'en')); |
| | selectBox.appendChild(createOption('Exalead', 'http://www.exalead.com/wikipedia/results', 'q', 'language', 'en')); |
| | searchBox.style.marginLeft = '0px'; |
| | if (document.getElementById('loadStatus')) { |
| | var lStat = document.getElementById('loadStatus'); |
| | } else { |
| | var lStat = searchForm.fulltext; |
| | } |
| | lStat.parentNode.insertBefore(selectBox, lStat); |
| } | | } |
| | |
| | /** Geo-targeted watchlist notice ******************************************************* |
| | * |
| | * Description: Allows for geographic targeting of watchlist notices. See [[Wikipedia:Geonotice]] for more information. |
| | * Created by: [[User:Gmaxwell]] |
| | */ |
| | |
| | if (wgPageName == "Special:Watchlist") |
| | addOnloadHook((function (){document.write('<script type="text/javascript" src="http://tools.wikimedia.de/~gmaxwell/cgi-bin/geonotice.py"><\/script>')})); |
| | |
| | /** Sysop Javascript ******************************************************* |
| | * |
| | * Description: Allows for sysop-specific Javascript at [[MediaWiki:Sysop.js]]. |
| | * Created by: [[User:^demon]] |
| | */ |
| | function sysopFunctions() { |
| | if ( wgUserGroups && !window.disableSysopJS ) { |
| | for ( var g = 0; g < wgUserGroups.length; ++g ) { |
| | if ( wgUserGroups[g] == "sysop" ) { |
| | importScript( "MediaWiki:Sysop.js" ); |
| | break; |
| | } |
| | } |
| | } |
| } | | } |
| | |
| | addOnloadHook( sysopFunctions ); |
| | |
| | /** WikiMiniAtlas ******************************************************* |
| | * |
| | * Description: WikiMiniAtlas is a popup click and drag world map. |
| | * This script causes all of our coordinate links to display the WikiMiniAtlas popup button. |
| | * The script itself is located on meta because it is used by many projects. |
| | * See [[Meta:WikiMiniAtlas]] for more information. |
| | * Created by: [[User:Dschwen]] |
| | */ |
| | |
| | document.write('<script type="text/javascript" src="' |
| | + 'http://meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js' |
| | + '&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400"></script>'); |
| | |
| | /** IE 6 Z-index bug workaround for anonnotice ************************** |
| | * |
| | * Description: This implements a work around for the Z-index bug found in Internet Explorer. |
| | * It correctly places the anon notice on the page, even under IE6. |
| | * See this Google search for more information about the bug: |
| | * http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&hs=q74&q=z-index+ie6+bug&btnG=Search |
| | * Created by: [[User:Gmaxwell]] |
| | */ |
| | addOnloadHook((function (){ |
| | if (wgUserName == null) { |
| | |
| | var messageEdu=new Array(); |
| | messageEdu[0]='<a href="http://en.wikipedia.org/wiki/Wikipedia:Researching_with_Wikipedia" title="Wikipedia:Researching with Wikipedia">Learn more about using Wikipedia for research</a>'; |
| | messageEdu[1]='<a href="http://en.wikipedia.org/wiki/Wikipedia:Ten_things_you_may_not_know_about_Wikipedia" title="Wikipedia:Ten things you may not know about Wikipedia">Ten things you may not know about Wikipedia</a>'; |
| | messageEdu[2]='<a href="http://en.wikipedia.org/wiki/Wikipedia:Ten_things_you_may_not_know_about_images_on_Wikipedia" title="Wikipedia:Ten things you may not know about images on Wikipedia">Ten things you may not know about images on Wikipedia</a>'; |
| | messageEdu[3]='<a href="http://en.wikipedia.org/wiki/Wikipedia:Citing_Wikipedia" title="Wikipedia:Citing Wikipedia">Learn more about citing Wikipedia</a>'; |
| | messageEdu[4]='Have questions? <a href="http://en.wikipedia.org/wiki/Wikipedia:Questions" title="Wikipedia:Questions">Find out how to ask questions and get answers.</a>'; |
| | messageEdu[5]='<a href="http://en.wikipedia.org/wiki/Wikipedia:Basic_navigation" title="Wikipedia:Basic navigation">Find out more about navigating Wikipedia and finding information</a>'; |
| | messageEdu[6]='<a href="http://en.wikipedia.org/wiki/Wikipedia:Contributing_to_Wikipedia" title="Wikipedia:Contributing to Wikipedia">Interested in contributing to Wikipedia?</a>'; |
| | var whichMessageEdu = Math.floor(Math.random()*(messageEdu.length)); |
| | |
| | |
| | /** document.getElementById("contentSub").innerHTML +='<div style="position:absolute; z-index:100; right:100px; top:0px;" class="metadata" id="anontip"><div style="text-align:right; font-size:87%">• <i>' + messageEdu[whichMessageEdu] + '</i> •</div></div>'; |
| | */ |
| | } |
| | })); |
| | |
| | /** |
| | * Correctly handle PNG transparency in Internet Explorer 6. |
| | * http://homepage.ntlworld.com/bobosola. Updated 18-Jan-2006. |
| | * |
| | * Adapted for Wikipedia by Remember_the_dot and Edokter. |
| | * |
| | * http://homepage.ntlworld.com/bobosola/pnginfo.htm states "This page contains more information for |
| | * the curious or those who wish to amend the script for special needs", which I take as permission to |
| | * modify or adapt this script freely. I release my changes into the public domain. |
| | */ |
| | | |
| JSconfig.readCookies();
| | function PngFix() |
| addOnloadHook(JSconfig.setUpForm);
| | { |
| | try |
| | { |
| | if (!document.body.filters) |
| | { |
| | window.PngFixDisabled = true |
| | } |
| | } |
| | catch (e) |
| | { |
| | window.PngFixDisabled = true |
| | } |
| | if (!window.PngFixDisabled) |
| | { |
| | var documentImages = document.images |
| | var documentCreateElement = document.createElement |
| | var funcEncodeURI = encodeURI |
| | |
| | for (var i = 0; i < documentImages.length;) |
| | { |
| | var img = documentImages[i] |
| | var imgSrc = img.src |
| | |
| | if (imgSrc.substr(imgSrc.length - 3).toLowerCase() == "png" && !img.onclick) |
| | { |
| | if (img.useMap) |
| | { |
| | img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + encodeURI(imgSrc) + "')" |
| | img.src = "http://upload.wikimedia.org/wikipedia/commons/c/ce/Transparent.gif" |
| | i++ |
| | } |
| | else |
| | { |
| | var outerSpan = documentCreateElement("span") |
| | var innerSpan = documentCreateElement("span") |
| | var outerSpanStyle = outerSpan.style |
| | var innerSpanStyle = innerSpan.style |
| | var imgCurrentStyle = img.currentStyle |
| | |
| | outerSpan.id = img.id |
| | outerSpan.className = img.className |
| | outerSpanStyle.backgroundImage = imgCurrentStyle.backgroundImage |
| | outerSpanStyle.borderWidth = imgCurrentStyle.borderWidth |
| | outerSpanStyle.borderStyle = imgCurrentStyle.borderStyle |
| | outerSpanStyle.borderColor = imgCurrentStyle.borderColor |
| | outerSpanStyle.display = "inline-block" |
| | outerSpanStyle.fontSize = "0" |
| | outerSpanStyle.verticalAlign = "middle" |
| | if (img.parentElement.href) outerSpanStyle.cursor = "hand" |
| | |
| | innerSpanStyle.width = "1px" |
| | innerSpanStyle.height = "1px" |
| | innerSpanStyle.display = "inline-block" |
| | innerSpanStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + funcEncodeURI(imgSrc) + "')" |
| | |
| | outerSpan.appendChild(innerSpan) |
| | img.parentNode.replaceChild(outerSpan, img) |
| | } |
| | } |
| | else |
| | { |
| | i++ |
| | } |
| | } |
| | } |
| | } |
| | | |
| /*</source>*/ | | if (navigator.appName == "Microsoft Internet Explorer" && navigator.appVersion.substr(22, 1) == "6") |
| | { |
| | window.attachEvent("onload", PngFix) |
| | } |
| | |
| | /** |
| | * Remove need for CSS hacks regarding MSIE and IPA. |
| | */ |
| | |
| | if(navigator.userAgent.indexOf("MSIE") != -1 && document.createStyleSheet) { |
| | document.createStyleSheet().addRule('.IPA', 'font-family: "Doulos SIL", "Charis SIL", Gentium, "DejaVu Sans", Code2000, "TITUS Cyberbit Basic", "Arial Unicode MS", "Lucida Sans Unicode", "Chrysanthi Unicode";'); |
| | } |
| | |
| | //Fix "Upload file" link when using the secure proxy |
| | //This is a workaround that can be removed when bug 10843 is fixed |
| | addOnloadHook(function() |
| | { |
| | if (document.getElementById("t-upload")) |
| | { |
| | document.getElementById("t-upload").getElementsByTagName("a")[0].href = wgArticlePath.replace("$1", "Wikipedia:Upload") |
| | } |
| | }) |