MediaWiki:Gadget-tb-formatHistory.js
Vai alla navigazione
Vai alla ricerca
Nota: Dopo aver salvato le preferenze, perché i cambi abbiano effetto, devi bypassare la cache del tuo browser. Mozilla / Firefox / Safari: tieni premuto Shift mentre clicchi Reload, o premi Ctrl-Shift-R (Cmd-Shift-R per Apple Mac); Google Chrome: premi Ctrl o Shift mentre clicchi F5; IE: premi Ctrl mentre clicchi Refresh, o premi Ctrl-F5; Konqueror:: clicca semplicemente il pulsante di Reload, o premi F5; se usi Opera devi cancellare completamente la chache nel menu Tools→Preferences.
// 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 //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 refactorChrono()
{
WEUpdateTextarea();
tagOpen = "{{cassetto|Cronologia|";
tagClose = "}}";
var txtarea;
txtarea = document.getElementById('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
testa = /^\s*((\*|\#)\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*\(discussione( \| contributi)?( \| blocca)?(.*)/mg;
// testo da visualizzare
risultato="* $2 [[Utente:$4|$4]] ([[Discussioni utente:$4|discussione]] <nowiki>|</nowiki> [[Speciale:Contributi/$4|contributi]] $8";
testo = testo.replace(testa,"");
testo = testo.replace(coda,"");
testo = testo.replace(regex,risultato);
testo = testo.replace(/\{\{(.*)\}\}/g,"<nowiki>{{</nowiki>$1<nowiki>}}</nowiki>");
return testo;
}
}
addOnloadHook(function() {
addToolbarButton('tb-formatHistory', 'javascript:refactorChrono()', '//upload.wikimedia.org/wikipedia/commons/3/3f/Button_attendre.png', 'Crono', 'Usage: Incollare la cronologia, selezionarla, premere il tasto');
});