Jump to content

User:Animum/usergroups.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.
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");
    }
});