:User:Jb-adder/monobook.js

// User:Lunchboxhero/monobook.js

function externISBN() {

for (var i = 0; i < document.links.length; i++)

{

if( document.links[i].href.match(/isbn=(.*)/) ) {

document.links[i].href='http://www.amazon.com/exec/obidos/ASIN/'+RegExp.$1;

}

}

}

$(externISBN);

// 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');

// User:Dr pda/articlehistory.js

//

//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 {{ArticleHistory}} template. See the talk page for more details.

//

//To use this function add {{subst:js|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

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,'');

}

$(function () {

if(!document.forms.editform){

mw.util.addPortletLink('p-tb', 'javascript:getArticleHistory()', 'Article history', 't-article-history', 'Search Talk page history for events relevant to ArticleHistory template', , );

}

});

//