Utente:Elcairo/commandlinedev.js
Da Wikipedia, l'enciclopedia libera.
Per un aiuto sull'uso di questa pagina vedi Aiuto:Preferenze.
Nota: dopo aver salvato, devi pulire la cache del tuo browser per vedere i cambiamenti: Mozilla: clicca su reload (oppure ctrl-r), IE / Opera: ctrl-f5, Safari: cmd-r, Konqueror ctrl-r.
/* <pre><nowiki> */ /**** Command Line Start ****/ /* Commandline versione 1.0.3 Scritto da [[Utente:Salvatore Ingala]]; contiene alcuni spezzoni di codice di Timendum e Jalo. Rilasciato ai sensi delle license GFDL e GPL. */ if (typeof(arrayArgument) == 'undefined'){ //non sovrascriviamo se è già stato definito arrayArgument = new Array(" ", "aeronautica", "Africa", "agricoltura", "album musicali", "allevamento", "alpinismo", "animali", "anime e manga", "antropologia", "antroponimi", "apicoltura", "archeologia", "architettura", "arte", "arti divinatorie", "arti marziali", "astronomia", "atletica", "automobilismo", "aziende", "baseball", "Bisanzio", "biografie", "biologia", "blues", "botanica", "buddismo", "calcio", "canottaggio", "cattolicesimo", "chimica", "ciclismo", "cinema", "classica", "cristianesimo", "cucina", "curling", "danza", "diritto", "ebraismo", "ecologia", "economia", "editoria", "educazione", "Europa", "F1", "film", "filosofia", "fisica", "font", "fotografia", "fumetti", "funghi", "gastronomia", "GDR", "genetica", "geografia", "Giappone", "giochi", "golf", "guerra", "Guerre Stellari", "Harry Potter", "hockey", "informatica", "ingegneria", "hip hop", "jazz", "letteratura", "LGBT", "lingue", "linguistica", "mare", "matematica", "meccanica", "medicina", "metal", "mineralogia", "mitologia", "motociclismo", "musei", "musica", "musica elettronica", "nautica", "neopaganesimo", "numismatica", "nuoto", "paleontologia", "pallacanestro", "pallamano", "pallanuoto", "pallavolo", "pattinaggio", "pesca sportiva", "piante", "politica", "Pokémon", "psicologia", "pugilato", "punk", "radio", "religione", "rock", "rugby", "santi", "scacchi", "scienza", "scherma", "sci", "sicurezza", "skeleton", "sociologia", "software libero", "solidarietà", "sport", "sport invernali", "stadi", "Star Trek", "storia", "storia antica", "storia contemporanea", "storia medievale", "storia moderna", "subacquea", "Taoismo", "teatro", "telecomunicazioni", "televisione", "tennis", "tiro con l'arco", "Tolkien", "trasporti", "turismo", "vela", "videogiochi", "vini","voci comuni", "Walt Disney", "wrestling", "zoologia"); } arrayLingue = new Array("bulgara", "catalana", "cinese", "danese", "esperanto", "finlandese", "francese", "giapponese", "greca", "inglese", "islandese", "italiana", "latina", "lettone", "maltese", "moldava", "norvegese", "olandese", "polacca", "portoghese", "rumena", "russa", "slovena", "spagnola", "svedese", "tedesca", "ucraina", "ungherese"); //IMPOSTAZIONI PREDEFINITE if (typeof(fixformat_list) == 'undefined'){ //nessuna sostituzione impostata, usa quelle standard fixformat_list = new Array( [/\’/g, "'"], [/ '([\w\ ]+)' /g, ' "$1" '], [/“/g,'"'], [/”/g,'"'], [/–/g, '-'], [/,,/g, ','], [/ m2 /g, ' m² '], [/a' /g, "à "], [/([^p])o' /g, "$1ò "], [/u' /g, "ù "], [/i' /g, "ì "], [/ anzich(è|e')/g, "anziché"], [/ affinch(è|e')/g, "affinché"], [/ bench(è|e')/g, " benché"], [/ cioé/g, " cioè"], [/ Dè /g, " De' "], [/ dè /g, " de' "], [/ dò/g, " do"], [/E' /g, "È "], [/É /g, "È "], [/ e' /g, " è "], [/ é/g, " è"], [/ fà /g, " fa "], [/ fè /g, " fe' "], [/ Frà /g, " Fra' "], [/ fù /g, " fu "], [/ mò /g, " mo' "], [/ nè /g, " né "], [/ ne' /g, " né "], [/ nonch(è|e')/g, " nonché"], [/ pè /g, " pe' "], [/ perch(è|e')/g, " perché"], [/ per(ó|o') /g,' però '], [/ piu' /g, " più "], [/ pò/g, " po'"], [/ poich(è|e') /g, " poiché "], [/ propio/g, " proprio"], [/ (puo|puo') /gi,' può '], [/ quì /gi, " qui "], [/ quà /gi, " qua "], [/ qual'è /gi, " qual è"], [/ sà /gi, " sa "], [/ sè /gi, " sé "], [/si' /g, "sì"], [/ sò /g, " so "], [/ sù /g, " su "], [/ tr(è|e'|é) /g, " tre "], [/ sucessivo /gi, " successivo "], [/</g,'<'], [/>/g,'>'], [/&/g,'&'], [/"/g,'"'], [/à/g,'à'], [/è/g,'è'], [/é/g,'é'], [/ì/g,'ì'], [/¡/g,'¡'], [/¢/g,'¢'], [/£/g,'£'], [/¥/g,'¥'], [/´/g,"'"], [/±/g,'±'], [/×/g,'×'], [/÷/g,'÷'], [/µ/g,'µ'], [/°/g,'°'], [/¼/g,'¼'], [/½/g,'½'], [/¾/g,'¾'], [/¹/g,'¹'], [/²/g,'²'], [/³/g,'³'], [/§/g,'§'], [/<br>\n\n/g,'\n\n'], [/<br>/gi,'<br />'], [/\n<hr[ \/]*>\n/gi, '\n----\n'], [/ +<hr[ \/]*> +/gi, '\n----\n'], [/<hr ([^>\/]+?)>/gi,'<hr $1 />'] ); } if (typeof(fixformat_subject) == 'undefined') fixformat_subject = 'correzioni automatiche; '; //FINE IMPOSTAZIONI PREDEFINITE // Funzioni di utilità generale //Codice preso inizialmente da http://en.wikipedia.org/wiki/User:Cacycle/wikEd.js function cmdGetCookie(name) { var cookie = ' ' + document.cookie; var search = ' ' + name + '='; var setStr = ''; var offset = 0; var end = 0; offset = cookie.indexOf(search); if (offset != -1) { offset += search.length; end = cookie.indexOf(';', offset) if (end == -1) end = cookie.length; setStr = cookie.substring(offset, end); setStr = setStr.replace(/\\+/g, ' '); setStr = decodeURIComponent(setStr); } return(setStr); } //Codice preso inizialmente da http://en.wikipedia.org/wiki/User:Cacycle/wikEd.js function cmdSetCookie(name, value, expires, path, domain, secure) { var cookie = name + '=' + encodeURIComponent(value); if (expires != null){ var date = new Date(); date.setTime(date.getTime()+expires*1000); cookie += "; expires="+date.toGMTString(); } if (path != null) cookie += '; path=' + path; else cookie += "; path=/"; if (domain != null) cookie += '; domain=' + domain; if (secure != null) cookie += '; secure'; document.cookie = cookie; } function cmdDeleteCookie(name) { document.cookie = (name + "=0; expires=Fri, 27 Jul 2001 10:10:10 UTC; path=/"); } /* Fine Funzioni gestione cookie */ // recupera un parametro dall'URL function cmdGetParam(name, h){ if (h == null) h = window.location.href; var qmarkpos = h.indexOf('?'); if (qmarkpos == -1) return ''; var a = h.substring(qmarkpos+1).split('&'); for(var i = 0; i < a.length; i++){ var eq = a[i].indexOf('='); if (eq == -1) continue; if(a[i].substring(0, eq) == name) return a[i].substring(eq + 1); } return ''; } //mette in maiuscolo il primo carattere di str function cmdUpFirst(str){ if (str) return str.substring(0,1).toUpperCase() + str.substring(1); else return str; } //Rimuove i blank spaces iniziali e finali function cmdTrim(str){ return str.replace(/^\s+|\s+$/, ''); } function cmdGetPageTitle(){ var r = cmdGetParam("title"); if(r != '') return unescape(r).replace(/ /g,"_"); var url = window.location.href; if(url.indexOf("wikipedia.org/wiki/") != -1) return unescape(url.substring(url.indexOf("wikipedia.org/wiki/") + 19)).replace(/ /g,"_"); //non-robusto, ma funziona :P return null; } //Funzioni di Timendum //Segna "modifica minore" function TimenME() {document.getElementById("wpMinoredit").checked=1;} //Aggiungi all'oggetto (ma evita i duplicati) function TimenSA(text) { var summ = document.getElementById("wpSummary"); if (summ == null) return; if (summ.value.indexOf(text) == -1) summ.value = summ.value + text; } //Aggiungi testo prima function TimenPr(text) { CmdWEUpdateTextarea(); var wpTextbox1 =document.getElementById("wpTextbox1"); wpTextbox1.value = text+wpTextbox1.value; CmdWEUpdateFrame(); } //Aggiungi testo dopo function TimenDp(text) { CmdWEUpdateTextarea(); var wpTextbox1 = document.getElementById("wpTextbox1"); wpTextbox1.value += text; CmdWEUpdateFrame(); } function giorno(){ var today = new Date(); return today.getDate(); } function mese(){ var today = new Date(); return (new Array("gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto", "settembre","ottobre","novembre","dicembre"))[today.getMonth()]; } function anno(){var today = new Date(); return today.getFullYear();} //Prova a completare string usando dict come dizionario. //Restituisce -1 se c'è ambiguità, 0 se non trova nessuna corrispondenza, o la stringa completa se trova una sola occorrenza //Versione per dizionario di tipo object function autoComplete1(dict, string, failIfAmbiguous){ var found = '' if ((string == "")||(string==null)) return string; for (var x in dict) if (x.indexOf(string) == 0){ if (!failIfAmbiguous) return x; if (found == '') found = x; else { return -1; } } if (found != '') return found; return 0; } //Versione per dizionario di tipo array function autoComplete2(dict, string, failIfAmbiguous){ var found = '' var i; if ((string == "")||(string==null)) return ""; for (i = 0; i < dict.length; i++) if (dict[i].indexOf(string) == 0){ if (!failIfAmbiguous) return dict[i]; if (found == '') found = dict[i]; else { return -1; } } if (found != '') return found; return 0; } //Prova ad auto-completare l'argomento usando arrayArgument[] come dizionario; //In caso di fallimento restituisce arg function autoCompleteArgument(arg){ var completed = autoComplete2(arrayArgument, arg, false); if ((completed == -1) || (completed == 0)) return arg; else return completed; } //Comandi //cmd['nome comando'] = [funzione, 'commento']; cmd = new Object(); cmd['a'] = [cmd_a, 'Da aiutare; richiede motivo e argomento']; cmd['c'] = [cmd_c, 'Da aiutare; richiede motivo e argomento']; cmd['e'] = [cmd_e, 'Avviso enciclopedicità dubbia; richiede motivo e argomento']; cmd['p'] = [cmd_p, 'Avviso nNPOV; richiede motivo e argomento']; cmd['w'] = [cmd_w, 'Da wikificare; richiede argomento']; cmd['s'] = [cmd_s, 'Stub; richiede argomento (opzionale)']; cmd['t'] = [cmd_t, 'Da tradurre; richiede lingua e argomento']; cmd['o'] = [cmd_o, 'Pagina orfana; richiede argomento (opzionale)']; cmd['categorizzare'] = [cmd_categorizzare, 'Da categorizzare']; cmd['unire'] = [cmd_unire, 'Da unire; richiede la voce simile']; cmd['purge'] = [cmd_purge, 'Aggiorna la cache']; cmd['fixformat'] = [cmd_fixformat, 'Sostituzioni automatiche']; cmd['replace'] = [cmd_replace, 'Cerca e sostituisci']; cmd['benvenuto'] = [cmd_benvenuto, 'Messaggio di benvenuto']; cmd['save'] = [cmd_save, 'Simula la pressione del tasto di salvataggio']; cmd['preview'] = [cmd_preview, 'Simula la pressione del tasto "Visualizza anteprima"']; cmd['diff'] = [cmd_diff, 'Simula la pressione del tasto "Mostra cambiamenti"']; cmd['goto'] = [cmd_goto, 'Va ad un\'altra pagina di wiki; richiede destinazione ed action']; cmd['eval'] = [cmd_eval, 'Esegue del codice javascript']; cmd['evalvar'] = [cmd_evalvar, 'Esegue del codice javascript e assegna il risultato ad una variabile. Richiede variabile e codice da eseguire.']; cmd['setvar'] = [cmd_setvar, 'Imposta il valore di una variabile']; cmd['process'] = [cmd_process, 'Processa la parte restante di commandline']; cmd['processn'] = [cmd_processn, 'Processa i successivi n blocchi. Richiede n']; cmd['insertbefore'] = [cmd_insertbefore, 'Inserisce del testo all\'inizio; richiede il testo da inserire']; cmd['insertafter'] = [cmd_insertafter, 'Inserisce del testo alla fine; richiede il testo da inserire']; cmd['setsummary'] = [cmd_setsummary, 'Imposta il campo oggetto della modifica; richiede il testo']; cmd['setminor'] = [cmd_setminor, 'Selezione o deseleziona la checkbox "modifica minore"; richiede 0 o 1']; cmd['prompt'] = [cmd_prompt, 'Imposta una variabile richiedendo input di tipo stringa all\'utente']; cmd['alert'] = [cmd_alert, 'Mostra un messaggio']; cmd['skip'] = [cmd_skip, 'Salta i successivi n blocchi; richiede n']; cmd['label'] = [cmd_label, 'Indica una label nel codice. Prende un argomento e non fa nulla']; cmd['jump'] = [cmd_jump, 'Salta ad una label']; cmd['stop'] = [cmd_stop, 'Interrompe definitivamente l\'esecuzione dello script']; cmd['ifvoidpage'] = [cmd_ifvoidpage, 'Se la casella di editing è vuota, passa al blocco successivo, altrimenti salta 2 blocchi']; cmd['iftrue'] = [cmd_iftrue, 'Valuta un\'espressione fra due valori, salta 2 blocchi se è falsa']; cmd['nop'] = [cmd_nop, 'No Operation']; cmd['add'] = [cmd_add, 'Somma; richiede la variabile di destinazione e il numero o il nome della variabile da sommare']; cmd['sub'] = [cmd_sub, 'Sottrazione; richiede la variabile di destinazione e il numero o il nome della variabile da sottrarre']; cmd['mul'] = [cmd_mul, 'Moltiplicazione; richiede la variabile di destinazione e il numero o il nome della variabile per cui moltiplicare']; cmd['div'] = [cmd_div, 'Divisione intera; richiede la variabile di destinazione e il valore/nome del divisore']; cmd['mod'] = [cmd_mod, 'Resto della divisione intera; richiede la variabile di destinazione e il valore/nome del divisore']; cmd['runscript'] = [cmd_runscript, 'Esegue uno script']; cmd['_restorevar'] = [cmd_restorevar, 'Rispristina il valore di una variabile. Per usi interni']; cmdScript = new Object(); //Proposta di cancellazione per una pagina. cmdScript['vfd'] = "prompt#Inserire il motivo della richiesta (non dimenticare la firma!)#Motivo#process#" + "goto#Wikipedia:Pagine da cancellare/$$title#edit#setvar#Temp1##setvar#Temp2##setvar#Temp3##" + "ifvoid#skip#skip#" + "goto#Wikipedia:Pagine da cancellare/$$title/2#edit#setvar#Temp1#|/2#setvar#Temp2#|2#setvar#Temp3#/2#" + "ifvoid#skip#skip#" + "goto#Wikipedia:Pagine da cancellare/$$title/3#edit#setvar#Temp1#|/3#setvar#Temp2#|3#setvar#Temp3#/3#" + "ifvoid#skip#process#" + "alert#Impossibile proseguire. Continuare manualmente.#stop#" + "process#process#process#" + "goto#$$title#edit#insertbefore#{{da cancellare$$$$$$$Temp1}}\n#setsummary#proposta di cancellazione#" + "save#" + "goto#Wikipedia:Pagine da cancellare/$$title$$$$$$$Temp3#edit#" + "insertbefore#{{richiesta cancellazione|$$titleunescaped$$$$$$$Temp2}}\n\n$$$Motivo\n#setsummary" + "#proposta di cancellazione#" + "save#" + "goto#Wikipedia:Pagine da cancellare/Log/$$year $$month $$day#edit#" + "replace#\n*<!--inizio procedure interrotte-->#\n{{Wikipedia:Pagine da cancellare/$$titleunescaped$$$$$$$Temp3}}\n\n<!--inizio procedure interrotte-->#" + "save#" + "goto#Wikipedia:Pagine da cancellare/$$title$$$$$$$Temp3#view#" + "alert#Completato. Ricordati, se è il caso, di avvisare della proposta di cancellazione" + " il contributore principale della voce."; //Preleva un argomento dalla commandline se possibile, altrimenti preleva tramite prompt() function getArg(text){ if (cmdline_command_array[cmdline_next_argument] != null) return cmdPreprocessBlock(cmdline_command_array[cmdline_next_argument++]); else{ var retval = prompt(text,""); if (retval == null) return ""; else return retval; } } //Ritorna una stringa con i comandi ancora da eseguire function reencodeCmdLine(){ if (typeof(cmdline_next_argument) == 'undefined') return ""; var res = ""; var cna = cmdline_next_argument; var command; while((command = cmdline_command_array[cna++]) != null){ res = res + "#" + command; } return res == "" ? res : res.substring(1); //rimuoviamo il "#" di troppo } //Salva su cookie i comandi non ancora eseguiti e distrugge quella corrente //Salva anche lo stato delle variabili di runtime, se ce ne sono //L'esecuzione ripartirà solo alla pagina title (quella corrente se title non viene fornito) function cmdSaveCmdLine(title){ if(typeof(title) == 'undefined') title = cmdGetPageTitle(); var c = ""; if (typeof(cmd_vars) != 'undefined') for(x in cmd_vars) c += "_restorevar#" + x + "#" + cmd_vars[x] + "#"; //rimane un # in più var t = reencodeCmdLine(); //parte rimanente di commandline c += t; cmdline_command_array = new Array(); if (t != ""){ cmdSetCookie("cmdAutoRunPage", title, 30); cmdSetCookie("cmdAutoRunCommand", c, 30); } else { cmdDeleteCookie("cmdAutoRunPage"); cmdDeleteCookie("cmdAutoRunCommand"); } } function isEditing(){return document.getElementById("wpTextbox1") != null;} //Template:A function cmd_a(){ if (!isEditing()) return; TimenPr('{{A|motivo='+(getArg("Motivo"))+'|argomento='+(autoCompleteArgument(getArg("Argomento"),false))+'|mese='+mese()+' '+anno()+'|firma=~~~~}}\n'); TimenSA('+da aiutare; '); TimenME(); } //Template:W function cmd_w(){ if (!isEditing()) return; TimenPr('{{W|argomento='+(autoCompleteArgument(getArg("Argomento"),false))+'|mese='+mese()+' '+anno()+'|firma=~~~~}}\n'); TimenSA('+wikificare; '); TimenME(); } //Template:E function cmd_e(){ if (!isEditing()) return; TimenPr('{{E|'+(getArg("Motivo"))+'|'+(autoCompleteArgument(getArg("Argomento"),false))+'|'+mese()+' '+anno()+'|~~~~}}\n'); TimenSA('+avviso enciclopedicità dubbia; '); TimenME(); } //Template:P function cmd_p(){ if (!isEditing()) return; TimenPr('{{P|motivo='+(getArg("Motivo"))+'|argomento='+(autoCompleteArgument(getArg("Argomento"),false))+'|mese='+mese()+' '+anno()+'|firma=~~~~}}\n'); TimenSA('+avviso nNPOV; '); TimenME(); } //Template:C function cmd_c(){ if (!isEditing()) return; TimenPr('{{C|motivo='+(getArg("Motivo"))+'|argomento='+(autoCompleteArgument(getArg("Argomento"),false))+'|mese='+mese()+' '+anno()+'|firma=~~~~}}\n'); TimenSA('+da controllare; '); TimenME(); } //Template {{S}} function cmd_s(){ if (!isEditing()) return; var arg = getArg("Argomento"); var pipepos = arg.indexOf("|"); if (pipepos == -1) var argomento = autoCompleteArgument(arg, false); else var argomento = autoCompleteArgument(arg.substring(0,pipepos), false) + "|" + autoCompleteArgument(arg.substring(pipepos+1), false); TimenPr('{{S' + (((argomento != null)&&(argomento!='')) ? ('|' + argomento + '}}\n') : '}}\n')); TimenSA('+stub; '); TimenME(); } //Template:T function cmd_t(){ if (!isEditing()) return; var lingua = autoComplete2(arrayLingue, getArg("Lingua"), false); var argomento = autoCompleteArgument(getArg("Argomento")); TimenPr('{{T|lingua=' + lingua + '|argomento=' + argomento +'|data='+mese()+' '+anno()+ '}}\n'); TimenSA('+da tradurre; '); TimenME(); } //Template:O function cmd_o(){ if (!isEditing()) return; TimenPr('{{O|'+autoCompleteArgument(getArg("Argomento"),false)+'|mese='+mese()+' '+anno()+'|firma=~~~~}}\n'); TimenSA('+avviso orfana; '); TimenME(); } //Template {{categorizzare}} function cmd_categorizzare(){ if (!isEditing()) return; TimenDp('{{Categorizzare}}\n'); TimenSA('da categorizzare; '); TimenME(); } //Template {{Da unire}} function cmd_unire(){ if (!isEditing()) return; TimenPr('{{Da unire|' + getArg("Voce:") + '}}\n'); TimenSA('+da unire; '); TimenME(); } //Benvenuto ai nuovi utenti function cmd_benvenuto(){ if (!isEditing()) return; TimenDp('{{benve|nome={{subst:PAGENAME}}|~~~ ~~~~~}}'); TimenSA('Benvenuto su it.wiki!'); TimenME(); } //Aggiorna cache function cmd_purge(){ if (!document.getElementById) return; var x = document.getElementById('ca-history'); var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0]; if (!x) return; if (x.children) x = x.children[0]; else x = x.childNodes[0]; cmdSaveCmdLine(); location.href=x.href.replace(/action=history/g, "action=purge"); } //Sostituzioni automatiche function cmd_fixformat(){ if (!isEditing()) return; if (typeof(fixformat_list) == 'undefined') return; CmdWEUpdateTextarea(); var wpTextbox1 = document.getElementById("wpTextbox1"); var prev = wpTextbox1.value; for (i = 0; i < fixformat_list.length; i++) wpTextbox1.value = wpTextbox1.value.replace(fixformat_list[i][0], fixformat_list[i][1]); CmdWEUpdateFrame(); if (wpTextbox1.value != prev){ TimenSA(fixformat_subject); TimenME(); } } //Cerca e sostituisci function cmd_replace(){ if (!isEditing()) return; var s = getArg("Regexp da cercare?"); if(s){ var r = getArg("Sostituire con?").replace(/\\n/g, "\n"); if(!r && r != '') return; CmdWEUpdateTextarea(); var wpTextbox1 = document.getElementById("wpTextbox1"); wpTextbox1.value = wpTextbox1.value.replace(new RegExp(s, "g"), r); CmdWEUpdateFrame(); } } //Premi "Salva" function cmd_save(){ if (!isEditing()) return; cmdSaveCmdLine(); document.getElementById("wpSave").click(); } //Premi "Visualizza anteprima" function cmd_preview(){ if (!isEditing()) return; cmdSaveCmdLine(); document.getElementById("wpPreview").click(); } //Premi "Mostra cambiamenti" function cmd_diff(){ if (!isEditing()) return; cmdSaveCmdLine(); document.getElementById("wpDiff").click(); } //Vai ad un'altra pagina function cmd_goto(){ var dst = getArg("Destinazione"); var action = getArg("action"); cmdSaveCmdLine(unescape(dst).replace(/ /g, "_")); //Vai ad una pagina di wiki location.href = "http://it.wikipedia.org/w/index.php?title=" + dst + "&action=" + action; } //Esegue codice JavaScript function cmd_eval(){ var jscode = getArg("Comando JavaScript:"); eval(jscode); } //Esegue codice JavaScript e salva il risultato in una variabile function cmd_evalvar(){ var name = getArg("Nome della variabile:"); var jscode = getArg("Comando JavaScript:"); cmdSetVar(name, eval(jscode)); } //Esegue codice JavaScript function cmd_setvar(){ var n = getArg("Nome variabile:"); var v = getArg("Valore:"); cmdSetVar(n, v); } //Esegue codice JavaScript function cmd_process(){ var c = cmdPreprocess(reencodeCmdLine()); //WARNING: variabile globale cmdline_command_array = c.split('#'); //WARNING: variabile globale: indice del prossimo argomento da leggere cmdline_next_argument = 0; } //Processa solo i successivi n blocchi function cmd_processn(){ var n = parseInt(getArg("Numero di blocchi:")); if (isNaN(n) || (n == 0)) return; var c1 = "", c2 = ""; for(var i = 0; i < n; i++) c1 += cmdline_command_array[cmdline_next_argument+i] + "#"; cmdline_next_argument += n; c2 = reencodeCmdLine(); //alert("c1 = " + c1 + "; c2 = " + c2); c1 = cmdPreprocess(c1) + c2; cmdline_command_array = c1.split("#"); cmdline_next_argument = 0; } //Ripristina una variabile al vecchio valore. function cmd_restorevar(){ var n = getArg("Nome variabile:"); var v = getArg("Valore:"); cmdSetVar(n, v); } //Inserisce del testo all'inizio function cmd_insertbefore(){ var text = getArg("Testo da inserire"); TimenPr(unescape(text)); } //Inserisce del testo alla fine function cmd_insertafter(){ var text = getArg("Testo da inserire"); TimenDp(unescape(text)); } //Imposta l'oggetto della modifica function cmd_setsummary(){ var txt = getArg("Oggetto:"); var summ=document.getElementById("wpSummary"); if (summ == null) return; summ.value=unescape(txt); } //Imposta come modifica minore function cmd_setminor(){ var t = getArg("inserire 0 (deselezionato) o 1 (selezionato):"); if (t == "0") document.getElementById("wpMinoredit").checked = 0; if (t == "1") document.getElementById("wpMinoredit").checked = 1; } //Chiede input all'utente function cmd_prompt(){ var text = getArg("Testo da mostrare all'utente:"); var varname = getArg("Nome della variabile da impostare:"); cmdSetVar(varname, escape(prompt(text, ""))); } //Mostra un messaggio function cmd_alert(){ var t = getArg("Testo da mostrare all'utente:"); if(t != null) alert(unescape(t)); } //Salta i successivi n blocchi function cmd_skip(){ var n = parseInt(getArg("Blocchi da saltare:")); if(!isNaN(n)) cmdline_next_argument += n; } //Label nel codice. Prende un argomento ma non fa nulla. function cmd_label(){ var arg = getArg("Nome label:"); } //Salta all'istruzione successiva ad una label function cmd_jump(){ var dst = getArg("Label di destinazione:"); while(cmdline_command_array[cmdline_next_argument]){ var b1 = cmdTrim(cmdline_command_array[cmdline_next_argument]); var b2 = cmdTrim(cmdline_command_array[cmdline_next_argument+1]); if((b1 == 'label') && (b2 == dst)){ cmdline_next_argument += 2; return; } cmdline_next_argument++; } alert("Errore: Label '" + dst + "' non trovata."); stop(); } //Se la casella di modifica non è vuota, salta avanti di 2 blocchi function cmd_ifvoidpage(){ CmdWEUpdateTextarea(); if(document.getElementById("wpTextbox1").value) cmdline_next_argument += 2; } //Confronta due valori come interi o, se non è possibile, come float o, infine, come stringhe. function cmd_iftrue(){ var v1 = getArg("Primo valore:"); var op = getArg("Operando (<, <=, ==, >, >=, !=):"); var v2 = getArg("Secondo valore:"); var v1i = parseInt(v1); var v2i = parseInt(v2); var v1f = parseFloat(v1); var v2f = parseFloat(v2); if (!isNaN(v1i) && !isNaN(v2i)) switch(op){ //Confronto fra stringhe case '<' : cmdline_next_argument += v1i < v2i ? 0 : 2; break; case '<=': cmdline_next_argument += v1i <= v2i ? 0 : 2; break; case '==': cmdline_next_argument += v1i == v2i ? 0 : 2; break; case '>=': cmdline_next_argument += v1i >= v2i ? 0 : 2; break; case '>' : cmdline_next_argument += v1i > v2i ? 0 : 2; break; case '!=': cmdline_next_argument += v1i != v2i ? 0 : 2; break; } else if (!isNaN(v1f) && !isNaN(v2f)) switch(op){ //Confronto tra float case '<' : cmdline_next_argument += v1f < v2f ? 0 : 2; break; case '<=': cmdline_next_argument += v1f <= v2f ? 0 : 2; break; case '==': cmdline_next_argument += v1f == v2f ? 0 : 2; break; case '>=': cmdline_next_argument += v1f >= v2f ? 0 : 2; break; case '>' : cmdline_next_argument += v1f > v2f ? 0 : 2; break; case '!=': cmdline_next_argument += v1f != v2f ? 0 : 2; break; } else switch(op){ //Confronto tra stringhe case '<' : cmdline_next_argument += v1 < v2 ? 0 : 2; break; case '<=': cmdline_next_argument += v1 <= v2 ? 0 : 2; break; case '==': cmdline_next_argument += v1 == v2 ? 0 : 2; break; case '>=': cmdline_next_argument += v1 >= v2 ? 0 : 2; break; case '>' : cmdline_next_argument += v1 > v2 ? 0 : 2; break; case '!=': cmdline_next_argument += v1 != v2 ? 0 : 2; break; } } //No OPeration function cmd_nop(){ } //Fine forzata script function cmd_stop(){ cmdline_command_array = new Array(); cmdline_next_argument = 0; cmdDeleteCookie("cmdAutoRunPage"); cmdDeleteCookie("cmdAutoRunCommand"); } //Esegui uno script function cmd_runscript(){ var name = getArg("Nome dello script:"); if((name)&&(cmdScript[name])){ cmd_stop(); runCommand(cmdScript[name], true); } } //Aggiunge un valore ad una variabile function cmd_add(){ var varname = getArg("Nome della variabile:"); var n = getArg("Valore o nome della variabile da aggiungere:"); if (isNaN(n)) n = cmd_vars[n]; cmd_vars[varname] = "" + (parseInt(cmd_vars[varname]) + parseInt(n)); } //Sottrae un valore ad una variabile function cmd_sub(){ var varname = getArg("Nome della variabile:"); var n = getArg("Valore o nome della variabile da sottrarre:"); if (isNaN(n)) n = cmd_vars[n]; cmd_vars[varname] = "" + (parseInt(cmd_vars[varname]) - parseInt(n)); } //Moltiplica una variabile intera per un valore function cmd_mul(){ var varname = getArg("Nome della variabile:"); var n = getArg("Valore o nome della variabile da sottrarre:"); if (isNaN(n)) n = cmd_vars[n]; cmd_vars[varname] = "" + (parseInt(cmd_vars[varname]) * parseInt(n)); } //Divisione intera tra una variabile e un valore function cmd_div(){ var varname = getArg("Nome del dividendo:"); var n = getArg("Valore o nome del divisore:"); if (isNaN(parseInt(n))) n = cmd_vars[n]; else n = parseInt(n); cmd_vars[varname] = "" + (parseInt(cmd_vars[varname] - cmd_vars[varname]%n ) / n); } //Resto della divisione intera function cmd_mod(){ var varname = getArg("Nome del dividendo:"); var n = getArg("Valore o nome del divisore:"); if (isNaN(parseInt(n))) n = cmd_vars[n]; cmd_vars[varname] = "" + (parseInt(cmd_vars[varname]) % parseInt(n)); } function cmdPreprocess(cmd){ //Parsing variabili predefinite //alert("Prima:\n" + cmd); cmd = " " + cmd + " "; //un carattere qualsiasi diverso da '$' cmdSetVar("title", cmdGetPageTitle()); cmdSetVar("titleunescaped", cmdGetPageTitle().replace(/_/g," ")); cmdSetVar("year", "" + anno()); cmdSetVar("month", "" + mese()); cmdSetVar("day", "" + giorno()); cmdSetVar("null", ""); //Parsing variabili di runtime if (typeof(cmd_vars) != 'undefined'){ for(x in cmd_vars) cmd = cmd.replace(new RegExp("([^$])\\$\\$" + x + "([^a-zA-Z])", "g"), "$1"+"<<substitution><" + x +">>"+"$2"); for(x in cmd_vars){ var tmp = cmd_vars[x].replace(/\$/g, "<<<dollar>>>"); cmd = cmd.replace(new RegExp("<<substitution><" + x +">>", "g"), tmp).replace(/<<<dollar>>>/g, "$"); } } //Trasformiamo ogni $$.(n).$ in $$.(n-1).$ (es.: $$$$variabile --> $$$variabile) cmd = cmd.replace(/(\$*)\$\$\$()/g,"$1"+"$$$"); //alert("Dopo:\n" + cmd.substring(1)); return cmd.substring(1, cmd.length-1); } //Processa un singolo blocco se il suo primo carattere è "@" function cmdPreprocessBlock(txt){ if(txt.charAt(0) != '@') return txt; return cmdPreprocess(txt.substring(1)); } function cmdSetVar(variabile, valore){ if(typeof(cmd_vars) == 'undefined') cmd_vars = new Object(); cmd_vars[variabile] = unescape(valore); } function runCommand(command, mustprocess){ if ((command == null)||(command == "")) return; var commandline = command; //WARNING: variabile globale cmdline_command_array = commandline.split('#'); //WARNING: variabile globale: indice del prossimo argomento da leggere cmdline_next_argument = 0; //Ripristina variabili di runtime while(cmdline_command_array[cmdline_next_argument] == "_restorevar"){ cmdline_next_argument++; cmd_restorevar(); } commandline = mustprocess ? cmdPreprocess(reencodeCmdLine()) : reencodeCmdLine(); //WARNING: variabile globale cmdline_command_array = commandline.split('#'); //WARNING: variabile globale: indice del prossimo argomento da leggere cmdline_next_argument = 0; while((command = cmdline_command_array[cmdline_next_argument++]) != null){ command = cmdTrim(cmdPreprocessBlock(cmdTrim(command))); if (cmd[command] != null){ //alert("Comando: " + command); cmd[command][0](command); continue; } //Cerchiamo se è prefisso univoco di un comando var completed = autoComplete1(cmd, command, true) if ((completed != 0)&&(completed != -1)) cmd[completed][0](); //tutto a posto, eseguiamo else alert("Comando sconosciuto: " + command + ". Ignoro e continuo."); } } function showCommandLine(){runCommand(prompt("Comando:", ""), true);} function addCommandLine(){ var tb = document.getElementById('p-tb').getElementsByTagName('ul')[0]; var na = document.createElement('a'); na.href = "javascript:showCommandLine()"; na.appendChild(document.createTextNode('Command line')); var li = document.createElement('li'); li.id = 'tb-cmdline'; li.appendChild(na); tb.appendChild(li); window.onkeypress = manageHotKey; } addOnloadHook(addCommandLine); function manageHotKey (e) { e = (e) ? e : ((window.event) ? window.event : null); if (e) if (e.altKey || e.metaKey) { var charCode = (e.charCode) ? e.charCode : ((e.which) ? e.which : e.keyCode); if (String.fromCharCode (charCode).toLowerCase() == 'z') showCommandLine(); } } function cmdLineAutoRunCommands(){ //AutoRun via URL if (cmdGetParam("fakeaction") == "runcommand"){ var commandline = cmdGetParam("command"); runCommand(commandline, true); } //AutoRun via cookies var title = unescape(cmdGetCookie("cmdAutoRunPage")); var commandline = unescape(cmdGetCookie("cmdAutoRunCommand")); if (cmdGetPageTitle() == title){ cmdDeleteCookie("cmdAutoRunPage"); cmdDeleteCookie("cmdAutoRunCommand"); runCommand(commandline, false); } } addOnloadHook(cmdLineAutoRunCommands); //CODICE DI COMPATIBILITA' CON wikEd // WikEdKeyFrame: Ridefinito il metodo che, altrimenti, trapperebbe ogni tasto schiacciato impedendo // l'uso di 'Alt+z' quando ci si trova sulla finestra di modifica function CmdWEUpdateTextarea(){ if (typeof(wikEdUseWikEd) != 'undefined') if (wikEdUseWikEd == true) WikEdUpdateTextarea(); } function CmdWEUpdateFrame(){ if (typeof(wikEdUseWikEd) != 'undefined') if (wikEdUseWikEd == true) WikEdUpdateFrame(); } function WikEdKeyFrame(event) { if (wikEdUseWikEd == true) { if (event.type == 'keypress') manageHotKey(event); switch (event.type) { // trap the tab key case 'keydown': switch (event.keyCode) { case 9: if (event.shiftKey == false) { event.preventDefault(); // scroll to text input top if (wikEdFullScreenMode == false) { var inputWrapperTop = WikEdGetOffsetTop(wikEdInputWrapper); window.scroll(0, inputWrapperTop); } // focus the summary wikEdSummaryText.focus(); } break; } break; // trap any other frame event case 'keyup': case 'keypress': case 'mouseup': // grey out inactive buttons WikEdInactiveButtons(); // reset the frame DOM cache wikEdFrameDOMCache = null; break; } } return; } /**** Command Line End ****/ /* </nowiki></pre> */