Bonjour,
Je poste dans le forum accessibilité, j'espère que c'est le bon endroit. Ca concerne surtout la désactivation de javascript (qui peut aussi être volontaire pour des raisons de sécurité)
Je bute sur un conflit entre deux notions que je veux respecter à priorité égale: l'utilisation sans javascript et avoir un site Restful
Actuellement je suis Restful. Pour simplifier par rapport à ce qui concerne la question, je respecte bien la règle GET = consultation, POST = modification.
Je suis en train de spécifier le travail à fournir pour rendre mon application utilisable sans javascript.
Prenons une liste d'utilisateurs, avec en face de chaque utilisateur un ensemble d'actions possibles qu'on va limiter à 2: consulter et supprimer
Dugenou Marcel consulter supprimer
Mortadelle Raymonde consulter supprimer
...
La consultation est une action en lecture sur la ressource, j'ai donc un GET. Je m'en sors avec un anchor. Jusqu'ici c'est parfait.
La modification est par contre une action en écriture. Je dois faire un POST.
Comment ça marche actuellement? (avec javascript)
Et bien j'ai le code suivant pour l'action de suppression de l'utilisateur d'id 123:
La fonction postAction affecte l'action demandée au formulaire et soumet ce formulaire. Je récupère bien côté serveur une requête de type POST pour ma demande de suppression, c'est ce que j'attends.
Pour rendre ça accessible sans javascript, on pense tout de suite à remplacer l'anchor par un submit et mettre l'action là où elle doit se trouver, c'est à dire dans l'attribut action du form.
On se retrouverait avec autant de formulaires que d'actions. C'est un peu crado et très lourd si c'est multiplié par 100 mais au moins ça règlerait le problème en apparence.
Là où ça se complique... c'est que j'ai aussi des champs cachés dans mon formulaire principal (je passe sur leur signification) C'est à dire qu'en vrai j'ai:
Il est bien sûr inconcevable de recopier ce champ caché dans 100 formulaires.
Je ne peux pas non plus changer la gestion de ces champs cachés (par exemple en les mettant en session) car je veux qu'ils soient enregistrés si je bookmark ma page ou si je joue avec l'historique.
Je refuse bien sûr toute gestion en GET du type: <a href="/suppr/123/">Supprimer</a> (je veux rester Restful et je veux mes champs cachés)
Bref! Je suppose que ce n'est pas une problèmatique si rare et en fait je ne trouve pas de solution propre donc je m'en remets à vous: Quelles sont les best practices sur le sujet?
Merci pour votre aide!
Je poste dans le forum accessibilité, j'espère que c'est le bon endroit. Ca concerne surtout la désactivation de javascript (qui peut aussi être volontaire pour des raisons de sécurité)
Je bute sur un conflit entre deux notions que je veux respecter à priorité égale: l'utilisation sans javascript et avoir un site Restful
Actuellement je suis Restful. Pour simplifier par rapport à ce qui concerne la question, je respecte bien la règle GET = consultation, POST = modification.
Je suis en train de spécifier le travail à fournir pour rendre mon application utilisable sans javascript.
Prenons une liste d'utilisateurs, avec en face de chaque utilisateur un ensemble d'actions possibles qu'on va limiter à 2: consulter et supprimer
Dugenou Marcel consulter supprimer
Mortadelle Raymonde consulter supprimer
...
La consultation est une action en lecture sur la ressource, j'ai donc un GET. Je m'en sors avec un anchor. Jusqu'ici c'est parfait.
La modification est par contre une action en écriture. Je dois faire un POST.
Comment ça marche actuellement? (avec javascript)
Et bien j'ai le code suivant pour l'action de suppression de l'utilisateur d'id 123:
<form id="mainform" method="POST" action="">
...
<a href="#" onclick="postAction('/suppr/123/')">Supprimer</a>
...
</form>
La fonction postAction affecte l'action demandée au formulaire et soumet ce formulaire. Je récupère bien côté serveur une requête de type POST pour ma demande de suppression, c'est ce que j'attends.
Pour rendre ça accessible sans javascript, on pense tout de suite à remplacer l'anchor par un submit et mettre l'action là où elle doit se trouver, c'est à dire dans l'attribut action du form.
<form method="POST" action="/suppr/123/"><input type="submit" value="Supprimer" /></form>
On se retrouverait avec autant de formulaires que d'actions. C'est un peu crado et très lourd si c'est multiplié par 100 mais au moins ça règlerait le problème en apparence.
Là où ça se complique... c'est que j'ai aussi des champs cachés dans mon formulaire principal (je passe sur leur signification) C'est à dire qu'en vrai j'ai:
<form id="mainform" method="POST" action="">
<input type="hidden" name="unparametre" value="blabla" />
...
<a href="#" onclick="throwAction('/suppr/123/')">Supprimer</a>
...
</form>
Il est bien sûr inconcevable de recopier ce champ caché dans 100 formulaires.
Je ne peux pas non plus changer la gestion de ces champs cachés (par exemple en les mettant en session) car je veux qu'ils soient enregistrés si je bookmark ma page ou si je joue avec l'historique.
Je refuse bien sûr toute gestion en GET du type: <a href="/suppr/123/">Supprimer</a> (je veux rester Restful et je veux mes champs cachés)
Bref! Je suppose que ce n'est pas une problèmatique si rare et en fait je ne trouve pas de solution propre donc je m'en remets à vous: Quelles sont les best practices sur le sujet?
Merci pour votre aide!