MediaWiki:Gadget-usergroup.js
注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
- Opera:按 Ctrl-F5。
/* <pre> */ /** * ------------------------------------------------------------------------- * !!! DON'T MODIFY THIS PAGE MANUALLY, YOUR CHANGES WILL BE OVERWRITTEN !!! * ------------------------------------------------------------------------- * This script is carried from MoegirlPedia(https://zh.moegirl.org.cn) by CC BY-NC-SA 3.0 License. * 本脚本来自萌娘百科 (https://zh.moegirl.org.cn) ,依CC BY-NC-SA 3.0协议引入本网站。 * ------------------------------------------------------------------------- */ "use strict"; $(function () { var groups = { bureaucrat: { list: [], class: "user-rights-bureaucrat" }, suppress: { list: [], class: "user-rights-suppress" }, sysop: { list: [], class: "user-rights-sysop" }, 'interface-admin': { list: [], class: "user-rights-interface-admin" }, patroller: { list: [], class: "user-rights-patroller" }, autoconfirmed: { list: [], class: "user-rights-autoconfirmed" }, bot: { list: [], class: "user-rights-bot" }, }; 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('%E7%94%A8%E6%88%B7:', '').replace(/_/g, ' ')).replace('index.php?title=', '').replace('&action=edit&redlink=1', ''); } catch (e) { return u.replace('%E7%94%A8%E6%88%B7:', '').replace(/_/g, ' ').replace(/%(?!\d+)/g, '').replace('index.php?title=', '').replace('&action=edit&redlink=1', ''); } })(username)) }; if (username) { return decode1(username); } username = url.match(/.*%E7%94%A8%E6%88%B7:(.+)/); var decode2 = function (username) { return decodeURIComponent((function (u) { try { return decodeURIComponent(u.replace(/_/g, ' ').replace('index.php?title=', '').replace('&action=edit&redlink=1', '')); } catch (e) { return u.replace(/_/g, ' ').replace(/%(?!\d+)/g, '%25').replace('index.php?title=', '').replace('&action=edit&redlink=1', ''); } })(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(); }); });