Utente:Baruneju/cronologia.js

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

Questa pagina definisce alcuni parametri di aspetto e comportamento generale di tutte le pagine. Per personalizzarli vedi Aiuto:Stile utente.


Nota: dopo aver salvato è necessario pulire la cache del proprio browser per vedere i cambiamenti (per le pagine globali è comunque necessario attendere qualche minuto). Per Mozilla / Firefox / Safari: fare clic su Ricarica tenendo premuto il tasto delle maiuscole, oppure premere Ctrl-F5 o Ctrl-R (Command-R su Mac); per Chrome: premere Ctrl-Shift-R (Command-Shift-R su un Mac); per Konqueror: premere il pulsante Ricarica o il tasto F5; per Opera può essere necessario svuotare completamente la cache dal menù Strumenti → Preferenze; per Internet Explorer: mantenere premuto il tasto Ctrl mentre si preme il pulsante Aggiorna o premere Ctrl-F5.

// Author: it:Utente:Baruneju
// Usage:
//     * incollare la cronologia
//     * selezionare la cronologia incollata
//     * premere il tasto
// Si otterrà un cassetto intitolato "Cronologia" contente tutto il testo selezionato
// in cui a ogni riga della cronologia incollata saranno aggiunti wikilink alla pagina utente, 
// alla pagina di discussione e ai contributi.
// Eventuali oggetti di modifica contenenti richiami a template saranno circondati da <nowiki>
// per evitare espansione del template. La parte finale con "(annulla)" sarà rimossa.
// Il codice deriva da insertTags presente in http://it.wikipedia.org/skins-1.5/common/edit.js
// La funzione "sostituzione" e le regex sono opera mia quindi richiedo la citazione dell'autore :-P
function refactorChronoDevel()
{
    WEUpdateTextarea();
 
    tagOpen = "{{cassetto|Cronologia|2=";
    tagClose = "}}";
    var txtarea;
    
    txtarea = $('wpTextbox1');
    
    var selText, isSample = false;

    if (document.selection  && document.selection.createRange) { // IE/Opera

	//save window scroll position
	if (document.documentElement && document.documentElement.scrollTop)
		var winScroll = document.documentElement.scrollTop
	else if (document.body)
		var winScroll = document.body.scrollTop;
	//get current selection  
	txtarea.focus();
	var range = document.selection.createRange();
	selText = range.text;
	
	range.text = sostituzione(range.text);
	range.text = tagOpen + range.text + tagClose;
	range.select();   
	//restore window scroll position
	if (document.documentElement && document.documentElement.scrollTop)
		document.documentElement.scrollTop = winScroll
	else if (document.body)
		document.body.scrollTop = winScroll;

} else if (txtarea.selectionStart || txtarea.selectionStart == '0') { // Mozilla

	//save textarea scroll position
	var textScroll = txtarea.scrollTop;
	//get current selection
	txtarea.focus();
	var startPos = txtarea.selectionStart;
	var endPos = txtarea.selectionEnd;
	selText = txtarea.value.substring(startPos, endPos);
	
	selText = sostituzione(selText)

	txtarea.value = txtarea.value.substring(0, startPos)
		+ tagOpen + selText + tagClose
		+ txtarea.value.substring(endPos, txtarea.value.length);
	//set new selection
	if (isSample) {
		txtarea.selectionStart = startPos + tagOpen.length;
		txtarea.selectionEnd = startPos + tagOpen.length + selText.length;
	} else {
		txtarea.selectionStart = startPos + tagOpen.length + selText.length + tagClose.length;
		txtarea.selectionEnd = txtarea.selectionStart;
	}
	//restore textarea scroll position
	txtarea.scrollTop = textScroll;
    }
    WEUpdateFrame();

    function sostituzione(testo)
    {
  	//regex per eliminare la testa
	testa1 = /^\s*(\*|\#)/mg;
	testa2 = /^\s*(\(corr\)\s*\(prec\)|\(diff\))/mg;
        // regex per eliminare la coda
        coda = /\((rollback \| )?annulla\)$/mg;
        //regex principale
        regex = /^(\s)*(\d\d:\d\d,\s*\d\d?\s*[a-z][a-z][a-z]\s*\d\d\d\d\s*)(\. \. )?(([^\(])*)\s*\([dD]iscussione( \| contributi)?( \| blocca)?(.*)/mg;
        // testo da visualizzare
        risultato="* $2 [[Utente:$4|$4]] ([[Discussioni utente:$4|discussione]] <nowiki>|</nowiki> [[Speciale:Contributi/$4|contributi]] <nowiki>$8</nowiki>";

	testo = testo.replace(testa1,"");
	testo = testo.replace(testa2,"");
        testo = testo.replace(coda,"");
        testo = testo.replace(regex,risultato);
        return testo;
    }
}