User:Bosco/MediaWiki:Gadget-MarkRights.js: Difference between revisions

From Test Wiki
Jump to navigation Jump to search
Content deleted Content added
via W+:
via W+:
Line 7: Line 7:
*/
*/


$(function() {
$(function () {
!function() {
var markUG = function () {
var e = $("a.mw-userlink:not(.mw-anonuserlink)"), s = {};
var $users = $('a.mw-userlink:not(.mw-anonuserlink)');
e.each(function(e, r) {
var users = {};
$users.each(function (index, link) {
s[r.textContent] = !0;
users[link.textContent] = true;
});
});

var r = [], n = [], u = 0, p = 0;
for (var l in s) r.push(l), 50 == ++u && (n.push(r), r = [], p++, u = 0);
var queue1 = [];
r.length > 0 && (n.push(r), p++);
var queue2 = [];
var i=0, n=0;
for (var o = [], t = [], a = [], i = [], m = [], f = [], g = [], h = [], d = [], c = [], k = [], w = [], y = [], x = function(e) {
var s;
for (var user in users) {
s = e.query && e.query.users ? e.query.users : [];
queue1.push(user);
for (var r = 0; r < s.length; r++) {
i++;
var n = s[r];
if (i === 50) {
queue2.push(queue1);
n.groups && (n.groups.indexOf("bureaucrat") > -1 && t.push(n.name), n.groups.indexOf("checkuser") > -1 && a.push(n.name),
queue1 = [];
n.groups.indexOf("oversight") > -1 && i.push(n.name), n.groups.indexOf("sysop") > -1 && o.push(n.name),
n++;
n.groups.indexOf("patroller") > -1 && m.push(n.name), n.groups.indexOf("rollbacker") > -1 && f.push(n.name),
i = 0;
n.groups.indexOf("autoreviewer") > -1 && g.push(n.name), n.groups.indexOf("accountcreator") > -1 && c.push(n.name),
n.groups.indexOf("massmessage-sender") > -1 && w.push(n.name), n.groups.indexOf("confirmed") > -1 && d.push(n.name),
n.groups.indexOf("bot") > -1 && y.push(n.name), n.groups.indexOf("flood") > -1 && k.push(n.name),
n.groups.indexOf("ipblock-exempt") > -1 && h.push(n.name));
}
}
--p <= 0 && function() {
}
var e;
if (queue1.length > 0) {
queue2.push(queue1);
for (e = 0; e < t.length; e++) $('a.mw-userlink[title="User:' + t[e] + '"]').append('<sup style="color:black;">政</sup>');
n++;
for (e = 0; e < a.length; e++) $('a.mw-userlink[title="User:' + a[e] + '"]').append('<sup style="color:purple;">查</sup>');
}
for (e = 0; e < i.length; e++) $('a.mw-userlink[title="User:' + i[e] + '"]').append('<sup style="color:purple;">监</sup>');

for (e = 0; e < o.length; e++) $('a.mw-userlink[title="User:' + o[e] + '"]').append('<sup style="color:mediumvioletred;">管</sup>');
var sysoplist = [];
for (e = 0; e < m.length; e++) $('a.mw-userlink[title="User:' + m[e] + '"]').append('<sup style="color:sienna;">巡</sup>');
var bureaucratlist = [];
for (e = 0; e < f.length; e++) $('a.mw-userlink[title="User:' + f[e] + '"]').append('<sup style="color:sienna;">退</sup>');
var culist = [];
for (e = 0; e < g.length; e++) $('a.mw-userlink[title="User:' + g[e] + '"]').append('<sup style="color:sienna;">免</sup>');
var oslist = [];
for (e = 0; e < c.length; e++) $('a.mw-userlink[title="User:' + c[e] + '"]').append('<sup style="color:blue;">创</sup>');
var plist = [];
for (e = 0; e < w.length; e++) $('a.mw-userlink[title="User:' + w[e] + '"]').append('<sup style="color:blue;">发</sup>');
var rlist = [];
for (e = 0; e < d.length; e++) $('a.mw-userlink[title="User:' + d[e] + '"]').append('<sup style="color:green;">确</sup>');
var alist = [];
for (e = 0; e < y.length; e++) $('a.mw-userlink[title="User:' + y[e] + '"]').append('<sup style="color:blue;">机</sup>'); /** 机器人 **/
var ipbelist = [];
for (e = 0; e < k.length; e++) $('a.mw-userlink[title="User:' + k[e] + '"]').append('<sup style="color:mediumvioletred;">机</sup>'); /** 机器用户 **/
var comlist = [];
for (e = 0; e < h.length; e++) $('a.mw-userlink[title="User:' + h[e] + '"]').append('<sup style="color:green;">代</sup>');
}();
var acclist = [];
var floodlist = [];
}, O = new mw.Api(), U = 0; U < n.length; U++) O.get({
format: "json",
var mmslist = [];
action: "query",
var botlist = [];

list: "users",
usprop: "groups",
var done = function () {
ususers: n[U].join("|")
var j;
// 全站管理型权限
}).done(x);
for (j=0; j<bureaucratlist.length; j++) {
}();
$('a.mw-userlink[title="User:' + bureaucratlist[j] + '"]').append('<sup style="color:black;">政</sup>');
}
for (j=0; j<culist.length; j++) {
$('a.mw-userlink[title="User:' + culist[j] + '"]').append('<sup style="color:purple;">查</sup>');
}
for (j=0; j<oslist.length; j++) {
$('a.mw-userlink[title="User:' + oslist[j] + '"]').append('<sup style="color:purple;">监</sup>');
}
for (j=0; j<sysoplist.length; j++) {
$('a.mw-userlink[title="User:' + sysoplist[j] + '"]').append('<sup style="color:mediumvioletred;">管</sup>');
}
// 页面管理型权限
for (j=0; j<plist.length; j++) {
$('a.mw-userlink[title="User:' + plist[j] + '"]').append('<sup style="color:sienna;">巡</sup>');
}
for (j=0; j<rlist.length; j++) {
$('a.mw-userlink[title="User:' + rlist[j] + '"]').append('<sup style="color:sienna;">退</sup>');
}
for (j=0; j<alist.length; j++) {
$('a.mw-userlink[title="User:' + alist[j] + '"]').append('<sup style="color:sienna;">免</sup>');
}
// 大量操作型权限
for (j=0; j<acclist.length; j++) {
$('a.mw-userlink[title="User:' + acclist[j] + '"]').append('<sup style="color:blue;">创</sup>');
}
for (j=0; j<mmslist.length; j++) {
$('a.mw-userlink[title="User:' + mmslist[j] + '"]').append('<sup style="color:blue;">发</sup>');
}
// 确认权限
for (j=0; j<comlist.length; j++) {
$('a.mw-userlink[title="User:' + comlist[j] + '"]').append('<sup style="color:green;">确</sup>');
}
// 机器权限
for (j=0; j<botlist.length; j++) {
$('a.mw-userlink[title="User:' + botlist[j] + '"]').append('<sup style="color:blue;">机</sup>');
}
for (j=0; j<floodlist.length; j++) {
$('a.mw-userlink[title="User:' + floodlist[j] + '"]').append('<sup style="color:mediumvioletred;">机</sup>');
}
// IPBE
for (j=0; j<ipbelist.length; j++) {
$('a.mw-userlink[title="User:' + ipbelist[j] + '"]').append('<sup style="color:green;">代</sup>');
}
};

var process = function (data) {
var users;
if (data.query && data.query.users) {
users = data.query.users;
} else {
users = [];
}
for (var i=0; i<users.length; i++) {
var user = users[i];
if (user.groups) {
if (user.groups.indexOf('bureaucrat') > -1) {
bureaucratlist.push(user.name);
}
// Due to Office Actions
if (user.groups.indexOf('checkuser') > -1) {
culist.push(user.name);
}
if (user.groups.indexOf('oversight') > -1) {
oslist.push(user.name);
}
if (user.groups.indexOf('sysop') > -1) {
sysoplist.push(user.name);
}
if (user.groups.indexOf('patroller') > -1) {
plist.push(user.name);
}
if (user.groups.indexOf('rollbacker') > -1) {
rlist.push(user.name);
}
if (user.groups.indexOf('autoreviewer') > -1) {
alist.push(user.name);
}
if (user.groups.indexOf('accountcreator') > -1) {
acclist.push(user.name);
}
if (user.groups.indexOf('massmessage-sender') > -1) {
mmslist.push(user.name);
}
if (user.groups.indexOf('confirmed') > -1) {
comlist.push(user.name);
}
if (user.groups.indexOf('bot') > -1) {
botlist.push(user.name);
}
if (user.groups.indexOf('flood') > -1) {
floodlist.push(user.name);
}
if (user.groups.indexOf('ipblock-exempt') > -1) {
ipbelist.push(user.name);
}
}
}

n--;
if (n <= 0) {
done();
}
};

var api = new mw.Api();
for (var j=0; j<queue2.length; j++) {
api.get({
format: 'json',
action: 'query',
list: 'users',
usprop: 'groups',
ususers: queue2[j].join('|')
}).done(process);
}
};

markUG();
});
});

Revision as of 15:50, 11 May 2018

/**
 * 取自 oldid=46135902
 * MediaWiki:Gadget-MarkRights.js
 *
 * 在最近修改、监视列表、条目历史记录等位置以特殊格式显示有特殊权限的用户
 *
 */

$(function () {
    var markUG = function () {
        var $users = $('a.mw-userlink:not(.mw-anonuserlink)');
        var users = {};
        $users.each(function (index, link) {
            users[link.textContent] = true;
        });

        var queue1 = [];
        var queue2 = [];
        var i=0, n=0;
        for (var user in users) {
            queue1.push(user);
            i++;
            if (i === 50) {
                queue2.push(queue1);
                queue1 = [];
                n++;
                i = 0;
            }
        }
        if (queue1.length > 0) {
            queue2.push(queue1);
            n++;
        }

        var sysoplist = [];
        var bureaucratlist = [];
        var culist = [];
        var oslist = [];
        var plist = [];
        var rlist = [];
        var alist = [];
        var ipbelist = [];
		var comlist = [];
        var acclist = [];
        var floodlist = [];
        var mmslist = [];
        var botlist = [];

        var done = function () {
            var j;
			// 全站管理型权限
            for (j=0; j<bureaucratlist.length; j++) {
                $('a.mw-userlink[title="User:' + bureaucratlist[j] + '"]').append('<sup style="color:black;">政</sup>');
            }
            for (j=0; j<culist.length; j++) {
                $('a.mw-userlink[title="User:' + culist[j] + '"]').append('<sup style="color:purple;">查</sup>');
             }
            for (j=0; j<oslist.length; j++) {
                $('a.mw-userlink[title="User:' + oslist[j] + '"]').append('<sup style="color:purple;">监</sup>');
            }
            for (j=0; j<sysoplist.length; j++) {
                $('a.mw-userlink[title="User:' + sysoplist[j] + '"]').append('<sup style="color:mediumvioletred;">管</sup>');
            }
			// 页面管理型权限
            for (j=0; j<plist.length; j++) {
                $('a.mw-userlink[title="User:' + plist[j] + '"]').append('<sup style="color:sienna;">巡</sup>');
            }
            for (j=0; j<rlist.length; j++) {
                $('a.mw-userlink[title="User:' + rlist[j] + '"]').append('<sup style="color:sienna;">退</sup>');
            }
            for (j=0; j<alist.length; j++) {
                $('a.mw-userlink[title="User:' + alist[j] + '"]').append('<sup style="color:sienna;">免</sup>');
            }
			// 大量操作型权限
            for (j=0; j<acclist.length; j++) {
                $('a.mw-userlink[title="User:' + acclist[j] + '"]').append('<sup style="color:blue;">创</sup>');
            }
            for (j=0; j<mmslist.length; j++) {
                $('a.mw-userlink[title="User:' + mmslist[j] + '"]').append('<sup style="color:blue;">发</sup>');
            }
			// 确认权限
            for (j=0; j<comlist.length; j++) {
                $('a.mw-userlink[title="User:' + comlist[j] + '"]').append('<sup style="color:green;">确</sup>');
            }
			// 机器权限
            for (j=0; j<botlist.length; j++) {
                $('a.mw-userlink[title="User:' + botlist[j] + '"]').append('<sup style="color:blue;">机</sup>');
            }
            for (j=0; j<floodlist.length; j++) {
                $('a.mw-userlink[title="User:' + floodlist[j] + '"]').append('<sup style="color:mediumvioletred;">机</sup>');
            }
			// IPBE
            for (j=0; j<ipbelist.length; j++) {
                $('a.mw-userlink[title="User:' + ipbelist[j] + '"]').append('<sup style="color:green;">代</sup>');
            }
        };

        var process = function (data) {
            var users;
            if (data.query && data.query.users) {
                users = data.query.users;
            } else {
                users = [];
            }
            for (var i=0; i<users.length; i++) {
                var user = users[i];
                if (user.groups) {
                    if (user.groups.indexOf('bureaucrat') > -1) {
                        bureaucratlist.push(user.name);
                    }
                    // Due to Office Actions
                    if (user.groups.indexOf('checkuser') > -1) {
                        culist.push(user.name);
                    }
                    if (user.groups.indexOf('oversight') > -1) {
                        oslist.push(user.name);
                    }
                    if (user.groups.indexOf('sysop') > -1) {
                        sysoplist.push(user.name);
                    }
                    if (user.groups.indexOf('patroller') > -1) {
                        plist.push(user.name);
                    }
                    if (user.groups.indexOf('rollbacker') > -1) {
                        rlist.push(user.name);
                    }
                    if (user.groups.indexOf('autoreviewer') > -1) {
                        alist.push(user.name);
                    }
					if (user.groups.indexOf('accountcreator') > -1) {
                        acclist.push(user.name);
                    }
					if (user.groups.indexOf('massmessage-sender') > -1) {
                        mmslist.push(user.name);
                    }
					if (user.groups.indexOf('confirmed') > -1) {
                        comlist.push(user.name);
                    }
                    if (user.groups.indexOf('bot') > -1) {
                        botlist.push(user.name);
                    }
					if (user.groups.indexOf('flood') > -1) {
                        floodlist.push(user.name);
                    }
					if (user.groups.indexOf('ipblock-exempt') > -1) {
                        ipbelist.push(user.name);
                    }
                }
            }

            n--;
            if (n <= 0) {
                done();
            }
        };

        var api = new mw.Api();
        for (var j=0; j<queue2.length; j++) {
            api.get({
                format: 'json',
                action: 'query',
                list: 'users',
                usprop: 'groups',
                ususers: queue2[j].join('|')
            }).done(process);
        }
    };

    markUG();
});