webform rules

7 contenuti / 0 new
Ultimo contenuto
webform rules

Ho creato un webform per un test di valutazione di un corso (un elenco di domande a risposta multipla) che alla fine somma il punteggio raggiunto, poi ho creato una regola che alla submission di un form se l'utente ha effettuato quel determinato test gli viene aggiunto un ruolo (livello successivo di corso) - tutto funziona perfettamente (drupal 7 e webform 3)

Ora pero' occorre aggiungere alle condizioni della regola il fatto che il corsista sia promosso, ovvero che il punteggio ottenuto sia superiore ad una soglia (esempio 80 su 100) ma non riesco a capire come faccio ad intercettare il valore di una risposta del form da Rules.... e l'ho l'impressione di perdermi in un bicchier d'acqua.

Mi date una mano?

Per ora ho provato con un php semplice semplice (ho creato una condizione php personalizzato) :

$punteggio = $data['components']['tcs1']['value']; // E' questo che non so!!!
$soglia = 80;
$passato=$punteggio>$soglia?1:0;
return $passato;

PS: lo so che sarebbe piu' semplice bloccare l'invio del form a monte , ma il committente non vuole che il corsista torni indietro al test e vada per tentativi ;-)

Drupal Version:

Ciao, se $data è l'array che contiene i valori passati dal webform, per sapere cosa è contenuto in quella variabile io di solito eseguo (dentro al codice PHP personalizzato):
drupal_set_message(serialize($data));

Ovviamente più $data è complesso, più sarà complesso il risultato del serialize, pero' almeno riesci a farti una idea.

Non mi ricordo se il codice PHP viene eseguito in qualche modo particolare che blocca alcune funzioni, pero' prova anche con

var_dump($data);
exit();

M.

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal

Grazie, provo.

Non ho piu' aggiornato, pero' grazie al tuo suggerimento volevo farti sapere che ho risolto!
Funziona perfettamente:

$punteggio=[data:punteggio-value];
$soglia = 5;
$passato=$punteggio>$soglia?1:0;
//drupal_set_message($punteggio); //per visualizzare il valore della variabile
return $passato;

Grazie mille!
Certo che tra webform rules e webform mysql views, webform diventa davvero potente!

uso drupal 6 e webform 6.x-3.18 e non riesco a creare una regola all'invio di un webform.
Come si imposta rules in modo che all'invio di un webform venga aggiunto un ruolo all'utente?
Attualmente facendo delle prove riesco a far cambiare e non aggiungere un ruolo all'utente quando carica un contenuto, ma non è quello che voglio.
Mi occorre che la cosa funzioni con webform

Gianfranco

Ciao Fuxas,
ti spiego cosa ho fatto con la 7: io ho installato il modulo Webform_rules: http://drupal.org/project/webform_rules

poi ho impostato:
EVENTS: After a webform has been submitted
CONDITIONS: Webform has name (nel selettore di dati ho messo form_id - attento che la modalita di inserimento sia diretto) e come valore il webform che mi interessa
ACTIONS: Assegnazione ruolo aggiuntivo, come selettore ho solo user e sotto come value seleziono il ruolo che voglio aggiungere

E funziona
Ciao!

mah, a me toglie un eventuale ruolo già assegnato e imposta quello del valore della regola.
uso drupal 6.x

Gianfranco