User:Alex brollo/PersonalTools.js

ws={}; importStylesheet('User:Alex brollo/PersonalTools.css' ); // inizializzazione di localStorage.memoRegex come oggetto vuoto se indefinito if (localStorage.memoRegex===undefined) { localStorage.memoRegex=JSON.stringify({}); } if (localStorage.memoRegexEdited===undefined) { localStorage.memoRegexEdited=false;  // nota: viene salvato come stringa "false" } mw.activeElement=$("#wpTextbox1")[0]; $("textarea, input[type!='checkbox'][type!='button'][type!='search'][type!='hidden'][type!='submit'][type!='radio'][name!='wpAntispam']").focusin(function {	mw.activeElement=this; }); /** * http://www.openjs.com/scripts/events/keyboard_shortcuts/ * Version : 2.01.B * By Binny V A * License : BSD */ var shortcut = { 'all_shortcuts':{},//All the shortcuts are stored in this array 'add': function(shortcut_combination,callback,opt) { //Provide a set of default options var default_options = { 'type':'keydown', 'propagate':false, 'disable_in_input':false, 'target':document, 'keycode':false };		if(!opt) opt = default_options; else { for(var dfo in default_options) { if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo]; }		}		var ele = opt.target; if(typeof opt.target == 'string') ele = document.getElementById(opt.target); var ths = this; shortcut_combination = shortcut_combination.toLowerCase; //The function to be called at keypress var func = function(e) { e = e || window.event; if(opt.disable_in_input) { //Don't enable shortcut keys in Input, Textarea fields var element; if(e.target) element=e.target; else if(e.srcElement) element=e.srcElement; if(element.nodeType==3) element=element.parentNode; if(element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return; }			//Find Which key is pressed if (e.keyCode) code = e.keyCode; else if (e.which) code = e.which; var character = String.fromCharCode(code).toLowerCase; if(code == 188) character=","; //If the user presses, when the type is onkeydown if(code == 190) character="."; //If the user presses, when the type is onkeydown var keys = shortcut_combination.split("+"); //Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked var kp = 0; //Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken var shift_nums = { "`":"~",				"1":"!",				"2":"@",				"3":"#",				"4":"$",				"5":"%",				"6":"^",				"7":"&",				"8":"*",				"9":"(",				"0":")",				"-":"_",				"=":"+",				";":":",				"'":"\"",				",":"<",				".":">",				"/":"?",				"\\":"|"			};			//Special Keys - and their codes			var special_keys = {				'esc':27,				'escape':27,				'tab':9,				'space':32,				'return':13,				'enter':13,				'backspace':8,				'scrolllock':145,				'scroll_lock':145,				'scroll':145,				'capslock':20,				'caps_lock':20,				'caps':20,				'numlock':144,				'num_lock':144,				'num':144,				'pause':19,				'break':19,				'insert':45,				'home':36,				'delete':46,				'end':35,				'pageup':33,				'page_up':33,				'pu':33,				'pagedown':34,				'page_down':34,				'pd':34,				'left':37,				'up':38,				'right':39,				'down':40,				'f1':112,				'f2':113,				'f3':114,				'f4':115,				'f5':116,				'f6':117,				'f7':118,				'f8':119, 'f9':120, 'f10':121, 'f11':122, 'f12':123 };			var modifiers = { shift: { wanted:false, pressed:false}, ctrl : { wanted:false, pressed:false}, alt : { wanted:false, pressed:false}, meta : { wanted:false, pressed:false}	//Meta is Mac specific };			if(e.ctrlKey)	modifiers.ctrl.pressed = true; if(e.shiftKey)	modifiers.shift.pressed = true; if(e.altKey)	modifiers.alt.pressed = true; if(e.metaKey)  modifiers.meta.pressed = true; for(var i=0; k=keys[i],i 1) { //If it is a special key if(special_keys[k] == code) kp++; } else if(opt.keycode) { if(opt.keycode == code) kp++; } else { //The special keys did not match if(character == k) kp++; else { if(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase character = shift_nums[character]; if(character == k) kp++; }					}				}			}			if(kp == keys.length && 						modifiers.ctrl.pressed == modifiers.ctrl.wanted &&						modifiers.shift.pressed == modifiers.shift.wanted &&						modifiers.alt.pressed == modifiers.alt.wanted &&						modifiers.meta.pressed == modifiers.meta.wanted) { callback(e); if(!opt['propagate']) { //Stop the event //e.cancelBubble is supported by IE - this will kill the bubbling process. e.cancelBubble = true; e.returnValue = false; //e.stopPropagation works in Firefox. if (e.stopPropagation) { e.stopPropagation; e.preventDefault; }					return false; }			}		};		this.all_shortcuts[shortcut_combination] = { 'callback':func, 'target':ele, 'event': opt['type'] };		//Attach the function with the event if(ele.addEventListener) ele.addEventListener(opt['type'], func, false); else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func); else ele['on'+opt['type']] = func; },	//Remove the shortcut - just specify the shortcut and I will remove the binding 'remove':function(shortcut_combination) { shortcut_combination = shortcut_combination.toLowerCase; var binding = this.all_shortcuts[shortcut_combination]; delete(this.all_shortcuts[shortcut_combination]); if(!binding) return; var type = binding['event']; var ele = binding['target']; var callback = binding['callback']; if(ele.detachEvent) ele.detachEvent('on'+type, callback); else if(ele.removeEventListener) ele.removeEventListener(type, callback, false); else ele['on'+type] = false; } }

ws.alertMessage = function (title, text) { if (text === undefined) { text = title; title = undefined; }	var id = Math.random.toString(36).substring(5); var box = '' + 'x '; if (title) box += ' ' + title + ' ' ; box += text + ' '; $('#bodyContent').append(box); $('.alert-message-close').click(function {		$('.alert-message-close').parents('.alert-message').remove;	}); $("#" + id).fadeTo(3000, 500).slideUp(500, function {   	$("#" + id).slideUp(500).remove;	}); }; count = function(testo, stringa) { var n = 0; while (testo.indexOf(stringa) > -1) { n = n + 1; testo = testo.replace(stringa, ""); }           return n;        } ws.find_stringa = function(testo, idi, idf, dc, x) { var idip = testo.indexOf(idi); var idfp = testo.indexOf(idf, idip + idi.length) + idf.length; var vvalore=""; if (idip > -1 && idfp > -1) { if (x !== "") { while (count(testo.slice(idip, idfp), x) > count(testo.slice(idip, idfp), idf)) { idfp = testo.indexOf(idf, idfp) + idf.length; }       }        if (dc === 0) { vvalore = testo.slice(idip + idi.length, idfp - idf.length); } else { vvalore = testo.slice(idip, idfp); }   } else { vvalore = ""; }   return vvalore; } ws.produciLista = function(testo, s1, s2, delim, x) { var lista = []; var elemento=""; while (ws.find_stringa(testo, s1, s2, !0, x) > "") { elemento = ws.find_stringa(testo, s1, s2, !0, x); testo = testo.replace(elemento, ""); if (delim) { lista.push(elemento); } else { lista.push(elemento.slice(s1.length, -s2.length)); }   }    return lista; }

/* memoRegex */

ws.memoRegex=JSON.parse(localStorage.memoRegex); // https://la.wikisource.org/wiki/Usor:Alex_brollo/PersonalTools.js // caricamento dell'oggetto memoRegex per selezione di codice in modalità edit ws.caricaRegex=function { var memo=JSON.parse(localStorage.memoRegex); var toAdd=JSON.parse(ws.selection[1]); for (var m in toAdd) { memo[m]=toAdd[m]; }	localStorage.memoRegex=JSON.stringify(memo); ws.memoRegex=JSON.parse(localStorage.memoRegex); // alert("Le sostituzioni selezionate sono state caricate"); };

// lancio della serie di regex su header. body, footer ws.memoRegexRun=function { var testo=""; testo=$("#wpTextbox1").val; $.each(ws.memoRegex,function(index,value) {			// verifica se corre sectionEdit e se è attiva una section con nome			if (ws.sectionEdit && ws.sectionEdit.name!=="") {				// verifica se nel commento esiste un prefisso/suffisso, e se corrisponde alla section attiva				if (test(value[0],ws.sectionEdit.name)) {					testo=testo.replace(RegExp(index,value[2]),value[1]);				}			// altrimenti esegui			} else {				testo=testo.replace(RegExp(index,value[2]),value[1]);			}		}); $("#wpTextbox1").val(testo); if (mw.config.get("wgCanonicalNamespace")==="Page") { testo=$("#wpHeaderTextbox").val; $.each(ws.memoRegex,function(index,value) {				testo=testo.replace(RegExp(index,value[2]),value[1]);			}); $("#wpHeaderTextbox").val(testo); testo=$("#wpFooterTextbox").val; $.each(ws.memoRegex,function(index,value) {				testo=testo.replace(RegExp(index,value[2]),value[1]);			}); $("#wpFooterTextbox").val(testo); }	};

// caricamento dell'oggetto memoRegex da pagina remota di default (nDiscussioni_indice correlato alla pagina corrente) ws.caricaRegexRemoto=function { // se siamo in nsPagina tenta di caricare una memoRegex memorizzata in Discussioni indice if (mw.config.get("wgCanonicalNamespace")=="Page") { var paginaFonte=mw.config.get("wgPageName"); paginaFonte="Index_talk:"+(/.+:(.+)\//).exec(paginaFonte)[1]; console.log(paginaFonte); paginaFonte=$.ajax({url:"/w/index.php?action=raw&title="+paginaFonte+"&r="+Math.random,async:false}).responseText;console.log(paginaFonte); var codiceMemoregex=ws.find_stringa(paginaFonte,'{"','"]}',1); console.log(codiceMemoregex); var memo={}; try { memo=JSON.parse(codiceMemoregex); localStorage.memoRegex=JSON.stringify(memo); ws.memoRegex=JSON.parse(localStorage.memoRegex); ws.alertMessage("MemoRegex", "Le sostituzioni correlate alla pagina sono state caricate"); }		catch(err) { ws.alertMessage("MemoRegex", "La pagina Discussioni indice non esiste/non contiene memoRegex"); localStorage.memoRegex="{}"; }	// in ns diversi da nsPagina, tenta di caricare in modo additivo le regex contenuto in un testo selezionato } else { if (ws.selection[1]!=="") { ws.caricaRegex; }	} };

// funzione generica di salvataggio di pagina remota ws.salvaPagina = function (title,text,summary) { new mw.Api.postWithToken( 'edit', {			action: 'edit',			title: title,			summary: summary,			text: text,		}).done(function( data ) {	       if ( data && data.edit && data.edit.result == 'Success' ) {				console.log("OK, pagina " + title + "salvata");			}		}); };

// salvataggio memoRegex su pagina remota (nsDiscussioni_indice) ws.salvaRegexRemoto=function { if (mw.config.get("wgCanonicalNamespace")=="Page") { var paginaFonte=mw.config.get("wgPageName"); paginaFonte="Index talk:"+(/.+:(.+)\//).exec(paginaFonte)[1]; console.log(paginaFonte); var regexOld=""; var testoPaginaFonte=""; var regexFormattato=""; //paginaFonte="Index talk:"+paginaFonte; testoPaginaFonte = $.ajax({url:mw.config.get("wgServer")+"/w/index.php?action=raw&title="+paginaFonte,async:false}).responseText; var errore=ws.find_stringa(testoPaginaFonte,"<!DOCTYPE html>"," ",1); if (errore!=="") { testoPaginaFonte=testoPaginaFonte.replace(errore,""); }		regexFormattato=localStorage.memoRegex.replace(/("\],)/g,"$1\n");		regexOld=ws.find_stringa(testoPaginaFonte,'{"','"]}',1); 		if (regexOld!=="") {			testoPaginaFonte=testoPaginaFonte.replace(regexOld,regexFormattato);		} else {			testoPaginaFonte+="\n== memoRegex ==\n "+regexFormattato+" \n";		}		ws.salvaPagina(paginaFonte,testoPaginaFonte,"salvataggio memoregex");		ws.alertMessage("MemoRegex", "Regex have been saved into "+paginaFonte);	} else {		ws.alertMessage("MemoRegex", "Routine can only be called from nsPage");	} };

// funzione generica di creazione di bottoni in "bottoniera" ws.newButton=function(nome, funzione, azione, messaggio) { // azione è una stringa composta da v,e,s,h rispettivamente view,edit,submit,history // se nome è un oggetto svolgilo var p;	if (typeof(nome) === "string") { p = { nome: nome, funzione: funzione, azione: azione, messaggio: messaggio };	} else { p = nome; }	if (p.messaggio===undefined) p.messaggio="Nessun aiuto registrato"; if (p.classe===undefined) p.classe="baseButton"; if (p.stile===undefined) p.stile="background-color: #f0f0f0; border: 1px solid #d0d0d0; padding: 3px 6px;"+ "display: inline-block; font-size: 12px; margin: 0;  cursor: pointer;  border-radius:4px;"; if (p.namespaces!==undefined) { var listaNamespaces=p.namespaces.split("|"); for (var i=0; i<listaNamespaces.length; i+=1) { listaNamespaces[i]=$.trim(listaNamespaces[i]); if (["ns0", "Main", "Principale"].indexOf(listaNamespaces[i]) !== -1) { listaNamespaces[i] === ""; }		}		if ($.inArray(mw.config.get('wgCanonicalNamespace'),p.namespaces.split(","))==-1) return; } // Passo 1: se newtatooo non esiste, lo crea if ($("#newtattoo").length===0) creaBottoniera; // fine se azione=history if (mw.config.get('wgAction') === "history") { return; }	// normalizzazione function if (p.funzione.indexOf("(") === -1 && p.funzione.indexOf(")") === -1) { p.funzione += ""; }	// default: bottone presente in view, edit, if (p.azione === undefined) { p.azione = "ves"; }		// messaggio di default if (p.messaggio === undefined) { p.messaggio = "Nessun messaggio di aiuto registrato"; }	// valutazione condizione di visualizzazione if (mw.config.get('wgAction') === "edit" && p.azione.indexOf("e") === -1) { return; }	if (mw.config.get('wgAction') === "view" && p.azione.indexOf("v") === -1) { return; }	if (mw.config.get('wgAction') === "submit" && p.azione.indexOf("s") === -1) { return; }	// caso pulsante=immagine var html = ""; if (p.nome.substring(0, 2) == "//") { html = ''; }	// caso pulsante=label else { html = ' ' + p.nome + ' '; }	$("#newtattoo").append($(html)); return false; }; /* funzione di creazione della bottoniera Dopo l'esecuzione, esiste #newtattoo       */ function creaBottoniera { $('#' + (mw.user.options.get('skin') === 'modern' ? 'mw_' : '') + 'content') .append(' '); }

/* Confronta il suffisso o il prefisso di un nome di sezione nel commento di una regex, con il nome della sezione corrente; restituisce true o false.

Per indicare un prefisso: --testo Per indicare un suffisso: testo--

function test(commento,sezione) { var r_pref=/ (\w+)--/; var r_suff=/--(\w+)/; var ok=false; if (r_pref.test(commento) || r_suff.test(commento)) { if (r_pref.test(commento)) { if (RegExp("^"+r_pref.exec(commento)[1]).test(sezione)) ok=true; } else { if (r_suff.test(commento)) { if (RegExp(r_suff.exec(commento)[1]+"$").test(sezione)) ok=true; }		}	} else ok=true; return ok; } // comandi lanciati al momento del caricamento della pagina corrente // ws.newButton("regex up","ws.caricaRegex","es","Carica le sostituzioni selezionate"); ws.newButton("salva regex", "ws.salvaRegexRemoto","es","Scarica sulla pagina Discussioni indice le sostituzioni attive"); ws.newButton("carica regex", "ws.caricaRegexRemoto","es","Allinea memoRegex alla pagina Discussioni indice"); ws.newButton("esegui regex", "ws.memoRegexRun","es","Esegue le sostituzioni memorizzate"); if (mw.config.get("wgCanonicalNamespace")==="Page" && mw.config.get("wgAction")==="edit" ) { // caricamento del nome base pagina corrente localStorage.currentBasePage=(/.+?:(.+)\/\d+$/m).exec(mw.config.get("wgPageName"))[1]; // se localStorage.currentRegexBasePage non è definito definiscilo if (localStorage.currentRegexBasePage===undefined) { localStorage.currentRegexBasePage=localStorage.currentBasePage; }    // se le regex memorizzate sono relative a un'altra BasePage carica le regex appropriate if (localStorage.currentRegexBasePage!==localStorage.currentBasePage) { localStorage.currentRegexBasePage=localStorage.currentBasePage; mw.caricaRegexRemoto; } }

/* eis */

// Eis versione 28/10/20 // Rispetto alla versione precedente, aggiunta di un campo input "Pagina seccessiva" if (typeof ws === 'undefined') { ws={}; }

ws.eis={}; ws.eis.cp={}; (function ($,mw) {	// console.log("passo 1");	if (mw.config.get("wgCanonicalNamespace")!=="Page" || mw.config.get("wgAction")!=="edit") { 		// console.log("eis non eseguito"); 		return false;	} else {		ws.eis.base=/Page:(.+)\/\d+$/.exec(mw.config.get("wgPageName"))[1];		ws.eis.html=$.ajax({ // url: "/w/index.php?action=render&title=Indice:" + normUrl(ws.eis.base), url: "/w/index.php?action=render&title=Index:" + normUrl(ws.eis.base), async: false }).responseText;		// ws.eis.indexLength=$(".pagineDellEdizione a", $(ws.eis.html)).length;		 ws.eis.indexLength=$(".prp-index-pagelist a", $(ws.eis.html)).length;	}	// console.log("passo 2");	activate;

/* passo 1 : costruire l'ambiente */ // in nsPage, and in view mode, eis environment is built function normUrl(nomePagina) { return encodeURI(nomePagina.replace(/ /g,"_")).replace(/&/g,"%26"); }	function activate { // access button if (mw.user.options.get("gadget-barbaforcutanew")===null) { $(' eis ').click(function {				$("#wptextbox1").css("font-size",".9pc");				creaEis;				pp;			}).insertAfter($("#ca-edit")); // loading wikitext of three pages } else { $('eis ').click(function {				$("#wpTextbox1").css("font-size",".9pc");				creaEis;				pp;			}).appendTo($(".editButtons")); // loading wikitext of three pages }		return false; }

// initializing function, it disables some buttons, builds preview box, build action buttons function creaEis { // disabilitazioni $("#ca-proofreadPagePrevLink a, #ca-proofreadPageNextLink a").remove; $("#wpSave, #wpPreview, #wpDiff, #wikiPreview").remove; $(".mw-summary, .editCheckboxes").remove; $("#ca-eis").remove; $("a[title='Get the text by OCR']").remove; $('body').append(			'' +			' Cerca testo: ' +			'  ' +			' Sostituisci con: ' +			'  ' +			' ' +			'  '); var box=$(" "); if (mw.user.options.get("gadget-barbaforcutanew")===null) { box.resizable; $("#content").append(box); }		else { box.css("position","static").appendTo($(".editButtons")); }		var qb=' '+ ' <input tabindex="5" title="Pagine_SAL_00%" type="radio" value="0" name="wpQuality"> '+ ' <input tabindex="6" title="Pagine_SAL_50%" type="radio" value="2" name="wpQuality"> '+ ' <input tabindex="7" title="Pagine_SAL_25%" type="radio" value="1" name="wpQuality"> '+ ' <input tabindex="8" title="Pagine_SAL_75%" checked="" type="radio" value="3" name="wpQuality"> '+ ' <input tabindex="9" title="Pagine_SAL_100%" type="radio" value="4" name="wpQuality">  ';

qb+=' '+ '<button class="baseButton" id="wpPrev" style="display: inline; padding: 1px 2px;" type="button" title="Vai alla pagina precedente" > &lt; '+ '<button class="baseButton" id="wpNext" style="display: inline; padding: 1px 2px;" type="button" title="Vai alla pagina successiva" > &gt; '+ '<button class="baseButton" id="wpSaveStay" style="display: inline; padding: 1px 2px;" type="button" title="Salva le modifiche" > Salva '+ '<button class="baseButton" id="wpSave" style="display: inline; padding: 1px 2px;" type="button" title="Salva le modifiche e apri la pagina successiva" > Salva e procedi '+ '<button class="baseButton" id="wpPreview" style="display: inline; padding: 1px 2px;" type="button" title="Visualizza anteprima" > Anteprima '+ '<button class="baseButton" id="wpWikitext" style="display: none; padding: 1px 2px;" type="button" title="Visualizza anteprima" > Wikitesto '+ '<button class="baseButton" id="copiaUrl" style="display: inline; padding: 1px 2px;" type="button" title="Copia url immagine"> Copia url '+ ' Vai a pag: '+ ' <input type="text" id="wpNextPage" title="Pagina successiva" value="" size="4" >'+ ' <input type="text" id="wpComment" value="Ajax eis edit" size="25"> '+ '<img alt="✔" src="//upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/15px-Yes_check.svg.png" style="width:px; height:15px;display:none" id="ok_img"/> '; $("#editBoxEis").append($(qb)); $("span[class^='quality'] input").click(function {				$("#wpComment").val("/* new eis level"+$(this).attr("value")+" */");			}); $('#wpNextPage').keyup(function (e) {		   if (e.keyCode === 13) {		       	// controllo numero pagina		       	if ($("#wpNextPage").val*1>ws.eis.indexLength) {					$("#wpNextPage").val(ws.eis.indexLength);				}			$("#wpNext").click; //alert('ya!')		    }		}); $('#copiaUrl').click(function {	       navigator.clipboard.writeText('https:'+$('.prp-page-image img').attr('src'));	        mw.alertMessage("Image URL", "Image URL has been copied into clipboard");	    }); $("#wpNextPage").dblclick(function{			// controllo numero pagina			if ($("#wpNextPage").val*1>ws.eis.indexLength) {				$("#wpNextPage").val(ws.eis.indexLength);			}			$("#wpNext").click;		}); $("#wpExit").click(function{			window.open("/wiki/"+ws.eis.cp.title,"_self"); 		}); $("#wpSave").click(function{			pageSave(1);		}); $("#wpSaveStay").click(function{			pageSave(0);		}); $("#wpPreview").click(function{			// pp(prevPage);			$("#divPreview").css("display","block");			$("#wpPreview").css("display","none");			$("#wpWikitext").css("display","inline");			pagePreview;		}); $("#wpWikitext").click(function{			// pp(prevPage);			$("#divPreview").css("display","none");			$("#wpPreview").css("display","inline");			$("#wpWikitext").css("display","none");		}); $("#wpPreviewSave").click(function{			pagePreview;		}); $("#wpPrev").click(function{			pp(prevPage);		}); $("#wpNext").click(function{			// $("#divPreview").css("display","none");			pp(nextPage);		}); //creazione box divPreview var divPreview=$(" ").css({			"position":"absolute",			"top":"0",			"left":"0",			"width":"100%",			"height":$(".prp-page-image").css("height"),			"overflow":"auto",			"padding":"10px",			"z-index":"150",			"background-color":"white",			"border":"1px solid black",			"display":"none"			}).attr("id","divPreview") // .dblclick(function {$("#divPreview").toggle;}) .append($(" ").attr("id","previewContent")); $(" ").attr("style",'position:absolute; top:0;right:0;cursor:pointer; z-index:200;') .append($('<button class="baseButton" id="wpPreviewExit" style="display: inline; padding: 1px 2px;" type="button" title="Chiudi" > Annulla ').click(function{$("#divPreview").toggle;}));

$(".prp-page-content").css("position","relative").append(divPreview); $('#previewContent').mouseup(function {		   var text=$.trim(getSelectedText);		    // 		    if (text !== '') {		    	/* $("#findReplaceEis_box").css("display","block");		    	$("#findReplaceEis_find").val(text);		    	$("#findReplaceEis_replace").val(text).focus; */		    	$("#inputField").remove;		    	var s=getSelection;				var r=s.getRangeAt(0).getBoundingClientRect;				$(" ").attr("id","inputField").attr("type","text")					.css({"position":"fixed","top":r.y-3,"left":r.x,"height":r.height,"width":r.width})					.val(text)					.appendTo($(".pagetext"));				$("#inputField").focus;				$('#inputField').keyup(function(event) { var keycode = event.keyCode || event.which; if(keycode == '13') { gestisciInput(text); }					if(keycode == '27') { $("#inputField").remove; }				}).focusout(function{gestisciInput(text);});		   }		}); function gestisciInput(oldText) { var newText=$("#inputField").val; if (newText !== oldText) { ws.scriviBox(ws.leggiBox.replace(oldText,newText)); }	$("#inputField").remove; pagePreview; }		ws.eis.baseImg=$(".prp-page-image img").attr("src").match(/(.+page)\d+(-\d+px.+)/); // ws.eis.baseImg[1]+[numero pagina]+ws.eis.baseImg[2] è l'url dell'immagine // della pagina [numero pagina)]		// può essere caricato con 		// $(".prp-page-image img").attr("src",ws.eis.baseImg[1]+211+ws.eis.baseImg[2]);	}	function nextPage {		/*var np=ws.eis.cp.title.match(/(.+\/)(\d+)$/);		if (np[2]==ws.eis.indexLength-1) $("#wpNext").css("display","none"); else $("#wpNext").css("display","inline");		return np[1]+(np[2]*1+1);		*/		var np=ws.eis.cp.title.match(/(.+\/)(\d+)$/);		return np[1]+$("#wpNextPage").val;	}	function prevPage {		var np=ws.eis.cp.title.match(/(.+\/)(\d+)$/);		if (np[2]==2) $("#wpPrev").css("display","none"); else  $("#wpNext").css("display","inline");		return np[1]+(np[2]*1-1);	}		// splits wiki code into header,body,footer	function splitPagina(tpp) {		var testo = ["", "", ""];		testo[0] = tpp.substring(0, tpp.indexOf(" ") + 12);		testo[2] = tpp.substring(tpp.lastIndexOf(" "));		testo[1] = tpp.substring(testo[0].length, tpp.length - testo[2].length); return testo; }	// reads three pages code (current, previous, previous of previous) function pp(pageName) { if (pageName===undefined) pageName=mw.config.get("wgPageName"); pageName=pageName.replace(/_/g," "); var pagine={}; var t=(/(.+\/)(.+)$/).exec(pageName); // t[1]: base pagina t[2]: numero pagina var	t1=t[2]*1-1; var	t2=t[2]*1-2; ws.eis.t3=t[2]*1+1; // predispongo numero pagina successiva console.log(ws.eis.t3,ws.eis.indexLength); if (ws.eis.t3>ws.eis.indexLength) ws.eis.t3=t[2]; // controllo che non sia oltre la fine indice $("#wpNextPage").val(ws.eis.t3); // imposto il numero pagina successiva in wpNextPage var p_cor=pageName; var p_prec1=t[1]+t1; var p_prec2=t[1]+t2; console.log(p_prec2,p_prec1,p_cor); var api = new mw.Api; $("#firstHeading").text("Modifica eis di "+pageName); // lettura di tre pagine api.get( {		   action: 'query',		    prop: 'revisions',			titles:p_prec2+"|"+p_prec1+"|"+p_cor,			rvprop:"content"		} ).done( function ( data ) {			    ws.query=data.query.pages;			    $.each(data.query.pages, function(index,value) { if (ws.query[index].missing!==undefined) pagine[ws.query[index].title]=["","",""]; else pagine[ws.query[index].title]=splitPagina(ws.query[index].revisions[0]["*"]); });				ws.eis.p_2=[p_prec2,pagine[p_prec2]];				ws.eis.p_1=[p_prec1,pagine[p_prec1]];				ws.eis.p_0=[p_cor,pagine[p_cor]];				ws.p_2=ws.eis.p_2;				ws.p_1=ws.eis.p_1;				ws.p_0=ws.eis.p_0;				testoPag2Prec=ws.p_2[1];				testoPagPrec=ws.p_1[1];				// settaggi comuni				ws.eis.cp.basePageName=t[1];				ws.eis.cp.basePageNum=t[2];				ws.eis.cp.title=ws.eis.p_0[0];				mw.config.set("wgTitle",ws.eis.cp.title);				mw.config.set("wgPageName",/.+\//.exec(mw.config.get("wgPageName"))[0]+ws.eis.cp.basePageNum);				// oscuramento next se ultima pagina e prev se prima				if ( ws.eis.cp.basePageNum >= ws.eis.indexLength) $("#wpNext").css("display","none"); else $("#wpNext").css("display","inline");				if ( ws.eis.cp.basePageNum == 1) $("#wpPrev").css("display","none"); else $("#wpPrev").css("display","inline");				// modifica link Leggi e Modifica				if ($("#ca-view a").length===1) {					ws.eis.cp.linksUrl=$("#ca-view a").attr("href").replace(/\d+$/,ws.eis.cp.basePageNum); $("#ca-view a").attr("href",ws.eis.cp.linksUrl); $("#ca-edit a").attr("href",ws.eis.cp.linksUrl); }

var urlpc=/.+\//.exec($("#ca-nstab-page a").attr("href"))[0]+ws.eis.cp.basePageNum; $("#ca-nstab-page a").attr("href",urlpc).attr("target","_blank"); urlpc=/.+\//.exec($("#ca-talk a").attr("href"))[0]+ws.eis.cp.basePageNum; $("#ca-talk a").attr("href",urlpc).attr("target","_blank"); if ($("#croptool").length>0) { ws.eis.cp.croptool=$("#t-cropNew a").attr("href").replace(/\d+$/,ws.eis.cp.basePageNum); $("#t-cropNew a").attr("href",ws.eis.cp.croptool); }				var urlImg=$(".prp-page-image img").attr("src").match(/(.+page)(\d+)(-.+)/); ws.eis.cp.imageUrl=urlImg[1]+ws.eis.cp.basePageNum+urlImg[3]; // assegno valori alle variabili globali testoPagPrec e testo2PagPrec per renderli visibili a autoPt e autoRi7 testoPagPrec=ws.eis.p_1[1]; testo2PagPrec=ws.eis.p_2[1]; $("#radioQuality4").css("visibility","hidden"); $(".prp-page-image img").attr("src",ws.eis.cp.imageUrl); /* qui inserita routine per caricare l'immagine nel canvas OpenSeadragon Critica l'aggiunta del prefisso https: alla stringa url immagine */				mw.hook( 'ext.proofreadpage.osd-viewer-ready' ).add( function ( viewer ) {				   // Can use viewer or mw.proofreadpage.viewer - they're the same				    viewer				        .addSimpleImage( { url: 'https:'+ws.eis.cp.imageUrl } );				} );				if (ws.eis.p_0[1].toString===",,") { // caso pagina corrente non esistente // leggo la pagina... $.get( mw.config.get("wgServer")+"/w/index.php?title="+normUrl(mw.config.get("wgPageName"))+"&action=edit&redlink=1", function( data ) {						$("#wpTextbox1").val($("#wpTextbox1",$(data)).val);						ws.eis.cp.header="";						ws.eis.cp.footer="";						$("#wpHeaderTextbox").val(ws.eis.cp.header);						$("#wpFooterTextbox").val(ws.eis.cp.footer);						// eseguo autoRi, Rv, postOcr, regex						// preOCR;						$("#buttonautoRi").click;                       $("#buttonpostOCR").click;						// $("#button6").click;                        $("#buttonRunregex").click;						ws.eis.p_0[1][1]= $("#wpTextbox1").val;						ws.eis.cp.user=mw.config.get("wgUserName");						ws.eis.cp.level="1";						$("#radiobuttons input[value='"+ws.eis.cp.level+"']").click;						pagePreview;					}); } else { // caso pagina esistente ws.eis.cp.user=ws.eis.p_0[1][0].match(/user=\"([^"]*)\" \/>/)[1];					ws.eis.cp.level=ws.eis.p_0[1][0].match(/level=\"(\d+)\" /)[1];					ws.eis.cp.header=$.trim(ws.eis.p_0[1][0].replace(/<noinclude\><pagequality.+?>/,"").replace(" ",""));					ws.eis.cp.footer=$.trim(ws.eis.p_0[1][2].replace(" ","").replace(" ",""));					$("#wpHeaderTextbox").val(ws.eis.cp.header);					$("#wpFooterTextbox").val(ws.eis.cp.footer);					$("#wpTextbox1").val(ws.eis.p_0[1][1]);					// if level=3 and user is another one, or if level=4 display radiobutton4					if ( (ws.eis.cp.level==="3" && ws.eis.cp.user!==mw.config.get("wgUserName")) || ws.eis.cp.level==="4") $("#radioQuality4").css("visibility","visible");					$("#radiobuttons input[value='"+ws.eis.cp.level+"']").click;					pagePreview;				}		});		$(".prp-page-image img").css("top","0");		$("#wpTextbox1").scrollTop(0);	}	function chiudiEditBox {		$("#sfondoeis").toggle; }	function pageBuild { var template= ' <pagequality level="#LEVEL#" user="#USER#" />#HEADER# ' + '#BODY# #FOOTER#\n '; var wikicode= template.replace("#HEADER#",$("#wpHeaderTextbox").val) .replace("#BODY#",$("#wpTextbox1").val) .replace("#FOOTER#",$("#wpFooterTextbox").val); if (ws.eis.cp.level ===$("input:checked","#radiobuttons").val) { wikicode=wikicode.replace("#LEVEL#",ws.eis.cp.level).replace("#USER#", ws.eis.cp.user); } else {wikicode=wikicode.replace("#LEVEL#",$("input:checked","#radiobuttons").val) .replace("#USER#", mw.config.get("wgUserName")); }

return wikicode; }	function pageSave(azione) { var wikicode=pageBuild; new mw.Api.postWithToken( 'edit', {			action: 'edit',			title: ws.eis.cp.title,			summary:$("#wpComment").val,			text: wikicode,		}).done(function( data ) {	       if ( data && data.edit && data.edit.result === 'Success' ) {				$("#ok_img").toggle;				setTimeout(function { $("#ok_img").toggle; }, 500);				if (azione==1 && ws.eis.cp.basePageNum < ws.eis.indexLength) $("#wpNext").click;				if (azione==-1) $("#wpPrev").click;			} else {				alert("Errore nel salvataggio della pagina");			}		}); }	function pagePreview { // toggleButton generico (nasconde parent) /*	var toggleButton=$(' ') .attr("src","//upload.wikimedia.org/wikipedia/commons/f/f8/Tooltip-CloseButton.png") .attr("style",'position:absolute; top:0;right:0;cursor:pointer; z-index:200;') .click(function{$(this).parent.toggle;}); */		//caricamento preview var wikicode=pageBuild; // $("#divPreview").toggle; $.ajax({        	url: mw.util.wikiScript( 'api' ),        	data: {            	format: 'json',            	action: 'parse',				// contentmodel: 'proofread-page',				title:ws.eis.cp.title,				summary: "ajax preview",            	text: wikicode,            	time: $.now            	},        	dataType: 'json',        	type: 'POST',        	success: function( data ) {         		if ( data && data.parse ) {					$("#previewContent").html($(data.parse.text["*"]));

} else if ( data && data.error ) { alert( 'Error: API returned error code "' + data.error.code + '": ' + data.error.info ); } else { alert( 'Error: Unknown result from API.' ); }       		},        		error: function( xhr ) { alert( 'Error: Request failed.' ); }   	});	}	ws.pagePreview=pagePreview;	/* 	$("#findReplace_box input[value='OK']").click(function { if($("#divPreview")==="block") { pagePreview; }   }) */

function getSelectedText { if (window.getSelection) { return window.getSelection.toString; } else if (document.selection) { return document.selection.createRange.text; }   return ''; }

})(jQuery,mw);

/* findReplace */

$('body').append(			'<div id="findReplace_box" class="box" style="display:none;">' +			' Trova & Sostituisci<span class="icon-close findReplace_box_close"> ' +			' ' +			' Cerca (testo o espressione regolare): ' +			' <input type="text" id="findReplace_find" size="55"/> ' +			' Sostituisci con: ' +			' <input type="text" id="findReplace_replace" size="55"/> ' +			' Commento: '+			' <input type="text" id="findReplace_doc" size="55"/> ' +			' ' +			'<input type="checkbox" id="findReplace_regex"/><label for="findReplace_regex">Espressione regolare ' +			'<input type="checkbox" id="findReplace_maiusc"/><label for="findReplace_maiusc">Non distinguere maiuscole/minuscole ' +			'<input type="checkbox" id="findReplace_multiriga"/><label for="findReplace_multiriga">Multiriga ' +			'<input type="checkbox" id="findReplace_ricorda"/><label for="findReplace_ricorda">Ricorda questa sostituzione (<a target="_blank" href="/wiki/Aiuto:MemoRegex">MemoRegex</a>) ' + ' <input id="findReplace_box_ok" type="button" class="btn blue" value="Applica" />' + '<input type="button" class="btn blue findReplace_box_close" value="Chiudi" /> '); ws.selection=function (area){	/*	if(area===undefined){		if(mw.config.get("wgCanonicalNamespace")=="Page"||$("#editBox").length===1)			area=1;		else 			area=0;	}	var txtarea=$('textarea')[area];	var txt=$(txtarea).val;	*/	var txt=mw.activeElement.value;	var s=[];	s[0]=txt.substring(0,mw.activeElement.selectionStart);	s[1]=txt.substring(mw.activeElement.selectionStart,mw.activeElement.selectionEnd);	s[2]=txt.substring(mw.activeElement.selectionEnd);	return s; } ; // riscrive mw.activeElement e ristabilisce il focus/la selezione attiva // riceve un array tipo [testo precedente, testo selezionato, testo seguente] // pone il cursore a fine selezione ws.scriviSel=function(t) {	mw.activeElement.value=t.join("");	mw.activeElement.selectionStart=t[0].length;	mw.activeElement.selectionEnd= t[0].length + t[1].length; mw.activeElement.focus; } // idem, poi attiva la selezione ws.scriviSelAlt=function(t) { mw.activeElement.value=t.join(""); mw.activeElement.selectionStart=t[0].length + t[1].length; mw.activeElement.selectionEnd= t[0].length + t[1].length; mw.activeElement.focus; };

ws.toggleNote = function { var editbox = document.getElementsByName('wpTextbox1')[0]; var lista, marks, refs,i; if (editbox.value.indexOf("nota") == -1) { lista = ws.produciLista(editbox.value, "<ref", '</' + 'ref>', 1); lista = jQuery.grep(lista, function(n, i) {           return (n.indexOf('<ref ' + 'follow=') == -1);        }); for (i = 0; i < lista.length; i += 1) { editbox.value = editbox.value.replace(lista[i], "nota"); editbox.value = editbox.value + "\n" + lista[i]; }   } else { marks = count(editbox.value, '<ref' + '>') + count(editbox.value, '<ref ' + 'name=') + count(editbox.value, '<ref ' + 'group='); refs = count(editbox.value, "nota"); if (marks != refs) { alert("ATTENZIONE: discordanza fra numero delle note (" + marks + ") e numero dei segnaposti (" + refs + "). Controllare!"); return; }       lista = ws.produciLista(editbox.value, "<ref", '</' + 'ref>', 1); lista = jQuery.grep(lista, function(n, i) {           return (n.indexOf('<ref ' + 'follow=') == -1);        }); editbox.value = editbox.value.replace(/\n<ref/g, "<ref"); for (i = 0; i < lista.length; i += 1) { editbox.value = editbox.value.replace(lista[i], ""); }       for (i = 0; i < lista.length; i += 1) { editbox.value = editbox.value.replace("nota", lista[i]); }   } };

ws.mostraTrovaSostituisci = function { $('#findReplace_box').css("display", "block"); var t = ws.selection; $("#findReplace_find").attr("value", t[1]); $("#findReplace_replace").attr("value", t[1]).click; }; $('#findReplace_box_ok').click(function(e) {   ws.trovaSostituisci; }); $('.findReplace_box_close').click(function(e) {   ws.nascondiTrovaSostituisci; });

ws.nascondiTrovaSostituisci = function { $('#findReplace_box').css("display", "none"); };

ws.regexRepl = function(trova, sostituisci, modificatori) { if (modificatori === undefined) modificatori = 'g'; var regex = new RegExp(trova, modificatori); var testo = $('[name=wpTextbox1]').val; $('[name=wpTextbox1]').val(testo.replace(regex, sostituisci)); };

ws.trovaSostituisci = function { var trova = $('#findReplace_find').val; var sostituisci = $('#findReplace_replace').val .replace(/\\n/g, '\n').replace(/\\t/g, '\t'); //abilita \n e \t come caratteri speciali newline e tab var commento=$('#findReplace_doc').val; var isRegex = $('#findReplace_regex').is(':checked'); var isMaiusc = $('#findReplace_maiusc').is(':checked'); var isMultiriga = $('#findReplace_multiriga').is(':checked'); var isRicorda = $('#findReplace_ricorda').is(':checked'); var regexParams = 'g'; if (!isRegex) { //escape dei caratteri speciali delle regex trova = trova.replace(/[-[\]{}*+?.,\\^$|#\s]/g, "\\$&"); }   if (isMaiusc) { regexParams += 'i'; }   if (isMultiriga) { regexParams += 'm'; }   //applica la sostituzione nella pagina corrente regex = new RegExp(trova, regexParams); /* testo = $('[name=wpTextbox1]').val; $('[name=wpTextbox1]').val(testo.replace(regex, sostituisci)); */ // attivazione su tutti i tre campi se in nsPagina if (mw.config.get("wgCanonicalNamespace")==="Page") { for (i=0;i<3;i+=1) { ws.scriviBox(ws.leggiBox(i).replace(regex,sostituisci),i); }   } else { ws.scriviBox(ws.leggiBox.replace(regex,sostituisci)); }   // Temporanea disabilitazione //updatePreview; //se l'utente ha spuntato "Ricorda", salva in localStorage if (isRicorda) { // se localStorage.memoRegex esiste lo carico in ws.memoRegex if (localStorage.memoRegex!==undefined) ws.memoRegex=JSON.parse(localStorage.memoRegex); if (ws.memoRegex===undefined) ws.memoRegex={}; commento=commento.replace("(regex)",""); if (isRegex) { commento+="(regex)"; }       // aggiorno localStorage["regex"] ws.memoRegex[trova]=[commento,sostituisci,regexParams]; console.log("Passato per riga 549"); localStorage.memoRegex=JSON.stringify(ws.memoRegex); localStorage.memoRegexEdited=true; }

};

ws.leggiBox=function (area) { if (area === undefined) { if (mw.config.get('wgCanonicalNamespace') == "Page" || $("#editBox").length===1) area = 1; else area = 0; }	return $('textarea')[area] === undefined ? '' : $('textarea')[area].value; };

ws.scriviBox=function (testo, area, ss, se) { if (area === undefined || area === "") { if (mw.config.get('wgCanonicalNamespace') == "Page" || $("#editBox").length===1) { area = 1; } else { area = 0; }	}	$('textarea')[area].value = testo; // console.log("area:", area); if (ss !== undefined && se !== undefined) { $('textarea')[area].selectionStart = ss; $('textarea')[area].selectionEnd = se; } };

/* FI */

/* inserimento template FI standard */ if ( typeof $ != 'undefined' && typeof $.fn.wikiEditor != 'undefined' && mw.config.get("wgCanonicalNamespace")==="Page") {$( function {   var nomeBase, numeroPagina, nomeImmagine, fi;    nomeBase=mw.config.get("wgTitle").match(/(.+)\./)[1].replace("Page:","");    numeroPagina=mw.config.get("wgTitle").match(/\/(\d+)$/)[1];    nomeImmagine=nomeBase+" (page #1 crop).jpg".replace("#1",numeroPagina);    fi="".replace("#1",nomeImmagine);    // console.log(nomeImmagine);    $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', { 'section': 'advanced', 'group': 'insert', 'tools': {'FI': { label: 'Inserisci template FI', type: 'button', icon: '//upload.wikimedia.org/wikipedia/commons/6/68/Pulsante_img.png', action: {type: 'callback', execute: function { /* nomeBase=mw.config.get("wgTitle").match(/(.+)\./)[1]; numeroPagina=mw.config.get("wgTitle").match(/\/(\d+)$/)[1]; nomeImmagine=nomeBase+" (page #1 crop).jpg".replace("#1",numeroPagina);*/ fi="".replace("#1",nomeImmagine); // console.log("Nuova versione gadget FI"); //mw.toolbar.insertTags(fi,""); $(mw.activeElement).textSelection( 'encapsulateSelection', { pre: fi, post: '' } ); }          }       } }});});}

// routine per newRi ws.newRi=function { var currentHeader=ws.leggiBox("0"); // se manca un Rh oppure esiste ma è vuoto if (/{{ri/i.test(currentHeader)===false || currentHeader.indexOf("{{Rh|||}}")!==-1) { var header=ws.find_stringa(testo2PagPrec[0],"/>"," ",0);

header=ws.newAutoRi(header); // se header contiene Rh, rulla if (header.indexOf("{{Rh")!==-1) ws.scriviBox(header,"0"); } };

ws.newAutoRi=function(header) { function incrementa(t){ var pagina=/(\d+)/.exec(t)[1]; var pnew=(pagina*1+2)+""; return t.replace(pagina,pnew); }	// normalizzazione Rh	header=header.replace("{{rh|","{{Rh|");

var oldRi=ws.find_stringa(header,"{{Rh|","}}",1,"{{"); if (oldRi==="") return header; var parsedRi=ws.parseTemplate("Rh",oldRi); // analisi var valido=[]; var pagina=""; for (i=1;i<4;i+=1) { if (/^\d+$/.test(parsedRi[0][i]) || /— \d+ —/.test(parsedRi[0][i]) || /\|\d+}/.test(parsedRi[0][i])) valido.push(i); }	// console.log(valido,parsedRi); switch (valido.length) { case 0: break; case 1: // pagina=/(\d+)/.exec(parsedRi[0][valido[0]])[1]; parsedRi[0][valido[0]]=incrementa(parsedRi[0][valido[0]]); break; default: break; }

return header.replace(oldRi,ws.rewriteTemplate(parsedRi)); };

ws.parseTemplate=function(template, testo) { function cod(testo) { var l = ws.produciLista(testo, "{"+"{", "}}", 1, "{{"); for (var i = 0; i < l.length; i += 1) { testo = testo.replace(l[i], l[i].replace(/\|/g, "__!__").replace(/=/g, "__eq__")); }		l = ws.produciLista(testo, "", "", 1, "[[");		for (i = 0; i < l.length; i += 1) {			testo = testo.replace(l[i], l[i].replace(/\|/g, "__!__"));		}		return testo;	}	function decod(testo) {		testo = testo.replace(/__!__/g, "|").replace(/__eq__/g, "=");		return testo;	}	if (testo === undefined) testo = ws.leggiBox;   var cap=template.substring(0,1).toLocaleUpperCase+template.substring(1);    testo=testo.replace("{{"+cap,"{{"+template);	var t = ws.find_stringa(testo, "{"+"{" + template, "}}", 1, "{{");	var l = []; // lista delle keys	t = "0=" + t.substring(2, t.length - 2); // nome del template in parametro "0"	l.push["0"];	var ts = {};	var n = 1;	t = cod(t);	t = t.split("|");

// element for element for (i = 0; i < t.length; i += 1) { // case param is positional if (t[i].indexOf("=") == -1) { t[i] = n + "=" + t[i]; n = n + 1; }		var els = []; els[0] = t[i].substring(0, t[i].indexOf("=")).trim; els[1] = t[i].substring(t[i].indexOf("=") + 1).trim; if (els[1][els[1].length - 1] == "\n") els[1] = els[1].substring(0, els[1].length - 1);

ts[els[0]] = decod(els[1]); l.push(els[0]); }

return [ts, l]; };

ws.rewriteTemplate=function(x,mini) { if (mini===undefined) mini=true; var testo = ""; if (mini) { $.each(x[1], function (indice, valore) {			if ((/^\d+$/).test(valore)) 				testo += "|" + x[0][valore];			else				testo += "|" + valore + "=" + x[0][valore];		}); testo = "{" + "{" + testo.substring(1) + "}}"; } else { $.each(x[1], function (indice, valore) {			if (valore != "0") testo += " | " + valore + " = " + x[0][valore] + "\n";		}); testo = "{{" + x[0]["0"] + "\n" + testo + "}}\n"; testo = testo.replace(/\n\s\|\s\d*\s=\s/g, "\n | "); }	return testo; }

/* attivazione shortcuts e buttons */ // shortcut.add("Ctrl+i", function {$(mw.activeElement).textSelection( 'encapsulateSelection', { pre:"", post: "" } );});

shortcut.add("Ctrl+i", function {$(mw.activeElement).textSelection( 'encapsulateSelection', { pre:"", post: "" } );});

shortcut.add("Ctrl+b", function {$(mw.activeElement).textSelection( 'encapsulateSelection', { pre:"", post: "" } );});

shortcut.add("Ctrl+Shift+s", function {$(mw.activeElement).textSelection( 'encapsulateSelection', { pre:"{{Sc|", post: "}}" } );});

shortcut.add("Ctrl+Shift+c", function {$(mw.activeElement).textSelection( 'encapsulateSelection', { pre:"{{C|class=|", post: "}}" } );});

shortcut.add("Ctrl+Alt+n", function {   var t = ws.selection;    if (t[1].length < 5) {        t[1] = "nota";    } else {        t[1] = " ";    }    ws.scriviSelAlt(t); });

shortcut.add("Ctrl+Alt+g", function {$(mw.activeElement).textSelection( 'encapsulateSelection', { pre:"{{Greek|", post: "|?}}" } );});

shortcut.add("Ctrl+Shift+f", ws.mostraTrovaSostituisci); ws.newButton("FR","ws.mostraTrovaSostituisci","es","carica Find & Replace");

shortcut.add("Alt+7", function {ws.memoRegexRun; if (ws.leggiBox(0).indexOf("{{Rh")===-1) ws.newRi;});

shortcut.add("Alt+1",function {$(".quality1 input").click; $("#wpSave").click; return false;});

shortcut.add("Alt+3",function {$(".quality3 input").click; $("#wpSave").click; return false;});

shortcut.add("Alt+0",function {$(".quality0 input").click; $("#wpSave").click; return false;});

shortcut.add("Alt+8",function {   // eliminazione acapo che esclude sia i testi che le righe che iniziano con  ";:#*" (liste html)    var editbox = document.getElementsByName('wpTextbox1')[0];    var poemNumber=0;    var listaGlobale=[];    // fase 1: codifica    if (editbox.value.indexOf("<poem") != -1) {        lista = ws.produciLista(editbox.value, "<poem", " ", 1);        listaGlobale=[].concat(lista);        poemNumber=lista.length;        for (i = 0; i <= lista.length - 1; i = i + 1) {            marcatore = "###" + i + "###";            editbox.value = editbox.value.replace(lista[i], marcatore);        }    }    editbox.value=editbox.value.replace("{{Poem", "{{poem").replace("{{Mlb", "{{mlb");    if (editbox.value.indexOf("{{poem") != -1) {        lista = produciLista(editbox.value, "{" + "{poem", "}}", 1,"{{");        listaGlobale=listaGlobale.concat(lista);        for (i = 0; i <= lista.length - 1; i = i + 1) { marcatore = "###" + (i+poemNumber) + "###"; editbox.value = editbox.value.replace(lista[i], marcatore); }   }    if (editbox.value.indexOf("{{mlb") != -1) { lista = ws.produciLista(editbox.value, "{" + "{mlb", "}}", 1,"{{"); listaGlobale=listaGlobale.concat(lista); for (i = 0; i <= lista.length - 1; i = i + 1) { marcatore = "###" + (i+poemNumber) + "###"; editbox.value = editbox.value.replace(lista[i], marcatore); }   }    // fase2: eliminazione acapo singoli, con conservazione dei multipli //if (mw.config.get("wgTitle").indexOf("Trattato di archeologia (Gentile).djvu")==-1) { editbox.value = editbox.value.replace(/([^>}\n])\n([^<\n\:\;\*\#\|\{])/g, '$1 $2'); //linux editbox.value = editbox.value.replace(/([^>}\r\n])\r\n([^<\r\n\:\;\*\#\|\{])/g, '$1 $2'); //windows //   }    // eliminazione sequenze di spazi, sostituiti da spazio singolo editbox.value = editbox.value.replace(/ +/g, ' '); // sostituzione spazio dopo marcatore editbox.value=editbox.value.replace(/### /g,"###\n"); // fase 3: decodifica if (editbox.value.indexOf("###0###") != -1) { for (i = 0; i <= listaGlobale.length - 1; i = i + 1) { marcatore = "###" + i + "###"; editbox.value = editbox.value.replace(marcatore, listaGlobale[i]); }   }    // fase 4: sistemazione a capo attorno a poem //editbox.value=editbox.value.replace(/ /g,"\n ").replace(/<\/poem> /g," \n"); editbox.value=editbox.value.replace(/### /g,"###\n"); //updatePreview; });

shortcut.add("Alt+6",function {   textbox = document.getElementsByName('wpTextbox1')[0];    testo = textbox.value;    poems = ws.produciLista(testo, " ", " ", 1);    for (i = 0; i < poems.length; i += 1) {        testo = testo.replace(poems[i], "[#" + i + "#]");    }    testo = testo.replace(/ \n/g, "\n").replace(/([\.\?\!]\n)([^\n])/g, '$1\n$2');    for (i = 0; i < poems.length; i += 1) {        testo = testo.replace("[#" + i + "#]", poems[i]);    }    textbox.value = testo;    //updatePreview; });

// rimuovi prima riga della pagina shortcut.add("Alt+5",function {   var editbox = document.getElementsByName('wpTextbox1')[0];    if (editbox.value.substring(0, 6) == " ") {        editbox.value = editbox.value.replace(/<poem\>.+\n/, " ");    } else {        editbox.value = editbox.value.replace(/.+\n+/, "");    } }); // toggle maiuscole-minuscole nella selezione ws.up_low=function{ var t=ws.selection; if(t[1]===t[1].toLocaleUpperCase) t[1]=t[1].toLocaleLowerCase;else t[1]=t[1].toLocaleUpperCase; ws.scriviSel(t);};

ws.newButton("A↔a", "ws.up_low", "es","Applica maiuscolo/minuscolo alla selezione, alternandole");

// Nascondi-visualizza pannello sinistro ws.full_page=function{ $("#mw-panel").toggle; if ($("#content").css("margin-left")=="0px") $("#content").css("margin-left", "176px"); else $("#content").css("margin-left", "0"); }; ws.newButton("n↓↑","ws.toggleNote","es","Sposta le note");

ws.newButton("fp", "ws.full_page", "es","Nascondi-visualizza pannello sinistro"); ws.shortcut=shortcut; importScript("User:Alex_brollo/PersonalButtons.js");