User:Bobblehead/monobook.js

// add workaround

function addLink(where, url, name, id, title, key, after) { // addLink accepts either an id or a DOM node, addPortletLink only takes a node if (after && !after.cloneNode) after = document.getElementById(after);

return addPortletLink(where, url, name, id, title, key, after); }

// //This function adds a link to the toolbox which, when clicked, searches the talk page history //to find events which might be relevant to the template. See the talk page for more details. // //To use this function add User:Dr pda/articlehistory.js to your monobook.js // function loadXMLDoc(url,handler,id) {   url=url+id; // branch for native XMLHttpRequest object if (window.XMLHttpRequest) { var req = new XMLHttpRequest; }   // branch for IE/Windows ActiveX version else if (window.ActiveXObject) { var req = new ActiveXObject("Microsoft.XMLHTTP"); }  if (req) { req.onreadystatechange = function {handler(req,id)}; req.open("GET", url, true); req.send(""); } }

function getArticleOldid(req,id) { // only if req shows "loaded" if (req.readyState == 4) { // only if "OK" if (req.status == 200) { // ...processing statements go here... var response = req.responseXML.documentElement; var rv = response.getElementsByTagName('rv'); var spannode = document.getElementById('oldid-'+id); spannode.innerHTML = rv[0].getAttribute('revid'); var linode = document.getElementById(id); linode.onclick=''; } else { alert("There was a problem retrieving the XML data:\n" +               req.statusText); }   } }

function getArticleOldidManual(req,id) { // only if req shows "loaded" if (req.readyState == 4) { // only if "OK" if (req.status == 200) { // ...processing statements go here... var response = req.responseXML.documentElement; var rv = response.getElementsByTagName('rv'); var spannode = document.getElementById('oldid-'+id);

var timestamp = rv[0].getAttribute('timestamp'); timestamp = timestamp.replace(/Z/g,''); var prettytimestamp = timestamp.replace(/T/,', '); timestamp = timestamp.replace(/[-T:]/g,''); var idtime = id.substr(0,4)+'-'+id.substr(4,2)+'-'+id.substr(6,2)+', '+id.substr(8,2)+':'+id.substr(10,2)+':'+id.substr(12,2); var revid = rv[0].getAttribute('revid'); spannode.innerHTML = 'The last version before '+idtime+' was at '+prettytimestamp+', with an oldid of '+revid+'. Click on the links to jump to the article history or talk page history at this point.'; } else { alert("There was a problem retrieving the XML data:\n" +               req.statusText); }   } }

function getHistoryMilestones(req) { // only if req shows "loaded" if (req.readyState == 4) { // only if "OK" if (req.status == 200) { // ...processing statements go here... var response = req.responseXML.documentElement; var revList = response.getElementsByTagName('rv'); var prettylastcomment = ''; var lasttimestamp = ''; var prettylasttimestamp = '';

if(revList.length > 0){ for(var i=0; i<revList.length; i++){ var comment = revList[i].getAttribute('comment'); //strip out headers i.e. /*...*/ prettycomment=comment.replace(/\/\*.*\*\//,''); comment=prettycomment.toLowerCase; var timestamp = revList[i].getAttribute('timestamp'); timestamp = timestamp.replace(/Z/g,''); var prettytimestamp = timestamp.replace(/T/,', '); timestamp = timestamp.replace(/[-T:]/g,'');

var output = document.getElementById("article-milestones"); if(comment.match('{{') || comment.match('featured') || comment.match('fac.?failed') || comment.match('review')|| comment.match(/\bfa\b/) || comment.match(/\bfac\b/) || comment.match(/\bga\b/) || comment.match(/\bgac\b/) || comment.match(/\bgafailed\b/) || comment.match(/\bga.?nominee\b/)|| comment.match('good article') || comment.match(/\bfar\b/) || comment.match(/\bfarc\b/) || comment.match(/\bfl\b/) || comment.match(/\bflrc\b/) || comment.match(/main.?page/) || comment.match('dyk') ){ var milestone = document.createElement("li"); spanid='oldid-'+timestamp; milestone.innerHTML=''+prettytimestamp+' '+prettycomment+' (oldid) '; milestone.id=timestamp; milestone.onclick=getArticleOldidWrapper; output.appendChild(milestone); }	    prettylastcomment = prettycomment; lasttimestamp = timestamp; prettylasttimestamp = prettytimestamp; }	  var getmore = document.getElementById("getmore"); getmore.innerHTML='(last entry read: '+prettylasttimestamp+' '+prettylastcomment+')'; //Get more milestones, if any (if not, the program won't get here again) loadXMLDoc(talkQueryURL,getHistoryMilestones,'&rvend='+(parseInt(lasttimestamp)-1)) }       }	 else { alert("There was a problem retrieving the XML data:\n" +               req.statusText); }   } }

function getArticleOldidWrapper(event) { loadXMLDoc(articleQueryURL,getArticleOldid,this.id) }

function manualDate(event) { var mydate=prompt("Enter the date for which you want the oldid","") if (mydate!=null && mydate!=""){ var utc = Date.parse(mydate+' UTC'); var d = new Date; d.setTime(utc); if((d.getUTCHours+d.getUTCMinutes) == 0){ d.setUTCHours(23); d.setUTCMinutes(59); d.setUTCSeconds(59); }   var timestamp =''; timestamp += d.getUTCFullYear; timestamp += (d.getUTCMonth<10) ? '0'+(d.getUTCMonth+1) : (d.getUTCMonth+1); timestamp += (d.getUTCDate<10) ? '0'+ d.getUTCDate : d.getUTCDate; timestamp += (d.getUTCHours<10) ? '0'+ d.getUTCHours : d.getUTCHours; timestamp += (d.getUTCMinutes<10) ? '0'+ d.getUTCMinutes : d.getUTCMinutes; timestamp += (d.getUTCSeconds<10) ? '0'+ d.getUTCSeconds : d.getUTCSeconds;

var dateoldid = document.createElement("p"); dateoldid.id = 'oldid-'+timestamp; output.parentNode.insertBefore(dateoldid,enterdate.nextSibling); loadXMLDoc(articleQueryURL,getArticleOldidManual,timestamp) } }

function getArticleHistory{

output = document.createElement("ul"); output.id = "article-milestones";

var dummy = document.getElementById("siteSub"); dummy.parentNode.insertBefore(output, dummy.nextSibling);

var getmore = document.createElement("p"); getmore.id = 'getmore'; output.parentNode.insertBefore(getmore,output.nextSibling);

enterdate = document.createElement("p"); enterdate.id = 'enterdate'; enterdate.innerHTML=' Click here to enter a date manually '; enterdate.onclick = manualDate; output.parentNode.insertBefore(enterdate,getmore.nextSibling); var pageName = wgPageName; articleName = (wgNamespaceNumber == 1) ? pageName.substr(5) : pageName; talkName = 'Talk:'+articleName; //correctly handle article name when on a Talk page archive var archiveIndex = articleName.toLowerCase.indexOf("/archive"); articleName = (archiveIndex == -1) ? articleName : articleName.substring(0,archiveIndex);

//Use query.php instead of api.php since it has a limit of 200 instead of 50 //var apiHistoryQuery = '/w/api.php?action=query&prop=revisions&titles='+talkName+'&rvlimit=50&rvprop=timestamp|comment&format=xml';

talkQueryURL = '/w/query.php?what=revisions&titles='+talkName+'&rvlimit=200&rvcomments&format=xml'; articleQueryURL = '/w/query.php?what=revisions&titles='+articleName+'&rvlimit=200&rvcomments&format=xml&rvend='; loadXMLDoc(talkQueryURL,getHistoryMilestones,''); }

addOnloadHook(function {  if(!document.forms.editform){    addPortletLink('p-tb', 'javascript:getArticleHistory', 'Article history', 't-article-history', 'Search Talk page history for events relevant to ArticleHistory template', , );  } });

// // Script from User:AndyZ/peerreviewer.js importScript('User:AndyZ/peerreviewer.js'); //User:AndyZ/peerreviewer.js

// User:Outriggr/metadatatest.js importScript('User:Outriggr/metadatatest.js');

//Interiot's javascript edit counter if (document.title.indexOf('User:Interiot/Tool2/code.js') != -1) { mw.loader.load('https://en.wikipedia.org/w/index.php?title=User:Interiot/Tool2/code.js&action=raw&ctype=text/javascript'); }

// User:Lupin/popups.js

mw.loader.load(            'https://en.wikipedia.org/w/index.php?title=User:Lupin/popups.js'             + '&action=raw&ctype=text/javascript&dontcountme=s');

popupFixDabs=true popupFixDabsSummary="Hi ho, Hi ho. It's home from WikiProject Disambiguation we go. %s → %s using Popups.";

importScript("User:OsamaK/nfurbacklink.js");

//Barticuss88 stuff

importScript('User:Barticus88/WhatLinksHere.js');

//add prose size link

importScript('User:Dr_pda/prosesize.js'); //User:Dr_pda/prosesize.js

// date auto-formatting removal script

importScript('User:Lightmouse/monobook.js/script.js');

// ISO date autoformatter

importScript('User:Remember the dot/ISO date format unifier.js');