User:Wetitpig0/MarkRights.js

维基百科,自由的百科全书

注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google ChromeFirefoxMicrosoft EdgeSafari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。

// 取自[[User:Vanished user 1929210/js/MarkRights.js]]

/**
 * MarkIPBE.js
 *
 * 在最近修改、监视列表、条目历史记录等位置以特殊格式显示有特殊权限的用户
 *
 */
$(function() {
	var t0 = performance.now();
	var $users = $('a.mw-userlink:not(.mw-anonuserlink)');
	var users = {};
	for (var j = 0; j < $users.length; j++) {
		users[$users[j].textContent] = true;
	}

	var queue1 = [], queue2 = [];
	var i = 0, k = 0;
	
	var filter = function(n) {
		return n;
	};

	var user;
	for (user in users) {
		queue1[i] = user;
		i++;
		if (i === 50) {
			queue1 = queue1.filter(filter);
			i = queue1.length;
			if (i === 50) {
				queue2[k] = queue1;
				queue1 = [];
				i = 0;
				k++;
			}
		}
	}
	if (queue1.length > 0) {
		queue1 = queue1.filter(filter);
		queue2[k] = queue1;
		k++;
	}

	var process = function(data) {
		var users;
		if (data.query && data.query.users) {
			users = data.query.users;
		} else {
			users = [];
		}
		for (var i = 0; i < users.length; i++) {
			var user = users[i];
			// 行政員
			if (user.groups.indexOf('bureaucrat') > -1) {
				$('a.mw-userlink[title="User:' + user.name + '"]').append('<sup style="color:black;">B</sup>');
			}
			// 用戶核查員
			if (user.groups.indexOf('checkuser') > -1) {
				$('a.mw-userlink[title="User:' + user.name + '"]').append('<sup style="color:purple;">C</sup>');
			}
			// 監督員
			if (user.groups.indexOf('oversight') > -1) {
				$('a.mw-userlink[title="User:' + user.name + '"]').append('<sup style="color:indigo;">O</sup>');
			}
			// 管理員
			if (user.groups.indexOf('sysop') > -1) {
				$('a.mw-userlink[title="User:' + user.name + '"]').append('<sup style="color:mediumvioletred;">A</sup>');
			}
			// 賬號創建者
			if (user.groups.indexOf('accountcreator') > -1) {
				$('a.mw-userlink[title="User:' + user.name + '"]').append('<sup style="color:Olive;">c</sup>');
			}
			// 大量信息發送者
			if (user.groups.indexOf('massmessage') > -1) {
				$('a.mw-userlink[title="User:' + user.name + '"]').append('<sup style="color:DeepPink;">M</sup>');
			}
			// 文件移動員
			if (user.groups.indexOf('filemove') > -1) {
				$('a.mw-userlink[title="User:' + user.name + '"]').append('<sup style="color:DarkMagenta;">F</sup>');
			}
			// 介面管理員
			if (user.groups.indexOf('interface-admin') > -1) {
				$('a.mw-userlink[title="User:' + user.name + '"]').append('<sup style="color:SlateGray;">1</sup>');
			}
			// 巡查員
			if (user.groups.indexOf('patroller') > -1) {
				$('a.mw-userlink[title="User:' + user.name + '"]').append('<sup style="color:sienna;">p</sup>');
			}
			// 回退員
			if (user.groups.indexOf('rollbacker') > -1) {
				$('a.mw-userlink[title="User:' + user.name + '"]').append('<sup style="color:saddlebrown;">r</sup>');
			}
			// 巡查豁免者
			if (user.groups.indexOf('autoreviewer') > -1) {
				$('a.mw-userlink[title="User:' + user.name + '"]').append('<sup style="color:chocolate;">a</sup>');
			}
			// IP封禁豁免者
			if (user.groups.indexOf('ipblock-exempt') > -1) {
				$('a.mw-userlink[title="User:' + user.name + '"]').append('<sup style="color:green;">E</sup>');
			}
			// 機器人
			if (user.groups.indexOf('bot') > -1) {
				$('a.mw-userlink[title="User:' + user.name + '"]').append('<sup style="color:Crimson;">b</sup>');
			}
			// 自動確認用戶
			if (user.groups.indexOf('autoconfirmed') > -1) {
				$('a.mw-userlink[title="User:' + user.name + '"]').append('<sup style="color:DodgerBlue;">t</sup>');
			}
		}
	};

	var api = new mw.Api();
	for (j = 0; j < k; j++) {
		api.get({
			format: 'json',
			action: 'query',
			list: 'users',
			usprop: 'groups',
			ususers: queue2[j].join('|')
		}).done(process);
	}
	
	console.log(performance.now() - t0);
});