User:Sreejithk2000/useredits.js

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.
// This code is jsHint-valid
///////////////// Get user details

$(document).ready(function() {
	"use strict";
	if ((mw.config.get("wgCanonicalNamespace") === "User" || mw.config.get("wgCanonicalNamespace") === "User_talk") && mw.config.get("wgTitle").indexOf('/') === -1) GetUserDetails();
});

function GetUserDetails() {
	"use strict";

	var query = {
		action: 'query',
		list: 'users',
		ususers: mw.config.get("wgTitle"),
		usprop: 'editcount|groups',
		format: 'json'
	};

	$.getJSON(mw.util.wikiScript('api'), query, function(result) {
		var groups = String(result.query.users[0].groups);
		groups = groups.replace("*,", "");
		groups = groups.replace("autoconfirmed,", "");
		var newDiv = $('<div />').addClass('editsection').css('float', 'left').html(result.query.users[0].editcount + ' edits. ' + 'Rights: [' + groups + ']. ');
		$('#firstHeading').after(newDiv);
		$('div.editsection').after($('<br />'));
		GetLastEdit();
	});
}

function GetLastEdit() {
	"use strict";

	var query = {
		action: 'query',
		list: 'usercontribs',
		ucuser: mw.config.get("wgTitle"),
		ucprop: 'timestamp',
		format: 'json'
	};

	$.getJSON(mw.util.wikiScript('api'), query, function(result) {
		if (!result || result.error) return;

		var lastEdit = new Date(result.query.usercontribs[0].timestamp);
		lastEdit.setHours(0, 0, 0, 0);

		var div = $('#firstHeading').next('div');
		var one_day = 1000 * 60 * 60 * 24;
		var today = new Date();
		today.setHours(0, 0, 0, 0);

		var days = today.getDate() - lastEdit.getDate();
		if (days < 0)
		{
			today.setMonth(today.getMonth() - 1);
    		var monthStart = new Date(today.getFullYear(), today.getMonth(), 1);
    		var monthEnd = new Date(today.getFullYear(), today.getMonth() + 1, 1);
    		var monthLength = Math.round((monthEnd - monthStart) / one_day);
    		days += monthLength;
		}

		var months = today.getMonth() - lastEdit.getMonth();
		if (months < 0)
		{
    		today.setFullYear(today.getFullYear() - 1);
    		months += 12;
		}

		var years = today.getFullYear() - lastEdit.getFullYear();
		var lastEditBefore = 'Last edit: today';
		if(years + months + days > 0) {
   			lastEditBefore = 'Last edit: ';
			if (years > 0) lastEditBefore += years + " year(s) ";
			if (months > 0) lastEditBefore += months + " month(s) ";
			if (days > 0) lastEditBefore += days + " day(s) ";
			lastEditBefore += 'back';
		}
		div.append(lastEditBefore);
	});
}
///////////////// End of get user details