Limesurvey contient par défaut tout ce dont vous avez besoin pour réaliser avec élégance quasiment tout type de questionnaire. , il s'installe en 5' (required: apache+php+mySQL)
Tenez-vous informé par les flux rss des dernières versions
Pour l'installation, copier sur un serveur, faire la base de données, éditer config.php à la racine
Puis vous rendre sur votre url, eg.
chmod -R 777 upload/ chmod -R 777 tmp/
Prévisions et annonces sur ce qui va se faire
http://docs.limesurvey.org/tiki-index.php?page=LimeSurvey+2.0+Roadmap
et bugtracker (le plus à jour)
http://bugs.limesurvey.org./roadmap_page.php
pour poster des bugs
http://www.limesurvey.org/component/option,com_rss/feed,RSS2.0/no_html,1/lang,fr/
http://sourceforge.net/export/rss2_projnews.php?group_id=74605 flux rss avec release for updates / patches
Dans le répertoire
limesurvey/docs/demosurveys/
uploader le fichier sample_survey.csv
Il y a plein d'exemples de questions: par contre l'autre démo Language_Question_Test.csv est inutile
On peut exporter en SPSS, en R ou en csv (choisir le format vv, cf http://docs.limesurvey.org/tiki-index.php?page=Exporting+Results&highlight=export )
LimeSurvey (3) : Transférer votre enquête dans SAS, R, SPSS ou votre logiciel de statistique préféré
/(\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,3})/
si on veut seulement des emails *.akademia.ch - mais on accepte truc.akademia.ch
/(\w[-._\w]*\w@(truc.)?akademia\.ch)/
date validation http://www.limesurvey.org/en/support/forums/13-french-forum/24531-utilisation-dexpression-pour-validation.html
Pour les dates, le mieux est d'utiliser une question de type date.
Sinon on peut utiliser pour MM/JJ/AAAA =⇒ Code:
/[0-1][0-9]\\/[0-3][0-9]\\/[0-9][0-9][0-9][0-9]/
Mais c'est loin d'être parfait
et pour JJ/MM/AAAA Code:
/[0-3][0-9]\\/[0-1][0-9]\\/[0-9][0-9][0-9][0-9]/
sur certains ISP (ex. infomaniak) la fonction mail marche pas, il faut modifier config.php
$emailmethod = 'smtp'; // The following values can be used:
// mail - use internal PHP Mailer
// sendmail - use Sendmail Mailer
// qmail - use Qmail MTA
// smtp - use SMTP relaying
$emailsmtphost = 'localhost'; // Sets the SMTP host. You can also specify a different port than 25 by using
// this format: [hostname:port] (e.g. 'smtp1.example.com:25').
$emailcharset = "UTF-8"; // You can change this to change the charset of outgoing emails to some other encoding - like 'iso-8859-1'
Workarounds: Manipulating a survey at runtime using Javascript
Ci-dessous quelques outils bricolés par mes soins
Une astuce permettant de renvoyer les données saisies à l'usager, source: http://www.limesurvey.org/en/forum/french-forum/65535-une-reponse-automatique-pour-tous-le-monde#65535
1) configure une question de texte court où tu veux dans ton questionnaire pour
récupérer l'email de la personne... "votre email svp"
(tu peux la mettre obligatoire ou non et vérifier ou non le format)
2) Récupère le code SGQA de cette question
3) Dans un des deux champs que tu vois (je pense à la notification détaillée) sur la photo mets:
{INSERTANS:SGQA}
Il faut ensuite adapter le modèle de courriel utilisé et le tour est joué
pour passer des variables à l'url de fin du quiz (très utile pour utiliser limesurvey comme une usine à formulaire)
url de redirection
ex http://yourServer/yourPath/action.php?var1={SAVEDID}&var2={TOKEN}&var3={SID}&lang={LANG}
Si vous avez p. ex. des réservations pour des dates, et que vous souhaitez retirer des dates pour lesquelles des réservations ont déjà été effectuées
Faire une page (script php) qui servira de point de départ
<noscript>
<h1>Vous DEVEZ activer JavaScript!</h1>
</noscript>
<?php
//echo "test pour redirection en fonction du nombre d'inscrits";
$quiz=18924; //changer pour le sid du quiz
var id0 = getUrlVars()["id0"];
if(id0=="javatbd18924X1719X436551013") {
document.getElementById('javatbd18924X1719X436551013').style.display='none';
}
var id1 = getUrlVars()["id1"];
if(id1=="javatbd18924X1719X436551014") {
document.getElementById('javatbd18924X1719X436551014').style.display='none';
}
//...
#connect to database
include("connect.inc.php");
$db=connect_db();
$db_name=db_name();
mysql_select_db($db_name,$db);
$chercheA="
SELECT 18924X1719X43655 AS inscriptions
FROM `lime_survey_" .$quiz ."` ORDER BY 18924X1719X43655 ASC
";
//echo $chercheA;
$chercheA=mysql_query($chercheA);
if(!$chercheA) {
echo mysql_error(); exit;
}
$i=0; $booked="";
//echo mysql_num_rows($chercheA); exit;
while($i<mysql_num_rows($chercheA)){
if(mysql_result($chercheA,$i,'inscriptions')=="1013"){
$booked.="id0=javatbd18924X1719X436551013&";
}
if(mysql_result($chercheA,$i,'inscriptions')=="1014"){
$booked.="id1=javatbd18924X1719X436551014&";
}
//...
$i++;
}
$link="http://akademia.ch/limesurvey/index.php?sid=18924&".$booked;
?>
<meta http-equiv="refresh" content="0;URL=<? echo $link; ?>">
Dans limesurvey ensuite:
Editer d'abord le code-source du premier groupe et ajouter:
<script type="text/javascript" charset="utf-8">
// Read a page's GET URL variables and return them as an associative array.
function getUrlVars()
{
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
</script>
Editer enfin le code-source de la question sur laquelle on veut porter la condition
<script type="text/javascript" charset="utf-8">
var id0 = getUrlVars()["id0"];
if(id0=="javatbd18924X1719X436551013") {
document.getElementById('javatbd18924X1719X436551013').style.display='none';
}
var id1 = getUrlVars()["id1"];
if(id1=="javatbd18924X1719X436551014") {
document.getElementById('javatbd18924X1719X436551014').style.display='none';
}
/* ... */
</script>
Si vous entrez des valeurs, elles seront automatiquement “cachées” par ce script
Pour sortir automatiquement d'un quiz en fonction d'une réponse donnée, créer la question à la fin d'un groupe; récupérer son identifiant, soit en affichant le code source, soit avec webdeveloper, exemple:
On veut qu'une personne cliquant sur “Non” sorte de limesurvey et soit redirigée sur une autre page
Editer ensuite le code-source du groupe suivant, et mettre:
<script>
/* a script to exit using JS */
if ("{INSERTANS:93951X1457X5242}" == "Non")
{
window.location="http://www.akademia.ch/bye";
}
</script>
note: ici le SID est 93951X1457X5242, la valeur “Non” correspond à un “N” dans un champ oui/non si le formulaire est en français
Les droits des utilisateurs limesurvey ne sont pas encore top sur 1.9 au niveau de la granularité - les rôles sont assez limités, p. ex. on ne peut pas donner à un utilisateur accès à son/ses template sans lui donner les droits sur tous, idem pour les labels etc.
Seul les utilisateurs super-admin et le propriétaire (créateur) du questionnaire peuvent modifier les réponses; si vous ne parvenez pas à modifier les réponses, alors que vous avez tous les droits sur le questionnaire, c'est sans doute car un super-administrateur a créé ce questionnaire pour vous. Il faut lui demander de modifier dans la table MySQL lime_surveys la valeur owner_id pour y mettre la votre (celle de lime_users.uid)
Référence: http://www.limesurvey.org/fr/forum/can-i-do-this-with-limesurvey/57905-editing-responses-in-limesurvey: “To my knowledge only the person who created a survey and all superadmins can edit results for security reasons”
Le fichier doit être un fichier CSV standard (délimiteur: virgule) sans guillemets. La première ligne doit contenir des informations d'entête (elle sera enlevée). Les données devront être dans cet ordre : “Prénom, Nom, Mail, [Invitation], [Attribut_1], [Attribut_2]”.
firstname, lastname, email, Invitation, Attribut_1, Attribut_2
firstname, lastname, email, token, language code, attribute1, attribute2 ,,mail@truc.ch,,fr,,
note: seul email obligatoire
ATTENTION: impossible de retrouver les tokens si le quiz est anonymisé!!!
IMPOSSIBLE: http://docs.limesurvey.org/tiki-index.php?page=Creating+a+New+Survey Anonymous answers?: This allows you to determine whether responses to your survey are matched up with information from your surveys tokens table, or kept 'anonymous'. The default is yes. If you choose “No” for anonymous, you must also have a tokens table for your survey when you activate it. Attention: If your survey is set to anonymous there is really no way to connect answers and participants. Even the admin can't link answers' data and users' data.
On peut fouiller dans les logs apache… mais c'est un trick!
> mysql USE limesurvey; UPDATE `lime_tokens_IDTABLE` SET `sent` = 'Y';
astuce — Fred Radeff 2008/04/10 15:11
ci-dessous le code (simplifié) d'une question avec 3 checkbox
<input class='checkbox' type='checkbox' name='48872X68X472c1' id='answer48872X68X472c1' value='Y' onclick='checkconditions(this.value, this.name, this.type)' onchange='modfield(this.name)' /> <input class='checkbox' type='checkbox' name='48872X68X472c2' id='answer48872X68X472c2' value='Y' onclick='checkconditions(this.value, this.name, this.type)' onchange='modfield(this.name)' /> <input class='checkbox' type='checkbox' name='48872X68X472c3' id='answer48872X68X472c3' value='Y' onclick='checkconditions(this.value, this.name, this.type)' onchange='modfield(this.name)' />
Mettre dans l'aide:
<script language="JavaScript">
function checkconditions(){
choix1=document.getElementById('answer48872X68X472c1').checked;
choix2=document.getElementById('answer48872X68X472c2').checked;
if(choix1==true&&choix2==true) {
alert("choix incompatible!");
}
}
</script>
Attention, il y a des conditions: pour réagir au click (ici d'un checkbox), on court-circuite la fonction intégrée à LimeSurvey checkconditions(); si on veut que les fonctions intégrées à LimeSurvey soient fonctionnelles après ce court-circuitage (p.ex. si on veut que la question suivante ait une valeur “autre” qui fasse apparaître un champ de texte <INPUT>), il FAUT soit:
How to use Script (eg. JavaScript etc.) If you want to use javascript within Limesurvey you have to disable a security filter before you can add your javascript in source code mode: FIRST, some info from config-default.php: //$filterxsshtml__ // Enables filtering of suspicious html tags in survey, group, questions__ // and answer texts in the administration interface__ // Only set this to false if you absolutely trust the users__ // you created for the administration of LimeSurvey and if you want to__ // allow these users to be able to use Javascript etc. .__ $filterxsshtml = true;
Si on veut avoir des tokens, suivre si nécessaire la procédure décrite infra pour produire le csv. Une fois le csv obtenu:
Fini!
pas trouvé de réponse simple dans la doc ou le wiki
solution hand-made:
Réfléchir à la question de l'identifiant, cf. infra CAUTION: dans l'idéal il faudrait exporter avec un identifiant discriminant, solution possible: passer par MySQL pour faire des identifiants de questionnaires uniques mais génériques voir permutations2
SELECT `sid` FROM `lime_surveys` ORDER BY `sid` ASC
exporter questionnaire en csv, eg. limesurvey_survey_19355.csv
en shell,
//CAUTION: IF "19355[identifiantLimesurvey]" IN FILE POSSIBLE CONFUSION!!! little grep before!! replace "19355[identifiantLimesurvey]" "xxxx[nvlIdentifiantArbitraire]" -- limesurvey_survey_*.csv
retourner dans limesurvey, faire créer / importer :
If you have previously exported a survey, you can import it from the “New Survey” screen. Click on the browse button to choose the SQL/CSV file, and then click on the button.
ou en ligne de commande: (pratique si on en a beaucoup) - jamais essayé!
http://docs.limesurvey.org/tiki-index.php?page=Importing+a+Survey
Import using the commandline utility
Since version 1.50 it is possible to import surveys from the command line (or shell). To use this functionality you have to have access to the shell and the PHP interpreter has to be configured to allow shell execution of scripts.
This functionality is useful when you have timeout problems with the web version that could happen when you have very long surveys to import.
To use it, in the shell go to the limesurvey/admin folder and execute:
php cmdline_importsurvey <File to import> [<user> <password>]
* <File to import> has to be one of the described above
* <user> has to be a user with the right to create surveys
* <password> the password for the user
*<user> and <password> are only required if the control access is active
If you need to see the parameters you can execute:
php cmdline_importsurvey -h
Options / Sécurité / Filtrer le HTML pour XSS : non
Ajouter dans le code source du Message d'accueil :
<script language="javascript" type="text/javascript">
function stopRKey(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 9) && (node.type=="text")) {
alert("Merci de ne pas utiliser le tabulateur / Please do not use tab key");
return false;
}
}
document.onkeypress = stopRKey;
</script>
- choisir le template
- éditer le fichier
REPERTOIRElimesurvey/templates/TEMPLATENAME/startpage.pstpl
p.ex. pour avoir un tableau à 100:
remplacer
<body class='default'> <table width='75%'
par
<body class='default'> <table width='100%'...
note: inutile de travailler sur la css pour ça
replace "center" "left" -- question.pstpl
survey.pstpl
<!--<td nowrap valign="bottom" align="right"><strong>{SURVEYNAME}</strong><br />{PERCENTCOMPLETE}</td>-->
survey.pstpl
uploader un différent logo.gif puis:
<img src="{TEMPLATEURL}logo.gif" alt="Logo Image" height="72" width="211" />
->
<img src="{TEMPLATEURL}logo.gif" alt="Logo Image" />
Le fichier openoffice isopays.ods avec la liste des pays et codes ISO; prendre les formats CSV lime_labels.csv.zip
on perd les codes ISO, à remettre après avec cette routine:
#adapt
$pays=utf8_encode(mysql_result($sqlQ,0,'91876X216X912'));
#compute country!
$pays="SELECT * FROM countries WHERE id='".$pays."'";
$pays=mysql_query($pays);
if(!$pays){
echo "sql error on converting country: " .mysql_error();
exit;
}
$pays=mysql_result($pays,0,'iso');