Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Personnaliser message d'erreur lors de l'enregistrement avec même adresse mail

  • tamacheq
  • tamacheq's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
9 years 7 months ago #111724 by tamacheq
Bonjour
Nous utilisons un questionnaire comme formulaire de candidature à notre plateforme de blogs multi-lingue. Certains utilisateurs peuvent candidater plusieurs fois. Actuellement, le message d'erreur est "L'adresse de courriel utilisée a déjà été enregistrée."
Nous voudrions indiquer à l'utilisateur qu'il doit contacter l'administrateur pour qu'il lui génère un nouveau jeton avec la même adresse mail.

Si nous l'indiquons systématiquement dans le template register.pstpl, cela risque de perturber l'utilisateur qui n'a pas rencontré ce type de problème. De plus, je ne sais pas afficher un message différent selon la langue dans ce template.

Je pourrais également modifier les fichiers po pour le texte "The email you used has already been registered.", mais alors le message d'erreur serait modifié pour tous les questionnaires de l'installation limesurvey et pas seulement pour le questionnaire d'inscription à la plateforme de blogs. De plus, je devrais refaire la modification de cet intitulé à chaque nouvelle installation de limesurvey.

Avez-vous des suggestions?
S'il était possible de tester au niveau d'un template la langue et le fait qu'une variable est vide ou non (ici {REGISTERERROR} dans register.pstpl), cela serait déjà un plus.

Merci d'avance
Anne
The topic has been locked.
  • Nickko
  • Nickko's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
9 years 7 months ago #111725 by Nickko
Pourquoi obliger les gens à demander un nouveau jetons ?
Est-ce qu'il serait envisageable de ne pas limiter le nombre de jetons ?

Nickko
Head of ergonomics, UX & UI.
The following user(s) said Thank You: tamacheq
The topic has been locked.
  • tamacheq
  • tamacheq's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
9 years 7 months ago #111726 by tamacheq
oui, pourquoi pas, mais je ne connais pas cette possibilité.
Je ne vois pas comment le paramétrer.
Merci
Anne
The topic has been locked.
  • Nickko
  • Nickko's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
9 years 7 months ago #111727 by Nickko
Je pense qu'on peut faire tourner une procédure stockée dans MySQL pour remonter tous les tokens à un certain niveau chaque jour.

Sinon, avec un trigger déclenché par l'ajout d'un nouvel utilisateur à la table des invitations. Dans les 2 cas, ça nécessite un peu de connaissance en SQL et un accès à la base de données.

Nickko
Head of ergonomics, UX & UI.
The following user(s) said Thank You: tamacheq
The topic has been locked.
  • tamacheq
  • tamacheq's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
9 years 7 months ago #111728 by tamacheq
Merci Nickko, j'ai les accès et des connaissances SQL mais cela me semble compliqué à implémenter. Je préfèrerais pouvoir personnaliser le template en fonction de la langue et de l'existence d'une erreur, mais je ne sais pas faire de test dans le template, j'imagine qu'en javascript on a accès à ces variables?
Merci
Anne
The topic has been locked.
  • Nickko
  • Nickko's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
9 years 7 months ago #111733 by Nickko
Quelles variables précisément ?

Je me demande si on doit obligatoirement passer par du JS, j'aurais machinalement opté pour du PHP mais il semble que ce ne soit pas conseillé, j'ai fait une rapide recherche avant de te répondre.

Nickko
Head of ergonomics, UX & UI.
The topic has been locked.
  • tamacheq
  • tamacheq's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
9 years 7 months ago #111734 by tamacheq
En PHP, ce serait super, mais je n'ai jamais vu d'inclusion de php dans les templates. J'ai essayé de mettre <?php echo "toto";?> dans le template register.pstpl mais ce n'est pas parsé.

Je voudrais tester la variable de langue utilisée par l'utilisateur et la variable $register_errormsg qui donne {REGISTERERROR} dans le template.

Merci
Anne
The topic has been locked.
  • Nickko
  • Nickko's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
9 years 7 months ago #111736 by Nickko
Pour la langue, pas besoin de variable, ça peut se gérer en CSS.
En gros, tu as les deux messages dans la page et seul celui qui correspond à la langue de l'utilisateur est affiché.

Je dois chercher mais j'ai des exemples, on s'en sert parfois dans des templates au bureau.

Nickko
Head of ergonomics, UX & UI.
The topic has been locked.
  • Nickko
  • Nickko's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
9 years 7 months ago #111750 by Nickko
Pour la partie CSS, voici comment je m'en sort avec les langues :
.lang-fr #header-top, .lang-fr-informal #header-top {background:url(bg_citizen_fr.gif) left -3px no-repeat; margin:0 auto; text-align:right;}
.lang-nl #header-top, .lang-nl-informal #header-top {background:url(bg_citizen_nl.gif)

En effet, si tu regardes dans le code source de la page généré, on peut voir qu'il y a des classes qui correspondent à la langue choisie.

Et sinon, je pense que le trigger dasn MySQL reste plus simple que la solution JS. En effet, tu vas devoir jongler avec plusieurs variables, un peu de JS et un peu de CSS, tout ça dans des fichiers différents, tandis que le Trigger SQL ça n'est qu'une requête à taper.

Voici un peu d'info en français sur l'implémentation des triggers : dev.mysql.com/doc/refman/5.0/fr/using-triggers.html

Il suffit de connaitre la bonne table d'invitation, ensuite le nom des champs est assez explicite de mémoire.

Les tables de token ont des noms du type : lime_tokens_369498 ou lime_ est le préfixe que tu as choisis à l'installation (par défaut "lime_") et le chiffre à la fin, le numéro de ton sondage.

Ensuite, à l'intérieur de cette table, il y a une "colonne" usesleft qui correspond au nombre de jetons restants.

Si je me prête à l'exercice ça doit donner un truc du genre :
CREATE TRIGGER ins_sum AFTER INSERT ON lime_tokens_369498
FOR EACH ROW UPDATE lime_tokens_369498 SET usesleft = 9999 WHERE tid = NEW.tid ;

Nickko
Head of ergonomics, UX & UI.
The topic has been locked.
  • tamacheq
  • tamacheq's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
9 years 7 months ago #111761 by tamacheq
Encore merci pour cette réponse précise mais cela ne correspond pas à ce que je cherche.
Pour la langue, c'est le contenu du message affiché que je veux modifier dans le template, pas le style.
Pour les tokens, sans passer par le trigger, si j'indique useleft=9999 à un token et que je tente d'utiliser la même adresse mail pour m'inscrire à nouveau au questionnaire, cela ne fonctionne pas.
Merci
Je continue de chercher...
Anne
The topic has been locked.
  • Nickko
  • Nickko's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
9 years 7 months ago #111763 by Nickko
Tu peux aussi modifier le contenu en utilisant la classe, ça ne se limite pas au style même si ce n'est pas le plus orthodoxe, c'est possible.

Pour l'histoire de ton token, au départ tu demandais comment : "indiquer à l'utilisateur qu'il doit contacter l'administrateur pour qu'il lui génère un nouveau jeton avec la même adresse mail."

J'ai donc proposé une solution pour ajouter automatiquement un jetons (en fait presque une infinité).

En fait je pense que la logique de ton sondage est un peu tordue, pourquoi faire s'inscrire les gens une seconde fois s'il sont déjà inscrit ?

Un petit texte d'explication avec l'inscription serait sans doute suffisant.

Nickko
Head of ergonomics, UX & UI.
The topic has been locked.
  • tamacheq
  • tamacheq's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
9 years 7 months ago #111766 by tamacheq
Finalement, j'utilise du javascript inclus dans le template register.pstpl
Code:
<script type="text/javascript" charset="utf-8">
var registererror = "{REGISTERERROR}";
var sid = "{SID}";
var lang = "{LANG}";
jQuery(document).ready(
 
function(){
 
    if ((registererror != '') &amp;&amp; (sid==51981)) 
      { 
      var message ;
      if (lang == 'fr') { message = "Veuillez contacter hypotheses@openedition.org pour pouvoir à nouveau candidater avec la même adresse mail.\nMerci d'indiquer vos nom et prénom." ; }
        else { message = "Please contact hypotheses@openedition.org to get a new token with same email address: give also your name and your firstname. Thanks." ; }
      alert(message); 
      }
}
);
</script>
<span class="warning-text">{REGISTERERROR}</span>
<p class="register-message-1">{REGISTERMESSAGE1}</p>
<p class="register-message-2">{REGISTERMESSAGE2}</p>
<div class="register-form">{REGISTERFORM}</div>
The topic has been locked.
Moderators: Nickko

Lime-years ahead

Online-surveys for every purse and purpose