MediaWiki:Gadget-UserDetails.js: Difference between revisions

From Zelda Dungeon Wiki
Jump to navigation Jump to search
Want an adless experience? Log in or Create an account.
mNo edit summary
mNo edit summary
Line 16: Line 16:
*/
*/


/* default behavior shows edit count in header, rest in tooltip. Displays blocked user notice in header if user is blocked.*/
/* default behavior */
var showUserGroupSettings = {
var showUserGroupSettings = {
   'IP':false,
   'IP':false,
   'unregistered':false,
   'unregistered':true,
   'registered':false,
   'registered':false,
   'groups': false,
   'groups': false,

Revision as of 23:53, October 2, 2012

/* 
Options:
* Now supports an option system. 
* By setting a datalet true it shows in the header instead of the title.
* Note, all are assumed false if omitted. All but 'groups' are assumed false if undefined.
var showUserGroupSettings = {
  'IP':true,
  'unregistered':true,
  'registered':true,
  'groups': true,
  'groupless': true,
  'editcount':true,
  'regdate':true,
  'blocked':true
};
*/

/* default behavior */
var showUserGroupSettings = {
  'IP':false,
  'unregistered':true,
  'registered':false,
  'groups': false,
  'groupless': false,
  'editcount':true,
  'regdate':false,
  'blocked':true
};

if((wgNamespaceNumber == 2 || wgNamespaceNumber == 3) && wgTitle.indexOf('/') == -1 && (wgAction != 'edit' || wgAction != 'submit')) addOnloadHook(showUserGroups)
function showUserGroups() {
  var url = wgServer + wgScriptPath + '/api.php?action=query&format=json&callback=showUserGroupsCB&maxage=3600&smaxage=3600&usprop=blockinfo|groups|editcount|registration&list=users&ususers=' + encodeURIComponent(wgTitle);
  importScriptURI(url);
}
 
function showUserGroupsCB(obj) {
  var show = window.showUserGroupSettings || false;
  if(!obj['query'] || !obj['query']['users']) return
  var user = obj['query']['users'];
  if(user.length == 0) return
  user = user[0];
  var someHeading = document.getElementsByTagName('h1')[0] || document.getElementsByTagName('h2')[0]
  if(!someHeading) return
 
  var span = document.createElement('span');
  var title = 'User:' + user['name'] + ' ';
  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']) {
      if(show && show.groups || !show) text += '[user,' + user['groups'] + '] '
      else title += '[user,' + user['groups'] + '] '
    } else {
      if(show && show.groupless) text += '[user] '
      else title += '[user] '
    }
    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] '
    }
  }
 
  span.setAttribute('class','detected-userdetails');
  span.appendChild(document.createTextNode(text));
  someHeading.appendChild(span);
  someHeading.setAttribute('title',title);
  someHeading.className += ' detected-userdetails-heading';
}