Welcome to the LimeSurvey Community Forum
Ask the community, share ideas, and connect with other LimeSurvey users!
Persistence du paramètre d'URL dans le cas d'1 questionnaire avec enregistrement
- YannDBDI
- Topic Author
- Offline
- New Member
Less
More
3 weeks 1 day ago #265132
by YannDBDI
Yann D BDI
> LimeSurvey Community Edition
> V 5.6.8+230227
> Serveur : dédié
> Thème : skelvanilla customisé
Persistence du paramètre d'URL dans le cas d'1 questionnaire avec enregistrement was created by YannDBDI
Bonjour à tou-te-s
CONTEXTE :
Je désire maximiser la diffusion de mon questionnaire et trace l'origine de cette diffusion.
Dans cette optique, j'ai prévu de publier l'URL du questionnaire sur plusieurs plateformes : X, Facebook, LinkedIn, sites spécialisés...
Afin de savoir sur quelle plateforme cela a été le plus efficace, j'ai prévu un paramètre d'URL, associé à une question de type texte court qui va recevoir justement la source de diffusion :
exemples :
monserveurlime.com/index.php/281323?newtest=Y&lang=fr281323 &source=twitter
monserveurlime.com/index.php/281323?newtest=Y&lang=fr281323 &source=facebook
monserveurlime.com/index.php/281323?newtest=Y&lang=fr281323 &source=linkedin
Ainsi, sur chaque plateforme, je fais un post avec le lien adéquat contenant source=<identifiant de la plateforme>
PROBLEME
J'ai autorisé l'enregistrement public sur mon questionnaire
Or une fois le formulaire d'enregistrement rempli, le lien unique que reçoit le répondant dans son mail ne contient plus le paramètre d'URL, donc je perds la source de diffusion.
QUESTION :
Hormis activer l'option "Sauvegarder l’URL de provenance " dans les réponses qui risque d'être insuffisante car elle est parfois masquée
ai-je une solution SANS SCRIPT pour maintenir la persistence du paramètre d'URL dans le lien généré pour un nouveau répondant ?
IDEE :
> mettre un attribut dans la table des participants
> le mettre "afficher à l'enregistrement"
> puis, dans le modèle de mon questionnaire, mettre un bout de script pour
a ) le cacher
b ) récupérer le parametre source de l'URL et la transférer dans la valeur de mon attribut caché
Y'a pas plus facile ?
Bonne journée
Yann
==================
Edition : LimeSurvey Community Edition
Version : 5.6.8+230227
Serveur : dédié
Thème : skelvanilla customisé
CONTEXTE :
Je désire maximiser la diffusion de mon questionnaire et trace l'origine de cette diffusion.
Dans cette optique, j'ai prévu de publier l'URL du questionnaire sur plusieurs plateformes : X, Facebook, LinkedIn, sites spécialisés...
Afin de savoir sur quelle plateforme cela a été le plus efficace, j'ai prévu un paramètre d'URL, associé à une question de type texte court qui va recevoir justement la source de diffusion :
exemples :
monserveurlime.com/index.php/281323?newtest=Y&lang=fr281323 &source=twitter
monserveurlime.com/index.php/281323?newtest=Y&lang=fr281323 &source=facebook
monserveurlime.com/index.php/281323?newtest=Y&lang=fr281323 &source=linkedin
Ainsi, sur chaque plateforme, je fais un post avec le lien adéquat contenant source=<identifiant de la plateforme>
PROBLEME
J'ai autorisé l'enregistrement public sur mon questionnaire
Or une fois le formulaire d'enregistrement rempli, le lien unique que reçoit le répondant dans son mail ne contient plus le paramètre d'URL, donc je perds la source de diffusion.
QUESTION :
Hormis activer l'option "Sauvegarder l’URL de provenance " dans les réponses qui risque d'être insuffisante car elle est parfois masquée
ai-je une solution SANS SCRIPT pour maintenir la persistence du paramètre d'URL dans le lien généré pour un nouveau répondant ?
IDEE :
> mettre un attribut dans la table des participants
> le mettre "afficher à l'enregistrement"
> puis, dans le modèle de mon questionnaire, mettre un bout de script pour
a ) le cacher
b ) récupérer le parametre source de l'URL et la transférer dans la valeur de mon attribut caché
Y'a pas plus facile ?
Bonne journée
Yann
==================
Edition : LimeSurvey Community Edition
Version : 5.6.8+230227
Serveur : dédié
Thème : skelvanilla customisé
Yann D BDI
> LimeSurvey Community Edition
> V 5.6.8+230227
> Serveur : dédié
> Thème : skelvanilla customisé
Please Log in to join the conversation.
- DenisChenu
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 13844
- Thank you received: 2521
3 weeks 1 day ago #265133
by DenisChenu
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
Replied by DenisChenu on topic Persistence du paramètre d'URL dans le cas d'1 questionnaire avec enregistrement
Pas de solution directe, le remplissage d'url ne commence que lors du démarrage du questionnaire
À tester : gitlab.com/SondagesPro/TokenManagement/R...erFillAttributeByGet
À tester : gitlab.com/SondagesPro/TokenManagement/R...erFillAttributeByGet
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
Please Log in to join the conversation.
- YannDBDI
- Topic Author
- Offline
- New Member
3 weeks 8 hours ago #265158
by YannDBDI
Yann D BDI
> LimeSurvey Community Edition
> V 5.6.8+230227
> Serveur : dédié
> Thème : skelvanilla customisé
Replied by YannDBDI on topic Persistence du paramètre d'URL dans le cas d'1 questionnaire avec enregistrement
Merci Denis pour ta réponse rapide.
Cela semble répondre à mes besoins. A voir comment, concrètement l'exploiter. Est ce que le seul fait d'avoir un attribut dans la table des participants et un paramètre d'url de même nom, instancié par une valeur suffira ?).
Mais avant tout il me faut trouver une solution pour installer l'extension. lors de l'install, mon serveur m'alerte sur le fait qu'il ne peut pas décoder le config.xml
Cela semble répondre à mes besoins. A voir comment, concrètement l'exploiter. Est ce que le seul fait d'avoir un attribut dans la table des participants et un paramètre d'url de même nom, instancié par une valeur suffira ?).
Mais avant tout il me faut trouver une solution pour installer l'extension. lors de l'install, mon serveur m'alerte sur le fait qu'il ne peut pas décoder le config.xml
Yann D BDI
> LimeSurvey Community Edition
> V 5.6.8+230227
> Serveur : dédié
> Thème : skelvanilla customisé
Please Log in to join the conversation.
- DenisChenu
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 13844
- Thank you received: 2521
3 weeks 7 hours ago #265162
by DenisChenu
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
Replied by DenisChenu on topic Persistence du paramètre d'URL dans le cas d'1 questionnaire avec enregistrement
Il faut refaire le zip en enlevant _master
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
Please Log in to join the conversation.
- YannDBDI
- Topic Author
- Offline
- New Member
3 weeks 7 hours ago #265164
by YannDBDI
Yann D BDI
> LimeSurvey Community Edition
> V 5.6.8+230227
> Serveur : dédié
> Thème : skelvanilla customisé
Replied by YannDBDI on topic Persistence du paramètre d'URL dans le cas d'1 questionnaire avec enregistrement
Synchrones.J'ai topé un peut tardivement.Merci
J'en ai profité pour faire la maj de la balise "description"
et du libellé de la balise lastUpdate qui devient last_update ?
Plugin Installé avec succès mais impossible de l'exploiter :
1. j'ai crée un attribut "source" dans ma table des participants
2. j'ai créé un paramètre d'url "source "
3. j'ai également créé une question "source" afin de voir si cela était transmis
Malheureusement l'appel du questionnaire avec le paramètre source instancié arrive bien sur le formulaire d'enregistrement mais ne remplit pas l'attribut. et le lien unique généré renvoyé au participant ne contient pas ce paramètre non plus.
Faut-il que j'appelle une fonction particulière dans mon modèle de formulaire d'enregistrement ?
J'en ai profité pour faire la maj de la balise "description"
et du libellé de la balise lastUpdate qui devient last_update ?
Plugin Installé avec succès mais impossible de l'exploiter :
1. j'ai crée un attribut "source" dans ma table des participants
2. j'ai créé un paramètre d'url "source "
3. j'ai également créé une question "source" afin de voir si cela était transmis
Malheureusement l'appel du questionnaire avec le paramètre source instancié arrive bien sur le formulaire d'enregistrement mais ne remplit pas l'attribut. et le lien unique généré renvoyé au participant ne contient pas ce paramètre non plus.
Faut-il que j'appelle une fonction particulière dans mon modèle de formulaire d'enregistrement ?
Yann D BDI
> LimeSurvey Community Edition
> V 5.6.8+230227
> Serveur : dédié
> Thème : skelvanilla customisé
Please Log in to join the conversation.
- YannDBDI
- Topic Author
- Offline
- New Member
3 weeks 4 hours ago #265171
by YannDBDI
Yann D BDI
> LimeSurvey Community Edition
> V 5.6.8+230227
> Serveur : dédié
> Thème : skelvanilla customisé
Replied by YannDBDI on topic Persistence du paramètre d'URL dans le cas d'1 questionnaire avec enregistrement
J'ai finalement résolu le prb en modifiant le script associé au formulaire d'enregistrement
Je gère le fait que les attributs qui sont affichés dans le formulaire d'enregistrement peuvent également être cachés via l'utilisation du suffixe "cache_" dans le code du champ.
ci-joint le code JS si ca interesse certains :
var parametres,href,reg;
/* reg est la regex qui permet d'extaire les parametres de l'URL */
var reg = /[?&]+([^=&]+)([^&]*)/gi,
/* href contient les requetes de paraemtres de l'URL */
href = window.location.search;
/* getUrlVars : mappe les parametres de l'URL dans un obje map [libellé du parametre] => [valeur] */
function getUrlVars() {
/* map est l'objet qu icontiendra les parametres d'URL */
var map = {};
href.replace(reg, function(match, key, value) {
key = decodeURIComponent(key);
value = value ? decodeURIComponent(value) : true;
map[key] ? map[key] instanceof Array ? map[key].push(value) : map[key] = [map[key], value] : map[key] = value;
});
return map;
}
$(document).on('ready pjax:scriptcomplete',function(){
/**
* Code included inside this will only run once the page Document Object Model (DOM) is ready for JavaScript code to execute
* @see learn.jquery.com/using-jquery-core/document-ready/
*/
parametres = getUrlVars();
/* on cache tous les blocs d'attributs supplémentaires dont le libellé contient cache_*/
$("label[for^='register_attribute']:contains('cache_')").parent("div").hide() ;
AttributsSupplementaires=$("input[type='text'][name^='register_attribute']");
if (AttributsSupplementaires) {
for (IndexAttribut=0;IndexAttribut<AttributsSupplementaires.length;IndexAttribut++) {
InputAttribut=AttributsSupplementaires[IndexAttribut];
Objetlabel = InputAttribut.parentElement.previousElementSibling;
if (Objetlabel) {
TextelabelTotal = Objetlabel.innerText.trim();
Textelabel=TextelabelTotal;
if (TextelabelTotal.indexOf("cache_")>=0) Textelabel=TextelabelTotal.substring(6,TextelabelTotal.length);
/* si on a un parametre qui correspond au label (sans le cache_ devant) alors on le préremplit avec la valeurs du parametres */
if (parametres[Textelabel]) InputAttribut.value=parametres[Textelabel]
}
}
}
});
Je gère le fait que les attributs qui sont affichés dans le formulaire d'enregistrement peuvent également être cachés via l'utilisation du suffixe "cache_" dans le code du champ.
ci-joint le code JS si ca interesse certains :
var parametres,href,reg;
/* reg est la regex qui permet d'extaire les parametres de l'URL */
var reg = /[?&]+([^=&]+)([^&]*)/gi,
/* href contient les requetes de paraemtres de l'URL */
href = window.location.search;
/* getUrlVars : mappe les parametres de l'URL dans un obje map [libellé du parametre] => [valeur] */
function getUrlVars() {
/* map est l'objet qu icontiendra les parametres d'URL */
var map = {};
href.replace(reg, function(match, key, value) {
key = decodeURIComponent(key);
value = value ? decodeURIComponent(value) : true;
map[key] ? map[key] instanceof Array ? map[key].push(value) : map[key] = [map[key], value] : map[key] = value;
});
return map;
}
$(document).on('ready pjax:scriptcomplete',function(){
/**
* Code included inside this will only run once the page Document Object Model (DOM) is ready for JavaScript code to execute
* @see learn.jquery.com/using-jquery-core/document-ready/
*/
parametres = getUrlVars();
/* on cache tous les blocs d'attributs supplémentaires dont le libellé contient cache_*/
$("label[for^='register_attribute']:contains('cache_')").parent("div").hide() ;
AttributsSupplementaires=$("input[type='text'][name^='register_attribute']");
if (AttributsSupplementaires) {
for (IndexAttribut=0;IndexAttribut<AttributsSupplementaires.length;IndexAttribut++) {
InputAttribut=AttributsSupplementaires[IndexAttribut];
Objetlabel = InputAttribut.parentElement.previousElementSibling;
if (Objetlabel) {
TextelabelTotal = Objetlabel.innerText.trim();
Textelabel=TextelabelTotal;
if (TextelabelTotal.indexOf("cache_")>=0) Textelabel=TextelabelTotal.substring(6,TextelabelTotal.length);
/* si on a un parametre qui correspond au label (sans le cache_ devant) alors on le préremplit avec la valeurs du parametres */
if (parametres[Textelabel]) InputAttribut.value=parametres[Textelabel]
}
}
}
});
Yann D BDI
> LimeSurvey Community Edition
> V 5.6.8+230227
> Serveur : dédié
> Thème : skelvanilla customisé
Please Log in to join the conversation.
- DenisChenu
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 13844
- Thank you received: 2521
3 weeks 3 hours ago #265173
by DenisChenu
Cela fonctionnait sans problème à l'époque. Bizarre que cela ne foinctoine plus.
La solution JavaScript est une bonne idée aussi.
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
Replied by DenisChenu on topic Persistence du paramètre d'URL dans le cas d'1 questionnaire avec enregistrement
J'ai créé la version sur une ancienne version 5.Faut-il que j'appelle une fonction particulière dans mon modèle de formulaire d'enregistrement ?
Cela fonctionnait sans problème à l'époque. Bizarre que cela ne foinctoine plus.
La solution JavaScript est une bonne idée aussi.
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
Please Log in to join the conversation.
Moderators: Nickko