MediaWiki:Gadget-markadmins.js
Билгалдаккхар: Ӏалашйинчул тӀаьхьа хийцамаш га браузеран кэш цӀанйан йезаш хила мега.
- Firefox / Safari: Shift тӀетаӀийна йитина, гӀирсийн панелан тӀера тӀетаӀайе Карлайаккха йа Ctrl+F5 йа Ctrl+R (⌘+R Mac тӀехь)
- Google Chrome: тӀетаӀайе Ctrl+Shift+R (⌘+Shift+R Mac тӀехь)
- Internet Explorer / Edge: тӀетаӀийна йитина Ctrl, тӀетаӀайе Карлайаккха йа тӀетаӀайе Ctrl+F5
- Opera: тӀетаӀайе Ctrl+F5.
// rewritten by [[m:User:Hoo man]]; 2012-08-26, adapted by [[User:Obersachse]], optimized by [[User:Jack who built the house]]
(function () {
/*
Следующие данные следует заполнять в
https://ru.wikipedia.org/wiki/MediaWiki:Gadget-markadmins.json:
• userSet — списки участников для каждого флага;
• users_talkLinkOnly — участники, у которых в подписи стоит только ссылка на обсуждение
участника.
*/
var userSetTips = {
'А' : 'администратор',
'И' : 'интерфейсан администратор',
'Т' : 'таллархо',
};
function trim(s) {
return s.trim();
}
function processLink(link, userSet, userSetTips) {
if (
!link.parentNode ||
(/[?#]/.test(link.href) && link.href.indexOf('redlink=1') === -1) ||
(link.parentElement && link.parentElement.classList.contains('cancelLink'))
) {
return;
}
var matches = /^(?:Декъашхо|User):(.+)|Декъашхочун дийцар:(.+)/
.exec(link.title);
if (!matches) return;
if (matches[2] && users_talkLinkOnly && users_talkLinkOnly.indexOf(matches[2]) !== -1) {
if (
link.parentNode.classList.contains('mw-usertoollinks') ||
/обс/i.test(link.textContent)
) {
return;
}
matches[1] = matches[2];
} else if (!matches[1]) {
return;
}
var user;
try {
user = decodeURIComponent(matches[1]);
} catch (e) {
// Например, https://ru.wikipedia.org/wiki/Википедия:Запросы_к_администраторам/Архив/2020/09
return;
}
if (link.href.indexOf('redlink=1') !== -1) {
user = user.replace(/ \([^\)]+\)$/, '');
}
var flags = [];
var tips = [];
for (var flag in userSet) {
if (userSet[flag].indexOf(user) !== -1 && userSetTips[flag]) {
flags.push(flag);
tips.push(userSetTips[flag]);
}
}
if (!flags.length) return;
var tipsString = ' (' + tips.join(', ') + ')';
// Без jQuery здесь общее ускорение вдвое.
var wrapper = document.createElement('span');
wrapper.className = 'userflags-wrapper';
wrapper.title = tipsString;
wrapper.textContent = '(' + flags.join(',') + ')';
link.parentNode.insertBefore(wrapper, link.nextSibling);
link.title = link.title + tipsString;
}
function processLinks($content, userSet, userSetTips) {
$content
.find('a[title^="Декъашхо"], a[title^="Декъашхочун дийцар"], a[title^="User:"]')
.each(function (i, link) {
processLink(link, userSet, userSetTips);
});
}
function markadmins($content, customUserSet, customUserSetTips) {
if (!$content.length) return;
if (customUserSet) {
processLinks($content, customUserSet, customUserSetTips);
} else {
var userSet = data.userSet;
for (var flag in userSet) {
userSet[flag] = userSet[flag].map(trim);
}
processLinks($content, userSet, userSetTips);
}
}
var data = require('./markadmins.json');
var users_talkLinkOnly = data.users_talkLinkOnly;
mw.hook('wikipage.content').add(markadmins);
mw.hook('global.userlinks').add(markadmins);
// Для https://ru.wikipedia.org/wiki/User:Dibot/pat.js
window.markadmins = markadmins;
}());