Користувач:Kanzat/HistoryPagePatrolHelper.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, внесені зміни.
// Включається на сторінках історії статей основного простору.
// Невідпатрульовані редагування від автопатрульних, патрульних та ботів підсвічуються зеленим. Усі інші жовтим.
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;
// using images instead of emojis in case emojis are not supported for some reason
let yellow = "https://github.githubassets.com/images/icons/emoji/unicode/1f7e1.png";
let green = "https://github.githubassets.com/images/icons/emoji/unicode/1f7e2.png";
if (isAnonymous) {
picture = yellow;
} else {
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;
var isSysop = userGroups.indexOf('sysop') !== -1;
picture = (isPatrol || isAutopatrol || isBot || isSysop) ? green : yellow;
}
userToElementsMap[user].forEach($element => {
$("<img>", { src : picture, style : "width: 18px; padding-right: 5px"}).insertBefore($element);
});
processedUsers.push(user);
}
}
function request( URL ) {
var oRequest = new XMLHttpRequest();
oRequest.open('GET', URL, false);
oRequest.send(null);
return oRequest.responseText;
}
}