Користувач:Andriy.v/Gadget-markadmins.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
function markUsers(data, sysops, bureaucrats, checkusers, interface_admins, suppressors){
	var body, lnk, href, title, mm, user, mark, i, k;
	if (!(body = document.getElementById('bodyContent'))) return;
	var links = body.getElementsByTagName('A');
	var userArg;
	for (i=0; i<links.length; i++){
		lnk = links[i];
		if (!lnk.title || ! (mm=lnk.title.match('(?:Користувач|Користувачка):(.*)')))
			continue;
		try {
			userArg = decodeURIComponent(mm[1]).replace(" (ще не написана)", "");
		} catch (e) { // could not decode (Uncaught URIError: URI malformed)
			userArg = mm[1].replace(" (ще не написана)", "");
		}
		user = userArg;
		for (k in bureaucrats){
			if (bureaucrats[k].name.indexOf(user) > -1) {
				mark = document.createElement('b');
				mark.appendChild(document.createTextNode('(B)'));
				lnk.title += data.userSetTip.B;
				lnk.appendChild(mark);
			}
		}
		for (k in sysops){
			if (sysops[k].name.indexOf(user) > -1) {
				mark = document.createElement('b');
				mark.appendChild(document.createTextNode('(A)'));
				lnk.title += data.userSetTip.A;
				lnk.appendChild(mark);
			}
		}
		for (k in checkusers){
			if (checkusers[k].name.indexOf(user) > -1) {
				mark = document.createElement('b');
				mark.appendChild(document.createTextNode('(CU)'));
				lnk.title += data.userSetTip.CU;
				lnk.appendChild(mark);
			}
		}
		for (k in interface_admins){
			if (interface_admins[k].name.indexOf(user) > -1) {
				mark = document.createElement('b');
				mark.appendChild(document.createTextNode('(IA)'));
				lnk.title += data.userSetTip.IA;
				lnk.appendChild(mark);
			}
		}
		for (k in suppressors){
			if (suppressors[k].name.indexOf(user) > -1) {
				mark = document.createElement('b');
				mark.appendChild(document.createTextNode('(B)'));
				lnk.title += data.userSetTip.OS;
				lnk.appendChild(mark);
			}
		}
	}
}
$.getJSON(mw.config.get('wgScriptPath')+'/index.php?action=raw&ctype=application/json&title=MediaWiki:Gadget-markadmins.json', function(data){
	var params = {
		action: 'query',
		format: 'json',
		list: 'allusers',
		augroup: 'sysop',
		aulimit: 70
	},
	api = new mw.Api();
	api.get( params ).done( function ( data_s ) {
		var sysops = data_s.query.allusers;
		var params = {
			action: 'query',
			format: 'json',
			list: 'allusers',
			augroup: 'bureaucrat',
		};
		api.get( params ).done( function ( data_b ) {
			var bureaucrats = data_b.query.allusers;
			var params = {
				action: 'query',
				format: 'json',
				list: 'allusers',
				augroup: 'checkuser',
			};
			api.get( params ).done( function ( data_c ) {
				var checkusers = data_c.query.allusers;
				var params = {
					action: 'query',
					format: 'json',
					list: 'allusers',
					augroup: 'interface-admin',
				};
				api.get( params ).done( function ( data_i ) {
					var interface_admins = data_i.query.allusers;
					var params = {
						action: 'query',
						format: 'json',
						list: 'allusers',
						augroup: 'suppress',
					};
					api.get( params ).done( function ( data_o ) {
						var suppressors = data_o.query.allusers;
						markUsers(data, sysops, bureaucrats, checkusers, interface_admins, suppressors);
					});
				});
			});
		});
	});
});