跳转到内容

User:小躍/markRight.js

维基百科,自由的百科全书
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google ChromeFirefoxMicrosoft EdgeSafari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
/*
 取自 oldid=46107689 markIPBE.js 原作者:逆襲的天邪鬼
 在最近修改、监视列表、条目历史记录等位置以特殊格式显示有特殊权限的用户
 
 更新項目:
	1.項目矩陣
	2.用顏色標記權限並提示該標記的權限名稱
	3.權限用for 迴圈重複操作來呈現,並設定上限
	4.不僅限於IPBE用戶。
	5.支援顯示最近更改的按鈕
 更新者:小躍
 */

$(function () {
    var markRight = function () {
        var $users = $('a.mw-userlink:not(.mw-anonuserlink)');
        var users = {};
        $users.each(function (index, link) {
            users[link.textContent] = true;
        });

        var queue1 = [];
        var queue2 = [];
        var i=0, n=0;
        for (var user in users) {
            queue1.push(user);
            i++;
            if (i === 50) {
                queue2.push(queue1);
                queue1 = [];
                n++;
                i = 0;
            }
        }
        if (queue1.length > 0) {
            queue2.push(queue1);
            n++;
        }
        var sysoplist = []; var bureaucratlist = []; var culist = []; var oslist = [];
        var plist = []; var rlist = []; var alist = []; var ipbelist = [];
        var aclist=[]; var autoclist=[]; var iadlist=[];
        
        var memberlist=[sysoplist,bureaucratlist,culist,oslist,plist,rlist,alist,ipbelist,aclist,autoclist,iadlist];
        var membername=['sysop','bureaucrat','interface-admin','oversight','patroller','rollbacker','autoreviewer','ipblock-exempt','accountcreator','massmessage','autoconfirmed'];
        var membertag=['red','orange','yellow','#66FF59','#006400','blue','#004D99','purple','#000','sliver','#882200'];

        var done = function () {
        	var k;
            var j;
            for(k=0;k<memberlist.length;k++){
            	for (j=0; j<memberlist[k].length; j++) {
                	$('a.mw-userlink[title="User:' + memberlist[k][j] + '"]')
                	.append('<sup style="color:'+membertag[k]+';background-color:#eee" title="'+membername[k]+'">♥</sup>');
            	}
            }
            
        };

        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) {
                	var m=0;
                	for(m=0;m<memberlist.length;m++){
                		if (user.groups.indexOf(membername[m]) > -1) {
                        	memberlist[m].push(user.name);
                    	}	
        			}
                }
            }

            n--;
            if (n <= 0) {
                done();
            }
        };

        var api = new mw.Api();
        for (var j=0; j<queue2.length; j++) {
            api.get({
                format: 'json',
                action: 'query',
                list: 'users',
                usprop: 'groups',
                ususers: queue2[j].join('|')
            }).done(process);
        }
    };
    if(mw.config.get('wgPageName')=='Special:用户列表'){}else{
    markRight();
    $('.oo-ui-flaggedElement-progressive.oo-ui-buttonWidget > a').click(
    	function(){
    		setTimeout(function(){markRight()},7000);
    	}
    );
    }
});