MediaWiki:Common.js: Difference between revisions
MediaWiki interface page
More actions
Bartolumiu (talk | contribs) Created page with "→Any JavaScript here will be loaded for all users on every page load.: →--- Auto-Generate MangaDex Role Badges ---: mw.loader.using(['mediawiki.api']).then(function () { // 1. Get the username of the profile being viewed var targetUser = mw.config.get('wgRelevantUserName'); // 2. Stop if we aren't looking at a User page if (!targetUser) return; // 3. Ask the database for their true, unfakeable groups var api = new mw.Api(); api.g..." |
Bartolumiu (talk | contribs) No edit summary |
||
| Line 2: | Line 2: | ||
/* --- Auto-Generate MangaDex Role Badges --- */ | /* --- Auto-Generate MangaDex Role Badges --- */ | ||
mw.loader.using(['mediawiki.api']).then(function () { | mw.loader.using(['mediawiki.api']).then(function () { | ||
var targetUser = mw.config.get('wgRelevantUserName'); | var targetUser = mw.config.get('wgRelevantUserName'); | ||
if (!targetUser) return; | if (!targetUser) return; | ||
var api = new mw.Api(); | var api = new mw.Api(); | ||
api.get({ | api.get({ | ||
| Line 20: | Line 17: | ||
var groups = users[0].groups; | var groups = users[0].groups; | ||
var roleMap = { | var roleMap = { | ||
'sysop': { text: 'Wiki Admin', class: 'md-role-admin' }, | 'sysop': { text: 'Wiki Admin', class: 'md-role-admin' }, | ||
| Line 44: | Line 38: | ||
var hasBadges = false; | var hasBadges = false; | ||
groups.forEach(function(group) { | groups.forEach(function(group) { | ||
if (roleMap[group]) { | if (roleMap[group]) { | ||
| Line 55: | Line 48: | ||
}); | }); | ||
if (hasBadges) { | if (hasBadges) { | ||
$('#bodyContent').prepend($badgeContainer); | $('#bodyContent').prepend($badgeContainer); | ||
Latest revision as of 15:19, 21 April 2026
/* Any JavaScript here will be loaded for all users on every page load. */
/* --- Auto-Generate MangaDex Role Badges --- */
mw.loader.using(['mediawiki.api']).then(function () {
var targetUser = mw.config.get('wgRelevantUserName');
if (!targetUser) return;
var api = new mw.Api();
api.get({
action: 'query',
list: 'users',
ususers: targetUser,
usprop: 'groups'
}).done(function (data) {
var users = data.query.users;
if (!users || !users[0] || !users[0].groups) return;
var groups = users[0].groups;
var roleMap = {
'sysop': { text: 'Wiki Admin', class: 'md-role-admin' },
'wiki_editor': { text: 'Wiki Editor', class: 'md-role-wiki-editor' },
'admin': { text: 'Admin', class: 'md-role-admin' },
'developer': { text: 'Developer', class: 'md-role-developer' },
'global_moderator': { text: 'Global Moderator', class: 'md-role-global-moderator' },
'forum_moderator': { text: 'Forum Moderator', class: 'md-role-forum-moderator' },
'public_relations': { text: 'Public Relations', class: 'md-role-public-relations' },
'designer': { text: 'Designer', class: 'md-role-designer' },
'staff': { text: 'Staff', class: 'md-role-staff' },
'knights_of_dex': { text: 'Knights of Dex', class: 'md-role-knights-of-dex' },
'contributor': { text: 'Contributor', class: 'md-role-contributor' },
'power_uploader': { text: 'Power Uploader', class: 'md-role-power' },
'group_leader': { text: 'Group Leader', class: 'md-role-leader' }
};
var $badgeContainer = $('<div>').css({ 'margin-bottom': '1.5rem', 'margin-top': '-0.5rem' });
var hasBadges = false;
groups.forEach(function(group) {
if (roleMap[group]) {
var $badge = $('<span>')
.addClass('md-role-badge ' + roleMap[group].class)
.text(roleMap[group].text);
$badgeContainer.append($badge);
hasBadges = true;
}
});
if (hasBadges) {
$('#bodyContent').prepend($badgeContainer);
}
});
});