Supporto volontario e collaborativo per Joomla!® in italiano

Realizzare quiz, survey e test con Mad Blanks!

grafico risultati survey mad blanksGià un pò di tempo addietro si era presentata la necessità di effettuare quiz e survey su alcuni temi di interesse nei portali che gestisco. Cercando tra le estensioni Joomla non commerciali, la più potente sembrava essere Mad Blanks. Tuttavia, la mancanza di documentazione in italiano ed alcune review che ne apprezzavano i pregi ma ne criticavano la complessità mi hanno fatto inizialmente desistere. Nel momento in cui non è stato più possibile rinviare la scelta, ho finalmente deciso di utilizzarla e devo dire che le difficoltà di utilizzo sono presenti, ma sono ripagate dalla qualità del risultato e dalle molte funzionalità implementabili. Quest'articolo offre una overview di Mad Blanks per Joomla 1.5, con un focus particolare sulla creazione di una survey.

I passi da seguire per realizzare la nostra survey sono i seguenti:

  1. Creazione delle domande
  2. Pubblicazione della survey
  3. Creazione dello script per l'elaborazione delle risposte inserite dal singolo utente
  4. Creazione del grafico per la visualizzazione dei risultati aggregati per tutti gli utenti

1) Creazione delle domande: per prima cosa scaricate e installate il componente mad Blanks 1.4.2 per Joomla 1.5. Aprite il menù del componente alla voce "Categories" e create una nuova categoria, che nella pratica corrisponde a un nuovo quiz. Vi apparirà una schermata con un numero infinito di campi da compilare. Mi soffermo su quanto occorre compilare per il nostro scopo, ma sappiate che da qui potete controllare praticamete OGNI aspetto del vostro quiz: potete decidere se un utente può ritentare il quiz sovrascrivendo i risultati precedenti o creando un nuovo record dei risultati, potete decidere i privilegi necessari per eseguire il test, ecc. Inoltre, moltissimi dei parametri che vedrete sono relativi alla visualizzazione dei record dei risultati, cioè le visualizzazioni delle singole risposte date dagli utenti. Nel nostro caso, non verranno mai visualizzate le singole risposte ma solo il risultato finale di una semplice survey con domande a risposta singola tra un set di opzioni fisse (radio button), per cui ignoreremo gran parte dei parametri. Facciamo in modo che ogni utente (senza loggarsi) possa eseguire la survey tutte le volte che vuole ed ogni volta aggiungere un nuovo set di risultati:


Prima schermata configurazione quiz Mad Blanks

Nella schermata sono evidenziati i punti su cui agire: Pubblicazione, Nome categoria (cioè nome quiz) e Score Script. Impostiamo i primi due e lasciamo perdere per il momento lo script per calcolare il punteggio, che setteremo subito dopo averlo creato.
Scrolliamo un pò verso il basso ed arriviamo dunque alla prima domanda o field: espandiamo le "advanced options" ed eccoci qui con 4 schermate di parametri da controllare!!! Ce n'è abbastaza per scoraggiarsi... descriviamo le opzioni da selezionare per creare una serie di risposte a scelta multipla con dei radio button e un punteggio per ogni opzione:

Schermata parziale per configurazione domanda Mad Blanks
I primi due elementi evidenziati rappresentano il campo per attivare la domanda e la domanda stessa, che non può superare i 255 caratteri; vediamo gli elementi numerati, che possono essere osservati in dettaglio ingrandendo l'immagine:

  1. Tipo di domanda; nel nostro caso selezioniamo "Radio buttons"
  2. Attributo della domanda: normale, sola lettura o disabilitato. Probabilmente è utilizzabile per visualizzare delle risposte non modificabili, che potrebbero dipendere dalle risposte inserite dall'utente fino a quel momento. Nel nostro caso selezioniamo "Normal"
  3. Orientamento della lista di opzioni: selezioniamo "Vertical"
  4. Abilitazione delle risposte a scelta multipla: non sono riuscito ad interpretarne correttamente il senso, poichè abbiamo già detto che il tipo di campo è un Radio Button, ma va selezionato "Abilitato" altrimenti la domanda non funziona correttamente
  5. L'elenco di opzioni: qui occorre scrivere l'insieme delle opzioni selezionabili nella domanda, separate dal carattere ";". In questo modo, indicate anche il numero di opzioni. Quindi se la domanda fosse "Ti piace il calcio?" e le tre risposte che volete mostrare all'utente fossero "Poco", "Abbastanza" e "Molto", qui dovreste scrivere "Poco;Abbastanza;Molto"
  6. Vi chiede se volete che le opzioni vengano mostrate nell'ordine in cui le avete messe oppure in ordine casuale. Nel nostro caso, chiediamo di rispettare l'ordine di inserimento
  7. Ci chiede se vogliamo che la risposta venga inviata sul pulsante per passare alla domanda successiva oppure ogni volta che si cambia la risposta (evento onChange). Si tratta di una opzione che potrebbe essere importante nel caso in cui vogliate mostrare tutte le domande nella stessa pagina e calcolare dei punteggi parziali. Qui si scegli di non effettuare il submit al click sul radio, ma al passaggio alla pagina successiva (inseriremo infatti una domanda per pagina)
  8. Si tratta di un parametro FONDAMENTALE per la domanda! Rappresenta infatti il punteggio da assegnare a ciascuna delle opzioni che avete inserito al punto 5. Se state facendo una survey sulla popolarità del calcio, in base alla domanda di esempio del punto 5 i punti potrebbero essere "0;1;2", ma potete scegliere i numeri che preferite! Se la domanda fosse con risposta a testo libero, dovreste ignorare questo campo e compilare i punti di tipo "A"
  9. Infine inseriamo il messaggio di errore che appare se il form non è validato correttamente nel momento in cui si fa il submit. Nel nostro caso, trattandosi di Radio Buttons, non abbiamo specificato regole di validazione (si potrebbero mettere dei range nei valori numerici, delle lunghezze massime nei campi di testo... si può fare veramente di tutto); l'unica regola per i radio è che l'utente abbia selezionato un'opzione prima di proseguire

 


Potete continuare ad inserire fino ad un massimo di 25 domande, anche se da qualche parte nella documentazioni in inglese ho letto che tale limite sia superabile mettendo in serie le categorie. Noi ci accontentiamo di sole 6 domande, quindi non approfondiamo questo aspetto.



2)Pubblicazione della survey: Una volta create le domande, siete pronti per visualizzare la survey! Per far questo occorre installare il modulo "create single record", che letteralmente serve a "creare un record con i risultati", il che si traduce nel dire "consente ai vostri utenti di eseguire la survey/quiz".
Anche qui le opzioni sono praticamente infinite, occorre guardarle tutte per capire cosa fa al caso nostro.
Installate dunque il modulo, inserite il titolo e attivatelo. La posizione del modulo la impostiamo su "madblanks". I livelli di accesso li lasciamo su "Public", perchè vogliamo che la survey sia accessibile a tutti.
Definiamo il modo in cui vogliamo presentare le domande ai nostri utenti; in questo caso, le specifiche sono:

  • Testo delle domande in grassetto
  • Visualizzazione di una domanda alla volta
  • Indicazione del numero della domanda attuale rispetto al totale
  • Utilizzo di un pulsante "Avanti!" per passare alla domanda successiva
  • Utilizzo di un pulsante "Scopri il tuo profilo!" sull'ultima domanda per accedere alla valutazione del test
  • Possibilità per l'utente di ripetere la survey dalla pagina dei risultati
  • Inserimento di un messaggio di errore se l'utente clicca sui pulsanti senza aver selezionato un'opzione

Possiamo definire e personalizzare tutti gli aspetti descritti, molti dei quali sono evidenziati nella schermata seguente:

Esempio di domanda survey Mad Blanks

Inserire una schermata unica che evidenzi tutti i parametri del modulo da configurare è praticamente impossibile (sono decisamente troppi), riportiamo dunque le istruzioni per i soli parametri che abbiamo utilizzato per la nostra survey di esempio, nel formato originale che si trova sul back-end:

Category selection (choose which categories this module is allowed to load): This is a category ID number from the component, OR a comma-delimited list of category id numbers, OR leave blank to select all module-writable categories: Indica quali quiz devono essere mostrati dal modulo; nel nostro caso, ne abbiamo uno solo, con ID=1. Inseriamo dunque "1" nella textbox.
Save the record inputted by the user? Se volete effettuare analisi dei dati, è obbligatorio salvarli nel database. Se volete solo mostrarli, ovviamente no. Nel nostro caso salviamo i dati.
Automatically approve saved submissions (if allowed by category configuration)? Sì, perchè non vogliamo processi di approvazione per i dati inviati.
Automatically publish saved submissions (if allowed by category configuration)? Come sopra, per pubblicare i dati inviati
Instructions to website user; the message...: Istruzioni per la compilazione del quiz. Nel nostro caso scriviamo "Seleziona un'opzione:", il risultato è visibile nell'immagine soprastante.
Fill in one field at a time and submit repeatedly, or fill in a whole record at once? Parametro fondamentale; selezioniamo l'opzione "Single Field" per visualizzare una domanda alla volta.
Show count string...: Indica se inserire o meno il contatore delle domande. Funziona solo se si abiilta il parametro per la visualizzazione di una domanda alla volta.
Format of the count string...: Indica il formato del contatore delle domande. Inseriamo "Domanda %1$s di %2$s" per ottenere il risultato in figura.
Allow submitted fields to be blank?...: Selezioniamo "No".
Error message to display at the top of the module if there is a blank field and it is not allowed..: Messaggio da inserire se l'utente cerca di effettuare il submit lasciando dei campi Blank. Inseriamo la scritta "Seleziona un'opzione per proseguire!".
Enable Quiz/Response mode?... Dovrebbe servire per indicare l'utilizzo di uno script di valutazione della survey. Scegliamo "Sì".
If Quiz/Response mode is enabled, use which Score Script?...: Lasciamo il campo vuoto come da indicazioni; verrà usato lo script specificato nella categoria (cioè nel quiz stesso).
Show the completed record after submission? Ci chiede se, nella pagina dei risultatii alla fine della survey, vogliamo mostrare all'utente l'elenco delle risposte che ha inserito. Scegliamo L'opzione "No, and show a button to allow user to input another record", in modo da mostrare all'utente un pulstante che lo riporti all'inizio del quiz (qualora volesse rifarlo per leggere gli altri profili).
Text to display on button to add another record (if enabled)..: Indica l'etichetta del pulsante per rifare la survey. Inseriamo "Ripeti la survey!".
Form appearance options (before user submits the form): In questa sezione è possibile modificare gli stili delle domande, aggiungendo degli stili in-line ai vari componenti; il modo migliore per capire cosa modificare secondo me è utilizzare firebug, trovare gli attributi che vogliamo cambiare e cercarli tra i valori di questa sezione per poterli modificare. L'unica cosa che non si può modificare è lo stile delle label dei radio, per il resto si può fare qualunque cosa! Facciamo notare che, nella sottosezione Buttons è possibile indicare un testo per i pulsanti di avanzamento da una domanda all'altra e che si può addirittura specificare un testo diverso per l'ultimo pulsante!!! Chris ha pensato davvero a tutto. Noi abbiamo sfruttato al massimo queste parametrizzazioni e abbiamo inserito il testo "Avanti!" per le prime 5 domande e il testo "Scopri il tuo profilo!" sull'ultima.
'Response to user' appearance options (after user submits form): Qui si possono specificare gli stili della pagina dove si mostrano i risultati all'utente ed eventualmente gli stessi dati che ha inserito. Nel nostro caso abbiamo inserito solo lo stile della sottosezione "Score Script Output", ignorando il resto.
Error message appearance: Finalmente, l'ultimo parametro... per specificare la classe dei messaggi di errore.

Una volta creato il quiz e definite le modalità di visualizzazione, per accedervi basta creare una voce di menù di tipo "Mad Blanks" e configurarla nel modo seguente:

Configurazione voce di menù di tipo Mad Blanks

La prima combo indica il modo in cui volete che l'utente acceda al quiz; le altre due contengono le liste dei moduli "createsinglerecord" mad blanks installati e l'elenco delle categorie. Nel nostro caso avranno un solo elemento, quindi l'unica cosa da scegliere è il valore della prima combo in alto (TASK)

3)Creazione dello script per l'elaborazione delle risposte inserite dal singolo utente

Se non vi siete già arresi, siete pronti per la parte più divertente: l'elaborazione delle risposte. Abbandoniamo dunque il modulo per l'esecuzione della survey e torniamo al menù del componente. Accediamo al menu degli "score script" e creiamone uno nuovo.
La schermata sembra incoraggiante: occorre inserire solamente i seguenti parametri

-Il nome dello script
-Eventuali note
-Lo script stesso

Il problema riguarda proprio la scrittura dello script; se espandete la sezione "Special tags reference section: these special tags are available to use in the Score Script", contenente i tag utilizzabili per elaborare le risposte degli utenti, troverete una quantità di elementi tale da confondere le idee a chiunque. Incollando il tutto in un file di testo, ho contato quasi 30 pagine di tag!!!
Ragioniamo seguendo le specifiche, riducendo al minimo i tag da esaminare. Innanzitutto, occorre calcolare il punteggio dell'utente. Per fare questo, utilizziamo il tag seguente:

[:points_b_range:min-max::]
Inserisci il testo che vuoi mostrare agli utenti che hanno totalizzato un numero di punti "b" compreso tra min e max
[:points_b_range:0-9::]

Utilizziamo i punti di tipo "b" perchè abbiamo usato solo risposte a scelta multipla, assegnando un punteggio diverso a ciascuna opzione selezionata. Se avessimo utilizzato domande con risposta di testo libero, avremmo utilizzato i punti di tipo "a", avendo cura di averli assegnati corretamente a ciascuna domanda (si veda il punto 8 della configurazione domanda singola)
Possiamo dunque definire tutti i range che vogliamo e mostrare a ciascun utente un testo diverso in base alle proprie risposte! Di seguito pubblico un estratto dello script che ho utilizzato per distinguere i tre profili della mia survey:

[:points_b_range:0-9::]
Profilo A: Hai fatto pochi punti, si vede che il tema della survey non ti interessa più di tanto!
[:points_b_range:0-9::]
[:points_b_range:10-14::]
Profilo B: Hai un punteggio intermedio, si vede che il tema ti interessa ma non sei un fanatico!
[:points_b_range:10-14::]
[:points_b_range:15-18::]
Profilo C: Hai realizzato un punteggio altissimo, si vede che sei un vero esperto del tema affrontato!
[:points_b_range:15-18::]

Ovviamente potete complicare a piacere i testi dei profili, inserire contenuto HTML, ecc. ecc. Salvate lo script, tornate alle proprietà della categoria, impostatelo come script di riferimento per la survey e, se non vi interessa la parte di reportistica complessiva sui risultati, avete finito!!! Ma perchè fermarsi proprio adesso?

4)Creazione del grafico per la visualizzazione dei risultati aggregati per tutti gli utenti

I grafici agiscono sui dati presenti nel DB; se ci fermiamo alle risposte inserite dagli utenti, potremmo sapere quante persone hanno dato una certa risposta ad una certa domanda. Ma noi vogliamo di più! Vogliamo dei dati minimamente aggregati, tra cui ad esempio:

-Qual'è la distribuzione dei punteggi tra gli utenti? Sarebbe necessario salvare il totale dei punti tra i risultati
-Quanti utenti appartengono a ciascun profilo? Sarebbe necessario salvare il profilo tra i risultati

Questi dati non vengono inseriti dagli utenti, ma Chris ha pensato anche a questo: è infatti possibile utilizzare negli Score Script dei comandi per scrivere dati aggiuntivi in due appositi campi di ciascun record dei risultati!!! Vediamo come modificare lo script per ottenere questi risultati utilizzando i tag speciali logdata. Riportiamo in grassetto i tag aggiunti:

<logdata:1:overwrite>
[:sum:{[:info:1:points_b:]}:{[:info:2:points_b:]}:{[:info:3:points_b:]}:{[:info:4:points_b:]}:{[:info:5:points_b:]}:{[:info:6:points_b:]}:]</logdata>
[:points_b_range:0-9::]
<logdata:2:overwrite>A</logdata>
Profilo A: Hai fatto pochi punti, si vede che il tema della survey non ti interessa più di tanto!
[:points_b_range:0-9::]
[:points_b_range:10-14::]
<logdata:2:overwrite>B</logdata>
Profilo B: Hai un punteggio intermedio, si vede che il tema ti interessa ma non sei un fanatico!
[:points_b_range:10-14::]
[:points_b_range:15-18::]
<logdata:2:overwrite>C</logdata>
Profilo C: Hai realizzato un punteggio altissimo, si vede che sei un vero esperto del tema affrontato!
[:points_b_range:15-18::]

A questo punto abbiamo veramente finito. Basta inserire in coda allo script una sezione per il grafico ed ecco il risultato!!!

[:aggregate:function{GOOGLE-CHART-PERCENTAGE}:chart_type{p3}:field{scodata2}:chart_size{800x160}:chart_color{008000}:chart_no_response_label{No answer}:]

Nella fattispecie abbiamo creato un grafico che visualizzi le percentuali dei profili tra tutti gli utenti che hanno preso parte alla survey. Il risultato è praticamente identico alla prima immagine che abbiamo inserito in alto a destra nell'articolo. Per poter utilizzare i grafici, occorre accettare espressamente i termini di utilizzo di Google Chart nella sezione "Edit Configuration Variables"

Potete trovare un esempio funzionante di quanto descritto nell'articolo in questa pagina

Tutto quello che abbiamo descritto e realizzato utilizza probabilmente meno del 5% delle potenzialità di Mad Blanks. Crediamo che sia possibile realizzare davvero qualunque cosa tra quiz, test e survey, ma si tratta di un componente sicuramente ostico quanto potente. Buon divertimento!

Etnatracker
www.etnatracking.com

CommentaCommenta questo articolo sul forum