Користувач:Kanzat/HistoryPagePatrolHelper.js

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.

  • Firefox / Safari: тримайте Shift, коли натискаєте Оновити, або натисніть Ctrl-F5 чи Ctrl-Shift-R (⌘-R на Apple Mac)
  • Google Chrome: натисніть Ctrl-Shift-R (⌘-Shift-R на Apple Mac)
  • Internet Explorer / Edge: тримайте Ctrl, коли натискаєте Оновити, або натисніть Ctrl-F5
  • Opera: натисніть 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;
	}
}