MediaWiki:Gadget-LastContrib.js

Nota: Depois de publicar, poderá ter de contornar a cache do seu navegador para ver as alterações.

  • Firefox / Safari: Pressione Shift enquanto clica Recarregar, ou pressione Ctrl-F5 ou Ctrl-R (⌘-R no Mac)
  • Google Chrome: Pressione Ctrl-Shift-R (⌘-Shift-R no Mac)
  • Edge: Pressione Ctrl enquanto clica Recarregar, ou pressione Ctrl-F5.
/**
 * Última contribuição
 * Ao carregar a página, indica se ela foi editada pela última vez ha mais de xx tempo
 * (Usado para evitar possíveis conflitos de edição)
 *
 * @author: [[:fr:User:Seb35]]
 * @source: [[:fr:MediaWiki:Gadget-LastContrib.js]]
 */
// O tempo é definido em segundos
var lastContribNiveau1 = 100; // Nível de alerta muito alto
var lastContribNiveau2 = 8 * 60; // Nível de alerta alto
var lastContribNiveau3 = 40 * 60; // Nível de alerta médio

function lastContribCallback(data) {
	var touchedDate, tit = document.getElementById('contentSub');
	if (!tit) {
		return;
	}
	$.each(data.query.pages, function (pagekey, pageinfo) {
		if (pageinfo.touched) {
			touchedDate = pageinfo.touched;
			return false;
		}
	});
	var last = new Date(touchedDate);
	var now = new Date();
	var diff = Math.round((now - last) / 1000);
	if (diff <= lastContribNiveau3) {
		if (diff < -600) {
			tit.innerHTML = 'Pode haver um erro na sincronização dos relógios: hora no servidor = ' + last + ' >> hora no cliente = ' + now + ' - ' + tit.innerHTML;
			return;
		}
		if (diff < 0) {
			diff = 0;
		}
		var diffHeures = Math.floor(diff / 3600);
		var diffMinutes = Math.floor((diff - diffHeures * 3600) / 60);
		var diffSecondes = diff - diffHeures * 3600 - diffMinutes * 60;
		var url = mw.config.get('wgScript') + '?action=history&title=' + mw.util.wikiUrlencode(mw.config.get('wgPageName'));
		var color = (diff <= lastContribNiveau2) ? 'color:red;' : 'color:black;';
		var decoration = (diff <= lastContribNiveau1) ? 'text-decoration:underline overline;' : '';
		var text = (diffHeures > 0 ? diffHeures + 'h' : '')
			+ (diffMinutes > 0 ? diffMinutes + 'min' : '')
			+ diffSecondes + 'seg';
		tit.innerHTML = '<span style="font-size:8pt;">'
			+ last.getHours() + 'h' + last.getMinutes() + 'min'
			+ ' (<a href="' + url + '"><span style="' + color + ' ' + decoration + '">'
				+ text
			+ '</span></a>)</span> '
			+ tit.innerHTML;
	}
}
$(function () {
	$.getJSON(mw.config.get('wgScriptPath') + '/api.php', {
		format: 'json',
		action: 'query',
		prop: 'info',
		titles: mw.util.wikiUrlencode(mw.config.get('wgPageName'))
	}, lastContribCallback);
});