MediaWiki:Gadget-editHysteria.js

Матеріал з Вікімедіа Україна
Перейти до навігації Перейти до пошуку

Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.

  • Firefox / Safari: тримайте Shift, коли натискаєте Оновити, або натисніть Ctrl-F5 чи Ctrl-Shift-R (⌘-R на Apple Mac)
  • Google Chrome: натисніть Ctrl-Shift-R (⌘-Shift-R на Apple Mac)
  • Internet Explorer / Edge: тримайте Ctrl, коли натискаєте Оновити, або натисніть Ctrl-F5
  • Opera: натисніть Ctrl-F5
var beau$userGroups = {};
 
if (mw.config.get("wgUserGroups") {
	for (var i = 0; i < mw.config.get("wgUserGroups").length; i++) {
		beau$userGroups[ mw.config.get("wgUserGroups")[i] ] = true;
	}
}
 
function beau$callAPI(query) {
	var url = mw.config.get("wgServer") + mw.config.get("wgScriptPath") + '/api.php?';
 
	for (var field in query) {
		var value = query[field];
		url += '&' + field + '=' + encodeURIComponent(value);
	}
	url += '&format=json';
	mw.loader.load(url);
}

var editHysteriaGadget = {};
 
editHysteriaGadget.init = function () {
	var firstHeading;
	var headers = document.getElementsByTagName("h1");
 
	for(i=0; i<headers.length; i++) {
		var header = headers[i];
		if(header.className == "firstHeading" || header.id == "firstHeading" || header.className == "pagetitle") {
			firstHeading = header; break;
		}
	}
 
	if(!firstHeading)
		firstHeading = document.getElementById("section-0");
 
	if(!firstHeading)
		return;
 
	var div = document.createElement("div");
	div.style.cssText = "font-size:8pt;line-height:1em";
	if (skin == 'modern')
	{
		div.style.marginLeft = "10px";
		div.style.display = "inline-block";
	}
 
	firstHeading.appendChild(div);
	this.div = div;
 
	beau$callAPI({
		action:	'query',
		prop:	'revisions',
		rvprop:	'user|ids',
		rvlimit:	50,
		callback:	'editHysteriaGadget.gotRevisions',
		titles:	mw.config.get("wgPageName"),
		requestid: new Date().getTime()
	});
}
 
editHysteriaGadget.wikilink = function(page) {
	return mw.config.get("wgScript") + '?title=' + encodeURIComponent(page);
}
 
editHysteriaGadget.userlink = function(name) {
	var str = '<a href="' + this.wikilink('User:' + name) + '">' + name + '</a> ' +
	  '(<a href="' + this.wikilink('Special:Contributions/' + name) + '">внесок</a>, <a href="' + this.wikilink('User_talk:' + name) + '">обговорення</a>';
 
	if ( beau$userGroups["sysop"] )
		str += ', <a href="' + this.wikilink('Special:Blockip/' + name) + '">блокувати</a>';
 
	str += ')';
 
	return str;
}
 
editHysteriaGadget.gotRevisions = function(data) {
	var page = data.query.pages[mw.config.get("wgArticleId")];
	var html = '';
 
	var div = this.div;
	if (! page) {
		div.innerHTML = html + "Сторінка не існує";
		div.style.color = "red";
		return;
	}
 
	var topuser = page.revisions[0].user;
	var ldiff;
	var luser;
	var count = 1;
 
	for (var i = 1; i < page.revisions.length; i++) {
		ldiff = page.revisions[i].revid;
		luser = page.revisions[i].user;
		if (luser != topuser)
			break;
		count++;
	}
 
	if (ldiff) {
		html += 'Востаннє <a href="'+ wgScript + '?title=' + encodeURIComponent(mw.config.get("wgPageName")) + '&diff=cur&oldid=' + ldiff + '"/>редагована</a>' +
			' користувачем ' + this.userlink(topuser) + ' (' + count + 'x).';
 
                if(luser != "" && luser != topuser) {
			html += ' Раніше редагував ' + this.userlink(luser) + '.';
		}
                div.innerHTML = html;
	}
        else if (topuser != "") {
		div.innerHTML = html + 'Це єдина версія сторінки. ' +
			'Її автор — ' + this.userlink(topuser) + '.';
	}
	if (skin == 'modern') {
		var links = div.getElementsByTagName('a');
		for (var i = 0; i < links.length; i++) {
			links[i].style.color = 'white';
			links[i].style.textDecoration = 'underline';
		}
	}
}
 
if (mw.config.get("wgNamespaceNumber") >= 0 && !document.location.href.match(/printable=yes/))
	$(function() { editHysteriaGadget.init() } );