Benutzer:Prog/progcoder/userInfoPlugin.js

Aus Wikibooks

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
// <nowiki>

(function($, pc){
	var loadedList = new mw.Map();

	$.extend(pc, {userInfo: function(name, container){
		if(false) return;
		if(typeof name != 'string') return;

		var box = $('<div class="JSUserInfoBox" style="position:relative;" />');
		container.append(box);

		if(loadedList.exists(name)){
			var element = loadedList.get(name);
			if($.isArray(element)){
				element.push(box);
			}else{
				box.append(element.clone());
			}
		}else{
			loadedList.set(name, [box]);

			var url = mw.config.get('wgServer')+mw.config.get('wgScriptPath')+
				"/api.php?action=query&format=json&list=users&ususers="+name+"&usprop=blockinfo|groups|editcount|registration|gender";

			var completeRequest = function(json){
				var inner = $(document.createElement('div'));
				inner.addClass('JSUserInfoInner');
				inner.append('<div class="JSUserInfoHeadline"></div>');
				var user = json.query.users[0];
				if(user.missing) inner.append('<div><b>User is missing</b></div>');
				else inner.append('<div><b>Name</b>: ' + user.name + '</div>');
				if(user.registration) inner.append('<div><b>Registration</b>: ' + user.registration + '</div>');
				if(user.groups) inner.append('<div><b>Groups</b>: ' + user.groups.join(', ') + '</div>');
				if(user.editcount) inner.append('<div><b>Edits</b>: ' + user.editcount + '</div>');
				if(user.gender) inner.append('<div><b>Gender</b>: ' + user.gender + '</div>');
				if(user.blockedby) inner.append('<div><b>Blocked by</b> ' + user.blockedby + '</div>');
				if(user.blockreason) inner.append('<div><b>Block reason</b>: ' + user.blockreason + '</div>');
				if(user.blockexpiry) inner.append('<div><b>Block expiry</b>: ' + user.blockexpiry + '</div>');

				var elements = loadedList.get(name);
				for(var i = 0; i < elements.length; ++i){
					elements[i].append(inner.clone());
				}
				loadedList.set(name, inner);
			};

			$.getJSON(url, completeRequest);
		}
	}});
}(jQuery, progcoder));

// </nowiki>