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'); });