Merge pull request #10020 from mfo/US/a11y-invite-with-nice-feedback

ETQ usager utilisant un lecteur d'écran: l'envoie d'une invitation est confusant (le form reste rempli, le message de confirmation n'est pas lu)
This commit is contained in:
mfo 2024-02-22 06:02:26 +00:00 committed by GitHub
commit aaf5f08f25
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 48 additions and 29 deletions

View file

@ -15,7 +15,7 @@ class InvitesController < ApplicationController
if invite.valid?
# The notification is sent through an after commit hook in order to avoir concurrency issues
flash.notice = "Une invitation a été envoyée à #{invite.email}."
flash.notice = t('views.invites.create.success', email: invite.email)
else
flash.alert = invite.errors.full_messages
end
@ -49,9 +49,9 @@ class InvitesController < ApplicationController
if invite.present?
@dossier = invite.dossier
invite.destroy!
flash.notice = "Lautorisation de #{invite.email} vient dêtre révoquée."
flash.notice = t('views.invites.destroy.success', email: invite.email)
else
flash.alert = "Vous ne pouvez pas révoquer cette autorisation"
flash.alert = t('views.invites.destroy.error')
end
respond_to do |format|

View file

@ -1,31 +1,35 @@
#invites-form.fr-p-2w
%h4.fr-h5= t('views.invites.form.modal_title')
%p.fr-highlight.fr-mb-3w= t('views.invites.form.modal_highlight')
%h5.fr-h6= t('views.invites.form.edit_dossier', count: invites.size)
- if invites.present?
#invite-list{ morphing ? { tabindex: "-1" } : {} }
%h4.fr-h6= t('views.invites.form.invite_to_participate')
%ul
- invites.each do |invite|
%li
= invite.email
%small{ 'data-turbo': 'true' }
= link_to t('views.invites.form.withdraw_permission'), invite_path(invite), data: { turbo_method: :delete, turbo_confirm: t('views.invites.form.want_to_withdraw_permission') }, class: "fr-btn fr-btn--sm fr-btn--tertiary-no-outline"
= link_to t('views.invites.form.withdraw_permission'), invite_path(invite), data: { turbo_method: :delete, turbo_confirm: t('views.invites.form.want_to_withdraw_permission', email: invite.email) }, class: "fr-btn fr-btn--sm fr-btn--tertiary-no-outline"
%p= t('views.invites.form.edit_dossier')
- if dossier.brouillon?
%p= t('views.invites.form.submit_dossier_yourself')
- else
%p= t('views.invites.form.invite_to_edit_line1')
%p= t('views.invites.form.invite_to_edit_line2')
= form_tag dossier_invites_path(dossier), data: { turbo: true, turbo_force: :server }, method: :post, aria: { labelledby: 'invite-form-legend' } do
%fieldset.fr-fieldset
%legend.fr-fieldset__legend#invite-form-legend
%h5.fr-h6= t('views.invites.form.title')
= form_tag dossier_invites_path(dossier), data: { turbo: true, turbo_force: :server }, method: :post do
.fr-input-group
= label_tag :invite_email, class: "fr-label" do
= t('views.invites.form.email')
%span.fr-hint-text= t('views.invites.form.email_hint')
= email_field_tag :invite_email, '', required: true, class: "fr-input"
.fr-fieldset__element
.fr-input-group
= label_tag :invite_email, class: "fr-label" do
= t('views.invites.form.email')
%span.fr-hint-text= t('views.invites.form.email_hint')
= email_field_tag :invite_email, '', required: true, class: "fr-input"
.fr-input-group
= label_tag :invite_message, t('views.invites.form.invite_message'), class: "fr-label"
= text_area_tag :invite_message, '', class: "fr-input"
.fr-fieldset__element
.fr-input-group
= label_tag :invite_message, t('views.invites.form.invite_message'), class: "fr-label"
= text_area_tag :invite_message, '', class: "fr-input"
= submit_tag t('views.invites.form.send_invitation'), class: 'fr-btn fr-btn--secondary'

View file

@ -1,4 +1,4 @@
#flash_messages
#flash_messages{ aria: { live: 'assertive' } }
- if flash.any?
#flash_message.center
- flash.each do |key, value|

View file

@ -310,20 +310,27 @@ en:
email_missing: "If you have not received our email (have you checked your spam ?), we can resend it."
resent: 'Resend the confirmation email'
invites:
create:
success: "One invitation has been sent to %{email}."
destroy:
success: "The permission given to %{email} had been revoked."
error: "You can't revoke this invitation"
dropdown:
invite_to_edit: Invite someone to edit this file
view_invited_people: "View invited people"
invite_to_view: "Invite someone to view this file"
form:
invite_to_edit_line1: You can invite someone to complete this file with you.
invite_to_edit_line2: This person will have the right to edit your file.
modal_title: Invite someone
modal_highlight: "Invited people can view and edit your file"
title: Invite someone
email: Email address
invite_message: Add a message to the person you invite (optional)
send_invitation: Send an invitation
invite_to_participate: "Invited people to participate in this file"
withdraw_permission: "Withdraw the permission"
want_to_withdraw_permission: "Would you like to withdraw the permission?"
edit_dossier: "These people can edit this file."
want_to_withdraw_permission: "Would you like to withdraw the permission of %{email}?"
edit_dossier:
one: "1 user can edit this file."
other: "%{count} users can edit this file."
submit_dossier_yourself: "You must submit the file yourself when it is complete."
pagination:
next: Next

View file

@ -306,21 +306,29 @@ fr:
email_missing: "Si vous navez pas reçu notre message (avez-vous vérifié les indésirables ?), nous pouvons vous le renvoyer."
resent: 'Renvoyer un email de confirmation'
invites:
create:
success: "Une invitation a été envoyée à %{email}."
destroy:
success: "Lautorisation de %{email} vient dêtre révoquée."
error: "Vous ne pouvez pas révoquer cette autorisation"
dropdown:
invite_to_edit: Inviter une personne à modifier ce dossier
view_invited_people: "Voir les personnes invitées"
invite_to_view: "Inviter une personne à consulter ce dossier"
form:
invite_to_edit_line1: Vous pouvez inviter quelquun à remplir ce dossier avec vous.
invite_to_edit_line2: Cette personne aura le droit de modifier votre dossier.
modal_title: "Gestion des invités"
modal_highlight: Les invités ont le droit de voir et modifier votre dossier.
title: Ajouter un invité
email: Adresse mail
email_hint: "Exemple : camilya.martin@exemple.fr"
invite_message: Ajouter un message à la personne invitée (optionnel)
send_invitation: Envoyer une invitation
invite_to_participate: "Personnes invitées à participer à ce dossier"
withdraw_permission: "Révoquer lautorisation"
want_to_withdraw_permission: "Souhaitez-vous supprimer lautorisation ?"
edit_dossier: "Ces personnes peuvent modifier ce dossier."
want_to_withdraw_permission: "Souhaitez-vous supprimer lautorisation de %{email} ?"
edit_dossier:
zero: "Aucun invité peut modifier ce dossier"
one: "1 invité peut modifier ce dossier"
other: "%{count} invités peuvent modifier ce dossier"
submit_dossier_yourself: "Une fois le dossier complet, vous devez le déposer vous-même."
pagination:
next: Suivant