Jump to content

User:Scray/user-rights.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Scray (talk | contribs) at 17:27, 24 June 2013 (copied from {{user|MastCell}} - looks very useful). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/* 
 * User rights script
 * By MastCell (copied to my page with great appreciation)
 * ------------------
 * Adds information on user rights (sysop, checkuser, etc) to the heading on user pages.
 * Heavily borrowed and lightly adapted from User:Splarka/sysopdectector.js
 */
 
 
/* 
 * Namespace check: Add user rights info if this is a userpage or talkpage
 * If this is a user or usertalk subpage (e.g. "User:Example/subpage"), we'll leave out
 * the info. We'll also leave it out if we're editing or submitting an edit.
 */
 
if ((wgNamespaceNumber == 2 || wgNamespaceNumber == 3)
	&& wgTitle.indexOf('/') == -1
	&& wgAction != 'edit'
	&& wgAction != 'submit') {
		addOnloadHook(mcShowUserGroups);
}
 
function mcShowUserGroups() {
	var url = wgServer + wgScriptPath;
	url += '/api.php?action=query&format=json&list=users&usprop=groups|blockinfo|editcount|registration';
	url += '&callback=mcDisplayUserRightsInfo&maxage=3600&smaxage=3600&ususers=';
	url += encodeURIComponent(wgTitle);
	importScriptURI(url);
}
 
function mcDisplayUserRightsInfo(queryObj) {
	// Check to make sure the query returned a user; otherwise, return
	if (!queryObj['query'] || !queryObj['query']['users']) {
		return;
	}
 
	var user = queryObj['query']['users'];
	if (user.length == 0) {
		return;
	}
	user = user[0];
 
	// If the user is an IP ("invalid") or unregistered ("missing"), return
	if (user['invalid'] == "" || user['missing'] == "") return;
 
	var userRightStr = "";
 
	// Get registration Date
	if (user['registration']) {
		var regDate = user['registration'].split("T")[0];
		var regDateObj = new Date(regDate);
		userRightStr += ("Registered " + (regDateObj.getMonth() + 1) + "/" + regDateObj.getDate() + "/" + regDateObj.getFullYear() + "; ");
	}
 
	// Get edit count
	if (user['editcount']) {
		userRightStr += (user['editcount'] + " edits");
	}
 
	// Get user rights
	if (user['groups']) {
		var numRights = 0;
		var groupLength = user['groups'].length;
 
		for (var i = 0; i < groupLength; i++) {
			// We'll ignore the groups "*" and "users", since everyone belongs to them
			var currentGroup = user['groups'][i];
			if ((currentGroup != "*") && (currentGroup != "user")) {
				if (numRights == 0) {
					userRightStr += "; ";
				} else {
					userRightStr += ", ";
				}
 
                                if (currentGroup == "sysop") {
                                        userRightStr += "<span style='text-shadow: green 0px 0px 10px'>";
                                        userRightStr += currentGroup;
                                        userRightStr += "</span>";
                                } else if (currentGroup == "bureaucrat") {
                                        userRightStr += "<span style='text-shadow: yellow 0px 0px 10px'>";
                                        userRightStr += currentGroup;
                                        userRightStr += "</span>";
                                } else if (currentGroup == "checkuser") {
                                        userRightStr += "<span style='text-shadow: red 0px 0px 10px'>";
                                        userRightStr += currentGroup;
                                        userRightStr += "</span>";
                                } else if (currentGroup == "oversight") {
                                        userRightStr += "<span style='text-shadow: cyan 0px 0px 10px'>";
                                        userRightStr += currentGroup;
                                        userRightStr += "</span>";
                                } else {
				        userRightStr += currentGroup;
                                }
				numRights++;
			}
		}
	}
 
	// If currently blocked, mention it
	if (user['blockedby']) {
		var blockLogURL = wgServer + wgScriptPath + "/index.php?title=Special:Log/block&page=" + encodeURIComponent(wgPageName);
		userRightStr += "; <a href='" + blockLogURL + "'>currently blocked</a>";
	}
 
	// Attach the info where we want it
	$('#siteSub').before("<div id='mcUserRights' style='font-size: smaller'>" + userRightStr + "</div>");
}