User:Anturiaethwr/monobook.js

/*

 

Note: After saving, you have to bypass your browser's cache to see the changes.

To do this in Firefox/Mozilla/Safari: hold down Shift while clicking Reload,

or press Ctrl-Shift-R).

If you use Internet Explorer: press Ctrl-F5, Opera/Konqueror: press F5.

AzaToth's reversion tools

  */

// importScript('User:AzaToth/twinkle.js');

/*

WikEd, replaces Firefox's text edit window

  */

// install User:Cacycle/wikEd in-browser text editor

document.write('');

  • /

importScript('User:Lupin/recent2.js');

/*

Watchlist sorter

 

Sorts your watchlist by namespace, and also adds spaces for readability.

  • /

$(function (){

if (location.href.indexOf('Special:Watchlist') == -1) return; //Are we on a watchlist?

//days = document.getElementById('bodyContent').getElementsByTagName('ul');

days = document.evaluate( //Hell knows how it works - found in "Dive into Greasemonkey"

"//ul[@class='special']",

document,

null,

XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,

null);

for (d = 0; d < days.snapshotLength; d++) { //For each day

day = days.snapshotItem(d);

newday = document.createElement('ul'); //This will replace the old listing

while ((diffs = day.getElementsByTagName('li')).length > 0) { //Are there any diffs left?

//Try to extract the namespace

As = diffs[0].getElementsByTagName('a');

if (As[0].innerHTML == 'diff')

pagename = As[2].innerHTML;

else

pagename = As[1].innerHTML;

if (pagename.indexOf(':') == -1)

namespace = 'Main';

else

namespace = pagename.split(':')[0]; //This will fail for articles which contain ":" in name

hdrs = newday.getElementsByTagName('h5'); //Get the list of namespace headers

hdr = null;

for (j=0; j

if (hdrs[j].innerHTML==namespace) {

hdr = hdrs[j]; break;

}

if (hdr==null) { //Not found? Make a new one!

hdr = document.createElement('h5');

hdr.innerHTML = namespace;

newday.appendChild(hdr);

namespacesub = document.createElement('ul');

newday.appendChild(namespacesub);

}

hdr.nextSibling.appendChild(diffs[0]); //Move the diff

}

newday.appendChild(document.createElement('hr')); //For readablility

day.parentNode.replaceChild(newday,day);

}

});

/*** BEGIN WIKIBREAK ENFORCER ***/

$(function() {

/*** Start editing here ***/

// When you want to end your break?

// no leading zeroes. (example: 7 - correct, 07 - incorrect)

var date = { year: 2010, month: 4, day: 5 };

var time = { hours: 20, minutes: 22, seconds: 0 };

/*** Stop editing here ***/

var currentDate = new Date();

var enforcedBreakEnd = new Date(

date.year,date.month,date.day,time.hours,time.minutes,time.seconds);

if (currentDate <= enforcedBreakEnd) {

alert("Enforced wikibreak until "+enforcedBreakEnd.toLocaleString()

+ "\n(now is "+currentDate.toLocaleString()+")\n\nBye!");

location = "http://"+location.host+"/w/index.php?title="

+ "Special:Userlogout&returnto=Main_Page";

}

});

/*** END WIKIBREAK ENFORCER ***/mw.loader.load('//en.wikipedia.org/w/index.php?title=User%3ALupin%2Fautoedit.js&action=raw&ctype=text/javascript'); // User:Lupin/autoedit.js

//Greasemonkey can't seem to be able to access the embedded variables such as wgUserName

//unless you do this. This make it easy to tell if you're logged in, much simpler than

//checking the edit token.

var cdata = eval(document.getElementsByTagName("script")[0].innerHTML);

//This punts you to the login page if you try to make an anon edit.

if(wgAction=="edit" && wgUserName==null) location.href = wgServer + wgScript +

"?title=Special:UserLogin&returnto=" + wgPageName;

/* Templates Used finder, version [0.0.3b]

Originally from: http://en.wikipedia.org/wiki/User:Splarka/temused.js

Notes:

  • Uses the API using head/appendchild(script) and callback to avoid ajax.
  • Redesigned a-la http://en.wikipedia.org/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

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;

}

//

$(function(){

if (location.href.indexOf('Special:Watchlist') == -1) return; //Are we on a watchlist?

//days = document.getElementById('bodyContent').getElementsByTagName('ul');

days = document.evaluate( //Hell knows how it works - found in "Dive into Greasemonkey"

"//ul[@class='special']",

document,

null,

XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,

null);

for (d = 0; d < days.snapshotLength; d++) { //For each day

day = days.snapshotItem(d);

newday = document.createElement('ul'); //This will replace the old listing

while ((diffs = day.getElementsByTagName('li')).length > 0) { //Are there any diffs left?

//Try to extract the namespace

As = diffs[0].getElementsByTagName('a');

if (As[0].innerHTML == 'diff')

pagename = As[2].innerHTML;

else

pagename = As[1].innerHTML;

if (pagename.indexOf(':') == -1)

namespace = 'Main';

else

namespace = pagename.split(':')[0]; //This will fail for articles which contain ":" in name

hdrs = newday.getElementsByTagName('h5'); //Get the list of namespace headers

hdr = null;

for (j=0; j

if (hdrs[j].innerHTML==namespace) {

hdr = hdrs[j]; break;

}

if (hdr==null) { //Not found? Make a new one!

hdr = document.createElement('h5');

hdr.innerHTML = namespace;

newday.appendChild(hdr);

namespacesub = document.createElement('ul');

namespacesub.className = "special";

newday.appendChild(namespacesub);

}

hdr.nextSibling.appendChild(diffs[0]); //Move the diff

}

newday.appendChild(document.createElement('hr')); //For readablility

day.parentNode.replaceChild(newday,day);

}

});

//watchlistSorter

importScript("User:Gerbrant/hidepane.js");

importScript("Wikipedia:Dazzle!/code.js");

$(function() {

var editTab = document.getElementById("ca-edit");

if (!editTab) return;

var editURL = editTab.getElementsByTagName("a")[0].href;

mw.util.addPortletLink("p-cactions", editURL + "&externaledit=true", "EE", "ca-exted", "External editor", "");

});

$(function() {

var editTab = document.getElementById("ca-edit");

if (!editTab) return;

var editURL = editTab.getElementsByTagName("a")[0].href;

mw.util.addPortletLink("p-cactions", editURL + "&externaledit=true", "EE", "ca-exted", "External editor", "");

});

importScript('User:Gary King/expand hidden templates.js'); // Wikipedia:Expand Hidden Templates

importScript('Wikipedia:WikiProject User scripts/Scripts/Six tabs');

defaultdiffs = 750; // or whatever number, see script for details

importScript('Wikipedia:WikiProject User scripts/Scripts/Changes since I last edited');

importScript('User:Anomie/util.js');

importScript('User:Anomie/linkclassifier.js'); // Linkback: User:Anomie/linkclassifier.js

importScript('User:Ale_jrb/Scripts/userhist.js'); //User:Ale_jrb/Scripts

importScript('User:PleaseStand/userinfo.js');// User:PleaseStand/userinfo.js