Jump to content

User:Animum/usergroups.js

From Wikipedia, the free encyclopedia
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.
var usergroups = {
    "findRFA" : function(user) {
        var searchStr = new RegExp("adminship/" + user + "( [23456789]*)?\"\>", "i");
        var req = sajax_init_object();
        req.open("GET", mw.config.get('wgScript') + "?title=Category:Successful_requests_for_adminship&from=" + encodeURIComponent(user), false);
        req.send(null);
        with(req.responseText.split("<div id=\"mw-pages\">")[1].split("</div>")[0]) {
            if(search(searchStr) == -1) {
                var req2 = sajax_init_object();
                req2.open("GET", mw.config.get('wgScript') + "?title=Category:Redirects_to_requests_for_adminship&from=" + encodeURIComponent(user), false);
                req2.send(null);
                var content = req2.responseText.split("<div id=\"mw-pages\">")[1].split("</div>")[0];
                if(searchStr.test(content)) {
                    var redirect = content.substring(content.search(searchStr)-23).split("\">")[0];
                    var req3 = sajax_init_object();
                    req3.open("GET", mw.config.get('wgScript') + "?title=" + encodeURIComponent(redirect) + "&action=edit", false);
                    req3.send(null);
                    var content2 = req3.responseText.split("bodyContent")[1].split("visualClear")[0];
                    location.href = mw.config.get('wgArticlePath').replace(/\$1/g, content2.split(/\#REDIRECT ?\[\[/i)[1].split("]]")[0]); 
                    delete req3;
                } else {
                    jsMsg("RfA was missing from <a href=\"/wiki/Category:Successful_requests_for_adminship\">Category:Successful requests for adminship</a> and <a href=\"/wiki/Category:Redirects_to_requests_for_adminship\">Category:Redirects to requests for adminship</a>.");
                }
                delete req2;
            } else {
                location.href = mw.config.get('wgArticlePath').replace(/\$1/g, substring(search(searchStr)-23).split("\">")[0]);
            }
        }
        delete req;
    },
    "findRFB" : function(user) {
        var req = sajax_init_object();
        var searchStr = new RegExp("bureaucratship/" + user + "( [23456789]*)?\"\>", "i");
        req.open("GET", mw.config.get('wgScript') + "?title=Category:Successful_requests_for_bureaucratship&from=" + encodeURIComponent(user), false);
        req.send(null);
        with(req.responseText.split("<div id=\"mw-pages\">")[1].split("</div>")[0]) {
            if(search(searchStr) != -1) {
                location.href = mw.config.get('wgArticlePath').replace(/\$1/g, substring(search(searchStr)-23).split("\">")[0]);
            } else {
                jsMsg("RFB was not found in <a href=\"/wiki/Category:Successful_requests_for_bureaucratship\">Category:Successful requests for bureaucratship</a>.");
            }
        }
    },
    "link" : function (link) {
        switch(link) {
            case "accountcreator": return "User_access_levels#Accountcreator";
                break;
            case "rollbacker"    : return "Rollback_feature";
                break;
            case "ipblock-exempt": return "User_access_levels#Ipblock-exempt";
                break;
            case "confirmed"     : return "User_access_levels#Confirmed";
                break;
            case "sysop"         : return "Administrators";
                break;
            case "oversight"     : return "Oversight";
                break;
            case "checkuser"     : return "CheckUser";
                break;
            case "bot"           : return "Bots";
                break;
            case "bureaucrat"    : return "Bureaucrats";
                break;
            case "abusefilter"   : return "Edit_filter";
                break;
            default              : return "User_access_levels";
        }
    },
    "download" : function() {
        var target = mw.config.get('wgTitle');
        if (mw.config.get('wgNamespaceNumber') == -1 && mw.config.get('wgCanonicalSpecialPageName')=="Contributions") target = document.getElementsByName("target")[0].value;
 
        var req = sajax_init_object();
        req.open("GET", mw.config.get('wgScriptPath') + "/api.php?action=query&list=allusers&auprop=groups&aulimit=1&format=json&aufrom=" + encodeURIComponent(target), false);
        req.send(null);
        var data = eval("(" + req.responseText + ")").query.allusers[0];
        if(data) { 
            if(data.groups) {
                document.getElementById("contentSub").innerHTML += "<br /><b>" + target + " is " + (data.groups[0].substring(0, 1).search(/[aeiou]/) != -1 ? "an " : "a ") + "</b>"; //Is the first letter of the first usergroup a vowel?  If so, use "an"; if not, use "a."
                for(i=0; i<20; i++) { //Why 20?  20 is a high number.
                    if(data.groups[i]) {
                        document.getElementById("contentSub").innerHTML += "<a href=\"/wiki/Wikipedia:" + this.link(data.groups[i]) + "\"><b>" + data.groups[i] + (data.groups[i] == "confirmed" ? " user" : "") + "</b></a><b>" 
                            + (data.groups[i] == "sysop" ? " (</b><a href=\"javascript:usergroups.findRFA('" + target.replace(/\'/g, "\\'") + "')\"><b>RfA</b></a><b>)" : (data.groups[i] == "bureaucrat" ? " (</b><a href=\"javascript:usergroups.findRFB('" + target.replace(/\'/g, "\\'") + "')\"><b>RfB</b></a><b>)" : "")) 
                            + (!data.groups[i+1] ? "." : (data.groups.length == 2 ? " and " : ", " + (!data.groups[i+2] ? "and " : ""))) + "</b>";
                    } else {
                        break;
                    }
                }
            } else {
                document.getElementById("contentSub").innerHTML += "<br /><b>" + target + " is not in any special user groups.";
            }
        }
    }
};

$(function() {
    if(((mw.config.get('wgNamespaceNumber') == 2 || mw.config.get('wgNamespaceNumber') == 3) && mw.config.get('wgPageName').indexOf("/") == -1) || (mw.config.get('wgNamespaceNumber') == -1 && mw.config.get('wgCanonicalSpecialPageName') == "Contributions")) {
        importStylesheet("User:Animum/usergroups.css");
        mw.util.addPortletLink("p-cactions", "javascript:usergroups.download()", "$", "ca-usergroups");
    }
});