Le besoin
Nous sommes une association d’éducation populaire aux sciences et techniques qui organise notamment des formations à l’astronomie.
Pour gérer les inscriptions, nous sommes confrontés aux contraintes suivantes :
- évènements récurrents (par ex. : 4 Week-ends de formation par an, sur le même modèle);
- nombre limité de places;
- pour chaque type de formation, un questionnaire spécifique doit permettre de cerner les besoins et attentes ainsi que les aspects logistiques (transports, repas, hébergement);
- il faut pouvoir gérer des listes d’attente.
Les principes retenus
- Les évènements sont gérés avec le plugin Agenda.
- Le plugin Formidable nous permet de créer les questionnaires spécifiques.
- Le plugin Formulaire de participation avec Formidable permet de relier entre eux les deux plugins précédents pour que la réponse à un formulaire entraîne l’inscription à un évènement [1].
- Comme les questionnaires concernent des besoins spécifiques à une personne et un évènement, nous demandons de remplir un questionnaire par personne et par évènement. Exemple :
- Si une famille s’inscrit, les enfants n’ont pas forcément les mêmes besoins de formation que les adultes. Nous demandons donc une inscription par personne.
- Si une personne s’inscrit à deux formations consécutives, elle doit, normalement, progresser entre chaque formation. Par conséquent, ses besoins ne seront pas les mêmes à la deuxième et à la première formation. La réponse au questionnaire ne sera pas la même.
Certains élèments sont gérés “à la main” en dehors du site :
- le suivi du paiement [2];
- le suivi logistique proprement dit : combien de chambres il faut réserver, comment faut-il gérer les repas, quel matériel apporter, etc. Chaque responsable de formation utilise, pour l’instant, son propre système.
- En cas de désistement, notifié par email ou autre moyen de communication il faut :
- dépublier la réponse
- prévenir la personne suivante sur la liste d’attente que la place se libère
Étape 1 : créer les évènements et indiquer le nombre de places disponibles
La première étape consiste à créer les évènements avec le plugin Agenda. Lors de la création des évènements, nous indiquons que le nombre de places est limité, et nous indiquons le nombre de places disponibles.
Étape 2 : créer le formulaire Formidable
La seconde étape est de créer un formulaire d’inscription pour l’évènement récurrent. Ce formulaire se compose de deux types de saisies :
- plusieurs saisies de différents types pour poser les questions utiles à la gestion de l’évènement : nom, prénom, contacts, moyen de transport, parcours de formation demandé, spécificité alimentaire, etc.;
- une saisie évènement pour choisir la date de l’évènement où l’on s’inscrit.
C’est sur cette dernière saisie que nous allons maintenant nous consacrer.
Voici comment nous configurons la saisie.
Choix des évènements où l’on peut s’inscrire
Dans notre cas, chaque type d’évènement est associé à un article. Ainsi, pour gérer les évènements récurrents, nous demandons simplement de proposer les évènements associés à un article précis.
Par ailleurs, nous ne proposons les inscriptions que pour les évènements ayant lieu dans moins d’un an, ce qui correspond à notre mode de fonctionnement.
Un seul évènement par réponse de formulaire
De plus, même si nous gérons des évènements récurrents, nous souhaitons avoir une fiche d’inscription par personne et par évènement. C’est pourquoi nous configurons la saisie pour présenter le choix d’évènement sous forme de boutons radio.
Une présentation simplifiée des évènements
Comme le formulaire est lié à un type d’évènement, nous n’affichons que la date de l’évènement, et non pas son titre. De même, nous n’affichons pas l’heure, car cela n’est pas utile. En revanche, nous affichons systématiquement l’année, notamment pour éviter les ambigüités de lecture tant du côté de l’internaute que de la personne qui traite les inscriptions.
Prévenir l’internaute qu’ielle est potentiellement sur liste d’attente
Pour chaque évènement proposé :
- Nous voulons indiquer le nombre de places restantes.
- S’il n’y a plus de place restante, nous voulons indiquer que la personne est sur liste d’attente.
- Dans ce dernier cas, nous voulons également qu’elle coche une case où elle reconnaît expressément qu’elle sait être sur liste d’attente.
Nous nous rendons donc dans l’onglet “Gestion des inscriptions” de la Saisie, et nous cochons “Afficher le nombre de places restantes” et “Indiquer qu’il y a une liste d’attente”.
Il nous reste à créer une case à cocher à remplir obligatoirement si la personne est sur liste d’attente. Nous ajoutons donc une saisie “Case à cocher” et la configurons de la manière suivante :
- Dans l’onglet “Description”:
- “Label” à remplir avec “Liste d’attente”
- “Label à placer à côté de la case” : “J’ai conscience d’être sur liste d’attente”
- Dans l’onglet “Affichage”, option “Affichage conditionnel” remplir avec
@evenements_1_liste_attente@ =="on"
. Ceci permet que, si dans la saisie “Evènements” [3], l’internaute choisit un évènement où il ne reste plus de place, alors la case à cocher s’affiche. Dans le cas contraire, la case à cocher est masquée. - Dans l’onglet “Validation”, rendre obligatoire le “Champ”. Ainsi nous sommes sûrs que la personne a conscience d’être sur liste d’attente.
Étape 3 : configurer le traitement “Inscription à un évènement”
Pour nos formulaires nous utilisons quatre traitements :
- nous envoyons un courriel au(x) responsable(s) de formation ;
- nous enregistrons en base les réponses;
- nous procédons à un paiement, à travers une plateforme spécifique à notre association;
- nous enregistrons la réponse comme une inscription à l’évènement.
Nous allons détailler maintenant la configuration du quatrième traitement, fourni par le plugin “Formulaire de participation avec Formidable”.
Voici les options que nous choisissons.
- Dans l’onglet “Évènement”
- “Type d’évènement” : “Évènement variable - dépendant d’un champ”
- “Champ d’évènement” : nous choisissons la saisie d’évènements créée en étape 1.
- Dans l’onglet “Inscription” :
- Choisir “Remplir le formulaire suffit à l’inscription”, puisque c’est bien le formulaire qui fait office d’inscription.
- Dans l’onglet “Participant
- “Champ de l’email” : nous choisissons le champ “Email” dans le formulaire.
- “Champ du nom” et “Champ du prénom”, bien que cela ne change pas grand-chose, nous choisissons les bons champs du formulaire. En réalité, cela n’est utile que si nous confions la gestion des inscriptions à Agenda, ce qui n’est pas vraiment le cas ici. Peu importe ce que le plugin “Agenda” reçoit comme information à ce sujet : ce qui compte est ce que nous, nous recevons comme information.
Configuration du traitement “Participation à un évènement” : configuration de / de la participante
e”
- Dans l’onglet “Inscription de groupe” nous ne cochons rien.
Étape 4 : gérer les désistement
Maintenant quand une personne consulte le formulaire, il peut choisir l’évènement en ayant conscience du nombre de places restantes.
Si une personne se désiste, la démarche à effectuer est la suivante :
- Prévenir la personne suivante sur liste d’attente que la place s’est libérée.
- Modifier la réponse enregistrée en base, en la passant en “refusée” ou “à la poubelle” : le compteur d’inscriptions à l’évènement sera automatiquement décrémenté.
Pour aller plus loin
On peut transmettre automatiquement le programme aux personnes inscrites, en utilisant le plugin “Formidable retour étendu”.
Todolist
- Créer un plugin qui notifie automatiquement les gens sur liste d’attente.
Discussions by date of activity
7 discussions
Bonjour,
Pour ce qui est de l’affichage de la liste de participant·e·s dans l’espace privé, il semble que le plugin Agenda a (désormais?) une page : ?exec=agenda_inscriptions&id_evenement= (qui inclut prive/objets/liste/evenement_participants).
Or ce plugin-ci semble remplacer cet affichage par un lien vers les réponses du formulaire.
Les pipelines ne pourraient-ils pas ajouter ce lien sans toutefois supprimer l’affichage de la liste native du plugin Agenda ?
N.B. Je travaille sur un site pour lequel je n’ai actuellement pas accès aux squelettes.
Reply to this message
Bonjour,
Très intéressant.
j’aimerai utiliser ce type de système des réservations de créneaux horaire annuel (chaque jour un créneau horaire)
avez vous une astuce pour créer un événement et le répéter jusque 2030 (pr exemple) sans le créer manuellement ? (Dans l’onglet événement de l’espace privé, impossible de cliquer 300 fois par an…)
si vous avez une astuce je suis preneur.
cordialement ;)
Là je pense qu’il faudrait écrire un plugin qui appelle les fonctions ad hoc du plugin agenda.
Bonjour merci pour votre retour.
est-ce possible directement via mysql ? (Je suis bloqué actuellement à cause de cela… pas envie de passer ma vie sur l’interface d’admin à créer des répétitions :D )
Oui c’est sans doute aussi possible directement en SQL. Le tout est de trouver les bonne requetes à écrire :)
Ok je vais regarder dans ce sens… (surtout frileux de toucher si à y’a des tables liées …) merci pour votre retour 😉
Si vous ête frileux, je pense qu’il vaut mieux ecrire un script PHP qui fasse cela (en utilisant les fonctions du plugin agenda) plutot que d’écrire directement en sql...
Reply to this message
Salut Maïeul,
salut Touti,
en lisant les différents tutos (super détaillés, merci :) ), je comprends qu’il n’y a qu’avec la saisie événement qu’il est possible d’afficher au visiteur au moment de l’inscription, le nombre de places restantes ou qu’il y a une liste d’attente.
Dans mon cas, le formulaire ne concerne qu’un seul événement à chaque fois, donc la saisie d’événement rajoute une étape pour la personne qui s’inscrit. Ou il faudrait pouvoir la cocher la case par défaut comme pour les autres saisies radio/checkbox, mais je n’ai pas trouvé comment faire.
Ou alors je rate quelque chose dans le principe de fonctionnement ?
Non, tu as bien compris.
On pourrait imaginer soit d’effectuer proposer la case cochée par défaut, soit mieux, d’avoir une saisie qui ne fasse _que_ la liste d’attente. Faut voir.
En attendant, tu peux dire que la saisie est obligatoire.
Ok, merci.
J’en profite pour qqs retours après tests :
- le mail de notification envoyé à la personne qui s’inscrit ne précise pas lorsqu’elle est en liste d’attente, ça permettrait d’être plus clair
- dans le formulaire public, il est indiqué “1 place”, ça peut être ambigu (nb de places totales ou restantes), on pourrait préciser “1 place restante” voir “1 place restante sur X places en tout”
1. Si tu suis le tuto, tu vois que je suggère très fortement de mettre une case à cocher qui s’affiche si on est sur liste d’attente et qui est obligatoire, ce qui suffit normalement dans le mail de notif, non ?
2. Effectivement on pourrait préciser “restantes” sur les places, mais je ne suis pas convaincu d’indiquer le nombre total de place (cela ne sert pas à grand chose).
Reply to this message
Bonjour,
j’utilise avec bonheur la fonctionnalité permettant de choisir les évènements à proposer lors de l’inscription (dans mon cas, les événements liés à un article). Sur un des sites qui utilisent cet outil, on me demande s’il serait possible que, dans les mails qui sont envoyés pour accuser réception et pour signaler l’inscription puisse figurer le contenu du champ “description” de l’évènement que l’internaute a choisi ?
Possible ? Pas possible ?
Merci infiniment d’avance.
(Complément car ma formulation était ambigüe). Chaque évènement a un descriptif attribué lors de la saisie de l’évènement. Le besoin est de pouvoir récupérer la valeur de ce champ descriptif afin de l’inclure dans les mails automatiques générés lord du traitement du formulaire.
Désolé pour le manque de clarté initial...
Pas directement non, il faudrait faire un petit plugin supplémentaire sans doute...
Merci de la réponse. Faire un tel plugin dépasse mes compétences.
En regardant dans la base de données, l’id de l’évènement figure dans les enregistrements de la table formulaires_reponses_champs
nom = evenements_1, valeur = xxx (voir copie d’écran)
Il devrait donc être possible de mettre en place une boucle qui permette de d’interroger l’évènement xxx et de récupérer les informations de l’évènement en particulier la valeur du champ descriptif.
Par contre, je sèche pour savoir comment écrire le critère à mettre dans la boucle incluse chargée de lier l’id_evenement avec le contenu du champ “valeur” ? (=critère permettant de sélectionner l’évènement dont l’id est égal au contenu du champ “valeur” correspondant au champ “evenements_1”).... que j’ai tenté d’écrire sans succès
id_evenement=#VOIR_REPONSE{evenements_1}
Comment faut-il écrire ce critère ? Merci beaucoup d’avance du coup de main.
ah oui je sais pas si #VOIR_REPONSE peut être utilisable directement dans un critère, c’est assez spécifique comme balise. Par contre tu dois pouvoir boucler sur la table formulaires_reponses_champs.
Reply to this message
J’ai un formulaire de choix d’evenements parmi une liste (avec des cases à cocher), j’ai ajouté un champs supplémentaire qui permette de choisir parmi une liste de valeurs (liste déroulante).
Le truc, c’est que j’aimerai pouvoir spécifier une valeur différentes dans le second champ pour chaque date selectionnée dans le module de selections d’événements. Cela est-il possible ?
Oui et non.
Oui dans le sens où tu peux créer des autant de saisie que d’evenement, et ne choisir d’afficher que celles correspondant aux evenemens cochées, avec la syntaxe des textes conditionnel.
Genre :
@evenements_1@ == '1'
NON dans le sens où :
- tu ne peux avoir un seul champ qui varie pour selon les cases cochées
- dès que tu rajotue des evenements il faut modifier les formulaires
Techniquement, si tu voulais vraiment faire ce que tu veux faire, il faudrait avoir une saisie personalisé dynamique, qui, en fonction de ce qui est cochée, récupère en json les options affichables.
C’est tout à fait possible, mais il faut un peu dev.
Reply to this message
Bonjour et merci pour ce tuto.
Je me demandais s’il était possible ou souhaitable de mettre plusieurs evenements dans un même article?
Et si un evenemeent = 1 articel, vaut-il mieux décrire l’événement dans le texte de l’eveneùenet ou de l’article.
Actuellement je mets un art = un evenement et je décrit le sujet dans l’article.
Je veux revenir à des réservation plus simple car j’utilise les plugins réservations et c’est un peu lourd.
Merci
C’est plus un comportement du plugin Agenda que tu peux modifier dans la config du plugin (dans la page des plugins il faut cliquer sur l’icone d’outils dans le bloc du plugin Agenda)
Ainsi, tu décides que tous tes évènements seront dans un seul article.
Si tu nommes ton article “L’Agenda du site” tu comprends encore mieux l’intérêt :) Ce qui n’empêche pas d’attribuer des évènements à d’autres articles/objets etc
C’est un choix pour faciliter la création d’évènements, cela ne change rien le fonctionnement de ce plugin.
Reply to this message
Bonjour
Un grand merci pour ce tuto clair et détaillé et qui correspond exactement à ce que je cherchais.
Bravo !
de rien et merci
Bonjour
Après quelques tests, j’ai néanmoins un souci : quand une personne veut s’inscrire à un évènement qui est déjà complet, il a bien le message de retour mais aucune inscription dans la base. Je viens de reprendre tout ton tuto mais je ne vois pas ce que j’aurais pu louper.
hum, je suis étonné je n’ai jamais eu ce problème, et du reste il n’a pas de raison qu’il se produise, aucun controle n’étant fait pour enregistrer ou pas en base.
Le mieux seraitque tu m’exporte le .yaml
Ah non, oublie, ça fonctionne.
Sans doute un problème de cache.
C’est parfait !
Merci encore.
Reply to this message
Add a comment
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Follow the comments:
|
