注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5。
/** * 取自 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 = { // 全站管理型权限 // bureaucrat: {list: [], class: "markrights-bureaucrat"}, // checkuser: {list: [], class: "markrights-checkuser"}, // suppress: {list: [], class: "markrights-suppress"}, sysop: {list: [], class: "markrights-sysop"}, 'interface-admin': {list: [], class: "markrights-interface-admin"}, transwiki: {list: [], class: "markrights-transwiki"}, // 页面管理型权限 patroller: {list: [], class: "markrights-patroller"}, autopatrolled: {list: [], class: "markrights-autopatrolled"}, // 大量操作型权限 // accountcreator: {list: [], class: "markrights-accountcreator"}, // 确认权限 confirmed: {list: [], class: "markrights-confirmed"}, autoconfirmed: {list: [], class: "markrights-autoconfirmed"}, // 机器权限 bot: {list: [], class: "markrights-bot"}, // IPBE 'ipblock-exempt': {list: [], class: "markrights-ipblock-exempt"}, }; 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(); 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(); }); });