Tutoriel : utiliser Agenda, Formidable et Formulaire de participation pour gérer des inscriptions et des listes d’attente

Le présent article décrit comment nous pouvons utiliser trois plugins pour gérer des inscriptions à des activités, avec listes d’attente. Les trois plugins en question sont :

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.

Indication du nombre de places disponibles par évènement

É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.

Choix des évènements à proposer

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.

N’afficher que les événements à venir, dans moins d’un an

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.

Réglage de la présentation des évènements

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 ».

Saisie évènement : réglage de la gestion de 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 « Participation à 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.

  • « Participation » : « le remplissage du formulaire implique automatiquement la participation à l’évènement », puisque c’est bien le formulaire qui fait office d’inscription.
  • « Champ de l’email » : nous choisissons le champ « Email » dans le formulaire.
  • « Champ du nom », « Champ du prénom » et « Champ de l’organisme », 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.
  • « 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.
Option du traitement « Inscription à un évènement »

É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.

Formulaire final

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.

Notes

[1À noter que nous ne prenons pas le plugin Réservation d’événement car nous devons pouvoir gérer en plus de la réservation proprement dite le questionnaire spécifique, ce que nous pouvons faire facilement avec Formidable.

[2Nous utilisons un logiciel de comptabilité. Nous avons également une plateforme de paiement en ligne, spécifique à notre association et branché avec notre base de données d’adhérentes. Nous branchons notre formulaire sur cette plateforme, mais ce n’est pas l’objet du présent tutoriel.

[3Plus précisément evenements_1, la seule saisie « Évènements » dans notre formulaire.

Captures d’écran parfois reprises de l’article « Réservation d’événements ».

Discussion

7 discussions

  • Bonjour,

    Pour ce qui est de l’affichage de la liste de participantes 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.

    Répondre à ce message

  • 5

    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...

    Répondre à ce message

  • 4

    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.

    • 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).

    Répondre à ce message

  • 4

    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}

      <BOUCLE_reponsesFORMULAIRES_REPONSES){id_formulaire=xx}>
      <BOUCLE_evenement(EVENEMENTS}{id_evenement=#VOIR_REPONSE{evenements_1}>
      (...)
      </BOUCLE_evenement>
      </BOUCLE_reponses>

      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.

    Répondre à ce message

  • 1

    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.

    Répondre à ce message

  • 1

    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.

    Répondre à ce message

  • 4

    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.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom