Advertisement
penguinpal

paste for hypercane's hypoverse by the parrot potato

Jan 17th, 2017
421
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (function() {
  2.     var fn = {},
  3.         groups = {};
  4.     /* groups */
  5.     groups.staff = "Staff";
  6.     groups.bureaucrat = "Bureaucrat";
  7.     groups.senioradmin = "Senior Administrator";
  8.     groups.sysop = "Administrator";
  9.     groups.junioradmin = "Junior Administrator";
  10.     groups.rollback = "Rollbacker";
  11.     groups.autopatrolled = "Autopatrolled";
  12.     groups.bot = "Bot";
  13.     groups["bot-global"] = "Global Bot";
  14.    
  15.     /* functions */
  16.     fn.getUserGroups = function(user, cb) {
  17.         var a = new XMLHttpRequest(),
  18.             data,
  19.             users,
  20.             i0,
  21.             allgroups,
  22.             i1,
  23.             relevantGroups = [];
  24.         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);
  25.         a.onload = function() {
  26.             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
  27.             users = data.query.users;
  28.             for (i0 = 0; i0 < users.length; i0++) {
  29.                 if (users[i0].hasOwnProperty("userid")) {
  30.                     allgroups = users[i0].groups;
  31.                     for (i1 = 0; i1 < allgroups.length; i1++) {
  32.                         if (groups.hasOwnProperty(allgroups[i1])) {
  33.                             relevantGroups.push(groups[allgroups[i1]]);
  34.                         }
  35.                     }
  36.                 }
  37.                 break;
  38.             }
  39.             cb(relevantGroups);
  40.         }
  41.         a.send();
  42.     }
  43.     fn.makeTagList = function(requiredTags, cb) {
  44.         var nav,
  45.             tag,
  46.             i;
  47.         if (requiredTags.length > 0) {
  48.             nav = document.createElement("nav");
  49.             nav.id = "usertags-bar";
  50.             tag = document.createElement("span");
  51.             tag.className = "usertags-tag";
  52.             for (var i = 0; i < requiredTags.length; i++) {
  53.                 tag = tag.cloneNode();
  54.                 tag.setAttribute("data-usertag-label", requiredTags[i]);
  55.                 tag.textContent = requiredTags[i];
  56.                 nav.appendChild(tag);
  57.             }
  58.             cb(nav);
  59.         }
  60.     }
  61.     /* implement */
  62.     mw.util.addCSS(
  63.         '#usertags-bar {\n' +
  64.             '\tdisplay: inline;\n' +
  65.             '\tmargin-left: 10px;\n' +
  66.         '}\n' +
  67.         '.usertags-tag {\n' +
  68.             '\tpadding: 2px 4px;\n' +
  69.             '\tbackground: linear-gradient(to bottom, #eee, #ccc);\n' +
  70.             '\tborder: 1px solid #999;\n' +
  71.             '\tborder-radius: 4px;\n' +
  72.             '\tvertical-align: middle;\n' +
  73.             '\tfont-family: arial;\n' +
  74.             '\tfont-size: 14px;\n' +
  75.         '}\n' +
  76.         '.usertags-tag + .usertags-tag {\n' +
  77.             '\tmargin-left: 4px;\n' +
  78.         '}'
  79.     );
  80.     if ([2, 3].indexOf(mw.config.get("wgNamespaceNumber"))) {
  81.         // user page or user talk page
  82.         fn.getUserGroups(mw.config.get("wgTitle"), function(grouplist) {
  83.             fn.makeTagList(grouplist, function(usertags) {
  84.                 document.querySelector("#firstHeading").appendChild(usertags);
  85.             });
  86.         });
  87.     }
  88. }());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement