Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

User:Bosco/markadmins.js: Difference between revisions

From WikiOasis Meta
mNo edit summary
Tag: Reverted
m Undid revisions from 3553 to 2367 // AdvancedRollback
Tags: Undo Reverted
Line 6: Line 6:


var userSetTips = {
var userSetTips = {
    'A'   : 'administrator',
'A' : 'administrator',
    'B'   : 'bureaucrat',
'B' : 'bureaucrat',
    'CSS' : 'Community Support and Safety',
'CSS': 'Community Support and Safety',
    'CU' : 'checkuser',
'CU': 'checkuser',
    'EA'  : 'electionadmin',
'IA': 'interface administrator',
    'GS'  : 'global-sysop',
'OS': 'oversight',
    'IA' : 'interface administrator',
'Rb': 'rollback',
    'OS' : 'oversight',
'S' : 'staff',
    'P'  : 'patroller',
'SW' : 'steward',
    'Rb' : 'rollback',
'SA': 'system administrator',
    'S'   : 'staff',
    'SW' : 'steward',
    'SA' : 'system administrator',
    'TAV' : 'temporary-account-viewer'
};
};


function addCSS(css) {
function addCSS(css) {
    var styleElem = document.createElement('style');
var styleElem = document.createElement('style');
    styleElem.appendChild(document.createTextNode(css));
styleElem.appendChild(document.createTextNode(css));
    document.getElementsByTagName('head')[0].appendChild(styleElem);
document.getElementsByTagName('head')[0].appendChild(styleElem);
}
}


function markadmins($content) {
function markadmins($content) {
    if (!$content.length) return;
if (!$content.length) return;
    runNum++;
runNum++;
    if (runNum === 1) {
if (runNum === 1) {
        addCSS(
addCSS(
            'tt.userflags { color:#0645ad; }' +
'tt.userflags { color:#0645ad; }' +
            '.userflags-wrapper { -moz-user-select:none; }' +
'.userflags-wrapper { -moz-user-select:none; }' +
            '.userflags-none { display: none; }'
'.userflags-none { display: none; }'
        );
);
    }
}
   
    var $links = $content.find('a[title^="User"], a[title^="Talk"]');
var $links = $content.find('a[title^="User"], a[title^="Talk"]');
   
    if (runNum === 2) {
if (runNum === 2) {
        if ($links.length === prevLinksCount) {
if ($links.length === prevLinksCount) {
            return;
return;
        } else {
} else {
            if ($links.length > prevLinksCount) {
if ($links.length > prevLinksCount) {
                $links = $links.slice(prevLinksCount);
$links = $links.slice(prevLinksCount);
            } else {
} else {
                var msg = 'MediaWiki:Gadget-markadmins.js: Нестандартная ситуация: количество ссылок на втором проходе (' + $links.length + ') меньше, чем на первом (' + prevLinksCount + '). Снова обходим все ссылки.';
var msg = 'MediaWiki:Gadget-markadmins.js: Нестандартная ситуация: количество ссылок на втором проходе (' + $links.length + ') меньше, чем на первом (' + prevLinksCount + '). Снова обходим все ссылки.';
                if (console.info) {
if (console.info) {
                    console.info(msg);
console.info(msg);
                } else {
} else {
                    console.log(msg);
console.log(msg);
                }
}
            }
}
        }
}
    }
}


    new mw.Api().get({
new mw.Api().get({
        action: 'query',
action: 'query',
        list: 'allusers',
list: 'allusers',
        augroup: 'sysop|bureaucrat|safety|checkuser|electionadmin|global-sysop|interface-admin|suppress|patroller|rollback|staff|steward|sysadmin|temporary-account-viewer',
augroup: 'sysop|bureaucrat|safety|checkuser|interface-admin|suppress|rollback|staff|steward|sysadmin',
        auprop: 'groups',
auprop: 'groups',
        aulimit: 500,
aulimit: 500,
        format: 'json',
format: 'json',
        formatversion: 2
formatversion: 2
    }).done(function(ans) {
}).done(function(ans) {
        var list = ans.query.allusers,
var list = ans.query.allusers,
            groups = [
groups = ['sysop', 'bureaucrat', 'safety', 'checkuser', 'interface-admin', 'suppress', 'rollback', 'staff', 'steward', 'sysadmin'],
                'sysop','bureaucrat','safety','checkuser','electionadmin','global-sysop','interface-admin','suppress','patroller','rollback','staff','steward','sysadmin','temporary-account-viewer'
key = ['A', 'B', 'CSS', 'CU', 'IA', 'OS', 'Rb', 'S', 'SW', 'SA'],
            ],
userSet = {};
            key = ['A','B','CSS','CU','EA','GS','IA','OS','P','Rb','S','SW','SA','TAV'],
            userSet = {};
for (var i = 0; i < key.length; i++) {
           
userSet[key[i]] = [];
        for (var i = 0; i < key.length; i++) {
}
            userSet[key[i]] = [];
        }
for (var i = 0; i < list.length; i++) {
       
for (var j = 0; j < groups.length; j++) {
        for (var i = 0; i < list.length; i++) {
if (list[i].groups.includes(groups[j])) {
            for (var j = 0; j < groups.length; j++) {
userSet[key[j]].push(list[i].name);
                if (list[i].groups.includes(groups[j])) {
}
                    userSet[key[j]].push(list[i].name);
}
                }
}
            }
        }
$links.each(function (i, link) {
       
if (!link.parentNode ||
        $links.each(function (i, link) {
(/[?#]/.test(link.href) && link.href.indexOf('redlink=1') === -1) ||
            if (!link.parentNode ||
(link.parentElement && link.parentElement.className === 'cancelLink')
                (/[?#]/.test(link.href) && link.href.indexOf('redlink=1') === -1) ||
) {
                (link.parentElement && link.parentElement.className === 'cancelLink')
return;
            ) {
}
                return;
            }
var matches, user, flags = [], tips = [], flag;
   
matches = /^User:(.+)|Talk:(.+)/.exec(link.title);
            var matches, user, flags = [], tips = [], flag;
if (!matches) return;
            matches = /^User:(.+)|Talk:(.+)/.exec(link.title);
if (matches[2]) {
            if (!matches) return;
if ($(link).parent().hasClass('mw-usertoollinks') || link.textContent.match(/обс/i)) return;
            if (matches[2]) {
matches[1] = matches[2];
                if ($(link).parent().hasClass('mw-usertoollinks') || link.textContent.match(/обс/i)) return;
} else if (!matches[1]) {
                matches[1] = matches[2];
return;
            } else if (!matches[1]) {
}
                return;
            }
user = decodeURIComponent(matches[1]);
           
if (link.href.indexOf('redlink=1') !== -1) {
            user = decodeURIComponent(matches[1]);
user = user.replace(/ \([^\)]+\)$/, '');
            if (link.href.indexOf('redlink=1') !== -1) {
}
                user = user.replace(/ \([^\)]+\)$/, '');
            }
for (flag in userSet) {
           
if (userSet[flag].indexOf(user) !== -1 && userSetTips[flag]) {
            for (flag in userSet) {
flags.push(flag);
                if (userSet[flag].indexOf(user) !== -1 && userSetTips[flag]) {
tips.push(userSetTips[flag]);
                    flags.push(flag);
}
                    tips.push(userSetTips[flag]);
}
                }
if (!flags.length) return;
            }
            if (!flags.length) return;
tips = ' (' + tips.join(', ') + ')';
           
            tips = ' (' + tips.join(', ') + ')';
var spanElem = document.createElement('span');
           
spanElem.className = 'userflags-wrapper';
            var spanElem = document.createElement('span');
var nbspElem = document.createTextNode('\u00A0');
            spanElem.className = 'userflags-wrapper';
var ttElem = document.createElement('tt');
            var nbspElem = document.createTextNode('\u00A0');
ttElem.className = 'userflags';
            var ttElem = document.createElement('tt');
ttElem.title = tips;
            ttElem.className = 'userflags';
var flagsElem = document.createTextNode('(' + flags.join(',') + ')');
            ttElem.title = tips;
            var flagsElem = document.createTextNode('(' + flags.join(',') + ')');
ttElem.appendChild(flagsElem);
   
spanElem.appendChild(nbspElem);
            ttElem.appendChild(flagsElem);
spanElem.appendChild(ttElem);
            spanElem.appendChild(nbspElem);
            spanElem.appendChild(ttElem);
link.parentNode.insertBefore(spanElem, link.nextSibling);
   
link.title = link.title + tips;
            link.parentNode.insertBefore(spanElem, link.nextSibling);
});
            link.title = link.title + tips;
});
        });
    });


    prevLinksCount = $links.length;
prevLinksCount = $links.length;
}
}


Cookies help us deliver our services. By using our services, you agree to our use of cookies.