x

Capitoli principali

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. LimeSurvey Cloud - Guida rapida
  3. LimeSurvey CE - Installazione
  4. Come progettare un buon sondaggio (Guida)
  5. Iniziare
  6. Configurazione di LimeSurvey
  7. Introduzione - Sondaggi
  8. Visualizza le impostazioni del sondaggio
  9. Visualizza il menu del sondaggio
  10. Visualizza la struttura del sondaggio
  11. Introduzione - Domande
  12. Introduzione - Gruppi di domande
  13. Introduzione - Indagini - Gestione
  14. Opzioni della barra degli strumenti del sondaggio
  15. Sondaggio multilinguale
  16. Guida rapida - ExpressionScript
  17. Funzionalità avanzate
  18. Domande frequenti generali
  19. Risoluzione dei problemi
  20. Soluzioni alternative
  21. Licenza
  22. Registro delle modifiche alla versione
  23. Plugin - Avanzati
 Actions

ExpressionScript How-tos/it: Difference between revisions

From LimeSurvey Manual

Maren.fritz (talk | contribs)
Created page with "Procedure ExpressionScript"
 
Maren.fritz (talk | contribs)
Created page with "Quando stai effettivamente modificando la domanda, la domanda ha questo aspetto:"
 
(74 intermediate revisions by the same user not shown)
Line 3: Line 3:




=Overview of what has been previously explained=
=Panoramica di quanto spiegato in precedenza=




If you have followed so far the structure of the LimeSurvey manual, it means that you already the [[ExpressionScript - Presentation#Key_Definitions|LimeSurvey terminology]]. Next, we covered expressions and variables in order to learn how to enhance our surveys. In the next part, we moved to the types and meanings of [[ExpressionScript - Presentation#Syntax Highlighting|syntax highlighting]] to learn how to correct syntax errors.  
Se finora hai seguito la struttura del manuale di LimeSurvey, significa che conosci già la [[ExpressionScript - Presentation#Key_Definitions|Terminologia di LimeSurvey]]. Successivamente, abbiamo trattato espressioni e variabili per imparare come migliorare i nostri sondaggi. Nella parte successiva, siamo passati ai tipi e ai significati di [[ExpressionScript - Presentation#Syntax Highlighting|evidenziazione della sintassi]] per imparare a correggere gli errori di sintassi.  


With these basic notions covered, we could move towards examples and explaining how expressions work within LimeSurvey.  
Con queste nozioni di base coperte, potremmo passare agli esempi e spiegare come funzionano le espressioni all'interno di LimeSurvey.  




=Syntax Highlighting=
=Evidenziazione della sintassi=




The following screenshots give examples, but do not show the values of the tooltips. A tooltip is an informative box which is displayed whenever you hover the mouse over any bold colored words.
Gli screenshot seguenti forniscono esempi, ma non mostrano i valori dei suggerimenti. Un suggerimento è una casella informativa che viene visualizzata ogni volta che si passa il mouse su parole in grassetto.


Because of this syntax highlighting, it is very easy to compose correct expressions, even the ones that are complicated. Although the LimeSurvey team plans to try to build an Expression Builder GUI, you can use the existing syntax-highlighting to quickly identify and fix typos. You can also use the tooltips to validate the accuracy of your expressions (e.g., confirm you have selected the desired variable(s)).
Grazie a questa evidenziazione della sintassi, è molto facile comporre espressioni corrette, anche quelle complicate. Sebbene il team di LimeSurvey intenda provare a creare una GUI di Expression Builder, puoi utilizzare l'evidenziazione della sintassi esistente per identificare e correggere rapidamente gli errori di battitura. Puoi anche utilizzare i suggerimenti per convalidare l'accuratezza delle tue espressioni (ad esempio, confermare di aver selezionato le variabili desiderate).


In each of the examples, there are three columns:
In ognuno degli esempi, ci sono tre colonne:
#Source - this is the raw text that you would enter into the LimeSurvey question field
#Source - questo è il testo non elaborato che inseriresti nel campo della domanda di LimeSurvey
#Pretty Print - this is the syntax-highlighted equivalent of what you entered
#Pretty Print - questo è l'equivalente evidenziato in sintassi di quello che hai inserito! N!#*Nota che le espressioni sono mostrate con uno sfondo marrone chiaro, ma non circondate da parentesi graffe in questa evidenziazione.
#*Note that Expressions are shown with a tan background, but not surrounded by curly braces in this highlighting.
#*Poiché EM supporta la sostituzione ricorsiva, mostrare le parentesi graffe nell'evidenziazione causerebbe errori di sintassi
#*Since EM supports recursive substitution, showing curly braces in the highlighting would cause syntax errors
#Risultato - questo è l'output generato quando EM elabora il sorgente
#Result - this is the output generated when EM processes the source
#*Tutto ciò che può essere correttamente sostituito è
#*Everything that can be properly substituted is
#*Le espressioni con errori sono mostrate in linea, con l'evidenziazione della sintassi. Gli errori sono circondati da una casella bordata di rosso.
#*Expressions with errors are shown in-line, with syntax highlighting. Errors are surrounded by a red-lined box.




==Proper Syntax==
==Sintassi corretta==




You may find below examples of proper syntax:
Di seguito puoi trovare esempi di sintassi corretta:
#Values: shows that known variables are color coded according to whether are set on the current page. Old-style INSERTANS:xxxx gets its own color-coding style
#Values: mostra che le variabili note sono codificate a colori a seconda che siano impostate nella pagina corrente. Old-style INSERTANS:xxxx ottiene il proprio stile di codifica a colori
#Question Attributes: shows that dot notation can access some properties of questions
#Attributi domanda: mostra che la notazione punto può accedere ad alcune proprietà delle domande
#Math: shows that basic and complex calculations are supported
#Math: mostra che sono supportati calcoli di base e complessi
#TextProcessing: shows some of the available text-processing functions
#TextProcessing: mostra alcune delle funzioni disponibili per l'elaborazione del testo
#Dates: shows two of the available date-related functions
#Dates: mostra due delle funzioni relative alla data disponibili
#Conditional: shows the usage of the if() function. The choices can be nested.
#Conditional: mostra l'utilizzo della funzione if(). Le scelte possono essere nidificate.
#Tailored paragraph: you can completely customize a report based upon prior values
#Paragrafo su misura: puoi personalizzare completamente un report basato su valori precedenti
#EM processes within strings: shows that it can do substitutions within strings. This example generates a tailored image name.
#EM processi all'interno di stringhe: mostra che può eseguire sostituzioni all'interno di stringhe. Questo esempio genera un nome immagine personalizzato.
#EM doesn't process curly braces like these: shows that if the curly braces are escaped, or there is a white space between the expression and the curly braces, ES ignores the expression.
#EM non elabora le parentesi graffe come queste: mostra che se le parentesi graffe sono sfuggite o c'è uno spazio bianco tra l'espressione e le parentesi graffe, ES ignora l'espressione.




Line 46: Line 45:




==EM Syntax Containing Errors==
==Sintassi EM contenente errori==




Here are examples of common errors when typing ES expressions. Note that the tooltips provide additional information.
Ecco alcuni esempi di errori comuni durante la digitazione delle espressioni ES. Si noti che i suggerimenti forniscono informazioni aggiuntive.
#Inline Javascript that forgot to add spaces after curly brace
#Inline Javascript che ha dimenticato di aggiungere spazi dopo la parentesi graffa
#*Since "document.write" appears right after a curly brace, EM thinks it is an expression, and red-boxes "document" and "write" since they are undefined variable and functions, respectively
#*Poiché "document.write" appare subito dopo una parentesi graffa, EM pensa che sia un'espressione e red- caselle "document" e "write" poiché sono variabili e funzioni non definite, rispettivamente
#Unknown/Misspelled variables, functions and operators
#Variabili, funzioni e operatori sconosciuti/errati
#*Here we forgot that we are using the variable name "gender" instead of "sex", but EM catches that error. It also red-boxes '++', since that is not a supported operator.
#*Qui abbiamo dimenticato che stiamo usando il nome della variabile "gender" invece di " sex", ma EM rileva quell'errore. Inoltre, contrassegna in rosso '++', poiché non è un operatore supportato.
#Warns if use = instead of eq, or perform value assignments
#Avverte se si usa = invece di eq o esegue assegnazioni di valori
#*Note that the '=' and '+=' are in red text instead of black. If you hover the mouse over them, you will see warnings that you are assigning a value.
#*Notare che '=' e '+=' sono in testo rosso invece che nero. Se passi il mouse sopra di essi, vedrai avvertimenti che stai assegnando un valore.
#Wrong number of arguments for functions
#Numero errato di argomenti per le funzioni
#*if() takes 3 arguments, but it has been given 4, so hovering over the red-boxed "if" will explain the error and show the supported syntax
#*if() prende 3 argomenti, ma ne sono stati dati 4, quindi passandoci sopra sopra l'"if" nella casella rossa spiegherà l'errore e mostrerà la sintassi supportata
#*sum() takes an unlimited number of arguments, but we had a trailing comma before the closing parentheses, so that is red-boxed
#*sum() prende un numero illimitato di argomenti, ma avevamo una virgola finale prima delle parentesi di chiusura, quindi è nella casella rossa! N!#Parenti non corrispondenti
#Mismatched parentheses
#*Questo è uno degli errori più comuni durante la scrittura di espressioni.
#*This is one of the most common errors when writing expressions.
#*Questo mostra due esempi di parentesi di chiusura mancanti e un esempio di parentesi di chiusura troppe.
#*This shows two examples of missing closing parentheses, and one example of having one too many closing parentheses.
#Sintassi non supportata
#Unsuported syntax
#*Se usi un operatore o una punteggiatura che ES non supporta, verrà inserito in una casella rossa.
#*If you use an operator or punctuation that ES does not support, it will red-box it.
#Assegnazioni non valide
#Invalid assignments
#*Alcune variabili sono readWrite e possono avere i loro valori modificati. Altre sono di sola lettura.
#*Some variables are readWrite and can have their values changed. Others are read-only.
#*Se provi a cambiare il valore di una variabile di sola lettura, non puoi. EM inserirà in una casella rossa il tentativo.
#*If you try to change the value of a read-only variable, you can't. EM will red-box the attempt.
#*Se provi ad assegnare un valore a un'equazione o a una stringa, otterrai anche un errore
#*If you try to assign a value to an equation or a string, you will also get an error




Line 73: Line 71:




=="Live" examples of Syntax Highlighting with active tooltips==
=="Live" esempi di evidenziazione della sintassi con suggerimenti attivi==




<table border="1">
<table border="1">
<tr><th>Source</th><th>Pretty Print</th><th>Result</th></tr><tr><td><b>Here is an example of OK syntax with tooltips</b><br>Hello {if(gender=='M','Mr.','Mrs.')} {surname}, it is now {date('g:i a',time())}. Do you know where your {sum(numPets,numKids)} children and pets are?
<tr><th> Fonte</th><th> Bella stampa</th><th> Risultato</th></tr><tr><td> <b>Ecco un esempio di sintassi OK con suggerimenti</b><br> Ciao {if(gender=='M','Mr.','Mrs.')} {surname}, ora è {date('g:i a',time())}. Sai dove sono i tuoi {sum(numPets,numKids)} bambini e animali domestici?


</td><td><b>Here is an example of OK syntax with tooltips</b><br>Hello <span style="background-color: #eee8aa;"><span title="Excel-style if(test,result_if_true,result_if_false); if(test,result_if_true,result_if_false)" style="color: blue; font-weight: bold">if</span>(<span title="[java61764X1X5][G:2][Q:110]: What is your gender (male/female)?; value=M" style="color: green; font-weight: bold">gender</span> == <span title="" style="color: gray">'M'</span>,<span title="" style="color: gray">'Mr.'</span>,<span title="" style="color: gray">'Mrs.'</span>)</span> <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:20]: What is your last/surname?; value=Smith" style="color: green; font-weight: bold">surname</span></span>, it is now <span style="background-color: #eee8aa;"><span title="Format a local date/time; string date(format [, timestamp=time()])" style="color: blue; font-weight: bold">date</span>(<span title="" style="color: gray">'g:i a'</span>,<span title="Return current UNIX timestamp; number time()" style="color: blue; font-weight: bold">time</span>())</span>. Do you know where your <span style="background-color: #eee8aa;"><span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(<span title="[java61764X1X4][G:2][Q:50]: How many pets do you have?; value=1" style="color: maroon; font-weight: bold">numPets</span>,<span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>)</span> children and pets are?
</td><td><b>Ecco un esempio di sintassi OK con suggerimenti</b><br> Hello <span style="background-color: #eee8aa;"><span title="Stile Excel if(test,result_if_true,result_if_false); if(prova,risultato_se_vero,risultato_se_falso)" style="color: blue; font-weight: bold">if</span> ( <span title="[java61764X1X5][G:2][Q:110]: Qual è il tuo genere (maschio/femmina)?; valore=M" style="color: green; font-weight: bold">gender</span> == <span title="" style="color: gray">'M'</span> , <span title="" style="color: gray">'Mr.'</span> , <span title="" style="color: gray">'Mrs.'</span> )</span> <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:20]: Qual è il tuo cognome/cognome?; valore=Smith" style="color: green; font-weight: bold">cognome</span></span> , ora è <span style="background-color: #eee8aa;"><span title="Formattare una data/ora locale; stringa data(formato [, timestamp=ora()])" style="color: blue; font-weight: bold">date</span> ( <span title="" style="color: gray">'g:i a'</span> , <span title="Restituisce il timestamp UNIX corrente; numero tempo()" style="color: blue; font-weight: bold">time</span> ())</span> . Sai dove sono i tuoi bambini e animali <span style="background-color: #eee8aa;"><span title="Calcola la somma dei valori in un array; numero somma(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">domestici</span> ( <span title="[java61764X1X4][G:2][Q:50]: Quanti animali hai?; valore=1" style="color: maroon; font-weight: bold">numPets</span> , <span title="[java61764X1X3][G:2][Q:40]: Quanti figli hai?; valore=2" style="color: green; font-weight: bold">numKids</span> )</span> ?


</td><td><b>Here is an example of OK syntax with tooltips</b><br>Hello <span id="LEMtailor_Q_40_1">Mr.</span> <span id="LEMtailor_Q_40_2">Smith</span>, it is now 6:07 am. Do you know where your <span id="LEMtailor_Q_40_4">3</span> children and pets are?
</td><td><b>Ecco un esempio di sintassi OK con suggerimenti</b><br> Salve <span id="LEMtailor_Q_40_1">signor</span> <span id="LEMtailor_Q_40_2">Smith</span> , ora sono le 6:07. Sai dove sono i tuoi <span id="LEMtailor_Q_40_4">3</span> bambini e gli animali domestici?
</td></tr>
</td></tr>  
<tr><td><b>Here are common errors so you can see the tooltips</b><br>Variables used before they are declared: {notSetYet}<br>Unknown Function: {iff(numPets&gt;numKids,1,2)}<br>Unknown Variable: {sum(age,num_pets,numKids)}<br>Wrong # parameters: {sprintf()},{if(1,2)},{date()}<br>Assign read-only-vars:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}<br>Unbalanced parentheses: {pow(3,4},{(pow(3,4)},{pow(3,4))}
<tr><td> <b>Di seguito sono riportati gli errori comuni in modo da poter visualizzare i suggerimenti</b><br> Variabili utilizzate prima di essere dichiarate: {notSetYet}<br> Funzione sconosciuta: {iff(numPets>numKids,1,2)}<br> Variabile sconosciuta: {sum(age,num_pets,numKids)}<br> # parametri errati: {sprintf()},{if(1,2)},{date()}<br> Assegna variabili di sola lettura:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}<br> Parentesi non bilanciate: {pow(3,4},{(pow(3,4)},{pow(3,4))}


</td><td><b>Here are common errors so you can see the tooltips</b><br>Variables used before they are declared: <span style="background-color: #eee8aa;"><span title="This variable is not declared until a later page; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="This variable is not declared until a later page; Not a valid expression; [java61764X3X6][G:3][Q:200]: Who will win the next election?; value=?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span><br>Unknown Function: <span style="background-color: #eee8aa;"><span title="Undefined function" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Undefined function" style="color: blue; font-weight: bold">iff</span></span>(<span title="[java61764X1X4][G:2][Q:50]: How many pets do you have?; value=1" style="color: maroon; font-weight: bold">numPets</span> &gt; <span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>,1,2)</span><br>Unknown Variable: <span style="background-color: #eee8aa;"><span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(<span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="Undefined variable" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Undefined variable" style="color: red; font-weight: bold">num_pets</span></span>,<span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>)</span><br>Wrong # parameters: <span style="background-color: #eee8aa;"><span title="Function must have at least 1 argument(s); Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function must have at least 1 argument(s); Not a valid expression; Return a formatted string; string sprintf(format, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span>()</span>,<span style="background-color: #eee8aa;"><span title="Function does not support that number of arguments: 2. Function supports this many arguments, where -1=unlimited: 3; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function does not support that number of arguments: 2. Function supports this many arguments, where -1=unlimited: 3; Not a valid expression; Excel-style if(test,result_if_true,result_if_false); if(test,result_if_true,result_if_false)" style="color: blue; font-weight: bold">if</span></span>(1,2)</span>,<span style="background-color: #eee8aa;"><span title="Function does not support that number of arguments: 0. Function supports this many arguments, where -1=unlimited: 1,2; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function does not support that number of arguments: 0. Function supports this many arguments, where -1=unlimited: 1,2; Not a valid expression; Format a local date/time; string date(format [, timestamp=time()])" style="color: blue; font-weight: bold">date</span></span>()</span><br>Assign read-only-vars:<span style="background-color: #eee8aa;"><span title="The value of this variable can not be changed; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="The value of this variable can not be changed; Not a valid expression; ; value=worker" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span><span title="Assigning a new value to a variable" style="color: red; font-weight: bold">+=</span>10</span>,<span style="background-color: #eee8aa;"><span title="The value of this variable can not be changed; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="The value of this variable can not be changed; Not a valid expression; [java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span></span><span title="Assigning a new value to a variable" style="color: red; font-weight: bold">=</span><span title="" style="color: gray">'Sally'</span></span><br>Unbalanced parentheses: <span style="background-color: #eee8aa;"><span title="Parentheses not balanced" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Parentheses not balanced; Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span></span>(3,4</span>,<span style="background-color: #eee8aa;"><span title="Parentheses not balanced" style="border-style: solid; border-width: 2px; border-color: red;">(</span><span title="Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span>(3,4)</span>,<span style="background-color: #eee8aa;"><span title="Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span>(3,4)<span title="Extra right parentheses detected" style="border-style: solid; border-width: 2px; border-color: red;">)</span></span>
</td><td><b>Di seguito sono riportati gli errori comuni in modo da poter visualizzare i suggerimenti</b><br> Variabili usate prima di essere dichiarate: <span style="background-color: #eee8aa;"><span title="Questa variabile non viene dichiarata fino a una pagina successiva; Espressione non valida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Questa variabile non viene dichiarata fino a una pagina successiva; Espressione non valida; [java61764X3X6][G:3][Q:200]: Chi vincerà le prossime elezioni?; valore=?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span><br> Funzione sconosciuta: <span style="background-color: #eee8aa;"><span title="Funzione non definita" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Funzione non definita" style="color: blue; font-weight: bold">iff</span></span> ( <span title="[java61764X1X4][G:2][Q:50]: Quanti animali hai?; valore=1" style="color: maroon; font-weight: bold">numPets</span> > <span title="[java61764X1X3][G:2][Q:40]: Quanti figli hai?; valore=2" style="color: green; font-weight: bold">numKids</span> ,1,2)</span><br> Variabile sconosciuta: <span style="background-color: #eee8aa;"><span title="Calcola la somma dei valori in un array; numero somma(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">somma</span> ( <span title="[java61764X1X2][G:2][Q:30]: Quanti anni hai?; valore=45" style="color: green; font-weight: bold">età</span> , <span title="variabile non definita" style="border-style: solid; border-width: 2px; border-color: red;"><span title="variabile non definita" style="color: red; font-weight: bold">num_animali</span></span> , <span title="[java61764X1X3][G:2][Q:40]: Quanti figli hai?; valore=2" style="color: green; font-weight: bold">numBambini</span> )</span><br> # parametri errati: <span style="background-color: #eee8aa;"><span title="La funzione deve avere almeno 1 argomento(i); Espressione non valida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La funzione deve avere almeno 1 argomento(i); Espressione non valida; Restituisce una stringa formattata; stringa sprintf(formato, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span> ()</span> , <span style="background-color: #eee8aa;"><span title="La funzione non supporta quel numero di argomenti: 2. La funzione supporta questo numero di argomenti, dove -1=illimitato: 3; Espressione non valida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La funzione non supporta quel numero di argomenti: 2. La funzione supporta questo numero di argomenti, dove -1=illimitato: 3; Espressione non valida; Stile Excel if(test,result_if_true,result_if_false); if(prova,risultato_se_vero,risultato_se_falso)" style="color: blue; font-weight: bold">if</span></span> (1,2)</span> , <span style="background-color: #eee8aa;"><span title="La funzione non supporta quel numero di argomenti: 0. La funzione supporta questo numero di argomenti, dove -1=illimitato: 1,2; Espressione non valida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La funzione non supporta quel numero di argomenti: 0. La funzione supporta questo numero di argomenti, dove -1=illimitato: 1,2; Espressione non valida; Formattare una data/ora locale; stringa data(formato [, timestamp=ora()])" style="color: blue; font-weight: bold">date</span></span> ()</span><br> Assegna variabili di sola lettura: <span style="background-color: #eee8aa;"><span title="Il valore di questa variabile non può essere modificato; Espressione non valida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Il valore di questa variabile non può essere modificato; Espressione non valida; ; valore=lavoratore" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span><span title="Assegnazione di un nuovo valore a una variabile" style="color: red; font-weight: bold">+=</span> 10</span> , <span style="background-color: #eee8aa;"><span title="Il valore di questa variabile non può essere modificato; Espressione non valida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Il valore di questa variabile non può essere modificato; Espressione non valida; [java61764X1X1][G:1][Q:10]: Qual è il tuo nome/nome?; valore=Pietro" style="color: green; font-weight: bold">name</span></span><span title="Assegnazione di un nuovo valore a una variabile" style="color: red; font-weight: bold">=</span> <span title="" style="color: gray">'Sally'</span></span><br> Parentesi non bilanciate: <span style="background-color: #eee8aa;"><span title="Parentesi non bilanciate" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Parentesi non bilanciate; Espressione esponenziale; numero pow(base, exp)" style="color: blue; font-weight: bold">pow</span></span> (3,4</span> , <span style="background-color: #eee8aa;"><span title="Parentesi non bilanciate" style="border-style: solid; border-width: 2px; border-color: red;">(</span> <span title="Espressione esponenziale; numero pow(base, exp)" style="color: blue; font-weight: bold">pow</span> (3,4)</span> , <span style="background-color: #eee8aa;"><span title="Espressione esponenziale; numero pow(base, exp)" style="color: blue; font-weight: bold">pow</span> (3,4) <span title="Rilevate parentesi chiuse aggiuntive" style="border-style: solid; border-width: 2px; border-color: red;">)</span></span>


</td><td><b>Here are common errors so you can see the tooltips</b><br>Variables used before they are declared: <span id="LEMtailor_Q_40_5"><span style="background-color: #eee8aa;"><span title="This variable is not declared until a later page; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="This variable is not declared until a later page; Not a valid expression; [java61764X3X6][G:3][Q:200]: Who will win the next election?; value=?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span></span><br>Unknown Function: <span style="background-color: #eee8aa;"><span title="Undefined function" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Undefined function" style="color: blue; font-weight: bold">iff</span></span>(<span title="[java61764X1X4][G:2][Q:50]: How many pets do you have?; value=1" style="color: maroon; font-weight: bold">numPets</span> &gt; <span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>,1,2)</span><br>Unknown Variable: <span style="background-color: #eee8aa;"><span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(<span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="Undefined variable" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Undefined variable" style="color: red; font-weight: bold">num_pets</span></span>,<span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>)</span><br>Wrong # parameters: <span style="background-color: #eee8aa;"><span title="Function must have at least 1 argument(s); Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function must have at least 1 argument(s); Not a valid expression; Return a formatted string; string sprintf(format, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span>()</span>,<span style="background-color: #eee8aa;"><span title="Function does not support that number of arguments: 2. Function supports this many arguments, where -1=unlimited: 3; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function does not support that number of arguments: 2. Function supports this many arguments, where -1=unlimited: 3; Not a valid expression; Excel-style if(test,result_if_true,result_if_false); if(test,result_if_true,result_if_false)" style="color: blue; font-weight: bold">if</span></span>(1,2)</span>,<span style="background-color: #eee8aa;"><span title="Function does not support that number of arguments: 0. Function supports this many arguments, where -1=unlimited: 1,2; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function does not support that number of arguments: 0. Function supports this many arguments, where -1=unlimited: 1,2; Not a valid expression; Format a local date/time; string date(format [, timestamp=time()])" style="color: blue; font-weight: bold">date</span></span>()</span><br>Assign read-only-vars:<span style="background-color: #eee8aa;"><span title="The value of this variable can not be changed; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="The value of this variable can not be changed; Not a valid expression; ; value=worker" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span><span title="Assigning a new value to a variable" style="color: red; font-weight: bold">+=</span>10</span>,<span id="LEMtailor_Q_40_12"><span style="background-color: #eee8aa;"><span title="The value of this variable can not be changed; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="The value of this variable can not be changed; Not a valid expression; [java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span></span><span title="Assigning a new value to a variable" style="color: red; font-weight: bold">=</span><span title="" style="color: gray">'Sally'</span></span></span><br>Unbalanced parentheses: <span style="background-color: #eee8aa;"><span title="Parentheses not balanced" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Parentheses not balanced; Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span></span>(3,4</span>,<span style="background-color: #eee8aa;"><span title="Parentheses not balanced" style="border-style: solid; border-width: 2px; border-color: red;">(</span><span title="Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span>(3,4)</span>,<span style="background-color: #eee8aa;"><span title="Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span>(3,4)<span title="Extra right parentheses detected" style="border-style: solid; border-width: 2px; border-color: red;">)</span></span>
</td><td><b>Di seguito sono riportati gli errori comuni in modo da poter visualizzare i suggerimenti</b><br> Variabili usate prima di essere dichiarate: <span id="LEMtailor_Q_40_5"><span style="background-color: #eee8aa;"><span title="Questa variabile non viene dichiarata fino a una pagina successiva; Espressione non valida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Questa variabile non viene dichiarata fino a una pagina successiva; Espressione non valida; [java61764X3X6][G:3][Q:200]: Chi vincerà le prossime elezioni?; valore=?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span></span><br> Funzione sconosciuta: <span style="background-color: #eee8aa;"><span title="Funzione non definita" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Funzione non definita" style="color: blue; font-weight: bold">iff</span></span> ( <span title="[java61764X1X4][G:2][Q:50]: Quanti animali hai?; valore=1" style="color: maroon; font-weight: bold">numPets</span> > <span title="[java61764X1X3][G:2][Q:40]: Quanti figli hai?; valore=2" style="color: green; font-weight: bold">numKids</span> ,1,2)</span><br> Variabile sconosciuta: <span style="background-color: #eee8aa;"><span title="Calcola la somma dei valori in un array; numero somma(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">somma</span> ( <span title="[java61764X1X2][G:2][Q:30]: Quanti anni hai?; valore=45" style="color: green; font-weight: bold">età</span> , <span title="variabile non definita" style="border-style: solid; border-width: 2px; border-color: red;"><span title="variabile non definita" style="color: red; font-weight: bold">num_animali</span></span> , <span title="[java61764X1X3][G:2][Q:40]: Quanti figli hai?; valore=2" style="color: green; font-weight: bold">numBambini</span> )</span><br> # parametri errati: <span style="background-color: #eee8aa;"><span title="La funzione deve avere almeno 1 argomento(i); Espressione non valida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La funzione deve avere almeno 1 argomento(i); Espressione non valida; Restituisce una stringa formattata; stringa sprintf(formato, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span> ()</span> , <span style="background-color: #eee8aa;"><span title="La funzione non supporta quel numero di argomenti: 2. La funzione supporta questo numero di argomenti, dove -1=illimitato: 3; Espressione non valida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La funzione non supporta quel numero di argomenti: 2. La funzione supporta questo numero di argomenti, dove -1=illimitato: 3; Espressione non valida; Stile Excel if(test,result_if_true,result_if_false); if(prova,risultato_se_vero,risultato_se_falso)" style="color: blue; font-weight: bold">if</span></span> (1,2)</span> , <span style="background-color: #eee8aa;"><span title="La funzione non supporta quel numero di argomenti: 0. La funzione supporta questo numero di argomenti, dove -1=illimitato: 1,2; Espressione non valida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La funzione non supporta quel numero di argomenti: 0. La funzione supporta questo numero di argomenti, dove -1=illimitato: 1,2; Espressione non valida; Formattare una data/ora locale; stringa data(formato [, timestamp=ora()])" style="color: blue; font-weight: bold">date</span></span> ()</span><br> Assegna variabili di sola lettura: <span style="background-color: #eee8aa;"><span title="Il valore di questa variabile non può essere modificato; Espressione non valida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Il valore di questa variabile non può essere modificato; Espressione non valida; ; valore=lavoratore" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span><span title="Assegnazione di un nuovo valore a una variabile" style="color: red; font-weight: bold">+=</span> 10</span> , <span id="LEMtailor_Q_40_12"><span style="background-color: #eee8aa;"><span title="Il valore di questa variabile non può essere modificato; Espressione non valida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Il valore di questa variabile non può essere modificato; Espressione non valida; [java61764X1X1][G:1][Q:10]: Qual è il tuo nome/nome?; valore=Pietro" style="color: green; font-weight: bold">name</span></span><span title="Assegnazione di un nuovo valore a una variabile" style="color: red; font-weight: bold">=</span> <span title="" style="color: gray">'Sally'</span></span></span><br> Parentesi non bilanciate: <span style="background-color: #eee8aa;"><span title="Parentesi non bilanciate" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Parentesi non bilanciate; Espressione esponenziale; numero pow(base, exp)" style="color: blue; font-weight: bold">pow</span></span> (3,4</span> , <span style="background-color: #eee8aa;"><span title="Parentesi non bilanciate" style="border-style: solid; border-width: 2px; border-color: red;">(</span> <span title="Espressione esponenziale; numero pow(base, exp)" style="color: blue; font-weight: bold">pow</span> (3,4)</span> , <span style="background-color: #eee8aa;"><span title="Espressione esponenziale; numero pow(base, exp)" style="color: blue; font-weight: bold">pow</span> (3,4) <span title="Rilevate parentesi chiuse aggiuntive" style="border-style: solid; border-width: 2px; border-color: red;">)</span></span>


</td></tr>
</td></tr>
<tr><td><b>Here is some of the unsupported syntax</b><br>No support for '++', '--', '%',';': {min(++age, --age,age % 2);}<br>Nor '|', '&amp;', '^': {(sum(2 | 3,3 &amp; 4,5 ^ 6)}}<br>Nor arrays: {name[2], name['mine']}
<tr><td> <b>Ecco alcune delle sintassi non supportate</b><br> Nessun supporto per '++', '--', '%',';': {min(++age, --age,age % 2);}<br> '|', '&', '^': {(sum(2 | 3,3 & 4,5 ^ 6)}}<br> Né array: {nome[2], nome['mio']}
</td><td><b>Here is some of the unsupported syntax</b><br>No support for '++', '--', '%',';': <span style="background-color: #eee8aa;"><span title="Find lowest value; number min(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">min</span>(<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ++ </span><span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> -- </span><span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> % </span>2)<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ; </span></span><br>Nor '|', '&amp;', '^': <span style="background-color: #eee8aa;">(<span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(2<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> | </span>3,3<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> &amp; </span>4,5<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ^ </span>6)</span>}<br>Nor arrays: <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> [ </span>2<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ] </span>,<span title="[java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> [ </span><span title="" style="color: gray">'mine'</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ] </span></span>
</td><td> <b>Ecco alcune delle sintassi non supportate</b><br> Nessun supporto per '++', '--', '%',';': <span style="background-color: #eee8aa;"><span title="Trova il valore più basso; numero min(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">min</span> ( <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">++</span> <span title="[java61764X1X2][G:2][Q:30]: Quanti anni hai?; valore=45" style="color: green; font-weight: bold">età</span> , <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">--</span> <span title="[java61764X1X2][G:2][Q:30]: Quanti anni hai?; valore=45" style="color: green; font-weight: bold">età</span> , <span title="[java61764X1X2][G:2][Q:30]: Quanti anni hai?; valore=45" style="color: green; font-weight: bold">età</span> <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">%</span> 2) <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">;</span></span><br> '|', '&', '^': <span style="background-color: #eee8aa;">( <span title="Calcola la somma dei valori in un array; numero somma(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">somma</span> (2 <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">|</span> 3,3 <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">&</span> 4,5 <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">^</span> 6)</span> }<br> Né array: <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:10]: Qual è il tuo nome/nome?; valore=Pietro" style="color: green; font-weight: bold">nome</span> <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">[</span> 2 <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">]</span> , <span title="[java61764X1X1][G:1][Q:10]: Qual è il tuo nome/nome?; valore=Pietro" style="color: green; font-weight: bold">nome</span> <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">[</span> <span title="" style="color: gray">'mio'</span> <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">]</span></span>


</td><td><b>Here is some of the unsupported syntax</b><br>No support for '++', '--', '%',';': <span style="background-color: #eee8aa;"><span title="Find lowest value; number min(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">min</span>(<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ++ </span><span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> -- </span><span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> % </span>2)<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ; </span></span><br>Nor '|', '&amp;', '^': <span style="background-color: #eee8aa;">(<span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(2<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> | </span>3,3<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> &amp; </span>4,5<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ^ </span>6)</span>}<br>Nor arrays: <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> [ </span>2<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ] </span>,<span title="[java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> [ </span><span title="" style="color: gray">'mine'</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ] </span></span>
</td><td><b>Ecco alcune delle sintassi non supportate</b><br> Nessun supporto per '++', '--', '%',';': <span style="background-color: #eee8aa;"><span title="Trova il valore più basso; numero min(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">min</span> ( <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">++</span> <span title="[java61764X1X2][G:2][Q:30]: Quanti anni hai?; valore=45" style="color: green; font-weight: bold">età</span> , <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">--</span> <span title="[java61764X1X2][G:2][Q:30]: Quanti anni hai?; valore=45" style="color: green; font-weight: bold">età</span> , <span title="[java61764X1X2][G:2][Q:30]: Quanti anni hai?; valore=45" style="color: green; font-weight: bold">età</span> <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">%</span> 2) <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">;</span></span><br> '|', '&', '^': <span style="background-color: #eee8aa;">( <span title="Calcola la somma dei valori in un array; numero somma(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">somma</span> (2 <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">|</span> 3,3 <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">&</span> 4,5 <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">^</span> 6)</span> }<br> Né array: <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:10]: Qual è il tuo nome/nome?; valore=Pietro" style="color: green; font-weight: bold">nome</span> <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">[</span> 2 <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">]</span> , <span title="[java61764X1X1][G:1][Q:10]: Qual è il tuo nome/nome?; valore=Pietro" style="color: green; font-weight: bold">nome</span> <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">[</span> <span title="" style="color: gray">'mio'</span> <span title="Sintassi non supportata" style="border-style: solid; border-width: 2px; border-color: red;">]</span></span>


</td></tr>
</td></tr>
Line 99: Line 97:




=Tailoring Examples (e.g. extending {INSERTANS:xxx})=
=Esempi di personalizzazione (ad es. estensione di {INSERTANS:xxx})=




=="Dear {Mr}/{Mrs} Smith..."==
=="Caro {Mr}/{Mrs} Smith..."==




Use the if() function to conditionally choose whether to display 'Mr.' or 'Mrs.'.
Utilizzare la funzione if() per scegliere in modo condizionale se visualizzare "Mr." o 'signora'.


The syntax is if(test,do_if_true,do_if_false).
La sintassi è if(test,do_if_true,do_if_false).


{|
{|
|#||Code||Question||Type
|#||Codice||Domanda||Tipo
|-
|-
|1||gender||What is your gender?||Gender
|1||sesso||Qual è il tuo genere?||Sesso
|-
|-
|2||example1||Dear {if(gender=='M','Mr.','Mrs.')} Smith, ...||Long free text
|2| |example1||Gender {if(gender=='M','Mr.','Mrs.')} Smith, ...||Testo libero lungo
|}
|}


Line 121: Line 119:




As it can be observed below, "Mr" and "Mrs" are tailored to what the respondent selects as answer to question "gender".
Come si può osservare di seguito, "Mr" e "Mrs" sono adattati a ciò che l'intervistato seleziona come risposta alla domanda "sesso".




Line 128: Line 126:




=="Dear {Mr}/{Mrs} Smith..." in invitation email==
=="Gentile {Mr}/{Mrs} Smith..." nell'e-mail di invito==




You can use the example above in the invitation email using attributes from the token table. Use the if() function to choose whether 'Mr.' or 'Mrs.' should be used in the email.
Puoi utilizzare l'esempio precedente nell'e-mail di invito utilizzando gli attributi della tabella dei token. Usa la funzione if() per scegliere se 'Mr.' o "signora". deve essere utilizzato nell'e-mail.




The syntax is "if(test,do_if_true,do_if_false)".
La sintassi è "if(test,do_if_true,do_if_false)".


{|
{|
|#||attribute||value
|#||attributo||valore
|-
|-
|1||Last name||Smith
|1||Cognome||Smith
|-
|-
|2||Email address||test@test.com
|2||Indirizzo email||test@test. com
|-
|-
|3||ATTRIBUTE_2||M
|3||ATTRIBUTE_2||M
Line 147: Line 145:




Text in invitation email:
Testo nell'e-mail di invito:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">


Dear {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},
Gentile {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},


you have been invited to participate in a survey:
sei stato invitato a partecipare a un sondaggio:


https:/...
https:/...
Line 163: Line 161:




email View:
e-mail Visualizza:




Line 169: Line 167:




=Calculation / Assessment Examples=
=Calcolo / Esempi di valutazione=




==Calculate assessment values at runtime and store the results in the survey data==
==Calcola i valori di valutazione in fase di esecuzione e memorizza i risultati nei dati del sondaggio==




This example uses all of EM's features, including Relevance, Tailoring, and the Equation question type.
Questo esempio utilizza tutte le funzionalità di EM, tra cui Rilevanza, Personalizzazione e il tipo di domanda Equazione.


It also shows that all of them are JavaScript-enabled, so if you have these features on a page, it will dynamically change as people set and change their answers.
Mostra anche che sono tutti abilitati per JavaScript, quindi se hai queste funzionalità su una pagina, cambierà dinamicamente man mano che le persone impostano e cambiano le loro risposte.


{|
{|
|#||Code||Question||Type||Relevance
|#||Codice||Domanda||Tipo||Rilevanza
|-
|1||numKids||How many children do you have?||Numerical input||1
|-
|2||kid1||How old is your first child?||Numerical input||numKids >= 1
|-
|-
|3||kid2||How old is your second child?||Numerical input||numKids >= 2
|1||numBambini||Quanti figli hai?||Input numerico||1!N !|-
|2||kid1||Quanti anni ha il tuo primo figlio?||Inserimento numerico||numKids >= 1
|-
|-
|4||kid3||How old is your third child?||Numerical input||numKids >= 3
|3||kid2||Quanti anni ha il tuo secondo child?||Input numerico||numKids >= 2
|-
|-
|5||kid4||How old is your fourth child?||Numerical input||numKids >= 4
|4||kid3||Quanti anni ha il tuo terzo figlio?||Input numerico||numKids >= 3
|-! N!|5||kid4||Quanti anni ha il tuo quarto figlio?||Input numerico||numKids >= 4
|-
|-
|6||sumKidAges||{sum(kid1.NAOK,kid2.NAOK,kid3.NAOK,kid4.NAOK)}||Equation||1
|6||sumKidAges||{sum(kid1.NAOK,kid2. NAOK,kid3.NAOK,kid4.NAOK)}||Equazione||1
|-
|-
|7||kidSummary||You said that you have {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','The sum of ages of your first ',min(numKids,4),' kids is ',sumKidAges,'.'),' ')}||Text display||1
|7||kidSummary||Hai detto di avere {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','La somma delle età dei tuoi primi ',min(numKids,4),' bambini è ',sumKidAges,'.'),' ')}||Visualizzazione testo| |1
|}
|}




To download this example, please click on the following link: [[Media:Assessments_survey_example.zip|Assessments_survey_example]].
Per scaricare questo esempio, fare clic sul seguente collegamento: [[Media:Assessments_survey_example.zip|Assessments_survey_example]].




You may find below screenshots of representative questions. As you can see, EM syntax-highlights all fields that might contain tailoring. Here, you see examples of syntax-highlighting Relevance, the Equation question type, and substitutions within a question. You can also use substitutions within Help, Group header display, Welcome message, and End message.
Di seguito sono disponibili schermate di domande rappresentative. Come puoi vedere, la sintassi EM evidenzia tutti i campi che potrebbero contenere la personalizzazione. Qui puoi vedere esempi di pertinenza con evidenziazione della sintassi, tipo di domanda Equazione e sostituzioni all'interno di una domanda. È inoltre possibile utilizzare le sostituzioni all'interno della Guida, della visualizzazione dell'intestazione del gruppo, del messaggio di benvenuto e del messaggio di fine.


In the next example, since the relevance is {numKids >= 2), the question will only be visible if the respondent reports that she has at least two children.
Nel prossimo esempio, poiché la rilevanza è {numKids >= 2), la domanda sarà visibile solo se l'intervistato riferisce di avere almeno due figli.




Line 209: Line 205:




Below, you may observe that each variable has the .NAOK suffix attached to it. This is because of how EM supports cascading relevance. If you did not have .NAOK, then the sum would only be computed if the person said she has 4 children (e.g., if all of the variables are relevant). The usage of .NAOK means that we want to compute the sum even if all or some of the variables are irrelevant (e.g., "Not Applicable" (NA) is alright (OK)).
Di seguito, puoi osservare che ogni variabile ha il suffisso .NAOK ad essa collegato. Ciò è dovuto al modo in cui EM supporta la pertinenza a cascata. Se non si dispone di .NAOK, la somma viene calcolata solo se la persona dice di avere 4 figli (ad esempio, se tutte le variabili sono rilevanti). L'uso di .NAOK significa che vogliamo calcolare la somma anche se tutte o alcune delle variabili sono irrilevanti (ad esempio, "Non applicabile" (NA) va bene (OK)).


However, the .NAOK attribute only affects whether variables are passed into EM. If the respondent initially says she has 3 children, and enters ages for each, then changes her mind and says she has 2, we don't want to see the sum of the 3 entered values - since the third child is "not applicable" in our case anymore:
Tuttavia, l'attributo .NAOK ha effetto solo sul passaggio delle variabili a EM. Se l'intervistato inizialmente afferma di avere 3 figli e inserisce l'età per ciascuno, poi cambia idea e dice di averne 2, non vogliamo vedere la somma dei 3 valori inseriti, poiché il terzo figlio è "non applicabile" nel nostro caso più:




Line 217: Line 213:




Each separate Expression is color coded with a tan background. As you can see, there are three separate Expressions here. The last one contains a message that is conditionally shown only if the person has more than one child.
Ogni espressione separata è codificata a colori con uno sfondo marrone chiaro. Come puoi vedere, ci sono tre espressioni separate qui. L'ultimo contiene un messaggio che viene mostrato in modo condizionale solo se la persona ha più di un figlio.




Line 223: Line 219:




Now, here are screenshots of the survey in action.
Ora, ecco gli screenshot del sondaggio in azione.


When you first visit the page, you see this. Note that is says "You have 0 '''children'''" instead of "You have 0 '''child'''".
Quando visiti la pagina per la prima volta, vedi questo. Nota che dice "Hai 0 '''bambini'''" invece di "Hai 0 '''bambini'''".




Line 231: Line 227:




If I change the value for number of children to 1, the display instantly changes to this, even though it is on the same page:
Se cambio il valore per il numero di bambini a 1, il display cambia immediatamente in questo, anche se si trova sulla stessa pagina:




Line 237: Line 233:




Now notice that the grammar is correct: "You have 1 '''child'''".
Ora nota che la grammatica è corretta: "Hai 1 '''figlio'''".


Now I change the value for number of children to 3, and the display instantly changes to this.
Ora cambio il valore per il numero di bambini in 3 e il display cambia immediatamente in questo.


Notice that you now see the conditional message at the bottom:  "The sum of ages of your first 3 kids is 0.".
Nota che ora vedi il messaggio condizionale in basso: "La somma delle età dei tuoi primi 3 figli è 0.".




Line 247: Line 243:




Now I'll enter ages for my imaginary children, and I get this display, summing up their ages:
Ora inserirò le età per i miei figli immaginari e otterrò questo display, riassumendo le loro età:




Line 253: Line 249:




Again, the score and display updates instantly as I enter the values, so you can use this to show a running total of an Assessment Score.
Ancora una volta, il punteggio e la visualizzazione si aggiornano istantaneamente mentre inserisco i valori, quindi puoi usarlo per mostrare un totale parziale di un punteggio di valutazione.




Now, I change the value for the number of children to 2. The display has changed to this:
Ora, cambio il valore per il numero di bambini a 2. Il display è cambiato in questo:




Line 262: Line 258:




Notice that although I had entered a value of 5.5 for the third child, the report now only sums the values of my first 2 children.
Si noti che sebbene avessi inserito un valore di 5,5 per il terzo figlio, il rapporto ora somma solo i valori dei miei primi 2 figli.


The reason for this is that the 3rd value is now irrelevant, and irrelevant values are actively ignored by EM.
La ragione di ciò è che il 3° valore ora è irrilevante e i valori irrilevanti vengono attivamente ignorati da EM.


If I were to change the number of kids back to 3, I would see the value of 5.5 I entered again. So, I don't lose any information I enter on the page.
Se dovessi riportare il numero di bambini a 3, vedrei di nuovo il valore di 5,5 che ho inserito. Quindi, non perdo nessuna informazione che inserisco nella pagina.


However, if I navigate to the Next or Previous page, all irrelevant values will be NULLed out in the session and in the database. So, if I were to keep the value at 2, go to the next page, and then come back and state that I actually have 3 kids, I would no longer see the age of 5.5.
Tuttavia, se vado alla pagina successiva o precedente, tutti i valori irrilevanti verranno annullati nella sessione e nel database. Quindi, se dovessi mantenere il valore a 2, andare alla pagina successiva e poi tornare indietro e affermare che in realtà ho 3 figli, non vedrei più l'età di 5,5.




==Enter data and see a dynamically changing report of what was entered on the same page==
==Inserisci i dati e visualizza un rapporto che cambia dinamicamente di ciò che è stato inserito nella stessa pagina==




This example presents the Tailoring process within LimeSurvey.
Questo esempio presenta il processo Tailoring all'interno di LimeSurvey.


To download this example, click on the following link: [[Media:Dynamic_change_of_the_report_when_data_is_entered_on_the_same_page_survey.zip|Dynamic changes survey example]].
Per scaricare questo esempio, fai clic sul seguente link: [[Media:Dynamic_change_of_the_report_when_data_is_entered_on_the_same_page_survey.zip|Esempio di sondaggio sui cambiamenti dinamici]].


Here is what the page looks like initially. You only see the question asking what city you live in:
Ecco come appare inizialmente la pagina. Vedrai solo la domanda che chiede in quale città vivi:




Line 284: Line 280:




Once you start to enter an answer, the tailoring process is also starting:
Una volta che inizi a inserire una risposta, inizia anche il processo di personalizzazione:


<center>[[File:em-on_page_report-usage-2.jpg]]</center>
<center>[[File:em-on_page_report-usage-2.jpg]]</center>




As you enter answers, the table at the bottom of the page is updated to show the answer codes and values of your responses.
Man mano che inserisci le risposte, la tabella in fondo alla pagina viene aggiornata per mostrare i codici di risposta e i valori delle tue risposte.




<center>[[File:em-on_page_report-usage-3.jpg]]</center>
<center>[[File:em-on_page_report-usage-3.jpg]]</center>


=Common Debugging Examples=
=Esempi comuni di debug=




==Nested if() Statements (Conditional Logic)==
==Dichiarazioni if() nidificate (logica condizionale)==




EM supports the function "if(test,do_if_true,do_if_false)" so that you can perform conditional logic or tailoring. This function can be nested to do the equivalent of "if { } else if { } else {  }". EM will let you know if the parentheses are not balanced (e.g., you are missing a closing right parenthesis), or if you have any extra right parentheses. You should try to count the parentheses as you compose long nested if statements, save it, check for syntax errors, and fix them if any are found. Let's check together the below example.  
EM supporta la funzione "if(test,do_if_true,do_if_false)" in modo da poter eseguire la logica condizionale o la personalizzazione. Questa funzione può essere nidificata per fare l'equivalente di "if { } else if { } else { }". EM ti farà sapere se le parentesi non sono bilanciate (ad esempio, ti manca una parentesi aperta di chiusura), o se hai delle parentesi aperte in più. Dovresti provare a contare le parentesi mentre componi lunghe istruzioni if nidificate, salvarle, verificare la presenza di errori di sintassi e correggerli se ne vengono trovati. Controlliamo insieme l'esempio sottostante.  


The group of questions used below can be accessed from here: [[Media:Example_tailoring_group11.zip|Tailoring survey example.lsg]]
È possibile accedere al gruppo di domande utilizzato di seguito da qui: [[Media:Example_tailoring_group11.zip|Esempio di sondaggio sulla sartoria.lsg]]




First, with nothing entered, you just see "Hello."
Innanzitutto, senza inserire nulla, vedrai solo "Ciao".




Line 311: Line 307:




If you enter a name, it says, "Hello {name}."
Se inserisci un nome, viene visualizzato il messaggio "Ciao {nome}".




Line 317: Line 313:




If you enter an age, you get a tailored message, depending upon whether you are a pre-school-age child or not:
Se inserisci un'età, ricevi un messaggio su misura, a seconda che tu sia un bambino in età prescolare o meno:




Line 323: Line 319:




School aged, teenager, or adult. Here is a  teenager who wants to be anonymous:
In età scolare, adolescente o adulto. Ecco un adolescente che vuole restare anonimo:




Line 329: Line 325:




Here is the logic file of the group. As you can see in the "if-based" question, there are nested if statements based upon the person's age.
Ecco il file logico del gruppo. Come puoi vedere nella domanda "basata su if", ci sono affermazioni if nidificate basate sull'età della persona.




Line 335: Line 331:




When you are originally editing this question, it is likely that at some point, you will have the wrong number of parentheses. Here's what happens if you have too few:
Quando stai originariamente modificando questa domanda, è probabile che a un certo punto avrai il numero sbagliato di parentesi. Ecco cosa succede se ne hai troppo pochi:




Line 341: Line 337:




If you hover over the word "if", which is surrounded by a red box, it says "Parentheses not balanced". In this case, there should be four closing parentheses after "already an adult!", but there are only three.
Se passi con il mouse sopra la parola "if", che è circondata da un riquadro rosso, si dice "Parentesi non bilanciate". In questo caso, dovrebbero esserci quattro parentesi di chiusura dopo "già adulto!", ma ce ne sono solo tre.


If, on the other hand, you have an extra right parenthesis, it will be surrounded by a red box, like this:
Se invece hai una parentesi chiusa in più, sarà circondata da un riquadro rosso, come questo:




Line 349: Line 345:




When you are actually editing the question, the question looks like this:
Quando stai effettivamente modificando la domanda, la domanda ha questo aspetto:




<center>[[File:em-nested-if-edit-screen.jpg]]</center>
<center>[[File:em-nested-if-edit-screen.jpg]]</center>

Latest revision as of 17:17, 31 July 2023


Panoramica di quanto spiegato in precedenza

Se finora hai seguito la struttura del manuale di LimeSurvey, significa che conosci già la Terminologia di LimeSurvey. Successivamente, abbiamo trattato espressioni e variabili per imparare come migliorare i nostri sondaggi. Nella parte successiva, siamo passati ai tipi e ai significati di evidenziazione della sintassi per imparare a correggere gli errori di sintassi.

Con queste nozioni di base coperte, potremmo passare agli esempi e spiegare come funzionano le espressioni all'interno di LimeSurvey.


Evidenziazione della sintassi

Gli screenshot seguenti forniscono esempi, ma non mostrano i valori dei suggerimenti. Un suggerimento è una casella informativa che viene visualizzata ogni volta che si passa il mouse su parole in grassetto.

Grazie a questa evidenziazione della sintassi, è molto facile comporre espressioni corrette, anche quelle complicate. Sebbene il team di LimeSurvey intenda provare a creare una GUI di Expression Builder, puoi utilizzare l'evidenziazione della sintassi esistente per identificare e correggere rapidamente gli errori di battitura. Puoi anche utilizzare i suggerimenti per convalidare l'accuratezza delle tue espressioni (ad esempio, confermare di aver selezionato le variabili desiderate).

In ognuno degli esempi, ci sono tre colonne:

  1. Source - questo è il testo non elaborato che inseriresti nel campo della domanda di LimeSurvey
  2. Pretty Print - questo è l'equivalente evidenziato in sintassi di quello che hai inserito! N!#*Nota che le espressioni sono mostrate con uno sfondo marrone chiaro, ma non circondate da parentesi graffe in questa evidenziazione.
    • Poiché EM supporta la sostituzione ricorsiva, mostrare le parentesi graffe nell'evidenziazione causerebbe errori di sintassi
  3. Risultato - questo è l'output generato quando EM elabora il sorgente
    • Tutto ciò che può essere correttamente sostituito è
    • Le espressioni con errori sono mostrate in linea, con l'evidenziazione della sintassi. Gli errori sono circondati da una casella bordata di rosso.


Sintassi corretta

Di seguito puoi trovare esempi di sintassi corretta:

  1. Values: mostra che le variabili note sono codificate a colori a seconda che siano impostate nella pagina corrente. Old-style INSERTANS:xxxx ottiene il proprio stile di codifica a colori
  2. Attributi domanda: mostra che la notazione punto può accedere ad alcune proprietà delle domande
  3. Math: mostra che sono supportati calcoli di base e complessi
  4. TextProcessing: mostra alcune delle funzioni disponibili per l'elaborazione del testo
  5. Dates: mostra due delle funzioni relative alla data disponibili
  6. Conditional: mostra l'utilizzo della funzione if(). Le scelte possono essere nidificate.
  7. Paragrafo su misura: puoi personalizzare completamente un report basato su valori precedenti
  8. EM processi all'interno di stringhe: mostra che può eseguire sostituzioni all'interno di stringhe. Questo esempio genera un nome immagine personalizzato.
  9. EM non elabora le parentesi graffe come queste: mostra che se le parentesi graffe sono sfuggite o c'è uno spazio bianco tra l'espressione e le parentesi graffe, ES ignora l'espressione.



Sintassi EM contenente errori

Ecco alcuni esempi di errori comuni durante la digitazione delle espressioni ES. Si noti che i suggerimenti forniscono informazioni aggiuntive.

  1. Inline Javascript che ha dimenticato di aggiungere spazi dopo la parentesi graffa
    • Poiché "document.write" appare subito dopo una parentesi graffa, EM pensa che sia un'espressione e red- caselle "document" e "write" poiché sono variabili e funzioni non definite, rispettivamente
  2. Variabili, funzioni e operatori sconosciuti/errati
    • Qui abbiamo dimenticato che stiamo usando il nome della variabile "gender" invece di " sex", ma EM rileva quell'errore. Inoltre, contrassegna in rosso '++', poiché non è un operatore supportato.
  3. Avverte se si usa = invece di eq o esegue assegnazioni di valori
    • Notare che '=' e '+=' sono in testo rosso invece che nero. Se passi il mouse sopra di essi, vedrai avvertimenti che stai assegnando un valore.
  4. Numero errato di argomenti per le funzioni
    • if() prende 3 argomenti, ma ne sono stati dati 4, quindi passandoci sopra sopra l'"if" nella casella rossa spiegherà l'errore e mostrerà la sintassi supportata
    • sum() prende un numero illimitato di argomenti, ma avevamo una virgola finale prima delle parentesi di chiusura, quindi è nella casella rossa! N!#Parenti non corrispondenti
    • Questo è uno degli errori più comuni durante la scrittura di espressioni.
    • Questo mostra due esempi di parentesi di chiusura mancanti e un esempio di parentesi di chiusura troppe.
#Sintassi non supportata
    • Se usi un operatore o una punteggiatura che ES non supporta, verrà inserito in una casella rossa.
  1. Assegnazioni non valide
    • Alcune variabili sono readWrite e possono avere i loro valori modificati. Altre sono di sola lettura.
    • Se provi a cambiare il valore di una variabile di sola lettura, non puoi. EM inserirà in una casella rossa il tentativo.
    • Se provi ad assegnare un valore a un'equazione o a una stringa, otterrai anche un errore



"Live" esempi di evidenziazione della sintassi con suggerimenti attivi

Fonte Bella stampa Risultato
Ecco un esempio di sintassi OK con suggerimenti
Ciao {if(gender=='M','Mr.','Mrs.')} {surname}, ora è {date('g:i a',time())}. Sai dove sono i tuoi {sum(numPets,numKids)} bambini e animali domestici?
Ecco un esempio di sintassi OK con suggerimenti
Hello if ( gender == 'M' , 'Mr.' , 'Mrs.' ) cognome , ora è date ( 'g:i a' , time ()) . Sai dove sono i tuoi bambini e animali domestici ( numPets , numKids ) ?
Ecco un esempio di sintassi OK con suggerimenti
Salve signor Smith , ora sono le 6:07. Sai dove sono i tuoi 3 bambini e gli animali domestici?
Di seguito sono riportati gli errori comuni in modo da poter visualizzare i suggerimenti
Variabili utilizzate prima di essere dichiarate: {notSetYet}
Funzione sconosciuta: {iff(numPets>numKids,1,2)}
Variabile sconosciuta: {sum(age,num_pets,numKids)}
# parametri errati: {sprintf()},{if(1,2)},{date()}
Assegna variabili di sola lettura:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}
Parentesi non bilanciate: {pow(3,4},{(pow(3,4)},{pow(3,4))}
Di seguito sono riportati gli errori comuni in modo da poter visualizzare i suggerimenti
Variabili usate prima di essere dichiarate: notSetYet
Funzione sconosciuta: iff ( numPets > numKids ,1,2)
Variabile sconosciuta: somma ( età , num_animali , numBambini )
# parametri errati: sprintf () , if (1,2) , date ()
Assegna variabili di sola lettura: TOKEN:ATTRIBUTE_1+= 10 , name= 'Sally'
Parentesi non bilanciate: pow (3,4 , ( pow (3,4) , pow (3,4) )
Di seguito sono riportati gli errori comuni in modo da poter visualizzare i suggerimenti
Variabili usate prima di essere dichiarate: notSetYet
Funzione sconosciuta: iff ( numPets > numKids ,1,2)
Variabile sconosciuta: somma ( età , num_animali , numBambini )
# parametri errati: sprintf () , if (1,2) , date ()
Assegna variabili di sola lettura: TOKEN:ATTRIBUTE_1+= 10 , name= 'Sally'
Parentesi non bilanciate: pow (3,4 , ( pow (3,4) , pow (3,4) )
Ecco alcune delle sintassi non supportate
Nessun supporto per '++', '--', '%',';': {min(++age, --age,age % 2);}
Né '|', '&', '^': {(sum(2 | 3,3 & 4,5 ^ 6)}}
Né array: {nome[2], nome['mio']}
Ecco alcune delle sintassi non supportate
Nessun supporto per '++', '--', '%',';': min ( ++ età , -- età , età % 2) ;
Né '|', '&', '^': ( somma (2 | 3,3 & 4,5 ^ 6) }
Né array: nome [ 2 ] , nome [ 'mio' ]
Ecco alcune delle sintassi non supportate
Nessun supporto per '++', '--', '%',';': min ( ++ età , -- età , età % 2) ;
Né '|', '&', '^': ( somma (2 | 3,3 & 4,5 ^ 6) }
Né array: nome [ 2 ] , nome [ 'mio' ]


Esempi di personalizzazione (ad es. estensione di {INSERTANS:xxx})

"Caro {Mr}/{Mrs} Smith..."

Utilizzare la funzione if() per scegliere in modo condizionale se visualizzare "Mr." o 'signora'.

La sintassi è if(test,do_if_true,do_if_false).

# Codice Domanda Tipo
1 sesso Qual è il tuo genere? Sesso
|example1 Gender {if(gender=='M','Mr.','Mrs.')} Smith, ... Testo libero lungo



Come si può osservare di seguito, "Mr" e "Mrs" sono adattati a ciò che l'intervistato seleziona come risposta alla domanda "sesso".



"Gentile {Mr}/{Mrs} Smith..." nell'e-mail di invito

Puoi utilizzare l'esempio precedente nell'e-mail di invito utilizzando gli attributi della tabella dei token. Usa la funzione if() per scegliere se 'Mr.' o "signora". deve essere utilizzato nell'e-mail.


La sintassi è "if(test,do_if_true,do_if_false)".

# attributo valore
1 Cognome Smith
2 Indirizzo email test@test. com
3 ATTRIBUTE_2 M


Testo nell'e-mail di invito:

Gentile {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},

sei stato invitato a partecipare a un sondaggio:

https:/...



e-mail Visualizza:



Calcolo / Esempi di valutazione

Calcola i valori di valutazione in fase di esecuzione e memorizza i risultati nei dati del sondaggio

Questo esempio utilizza tutte le funzionalità di EM, tra cui Rilevanza, Personalizzazione e il tipo di domanda Equazione.

Mostra anche che sono tutti abilitati per JavaScript, quindi se hai queste funzionalità su una pagina, cambierà dinamicamente man mano che le persone impostano e cambiano le loro risposte.

# Codice Domanda Tipo Rilevanza
1 numBambini Quanti figli hai? Input numerico - 2 kid1 Quanti anni ha il tuo primo figlio? Inserimento numerico numKids >= 1
3 kid2 Quanti anni ha il tuo secondo child? Input numerico numKids >= 2
4 kid3 Quanti anni ha il tuo terzo figlio? Input numerico numKids >= 3
6 sumKidAges {sum(kid1.NAOK,kid2. NAOK,kid3.NAOK,kid4.NAOK)} Equazione 1
7 kidSummary Hai detto di avere {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','La somma delle età dei tuoi primi ',min(numKids,4),' bambini è ',sumKidAges,'.'),' ')} |1


Per scaricare questo esempio, fare clic sul seguente collegamento: Assessments_survey_example.


Di seguito sono disponibili schermate di domande rappresentative. Come puoi vedere, la sintassi EM evidenzia tutti i campi che potrebbero contenere la personalizzazione. Qui puoi vedere esempi di pertinenza con evidenziazione della sintassi, tipo di domanda Equazione e sostituzioni all'interno di una domanda. È inoltre possibile utilizzare le sostituzioni all'interno della Guida, della visualizzazione dell'intestazione del gruppo, del messaggio di benvenuto e del messaggio di fine.

Nel prossimo esempio, poiché la rilevanza è {numKids >= 2), la domanda sarà visibile solo se l'intervistato riferisce di avere almeno due figli.



Di seguito, puoi osservare che ogni variabile ha il suffisso .NAOK ad essa collegato. Ciò è dovuto al modo in cui EM supporta la pertinenza a cascata. Se non si dispone di .NAOK, la somma viene calcolata solo se la persona dice di avere 4 figli (ad esempio, se tutte le variabili sono rilevanti). L'uso di .NAOK significa che vogliamo calcolare la somma anche se tutte o alcune delle variabili sono irrilevanti (ad esempio, "Non applicabile" (NA) va bene (OK)).

Tuttavia, l'attributo .NAOK ha effetto solo sul passaggio delle variabili a EM. Se l'intervistato inizialmente afferma di avere 3 figli e inserisce l'età per ciascuno, poi cambia idea e dice di averne 2, non vogliamo vedere la somma dei 3 valori inseriti, poiché il terzo figlio è "non applicabile" nel nostro caso più:



Ogni espressione separata è codificata a colori con uno sfondo marrone chiaro. Come puoi vedere, ci sono tre espressioni separate qui. L'ultimo contiene un messaggio che viene mostrato in modo condizionale solo se la persona ha più di un figlio.



Ora, ecco gli screenshot del sondaggio in azione.

Quando visiti la pagina per la prima volta, vedi questo. Nota che dice "Hai 0 bambini" invece di "Hai 0 bambini".



Se cambio il valore per il numero di bambini a 1, il display cambia immediatamente in questo, anche se si trova sulla stessa pagina:



Ora nota che la grammatica è corretta: "Hai 1 figlio".

Ora cambio il valore per il numero di bambini in 3 e il display cambia immediatamente in questo.

Nota che ora vedi il messaggio condizionale in basso: "La somma delle età dei tuoi primi 3 figli è 0.".



Ora inserirò le età per i miei figli immaginari e otterrò questo display, riassumendo le loro età:



Ancora una volta, il punteggio e la visualizzazione si aggiornano istantaneamente mentre inserisco i valori, quindi puoi usarlo per mostrare un totale parziale di un punteggio di valutazione.


Ora, cambio il valore per il numero di bambini a 2. Il display è cambiato in questo:



Si noti che sebbene avessi inserito un valore di 5,5 per il terzo figlio, il rapporto ora somma solo i valori dei miei primi 2 figli.

La ragione di ciò è che il 3° valore ora è irrilevante e i valori irrilevanti vengono attivamente ignorati da EM.

Se dovessi riportare il numero di bambini a 3, vedrei di nuovo il valore di 5,5 che ho inserito. Quindi, non perdo nessuna informazione che inserisco nella pagina.

Tuttavia, se vado alla pagina successiva o precedente, tutti i valori irrilevanti verranno annullati nella sessione e nel database. Quindi, se dovessi mantenere il valore a 2, andare alla pagina successiva e poi tornare indietro e affermare che in realtà ho 3 figli, non vedrei più l'età di 5,5.


Inserisci i dati e visualizza un rapporto che cambia dinamicamente di ciò che è stato inserito nella stessa pagina

Questo esempio presenta il processo Tailoring all'interno di LimeSurvey.

Per scaricare questo esempio, fai clic sul seguente link: Esempio di sondaggio sui cambiamenti dinamici.

Ecco come appare inizialmente la pagina. Vedrai solo la domanda che chiede in quale città vivi:



Una volta che inizi a inserire una risposta, inizia anche il processo di personalizzazione:


Man mano che inserisci le risposte, la tabella in fondo alla pagina viene aggiornata per mostrare i codici di risposta e i valori delle tue risposte.


Esempi comuni di debug

Dichiarazioni if() nidificate (logica condizionale)

EM supporta la funzione "if(test,do_if_true,do_if_false)" in modo da poter eseguire la logica condizionale o la personalizzazione. Questa funzione può essere nidificata per fare l'equivalente di "if { } else if { } else { }". EM ti farà sapere se le parentesi non sono bilanciate (ad esempio, ti manca una parentesi aperta di chiusura), o se hai delle parentesi aperte in più. Dovresti provare a contare le parentesi mentre componi lunghe istruzioni if nidificate, salvarle, verificare la presenza di errori di sintassi e correggerli se ne vengono trovati. Controlliamo insieme l'esempio sottostante.

È possibile accedere al gruppo di domande utilizzato di seguito da qui: Esempio di sondaggio sulla sartoria.lsg


Innanzitutto, senza inserire nulla, vedrai solo "Ciao".



Se inserisci un nome, viene visualizzato il messaggio "Ciao {nome}".



Se inserisci un'età, ricevi un messaggio su misura, a seconda che tu sia un bambino in età prescolare o meno:



In età scolare, adolescente o adulto. Ecco un adolescente che vuole restare anonimo:



Ecco il file logico del gruppo. Come puoi vedere nella domanda "basata su if", ci sono affermazioni if nidificate basate sull'età della persona.



Quando stai originariamente modificando questa domanda, è probabile che a un certo punto avrai il numero sbagliato di parentesi. Ecco cosa succede se ne hai troppo pochi:



Se passi con il mouse sopra la parola "if", che è circondata da un riquadro rosso, si dice "Parentesi non bilanciate". In questo caso, dovrebbero esserci quattro parentesi di chiusura dopo "già adulto!", ma ce ne sono solo tre.

Se invece hai una parentesi chiusa in più, sarà circondata da un riquadro rosso, come questo:



Quando stai effettivamente modificando la domanda, la domanda ha questo aspetto: