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.
/**
*
* @module MastheadRightsBadge
* @description Adds WDS avatar badges to user profiles.
* @author Americhino
* @version 1.0.0
* @license CC-BY-SA 3.0
*
*/
var mw = window.mw;
var $ = window.jQuery;
// User config variables
var config = window.MastheadRightsBadgeSettings || {};
var iconSize = config.iconSize || '50px';
// Variables
var $user = mw.config.get('wgTitle').split('/');
// Fetch MediaWiki API for user group badge messages, API fetch by Luqgreg
var api = new mw.Api();
function getMessages(msg) {
return new Promise(function(resolve, reject) {
api.get({
action: 'query',
meta: 'allmessages',
ammessages: msg.join("|"),
}).done(function (d) {
if(d.fail) reject(d);
var r = {};
d.query.allmessages.forEach(function(e) {
r[e.name] = e["*"];
});
resolve(r);
}).fail(reject);
});
}
getMessages([
"user-identity-box-group-sysop",
"user-identity-box-group-content-moderator",
"user-identity-box-group-threadmoderator",
"user-identity-box-group-chatmoderator",
"user-identity-box-group-staff",
"user-identity-box-group-helper",
"user-identity-box-group-soap",
"user-identity-box-group-global-discussions-moderator",
]).then(function(m) {
//
var title = {
'sysop': m["user-identity-box-group-sysop"],
'content-moderator': m["user-identity-box-group-content-moderator"],
'threadmoderator': m["user-identity-box-group-threadmoderator"],
'chatmoderator': m["user-identity-box-group-chatmoderator"],
'staff': m["user-identity-box-group-staff"],
'helper': m["user-identity-box-group-helper"],
'soap': m["user-identity-box-group-soap"],
'global-discussions-moderator': m["user-identity-box-group-global-discussions-moderator"]
};
// Z-Index variable: user group hierachy
var groupPriority = {
'sysop': '10070',
'content-moderator': '10060',
'threadmoderator': '10050',
'chatmoderator': '10040',
'staff': '10030',
'helper': '10020',
'soap': '10010',
'global-discussions-moderator': '10000',
};
// Fetch MediaWiki API for user group badges
api.get({
action: 'query',
list: 'users',
usprop: 'groups',
ususers: $user = $user[1] ? $user[1] : $user[0]
}).then(function (data) {
// Variables
var groups = (data.query.users[0] || {}).groups || [];
// User groups
var g = {
'sysop': 'admin',
'content-moderator': 'content-moderator',
'threadmoderator': 'discussion-moderator',
'chatmoderator': 'discussion-moderator',
'staff': 'staff',
'helper': 'helper',
'soap': 'vstf',
'global-discussions-moderator': 'global-discussions-moderator',
};
// Create badge
groups.forEach(function (group) {
mw.hook('dev.wds').add(function(wds) {
if (!g[group]) return;
if ($('.user-identity-box').length) {
$('.user-identity-box .user-identity-avatar').prepend(
$('<div>', {
'class': 'mastrightsbadge ' + 'mastrightsbadge-' + group,
'title': title[group],
css: {
height: iconSize,
position: 'absolute',
left: '0',
top: '0',
width: iconSize,
zIndex: groupPriority[group],
}
}).append(
$(window.dev.wds.badge(g[group]))
)
);
} else {
$('.UserProfileMasthead .masthead-avatar').prepend(
$('<div>', {
'class': 'mastrightsbadge ' + 'mastrightsbadge-' + group,
'title': title[group],
css: {
height: iconSize,
position: 'absolute',
left: '0',
top: '0',
width: iconSize,
zIndex: groupPriority[group],
}
}).append(
$(window.dev.wds.badge(g[group]))
)
);
}
});
});
});
});
// Import dependencies
window.importArticles(
{
type: 'script',
articles: ['u:dev:MediaWiki:WDSIcons/code.js']
},
{
type: 'style',
articles: ['u:dev:MediaWiki:MastheadRightsBadge.css']
}
);