User:HorsePunchKid/monobook.js

From Wikipedia, the free encyclopedia

Note: After saving, you have to bypass your browser's cache to see the changes. Mozilla/Safari: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Internet Explorer: press Ctrl-F5, Opera/Konqueror: press F5.

/////////////////////////////////////////////////////////////////////////////////
// [[User:Lupin/popups.js]] - please include this line 

document.write('<script type="text/javascript" src="' 
             + 'http://en.wikipedia.org/w/index.php?title=User:Lupin/popups.js' 
             + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
popupDelay=2.0;
simplePopups=true;
popupAdminLinks=true;

window.onload = Main;
function Main() {
    //changelinks();
    //addtoolboxlinks()
    //addpurge();
    morelinks();
    //LivePreviewInstall();
    addPipesToHistory();

    document.getElementById("ca-talk").removeAttribute("acccesskey");
    document.getElementById("ca-unwatch").removeAttribute("acccesskey");
}

// Add a pipe to make using Template:Unsigned2 easier.
function addPipesToHistory()
{
    if(document.title.indexOf("- History -") > 0)
    {
        var items=getElementsByClass(document, "history-user", "span");
        for(i=0;i<items.length;i++)
        {
            var hidden=document.createElement("span");
            hidden.appendChild(document.createTextNode("|"));
            hidden.setAttribute("style", "color: white;");
            items[i].childNodes[0].insertBefore(hidden,
                    items[i].childNodes[0].childNodes[0]);
        }
    }
}

function replace() {
    var s = prompt("Search regexp?");
    if(s) {
        var r = prompt("Replace regexp?");
        if(!r && r != '') return;
        var txt = document.editform.wpTextbox1;
        txt.value = txt.value.replace(new RegExp(s, "g"), r);
    }
}
//<nowiki>
function morelinks() {
    var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
    if(document.title.indexOf("Editing ") == 0)
    {
        addlilink(tabs, 'javascript:replace()', 'replace', '');
        addlilink(tabs, "javascript:insertTags(' <span class=\"user-sig user-horsepunchkid\">~~~ <span class=\"user-sig-date\">"+getISO8601Date()+"&nbsp;"+getISO8601Time()+"[[ISO 8601|Z]]</span></span>','','')", 'sign', 's');
        document.getElementById("wpSave").removeAttribute("acccesskey");
    }
}
//</nowiki>
function getISO8601Date() {
    var d=new Date();
    return(""+d.getUTCFullYear()+"-"+(d.getUTCMonth()<9?"0":"")+(d.getUTCMonth()+1)+"-"+(d.getUTCDate()<10?"0":"")+d.getUTCDate());
}

function getISO8601Time() {
    var d=new Date();
    return(""+(d.getUTCHours()<10?"0":"")+d.getUTCHours()+":"+(d.getUTCMinutes()<10?"0":"")+d.getUTCMinutes()+":"+(d.getUTCSeconds()<10?"0":"")+d.getUTCSeconds());
}

/////////////////////////////////////////////////////////////////////////////////
// Wikipedia:WikiProject User scripts/Scripts/Changes since I last edited
function addSinceTab()
{
    var tabs=document.getElementById('p-cactions').getElementsByTagName('ul')[0];
    if (window.location.href.indexOf("&action=history&gotosince=true")!=-1)
       do_since_I_last_edited();
    else if (!/wiki\/Special:|w\/index.php?title=Special:/.test(window.location.href))
    {
       var pageTitle=document.title.slice(0, String(document.title).indexOf(" - "));
       var l=addlilink(tabs, "/w/index.php?title="+pageTitle+"&action=history&gotosince=true", 'since', '');
       l.lastChild.title="Changes since I last edited";
    }
}
function do_since_I_last_edited()
{
        var csub=document.getElementById("contentSub");
        var msg=document.createElement("p");
        msg.appendChild(document.createTextNode("Parsing history, please wait..."));
        msg.className="error";
        csub.insertBefore(msg, csub.firstChild);

        var username=document.getElementById("pt-userpage").textContent;
        var users=getElementsByClass(document, "history-user", "span");

        for(i=0;i<users.length;i++)
        {
            if(users[i].textContent==username)
            {
                document.location=users[i].parentNode.childNodes[1].href;
                return;
            }
        }

        msg.replaceChild(document.createTextNode("You have not edited this page recently."), msg.firstChild);
}

if (window.addEventListener) window.addEventListener("load", addSinceTab, false);
else if (window.attachEvent) window.attachEvent("onload", addSinceTab);



/////////////////////////////////////////////////////////////////////////////////
// Helper function; see Wikipedia:WikiProject User scripts/Scripts/Add LI link
function addlilink(tabs, url, name, id, title, key)
{
    var na=document.createElement('a');
    na.href=url;
    na.appendChild(document.createTextNode(name));
    var li=document.createElement('li');
    if(id) li.id=id;
    li.appendChild(na);
    tabs.appendChild(li);
    if(id)
    {
        if(key && title) ta[id]=[key, title];
        else if(key)     ta[id]=[key, ''];
        else if(title)   ta[id]=['', title];
    }
    // re-render the title and accesskeys from existing code in wikibits.js
    akeytt();
    return(li);
}



/////////////////////////////////////////////////////////////////////////////////
// http://www.dustindiaz.com/getelementsbyclass
function getElementsByClass(node,searchClass,tag) {
 var classElements = new Array();
 var els = node.getElementsByTagName(tag);
 var elsLen = els.length;
 var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
 for (i = 0, j = 0; i < elsLen; i++) {
    if ( pattern.test(els[i].className) ) {
      classElements[j] = els[i];
      j++;
    }
  }
  return classElements;
}