MediaWiki:Gadget-UserDetails.js: Difference between revisions
Want an adless experience? Log in or Create an account.
(Created page) |
(loadScript is 1.33+. trying mw.api (seems like a better way anyway)) |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 4: | Line 4: | ||
* By setting a datalet true it shows in the header instead of the title. | * 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. | * Note, all are assumed false if omitted. All but 'groups' are assumed false if undefined. | ||
*/ | */ | ||
var showUserGroupSettings = { | var showUserGroupSettings = { | ||
'IP':false, | 'IP': false, | ||
'unregistered': | 'unregistered': true, | ||
'registered':false, | 'registered': false, | ||
'groups': false, | 'groups': false, | ||
'groupless': false, | 'groupless': false, | ||
'editcount':true, | 'editcount': true, | ||
'regdate':false, | 'regdate': false, | ||
'blocked':true | 'blocked': true | ||
}; | }; | ||
if((wgNamespaceNumber == 2 || wgNamespaceNumber == 3) && wgTitle.indexOf('/') == -1 && (wgAction != 'edit' | 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() { | function showUserGroups() { | ||
var | mw.loader.using(['mediawiki.api']).then(function() { | ||
var api = new mw.Api(); | |||
} | api.get({ | ||
action: 'query', | |||
function | 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'; | |||
}); | |||
}); | |||
} | } |
Latest revision as of 01:10, June 21, 2020
/* 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'; }); }); }