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

From Test Wiki
Jump to navigation Jump to search
Content deleted Content added
增加 interface-admin
mNo edit summary
 
(29 intermediate revisions by 4 users not shown)
Line 2: Line 2:
* 取自 oldid=46135902
* 取自 oldid=46135902
* MediaWiki:Gadget-MarkRights.js
* MediaWiki:Gadget-MarkRights.js
* 修改自
* https://zh.wikipedia.org/w/index.php?title=Draft:MediaWiki:Gadget-MarkRights.js/50678903&oldid=52825311
*
*
* 在最近修改、监视列表、条目历史记录等位置以特殊格式显示有特殊权限的用户
* 在最近修改、监视列表、条目历史记录等位置以特殊格式显示有特殊权限的用户
Line 8: Line 10:


$(function () {
$(function () {
var groups = {
'abusefilter-admin': {list: [], class: "markrights-abusefilter-admin"},
'abusefilter-restricted': {list: [], class: "markrights-abusefilter-restricted"},
autopatrol: {list: [], class: "markrights-autopatrol"},
autoreview: {list: [], class: "markrights-autoreview"},
blockedfromchat: {list: [], class: "markrights-blockedfromchat"},
bot: {list: [], class: "markrights-bot"},
bureaucrat: {list: [], class: "markrights-bureaucrat"},
chatmod: {list: [], class: "markrights-chatmod"},
checkuser: {list: [], class: "markrights-checkuser"},
'checkuser-temporary-account': {list: [], class: "markrights-checkuser-temporary-account"},
confirmed: {list: [], class: "markrights-confirmed"},
electionadmin: {list: [], class: "markrights-electionadmin"},
'interface-admin': {list: [], class: "markrights-interface-admin"},
'interwiki-admin': {list: [], class: "markrights-interwiki-admin"},
//'non-stewardsuppress': {list: [], class: "markrights-non-stewardsuppress"},
patroller: {list: [], class: "markrights-patroller"},
'push-subscription-manager': {list: [], class: "markrights-push-subscription-manager"},
reviewer: {list: [], class: "markrights-reviewer"},
suppress: {list: [], class: "markrights-suppress"},
sysop: {list: [], class: "markrights-sysop"},
translationadmin: {list: [], class: "markrights-translationadmin"},
steward: {list: [], class: "markrights-steward"},
sysadmin: {list: [], class: "markrights-sysadmin"},
autoconfirmed: {list: [], class: "markrights-autoconfirmed"},
};
var markUG = function () {
var markUG = function () {
var $users = $('a.mw-userlink:not(.mw-anonuserlink)');
var $users = $('a.mw-userlink:not(.mw-anonuserlink)');
Line 17: Line 45:
var queue1 = [];
var queue1 = [];
var queue2 = [];
var queue2 = [];
var i=0, n=0;
var i = 0, n = 0;
for (var user in users) {
for (var user in users) {
queue1.push(user);
queue1.push(user);
Line 33: Line 61:
}
}


var sysoplist = [];
var getUsername = function (url) {
var interfaceadminlist = [];
var username = mw.util.getParamValue('title', url);
var bureaucratlist = [];
var decode1 = function (username) {
return decodeURIComponent((function (u) {
var culist = [];
var oslist = [];
try {
return decodeURIComponent(u.replace('User:', '').replace(/_/g, ' '));
var plist = [];
var rlist = [];
} catch (e) {
return u.replace('User:', '').replace(/_/g, ' ').replace(/%(?!\d+)/g, '%25');
var alist = [];
var ipbelist = [];
}
var comlist = [];
})(username))
var acclist = [];
};
var floodlist = [];
if (username) {
var mmslist = [];
return decode1(username);
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++) {
username = url.match(/\/wiki\/User:(.+?)$/);
var decode2 = function (username) {
$('a.mw-userlink[title="User:' + culist[j] + '"]').append('<sup style="color:purple;">查</sup>');
}
return decodeURIComponent((function (u) {
for (j=0; j<oslist.length; j++) {
try {
return decodeURIComponent(u.replace(/_/g, ' '));
$('a.mw-userlink[title="User:' + oslist[j] + '"]').append('<sup style="color:purple;">监</sup>');
}
} catch (e) {
for (j=0; j<sysoplist.length; j++) {
return u.replace(/_/g, ' ').replace(/%(?!\d+)/g, '%25');
}
$('a.mw-userlink[title="User:' + sysoplist[j] + '"]').append('<sup style="color:mediumvioletred;">管</sup>');
}
})(username))
for (j=0; j<interfaceadminlist.length; j++) {
};
if (username) {
$('a.mw-userlink[title="User:' + interfaceadminlist[j] + '"]').append('<sup style="color:mediumvioletred;">介</sup>');
}
return decode2(username[1]);
// 页面管理型权限
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>');
}
}
return null;
};

var done = function () {
var group;
$('a.mw-userlink:not(.mw-anonuserlink)').each(function (i, el) {
var username = getUsername($(el).attr('href'));
if (username) {
for (group in groups) {
if (groups.hasOwnProperty(group)) {
if (groups[group].list.indexOf(username) > -1) {
$(el).append('<sup class="' + groups[group].class + '"></sup>');
}
}
}
}
});
};
};


var process = function (data) {
var process = function (data) {
var users;
var users, group;
if (data.query && data.query.users) {
if (data.query && data.query.users) {
users = data.query.users;
users = data.query.users;
Line 107: Line 114:
users = [];
users = [];
}
}
for (var i=0; i<users.length; i++) {
for (var i = 0; i < users.length; i++) {
var user = users[i];
var user = users[i];
if (user.groups) {
if (user.groups) {
if (user.groups.indexOf('bureaucrat') > -1) {
for (group in groups) {
bureaucratlist.push(user.name);
if (groups.hasOwnProperty(group) && user.groups.indexOf(group) > -1) {
}
groups[group].list.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('interface-admin') > -1) {
interfaceadminlist.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);
}
}
}
}
Line 160: Line 129:
}
}
};
};
var api = new mw.Api();
var api = new mw.Api({ userAgent: 'Gadget-MarkRights' });
for (var j=0; j<queue2.length; j++) {
for (var j = 0; j < queue2.length; j++) {
api.get({
api.get({
format: 'json',
format: 'json',
Line 171: Line 140:
}
}
};
};
mw.hook('wikipage.content').add(function(e) {
markUG();
if (e.attr('id') === 'mw-content-text') {
markUG();
return;
}
if (e.hasClass('mw-changeslist')) markUG();
});
});
});

Latest revision as of 04:34, 12 June 2025

/**
 * 取自 oldid=46135902
 * MediaWiki:Gadget-MarkRights.js
 * 修改自
 * https://zh.wikipedia.org/w/index.php?title=Draft:MediaWiki:Gadget-MarkRights.js/50678903&oldid=52825311
 *
 * 在最近修改、监视列表、条目历史记录等位置以特殊格式显示有特殊权限的用户
 *
 */

$(function () {
    var groups = {
		'abusefilter-admin': {list: [], class: "markrights-abusefilter-admin"},
		'abusefilter-restricted': {list: [], class: "markrights-abusefilter-restricted"},
        autopatrol: {list: [], class: "markrights-autopatrol"},
        autoreview: {list: [], class: "markrights-autoreview"},
        blockedfromchat: {list: [], class: "markrights-blockedfromchat"},
        bot: {list: [], class: "markrights-bot"},
        bureaucrat: {list: [], class: "markrights-bureaucrat"},
        chatmod: {list: [], class: "markrights-chatmod"},
        checkuser: {list: [], class: "markrights-checkuser"},
        'checkuser-temporary-account': {list: [], class: "markrights-checkuser-temporary-account"},
        confirmed: {list: [], class: "markrights-confirmed"},
        electionadmin: {list: [], class: "markrights-electionadmin"},
        'interface-admin': {list: [], class: "markrights-interface-admin"},
        'interwiki-admin': {list: [], class: "markrights-interwiki-admin"},
        //'non-stewardsuppress': {list: [], class: "markrights-non-stewardsuppress"},
        patroller: {list: [], class: "markrights-patroller"},
        'push-subscription-manager': {list: [], class: "markrights-push-subscription-manager"},
        reviewer: {list: [], class: "markrights-reviewer"},
        suppress: {list: [], class: "markrights-suppress"},
        sysop: {list: [], class: "markrights-sysop"},
        translationadmin: {list: [], class: "markrights-translationadmin"},
        steward: {list: [], class: "markrights-steward"},
        sysadmin: {list: [], class: "markrights-sysadmin"},
        autoconfirmed: {list: [], class: "markrights-autoconfirmed"},
    };
    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 getUsername = function (url) {
            var username = mw.util.getParamValue('title', url);
            var decode1 = function (username) {
                return decodeURIComponent((function (u) {
                    try {
                        return decodeURIComponent(u.replace('User:', '').replace(/_/g, ' '));
                    } catch (e) {
                        return u.replace('User:', '').replace(/_/g, ' ').replace(/%(?!\d+)/g, '%25');
                    }
                })(username))
            };
            if (username) {
                return decode1(username);
            }
            username = url.match(/\/wiki\/User:(.+?)$/);
            var decode2 = function (username) {
                return decodeURIComponent((function (u) {
                    try {
                        return decodeURIComponent(u.replace(/_/g, ' '));
                    } catch (e) {
                        return u.replace(/_/g, ' ').replace(/%(?!\d+)/g, '%25');
                    }
                })(username))
            };
            if (username) {
                return decode2(username[1]);
            }
            return null;
        };

        var done = function () {
            var group;
            $('a.mw-userlink:not(.mw-anonuserlink)').each(function (i, el) {
                var username = getUsername($(el).attr('href'));
                if (username) {
                    for (group in groups) {
                        if (groups.hasOwnProperty(group)) {
                            if (groups[group].list.indexOf(username) > -1) {
                                $(el).append('<sup class="' + groups[group].class + '"></sup>');
                            }
                        }
                    }
                }
            });
        };

        var process = function (data) {
            var users, group;
            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) {
                    for (group in groups) {
                        if (groups.hasOwnProperty(group) && user.groups.indexOf(group) > -1) {
                            groups[group].list.push(user.name);
                        }
                    }
                }
            }
            n--;
            if (n <= 0) {
                done();
            }
        };
        var api = new mw.Api({ userAgent: 'Gadget-MarkRights' });
        for (var j = 0; j < queue2.length; j++) {
            api.get({
                format: 'json',
                action: 'query',
                list: 'users',
                usprop: 'groups',
                ususers: queue2[j].join('|')
            }).done(process);
        }
    };
    mw.hook('wikipage.content').add(function(e) {
        if (e.attr('id') === 'mw-content-text') {
            markUG();
            return;
        }
        if (e.hasClass('mw-changeslist')) markUG();
    });
});