User:Olipro/userundo.js

From Uncyclopedia, the content-free encyclopedia
Jump to navigation Jump to 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, or press Ctrl+F5.
  • Firefox: hold down the Shift key while clicking Reload; alternatively press Ctrl+F5 or Ctrl-Shift-R.
  • Opera, Konqueror and Safari users can just click the Reload button.
  • Chrome: press Ctrl+F5 or Shift+F5
function addRollback() {
    if(wgPageName == 'Special:Recentchanges' && fcktest != true) {
        items = document.getElementsByTagName('ul')[0];
        items = items.getElementsByTagName('li');
        for(i = 0; i < items.length; i++) {
            checker = items[i].getElementsByTagName('a')[0].innerHTML;
            if(checker != 'diff')
                continue;
            var uname = items[i].getElementsByTagName('a')[3].innerHTML;
            var title = items[i].getElementsByTagName('a')[2].getAttribute('href');
            title = title.substring(6,title.length);
            items[i].appendChild(document.createTextNode(' ['));
            newlink = document.createElement('a');
            thetext = document.createTextNode('rollback');
            newlink.appendChild(thetext);
            newlink.setAttribute('href', '/index.php?title='+title+'&action=history&rolldown=true&uname='+escape(uname));
            items[i].appendChild(newlink);
            items[i].appendChild(document.createTextNode(']'));
            //items[i].innerHTML += ' [<a href="/index.php?title='+title+'&amp;action=history&amp;rolldown=true&amp;uname='+escape(uname)+'">rollback</a>]';
        }
    }
}
function addHistRollback() {
    if(document.title.indexOf("- History") != -1 && fcktest != true) {
        item = document.getElementById('pagehistory').getElementsByTagName('li')[0];
        newlink = document.createElement('a');
        thetext = document.createTextNode('rollback');
        newlink.appendChild(thetext);
        newlink.setAttribute('onClick', 'rollbackLast()');
        newlink.setAttribute('href', 'javascript:rollbackLast()');
        item.appendChild(document.createTextNode(' ['));
        item.appendChild(newlink);
        item.appendChild(document.createTextNode(']'));
        //item.innerHTML += ' [<a href="javascript:rollbackLast()" onClick="rollbackLast()">rollback</a>]';
    }
}
function addContRollback() {
    if(wgPageName != "Special:Contributions")
        return;

    lilinks = document.getElementsByTagName('ul')[0].getElementsByTagName('li');
    for(i = 0; i < lilinks.length; i++) {
        str = lilinks[i].getElementsByTagName('strong');
        ahr = lilinks[i].getElementsByTagName('a')[0];
        if(str[0] == null || !ahr)
            continue;
        if(str[0].innerHTML.indexOf('(top)') == -1)
            continue;

        spec = location.href.indexOf('Special:Contributions/');
        copyout = location.href.substring(spec, location.href.length);
        copyout = copyout.substring(22,copyout.length);
        thelink = ahr.getAttribute('href');
        lilinks[i].appendChild(document.createTextNode(' ['));
        newlink = document.createElement('a');
        thetext = document.createTextNode('rollback');
        newlink.appendChild(thetext);
        newlink.setAttribute('href', thelink + '&rolldown=true&uname='+escape(copyout));
        lilinks[i].appendChild(newlink);
        lilinks[i].appendChild(document.createTextNode(']'));
    }
}
function rollbackLast() {
    uname = document.getElementById('pagehistory');
    unamea = uname.getElementsByTagName('li');
    unamer = unamea[0].getElementsByTagName('a')[2].innerHTML;
    for(i = 1; i < unamea.length; i++) {
        if(unamea[i].getElementsByTagName('a')[3].innerHTML != unamer) {
            gohere = unamea[i].getElementsByTagName('a')[2].getAttribute('href');
            lastpe = unamea[i].getElementsByTagName('a')[3].innerHTML;
            break;
        }
    }
    if(gohere)
        location.href = gohere + '&saverevision=true&unamea=' + unamer + '&unameb=' + lastpe;
}
function getLastRevision() {
    if(document.title.indexOf("- History") == -1 || location.href.indexOf("rolldown=true") == -1)
        return;
    
    uname = document.getElementById('pagehistory');
    unamea = uname.getElementsByTagName('li');
    unamer = unamea[0].getElementsByTagName('a')[2].innerHTML;
    if(location.href.indexOf('uname='+escape(unamer)) == -1) {
        alert('Edit conflict, revert cancelled.');
        return;
    }
    for(i = 1; i < unamea.length; i++) {
        if(unamea[i].getElementsByTagName('a')[3].innerHTML != unamer) {
            gohere = unamea[i].getElementsByTagName('a')[2].getAttribute('href');
            lastpe = unamea[i].getElementsByTagName('a')[3].innerHTML;
            break;
        }
    }
    if(gohere)
        location.href = gohere + '&saverevision=true&unamea=' + unamer + '&unameb=' + lastpe;
}
function goToEditPage() {
    if(location.href.indexOf("saverevision=true") == -1)
        return;

    edittab = document.getElementById('ca-edit').getElementsByTagName('a')[0];
    editref = edittab.getAttribute('href');
    location.href = editref + '&rollbacksave=true&unamea=' + queryString('unamea') + '&unameb=' + queryString('unameb');
}
function saveEditPage() {
    if(location.href.indexOf("rollbacksave=true") == -1)
        return;
    
    unamea = unescape(queryString('unamea'));
    unameb = unescape(queryString('unameb'));
    esumm = document.getElementById('wpSummary');
    esumm.value = 'Reverted edit(s) of [[Special:Contributions/' + unamea + '|' + unamea + ']] ([[User_talk:' + unamea + '|talk]]) to last version by ' + unameb;
    document.getElementById('wpMinoredit').checked = true;
    theform = document.getElementById('editform');
    theform.submit();
}
var fcktest = false;
function loadInitCrap() {
    if(fcktest == true)
        return;
    addRollback();
    getLastRevision();
    goToEditPage();
    saveEditPage();
    addHistRollback();
    addContRollback();
}
mybrowser = navigator.userAgent;
if(mybrowser.search(/MSIE/i) != -1 || mybrowser.search(/Safari/i) != -1)
{
    addOnLoadHook(loadInitCrap);
} else if(mybrowser.search(/Firefox/i) == -1) {
    document.addEventListener('load', loadInitCrap, false);
} else {
    document.addEventListener('DOMContentLoaded', loadInitCrap, false);
}
function queryString(p) {
        var re = RegExp('[&?]' + p + '=([^&]*)');
        var matches;

        if (matches = re.exec(document.location)) {
            try { 
                return decodeURI(matches[1]);
            } catch (e) {
        }
    }
  
    return null;
};