Перейти до вмісту

Користувач: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;
	}
}