MediaWiki:Gadget-UserDetails.js

From Zelda Dungeon Wiki
Jump to navigation Jump to search
Want an adless experience? Log in or Create an account.

Note: After saving, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: hold Shift while clicking Reload, or press either Ctrl+F5 or Ctrl+R (Command+R on a Mac)
  • Google Chrome: press Ctrl+Shift+R (Command+Shift+R on a Mac)
  • Internet Explorer: hold Ctrl while clicking Refresh, or press Ctrl+F5
  • Konqueror: click Reload or press F5
  • Opera: clear the cache in Tools → Preferences
/* 
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': false,
  'unregistered': true,
  'registered': false,
  'groups': false,
  'groupless': false,
  'editcount': true,
  'regdate': false,
  'blocked': true
};

if((mw.config.get('wgNamespaceNumber') == 2 || mw.config.get('wgNamespaceNumber') == 3) &&
  mw.config.get('wgTitle').indexOf('/') == -1 &&
  mw.config.get('wgAction') != 'edit' &&
  mw.config.get('wgAction') != 'submit') {
  $(showUserGroups);
}

function showUserGroups() {
  mw.loader.using(['mediawiki.api']).then(function() {
    var api = new mw.Api();
    api.get({
      action: 'query',
      list: 'users',
      usprop: ['blockinfo', 'groups', 'editcount', 'registration'],
      ususers: mw.config.get('wgTitle')
    }).done(function(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';
    });
  });
}