Bonjour,
J'ai modifié le fichier participer_evenement.html du plugin Agenda (le fichier PHP du formulaire CVT #FORMULAIRE_PARTICIPER_EVENEMENT, qui affiche permet d'afficher le formulaire de participation à un événement) pour obliger les gens à être connectés (en temps que visiteurs ou auteurs) avant de répondre au formulaire afin d'éviter que les réponses des visiteurs anonymes ne soient enregistrées de manière collective sous l'auteur d'id = 0. La modification teste si $GLOBALS['visiteur_session']['id_auteur'] == 0 et le cas échéant affiche un message comme quoi la connexion est nécessaire.
J'ai également remarqué un petit souci : quand un utilisateur affiche la page du formulaire et qu'entre temps toutes les places sont prises, si celui-ci répond, aucun message ne l'avertit de l'indisponibilité des places et le formulaire disparait de l'affichage. Je pense avoir trouvé la solution à ce problème en rajoutant le test !$valeurs['reponse'] ligne 27.
Par ailleurs, je me demande si dans le cas où le nombre de places est limitée, il ne faudrait pas faire disparaitre le choix "peut-être". En effet, comme ce choix à un poids de 0.5 dans le calcul des places disponibles, et que le total des réponses "peut-être" est arrondi à l'entier supérieur, si on l'événement à une capacité de deux places et que trois personnes répondent "peut-être", plus personne ne peut répondre "oui", même les "peut-être" qui changeraient d'avis.
prise en compte des PEUT-ETRE en multipliant le tout par 2:
les OUI compte 2 et les PEUT-ETRE 1
on compare avec 2*$places et, $total ne servant qu’au test, pas de pb1. petite optimisation en ne calculant $valeurs[‹ reponse ›] que quand on en a besoin
corrections des tests:
formulaires_participer_evenement_charger_dist:
le formulaire n’est éditable que si l’auteur a deja repondu oui ou peut-etre
formulaires_participer_evenement_verifier_dist:
on ignore les cas où la nouvelle réponse est NON puisqu’on est sûr que moins de sièges seront nécessaires (était déjà fait)
on ignore les cas où la nouvelle réponse est identique à l’ancienne (était déjà fait mais beaucoup plus tard)
on différencie les cas où:
il ne reste aucune place:
en dehors de la nouvelle réponse NON et de réponses identiques, le seul cas autorisé restant est: transformation d’un OUI en PEUT-ETRE (-0,5 siège)
il ne reste qu’une demi-place:
toujours en dehors de la nouvelle réponse NON et de réponses identiques, le seul cas interdit restant est: transformation d’un NON en OUI (+1 siège)
les autres sont tous acceptables
Je n’ai pas pris en compte la modif concernant les utilisateurs connectés et je n’ai pas « commité » en attendant qu’on fasse plus de tests.
Nathan
Le 19 janv. 2010 à 11:05, Jean-Baptiste Pressac a écrit :
Bonjour,
J’ai modifié le fichier participer_evenement.html du plugin Agenda (le fichier PHP du formulaire CVT #FORMULAIRE_PARTICIPER_EVENEMENT, qui affiche permet d’afficher le formulaire de participation à un événement) pour obliger les gens à être connectés (en temps que visiteurs ou auteurs) avant de répondre au formulaire afin d’éviter que les réponses des visiteurs anonymes ne soient enregistrées de manière collective sous l’auteur d’id = 0. La modification teste si $GLOBALS[‹ visiteur_session ›][‹ id_auteur ›] == 0 et le cas échéant affiche un message comme quoi la connexion est nécessaire.
J’ai également remarqué un petit souci : quand un utilisateur affiche la page du formulaire et qu’entre temps toutes les places sont prises, si celui-ci répond, aucun message ne l’avertit de l’indisponibilité des places et le formulaire disparait de l’affichage. Je pense avoir trouvé la solution à ce problème en rajoutant le test !$valeurs[‹ reponse ›] ligne 27.
Par ailleurs, je me demande si dans le cas où le nombre de places est limitée, il ne faudrait pas faire disparaitre le choix « peut-être ». En effet, comme ce choix à un poids de 0.5 dans le calcul des places disponibles, et que le total des réponses « peut-être » est arrondi à l’entier supérieur, si on l’événement à une capacité de deux places et que trois personnes répondent « peut-être », plus personne ne peut répondre « oui », même les « peut-être » qui changeraient d’avis.