MediaWiki:Gadget-aggregaContributi.js

Da Wikisource.

Nota: dopo aver pubblicato, potrebbe essere necessario pulire la cache del proprio browser per vedere i cambiamenti.

  • Firefox / Safari: tieni premuto il tasto delle maiuscole Shift e fai clic su Ricarica, oppure premi Ctrl-F5 o Ctrl-R (⌘-R su Mac)
  • Google Chrome: premi Ctrl-Shift-R (⌘-Shift-R su un Mac)
  • Internet Explorer / Edge: tieni premuto il tasto Ctrl e fai clic su Aggiorna, oppure premi Ctrl-F5
  • Opera: premi Ctrl-F5.
$(function() {
	var username = mw.config.get('wgUserName');
	
	loadContribs = function(from, array) {
		console.log("Loading pages from " + from);
		
		var params = {
			action: 'query',
			list: 'usercontribs',
			ucuser: username,
			uclimit: 5000,
			ucnamespace: 108,
			format: 'json',
			array: array
		};
		if (from)
			params.uccontinue = from;
		
		var api = new mw.Api();
		api.post(params).done(function (data, textStatus, jqXHR) {
			array = this.array;
			$.each(data.query.usercontribs, function(index, element) {
				array.push(element.title);
			});
			$('#titoliCount').html(array.length);
			
			if (data['continue'])
				loadContribs(data['continue'].uccontinue);
			else {
				$('.aggrega-contributi-box-main .loader').html('- terminato.').removeClass('loader');
			}
			
			map = {};
			for (i = 0; i < array.length; i++) {
				titolo = array[i].replace('Pagina:', '');
				if (titolo.indexOf('/') != -1)
					titolo = titolo.substring(0, titolo.lastIndexOf('/'));
					
				if (!map.hasOwnProperty(titolo))
					map[titolo] = 1;
				map[titolo] = map[titolo] + 1;
			}
			$('.aggrega-contributi-box-main ol').empty();
			$.each(map, function(index, count) {
				if (count >= 10) {
					var link = '<a target="_new" href="/wiki/Indice:' + index + '">' + index + '</a>';
					$('.aggrega-contributi-box-main ol').append('<li>' + link + ' (' + count + ')</li>');
				}
			});
		});
	};
	
	showAggregaContributiMenu = function() {
		mw.util.addPortletLink(
			'p-tb',
			'#',
			'Contributi aggregati',
			't-aggregaContributi',
			'Mostra in forma aggregata (per libro) i contributi di questo utente'
		);
	};
	
	var pagename = mw.config.get('wgPageName');
	if (mw.config.get('wgCanonicalNamespace') == 'User') {
		username = pagename.replace('Utente:', '');
		showAggregaContributiMenu();
	} else if (pagename.indexOf('Speciale:Contributi') != -1) {
		username = pagename.replace('Speciale:Contributi/', '');
		showAggregaContributiMenu();
	}
	
	$('#t-aggregaContributi').click(function(e) {
		e.preventDefault();
		array = [];
		$('.aggrega-contributi-box').remove();
		
		var box = '<div class="box aggrega-contributi-box">'
			+ '<div class="box-title">Contributi utente aggregati<span class="icon-close"></span></div>'
			+ '<div class="box-main aggrega-contributi-box-main"></div></div>';
		$("body").append(box);
		$('.aggrega-contributi-box').draggable();
		$('.aggrega-contributi-box').draggable('option', 'cancel', '.box-main');
		
		$('.aggrega-contributi-box-main').append('<p>Caricamento titoli: <span id="titoliCount">0</span> <span class="loader"></span>' 
			+ '<br><small>Sono elencati gli indici con almeno 10 contributi di questo utente nel namespace Pagina, dal più recente al più vecchio.</small></p>'
			+ '<ol></ol>');
		$('.aggrega-contributi-box .icon-close').click(function() {
			$('.aggrega-contributi-box').remove();
		});
		
		loadContribs(null, array);
	});
});