Jump to content

User:Jb-adder/monobook.js

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
// [[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

//<pre>
//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 <a href="/w/index.php?title='+articleName+'&action=history&offset='+id+'">article history</a> or <a href="/w/index.php?title='+talkName+'&action=history&offset='+id+'">talk page history</a> 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='<b>'+prettytimestamp+'</b> '+prettycomment+' <span id='+spanid+'>(oldid)</span>';
	       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: <b>'+prettylasttimestamp+'</b> '+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='<span style="background-color:lightblue;font-weight:bold;">Click here to enter a date manually</span>';
 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', '', '');
  }
});

//</pre>