This is an old revision of this page, as edited by Betacommand (talk | contribs) at 20:37, 16 January 2006. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Revision as of 20:37, 16 January 2006 by Betacommand (talk | contribs)(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
The accompanying .css page for this skin is at User:Δ/monobook.css. |
// ----------------------------------------------------------------------------- // God-like Monobook skin // (c) 2005 Sam Hocevar <sam@zoy.org> // $Id: godmode-light.js 980 2005-11-12 01:51:51Z sam $ // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- // Language support, taken from phase3/languages/* // ----------------------------------------------------------------------------- var rollbacklink = 'rollback'; var cantrollback = 'Cannot revert edit; last contributor is only author of this page.'; var alreadyrolled = 'Cannot rollback last edit of ] by ] (]); someone else has edited or rolled back the page already. Last edit was by ] (]). '; var revertpage = 'Reverted edits by ] to last version by $1'; switch (document.getElementsByTagName('html').lang) { case 'fr': rollbacklink = 'révoquer'; cantrollback = 'Impossible de révoquer: dernier auteur est le seul à avoir modifié cet article'; alreadyrolled = 'Impossible de révoquer la dernière modification de ] par ] (]); quelqu\'un d\'autre à déjà modifer ou révoquer l\'article. La dernière modificaion était de ] (]). '; // lol @ pathetic grammar revertpage = "Révocation des modifications de ] et restauration d'une précédente version de $1"; break; case 'de': rollbacklink = 'Zurücksetzen'; cantrollback = 'Die Änderung kann nicht zurückgenommen werden; der letzte Autor ist der einzige.'; alreadyrolled = 'Die Zurücknahme des Artikels ] von ] (]) ist nicht möglich, da eine andere Änderung oder Rücknahme erfolgt ist. Die letzte Änderung ist von ] (])'; revertpage = 'Änderungen von ] rückgängig gemacht und letzte Version von ] wiederhergestellt'; break; case 'es': rollbacklink = 'Revertir'; cantrollback = 'No se pueden revertir las ediciones; el último colaborador es el único autor de este artÃculo.'; alreadyrolled = 'No se puede revertir la última edición de ] por ] (]); alguien más ya ha editado o revertido esa página. La última edición fue hecha por ] (]). '; revertpage = 'Revertida a la última edición de $1'; break; case 'it': rollbacklink = 'rollback'; cantrollback = 'Impossibile tornare ad una versione precedente: l\'ultima modifica è stata apportata dall\'unico utente che abbia lavorato a questo articolo.'; //alreadyrolled = ''; revertpage = 'Riportata alla revisione precedente da $1'; break; case 'pt': rollbacklink = 'voltar'; cantrollback = 'Não foi possÃvel reverter a edição; o último contribuidor é o único autor deste artigo.'; alreadyrolled = 'Não foi possÃvel reverter as edições de ] por ] (]); alguém o editou ou já o reverteu. A última edição foi de ] (]). '; revertpage = 'Revertidas edições por ], para a última versão por $1'; break; } // ----------------------------------------------------------------------------- // XMLHttpRequest support // ----------------------------------------------------------------------------- if (document.implementation.createDocument) { var xmlparser = new DOMParser(); } function XMLParse(string) { if (document.implementation.createDocument) { return xmlparser.parseFromString(string, "text/xml"); } else if (window.ActiveXObject) { var xmldoc = new ActiveXObject("Microsoft.XMLDOM "); xmldoc.async = "false"; ret = xmldoc.loadXML(string); if (!ret) return null; return xmldoc.documentElement; } return null; } var xmlhttp; function HTTPClient() { var http; if(window.XMLHttpRequest) { http = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { http = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { http = false; } } } return http; } // ----------------------------------------------------------------------------- // MD5 hash calculator // ----------------------------------------------------------------------------- // Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. // Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet // Distributed under the BSD License // See http://pajhome.org.uk/crypt/md5 for more info. // ----------------------------------------------------------------------------- var hexcase = 0; var b64pad = ""; var chrsz = 8; function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));} function core_md5(x, len) { x |= 0x80 << ((len) % 32); x = len; var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; for(var i = 0; i < x.length; i += 16) { var olda = a; var oldb = b; var oldc = c; var oldd = d; a = md5_ff(a, b, c, d, x, 7 , -680876936); d = md5_ff(d, a, b, c, x, 12, -389564586); c = md5_ff(c, d, a, b, x, 17, 606105819); b = md5_ff(b, c, d, a, x, 22, -1044525330); a = md5_ff(a, b, c, d, x, 7 , -176418897); d = md5_ff(d, a, b, c, x, 12, 1200080426); c = md5_ff(c, d, a, b, x, 17, -1473231341); b = md5_ff(b, c, d, a, x, 22, -45705983); a = md5_ff(a, b, c, d, x, 7 , 1770035416); d = md5_ff(d, a, b, c, x, 12, -1958414417); c = md5_ff(c, d, a, b, x, 17, -42063); b = md5_ff(b, c, d, a, x, 22, -1990404162); a = md5_ff(a, b, c, d, x, 7 , 1804603682); d = md5_ff(d, a, b, c, x, 12, -40341101); c = md5_ff(c, d, a, b, x, 17, -1502002290); b = md5_ff(b, c, d, a, x, 22, 1236535329); a = md5_gg(a, b, c, d, x, 5 , -165796510); d = md5_gg(d, a, b, c, x, 9 , -1069501632); c = md5_gg(c, d, a, b, x, 14, 643717713); b = md5_gg(b, c, d, a, x, 20, -373897302); a = md5_gg(a, b, c, d, x, 5 , -701558691); d = md5_gg(d, a, b, c, x, 9 , 38016083); c = md5_gg(c, d, a, b, x, 14, -660478335); b = md5_gg(b, c, d, a, x, 20, -405537848); a = md5_gg(a, b, c, d, x, 5 , 568446438); d = md5_gg(d, a, b, c, x, 9 , -1019803690); c = md5_gg(c, d, a, b, x, 14, -187363961); b = md5_gg(b, c, d, a, x, 20, 1163531501); a = md5_gg(a, b, c, d, x, 5 , -1444681467); d = md5_gg(d, a, b, c, x, 9 , -51403784); c = md5_gg(c, d, a, b, x, 14, 1735328473); b = md5_gg(b, c, d, a, x, 20, -1926607734); a = md5_hh(a, b, c, d, x, 4 , -378558); d = md5_hh(d, a, b, c, x, 11, -2022574463); c = md5_hh(c, d, a, b, x, 16, 1839030562); b = md5_hh(b, c, d, a, x, 23, -35309556); a = md5_hh(a, b, c, d, x, 4 , -1530992060); d = md5_hh(d, a, b, c, x, 11, 1272893353); c = md5_hh(c, d, a, b, x, 16, -155497632); b = md5_hh(b, c, d, a, x, 23, -1094730640); a = md5_hh(a, b, c, d, x, 4 , 681279174); d = md5_hh(d, a, b, c, x, 11, -358537222); c = md5_hh(c, d, a, b, x, 16, -722521979); b = md5_hh(b, c, d, a, x, 23, 76029189); a = md5_hh(a, b, c, d, x, 4 , -640364487); d = md5_hh(d, a, b, c, x, 11, -421815835); c = md5_hh(c, d, a, b, x, 16, 530742520); b = md5_hh(b, c, d, a, x, 23, -995338651); a = md5_ii(a, b, c, d, x, 6 , -198630844); d = md5_ii(d, a, b, c, x, 10, 1126891415); c = md5_ii(c, d, a, b, x, 15, -1416354905); b = md5_ii(b, c, d, a, x, 21, -57434055); a = md5_ii(a, b, c, d, x, 6 , 1700485571); d = md5_ii(d, a, b, c, x, 10, -1894986606); c = md5_ii(c, d, a, b, x, 15, -1051523); b = md5_ii(b, c, d, a, x, 21, -2054922799); a = md5_ii(a, b, c, d, x, 6 , 1873313359); d = md5_ii(d, a, b, c, x, 10, -30611744); c = md5_ii(c, d, a, b, x, 15, -1560198380); b = md5_ii(b, c, d, a, x, 21, 1309151649); a = md5_ii(a, b, c, d, x, 6 , -145523070); d = md5_ii(d, a, b, c, x, 10, -1120210379); c = md5_ii(c, d, a, b, x, 15, 718787259); b = md5_ii(b, c, d, a, x, 21, -343485551); a = safe_add(a, olda); b = safe_add(b, oldb); c = safe_add(c, oldc); d = safe_add(d, oldd); } return Array(a, b, c, d); } function md5_cmn(q, a, b, x, s, t) { return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); } function md5_ff(a, b, c, d, x, s, t) { return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); } function md5_gg(a, b, c, d, x, s, t) { return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); } function md5_hh(a, b, c, d, x, s, t) { return md5_cmn(b ^ c ^ d, a, b, x, s, t); } function md5_ii(a, b, c, d, x, s, t) { return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); } function safe_add(x, y) { var lsw = (x & 0xFFFF) + (y & 0xFFFF); var msw = (x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 0xFFFF); } function bit_rol(num, cnt) { return (num << cnt) | (num >>> (32 - cnt)); } function str2binl(str) { var bin = Array(); var mask = (1 << chrsz) - 1; for(var i = 0; i < str.length * chrsz; i += chrsz) bin |= (str.charCodeAt(i / chrsz) & mask) << (i%32); return bin; } function binl2hex(binarray) { var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; var str = ""; for(var i = 0; i < binarray.length * 4; i++) { str += hex_tab.charAt((binarray >> ((i%4)*8+4)) & 0xF) + hex_tab.charAt((binarray >> ((i%4)*8 )) & 0xF); } return str; } // ----------------------------------------------------------------------------- // Our nice Revert functions // ----------------------------------------------------------------------------- var gml_vandal, gml_editor, gml_url; function PerformRevert() { var l, token = '', revert = false; // Look for '&fakeaction=rollback' in URL gml_url = location.pathname; l = location.search.substring(1).split('&'); for (i = 0; i < l.length; i++) { var n = l.indexOf('='); var name = l.substring(0, n); if (name == 'fakeaction') { if (l.substring(n + 1) == 'rollback') revert = true; } else if (name == 'vandal') { gml_vandal = unescape(l.substring(n + 1)); } else if (name == 'token') { token = unescape(l.substring(n + 1)); } else if (name == 'title') { gml_url += '?' + l; } } if (!revert) return; document.getElementById('bodyContent').innerHTML = 'Please wait, reverting edits by ' + gml_vandal + '...'; // Avoid XSS kiddies by using a special token if (token == '' || token != hex_md5(gml_url + gml_vandal + document.cookie)) { document.getElementById('bodyContent').innerHTML += '<br />Bad authentication token!'; return; } xmlhttp = HTTPClient(); if (!xmlhttp) return; document.getElementById('bodyContent').innerHTML += '<br />Getting article history...'; xmlhttp.open("GET", gml_url + '&action=history&limit=50', true); xmlhttp.onreadystatechange = RevertStepTwo; xmlhttp.send(null); } function RevertStepTwo() { if (xmlhttp.readyState != 4) return var l; var oldid; // Get the vandal and new editor names gml_vandal = gml_vandal.replace(/_/g, ' '); gml_editor = ''; doc = XMLParse(xmlhttp.responseText); l = doc.getElementById('pagehistory').getElementsByTagName('li'); //l = doc.selectSingleNode('//*').getElementsByTagName('li'); for (i = 0; i < l.length; i++) { var name = l.getElementsByTagName('span').getElementsByTagName('a').innerHTML.replace(/_/g, ' '); if (i == 0 && name != gml_vandal) { document.getElementById ('bodyContent').innerHTML += '<br />Error: Last editor is ' + name + ', not ' + gml_vandal + '!'; return; } else if (i > 0 && name != gml_vandal) { oldid = l.getElementsByTagName('input').value; gml_editor = name; break; } } if (gml_editor == '') { document.getElementById('bodyContent').innerHTML += '<br />Error: ' + gml_vandal + ' is the only editor!'; return; } xmlhttp = HTTPClient(); if (!xmlhttp) return; document.getElementById('bodyContent').innerHTML += '<br />Getting article edit form (GET' + gml_url + '&action=edit&oldid=' + oldid + ')...'; xmlhttp.open('GET', gml_url + '&action=edit&oldid=' + oldid, true); xmlhttp.onreadystatechange = RevertStepThree; xmlhttp.send(null); } function RevertStepThree() { if (xmlhttp.readyState != 4) return var form, newform, l; // Insert the downloaded form in our current page, using // only hidden form inputs. doc = XMLParse(xmlhttp.responseText); form = doc.getElementById('editform'); newform = document.createElement('form'); l = form.getElementsByTagName('textarea'); for (i = l.length; i--; ) { var t = document.createElement('input'); t.type = 'hidden'; t.name = l.name; t.value = l.value; newform.appendChild(t); } l = form.getElementsByTagName('input'); for (i = l.length; i--; ) { if (l.name == 'wpSummary') { l.value = revertpage.replace(/\$1/g, gml_editor).replace(/\$2/g, gml_vandal); } else if (l.name == 'wpMinoredit') { l.value = '1'; } else if (l.name == 'wpWatchthis') { if (!l.checked) continue; // Don’t touch the "watch" status l.value = "on"; } else if (l.name == 'wpPreview') { continue; } else if (l.name == 'wpDiff') { continue; } l.type = 'hidden'; newform.appendChild(l); } newform.name = form.name; newform.method = form.method; newform.id = form.id; newform.action = form.action; document.getElementById('bodyContent').innerHTML += '<br />Submitting form...'; document.getElementById('bodyContent').appendChild(newform); // Submit the form newform.submit(); } // ----------------------------------------------------------------------------- // Add revert buttons to the page // ----------------------------------------------------------------------------- function AddRevertButtons() { var l, article = '', vandal; // Add 'revert' links to a diff page l = document.getElementById('bodyContent').getElementsByTagName('td'); for (i = 0; i < l.length; i++) { if (l.className == 'diff-otitle') { article = l.getElementsByTagName('a').href.split('&').replace(/*\/\/*/, ''); } else if (l.className == 'diff-ntitle') { var toplink = l.getElementsByTagName('a').href; vandal = l.getElementsByTagName('a').title.split(':'); var t = l.innerHTML n = t.indexOf('</a>) <br') + t.indexOf('</A>) <BR') + 1; // XXX: WOW HACK!!!! if (n >= 0 && article != '' && toplink.indexOf('oldid=') == -1) { l.innerHTML = t.substring(0, n + 5) + ' <strong></strong> ' + t.substring(n + 5, t.length); } } } // Add 'revert' links to a contributions page if (location.href.indexOf(':Contributions') != -1) { var c = document.getElementById('contentSub'); var a = c.getElementsByTagName('a'); if (a.length == 2) { vandal = a.innerHTML; } else { vandal = c.innerHTML.replace(/ \(.*/, '').replace(/.* /, ''); } l = document.getElementById('bodyContent').getElementsByTagName('li'); for (i = 0; i < l.length; i++) { var t = l.innerHTML // If we are already a sysop on this wiki, abort if (t.indexOf('>' + rollbacklink + '</a>]') != -1) break; //if (t.indexOf('&diff=0') != -1) { if (t.indexOf('<strong> (') != -1) { article = l.getElementsByTagName('a').href.split('&').replace(/*\/\/*/, ''); l.innerHTML += ' '; } } } } // ----------------------------------------------------------------------------- // Modify the page once it is loaded // ----------------------------------------------------------------------------- if (window.addEventListener) { window.addEventListener("load", PerformRevert, false); window.addEventListener("load", AddRevertButtons, false); } else if (window.attachEvent) { window.attachEvent ("onload", PerformRevert); window.attachEvent("onload", AddRevertButtons); } // function addPurge(){ var x = document.getElementById('ca-history'); if(!x) return; if(x.children) x = x.children.href; else x = x.childNodes.href; addLink("p-cactions", x.replace(/=history/, "=purge"), 'purge', 'ca-purge', 'Purge the internal cache for this page', 0); } if (window.addEventListener) window.addEventListener("load", addPurge, false); else if (window.attachEvent) window.attachEvent("onload", addPurge); // // function addlilink(tabs, url, name, id, title, key){ var na = document.createElement('a'); na.href = url; na.appendChild(document.createTextNode(name)); var li = document.createElement('li'); if(id) li.id = id; li.appendChild(na); tabs.appendChild(li); if(id) { if(key && title) { ta = ; } else if(key) { ta = ; } else if(title) { ta = ; } } // re-render the title and accesskeys from existing code in wikibits.js akeytt(); return li; } // // function addTab(url, name, id, title, key){ var tabs = document.getElementById('p-cactions').getElementsByTagName('ul'); return addlilink(tabs, url, name, id, title, key); } // // function addPurge(){ var x = document.getElementById('ca-history'); if(!x) return; if(x.children) x = x.children.href; else x = x.childNodes.href; addLink("p-cactions", x.replace(/=history/, "=purge"), 'purge', 'ca-purge', 'Purge the internal cache for this page', 0); } if (window.addEventListener) window.addEventListener("load", addPurge, false); else if ( window.attachEvent) window.attachEvent("onload", addPurge); // function morelinks() { var tabs = document.getElementById('p-cactions').cloneNode(true); tabs.id = 'mytabs'; var listitems = tabs.getElementsByTagName('LI'); for (i=0;i<listitems.length;i++) { if(listitems.id) listitems.id = 'mytabs-' + listitems.id; } document.getElementById('column-content').appendChild(tabs); } if (window.addEventListener) window.addEventListener("load",morelinks,false); else if (window.attachEvent) window.attachEvent("onload",morelinks);