Check out the LimeSurvey source code on GitHub!

Selection automatique d'une réponse (Boutons radio) selon un attribut

More
3 years 10 months ago - 3 years 10 months ago #93547 by toto01
Bonjour,

La question a été posée plusieurs fois sur le forum, mais je ne parviens pas à implémenter cette fonctionnalité. Voici les informations relatives à mon installation :

- Serveur : Ubuntu 12.04 / apache 2 / PHP 5
- Limesurvey Version 2.00+(130311)
- XSS : Désactivé
- Questionnaires : tests effectués en anonyme ou non-anonyme (même résultat)

Description du contexte :

Mener des enquêtes de satisfaction sur des séjours de vacances hébergés. Dans mes questionnaires, la première question propose de sélectionner la station qui à acceuillie le participant. Je souhaiterais que la réponse à cette question soit automatiquement pré-remplis par rapport à un attribut "station". Pour cela :

- Dans la table des participants centralisés, j'ai un attribut "station" (20 stations référencées).
- Dans chaque questionnaires, j'ai un attribut personnalisé "station".
- Quand j'affecte un participant à un questionnaire, l'attribut est correctement transmis de la table centralisé vers la table "Token", correspondant aux questionnaires.

Premier problème :

L'URL contenue dans le mail d'invitation : j'ai tenté de jouer avec les paramètres {SURVEYURL}, {TOKEN:ATTRIBUTE_1}, {ATTRIBUTE_1} tel que suggéré sur le forum. Les données s'affichent bien dans le corps du mail mais l'URL d'invitation n'est pas correctement formatée et donc inexploitable. Je n'ai pas trouvé d'information concrète dans la documentation, relative à la concaténation de ces expressions. Pour l'instant je modifie donc l'URL manuellement pour intégrer le bon attribut, exemple :

[...]index.php/survey/index/sid/171262/token/9zdhk7zp6rziy4a/ATTRIBUTE_1/BLB/newtest/Y

Deuxième problème :

Pour que la bonne réponse soit automatiquement sélectionnée, j'ai récupéré un script sur ce forum, que j'ai adapté à mes questionnaires, voici un exemple correspondant à l'URL ci-dessus :
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
if('ATTRIBUTE_1' == 'AML') {$("input#answer171262X1X1A1").attr('checked', true);}
if('ATTRIBUTE_1' == 'BLB') {$("input#answer171262X1X1A2").attr('checked', true);}
if('ATTRIBUTE_1' == 'BBT') {$("input#answer171262X1X1A3").attr('checked', true);}
if('ATTRIBUTE_1' == 'LBL') {$("input#answer171262X1X1A4").attr('checked', true);}
if('ATTRIBUTE_1' == 'BBA') {$("input#answer171262X1X1A5").attr('checked', true);}
if('ATTRIBUTE_1' == 'CMB') {$("input#answer171262X1X1A6").attr('checked', true);}
if('ATTRIBUTE_1' == 'CLE') {$("input#answer171262X1X1A7").attr('checked', true);}
if('ATTRIBUTE_1' == 'CRS') {$("input#answer171262X1X1A8").attr('checked', true);}
if('ATTRIBUTE_1' == 'EUG') {$("input#answer171262X1X1A9").attr('checked', true);}
if('ATTRIBUTE_1' == 'GRX') {$("input#answer171262X1X110").attr('checked', true);}
if('ATTRIBUTE_1' == 'JZC') {$("input#answer171262X1X111").attr('checked', true);}
if('ATTRIBUTE_1' == 'LML') {$("input#answer171262X1X112").attr('checked', true);}
if('ATTRIBUTE_1' == 'LXL') {$("input#answer171262X1X113").attr('checked', true);}
if('ATTRIBUTE_1' == 'MTG') {$("input#answer171262X1X114").attr('checked', true);}
if('ATTRIBUTE_1' == 'LMD') {$("input#answer171262X1X115").attr('checked', true);}
if('ATTRIBUTE_1' == 'PRC') {$("input#answer171262X1X116").attr('checked', true);}
if('ATTRIBUTE_1' == 'LPR') {$("input#answer171262X1X117").attr('checked', true);}
if('ATTRIBUTE_1' == 'SAM') {$("input#answer171262X1X118").attr('checked', true);}
if('ATTRIBUTE_1' == 'SHB') {$("input#answer171262X1X119").attr('checked', true);}
if('ATTRIBUTE_1' == 'SLB') {$("input#answer171262X1X120").attr('checked', true);}
});
</script>

Ce script a été ajouté dans la section "Aide" et/ou "Question" de la première question, malheureusement il semble ne pas être correctement interprété par LimeSurvey (il est valide sur "Online JavaScript Validator"). Quand je regarde le code source de la page contenant la question, je vois bien le JavaScript, mais il n'est pas correctement formaté (contiens du html) et un message d'erreur est affiché à l’intérieur de celui-ci. exemple du début du script :
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
if('ATTRIBUTE_1' == 'AML') <span style='background-color: #eee8aa;'>
<span title='Syntaxe non pris en charge'[...]

Voici mes premiers pas avec la gestion des attributs. Si quelqu'un de plus expérimenté ayant déjà rencontré ce type de problème pouvait m'aider cela ne serait pas de refus :)

Merci !
Last Edit: 3 years 10 months ago by toto01. Reason: Fautes

Please Log in to join the conversation.

More
3 years 10 months ago - 3 years 10 months ago #93550 by Ben_V
Salut,
Pour le javascript essaie le code suivant:
(à coller directement dans la source de l'aide ou de la question )
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
if('ATTRIBUTE_1' == 'AML') { $("#answer171262X1X1A1").attr('checked', true); }
if('ATTRIBUTE_1' == 'BLB') { $("#answer171262X1X1A2").attr('checked', true); }
if('ATTRIBUTE_1' == 'BBT') { $("#answer171262X1X1A3").attr('checked', true); }
if('ATTRIBUTE_1' == 'LBL') { $("#answer171262X1X1A4").attr('checked', true); }
if('ATTRIBUTE_1' == 'BBA') { $("#answer171262X1X1A5").attr('checked', true); }
if('ATTRIBUTE_1' == 'CMB') { $("#answer171262X1X1A6").attr('checked', true); }
if('ATTRIBUTE_1' == 'CLE') { $("#answer171262X1X1A7").attr('checked', true); }
if('ATTRIBUTE_1' == 'CRS') { $("#answer171262X1X1A8").attr('checked', true); }
if('ATTRIBUTE_1' == 'EUG') { $("#answer171262X1X1A9").attr('checked', true); }
if('ATTRIBUTE_1' == 'GRX') { $("#answer171262X1X110").attr('checked', true); }
if('ATTRIBUTE_1' == 'JZC') { $("#answer171262X1X111").attr('checked', true); }
if('ATTRIBUTE_1' == 'LML') { $("#answer171262X1X112").attr('checked', true); }
if('ATTRIBUTE_1' == 'LXL') { $("#answer171262X1X113").attr('checked', true); }
if('ATTRIBUTE_1' == 'MTG') { $("#answer171262X1X114").attr('checked', true); }
if('ATTRIBUTE_1' == 'LMD') { $("#answer171262X1X115").attr('checked', true); }
if('ATTRIBUTE_1' == 'PRC') { $("#answer171262X1X116").attr('checked', true); }
if('ATTRIBUTE_1' == 'LPR') { $("#answer171262X1X117").attr('checked', true); }
if('ATTRIBUTE_1' == 'SAM') { $("#answer171262X1X118").attr('checked', true); }
if('ATTRIBUTE_1' == 'SHB') { $("#answer171262X1X119").attr('checked', true); }
if('ATTRIBUTE_1' == 'SLB') { $("#answer171262X1X120").attr('checked', true); }
});
</script>

Benoît

EM Variables => bit.ly/1TKQyNu | EM Roadmap => bit.ly/1UTrOB4
All LS releases => bit.ly/1VMuTDu | 2.06lts => bit.ly/1Qv44A1
Demo surveys => goo.gl/HuR6Xe (already included in /docs/demosurveys)
Last Edit: 3 years 10 months ago by Ben_V.

Please Log in to join the conversation.

More
3 years 10 months ago #93552 by DenisChenu
Yep: pour utiliser les { } ajouter des espaces pour qu'ils ne soient pas pris en compte par le gestionnaire d'expression.

Sinon, les questionnaires sont anonyme ?

Avec la méthode manuelle, cela fonctionne, si oui: le lien à indiquer:
http://example.org/index.php/survey/index/sid/{SID}/token/{TOKEN}/SQGQA/{TOKENATTRIBUTE_1}/newtest/Y

Avec SGQA à 171262X1X11 (je pense)

Denis

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand (or search sondages pro).

Please Log in to join the conversation.

More
3 years 10 months ago #93590 by toto01
Bonjour,

Tout dabord merci pour ce retour rapide. Pour le JavaScript, effectivement le JavaScripot est correctement interprété avec les espaces entre les {}.
Par contre, je ne parviens pas à passer correctement l'attribut dans l'URL. La balise {SID} n'existe pas et si je passe les valeurs manuellement, rien ne se passe lors de la première question.

N'y a-t-il pas une documentation complète sur l'utilisation des attributs ?

Merci !

Please Log in to join the conversation.

More
3 years 10 months ago #93594 by DenisChenu
Juste pour {SID}, je suis quasi sur qu'elle est replacer par le numéro du questionnaire lors de l'envoi des mails.

Mais concernant les attributs, tu peux directement les utiliser dans le questionnaire si celui-ci est non anonyme. C'est le cas ou non ?

Denis

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand (or search sondages pro).

Please Log in to join the conversation.

More
3 years 10 months ago #93596 by toto01
RE,

Les questionnaires sont anonyme. Je vais faire un test en non-anonyme.

Please Log in to join the conversation.

More
3 years 10 months ago - 3 years 10 months ago #93628 by toto01
RE,

Voici les quelques tests que j'ai fait avec une URL construite à la main (impossible d'obtenir une URL correct avec les champs de remplacement) :

mondomaine.fr/index.php/survey/index/sid/758286/token/6qsu326x55mzkqu/758286X15X72/A1/newtest/Y

En anonyme : La réponse n'est pas sélectionnée.
En non-anonyme : même résultat.

J'ai vérifier plusieurs fois les numéros de questionnaire/groupe/question/réponse et tout est correcte.
Last Edit: 3 years 10 months ago by toto01. Reason: modification

Please Log in to join the conversation.

More
3 years 10 months ago #93636 by DenisChenu
Salut,

Test dabord que à l'envoi
{SID} et {TOKEN} sont bien remplacé. Cela devrait être le cas.

Ensuite, le lien à indiquer est:
/index.php/survey/index/sid/{SID}/token/{TOKEN}/newtest/Y?758286X15X72=A1

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand (or search sondages pro).

Please Log in to join the conversation.

More
3 years 10 months ago #93799 by toto01
Bonjour,

J'ai finalement réussit à faire fonctionner la sélection automatique de la première réponse, avec un attribut spécifique. Le liens proposé précédemment fonctionne.

Merci beaucoup pour votre assistance.

Cordialement,

Please Log in to join the conversation.

Moderators: Nickko
Imprint                   Privacy policy         General Terms & Conditions         Revocation information and revocation form