Note: After publishing, 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 (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
/*
* PiniginsUserInfo.js (c) 2017-2019, Maksim Pinigin
* Creates the "Special:UserInfo" page, which allows you to view a little information about the user
*/
(function($, mw) {
'use strict';
var config = mw.config.get([
'wgTitle',
'wgSiteName',
'wgNamespaceNumber',
'wgRelevantUserName'
]);
if (!(
(config.wgNamespaceNumber === -1 && config.wgTitle === 'UserInfo') ||
(config.wgNamespaceNumber === 2 && config.wgRelevantUserName))) return;
var input, info, msg;
function addEntry(data, label, value, join) {
var text = '';
var v = data.query.users[0][value];
if (v) {
text += join ? v.join(', ') : v;
}
document.getElementById('PUI-' + value).textContent = text;
}
function getUserInfo() {
mw.loader.using('mediawiki.api').then(function() {
var username = input.value;
info.innerHTML = '';
new mw.Api().get({
action: 'query',
list: 'users',
ususers: username,
usprop: 'registration|gender|editcount|blockinfo|groups',
formatversion: 2
}).done(function(data) {
if (data.query.users[0].missing || data.query.users[0].invalid || username === '') {
info.innerHTML = '<br><b>' + msg('enterUsername').escape() + '</b>';
} else {
info.innerHTML =
'<br><b>' + msg('id').escape() + '</b> <span id="PUI-userid"></span>' +
'<br><b>' + msg('username').escape() + '</b> <span id="PUI-name"></span>' +
'<br><b>' + msg('editcount').escape() + '</b> <span id="PUI-editcount"></span>' +
'<br><b>' + msg('dateRegistered').escape() + '</b> <span id="PUI-registration"></span>' +
'<br><b>' + msg('gender').escape() + '</b> <span id="PUI-gender"></span>' +
'<br><b>' + msg('groups').escape() + '</b> <span id="PUI-groups"></span>';
addEntry(data, msg('id').escape(), 'userid');
addEntry(data, msg('username').escape(), 'name');
addEntry(data, msg('editcount').escape(), 'editcount');
addEntry(data, msg('dateRegistered').escape(), 'registration');
addEntry(data, msg('gender').escape(), 'gender');
addEntry(data, msg('groups').escape(), 'groups', true);
}
});
});
}
function init() {
var header = document.getElementById('firstHeading');
document.title = document.title.replace(header.innerText, msg('userInfo').plain());
header.textContent = msg('userInfo').plain();
document.getElementById('mw-content-text').innerHTML = '';
input = document.createElement('input');
input.type = 'text';
input.placeholder = 'Username';
var button = document.createElement('button');
button.innerText = msg('getInfo').plain();
button.addEventListener('click', getUserInfo);
info = document.createElement('div');
document.getElementById('mw-content-text').append(input, button, info);
if (location.hash.replace('#', '') !== '') {
input.value = location.hash.replace('#', '');
getUserInfo();
}
}
function addTool() {
mw.loader.using('mediawiki.util').then(function() {
var urlWithHash = './Special:UserInfo#' + mw.util.wikiUrlencode(config.wgRelevantUserName);
$('<li>', { id: 'userinfo' })
.html('<a href="' + urlWithHash + '">' + msg('userInfo').escape() + '</a>')
.prependTo('.toolbar .tools');
});
}
mw.hook('dev.i18n').add(function(i18n) {
i18n.loadMessages('PiniginsUserInfo').done(function(i18no) {
msg = i18no.msg;
if (config.wgNamespaceNumber === -1) init();
if (config.wgNamespaceNumber === 2) addTool();
});
});
window.importArticle({
type: 'script',
article: 'u:dev:MediaWiki:I18n-js/code.js'
});
})(window.jQuery, window.mediaWiki);