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 !