Користувач:Kanzat/HistoryPagePatrolHelper2.js
Зовнішній вигляд
Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.
- Firefox / Safari: тримайте Shift, коли натискаєте Оновити, або натисніть Ctrl-F5 чи Ctrl-Shift-R (⌘-R на Apple Mac)
- Google Chrome: натисніть Ctrl-Shift-R (⌘-Shift-R на Apple Mac)
- Edge: тримайте Ctrl, коли натискаєте Оновити, або натисніть Ctrl-F5.
// Оригінальний код скопійовано з :ru:Участник:Мастер_теней/Помощник_патруля.js
//Помощник патруля
//Включается на страницах историй статей без вторичного патрулирования (устаревшее ПАТ)
//Снимает подсветку с учётных записей владельцев флагов ПАТ и АПАТ, а также с УЗ, содержащих в логине «bot», «бот» или «робо»
if( $('body').hasClass('ns-0') && $('body').hasClass('action-history') )
{
// i18n not needed for now
var i18n = {
uk: {
},
ru: {
}
}
let currentLang = "uk"; // uk hardcoded for now
let i18nBatch = i18n[currentLang];
var userToElementsMap = {};
let anonymousUsers = [];
var users = $('#pagehistory .flaggedrevs-pending .history-user .mw-userlink').map(function(){
let userName = $.trim($(this).text());
if ($(this).hasClass('mw-anonuserlink')) {
anonymousUsers.push(userName);
}
if (!userToElementsMap[userName]) {
userToElementsMap[userName] = [];
}
userToElementsMap[userName].push($(this));
return userName;
}).get();
var t = 0;
var processedUsers = []
if (users && users.length > 0) {
for (let i=0; i<users.length; i++) {
let user = users[i];
if (processedUsers.indexOf(user) !== -1) {
continue;
}
let isAnonymous = anonymousUsers.indexOf(user) !== -1;
let prefix;
if (isAnonymous) {
prefix = '🟡';
} else {
let userRightsLogEventsObj = JSON.parse(request('https://' + currentLang + '.wikipedia.org/w/api.php?action=query&list=logevents&letype=rights&lelimit=500&letitle=User:' + user + '&format=json'));
let userRightsLogEvents = userRightsLogEventsObj["query"]["logevents"];
let usersObj = JSON.parse(request('https://' + currentLang + '.wikipedia.org/w/api.php?action=query&list=users&usprop=groups&ususers=' + user + '&format=json'));
let userGroups = (usersObj['query']['users'] && usersObj['query']['users'][0] && usersObj['query']['users'][0]['groups']) ? usersObj['query']['users'][0]['groups'] : [];
var isPatrol = userGroups.indexOf('editor') !== -1;
var isAutopatrol = userGroups.indexOf('autoreview') !== -1;
var isBot = userGroups.indexOf('bot') !== -1;
prefix = (isPatrol || isAutopatrol || isBot) ? '🟢' : '🟡';
}
userToElementsMap[user].forEach($element => {
$element.text(prefix + '️ ' + user);
});
processedUsers.push(user);
}
}
function request( URL ) {
var oRequest = new XMLHttpRequest();
oRequest.open('GET', URL, false);
oRequest.send(null);
return oRequest.responseText;
}
}