MediaWiki:Gadget-iconeSAL.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() {
	arrayMese = new Array(" ", "gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre");

	addQuality = function (form, value) {
		var text = "";
		switch (value) {
		case "25%":
			text = "SAL 25%";
			break;
		case "50%":
			text = "SAL 50%";
			break;
		case "75%":
			text = "SAL 75%";
			break;
		case "100%":
			text = "SAL 100%";
			break;
		}
	
		form.elements.wpSummary.value = "Porto il SAL a " + text;
		s = form.elements.wpTextbox1.value;
	
		var qTestoRegexp = /\{\{[Qq]ualità.*?\|arg=(.*?)\}\}/;
		var match = qTestoRegexp.exec(s);
		var argomentoTesto = "Da definire";
		if (match) {
			argomentoTesto = match[1];
		}
		deleteAvzRegex = new RegExp("\{\{Qualità(.*?)\}\}", "gi");
		s = s.replace(deleteAvzRegex, "");
		var avzDate = new Date(); // Ottengo la data
		var dateString = avzDate.getDate() + " " + arrayMese[avzDate.getMonth() + 1] + " " + avzDate.getFullYear(); // Setto la stringa della data. Formato: giorno mese anno
		form.elements.wpTextbox1.value = "{" + "{Qualità|avz=" + value + "|data=" + dateString + "|arg=" + argomentoTesto + "}" + "}" + s;
	};

	addQualityButtons = function() {
		//esci se siamo in una pagina di disambigua
		if ($("#wpTextbox1").val().match(/\{\{[Dd]isambigua/)) return;
	
		if (mw.config.get('wgTitle').match(/^Pagina principale/)) return;
	
		container = $('<div>').addClass('oo-ui-widget').addClass('oo-ui-widget-enabled');
		body = $('<span>').attr('id', 'wpQuality-container');
		quality1 = $('<span class="quality1 oo-ui-widget oo-ui-widget-enabled oo-ui-inputWidget oo-ui-radioInputWidget" title="Testo incompleto (25%)"><input type="radio" name="quality" value="25%" onclick="addQuality(this.form,this.value)"><span></span></span>');
		quality2 = $('<span class="quality2 oo-ui-widget oo-ui-widget-enabled oo-ui-inputWidget oo-ui-radioInputWidget" title="Testo completo, ma da formattare (50%)"><input type="radio" name="quality" value="50%" onclick="addQuality(this.form,this.value)"><span></span></span>');
		quality3 = $('<span class="quality3 oo-ui-widget oo-ui-widget-enabled oo-ui-inputWidget oo-ui-radioInputWidget" title="Testo completo e formattato, da rileggere (75%)"><input type="radio" name="quality" value="75%" onclick="addQuality(this.form,this.value)"><span></span></span>');
		quality4 = $('<span class="quality4 oo-ui-widget oo-ui-widget-enabled oo-ui-inputWidget oo-ui-radioInputWidget" title="Testo riletto usando la fonte cartacea (100%)"><input type="radio" name="quality" value="100%" onclick="addQuality(this.form,this.value)"><span></span></span>');
		link = $('<label for="wpQuality-container">&nbsp;<a href="/wiki/Aiuto:Stato_di_Avanzamento_del_Lavoro" target="_blank" title="Pagina di aiuto sul significato delle icone (si apre in una nuova finestra)">Cosa significano le icone?</a></label>');
		body.append(quality1, quality2, quality3, quality4);
		container.append(body, link);
		$('.editCheckboxes > .oo-ui-layout').append(container);
	
		//imposta a checked il bottone in base alla qualità del testo
		var str = $("#wpTextbox1").val();
		var re = /\{\{[Qq]ualità\|avz=([0-9]*%)/;
		var m = str.match(re);
	
		if (m) {
			switch (m[1]) {
			case "100%":
				quality4.find('input').prop('checked', true);
				break;
			case "75%":
				quality3.find('input').prop('checked', true);
				break;
			case "50%":
				quality2.find('input').prop('checked', true);
				break;
			default:
				quality1.find('input').prop('checked', true);
			}
		}
		
		//se ci sono Pagine al 25%, 50% o 75%, non permettere di portare al 100% l'intero testo (si applica ai testi proofread)
		if (parseInt($('table.pr_quality td.quality1').attr('width')) + 
			parseInt($('table.pr_quality td.quality2').attr('width')) + 
			parseInt($('table.pr_quality td.quality3').attr('width')) > 0) {
				
		  	$('.editCheckboxes span.quality4 input[name=quality]').attr('disabled','disabled');
		}
	};

	addQualityButtonsIndex = function() {
		container = $('<div>').addClass('oo-ui-widget').addClass('oo-ui-widget-enabled');
		body = $('<span>').attr('id', 'wpQuality-container');
		quality1 = $('<span class="quality1 oo-ui-widget oo-ui-widget-enabled oo-ui-inputWidget oo-ui-radioInputWidget" title="Ci sono ancora pagine incomplete (25%)"><input type="radio" name="quality" value="25%" onclick="addQualityIndex(this.form,this.value)"><span></span></span>');
		quality2 = $('<span class="quality2 oo-ui-widget oo-ui-widget-enabled oo-ui-inputWidget oo-ui-radioInputWidget" title="Tutte le pagine sono complete, ma alcune sono ancora da formattare (50%)"><input type="radio" name="quality" value="50%" onclick="addQualityIndex(this.form,this.value)"><span></span></span>');
		quality3 = $('<span class="quality3 oo-ui-widget oo-ui-widget-enabled oo-ui-inputWidget oo-ui-radioInputWidget" title="Tutte le pagine sono complete e formattate, ma alcune sono ancora da rileggere (75%)"><input type="radio" name="quality" value="75%" onclick="addQualityIndex(this.form,this.value)"><span></span></span>');
		quality4 = $('<span class="quality4 oo-ui-widget oo-ui-widget-enabled oo-ui-inputWidget oo-ui-radioInputWidget" title="Tutte le pagine sono state rilette (100%)"><input type="radio" name="quality" value="100%" onclick="addQualityIndex(this.form,this.value)"><span></span></span>');
		link = $('<label for="wpQuality-container">&nbsp;<a href="/wiki/Aiuto:Stato_di_Avanzamento_del_Lavoro" target="_blank">Cosa significano le icone?</a></label>');
		body.append(quality1, quality2, quality3, quality4);
		container.append(body, link);
		$('.editCheckboxes > .oo-ui-layout').append(container);
	
		switch ($("#editform input[name=wpprpindex-Qualità]").val()) {
		case "100%":
			quality4.find('input').prop('checked', true);
			break;
		case "75%":
			quality3.find('input').prop('checked', true);
			break;
		case "50%":
			quality2.find('input').prop('checked', true);
			break;
		default:
			quality1.find('input').prop('checked', true);
		}
	
		//nascondi il campo qualità nel form dell'indice
		$("#editform input[name=wpprpindex-Qualità]").parents('.oo-ui-fieldLayout').hide();
	};

	//imposta il nuovo valore del SAL nel campo Qualità 
	addQualityIndex = function(form, value) {
		form.elements.wpSummary.value = "Porto il SAL a SAL " + value;
		form.elements["wpprpindex-Qualità"].value = value;
	};

	if (mw.config.get("wgNamespaceNumber") === 0) {
		addQualityButtons();
	} else if (mw.config.get("wgNamespaceNumber") == 110 && mw.config.get('wgPageName').indexOf('/') == -1) {
		addQualityButtonsIndex();
	}
});