Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function() {
- var fn = {},
- groups = {};
- /* groups */
- groups.staff = "Staff";
- groups.bureaucrat = "Bureaucrat";
- groups.senioradmin = "Senior Administrator";
- groups.sysop = "Administrator";
- groups.junioradmin = "Junior Administrator";
- groups.rollback = "Rollbacker";
- groups.autopatrolled = "Autopatrolled";
- groups.bot = "Bot";
- groups["bot-global"] = "Global Bot";
- /* functions */
- fn.getUserGroups = function(user, cb) {
- var a = new XMLHttpRequest(),
- data,
- users,
- i0,
- allgroups,
- i1,
- relevantGroups = [];
- a.open("GET", mw.config.get("wgScriptPath") + "/api.php?action=query&format=json&list=users&usprop=groups&ususers=" + encodeURIComponent(user) + "&cb=" + new Date().getTime(), true);
- a.onload = function() {
- data = JSON.parse(a.responseText.replace(/^\<\!\-{2}[^\>]*?\-{2}\>\s*/, "")); // lol hyper told me that this nub staff member added a comment that appears even for format=json. gg :p
- users = data.query.users;
- for (i0 = 0; i0 < users.length; i0++) {
- if (users[i0].hasOwnProperty("userid")) {
- allgroups = users[i0].groups;
- for (i1 = 0; i1 < allgroups.length; i1++) {
- if (groups.hasOwnProperty(allgroups[i1])) {
- relevantGroups.push(groups[allgroups[i1]]);
- }
- }
- }
- break;
- }
- cb(relevantGroups);
- }
- a.send();
- }
- fn.makeTagList = function(requiredTags, cb) {
- var nav,
- tag,
- i;
- if (requiredTags.length > 0) {
- nav = document.createElement("nav");
- nav.id = "usertags-bar";
- tag = document.createElement("span");
- tag.className = "usertags-tag";
- for (var i = 0; i < requiredTags.length; i++) {
- tag = tag.cloneNode();
- tag.setAttribute("data-usertag-label", requiredTags[i]);
- tag.textContent = requiredTags[i];
- nav.appendChild(tag);
- }
- cb(nav);
- }
- }
- /* implement */
- mw.util.addCSS(
- '#usertags-bar {\n' +
- '\tdisplay: inline;\n' +
- '\tmargin-left: 10px;\n' +
- '}\n' +
- '.usertags-tag {\n' +
- '\tpadding: 2px 4px;\n' +
- '\tbackground: linear-gradient(to bottom, #eee, #ccc);\n' +
- '\tborder: 1px solid #999;\n' +
- '\tborder-radius: 4px;\n' +
- '\tvertical-align: middle;\n' +
- '\tfont-family: arial;\n' +
- '\tfont-size: 14px;\n' +
- '}\n' +
- '.usertags-tag + .usertags-tag {\n' +
- '\tmargin-left: 4px;\n' +
- '}'
- );
- if ([2, 3].indexOf(mw.config.get("wgNamespaceNumber"))) {
- // user page or user talk page
- fn.getUserGroups(mw.config.get("wgTitle"), function(grouplist) {
- fn.makeTagList(grouplist, function(usertags) {
- document.querySelector("#firstHeading").appendChild(usertags);
- });
- });
- }
- }());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement