User:94rain/Gadget-MarkRights.js

$(function {    var groups = {        // 全站管理型权限        bureaucrat: {list: [], class: "markrights-bureaucrat"},        checkuser: {list: [], class: "markrights-checkuser"},        oversight: {list: [], class: "markrights-oversight"},        sysop: {list: [], class: "markrights-sysop"},        'interface-admin': {list: [], class: "markrights-interface-admin"},        // 页面管理型权限        patroller: {list: [], class: "markrights-patroller"},        rollbacker: {list: [], class: "markrights-rollbacker"},        autoreviewer: {list: [], class: "markrights-autoreviewer"},        // 大量操作型权限        accountcreator: {list: [], class: "markrights-accountcreator"},        'massmessage-sender': {list: [], class: "markrights-massmessage-sender"},

};   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 done = function { var group, user, j;           for (group in groups) { if (groups.hasOwnProperty(group)) { for (j=0; j '); }               }            }        };

var process = function (data) { var users, group; if (data.query && data.query.users) { users = data.query.users; } else { users = []; }           for (var i=0; i -1) { groups[group].list.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; });