La version 2 du plugin Agenda permet d’afficher dans l’espace public des formulaires de participation aux événements. Cette fonctionnalité est incomplète, mais utilisable.
Voici à quoi ressemble le formulaire sur une page de l’espace public en utilisant les squelettes par défaut de SPIP :
Les utilisateurs [1] ont la possibilité de répondre j’y serai, j’y serai peut-êre ou je n’y vais pas.
Il est possible de limiter le nombre de places disponibles. Dans ce cas, quand l’événement est complet, les utilisateurs en sont tenus informés par un message et le formulaire n’est plus affiché, sauf pour les utilisateurs connectés ayant déjà répondu j’y serai de manière à leur permettre de se désinscrire et de libérer éventuellement une place.
Si l’utilisateur revient au cours de sa visite sur la page du formulaire, sa réponse reste affichée.
Le plugin ne permet pas encore l’affichage des réponses dans l’espace privé, mais elles peuvent être consultées dans la table spip_evenements_participants
en base de données.
Par ailleurs, l’inscription est valable sur toute la durée de l’événement, y compris si l’événement se produit avec des répétitions.
Affichage du formulaire
Le formulaire s’affiche dans un squelette grâce à la balise #FORMULAIRE_PARTICIPER_EVENEMENT{#ID_EVENEMENT}
[2] à condition qu’elle soit incluse dans une boucle de type EVENEMENTS
. Par exemple, dans le squelette article.html, vous pouvez rajouter la boucle suivante pour afficher les événement liés à l’article et les formulaires de participation associés :
<BOUCLE_evenement(EVENEMENTS){id_article}>
<p>#TITRE</p>
#FORMULAIRE_PARTICIPER_EVENEMENT{#ID_EVENEMENT}
</BOUCLE_evenement>
Notez que la boucle ne doit pas se trouver dans un INCLURE
statique, faute de quoi le formulaire ne sera pas rafraîchi à chaque consultation de la page par l’utilisateur. Autrement dit, si au lieu de placer la boucle directement dans article.html, vous souhaitez la placer dans un squelette nommé formulaire-evenement.html, n’utilisez pas [(#INCLURE{fond=formulaire-evenement})]
pour appeller ce squelette depuis article.html, mais <INCLURE{fond=formulaire-evenement}>
[3].
Par ailleurs, la balise #FORMULAIRE_PARTICIPER_EVENEMENT
étant un formulaire CVT (charger, vérifier, traiter), vous pouvez bénéficier du chargement du formulaire en AJAX en encapsulant la balise dans une div de classe ajax
.
<div class='ajax'>
#FORMULAIRE_PARTICIPER_EVENEMENT
</div>
L’insertion de la balise #FORMULAIRE_PARTICIPER_EVENEMENT{#ID_EVENEMENT}
dans vos squelettes ne suffit pas. Pour que le formulaire s’affiche, vous devez cocher la case « inscription en ligne » du formulaire de saisie de l’événement. Vous avez également la possibilité de saisir un nombre de places si celui-ci est limité.
Sauvegarde des réponses dans la base de données
Les réponses sont stockées en base de données dans la table spip_evenements_participants
, créée à l’installation du plugin. Elle comporte les champs suivants :
-
id_evenement
-
id_auteur
-
date
-
reponse
Le champ reponse
peut prendre les valeurs suivantes :
- ’oui’ (si la réponse est « j’y serai »)
- ’non’ (si la réponse est « je n’y vais pas »)
- ’ ?’ (si la réponse est « j’y serai peut-être »)
La seule façon d’identifier l’auteur d’une réponse est donc id_auteur
. Il vaut donc mieux inciter les utilisateurs n’ayant pas de compte de rédacteur ou d’administrateur à créer un compte sur votre site et à se connecter avant de répondre. Cette connexion préalable est d’autant plus nécessaire que dans le cas où un utilisateur ne serait pas connecté, sa réponse serait enregistrée sous l’id_auteur
zéro et sa réponse perdue par l’enregistrement de la réponse du prochain utilisateur non connecté.
Pour vérifier si l’utilisateur est connecté, vous pouvez essayer de modifier formulaires_participer_evenement_verifier_dist, en rajoutant après $reponse = _request('reponse');
le test suivant :
if ($GLOBALS['visiteur_session']['id_auteur'] == 0)
$erreurs['reponse'] = "Pour signaler votre participation a l'evenement vous devez etre connecte sur le site. Si vous n'avez pas encore de compte, veuillez en creer un.";
et en remplaçant if (!($reponse=_request(’reponse’))
suivant par elseif (!($reponse=_request(’reponse’))
.
Si vous hésitez à autoriser des inconnus à se connecter à votre site, notez que SPIP vous donne la possibilité de créer des auteurs nommés « visiteurs », n’ayant pas accès à l’espace privé. Ce type d’auteur est généralement utilisé pour permettre à des utilisateurs de poster des messages dans des forums après abonnement. Pour autoriser l’inscription des visiteurs, allez dans Configuration > Interactivité > Visiteurs puis cochez la case Accepter l’inscription de visiteurs du site public.
Les balises #FORMULAIRE_INSCRIPTION
et #LOGIN_PUBLIC
vous permettront d’afficher le formulaire d’inscription et le formulaire permettant à vos utilisateurs de s’identifier tout en restant sur le site public [4]. Vous pouvez afficher la liste des visiteurs dans Auteurs puis en cliquant sur Afficher les visiteurs.
Affichage des inscriptions
Le formulaire d’inscription étant une fonctionnalité en cours de développement du plugin Agenda, il n’est pas encore possible de visualiser les inscriptions dans l’espace privé. Vous pouvez toutefois visualiser le contenu de la table spip_evenements_participants
avec un outil comme phpMyAdmin si votre hébergeur l’a mis à votre disposition.
Par contre, il est possible d’afficher dans l’espace public la liste des auteurs inscrits à un événement en rajoutant dans le squelette article.html une boucle du type :
<BOUCLE_evenement(EVENEMENTS){id_article}>
<BOUCLE_personnes_inscrites(spip_auteurs spip_evenements_participants){id_evenement}{par nom}>
#NOM
</BOUCLE_personnes_inscrites>
</BOUCLE_evenement>
La boucle utilise deux fonctionnalités de SPIP :
- la possibilité d’interroger une table de la base de donnée pour laquelle aucun alias n’a été déclaré (ce qui est le cas actuellement pour la table
spip_evenements_participants
). Par exemple, l’alias de la tablespip_articles
estARTICLES
(en majuscules), ce qui permet d’écrire<BOUCLEx(ARTICLES)>
au lieu de<BOUCLEx(spip_articles)>
. - les jointures : la table
spip_evenements_participants
ne contient pas le nom des auteurs qui se trouve dans la tablespip_auteurs
, c’est pourquoi la boucle fait appel à ces deux tables pour créer une jointure [5].
Etude du code du formulaire
Pour revenir à la balise #FORMULAIRE_PARTICIPER_EVENEMENT
, celle-ci est un formulaire CVT (charger, vérifier, traiter). Vous trouverez donc dans le dossier formulaires à la racine du plugin, le squelette participer_evenement.html et le script participer_evenement.php contenant les fonctions :
-
formulaires_participer_evenement_charger_dist($id_evenement)
-
formulaires_participer_evenement_verifier_dist($id_evenement)
-
formulaires_participer_evenement_traiter_dist($id_evenement)
La fonction formulaires_participer_evenement_charger_dist
est exécutée avant l’affichage du formulaire pour vérifier si l’événement passé en paramètre par #FORMULAIRE_PARTICIPER_EVENEMENT{#ID_EVENEMENT}
existe réellement et qu’une inscription en ligne est bien prévue pour cet événement (la case « Inscription en ligne » est bien cochée dans le formulaire de saisie de l’événement). Si ce n’est pas le cas, le formulaire n’est pas affiché. Sinon, la fonction vérifie si un nombre de places a été défini et le cas échéant, calcule si l’événement est complet ou non. Les réponses ’oui’ ont un poids de 1 et les réponses ’peut-être’ un poids de 0,5. La somme des réponses ’peut-être’ est arrondie à l’entier supérieur. Par exemple, si deux personnes ont répondu ’oui’ et trois personnes ’peut-être’, on considère que (2 x 1) + arrondi(3 x 0,5) = 4 places ont été réservées. Si l’événement est complet, le message "evenement complet" est affiché et le formulaire ne s’affiche que si l’utilisateur (identifié par $GLOBALS['visiteur_session']['id_auteur']
) a déjà répondu ’oui’ de manière à lui permettre de se désinscrire et de libérer éventuellement une place.
Si le formulaire est affiché et que l’utilisateur clique sur le bouton d’envoi, la fonction formulaires_participer_evenement_verifier_dist
prend le relais pour vérifier que l’utilisateur a bien coché une des propositions, faute de quoi le message « Indiquez votre choix » est affiché. Si l’événement est complet et que l’utilisateur qui avait préalablement répondu ’non’ ou ’peut-être’ change sa réponse pour ’oui’, on affiche le message ’Plus de places’.
Si aucun message d’erreur n’est affiché, les réponses sont traitées par formulaires_participer_evenement_traiter_dist
qui met à jour ou insère dans la base de donnée la réponse de l’utilisateur puis affiche un message de confirmation de prise en compte de la réponse.
Discussions par date d’activité
15 discussions
Bonjour,
je souhaite qu’un email soit envoyé à l’auteur de l’événement lorsqu’un utilisateur s’inscrit. Existe-t-il un plugin ? Une aide quelconque pour cette mise en place ? Merci !
personnelelement je n’utilise pas les formulaires livrés avec le plugin, mais
- Formidable, le générateur de formulaires
- Formulaire de participation à un évènement avec Formidable
- Formidable participation : destinataires supplémentaires
cela répond à ce besoin, et bien plus encore :)
Répondre à ce message
Bonjour,
N’affiche pas le formulaire de participation à l’événement
Hors ceci l’affiche (dans une boucle article) :
Ai-je manqué quelque chose ?
je ne sais pas comment j’avais fait pour afficher quelque chose, maintenant
n’affiche plus rien dans aucun des cas.
Bien situé dans une boucle evenements et bien coché « Inscription en ligne ».
Quelqu’un utilise cette fonctionnalité ?
L’insertion de la balise #FORMULAIRE_PARTICIPER_EVENEMENT#ID_EVENEMENT dans vos squelettes ne suffit pas. Pour que le formulaire s’affiche, vous devez cocher la case « inscription en ligne » du formulaire de saisie de l’événement.
Le formulaire de participation à un événement ne s’affiche que pour les événements futurs (logique hein ?). Il faut donc s’assurer que l’événement n’est pas passé.
Sur la balise qui entoure le formulaire sur une page article, on peut donc mettre :
Répondre à ce message
Bonjour,
j’ai installé ce formulaire de participation sur mon site de gestion des partitions d’un orchestre. Les membres peuvent s’inscrire à une date de prestation. Ca a bien marché pendant plusieurs mois mais là , depuis qq semaines, j’ai un pb d’affichage lors de la mise à jour.
Quand on valide un choix (j’y serai, j’y serai peut être ou je n’y serai pas) , l’info est bien affichée sur l’écran dans un 1er temps, mais lorsqu’on passe sur une autre page, puis que l’on revient sur l’événement mis à jour, alors là, on n’a plus l’info !
Je suis allée vérifier dans la table spip_evenement_participant, et il semble que l’info soit bien mise à jour. De fait, quand on clique sur « Recalculer cette page », la participation apparaît correctement.
Ce qui me fait dire qu’il s’agirait peut être d’un pb de mémoire cache... mais j’avoue que je sèche un peu sur la solution à appliquer pour résoudre ce pb. A part aller dans la partie privée dans « Maintenance » puis « Vider le cache » (ce qui n’a pas résolu le pb), je ne sais pas quoi faire de plus...
Est-ce que quelqu’un aurait une idée ?
Merci de votre aide
Bonjour,
pas évident à débusquer sans voir le squelette lui même, mais il y a une notice qui peut expliquer ce problème de non mise à jour, cf vers le début de l’article :
« Notez que la boucle ne doit pas se trouver dans un INCLURE statique, faute de quoi le formulaire ne sera pas rafraîchi à chaque consultation de la page par l’utilisateur. » et la suite, qui explique comment faire un (dynamique) au lieu d’un #INCLURE (statique).
Répondre à ce message
Bonjour ,
Se plugin permet-il de réserver plusieurs places pour un événement (ex le membre du site plus des invités) ?
si non, en connaissez vous un autre ou comment modifier le plugin actuel ?
merci
C’est étrange ; je travaille à quelque chose du genre actuellement :) Mais ce ne sera pas sur la zone avant janvier prochain... Mais si le coeur vous en dit, vous pouvez alpha-tester (comme c’est en chantier/dev ça bouge pas mal et je n’offre pas de garantie)
je suis intéressé, quel est le nom de ce dev ???
Bonjour ce travail a-t-il abouti ? Si oui, le résultat m’intéresse fortement !
Merci d’avance
Répondre à ce message
Bonjour,
Je suis sous Zpip, Spip 2.1.12 et tout passe dans la boucle placée dans squelettes/contenu/article.htm, sauf :
#FORMULAIRE_PARTICIPER_EVENEMENT{#ID_EVENEMENT}
C’est peut être juste parce c’est pour Spip 2.0 et que la fonction ne fonctionne pas en Spip 2.1.12, mais je tente ma chance ;)
Bonne journée !
Répondre à ce message
Bonjour,
Le formulaire d’inscription ne semble pas gérer les répétitions à un événement ?
Comment prendre en charge les répétitions et enregistrer la bonne date pour l’inscription ?
Merci.
Florent
Bonjour,
Comment tester si un événement demande une inscription obligatoire ? J’ai essayé différentes solutions avec
...mais sans succès. ( J’aimerais charger le formulaire de login uniquement sur les événements obligatoire lorsque l’internaute n’est pas logué.)
Bonjour,
Comme indiqué au début de l’article, la fonctionnalité ne gère pas les répétitions. Mais tu peux toujours en faire la suggestion à Cédric qui a développé le plugin.
Pour tester si l’utilisateur est connecté, essaye de rajouter dans formulaires_participer_evenement_verifier_dist, après
$reponse = _request('reponse');
le test suivant :et remplace
if (!($reponse=_request(’reponse’))
suivant parelseif (!($reponse=_request(’reponse’))
.C’est bien ce petit bout de fonction en plus. On conserve néanmoins un souci ergonomique :
L’internaute tente de s’inscrire, puis déchu par un message d’erreur, il doit d’une part créer un compte, puis revenir sur la page pour confirmer son inscription à l’événement. Trop tordu pour que celà fonctionne je pense.
Une forme de surcharge du formulaire d’inscription ne serait-elle pas plus judicieuse ? Le genre « créez un compte et en même temps vous serez inscrit ».
C’est sûr que la rustine proposée n’est qu’une piste à améliorer. Cependant, quand on regarde d’autres sites comme celui du Sundance Festival, ils ont plutôt tendance à séparer l’inscription au site de l’utilisation de fonctionnalités comme l’ajout de séances de films à un agenda personnel.
De toutes façons, cet article n’est qu’une contribution à la documentation du plugin. Si tu as des suggestions, tu peux toujours les soumettre aux développeurs sur le forum du plugin.
Je n’avais pas vu que nous avions le même besoinn :) Une mise à jour récente corrige le problème de l’auteur non connecté en invitant gentiment à se connecter pour pouvoir s’inscrire :)
Je pense aussi que l’inscription doivent rester distinct car servant à des tas d’autre chose. . Par contre, il est tout à fait possible de proposer les champs de connexion/identification (login et mot de passe) lorsque l’auteur n’est pas connecté, mais je pense que c’est une complexité (en gestion comme en affichage) qui n’est pas du ressort du formulaire par défaut (qui doit rester simple et générique et servir de base pour diverses adaptations par mécanisme de surcharge)
Pour les événements répétés, je pense que ce n’est pas au formulaire de base (qui doit rester générique et simple) de s’en occuper (mais aux surcharges perso ou de plugin). En effet, les répétitions ne forment pas toujours une suite (par exemple une formation sur plusieurs jours) mais souvent bien des répétitions au sens premier (par exemple un spectacle sur plusieurs dates), et on peut choisir de s’inscrire indépendamment pour une date ou une autre :/ (dans le cas du spectacle par exemple, on choisit une —ou plusieurs— date—s— mais on n’est pas contraint à toutes les représentations...)
Répondre à ce message
Bonjour,
D’après mes recherches, on ne peut pas limiter l’affichage du formulaire d’inscription à une date limite d’inscription à un évènement. Comment peut on mettre cette solution en place ?
Est ce prevu pour une version future ?
merci et bravo pour le travail accompli !
Je résous simplement ce problème en indiquant par un texte : Clôture des inscriptions en date du : .... On peut aussi ajouter une boucle qui fait disparaitre le formulaire à date du début -10.
Le formulaire ne s’affichait pas s’il n’y a pas d’inscription en ligne. Avec la dernière mise à jour, elle ne s’affiche pas non plus quand l’événement est passé (avant cela c’était le cas si les inscriptions sont permises et du coup on pouvait s’inscrire à des événements passés....) Pour ce faire, c’est la date de fin qui est testée car sur des événements durant plusieurs jours certains organismes acceptent des inscriptions en cours... (dites à la dernière minute) C’est vrai qu’un paramétrage plus poussé (par exemple 10 jours avant la fin) serait bienvenu :/ En attendant la solution de Artlogic fait l’affaire (sauf le message « Pas d’inscription possible pour cet événement. » qui n’est pas utile à mon avis et en tout cas rompt la cohérence)
Répondre à ce message
Bonjour
Je déplace ce message posté par erreur sur la page du plugin Agenda.
J’utilise le plugin agenda et notamment la fonction qui permet de s’inscrire en ligne. Sur ce point, il y a deux choses qui ne vont pas :
- quand on s’est inscrit à un événement, la phrase « votre participation est enregistrée » s’affiche". Mais si on recharge la page plus tard, cette phrase n’apparaît plus, alors que ce serait bien qu’elle s’affiche dès lors que l’auteur identifié est déjà inscrit.
- l’ordre d’affichage des événements soumis à inscriptions, quand il y en a plusieurs pour le même article, n’est pas clair : ainsi j’ai cinq événements sur un article, avec cinq dates différentes, et ils apparaissent dans le désordre : le 9:12, le 18/11, le 3/12, le 28/10 et le 25/11. Comment faire pour qu’ils apparaissent dans l’ordre chronologique (le plus ancien d’abord) ?
Merci d’avance
Ah... :) j’avais répondu là-bàs en commençant par dire de venir ici La discussion se poursuit ici alors :)
J’ai testé votre solution, à savoir modifier la boucle événement, celle qui se trouve dans le dossier contenu et dans le squelette page-agenda.html (si c’est bien celle-là), comme ceci :
En enlevant la balise par date_debut et en la remplaçant par !par date_debut.
Je n’ai noté aucun changement. Les dates des événements sont toujours affichées dans le désordre.
Pourriez-vous me dire si c’est bien cette boucle événement qu’il fallait modifier ?
Je ne saurai hélas pas dire comme ça... Si dans le corps de cette boucle il y a
#FORMULAIRE_PARTICIPER_EVENEMENT
Je peux essayer de jeter un coup d’oeil, mais je ne sais pas quelle version du plugin regarder (si ce squelette est bien fourni avec)
Je viens d’installer la révision 54757 du 21 novembre d’Agenda 2.0.
Je n’arrive pas à trouver dans quel squelette le tri des événements se fait. En testant, par défaut ils s’affichent dans l’ordre de création, les dates des événements ne sont pas prises en compte. J’ai essayer de feinter en attribuant un numéro de tri au titre de chaque événement, mais ça ne change rien...
Dans le dossier formulaires du plugin, j’ai bien trouvé un squelette participer_evenement.html, mais ça ne gère l’affichage que d’un seul événement, pas de plusieurs...
J’ai trouvé, enfin !
C’était tellement simple que je n’y avais pas pensé.
La boucle à modifier se trouve tout simplement dans le squelette article.html (dans zpip, c’est dans le dossier Contenu) :
Il faut donc ajouter
{par date_debut}
pour trier dans l’ordre chronologique ou{! par date_debut}
dans l’ordre inverse.ah, il s’agissait d’un squelette zpip (comme je disais, je ne pouvais pas le deviner ; mais le soucis est résolu une fois qu’on a trouvé la bonne boucle..) Content que ce soit résolu :)
Répondre à ce message
Pour afficher les participants, la boucle suivante semble fonctionner :
Bonjour,
Je confirme : ça fonctionne très bien aussi avec inscription2 pour les champs supplémentaires :
dd
Cette boucle me retourne tous les auteurs du site sans qu’il y ai besoin d’être inscrit. Il doit y avoir un petit os.
Oups, je me suis trompé, il manque le critère
{id_evenement}
à la bouclepersonnes_inscrites
. Voici la boucle corrigée :Oui, je me suis trompé dans mon exemple, il manque le critère
{id_evenement}
à la bouclepersonnes_inscrites
. Voici la boucle corrigée :Huuuu ça m’affiche ceux qui ont répondu, mais pas particulièrement ceux qui ont répondu par la positive. Les noms de ceux qui ont répondu par la négative sont aussi affichés. Y a t-il un moyen d’afficher les réponses « oui peut-être ou non » à coté du nom ?
Heu si j’ajoute
#reponse
peut être ? Je ne sais pas trop si l’on peut utiliser un morceau d’une table non déclaré de la sorte.Oui, tu peux afficher tous les champs de la table en utilisant des balises de même nom que le champ à condition que la balise soit écrite en majuscules (ton idée d’utiliser
#REPONSE
est donc la bonne, à la majuscule près).Tu peux aussi utiliser les champs comme critère de la boucle. Donc normalement le critère
{reponse='oui'}
devrait fonctionner.Merci pour cette contribution.
J’ai ajouté avant
<BOUCLE_personnes_inscrites...>
afin d’afficher la disponibilité restante.
D’ailleurs (mon code n’est pas encore en prod), quand le nombre de place est atteint, le formulaire sera-t-il automatiquement masqué ?
Johan
Je ne saurais te répondre, ce n’est pas moi qui ai développé le plugin ;-)
Je viens de tester et regarder le code :
Quand le nombre de place est atteint on n’a plus le formulaire sauf si on a dit « J’y serai » (ou « j’y serai peut-être »).
c’est nickel !
Je complète mon message précédent pour affiner le message :
J’ajoute « un peu » de code pour plus de précision encore.
J’ai une petite question : comment adapter ce superbe code pour n’afficher que la réponse effectuée par le visiteur connecté (et non la liste des participants comme ici) ? Exemple : « Bonjour #NOM, vous avez répondu #REPONSE. Vous pouvez modifier votre choix à l’aide du formulaire ci-dessous »
J’ai essayé avec ceci :
Çà marche bien (ma phrase s’affiche bien avec tout ce que je veux dedans), sauf que cela influe sur le total des réponses calculé au début : ainsi, si je ne suis pas connectée, un total de 20 places / 20 dispo est affiché ; si je suis connectée, il n’y a que ma réponse qui est comptabilisée.
Je tourne en rond... et çà m’énerve. Merci pour votre aide ;-)
Bonjour,
Il faut sans doute faire deux boucles imbriquées. Le calcul des places restantes se faisant sur une boucle (spip_auteurs spip_evenements_participants)id_evenement’- ’reponse=’oui’
(sans id_auteur = #SESSIONid_auteur)
Avec les balise de code c’’est mieux :
Il faut sans doute faire deux boucles imbriquées. Le calcul des places restantes se faisant sur une boucle
(spip_auteurs spip_evenements_participants){id_evenement}{'- '}{reponse='oui'}
(sans id_auteur = #SESSION{id_auteur})
Ce code a l’air parfait pour ce que je cherche, il me manque juste un petit détail qui a son importance :
dans quel squelette met-on ce code ? Dans article.html ? Dans un squelette du dossier formulaire d’Agenda 2.0 ? Dans un autre ?
Merci d’avance.
Pour ma part, j’ai une rubrique n°27 consacrée à l’agenda de la commune. Chaque événement étant rattaché à un article, le code est inséré dans le squelette article renommé pour l’occasion article-27.html.
Répondre à ce message
J’ai réussi à faire ce que je voulais, à savoir :
- pour tous les visiteurs, identifiés ou non sur le site : on affiche le nombre de places retenues/dispos
- si le visiteur de la page n’est pas connecté, une invitation à se connecter ou à s’inscrire
- si le visiteur est connecté, on lui propose le formulaire d’inscription à l’événement + le lien pour se déconnecter.
(et s’il a déjà répondu au formulaire, on lui rappelle sa réponse pour qu’il la modifie s’il le souhaite)
- si le visiteur est en plus l’administrateur, on lui en donne plus : le lien pour gérer les inscriptions dans l’espace privé.
Je ne voulais pas afficher la liste des inscrits et leur réponse mais comme ces boucles sont indispensables pour le calcul des places, j’ai rusé en laissant leur contenu mais en l’écrivant si petit et en blanc sur blanc pour que cela ne soit pas visible. Mais çà marche aussi parfaitement avec le code d’Artlogic..
Par contre, comme la balise #REPONSE renvoie des valeurs peu parlantes, j’ai fait une moulinette pour rendre les réponses plus claires.
Voilà donc ce que çà donne (mais il y a sûrement des maladresses) :
Merci pour cette contribution.
De rien ;-) ... surtout que mon message « Il n’y a pas d’inscription ouverte pour cet événement. » est mal placé : il faudrait peut-être que je le place dans participer_evenement.php (vers la ligne 13), mais mes compétences en php sont trop faibles...
Merci pour cette contribution intéressante.
Soit... Mais n’est-il pas plus simple de ne rien afficher du tout alors ?
Donc remplacer
par plutôt
qui pourrait même s’écrire encore plus facilement (je crois à partir de SPIP 2.0, mais je n’ai pas testé avant de le proposer) :
<BOUCLE_personnes_inscrites(spip_auteurs spip_evenements_participants){id_evenement}{reponse='oui'} />
J’oubliais... :
_personnes_inscrites2
et_personnes_inscrites3
n’étant pas utilisées ici, on peut simplement les virer : ça ne fera pas de différence dans la page, mais allègera le code (fichier moins long et plus facile à relire/maintenir) et le traitement (pas de requêtes pénalisantes car inutiles)#NB_INSCRITS
—dans une boucle(EVENEMENTS)
et— qui remplace bien[(#PLACES|moins{#TOTAL_BOUCLE})]
(et du coup, plus besoin d’une boucle sur la table auxiliaire pour obtenir l’information... Finalement, il se pourrait que la « noisette » d’Artlogic —permettant de lister les réponses/participants— ne serve pas ici...)Très juste ! la ligne
<li class="invisible">[#NOM]</li>
est inutile. J’aurais dû essayer !!Par contre, je viens de tester la syntaxe suivante
<BOUCLE_personnes_inscrites(spip_auteurs spip_evenements_participants){id_evenement}{reponse='oui'} ></BOUCLE_personnes_inscrites>
et elle ne fonctionne pas.J’ajoute que pour le message « Il n’y a pas d’inscription ouverte pour cet événement », je l’ai placé en tout début, avant la boucle
<B_personnes_inscrites>
Çà donne :
Enfin, je conserve pour ma part uniquement les réponses « j’y serai » et « je n’y serai pas », j’ai donc viré tout ce qui concerne le « peut-être » qui m’est inutile.
Je vais regarder tes autres pistes (notamment la balise
#NB_INSCRITS
! ce serait une belle découverte !! Merci à toi ;-)Pour ton point n°3, je me retrouve confrontée à un pb que je mets toujours une plombe à résoudre : comment envoyer au formulaire participer_evenement à la fois #ID_EVENEMENT et #REPONSE...
Car le formulaire est déjà prêt pour çà :
<input type='radio' class='radio' name='reponse' id='reponse_oui' value="oui"[ (#ENV{reponse}|=={oui}|oui)checked="checked"] />
Il est appelé actuellement ainsi :
(#FORMULAIRE_PARTICIPER_EVENEMENT{#ID_EVENEMENT})
Est-ce que çà, c’est admis ?
(#FORMULAIRE_PARTICIPER_EVENEMENT{#ID_EVENEMENT,#REPONSE})
Attention à ne pas confondre « l’ouverture des inscriptions en ligne » avec le nombre de places disponibles. Le premier (cela correspond à la case à cocher « Inscription en ligne » juste avant d’indiquer le nombre de places ...si elles sont limitées) est utilisé par le formulaire pour déterminer s’il doit s’afficher ou pas (on peut bien renseigner le nombre de places sans pour autant que le formulaire ne s’affiche parce-qu’on n’a pas autorisé/activé les inscriptions en ligne)
Si on tient à répéter/préciser cette information, le test devra
#INSCRIPTION
à la place de#PLACES|<={0}
. Et dans ce cas, ceci est affiché quand le formulaire ne s’affiche pas (déplacer donc ces lignes en conséquence)Pour l’appel du formulaire, on peut lui passer des paramètres : la syntaxte est la même que pour les modèles (section : « Un emploi possible dans les squelettes »)... ; donc :
[(#FORMULAIRE_PARTICIPER_EVENEMENT{id_evenement=#ID_EVENEMENT}{reponse=#REPONSE})]
ou[(#FORMULAIRE_PARTICIPER_EVENEMENT{id_evenement=#ID_EVENEMENT,reponse=#REPONSE})]
devrait fonctionner (à condition de le placer dans la boucle « _reponse(spip_evenements_participants) » (sinon on ne peut pas lui passer la valeur de #RETOUR...)Mais, cela ne fonctionne hélas pas car le formulaire ne prend pas en compte les autres paramètres (d’ailleurs, il devrait récupérer la réponse sans intervention dans sa fonction Charger, mais ce n’est pas le cas...) Pire, lorsqu’on valide une réponse, on a bien le message qu’elle a été prise en compte, mais elle n’est pas sélectionnée dans le formulaire... ce qui montre qu’il y a un problème intrinsèque —ou un bogue ?)
Oui, il doit y avoir un pb : quelle que soit la syntaxe que j’utilise dans tes propositions pour appeler le formulaire (et en ayant effectivement déplacé l’appel du formulaire dans la boucle _reponse), le formulaire disparait totalement. Et la valeur de réponse ne passe pas au formulaire.
ne marchent pas.
Par contre, avec cette syntaxe, le formulaire reste affiché :
[(#FORMULAIRE_PARTICIPER_EVENEMENT{#ID_EVENEMENT,#REPONSE})]
Bien vu pour mon test sur les places !! c’est effectivement sur
#INSCRIPTION
que çà doit se jouer ! Pff...En regardant le <tt-..php associé, je constate que le paramètre s’appelle
id
et nonid_evenement
; mais ni[(#FORMULAIRE_PARTICIPER_EVENEMENT{id=#ID_EVENEMENT}{reponse=#REPONSE})]
ni[(#FORMULAIRE_PARTICIPER_EVENEMENT{id=#ID_EVENEMENT,reponse=#REPONSE})]
ne fonctionnent non plus... Quant à[(#FORMULAIRE_PARTICIPER_EVENEMENT{#ID_EVENEMENT,#REPONSE})]
c’est exactement pareil que[(#FORMULAIRE_PARTICIPER_EVENEMENT{#ID_EVENEMENT})]
: seul le premier argument (id_evenement) est pris en compte (à juste titre car le forulaire n’a pas à être chargé avec une réponse prédéterminée...), ce qui confirme la non prise en compte des autres paramètres...J’ai regardé de plus près (ou plutôt avec l’esprit plus clair) la fonction de chargement ce matin. Verdict : il n’y a pas de bogue (dans le sens où ce n’est pas une erreur de programmation et que ça fait bien ce qui est prévu) mais il y a quand même un bogue (dans le sens d’un problème de logique de conception) : la réponse est récupérée seulement dans le cas de traitement des places limitées....
Correction en route...
Voui... et bien, après moultes essais, je n’arrive pas non plus à passer le paramètre Réponse. Et pourtant, j’ai déjà été confrontée à çà dernièrement. J’avoue que je ne vois pas de piste, je te laisse donc parcourir ta route ;-) Merci... au fait...
Comme je le disais, il ne devrait pas être nécessaire de passer la réponse au formulaire (qui n’a besoin que de la valeur de l’id_evenement) ; et le souci est maintenant corrigé (dans le dernier zip)
Merveilleux !! Je teste ce soir ! Youpi !
Juste un petit mot, gilcot, pour confirmer que ta modif dans participer_evenement.php a fonctionné ! Plus besoin d’un long discours pour indiquer la réponse pré-enregistrée.
Merciiii !!
Cerise sur le gâteau en modifiant le HTML ainsi :
<input type="submit" class="submit" value="[(#ENV{reponse}|?{<:bouton_modifier:>,<:bouton_enregistrer:>})]" />
(je ne commite pas cela parce-que je n’ai pas testé encore tous les cas particulierrs)
Çà marche pour moi, merci pour cet ajout !
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 :
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.
Suivre les commentaires : |