![刷新 刷新](/images/thumb/b/b0/OOjs_UI_icon_reload-progressive.svg/55px-OOjs_UI_icon_reload-progressive.svg.png)
请注意:更新本页面后,您可能需要清除浏览器缓存才能看到所作变更的影响。
Google Chrome、Microsoft Edge、Mozilla Firefox、Safari:按住⇧ Shift,同时单击“刷新”。
Google Chrome、Microsoft Edge、Mozilla Firefox、Safari:按住⇧ Shift,同时单击“刷新”。
![Cc.logo.circle.svg](/images/thumb/5/5d/CC_Logo.svg/40px-CC_Logo.svg.png)
![署名 署名](/images/thumb/1/11/Cc-by_new_white.svg/24px-Cc-by_new_white.svg.png)
![相同方式共享 相同方式共享](/images/thumb/d/df/Cc-sa_white.svg/24px-Cc-sa_white.svg.png)
本文件采用知识共享署名-相同方式共享 4.0 国际(CC BY-SA 4.0)许可协议授权。
- 您可以自由地:
- 分享 – 在任何媒介以任何形式复制、发行本作品
- 演绎 – 修改、转换或以本作品为基础进行创作
- 惟须遵守下列条件:
- 署名 – 您必须给出适当的署名(标明原作者),提供指向本许可协议的链接,同时标明是否(对原始作品)作了修改。您可以用任何合理的方式来署名,但是不得以任何方式暗示许可人为您或您的使用背书(即诱导原作者在不了解协议情况下给你授权)。
- 相同方式共享 – 如果您再混合、转换或者基于本作品进行创作,您必须基于与原先许可协议相同或相兼容的许可协议分发您贡献的作品。
/**
* SPDX-License-Identifier: CC BY-SA-4.0
* _addText: '{{Gadget Header|license=CC-BY-SA-4.0}}'
*
* @source <zh.wikipedia.org/w/index.php?oldid=52825311>
*/
"use strict";
/* 在最近修改、监视列表、条目历史记录等位置以特殊格式显示有特殊权限的用户 */
$(function () {
var groups = {
// 全站管理型权限
bureaucrat: {
list: [],
"class": "markrights-bureaucrat"
},
sysop: {
list: [],
"class": "markrights-sysop"
},
checkuser: {
list: [],
"class": "markrights-checkuser"
},
suppress: {
list: [],
"class": "markrights-suppress"
},
"interface-admin": {
list: [],
"class": "markrights-interface-admin"
},
templateeditor: {
list: [],
"class": "markrights-templateeditor"
},
transwiki: {
list: [],
"class": "markrights-transwiki"
},
// 页面管理型权限
patroller: {
list: [],
"class": "markrights-patroller"
},
rollbacker: {
list: [],
"class": "markrights-rollbacker"
},
autopatrolled: {
list: [],
"class": "markrights-autopatrolled"
},
senioreditor: {
list: [],
"class": "markrights-senioreditor"
},
// 大量操作型权限
eventsponsor: {
list: [],
"class": "markrights-eventsponsor"
},
"massmessage-sender": {
list: [],
"class": "markrights-massmessage-sender"
},
// 确认权限
confirmed: {
list: [],
"class": "markrights-confirmed"
},
autoconfirmed: {
list: [],
"class": "markrights-autoconfirmed"
},
// 机器权限
bot: {
list: [],
"class": "markrights-bot"
},
flood: {
list: [],
"class": "markrights-flood"
}
// IPBE
// 'ipblock-exempt': {list: [], class: "markrights-ipblock-exempt"},
};
var markUG = function markUG() {
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) {
if (Object.prototype.hasOwnProperty.call(users, user)) {
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 getUsername(url) {
var username = mw.util.getParamValue("title", url);
var decode1 = function decode1(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 decode2(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 done() {
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 (Object.prototype.hasOwnProperty.call(groups, group)) {
if (groups[group].list.indexOf(username) > -1) {
$(el).append("<sup class=\"".concat(groups[group]["class"], "\"></sup>"));
}
}
}
}
});
};
var process = function process(data) {
var users, group;
if (data.query && data.query.users) {
users = data.query.users;
} else {
users = [];
}
for (var _i3 = 0; _i3 < users.length; _i3++) {
var _user = users[_i3];
if (_user.groups) {
for (group in groups) {
if (Object.prototype.hasOwnProperty.call(groups, 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();
});
});