Projet

Général

Profil

Anomalie #4111

Quand un formulaire est posté, donner accès aux retours dans l'environnement globale des pages

Ajouté par RastaPopoulos ♥ il y a 7 mois. Mis à jour il y a 7 mois.

Statut:
Nouveau
Priorité:
Normal
Assigné à:
Catégorie:
accessibilité
Version cible:
Début:
12/03/2018
Echéance:
% réalisé:

0%

Resolution:
Navigateur:

Description

Un problème d'accessibilité des formulaires signalé par Julich sur le forum de Formidable :
https://contrib.spip.net/Formidable-le-generateur-de-formulaires?debut_comments-list=@493531#forum493531

Une norme d'accessibilité est de modifier notamment le <title> des pages lorsqu'un formulaire est posté, afin de signaler dès le tout début s'il tout s'est bien passé ou s'il y a eu une erreur (encore plus important). C'est décrit par exemple ici :
https://www.accede-web.com/notices/html-css-javascript/7-formulaires/7-6-mettre-a-jour-title-page-recharge-erreur-confirmation/

Or tous nos formulaires CVT sont cloisonnés. On n'a accès aux informations du formulaire qu'à l'intérieur de celui-ici.

Il faudrait modifier la manière dont les CVT fonctionne, ou les balises dynamiques, ou je ne sais pas quoi d'autres, afin que les retours d'un formulaire soit disponible dans le contexte de TOUTE la page, à tous les niveaux. Enfin à la racine (après on passe le env ou pas, chacun fait ce qu'il veut). Pour pouvoir notamment personnaliser les <title>, même si ça peut aussi être pour d'autres utilisations. Un seul formulaire peut être posté à la fois, donc jamais de confusion possible !

Et cela vaut pour les retours de traiter() mais aussi pour quand ça s'arrête dans verifier() évidemment.

(Je mets Cédric car ça touche au fonctionnement interne de tout le mécanisme CVT.)

Historique

#1 Mis à jour par cedric - il y a 7 mois

J'étais sûr qu'il y avait déjà un ticket là-dessus mais je le retrouve pas.

Donc c'est une issue connue et je pensais plutôt à quelque chose de plus directif, à savoir modifier directement le title pour prendre en compte le message d'erreur soit au niveau de affichage_final soit en injectant du JS qui le fera quand on est en ajax.

Car l'injection des retours du formulaire dans le env pose un problème de cohérence sur l'affichage du reste de la page entre le cas où on est en ajax et le cas où on ne l'est pas (par construction on a plus de garantie que le reste de la page est identique, donc potentiellement le post AJAX perd des fonctionnalités)

Donc cela ne traiterait que partiellement le problème, c'est à dire quand on est pas en ajax, et uniquement si le squelette a pris en compte cette contrainte, ce qui est assez aléatoire.
En traitant la problématique dans le core "erreur => on modifie le title", on permet que tous les sites bénéficient directement de la feature et du gain en accessibilité.

On peut envisager d'avoir une fonction surchargeable qui est appelée pour déterminer ce qui est injecté dans le title à partir du retour du formulaire, par défaut le message d'erreur direct, ce qui permettra éventuellement d'avoir un contrôle plus fin là dessus en cas de requis accessibilité.

#2 Mis à jour par RastaPopoulos ♥ il y a 7 mois

Je suis d'accord avec toi, c'est plus simple et au final plus complet pour le problème de départ, de se focaliser uniquement sur la modification du title.

(En revanche, avoir accès aux informations du formulaire "en cours", puisqu'il n'y en a toujours qu'un seul en cours à la fois, dans l'ensemble de la page, peut aussi servir à d'autres besoins. Mais peut-être que ça va aussi avec une refonte du mécanisme centrale, afin d'avoir à chaque étape l'ensemble des informations, et de transporter ce tableau complet à chaque étape, et non comme actuellement d'avoir uniquement les infos de la seule étape où on est. Je digresse, quoique.)

Formats disponibles : Atom PDF