MediaWiki:Gadget-trovaTestiSenzaPages.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() {
	trovaTestiSenzaPages = function(elencoTesti, cont) {
		console.log("Carica Pagine ns0 con versione cartacea a fronte da " + cont);
		var api = new mw.Api();
		
		params = {
			action: 'query', 
			format: 'json', 
			list: 'categorymembers', 
			cmnamespace: '0', 
			cmtype: 'page',
			cmlimit: 5000, 
			cmtitle: 'Categoria:Pagine ns0 con versione cartacea a fronte',
		};
		if (cont)
			params.cmcontinue = cont;
		
		api.post(params).done(function (data, textStatus, jqXHR) {
			elencoTesti = this.elencoTesti;
			if (data.query && data.query.categorymembers) {
				for (var i = 0; i < data.query.categorymembers.length; i++) {
					elencoTesti.push(data.query.categorymembers[i].title);
				}
			}
			
			if (data.continue) {
				trovaTestiSenzaPages(elencoTesti, data.continue.cmcontinue);
			} else {
				$('#titoliTotale').html(elencoTesti.length);
				$('.trova-titoli-box-main').append('<ol>');
				
				elencoTesti.forEach(function(t, j) {
					setTimeout(function() {
						api.get({
							action: 'parse', 
							format: 'json', 
							prop: 'wikitext', 
							page: t
						}).done(function (data, textStatus, jqXHR) {
							testo = data.parse.wikitext["*"];
							if (testo && testo.indexOf("<pages") == -1 && testo.toLowerCase().indexOf("{{taf|") == -1 && testo.toLowerCase().indexOf("{{testi a fianco|") == -1) {
								link = '<a target="_new" href="/wiki/' + data.parse.title + '">' + data.parse.title + '</a>';
								$('.trova-titoli-box-main ol').append('<li>' + link + '</li>');
							}
							count = parseInt($('#titoliCount').html()) + 1;
							totale = parseInt($('#titoliTotale').html());
							$('#titoliCount').html(count);
							$('#titoliPerc').html((count / totale * 100).toFixed(0));
						});
					}, j * 10);
				});
			}
		});
	};
	
	mw.util.addPortletLink(
		'p-tb',
		'#',
		'Trova testi senza pages',
		't-trovaTestiSenzaPages',
		"Trova testi che dovrebbero usare il tag pages ma non ce l'hanno"
	);
	
	termina = function() {
		$('.trova-titoli-box-main .loader').html('- terminato.').removeClass('loader');
		$('#stopTrovaTestiSenzaPages').remove();
	};
	
	$('#t-trovaTestiSenzaPages').click(function(e) {
		e.preventDefault();
		$('.trova-titoli-box').remove();
		
		var box = '<div class="box trova-titoli-box">'
			+ '<div class="box-title">Trova testi senza pages<span class="icon-close"></span></div>'
			+ '<div class="box-main trova-titoli-box-main"></div></div>';
		$("body").append(box);
		$('.trova-titoli-box').draggable();
		$('.trova-titoli-box').draggable('option', 'cancel', '.box-main');
		
		$('.trova-titoli-box-main').append('<p>Caricamento titoli: <span id="titoliCount">0</span> di <span id="titoliTotale">n.d.</span> (<span id="titoliPerc">0</span>%)</p>');
		$('.trova-titoli-box .icon-close').click(function() {
			$('.trova-titoli-box').remove();
		});
		
		elencoTesti = [];
		trovaTestiSenzaPages(elencoTesti);
	});
});