User:Equazcion/sysopdetector.js

//

/* Modified version of User:Splarka/sysopdectector.js

Sysop decrier/detector (rights group displayer), version [0.2.0a]

Originally from http://en.wikipedia.org/wiki/User:Splarka/sysopdectector.js

Options:

  • All are assumed false if omitted. All but 'groups' are assumed false if undefined.

var showUserGroupSettings = {

'IP':true,

'unregistered':true,

'registered':true,

'groups': true,

'editcount':true,

'regdate':true,

'blocked':true

};

  • /

if ((mw.config.get('wgNamespaceNumber') == 2 || mw.config.get('wgNamespaceNumber') == 3) && (mw.config.get('wgTitle').indexOf('/') == -1) && (mw.config.get('wgAction') == 'view')) {

$(showUserGroups);

}

function showUserGroups() {

var url = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=query&format=json&callback=showUserGroupsCB&maxage=3600&smaxage=3600&usprop=blockinfo|groups|editcount|registration&list=users&ususers=' + encodeURIComponent(mw.config.get('wgTitle'));

mw.loader.load(url);

}

function showUserGroupsCB(obj) {

var show = window.showUserGroupSettings || false;

if ( obj['query'] && obj['query']['users'] ) { var user = obj['query']['users']; } else { return; }

if ( user.length > 0 ) { user = user[0]; } else { return; }

if ( $('h1, h2').length > 0) { var someHeading = $('h1:first') || $('h2:first'); } else { return; }

var title = 'User:' + user['name'] + ' ';

someHeading.attr('title', title).addClass('detected-userrights-heading');

var text = ' ';

if (user['invalid'] == '') {

if (show && show.IP) text += '[IP] ';

else title += '[invalid or IP username] ';

} else if (user['missing'] == '') {

if (show && show.unregistered) text += '[doesn\'t exist] ';

else title += '[not a registered name] ';

} else {

if (show && show.registered) text += '[exists] ';

else title += '[username registered] ';

if (user['groups']) {

user['groups'].splice( user['groups'].indexOf('user') , 1);

user['groups'].splice( user['groups'].indexOf('*') , 1);

if ((show && show.groups || !show) && (user['groups'].length > 1)) {

text += ('[' + user['groups'] + '] ').replace(/,/gi, ", ");

} else {

title += '[' + user['groups'] + '] ';

}

}

if ( user['editcount'] ) {

if (show && show.editcount) text += '[' + user['editcount'] + ' edits] ';

else title += '[' + user['editcount'] + ' edits] ';

}

if ( user['registration'] ) {

if (show && show.regdate) text += '[created: ' + user['registration'].split('T')[0] + '] ';

else title += '[created: ' + user['registration'] + '] ';

}

if ( user['blockedby'] ) {

if (show && show.blocked) text += '[blocked] ';

else text += '[currently blocked] ';

}

}

var span = $('', {

'text': text,

'style':'font-size:80%;',

'class':'detected-userrights'

}).appendTo(someHeading);

}

//