User:Irukaza/common.js:修订间差异
跳到导航
跳到搜索
imported>=海豚= 无编辑摘要 |
imported>=海豚= 无编辑摘要 |
||
第2行: | 第2行: | ||
$(() => (async () => { | $(() => (async () => { | ||
await mw.loader.using(["mw.Api", "mediawiki.Uri"]); | await mw.loader.using(["mw.Api", "mediawiki.Uri"]); | ||
const groupsKey = ["bureaucrat", "checkuser", "suppress", "sysop", "patroller", "bot", "goodeditor"].reverse(); | const groupsKey = ["bureaucrat", "checkuser", "suppress", "sysop", "patroller", "bot", "goodeditor", "autoconfirmed"].reverse(); | ||
const groupsStr = { | const groupsStr = { | ||
autoconfirmed: "确", | |||
bureaucrat: "行", | bureaucrat: "行", | ||
checkuser: "查", | checkuser: "查", | ||
第89行: | 第90行: | ||
mw.hook("wikipage.content").add(hook); | mw.hook("wikipage.content").add(hook); | ||
$(window).on("load", hook); | $(window).on("load", hook); | ||
$("body").append("<style>.markrights-bureaucrat{color:black}.markrights-checkuser{color:purple}.markrights-suppress{color:purple}.markrights-sysop{color:mediumvioletred}.markrights-patroller{color:sienna}.markrights-bot{color:blue}.markrights-goodeditor{color:green}sup[class^=markrights-]+sup[class^=markrights-]{margin-left:2px}</style>"); | $("body").append("<style>.markrights-bureaucrat{color:black}.markrights-autoconfirmed{color:yellow}.markrights-checkuser{color:purple}.markrights-suppress{color:purple}.markrights-sysop{color:mediumvioletred}.markrights-patroller{color:sienna}.markrights-bot{color:blue}.markrights-goodeditor{color:green}sup[class^=markrights-]+sup[class^=markrights-]{margin-left:2px}</style>"); | ||
})()); | })()); |
2020年7月4日 (六) 09:57的版本
"use strict";
$(() => (async () => {
await mw.loader.using(["mw.Api", "mediawiki.Uri"]);
const groupsKey = ["bureaucrat", "checkuser", "suppress", "sysop", "patroller", "bot", "goodeditor", "autoconfirmed"].reverse();
const groupsStr = {
autoconfirmed: "确",
bureaucrat: "行",
checkuser: "查",
suppress: "监",
sysop: "管",
patroller: "巡",
bot: "机",
goodeditor: "优",
};
let cache;
try {
cache = JSON.parse(localStorage.getItem("AnnTools-usergroup"));
if (!$.isPlainObject(cache)
|| typeof cache.timestamp !== "number" || cache.timestamp < new Date().getTime() - 30 * 60 * 1000
|| !$.isPlainObject(cache.groups)) {
throw new Error();
} else {
for (const i of groupsKey) {
if (!Array.isArray(cache.groups[i])) {
throw new Error();
}
}
}
} catch {
const api = new mw.Api();
const result = {};
const eol = Symbol();
let aufrom = undefined;
while (aufrom !== eol) {
const _result = await api.post({
action: "query",
list: "allusers",
augroup: groupsKey.join("|"),
aulimit: "max",
auprop: "groups",
aufrom,
});
if (_result.continue) {
aufrom = _result.continue.aufrom;
} else {
aufrom = eol;
}
_result.query.allusers.forEach(({
name,
groups,
}) => {
groups.forEach((group) => {
if (groupsKey.includes(group)) {
result[group] = result[group] || [];
if (!result[group].includes(name)) {
result[group].push(name);
}
}
});
});
}
cache = {
timestamp: new Date().getTime(),
groups: result,
};
}
localStorage.setItem("AnnTools-usergroup", JSON.stringify(cache));
const hook = () => {
$("a.mw-userlink:not(.markrights)").each((_, ele) => {
ele.classList.add("markrights");
const uri = new mw.Uri(ele.href);
let username;
const path = decodeURI(uri.path);
if (/^\/User:[^/=%]+/.test(path)) {
username = path.match(/^\/User:([^/=%]+)/)[1].replace(/_/g, " ");
} else if (/^用户:[^/=%]+/.test(uri.query.title)) {
username = uri.query.title.match(/^User:([^/=%]+)/)[1].replace(/_/g, " ");
}
if (username) {
const self = $(ele);
groupsKey.forEach((group) => {
if (cache.groups[group].includes(username)) {
self.after(`<sup class="markrights-${group}">${groupsStr[group]}<sup>`);
}
});
}
});
};
hook();
mw.hook("wikipage.content").add(hook);
$(window).on("load", hook);
$("body").append("<style>.markrights-bureaucrat{color:black}.markrights-autoconfirmed{color:yellow}.markrights-checkuser{color:purple}.markrights-suppress{color:purple}.markrights-sysop{color:mediumvioletred}.markrights-patroller{color:sienna}.markrights-bot{color:blue}.markrights-goodeditor{color:green}sup[class^=markrights-]+sup[class^=markrights-]{margin-left:2px}</style>");
})());