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 58: Line 58:
     if(user['groups']) {
     if(user['groups']) {
       if(show && show.groups || !show) text += '[user,' + user['groups'] + '] '
       if(show && show.groups || !show) text += '[user,' + user['groups'] + '] '
       else title += '[user,' + user['groups'] + '] '
       else title += '[' + user['groups'] + '] '
     } else {
     } else {
       if(show && show.groupless) text += '[user] '
       if(show && show.groupless) text += '[user] '

Revision as of 00:26, October 3, 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['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';
}