Pangguno:Iwan Novirion/userinfo.js

Catatan: Sasudah manabikkan, Sanak mungkin harus meminteh singgahan paramban Sanak untuak maliek parubahan.

  • Firefox / Safari: Tahan Shift sambia mangklik Reload, atau takan Ctrl-F5 atau Ctrl-R (⌘-R di Mac)
  • Google Chrome: Takan Ctrl-Shift-R (⌘-Shift-R di Mac)
  • Internet Explorer/Edge: Tahan Ctrl sambia mangklik Refresh, atau takan Ctrl-F5
  • Opera: Pai ka Menu → Settings (Opera → Preferences di Mac) lalu ka Privacy & security → Clear browsing data → Cached images and files.
/* <nowiki>
 * UserInfo.js by [[User:Ricordisamoa]]
 * uses jQuery & Ajax
 * inspired from [[:en:User:PleaseStand/User info]] by PleaseStand (taken also some code, Thanks!)
 * translate to Minangkabau [[:min:User:Iwan_Novirion/userinfo.js]]
*/
$(document).ready(function(){
	if((wgNamespaceNumber!=2&&wgNamespaceNumber!=3)||(/\//.test(wgTitle))) return;
	var user=wgTitle.split("/")[0];
	var siteData=wgServer.replace(/^\/\/(.+)$/,"$1").split(".").slice(-3,2);
	$.get(
		mw.util.wikiScript("api"),
		{
			action:"query",
			format:"json",
			meta:"allmessages",
			amlang:wgUserLanguage,
			ammessages:"ago|usereditcount|seconds|minutes|hours|days|weeks|months|years"
		},
		function(seujnyvukesrn){
			var messages={};
			$.each(seujnyvukesrn.query.allmessages,function(i,e){
				messages[e.name]=e["*"];
				if(e["*"].indexOf("{{PLURAL")!=-1){
					var s=e["*"].match(/^(.*)\{\{PLURAL: ?\$1\|([^\|]*)(\|([^\|]*))?\}\}(.*)$/).slice(1);
					s.splice(2,1);
					if(typeof s[2]=="undefined") s[2]="";
					messages[e.name]=s;
				}
			});
			var dateDiff=function(date,precision){// state-of-the-art function for date differences!
				var labels=[
					messages["years"],
					messages["months"],
					messages["weeks"],
					messages["days"],
					messages["hours"],
					messages["minutes"],
					messages["seconds"]
				];
				var mult=[12,4.34,7,24,60,60,1000];
				var diff=new Date()-date;
				var message=[];
				$.each(mult,function(i,e){
					if(i<=precision||message.length===0){
						var f=parseInt(eval(mult.slice(i).join("*")));
						if(Math.floor(diff/f)>0){
							var msg=(
								typeof labels[i]==="string"?labels[i]:
								(labels[i][0]+(Math.floor(diff/f)>1?labels[i][2]:labels[i][1])+labels[i][3])
							)
							.replace(/\$1/g,Math.floor(diff/f));
							message.push(msg);
							diff-=Math.floor(diff/f)*f;
						}
					}
				});
				return prettyJoin(message);
			};
			var prettyJoin=function(array){
				switch(array.length){
					case 0:return "";
					case 1:return array[0];
					case 2:return array.join(" dan ");
					default:return array.slice(0,-1).join(", ")+", dan "+array[array.length-1];
				}
			};
			var friendlyGroups={
			// Exclude implicit user group information provided by MW 1.17 --PS 2010-02-17
				sysop:"panguruih",
				"interface-admin":"panguruih antar muka",
				accountcreator:"pambuek akun",
				"import":"importir",
				transwiki:"importir transwiki",
				"ipblock-exempt":"pangacualian sakek IP",
				oversight:"pangaweh",
				bureaucrat:"birokrat",
				checkuser:"pamareso",
				confirmed:"pangguno takonfirmasi",
				abusefilter:"filter manager",
				reviewer:"paninjau",
				autoreview:"paninjau otomatis",
				rollbacker:"pangambali revisi"
			};
			$.getJSON(
				mw.util.wikiScript("api"),
				{
					action:"query",
					format:"json",
					list:"users|usercontribs",
					maxage:300,
					usprop:"blockinfo|editcount|gender|registration|groups",
					ususers:user,
					ucuser:user,
					ucprop:"timestamp",
					uclimit:1
				},
				function(data){
					var query=data.query;
					var user=query.users[0];
					var userDesc="";
					if(typeof(user.missing)!="undefined"||typeof(user.invalid)!="undefined"){
					// invalid/anonymous user
						if(mw.util.isIPv4Address(user.name)) userDesc="pangguno anonim IPv4";
						else if(mw.util.isIPv6Address(user.name)) userDesc="pangguno anonim IPv6";
						else userDesc="unspecified user";
						userDesc="A"+(/^[aeio]/i.test(userDesc)?"n":"")+" "+userDesc;
					}
					else{
						var gender=typeof(user.gender)!="undefined"?user.gender:"";
						var groups=$.map(
							$(user.groups).not(["*","user","autoconfirmed"]),
							function(e){
								return (friendlyGroups[e]&&typeof(friendlyGroups[e])!="undefined")?friendlyGroups[e]:e;
							}
						);
						var userDesc=groups.length>0?prettyJoin(groups):"pangguno tadaftar";
						if(typeof(user.blockedby)!="undefined"){
							userDesc=$("<span>").append("A ")
							.append(
								$("<a>")
								.text("blocked")
								.attr("href",mw.util.getUrl("Special:Log")+"?type=block&page="+user.name)
								.html()
							).append(" "+userDesc);
						}
						else userDesc="Saurang"+(/^[aeio]/i.test(userDesc)?"":"")+" "+userDesc;
						var regDate=new Date(user.registration);
						if(user.registration===null) console.warn("UserInfo.js: cannot determine user's registration timestamp");
						var lastContribDate=new Date(query.usercontribs[0].timestamp);
						if(gender&&gender!==""){
							$("<span>")
							.text(gender==="male"?"\u2642":(gender==="female"?"\u2640":""))
							.css({
								paddingLeft:"0.25em",
								fontFamily:"'Lucida Grande','Lucida Sans Unicode',sans-serif",
								fontSize:"1em",
							})
							.appendTo("#firstHeading");
						}
						var userActiveKeys={
							inactive:["c73535","c33003"],
							uncertain:["949494","7e7e7e"],
							active:["6bc431","1fbf00"]
						};
						var userActiveKey="inactive";
						if(new Date()-lastContribDate<120000) userActiveKey="active";
						else if(new Date()-lastContribDate<3600000) userActiveKey="uncertain";
						var userActiveColors=userActiveKeys[userActiveKey];
						var userActiveGradient="radial-gradient(center,ellipse cover,#"+userActiveColors.join(",#")+")";
						$("<span>")
						.attr("title","this user is probably "+userActiveKey+" at the moment")
						.css({
							borderRadius:"100%",
							height:".8em",
							width:".8em",
							marginRight:".3em",
							display:"inline-block",
							lineHeight:0,
							background:"lime"+"#"+userActiveColors[0]
						})
						.css("background","-webkit-"+userActiveGradient)
						.css("background","-moz-"+userActiveGradient)
						.css("background","-ms-"+userActiveGradient)
						.css("background","-o-"+userActiveGradient)
						.css("background",userActiveGradient)
						.prependTo("#firstHeading");
						userDesc=$("<span>").text(userDesc)
						.append(", "+(user.registration!==null?dateDiff(regDate,2)+" nan lalu, ":"")+"jo ")
						.append(
							$("<a>")
							.text(
								(typeof messages.usereditcount==="string"?messages.usereditcount:
									messages.usereditcount[0]+
									(user.editcount>1?messages.usereditcount[2]:messages.usereditcount[1])+
									messages.usereditcount[3]
								)
								.replace(/\$1/g,user.editcount.toLocaleString())
							)
							.attr( 'href', '//tools.wmflabs.org/xtools-ec/?' +
								$.param({
									user: user.name,
									lang: siteData[0],
									wiki: siteData[1]
								})
							)
						)
						.append(". Suntiangan tarakhia ")
						.append(
							$("<a>")
							.text(messages.ago.replace(/\$1/g,dateDiff(lastContribDate,2)))
							.attr("href",mw.util.getUrl("Special:Contributions/"+user.name))
						);
					}
					$("#siteSub").show().prepend(". ").prepend(userDesc);
				}
			);
		}
	);
});