User:Pinigin/userinfo.js

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
/*
 * UserInfo.js (c) 2017-2018, Maksim Pinigin
 * Create a "Special:UserInfo" page that allows you to view a little information about the user
 * To enable this script, go to User:Your_name/common.js and type "importScript('User:Pinigin/userinfo.js');" (without quotes)
 * To enable this script on every Wikimedia project, go to meta:User:Your_name/global.js and type: mw.loader.load( "//commons.wikimedia.org/w/index.php?title=User:Pinigin/userinfo.js&action=raw&ctype=text/javascript" );
*/

// Localization
// Russian
if(mw.config.values.wgUserLanguage === "ru") {
	var pui_pagename = "Информация о пользователе";
	var pui_username = "Имя участника";
	var pui_getuserinfo = "Получить информацию о пользователе";
	var pui_userlink = "Перейти на страницу с информацией о пользователе";
	var pui_spaname = "Инструменты созданные Максимом Пинигином";
	var pui_enterusername = "Вы должны ввести имя пользователя";
	var pui_userid = "ID пользователя:";
	var pui_globalid = "Глобальный ID:";
	var pui_usernamer = "Имя участника:";
	var pui_editscount = "Количество правок:";
	var pui_regdate = "Дата регистрации:";
	var pui_gender = "Пол участника:";
	var pui_usergroups = "Группы участника:";
	var pui_globalgroups = "Глобальные группы:";
}
// Ukrainian (Translated by: Funtazoid, Checked by: Haralil)
else if(mw.config.values.wgUserLanguage == "uk") {
	var pui_pagename = "Інформація про користувача";
	var pui_username = "Ім'я учасника";
	var pui_getuserinfo = "Отримати інформацію про користувача";
	var pui_userlink = "Отримати інформацію про користувача"; // not translated
	var pui_spaname = "Інструменти створені Максимом Пинигином";
	var pui_enterusername = "Ви повинні ввести ім'я користувача";
	var pui_userid = "ID користувача:";
	var pui_globalid = "Глобальний ID:";
	var pui_usernamer = "Ім'я учасника:";
	var pui_editscount = "Кількість правок:";
	var pui_regdate = "Дата реєстрації:";
	var pui_gender = "Пол учасника:";
	var pui_usergroups = "Групи учасника:";
	var pui_globalgroups = "Глобальні групи:";
}
// English (default)
else {
	var pui_pagename = "User information";
	var pui_username = "User name";
	var pui_getuserinfo = "Get user information";
	var pui_userlink = "Go to the user information page";
	var pui_spaname = "Tools created by Maxim Pinigin";
	var pui_enterusername = "You must enter a user name";
	var pui_userid = "User ID:";
	var pui_globalid = "Global ID:";
	var pui_usernamer = "User name:";
	var pui_editscount = "Number of edits:";
	var pui_regdate = "Date of registration:";
	var pui_gender = "Gender:";
	var pui_usergroups = "Groups:";
	var pui_globalgroups = "Global groups:";
}

function getUserInfo() {
    var username = $("#username_input").val();
    $("#userinfobody").html("");
    $.ajax({
        type:"get",
        url:"/w/api.php?action=query&list=users&ususers=" + username + "&usprop=registration%7Cgender%7Ceditcount%7Cblockinfo%7Cgroups&format=json",
        success:function (data) {
        	$.ajax({
        		type:"get",
        		url:"/w/api.php?action=query&format=json&list=globalallusers&utf8=1&agufrom=" + username + "&aguprop=groups&agulimit=1",
        		success:function (gdata) {
        			if(username === "") {
        				$("#userinfobody").append("<br><b>" + pui_enterusername + "</b>");
        			}
		            else {
			            $("#userinfobody").append("<br>");
			            $("#userinfobody").append("<b>" + pui_userid + "</b> " + data.query.users[0].userid + "<br>");
			            $("#userinfobody").append("<b>" + pui_globalid + "</b> " + gdata.query.globalallusers[0].id + "<br>");
			            $("#userinfobody").append("<b>" + pui_usernamer + "</b> " + data.query.users[0].name + "<br>");
			            $("#userinfobody").append("<b>" + pui_editscount + "</b> " + data.query.users[0].editcount + "<br>");
			            if (data.query.users[0].registration !== null)
			            $("#userinfobody").append("<b>" + pui_regdate + "</b> " + data.query.users[0].registration.replace('T', ' ').replace('Z', ' ') + "<br>");
			            $("#userinfobody").append("<b>" + pui_gender + "</b> " + data.query.users[0].gender + "<br>");
			            $("#userinfobody").append("<b>" + pui_usergroups + "</b> " + data.query.users[0].groups.join(', ') + "<br>");
			            if(gdata.query.globalallusers[0].groups.length !== 0)
			            $("#userinfobody").append("<b>" + pui_globalgroups + "</b> " + gdata.query.globalallusers[0].groups.join(', ') + "<br>");
		            }
        		}
        	});
        }
    });
}

if(mw.config.values.wgNamespaceNumber === -1 && mw.config.values.wgPageName.split(':')[1] == "UserInfo")
{
    $('#mw-content-text').html("");
    document.title = pui_pagename + " — " + mw.config.values.wgSiteName;
    $('#firstHeading').text(pui_pagename);
    $('#mw-content-text').append('<input id="username_input" name="username_input" type="text" placeholder="' + pui_username + '"> <button onClick="getUserInfo();">' + pui_getuserinfo + '</button><br><div id="userinfobody"></div>');
    if(location.hash.replace("#","") !== "")
    {
        $("#username_input").val(location.hash.replace("#",""));
        getUserInfo();
    }
}

if(mw.config.values.wgNamespaceNumber === 2) { 
	if(mw.config.values.wgPageName.indexOf("/") === -1) {
    	urlHash = "/wiki/Special:UserInfo#" + mw.config.values.wgPageName.split(':')[1];
    	$("#t-info").append('<br><br><a href="' + urlHash + '" rel="alternate" title="' + pui_userlink + '" accesskey="p">' + pui_pagename + '</a>');
	}
}