User:Bosco/MediaWiki:Gadget-MarkRights.js: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
via W+: |
mNo edit summary |
||
| (34 intermediate revisions by 6 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 7: | Line 9: | ||
*/ |
*/ |
||
$(function() { |
$(function () { |
||
var groups = { |
|||
'abusefilter-admin': {list: [], class: "markrights-abusefilter-admin"}, |
|||
var e = $("a.mw-userlink:not(.mw-anonuserlink)"), s = {}; |
|||
'abusefilter-restricted': {list: [], class: "markrights-abusefilter-restricted"}, |
|||
e.each(function(e, r) { |
|||
autopatrol: {list: [], class: "markrights-autopatrol"}, |
|||
s[r.textContent] = !0; |
|||
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 r = [], n = [], u = 0, p = 0; |
|||
var queue1 = []; |
|||
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) { |
|||
for (var user in users) { |
|||
queue1.push(user); |
|||
i++; |
|||
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), |
|||
if (queue1.length > 0) { |
|||
n.groups.indexOf("ipblock-exempt") > -1 && h.push(n.name)); |
|||
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({ |
|||
for (e = 0; e < a.length; e++) $('a.mw-userlink[title="User:' + a[e] + '"]').append('<sup style="color:purple;">查</sup>'); |
|||
format: 'json', |
|||
for (e = 0; e < i.length; e++) $('a.mw-userlink[title="User:' + i[e] + '"]').append('<sup style="color:purple;">监</sup>'); |
|||
action: 'query', |
|||
for (e = 0; e < o.length; e++) $('a.mw-userlink[title="User:' + o[e] + '"]').append('<sup style="color:mediumvioletred;">管</sup>'); |
|||
list: 'users', |
|||
for (e = 0; e < m.length; e++) $('a.mw-userlink[title="User:' + m[e] + '"]').append('<sup style="color:sienna;">巡</sup>'); |
|||
usprop: 'groups', |
|||
for (e = 0; e < f.length; e++) $('a.mw-userlink[title="User:' + f[e] + '"]').append('<sup style="color:sienna;">退</sup>'); |
|||
ususers: queue2[j].join('|') |
|||
for (e = 0; e < g.length; e++) $('a.mw-userlink[title="User:' + g[e] + '"]').append('<sup style="color:sienna;">免</sup>'); |
|||
}).done(process); |
|||
for (e = 0; e < c.length; e++) $('a.mw-userlink[title="User:' + c[e] + '"]').append('<sup style="color:blue;">创</sup>'); |
|||
} |
|||
for (e = 0; e < w.length; e++) $('a.mw-userlink[title="User:' + w[e] + '"]').append('<sup style="color:blue;">发</sup>'); |
|||
}; |
|||
for (e = 0; e < d.length; e++) $('a.mw-userlink[title="User:' + d[e] + '"]').append('<sup style="color:green;">确</sup>'); |
|||
mw.hook('wikipage.content').add(function(e) { |
|||
for (e = 0; e < y.length; e++) $('a.mw-userlink[title="User:' + y[e] + '"]').append('<sup style="color:blue;">机</sup>'); |
|||
if (e.attr('id') === 'mw-content-text') { |
|||
/** 机器用户 **/ |
|||
markUG(); |
|||
for (e = 0; e < k.length; e++) $('a.mw-userlink[title="User:' + k[e] + '"]').append('<sup style="color:mediumvioletred;">机</sup>'); |
|||
return; |
|||
for (e = 0; e < h.length; e++) $('a.mw-userlink[title="User:' + h[e] + '"]').append('<sup style="color:green;">代</sup>'); |
|||
} |
|||
if (e.hasClass('mw-changeslist')) markUG(); |
|||
}, O = new mw.Api(), U = 0; U < n.length; U++) O.get({ |
|||
}); |
|||
format: "json", |
|||
action: "query", |
|||
list: "users", |
|||
usprop: "groups", |
|||
ususers: n[U].join("|") |
|||
}).done(x); |
|||
}(); |
|||
}); |
}); |
||
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();
});
});