User:Superm401/Compare link.js

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: hold down the Ctrl key and click the Refresh or Reload button. Firefox: hold down the Shift key while clicking Reload (or press Ctrl-Shift-R). Google Chrome and Safari users can just click the Reload button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
//<pre>
// Compare link
/*
 
To install Compare link, put:
 
// [[User:Superm401/Compare link.js]]
importScript("User:Superm401/Compare link.js");
 
in Special:MyPage/skin.js.
 
Copyright 2006-2011 Matthew Flaschen (User:Superm401)
 
In addition to the GFDL:
 
This function (compare link) is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
 
This function is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
 
A copy of the GPL is available at http://www.prism.gatech.edu/~mflaschen3/gpl.txt .
 
By modifying "User:Superm401/Compare link":
You agree to dual-license your contributions under both the GFDL (http://en.wikipedia.org/wiki/WP:GFDL)
and version 2 of the GPL (http://www.prism.gatech.edu/~mflaschen3/gpl.txt) or any later version
of the GPL published by the FSF.
 
*/
 
function fixCompare()
{
    var histForm=document.getElementById("mw-history-compare");
    var diffList=document.getElementById("pagehistory");
    var histButtons=getElementsByClassName(histForm, "input", "historysubmit"); // wikibits
    var firstButton=histButtons[0];
    var finalButton=histButtons[1];
    if(!finalButton)
      return null;
 
    finalButton.parentNode.removeChild(finalButton);
    firstButton.parentNode.removeChild(firstButton);
    var compareLink=document.createElement("a");
    var genLink = wgServer + wgScript + "?title=" + histForm.title.value + "&diff=" + histForm.diff[0].value + "&oldid=" + histForm.oldid[1].value;
    compareLink.setAttribute("href", genLink);
    compareLink.setAttribute("class", "compare-link");
    compareLink.appendChild(document.createTextNode("Compare selected versions"));
    histForm.insertBefore(compareLink, diffList);
    var endLink=compareLink.cloneNode(true);
    histForm.appendChild(endLink);
    addHandler(diffList, "change", updateCompare); // wikibits
 
    function updateCompare()
    {
        var selectedRows = getElementsByClassName(histForm, "li", "selected");
 
        var diffRow = selectedRows[0]; // reverse chronological, so diff row is first.
        var diff = diffRow.getElementsByTagName("input")[1].value; // diff second radio
 
        var oldidRow = selectedRows[1]; // old id row later
        var oldid = oldidRow.getElementsByTagName("input")[0].value; // oldid first radio
 
        var genLink = wgServer + wgScript + "?title=" + histForm.title.value + "&diff=" + diff + "&oldid=" + oldid;
        compareLink.setAttribute("href", genLink);
        endLink.setAttribute("href", genLink);
    }
}
 
if(wgAction == "history")
{
    importStylesheetURI('http://en.wikipedia.org/w/index.php?title=User:Superm401/Compare_link.css&action=raw&ctype=text/css');  
    addOnloadHook(fixCompare);
}
//</pre>
Personal tools
Namespaces
Variants
Actions
Navigation
Interaction
Toolbox
Print/export