Lompat ke isi

Pengguna:Iwan Novirion/userinfo.js: Perbedaan antara revisi

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Konten dihapus Konten ditambahkan
Mengembalikan ke revisi 6584548 bertanggal 2013-03-31 14:33:56 oleh Iwan Novirion menggunakan popups
tes
Baris 4: Baris 4:
* inspired from [[:en:User:PleaseStand/User info]] by PleaseStand (taken also some code, Thanks!)
* inspired from [[:en:User:PleaseStand/User info]] by PleaseStand (taken also some code, Thanks!)
* translate to Indonesian [[:id:User:Iwan_Novirion/userinfo.js]]
* translate to Indonesian [[:id:User:Iwan_Novirion/userinfo.js]]
*/
$(document).ready(function(){
$(document).ready(function(){
if((wgNamespaceNumber!=2&&wgNamespaceNumber!=3)||(/\//.test(wgTitle))) return;
if((wgNamespaceNumber!=2&&wgNamespaceNumber!=3)||(/\//.test(wgTitle))) return;
var user=wgTitle.split("/")[0];
var user=wgTitle.split("/")[0];
var siteData=wgServer.replace(/^\/\/(.+)$/,"$1").split(".").slice(-3,2);
var siteData=wgServer.replace(/^\/\/(.+)$/,"$1").split(".").slice(-3,2);
$.get(
$.post(
mw.util.wikiScript("api"),
mw.util.wikiScript("api"),
{
{
Baris 16: Baris 15:
meta:"allmessages",
meta:"allmessages",
amlang:wgUserLanguage,
amlang:wgUserLanguage,
ammessages:[
ammessages:"ago|usereditcount|duration-seconds|duration-minutes|duration-hours|duration-days|duration-weeks|months|duration-years"
"ago",
"just-now",
"usereditcount",
"seconds",
"minutes",
"hours",
"days",
"weeks",
"months",
"years"
].concat(
$.map([
"API_High_Limit_Requestor",
"Ex_Administrator",
"Ex_Bureaucrat",
"Global_bot",
"Global_rollback",
"Global_sysops",
"Image-reviewer",
"Indic_Bots",
"New_wikis_importer",
"OTRS",
"OTRS-member",
"Ombudsmen",
"Staff",
"abusefilter",
"accountcreator",
"arbcom",
"autoconfirmed",
"autopatrolled",
"autoreview",
"autoreviewer",
"bigexport",
"bot",
"botadmin",
"bureaucrat",
"centralnoticeadmin",
"checkuser",
"coder",
"confirmed",
"editinterface",
"editor",
"editprotected",
"eliminator",
"epcampus",
"epcoordinator",
"epinstructor",
"eponline",
"filemover",
"flood",
"founder",
"global-ipblock-exempt",
"import",
"inactive",
"interface_editor",
"ipblock-exempt",
"oversight",
"patroller",
"recursive-export",
"researcher",
"reviewer",
"rollbacker",
"steward",
"suppress",
"svnadmins",
"sysadmin",
"sysop",
"test-sysop",
"translate-proofr",
"translationadmin",
"transwiki",
"trusted",
"upwizcampeditors",
"user"
],
function(e){
return "group-"+e+"-member";
})
).join("|")
},
},
function(seujnyvukesrn){
function(seujnyvukesrn){
Baris 31: Baris 109:
var dateDiff=function(date,precision){// state-of-the-art function for date differences!
var dateDiff=function(date,precision){// state-of-the-art function for date differences!
var labels=[
var labels=[
messages["duration-years"],
messages["years"],
messages["months"],
messages["months"],
messages["duration-weeks"],
messages["weeks"],
messages["duration-days"],
messages["days"],
messages["duration-hours"],
messages["hours"],
messages["duration-minutes"],
messages["minutes"],
messages["duration-seconds"]
messages["seconds"]
];
];
var mult=[12,4.34,7,24,60,60,1000];
var mult=[12,4.34,7,24,60,60,1000];
Baris 56: Baris 134:
}
}
});
});
return prettyJoin(message);
return message.length>0?messages.ago.replace(/\$1/g,prettyJoin(message)):messages["just-now"];
};
};
var prettyJoin=function(array){
var prettyJoin=function(array){
Baris 65: Baris 143:
default:return array.slice(0,-1).join(", ")+", dan "+array[array.length-1];break;
default:return array.slice(0,-1).join(", ")+", dan "+array[array.length-1];break;
}
}
};
var friendlyGroups={
// Exclude implicit user group information provided by MW 1.17 --PS 2010-02-17
sysop:"pengurus",
accountcreator:"account creator",
"import":"importer",
transwiki:"transwiki importer",
"ipblock-exempt":"pengecualian IP",
oversight:"pengawas",
confirmed:"confirmed user",
abusefilter:"edit filter manager",
autoreviewer:"autopatrolled user"
};
};
$.getJSON(
$.getJSON(
Baris 97: Baris 163:
if(typeof(user.missing)!="undefined"||typeof(user.invalid)!="undefined"){
if(typeof(user.missing)!="undefined"||typeof(user.invalid)!="undefined"){
// invalid/anonymous user
// invalid/anonymous user
if(mw.util.isIPv4Address(user.name)) userDesc="pengguna anonim IPv4";
if(mw.util.isIPv4Address(user.name)) userDesc="anonymous IPv4 user";
else if(mw.util.isIPv6Address(user.name)) userDesc="pengguna anonim IPv6";
else if(mw.util.isIPv6Address(user.name)) userDesc="anonymous IPv6 user";
else userDesc="unspecified user";
else userDesc="unspecified user";
userDesc="A"+(/^[aeio]/i.test(userDesc)?"n":"")+" "+userDesc;
userDesc="A"+(/^[aeio]/i.test(userDesc)?"n":"")+" "+userDesc;
Baris 104: Baris 170:
else{
else{
var gender=typeof(user.gender)!="undefined"?user.gender:"";
var gender=typeof(user.gender)!="undefined"?user.gender:"";
$.each(seujnyvukesrn.query.allmessages,function(i,e){
if(e["*"].indexOf("{{GENDER")===-1||e["*"].indexOf("{{PLURAL")!=-1) return;
var s=e["*"].match(/^(.*)\{\{GENDER: ?\$1\|([^\|]*)(\|([^\|]*))?(\|([^\|]*))?\}\}(.*)$/).slice(1);
s.splice(2,1);
s.splice(3,1);
var g=(gender==="male"&&typeof s[1]!="undefined"?s[1]:(gender==="female"&&typeof s[2]!="undefined"?s[2]:""));
if(g==="") g=typeof s[3]!="undefined"?s[3]:s[1];
s=s[0]+g+s[4];
messages[e.name]=s;
});
var groups=$.map(
var groups=$.map(
$(user.groups).not(["*","user","autoconfirmed"]),
$(user.groups).not(["*","user","autoconfirmed"]),
function(e){
function(e){
return (friendlyGroups[e]&&typeof(friendlyGroups[e])!="undefined")?friendlyGroups[e]:e;
return (typeof messages["group-"+e+"-member"]!="undefined"?messages["group-"+e+"-member"]:e);
}
}
);
);
var userDesc=groups.length>0?prettyJoin(groups):"pengguna terdaftar";
var userDesc=groups.length>0?prettyJoin(groups):(typeof user.blockedby!="undefined"?"user":"registered user");
if(typeof(user.blockedby)!="undefined"){
if(typeof user.blockedby!="undefined"){
userDesc=$("<span>").append("A ")
userDesc=$("<span>").append("A ")
.append(
.append(
Baris 117: Baris 193:
.text("blocked")
.text("blocked")
.attr("href",mw.util.wikiGetlink("Special:Log")+"?type=block&page="+user.name)
.attr("href",mw.util.wikiGetlink("Special:Log")+"?type=block&page="+user.name)
.html()
).append(" "+userDesc);
).append(" "+userDesc);
}
}
Baris 123: Baris 198:
var regDate=new Date(user.registration);
var regDate=new Date(user.registration);
if(user.registration==null) console.warn("UserInfo.js: cannot determine user's registration timestamp");
if(user.registration==null) console.warn("UserInfo.js: cannot determine user's registration timestamp");
var lastContribDate=new Date(query.usercontribs[0].timestamp);
var lastContribDate=query.usercontribs.length>0?new Date(query.usercontribs[0].timestamp):null;
if(gender&&gender!=""){
if(gender&&gender!=""){
$("<span>")
$("<span>")
Baris 140: Baris 215:
};
};
var userActiveKey="inactive";
var userActiveKey="inactive";
if(new Date()-lastContribDate<120000) userActiveKey="active";
if(lastContribDate!=null){
if(new Date()-lastContribDate<120000) userActiveKey="active";
else if(new Date()-lastContribDate<3600000) userActiveKey="uncertain";
else if(new Date()-lastContribDate<3600000) userActiveKey="uncertain";
}
var userActiveColors=userActiveKeys[userActiveKey];
var userActiveColors=userActiveKeys[userActiveKey];
var userActiveGradient="radial-gradient(center,ellipse cover,#"+userActiveColors.join(",#")+")";
var userActiveGradient="radial-gradient(center,ellipse cover,#"+userActiveColors.join(",#")+")";
Baris 162: Baris 239:
.css("background",userActiveGradient)
.css("background",userActiveGradient)
.prependTo("#firstHeading");
.prependTo("#firstHeading");
userDesc=$("<span>").text(userDesc)
userDesc=$("<span>").append(userDesc)
.append(", "+(user.registration!=null?dateDiff(regDate,2)+" yang lalu, ":"")+"dengan ")
.append(", "+(user.registration!=null?dateDiff(regDate,2)+", ":"")+"dengan ")
.append(
.append(
$("<a>")
$("<a>")
Baris 169: Baris 246:
(typeof messages.usereditcount==="string"?messages.usereditcount:
(typeof messages.usereditcount==="string"?messages.usereditcount:
messages.usereditcount[0]+
messages.usereditcount[0]+
(user.editcount>1?messages.usereditcount[2]:messages.usereditcount[1])+
(user.editcount!=1?messages.usereditcount[2]:messages.usereditcount[1])+
messages.usereditcount[3]
messages.usereditcount[3]
)
)
.replace(/\$1/g,user.editcount.toLocaleString())
.replace(/\$1/g,user.editcount.toLocaleString())
)
)
.attr("href","http://toolserver.org/~tparis/count/index.php?"+
.attr("href","http://toolserver.org/~tparis/pcount/index.php?"+
$.param({
$.param({
name:user.name,
name:user.name,
Baris 182: Baris 259:
)
)
)
)
.append(". Suntingan terakhir ")
.append(lastContribDate!=null?". Suntingan terakhir ":"")
.append(
.append(
$("<a>")
lastContribDate!=null?$("<a>")
.text(messages.ago.replace(/\$1/g,dateDiff(lastContribDate,2)))
.text(dateDiff(lastContribDate,2))
.attr("href",mw.util.wikiGetlink("Special:Contributions/"+user.name))
.attr("href",mw.util.wikiGetlink("Special:Contributions/"+user.name)):""
);
);
}
}

Revisi per 29 April 2013 20.48

/* <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 Indonesian [[:id: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);
	$.post(
		mw.util.wikiScript("api"),
		{
			action:"query",
			format:"json",
			meta:"allmessages",
			amlang:wgUserLanguage,
			ammessages:[
				"ago",
				"just-now",
				"usereditcount",
				"seconds",
				"minutes",
				"hours",
				"days",
				"weeks",
				"months",
				"years"
			].concat(
				$.map([
					"API_High_Limit_Requestor",
					"Ex_Administrator",
					"Ex_Bureaucrat",
					"Global_bot",
					"Global_rollback",
					"Global_sysops",
					"Image-reviewer",
					"Indic_Bots",
					"New_wikis_importer",
					"OTRS",
					"OTRS-member",
					"Ombudsmen",
					"Staff",
					"abusefilter",
					"accountcreator",
					"arbcom",
					"autoconfirmed",
					"autopatrolled",
					"autoreview",
					"autoreviewer",
					"bigexport",
					"bot",
					"botadmin",
					"bureaucrat",
					"centralnoticeadmin",
					"checkuser",
					"coder",
					"confirmed",
					"editinterface",
					"editor",
					"editprotected",
					"eliminator",
					"epcampus",
					"epcoordinator",
					"epinstructor",
					"eponline",
					"filemover",
					"flood",
					"founder",
					"global-ipblock-exempt",
					"import",
					"inactive",
					"interface_editor",
					"ipblock-exempt",
					"oversight",
					"patroller",
					"recursive-export",
					"researcher",
					"reviewer",
					"rollbacker",
					"steward",
					"suppress",
					"svnadmins",
					"sysadmin",
					"sysop",
					"test-sysop",
					"translate-proofr",
					"translationadmin",
					"transwiki",
					"trusted",
					"upwizcampeditors",
					"user"
				],
				function(e){
					return "group-"+e+"-member";
				})
			).join("|")
		},
		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 message.length>0?messages.ago.replace(/\$1/g,prettyJoin(message)):messages["just-now"];
			};
			var prettyJoin=function(array){
				switch(array.length){
					case 0:return "";break;
					case 1:return array[0];break;
					case 2:return array.join(" dan ");break;
					default:return array.slice(0,-1).join(", ")+", dan "+array[array.length-1];break;
				}
			};
			$.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="anonymous IPv4 user";
						else if(mw.util.isIPv6Address(user.name)) userDesc="anonymous IPv6 user";
						else userDesc="unspecified user";
						userDesc="A"+(/^[aeio]/i.test(userDesc)?"n":"")+" "+userDesc;
					}
					else{
						var gender=typeof(user.gender)!="undefined"?user.gender:"";
						$.each(seujnyvukesrn.query.allmessages,function(i,e){
							if(e["*"].indexOf("{{GENDER")===-1||e["*"].indexOf("{{PLURAL")!=-1) return;
							var s=e["*"].match(/^(.*)\{\{GENDER: ?\$1\|([^\|]*)(\|([^\|]*))?(\|([^\|]*))?\}\}(.*)$/).slice(1);
							s.splice(2,1);
							s.splice(3,1);
							var g=(gender==="male"&&typeof s[1]!="undefined"?s[1]:(gender==="female"&&typeof s[2]!="undefined"?s[2]:""));
							if(g==="") g=typeof s[3]!="undefined"?s[3]:s[1];
							s=s[0]+g+s[4];
							messages[e.name]=s;
						});
						var groups=$.map(
							$(user.groups).not(["*","user","autoconfirmed"]),
							function(e){
								return (typeof messages["group-"+e+"-member"]!="undefined"?messages["group-"+e+"-member"]:e);
							}
						);
						var userDesc=groups.length>0?prettyJoin(groups):(typeof user.blockedby!="undefined"?"user":"registered user");
						if(typeof user.blockedby!="undefined"){
							userDesc=$("<span>").append("A ")
							.append(
								$("<a>")
								.text("blocked")
								.attr("href",mw.util.wikiGetlink("Special:Log")+"?type=block&page="+user.name)
							).append(" "+userDesc);
						}
						else userDesc="Seorang"+(/^[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=query.usercontribs.length>0?new Date(query.usercontribs[0].timestamp):null;
						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(lastContribDate!=null){
							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%",
							background:"lime",
							height:".8em",
							width:".8em",
							marginRight:".3em",
							display:"inline-block",
							lineHeight:0,
							background:"#"+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>").append(userDesc)
						.append(", "+(user.registration!=null?dateDiff(regDate,2)+", ":"")+"dengan ")
						.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","http://toolserver.org/~tparis/pcount/index.php?"+
								$.param({
									name:user.name,
									lang:siteData[0],
									wiki:siteData[1]
								})
							)
						)
						.append(lastContribDate!=null?". Suntingan terakhir ":"")
						.append(
							lastContribDate!=null?$("<a>")
							.text(dateDiff(lastContribDate,2))
							.attr("href",mw.util.wikiGetlink("Special:Contributions/"+user.name)):""
						);
					}
					$("#siteSub").show().prepend(". ").prepend(userDesc);
				}
			);
		}
	);
});