User:Jahiegel/monobook.js
Appearance
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:Jahiegel/monobook.css. |
// User:Lupin/popups.js
document.write('<script type="text/javascript" src="'
+ 'http://en.wiki.x.io/w/index.php?title=User:Lupin/popups.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
//Back-up edit counter
//Visit [[User:Interiot/Tool2/code.js]] in emergencies!
mw.loader.load('http://en.wiki.x.io/w/index.php?title=User:Interiot/Tool2/code.js&action=raw&ctype=text/javascript');
//<pre><nowiki>
// =-=-=- HELPER FUNCTIONS -=-=-=
// -----------------------------------------------------------------------------
// XMLHttpRequest support
// -----------------------------------------------------------------------------
if (document.implementation.createDocument)
{
var gml_xmlparser = new DOMParser();
}
//FF/NN/Opera
function gml_XMLParse(string)
{
if (document.implementation.createDocument)
{
return gml_xmlparser.parseFromString(string, "text/xml");
}
return null;
}
var gml_xmlhttp;
function HTTPClient() {
var gml_http;
if(window.XMLHttpRequest) {
gml_http = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
gml_http = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
gml_http = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
gml_http = false;
}
}
}
return gml_http;
}
//END
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[id] = [key, title];
}
else if(key)
{
ta[id] = [key, ''];
}
else if(title)
{
ta[id] = ['', title];
}
}
// re-render the title and accesskeys from existing code in wikibits.js
akeytt();
return li;
}
function addToolboxLink(url, name, id){
var tb = document.getElementById('p-tb').getElementsByTagName('ul')[0];
addlilink(tb, url, name, id);
}
function addTab(url, name, id, title, key){
var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
return addlilink(tabs, url, name, id, title, key);
}
function addLink(where, url, name, id, title, key, after){
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);
var tabs = document.getElementById(where).getElementsByTagName('ul')[0];
if(after) {
tabs.insertBefore(li,document.getElementById(after));
} else {
tabs.appendChild(li);
}
if(id) {
if(key && title) { ta[id] = [key, title]; }
else if(key) { ta[id] = [key, '']; }
else if(title) { ta[id] = ['', title];}
}
// re-render the title and accesskeys from existing code in wikibits.js
akeytt();
return li;
}
//END HELPER
$(addpurgel)
//Purge tab
function addpurgel()
{
if (document.title.indexOf("Editing ") != -1)
{
return;
}
else
{
if (document.title.indexOf("Wikipedia:") != -1)
{
if (location.href.indexOf("&action=history") == -1)
{addPurge();}
}
if (document.title.indexOf("User:") != -1)
{
addPurge();
}
if (document.title.indexOf("Category:") != -1)
{
addPurge();
}
}
}
//END
// ============= Purge ==============
function addPurge()
{
ta['ca-purge'] = ['g', 'Purge the internal cache for this page'];
if(!document.getElementById) return;
var x = document.getElementById('ca-history');
var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
if(!x) return;
if(x.children) x = x.children[0];
else x = x.childNodes[0];
addlilink(tabs, x.href.replace(/=history/, "=purge"), 'purge', 'ca-purge');
}
//END
//UTC clock
document.write('<script type="text/javascript" src="'
+ 'http://en.wiki.x.io/w/index.php?title=User:Voice_of_All/UTCclock.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
//END
////////////////////////////////////////////////////////////////
// -----------------------------------------------------------------------------
// RC Patrol package for non-admins
// Includes: 2 rollbacks, quick warning tabs, popups and lupin's filter
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// God-like Monobook skin
// (c) 2005 Sam Hocevar <sam@zoy.org>
// $Id: godmode-light.js 1029 2006-01-09 11:05:19Z sam $
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// Language support, taken from phase3/languages/*
// -----------------------------------------------------------------------------
var nrollbacklink = '<strong><span style="color:black;">[</span>rollback page<span style="color:black;">]<span></strong>';
var cantrollback = 'Cannot revert edit; last contributor is only author of this page.';
var alreadyrolled = 'Cannot rollback last edit of [[$1]] by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the page already. Last edit was by [[User:$3|$3]] ([[User talk:$3|Talk]]). ';
var nreverted = 'Reverted edits by [[Special:Contributions/$2|$2]] to last version by $1';
// -----------------------------------------------------------------------------
// Our nice Revert functions
// -----------------------------------------------------------------------------
var gml_vandal, gml_editor, gml_url;
function Revertnorm() {
var l, token = '', normrevert = false;
// Look for '&fakeaction=nrollback' in URL
gml_url = location.pathname;
l = location.search.substring(1).split('&');
for (i = 0; i < l.length; i++) {
var n = l[i].indexOf('=');
var name = l[i].substring(0, n);
if (name == 'fakeaction') {
if (l[i].substring(n + 1) == 'normalrevert')
normrevert = true;
} else if (name == 'user') {
gml_vandal = unescape(l[i].substring(n + 1));
} else if (name == 'token') {
token = unescape(l[i].substring(n + 1));
} else if (name == 'title') {
gml_url += '?' + l[i];
}
}
if (!normrevert)
return;
document.getElementById('bodyContent').innerHTML = '<strong>Please wait, reverting edits by ' + gml_vandal + '...</strong>';
// 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;
}
gml_xmlhttp = HTTPClient();
if (!gml_xmlhttp)
return;
history_url = gml_url + '&action=history&limit=6';
document.getElementById('bodyContent').innerHTML += '<br /><span style="color:blue;">Getting article history (' + history_url + ')...</span>';
gml_xmlhttp.open("GET", history_url, true);
gml_xmlhttp.onreadystatechange = RevertStepTwonorm;
gml_xmlhttp.send(null);
}
function RevertStepTwonorm() {
if (gml_xmlhttp.readyState != 4)
return;
var l;
var oldid;
// Get the vandal and new editor names
gml_vandal = gml_vandal.replace(/_/g, ' ');
gml_editor = '';
// Hack for a MediaWiki bug [[category:RC scripted users]]
xml = gml_xmlhttp.responseText.replace(/<body.*"ns-4">/, '<body class="ns-4">');
doc = gml_XMLParse(xml);
if (window.ActiveXObject){doc = doc.documentElement;}
if (!doc || !doc.getElementById('pagehistory')) {
document.getElementById('bodyContent').innerHTML += '<br />Failed to parse XML data returned by the server.';
document.getElementById('bodyContent').innerHTML += '<br /><b>Hint: try to disable both "Enable section editing by right-clicking on section titles (JavaScript)" and "Edit pages on double click (JavaScript)" in your editing preferences until a proper fix is found</b>.';
document.getElementById('bodyContent').innerHTML += '<br />Dump of the unparseable page : <br />' + xml.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
return;
}
l = doc.getElementById('pagehistory').getElementsByTagName('li');
//l = doc.selectSingleNode('//*[@id="pagehistory"]').getElementsByTagName('li');
for (i = 0; i < l.length; i++) {
var name = l[i].getElementsByTagName('span')[0].getElementsByTagName('a')[0].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[i].getElementsByTagName('input')[0].value;
gml_editor = name;
break;
}
}
if (gml_editor == '') {
document.getElementById('bodyContent').innerHTML += '<br />Error: ' + gml_vandal + ' is the only editor!';
return;
}
gml_xmlhttp = HTTPClient();
if (!gml_xmlhttp)
return;
document.getElementById('bodyContent').innerHTML += '<br />Getting article edit form (GET' + gml_url + '&action=edit&oldid=' + oldid + ')...';
gml_xmlhttp.open('GET', gml_url + '&action=edit&oldid=' + oldid, true);
gml_xmlhttp.onreadystatechange = RevertStepThreenorm;
gml_xmlhttp.send(null);
}
function RevertStepThreenorm() {
if (gml_xmlhttp.readyState != 4)
return
var form, newform, l;
// Insert the downloaded form in our current page, using
// only hidden form inputs.[[category:RC scripted users]]
doc = gml_XMLParse(gml_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[i].name;
t.value = l[i].value;
newform.appendChild(t);
}
l = form.getElementsByTagName('input');
for (i = l.length; i--; ) {
if (l[i].name == 'wpSummary') {
l[i].value = nreverted.replace(/\$1/g, gml_editor).replace(/\$2/g, gml_vandal);
} else if (l[i].name == 'wpMinoredit') {
l[i].value = '1';
} else if (l[i].name == 'wpWatchthis') {
if (!l[i].checked)
continue; // Don’t touch the "watch" status
l[i].value = "on";
} else if (l[i].name == 'wpPreview') {
continue;
} else if (l[i].name == 'wpDiff') {
continue;
}
l[i].type = 'hidden';
newform.appendChild(l[i]);
}
newform.name = form.name;
newform.method = form.method;
newform.id = form.id;
newform.action = form.action;
document.getElementById('bodyContent').innerHTML += '<br /><strong>Submitting form...</strong>';
document.getElementById('bodyContent').appendChild(newform);
// Submit the form
newform.submit();
}
// -----------------------------------------------------------------------------
// Language support, taken from phase3/languages/*
// -----------------------------------------------------------------------------
var rollbacklink = '<strong><span style="color:black;">[</span><span style="color:red;">revert (vandal)</span><span style="color:black;">]</strong><br></span>';
var cantrollback = 'Cannot revert edit; last contributor is only author of this page.';
var alreadyrolled = 'Cannot rollback last edit of [[$1]] by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the page already. Last edit was by [[User:$3|$3]] ([[User talk:$3|Talk]]). ';
var revertpage = 'Reverted [[Wikipedia:Vandalism|vandalism]] by [[Special:Contributions/$2|$2]] to last version by $1. Please do not compromise the integrity of pages.';
// -----------------------------------------------------------------------------
// 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[len >> 5] |= 0x80 << ((len) % 32);
x[(((len + 64) >>> 9) << 4) + 14] = 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[i+ 0], 7 , -680876936); d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819); b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426); c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416); d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); c = md5_ff(c, d, a, b, x[i+10], 17, -42063); b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682); d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); c = md5_gg(c, d, a, b, x[i+11], 14, 643717713); b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083); c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438); d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501); a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473); b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562); b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353); c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174); d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189); a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); c = md5_hh(c, d, a, b, x[i+15], 16, 530742520); b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415); c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571); d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359); d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649); a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259); b = md5_ii(b, c, d, a, x[i+ 9], 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[i>>5] |= (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>>2] >> ((i%4)*8+4)) & 0xF) +
hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);
}
return str;
}
// -----------------------------------------------------------------------------
// Our nice Revert functions
// -----------------------------------------------------------------------------
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[i].indexOf('=');
var name = l[i].substring(0, n);
if (name == 'fakeaction') {
if (l[i].substring(n + 1) == 'rollback')
revert = true;
} else if (name == 'vandal') {
gml_vandal = unescape(l[i].substring(n + 1));
} else if (name == 'token') {
token = unescape(l[i].substring(n + 1));
} else if (name == 'title') {
gml_url += '?' + l[i];
}
}
if (!revert)
return;
document.getElementById('bodyContent').innerHTML = '<strong>Please wait, reverting edits by ' + gml_vandal + '...</strong>';
// Avoid XSS kiddies by using a special token
if (token == '' || token != hex_md5(gml_url + gml_vandal + document.cookie)) {
document.getElementById('bodyContent').innerHTML += '<br />Error<span style="color:red;">Bad authentication token</font>';
return;
}
gml_xmlhttp = HTTPClient();
if (!gml_xmlhttp)
return;
history_url = gml_url + '&action=history&limit=6';
document.getElementById('bodyContent').innerHTML += '<br /><span style="color:blue;">Getting article history (' + history_url + ')...</span>';
gml_xmlhttp.open("GET", history_url, true);
gml_xmlhttp.onreadystatechange = RevertStepTwo;
gml_xmlhttp.send(null);
}
function RevertStepTwo() {
if (gml_xmlhttp.readyState != 4)
return;
var l;
var oldid;
// Get the vandal and new editor names [[category:RC scripted users]]
gml_vandal = gml_vandal.replace(/_/g, ' ');
gml_editor = '';
// Hack for a MediaWiki bug
xml = gml_xmlhttp.responseText.replace(/<body.*"ns-4">/, '<body class="ns-4">');
doc = gml_XMLParse(xml);
if (!doc || !doc.getElementById('pagehistory')) {
document.getElementById('bodyContent').innerHTML += '<br />Failed to parse XML data returned by the server.';
document.getElementById('bodyContent').innerHTML += '<br /><b>Hint: try to disable both "Enable section editing by right-clicking on section titles (JavaScript)" and "Edit pages on double click (JavaScript)" in your editing preferences until a proper fix is found</b>.';
document.getElementById('bodyContent').innerHTML += '<br />Dump of the unparseable page : <br />' + xml.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
return;
}
l = doc.getElementById('pagehistory').getElementsByTagName('li');
//l = doc.selectSingleNode('//*[@id="pagehistory"]').getElementsByTagName('li');
for (i = 0; i < l.length; i++) {
var name = l[i].getElementsByTagName('span')[0].getElementsByTagName('a')[0].innerHTML.replace(/_/g, ' ');
if (i == 0 && name != gml_vandal) {
document.getElementById('bodyContent').innerHTML += '<br />Error: Last editor is ' + name + ', not ' + gml_vandal + '. The vandal may have already been reverted.';
return;
} else if (i > 0 && name != gml_vandal) {
oldid = l[i].getElementsByTagName('input')[0].value;
gml_editor = name;
break;
}
}
if (gml_editor == '') {
document.getElementById('bodyContent').innerHTML += '<br />Error: ' + gml_vandal + ' is the only editor!';
return;
}
gml_xmlhttp = HTTPClient();
if (!gml_xmlhttp)
return;
document.getElementById('bodyContent').innerHTML += '<br /><span style="color:blue;">Getting article edit form (GET' + gml_url + '&action=edit&oldid=' + oldid + ')...</span>';
gml_xmlhttp.open('GET', gml_url + '&action=edit&oldid=' + oldid, true);
gml_xmlhttp.onreadystatechange = RevertStepThree;
gml_xmlhttp.send(null);
}
function RevertStepThree() {
if (gml_xmlhttp.readyState != 4)
return
var form, newform, l;
var artname = document.title.split('Editing ')[1].split(' - ')[0];
// Insert the downloaded form in our current page, using
// only hidden form inputs.
doc = gml_XMLParse(gml_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[i].name;
t.value = l[i].value;
newform.appendChild(t);
}
l = form.getElementsByTagName('input');
for (i = l.length; i--; ) {
if (l[i].name == 'wpSummary') {
l[i].value = revertpage.replace(/\$1/g, gml_editor).replace(/\$2/g, gml_vandal);
} else if (l[i].name == 'wpMinoredit') {
l[i].value = '1';
} else if (l[i].name == 'wpWatchthis') {
if (!l[i].checked)
continue; // Don’t touch the "watch" status
l[i].value = "on";
} else if (l[i].name == 'wpPreview') {
continue;
} else if (l[i].name == 'wpDiff') {
continue;
}
l[i].type = 'hidden';
newform.appendChild(l[i]);
}
newform.name = form.name;
newform.method = form.method;
newform.id = form.id;
newform.action = form.action;
document.getElementById('bodyContent').innerHTML += '<br /><strong>Submitting form...</strong>';
document.getElementById('bodyContent').appendChild(newform);
// Submit the form [[category:RC scripted users]]
newform.submit();
window.open('http://en.wiki.x.io/w/index.php?title=User talk:' + gml_vandal + '&action=edit' + '&action=edit&vanarticle=' + escape(artname),
'targetname',
'location=no,toolbar=no,status=no,directories=no,scrollbars=yes');
}
// -----------------------------------------------------------------------------
// Add revert buttons to the page
// -----------------------------------------------------------------------------
function AddRevertButtonsnorm()
{
var l, article = '', vandal;
// Add 'revert' links to a diff page
var user_name = document.getElementById('pt-userpage').getElementsByTagName('a')[0].innerHTML;
l = document.getElementById('bodyContent').getElementsByTagName('td');
for (i = 0; i < l.length; i++) {
if (l[i].className == 'diff-otitle') {
article = l[i].getElementsByTagName('a')[0].href.split('&')[0].replace(/[^\/]*\/\/[^\/]*/, '');
} else if (l[i].className == 'diff-ntitle') {
var toplink = l[i].getElementsByTagName('a')[0].href;
vandalip = l[i].getElementsByTagName('a')[1].href.split(':')[2].split('=')[1];
vandal = l[i].getElementsByTagName('a')[1].href.split(':')[2].split('&')[0];
IEvandal = escape(l[i].getElementsByTagName('a')[1].innerHTML);
var t = l[i].innerHTML
n = t.indexOf('</a>) <br') + t.indexOf('</A>) <BR') + 1; // XXX: WOW HACK!!!!
if (article != '' && toplink.indexOf('oldid=') == -1)
{
if (!window.ActiveXObject)
{
if (vandal == 'Contributions')
{
l[i].innerHTML = '<strong><a href="' + article + '&action=edit&fakeaction=normalrevert&user=' + vandalip + '&token=' + hex_md5(article + vandalip + document.cookie) + '">' + nrollbacklink + '</a></strong> || <a href="' + article + '&action=edit&fakeaction=rollback&vandal=' + vandalip + '&token=' + hex_md5(article + vandalip + document.cookie) + '">' + rollbacklink + '</a> ' + t;
}
else
{
l[i].innerHTML = '<strong><a href="' + article + '&action=edit&fakeaction=normalrevert&user=' + vandal + '&token=' + hex_md5(article + vandal + document.cookie) + '">' + nrollbacklink + '</a></strong> || <a href="' + article + '&action=edit&fakeaction=rollback&vandal=' + vandal + '&token=' + hex_md5(article + vandal + document.cookie) + '">' + rollbacklink + '</a> ' + t;
}
}
else if (window.ActiveXObject)
{
l[i].innerHTML = '<strong><a href="' + article + '&action=history&limit=6&fakeaction=IEnormalrevert&user=' + IEvandal + '&byuser=' + escape(user_name) + '">' + nrollbacklink + '</a></strong> || <a href="' + article + '&action=history&limit=6&fakeaction=IErollback&vandal=' + IEvandal + '&byuser=' + user_name + '">' + rollbacklink + '</a> ' + t;
}
}
}
}
}
// -----------------------------------------------------------------------------
// Modify the page once it is loaded
// -----------------------------------------------------------------------------
if (window.addEventListener) {
window.addEventListener("load", Revertnorm, false);
window.addEventListener("load", AddRevertButtonsnorm, false);
window.addEventListener("load", PerformRevert, false);
} else if (window.attachEvent) {
window.attachEvent("onload", Revertnorm);
window.attachEvent("onload", AddRevertButtonsnorm);
window.attachEvent("onload", PerformRevert);
}
// ============= test-n.js ==============
function tnaddlilink(url, name)
{
var na = document.createElement('a');
na.setAttribute('href', url);
var txt = document.createTextNode(name);
na.appendChild(txt);
var li = document.createElement('li');
li.appendChild(na);
return li;
}
function testn(number)
{
var varticle = '';
if (location.href.indexOf('&vanarticle=') != -1)
{varticle = ' to [[' + unescape(location.href.split('&vanarticle=')[1]) + ']]';}
var f = document.editform, t = f.wpTextbox1;
if (t.value.length > 0)
t.value += '\n';
t.value +="====" + "Regarding edits made during [[{{subst:CURRENTMONTHNAME}} {{subst:CURRENTDAY}}]] [[{{subst:CURRENTYEAR}}]] ([[UTC]])" + varticle + "====" + "\n" + "{{subst:" + "test" + number + "}} " + "''If this is an [[IP address]], and it is shared by multiple users, ignore this warning if you did not make any [[Wikipedia:vandalism|unconstructive]] edits.'' " + "~" + "~" + "~" + "~";
f.wpSummary.value = "User notice:" + " test" + number;
}
function warningn()
{
var varticle = '';
if (location.href.indexOf('&vanarticle=') != -1)
{varticle = ' to [[' + unescape(location.href.split('&vanarticle=')[1]) + ']]';}
var f = document.editform, t = f.wpTextbox1;
if (t.value.length > 0)
t.value += '\n';
t.value +="====" + "Regarding edits made during [[{{subst:CURRENTMONTHNAME}} {{subst:CURRENTDAY}}]] [[{{subst:CURRENTYEAR}}]] ([[UTC]])" + varticle + "====" + "\n" + "{{subst:" + "bv" + "}} " + "''If this is an [[IP address]], and it is shared by multiple users, ignore this warning if you did not make any [[Wikipedia:vandalism|malicious]] edits.'' " + "~" + "~" + "~" + "~";
f.wpSummary.value = "User notice:" + " bv";
}
function testbl(number)
{
var varticle = '';
if (location.href.indexOf('&vanarticle=') != -1)
{varticle = ' to [[' + unescape(location.href.split('&vanarticle=')[1]) + ']]';}
var f = document.editform, t = f.wpTextbox1;
if (t.value.length > 0)
t.value += '\n';
t.value +="====" + "Regarding edits made during [[{{subst:CURRENTMONTHNAME}} {{subst:CURRENTDAY}}]] [[{{subst:CURRENTYEAR}}]] ([[UTC]])" + varticle + "====" + "\n" + "{{subst:" + "Blank" + number + "}} " + "''If this is an [[IP address]], and it is shared by multiple users, ignore this warning if you did not make any [[Wikipedia:vandalism|malicious]] edits.'' " + "~" + "~" + "~" + "~";
f.wpSummary.value = "User notice:" + " Blank" + number;
}
function spam()
{
var varticle = '';
if (location.href.indexOf('&vanarticle=') != -1)
{varticle = ' to [[' + unescape(location.href.split('&vanarticle=')[1]) + ']]';}
var f = document.editform, t = f.wpTextbox1;
if (t.value.length > 0)
t.value += '\n';
t.value +="====" + "Regarding edits made during [[{{subst:CURRENTMONTHNAME}} {{subst:CURRENTDAY}}]] [[{{subst:CURRENTYEAR}}]] ([[UTC]])" + varticle + "====" + "\n" + "{{subst:" + "spam}} " + "''If this is an [[IP address]], and it is shared by multiple users, ignore this warning if you were not the one who added [[Wikipedia:spam|spam]] links.'' " + "~" + "~" + "~" + "~";
f.wpSummary.value = "User notice:" + " spam";
}
function spamn(number)
{
var varticle = '';
if (location.href.indexOf('&vanarticle=') != -1)
{varticle = ' to [[' + unescape(location.href.split('&vanarticle=')[1]) + ']]';}
var f = document.editform, t = f.wpTextbox1;
if (t.value.length > 0)
t.value += '\n';
t.value +="====" + "Regarding edits made during [[{{subst:CURRENTMONTHNAME}} {{subst:CURRENTDAY}}]] [[{{subst:CURRENTYEAR}}]] ([[UTC]])" + varticle + "====" + "\n" + "{{subst:" + "spam" + number + "}} " + "''If this is an [[IP address]], and it is shared by multiple users, ignore this warning if you were not the one who added [[Wikipedia:spam|spam]] links.'' " + "~" + "~" + "~" + "~";
f.wpSummary.value = "User notice:" + " spam" + number;
}
//************
//LAST DIFF TAB
function lastdiff()
{
if (document.title.indexOf("Editing ") != -1)
{return;}
z=document.getElementById("content").childNodes;
for (var n=0;n<z.length;n++) {
if (z[n].className=="firstHeading")
{
var pname=z[n].innerHTML.replace('&','%26').replace('&','%26').replace('&','%26').replace("+", "%2B").replace("+", "%2B");
}
}
var l=addTab("http://en.wiki.x.io/w/index.php?title=" + pname + "&diff=cur&oldid=prev", 'last', '');
l.lastChild.title="Show most recent diff";
}
//Quick warning tabs
$(add_testn_tabs);
function add_testn_tabs()
{
var c1 = document.getElementById('column-one');
var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0];
if(document.getElementById('ca-history'))
{lastdiff();}
if (document.title.indexOf("Editing User talk:") != -1)
{
tabs.appendChild(tnaddlilink('javascript:testn(1)',"t"));
tabs.appendChild(tnaddlilink('javascript:testn(2)',"t2"));
tabs.appendChild(tnaddlilink('javascript:testn(3)',"w"));
tabs.appendChild(tnaddlilink('javascript:warningn()',"v"));
tabs.appendChild(tnaddlilink('javascript:testbl(2)',"b"));
tabs.appendChild(tnaddlilink('javascript:testbl(3)',"b2"));
tabs.appendChild(tnaddlilink('javascript:spam()',"s"));
tabs.appendChild(tnaddlilink('javascript:spamn(2)',"s1"));
if(document.getElementById('ca-delete'))
{
document.getElementById('ca-delete').firstChild.innerHTML = '[d]';
}
if(document.getElementById('ca-move'))
{
document.getElementById('ca-move').firstChild.innerHTML = '[m]';
}
if(document.getElementById('ca-watch'))
{
document.getElementById('ca-watch').firstChild.innerHTML = '[w]';
}
if(document.getElementById('ca-unwatch'))
{
document.getElementById('ca-unwatch').firstChild.innerHTML = '[uw]';
}
if(document.getElementById('ca-edit'))
{
document.getElementById('ca-edit').firstChild.innerHTML = 'Edit';
}
if(document.getElementById('ca-talk'))
{
document.getElementById('ca-talk').firstChild.innerHTML = 'Talk';
}
if(document.getElementById('ca-protect'))
{
document.getElementById('ca-protect').firstChild.innerHTML = 'P (off)';
}
if(document.getElementById('ca-unprotect'))
{
document.getElementById('ca-unprotect').firstChild.innerHTML = 'P (on)';
}
}
}
//END
// [[User:Lupin/popupsdev.js]] - please include this line
document.write('<script type="text/javascript" src="'
+ 'http://en.wiki.x.io/w/index.php?title=User:Lupin/popupsdev.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
popupStructure='shortmenus';
popupSubpopups=false;
//END
// [[User:Lupin/recent2.js]] - please include this line
mw.loader.load(
'http://en.wiki.x.io/w/index.php?title=User:Lupin/recent2.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s');
//more revert tools
document.write('<script type="text/javascript" src="'
+ 'http://en.wiki.x.io/w/index.php?title=User:Voice_of_All/Revert/monobook.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
//<nowiki> History tools
mw.loader.load(
'http://en.wiki.x.io/w/index.php?title=User:Voice_of_All/History/monobook.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s');
//</nowiki><pre></pre>
// Script from [[User:ais523/editcount.js]]
document.write('<script type="text/javascript" src="'
+ 'http://en.wiki.x.io/w/index.php?title=User:ais523/editcount.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
// CSD AutoReason
document.write('<script type="text/javascript" src="'
+ 'http://en.wiki.x.io/w/index.php?title=User:^demon/csd.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
// [[User:Ais523/votesymbols.js]]
// Code for adding icons to !votes in AfDs, RfAs, etc.. Doesn't affect the page, just
// shows the icons when this code is installed.
// Please see [[:Image:Votesymbols.js-enhanced_SfD.png]] for copyright info on the images that are added.
function lowerNoPunct(s)
{
return s.toLowerCase().split('.').join('').split(',').join('').split(':').join('').split(';').join('').split('+').join('');
}
$(function() {
if(wgNamespaceNumber==0) return; //avoid article space, generally speaking
var vs=
"http://up.wiki.x.io/wikipedia/commons/thumb/9/94/Symbol_support_vote.svg/15px-Symbol_support_vote.svg.png#"+
"http://up.wiki.x.io/wikipedia/commons/thumb/d/d0/Symbol_keep_vote.svg/15px-Symbol_keep_vote.svg.png#"+
"http://up.wiki.x.io/wikipedia/commons/thumb/7/7f/Symbol_oppose_vote.svg/15px-Symbol_oppose_vote.svg.png#"+
"http://up.wiki.x.io/wikipedia/commons/thumb/8/89/Symbol_delete_vote.svg/15px-Symbol_delete_vote.svg.png#"+
"http://up.wiki.x.io/wikipedia/commons/thumb/8/89/Symbol_neutral_vote.svg/15px-Symbol_neutral_vote.svg.png#"+
"http://up.wiki.x.io/wikipedia/commons/thumb/b/b0/Symbol_merge_vote.svg/15px-Symbol_merge_vote.svg.png#"+
"http://up.wiki.x.io/wikipedia/commons/thumb/5/50/Symbol_move_vote.svg/15px-Symbol_move_vote.svg.png#"+
"http://up.wiki.x.io/wikipedia/commons/thumb/0/0c/Symbol_redirect_vote.svg/15px-Symbol_redirect_vote.svg.png#"+
"http://up.wiki.x.io/wikipedia/commons/thumb/b/ba/Symbol_opinion_vote.svg/15px-Symbol_opinion_vote.svg.png#"+
"http://up.wiki.x.io/wikipedia/commons/thumb/9/9e/Symbol_comment_vote_2.svg/15px-Symbol_comment_vote_2.svg.png#"+
"http://up.wiki.x.io/wikipedia/commons/thumb/f/f6/Symbol_unsupport_vote.svg/15px-Symbol_unsupport_vote.svg.png#"+
"http://up.wiki.x.io/wikipedia/commons/thumb/e/e0/Symbol_question.svg/15px-Symbol_question.svg.png#"+
"http://up.wiki.x.io/wikipedia/commons/thumb/a/aa/Symbol_divide_vote.svg/15px-Symbol_divide_vote.svg.png#"+
"http://up.wiki.x.io/wikipedia/commons/thumb/5/54/Symbol_wait.svg/15px-Symbol_wait.svg.png#"+
"http://up.wiki.x.io/wikipedia/commons/thumb/b/bc/Face-grin.svg/15px-Face-grin.svg.png";
var vt=vs.split("#");
var la=new Array();
la['support']=0; la['endorse']=0;
la['keep']=1;
la['oppose']=2; la['overturn']=2; la['object']=2;
la['delete']=3;
la['neutral']=4;
la['merge']=5; la['upmerge']=5;
la['move']=6; la['rename']=6; la['userfy']=6; la['transwiki']=6;
la['redirect']=7;
la['opinion']=8; la['relist']=8; la['subst']=8; la['salt']=8; la['change']=8;
// Note that icon 8 on the list is often used for debate-specific !votes
la['comment']=9; la['update']=9; la['note']=9;
la['delist']=10;
la['question']=11;
la['split']=12;
la['wait']=13;
la['bjaodn']=14;
var btc=document.body.getElementsByTagName("B");
i=btc.length;
while(i--)
{
var j,k;
j=btc[i].innerHTML.split("<").join(" ").split(">").join(" ").split("/").join(" ").split(" ");
k=0;
var x="";
while(k<j.length)
{
if(lowerNoPunct(j[k])=="don't"||lowerNoPunct(j[k])=='not'
||lowerNoPunct(j[k])=='no'||lowerNoPunct(j[k])=='without') break;
var l=la[lowerNoPunct(j[k])];
if(l!=undefined)
{
x+="<IMG SRC='"+vt[l]+"' /> "
}
k++;
}
if(x!="") btc[i].innerHTML=x+btc[i].innerHTML;
}
});
//
// addPurge
$(function () {
var hist; var url;
if (!(hist = document.getElementById('ca-history') )) return;
if (!(url = hist.getElementsByTagName('a')[0] )) return;
if (!(url = url.href )) return;
mw.util.addPortletLink('p-cactions', url.replace(/([?&]action=)history([&#]|$)/, '$1purge$2'),
'purge', 'ca-purge', 'Purge server cache for this page', '0');
});
//
/* Templates Used finder, version [0.0.3b]
Originally from: http://en.wiki.x.io/wiki/User:Splarka/temused.js
Notes:
* Uses the API using head/appendchild(script) and callback to avoid ajax.
* Redesigned a-la http://en.wiki.x.io/wiki/User:Splarka/templatesabused.js (which is for edit mode)
** This script is for view mode. Similar display, completely different method of operation.
*/
if(wgNamespaceNumber != -1 && wgArticleId > 0 && wgAction == 'view') addOnloadHook(findTemButton)
function findTemButton() {
var portlet = (window.temusedIAmATool) ? 'p-tb' : 'p-cactions';
mw.util.addPortletLink(portlet,'javascript:findTem()','Templates used','ca-tem');
if(queryString('findtem')=='true') findTem();
}
function findTem() {
var bar = document.getElementById('contentSub') || document.getElementById('topbar');
if(!bar) return;
var div = document.createElement('div');
div.setAttribute('id','tem-out');
bar.appendChild(div);
injectSpinner(div,'tem');
var url = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?maxage=0&smaxage=0&format=json&callback=findTemCB&action=query&generator=templates>llimit=500&prop=revisions&indexpageids&titles=' + encodeURIComponent(mw.config.get('wgPageName')) ;
mw.loader.load(url);
}
function findTemCB(obj) {
var tem = document.getElementById('tem-out');
removeSpinner('tem');
if(!obj['query'] || !obj['query']['pages']) {
tem.appendChild(document.createTextNode('error, or no templates found'));
return;
}
appendCSS('#ca-tem a {display:none;} #tem-out {border:1px solid #777777;} .tem-week {color:black;} .tem-day {font-weight:bold;} .tem-hour {color:red;}');
var ul = document.createElement('ul');
var ids = obj['query']['pageids'];
for(var i=0;i<ids.length;i++) {
if(parseInt([ids[i]]) < 0) continue
var page = obj['query']['pages'][ids[i]];
var title = page['title'];
if(!page['revisions']) continue
var rev = page['revisions'][0];
var li = document.createElement('li');
var ts = rev['timestamp'] || 0;
var now = new Date();
var tsd = new Date();
tsd.setISO8601(ts);
var timesince = Math.floor((now - tsd)/1000);
if(timesince == '') timesince = -1;
addLinkChild(li,wgScript + '?curid=' + page['pageid'],title);
if(timesince > 604800) li.className = 'tem-stale';
li.appendChild(document.createElement('br'));
li.appendChild(document.createTextNode('Last edited: '));
var span = document.createElement('span');
span.appendChild(document.createTextNode(duration(timesince,2)));
span.className = 'tem-time'
if(timesince < 604800) span.className += ' tem-week'
if(timesince < 86400) span.className += ' tem-day'
if(timesince < 3600) span.className += ' tem-hour'
li.appendChild(span)
li.appendChild(document.createTextNode(' ago by '));
addLinkChild(li, wgScript + '?title=Special:Contributions/' + encodeURIComponent(rev['user']),rev['user']);
li.appendChild(document.createTextNode(' ('));
addLinkChild(li, wgScript + '?diff=' + rev['revid'],'diff',false,false,'diff=' + rev['revid']);
li.appendChild(document.createTextNode(') '));
if(rev['comment']) li.appendChild(document.createTextNode(rev['comment']))
ul.appendChild(li);
}
tem.appendChild(ul);
}
function addLinkChild(obj,href,text,id,classes,title) {
if(!obj || !href || !text) return false;
var a = document.createElement('a');
a.setAttribute('href',href);
a.appendChild(document.createTextNode(text));
if(id) a.setAttribute('id',id);
if(classes) a.setAttribute('class',classes);
if(title) a.setAttribute('title',title);
obj.appendChild(a);
return a;
}
function queryString(p) {
var re = RegExp('[&?]' + p + '=([^&]*)');
var matches;
if (matches = re.exec(document.location)) {
try {
return decodeURI(matches[1]);
} catch (e) {
}
}
return null;
}
//ISO 8601 date module by Paul Sowden, licensed under AFL.
Date.prototype.setISO8601 = function(string) {
if(!string) return
var regexp = '([0-9]{4})(-([0-9]{2})(-([0-9]{2})(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?';
var d = string.match(new RegExp(regexp));
if(d.length < 1) return
var offset = 0;
var date = new Date(d[1], 0, 1);
if(d[3]) date.setMonth(d[3] - 1)
if(d[5]) date.setDate(d[5])
if(d[7]) date.setHours(d[7])
if(d[8]) date.setMinutes(d[8])
if(d[10]) date.setSeconds(d[10])
if(d[12]) date.setMilliseconds(Number('0.' + d[12]) * 1000)
if(d[14]) {
offset = (Number(d[16]) * 60) + Number(d[17]);
offset *= ((d[15] == '-') ? 1 : -1);
}
offset -= date.getTimezoneOffset();
time = (Number(date) + (offset * 60 * 1000));
this.setTime(Number(time));
}
function duration(input,depth) {
var num = input;
var out = '';
var s = num % 60; num = Math.floor(num / 60);
var m = num % 60; num = Math.floor(num / 60);
var h = num % 24; num = Math.floor(num / 24);
var d = num % 7; num = Math.floor(num / 7);
var w = num % 52; num = Math.floor(num / 52);
var y = num
if(y > 0) out += y + 'yrs '
if(y + w > 0) out += w + 'wks '
if(y + w + d > 0) out += d + 'days '
if(y + w + d + h > 0) out += h + 'hrs '
if(y + w + d + h + m > 0) out += m + 'mins '
out += s + 'secs';
if(depth && depth < out.split(' ').length) {
out = out.split(' ').slice(0,depth).join(' ');
}
return out;
}
/*
* debug - v0.3 - 6/8/2009
* http://benalman.com/projects/javascript-debug-console-log/
*
* Copyright (c) 2009 "Cowboy" Ben Alman
* Licensed under the MIT license
* http://benalman.com/about/license/
*
* With lots of help from Paul Irish!
* http://paulirish.com/
*/
window.debug=(function(){var c=this,e=Array.prototype.slice,b=c.console,i={},f,g,j=9,d=["error","warn","info","debug","log"],m="assert clear count dir dirxml group groupEnd profile profileEnd time timeEnd trace".split(" "),k=m.length,a=[];while(--k>=0){(function(n){i[n]=function(){j!==0&&b&&b[n]&&b[n].apply(b,arguments)}})(m[k])}k=d.length;while(--k>=0){(function(n,o){i[o]=function(){var q=e.call(arguments),p=[o].concat(q);a.push(p);h(p);if(!b||!l(n)){return}b.firebug?b[o].apply(c,q):b[o]?b[o](q):b.log(q)}})(k,d[k])}function h(n){if(f&&(g||!b||!b.log)){f.apply(c,n)}}i.setLevel=function(n){j=typeof n==="number"?n:9};function l(n){return j>0?j>n:d.length+j<=n}i.setCallback=function(){var o=e.call(arguments),n=a.length,p=n;f=o.shift()||null;g=typeof o[0]==="boolean"?o.shift():false;p-=typeof o[0]==="number"?o.shift():n;while(p<n){h(a[p++])}};return i})();
// =============== REWORD ===============
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
function logg(message) {
debug.log(message);
//if (console && console.log) console.log(message);
}
addLoadEvent(enableQuickEditing);
//$(window).load( enableQuickEditing );
qeTextSel="";
function enableQuickEditing() {
//if (window.location.href.indexOf("index.php") != -1) return;
updateData(); //TODO: make lazy
//window.onmouseup = releaseSelection; //TODO - add listener
$("body").mouseup(releaseSelection);
$("body").mousedown(updateCursor);
$("body").mousemove(updateCursor);
}
function updateCursor(e) {
logg("updating cursor");
if (qeTextSel==getSelectedText() && e.ctrlKey) return;
if (! e.ctrlKey) {
$("#bodyContent").css("background","");
return; // ignore ctrl not held
}
logg("updating cursor - valid");
var xqeTextSel = getSelectedText();
var xqeHtmlSel = getSelectedHtml();
var text = (xqeHtmlSel==xqeTextSel?xqeTextSel:xqeHtmlSel);
if (xqeTextSel.length > 5) {
logg("updating cursor >5");
var first = qeText.indexOf(text);
var second = qeText.indexOf(text, first+1);
var bgColor="";
if (first!=-1 && second==-1) {
bgColor = "#efe"; // 'crosshair';
} else {
bgColor = second==-1?"#fee":"#ffe"; //(second==-1?'help':'move');
}
$("#bodyContent").css("background",bgColor);
}
//var newText=getSelectedText();
}
function releaseSelection(e){
logg("released");
if (qeTextSel==getSelectedText()) return; //ignore stray mouse clicks
if (! e.ctrlKey) return; // ignore ctrl not held
logg("released - valid");
// document.body.style.cursor = 'crosshair';
qeTextSel = getSelectedText();
qeHtmlSel = getSelectedHtml();
if (qeTextSel.length > 5) {
logg("released >5");
if (qeHtmlSel==qeTextSel) {
tryToEdit(qeTextSel);
} else {
tryToEdit(qeHtmlSel);
}
}
};
function getSelectedText(){
if(window.getSelection){
return window.getSelection().toString();
} else if(document.getSelection){
return document.getSelection();
} else if(document.selection){
return document.selection.createRange().text;
}
}
function getSelectedHtml(){ // returns translated HTML
if(window.getSelection){
var frag = window.getSelection().getRangeAt(0).cloneContents()
var $div = $("<div/>").append(frag);
$div.children("a").each( function() {
var $this = $(this);
var text = $this.text();
var ref = $this.attr("href").toLowerCase(); // TODO try both?
ref = ref.split("_").join(" ");
ref = ref.split("/wiki/").join("");
//alert(text+"\n"+ref);
$this.removeAttr("title");
$this.removeAttr("class");
$this.removeAttr("href");
if (text!=ref) $this.attr("title32",ref).attr("matchscrap673","99688");
});
var trans = $div.get(0).innerHTML;
trans = trans.split("<a>").join("[[");
trans = trans.split("</a>").join("]]");
trans = trans.split("<i>").join("''");
trans = trans.split("</i>").join("''");
trans = trans.split("<b>").join("'''");
trans = trans.split("</b>").join("'''");
trans = trans.split("<a title32=\"").join("[[");
trans = trans.split("\" matchscrap673=\"99688\">").join("|");
return trans;
} else if(document.getSelection){
return document.getSelection();
} else if(document.selection){
return document.selection.createRange().htmlText;
}
}
function updateData() {
$.getJSON("http://en.wiki.x.io/w/api.php?action=query&prop=revisions&titles="+wgPageName+"&rvprop=timestamp|user|comment|content&format=json",
function(data){
$.each(data.query.pages, function(i,item){
qeText = item.revisions[0]["*"];
});
});
}
var rewordComment = (rewordComment? rewordComment:"---");
var qeSpecialSequences ={};
function rewordReplace(key, value) {
qeSpecialSequences[key] = value;
}
rewordReplace("\\n","\n");
function tryToEdit(text) {
var first = qeText.indexOf(text);
var second = qeText.indexOf(text, first+1);
logg("trying to edit");
if (first!=-1 && second==-1) {
var replacement = prompt("Changing:\n <" + text + ">",text); //alert(newText);
if (replacement==null) return;
for (var key in qeSpecialSequences) {
replacement = replacement.split(key).join(qeSpecialSequences[key]);
}
var edsum="";
if (replacement.indexOf("~~"+"~~")!= -1) {
edsum = "reply ";
// TODO: perhaps display "[the first 10/20 characters]..." of the inserted comment.
} else {
var esIndex= replacement.indexOf(rewordComment);
if(esIndex!= -1) {
edsum += replacement.substring(esIndex+rewordComment.length);
replacement = replacement.substring(0,esIndex);
} else {
edsum += "'"+text+"' → '"+replacement+"' ";
}
}
edsum += "(using [[User:M/Reword|Reword]])";
var newText = qeText.replace(text,replacement);
$.getJSON("http://en.wiki.x.io/w/api.php?action=query&prop=info|revisions&intoken=edit&titles="+wgPageName+"&format=json", function(data){
$.each(data.query.pages, function(i,item){
qeToken = item.edittoken;
qeTimestamp = item.starttimestamp;
$.post("/w/api.php", { action: "edit", title: wgPageName, notminor:"", summary:edsum, text:newText, basetimestamp:qeTimestamp, token:qeToken, format:"json" },
function(data) {
alert(data);
window.location.reload(true); //updateData();
history.go(0);
window.location.href=window.location.href;
updateData();
});
});
});
} else {
var out = "";
out+= second==-1?"(not found/couldn't parse)":"(not unique)";
alert(out +"\n"+ qeTextSel+"\n"+qeHtmlSel+"\n"+text + "\n(text, html, wikitext)\n" + first + " " + second+"\n first found, second found.");
}
}