Merge pull request #10463 from demarches-simplifiees/reorganize-config-expert-ldu

[admin] améliorer configuration des experts invités
This commit is contained in:
Colin Darie 2024-06-06 07:16:49 +00:00 committed by GitHub
commit d9451aa64b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 100 additions and 86 deletions

View file

@ -1,5 +1,5 @@
class Dsfr::ToggleComponent < ApplicationComponent class Dsfr::ToggleComponent < ApplicationComponent
def initialize(form:, target:, title:, disabled: nil, hint: nil, toggle_labels: { checked: 'Activé', unchecked: 'Désactivé' }, opt: nil) def initialize(form:, target:, title:, disabled: nil, hint: nil, toggle_labels: { checked: 'Activé', unchecked: 'Désactivé' }, opt: nil, extra_class_names: nil)
@form = form @form = form
@target = target @target = target
@title = title @title = title
@ -7,7 +7,8 @@ class Dsfr::ToggleComponent < ApplicationComponent
@disabled = disabled @disabled = disabled
@toggle_labels = toggle_labels @toggle_labels = toggle_labels
@opt = opt @opt = opt
@extra_class_names = extra_class_names
end end
attr_reader :toggle_labels attr_reader :toggle_labels, :extra_class_names
end end

View file

@ -1,4 +1,4 @@
.fr-toggle.fr-toggle--label-left %div{ class: "fr-toggle fr-toggle--label-left #{extra_class_names}" }
= @form.check_box @target, class: 'fr-toggle__input', disabled: @disabled, = @form.check_box @target, class: 'fr-toggle__input', disabled: @disabled,
data: @opt data: @opt
= @form.label @target, = @form.label @target,

View file

@ -7,57 +7,63 @@
%h1.fr-h2 %h1.fr-h2
Avis externes Avis externes
.groupe-instructeur = render Dsfr::CalloutComponent.new(title: nil) do |c|
.card - c.with_body do
.card-title= t('.titles.allow_invite_experts') Pendant l'instruction d'un dossier, les instructeurs peuvent demander leur avis à un ou plusieurs experts.
%p= t('.descriptions.allow_invite_experts') %p
= link_to('Comment gérer les avis externes', t('.experts_doc.url'),
title: t('.experts_doc.title'),
**external_link_attributes)
%ul.fr-toggle__list
%li
= form_for @procedure, = form_for @procedure,
method: :put, method: :put,
url: allow_expert_review_admin_procedure_path(@procedure), url: allow_expert_review_admin_procedure_path(@procedure),
html: { class: 'form procedure-form__column--form no-background' } do |f| data: { controller: 'autosubmit', turbo: 'true' } do |f|
%label.toggle-switch{ data: { controller: 'autosubmit' } }
= f.check_box :allow_expert_review, class: 'toggle-switch-checkbox' = render Dsfr::ToggleComponent.new(form: f,
%span.toggle-switch-control.round target: :allow_expert_review,
%span.toggle-switch-label.on title: t('.titles.allow_invite_experts'),
%span.toggle-switch-label.off hint: t('.descriptions.allow_invite_experts'),
disabled: false,
extra_class_names: 'fr-toggle--border-bottom')
- if @procedure.allow_expert_review? - if @procedure.allow_expert_review?
.card %li
.card-title= t('.titles.manage_procedure_experts')
%p= t('.descriptions.manage_procedure_experts')
= form_for @procedure,
method: :put,
url: experts_require_administrateur_invitation_admin_procedure_path(@procedure),
html: { class: 'form procedure-form__column--form no-background' } do |f|
%label.toggle-switch{ data: { controller: 'autosubmit' } }
= f.check_box :experts_require_administrateur_invitation, class: 'toggle-switch-checkbox'
%span.toggle-switch-control.round
%span.toggle-switch-label.on
%span.toggle-switch-label.off
.card
.card-title= t('.titles.allow_expert_messaging')
%p= t('.descriptions.allow_expert_messaging')
= form_for @procedure, = form_for @procedure,
method: :put, method: :put,
url: allow_expert_messaging_admin_procedure_path(@procedure), url: allow_expert_messaging_admin_procedure_path(@procedure),
html: { class: 'form procedure-form__column--form no-background' } do |f| data: { controller: 'autosubmit', turbo: 'true' } do |f|
%label.toggle-switch{ data: { controller: 'autosubmit' } }
= f.check_box :allow_expert_messaging, class: 'toggle-switch-checkbox' = render Dsfr::ToggleComponent.new(form: f,
%span.toggle-switch-control.round target: :allow_expert_messaging,
%span.toggle-switch-label.on title: t('.titles.allow_expert_messaging'),
%span.toggle-switch-label.off hint: t('.descriptions.allow_expert_messaging'),
disabled: false,
extra_class_names: 'fr-toggle--border-bottom')
%li
= form_for @procedure,
method: :put,
url: experts_require_administrateur_invitation_admin_procedure_path(@procedure),
data: { controller: 'autosubmit', turbo: 'true' } do |f|
= render Dsfr::ToggleComponent.new(form: f,
target: :experts_require_administrateur_invitation,
title: t('.titles.manage_procedure_experts'),
hint: t('.descriptions.manage_procedure_experts'),
disabled: false)
- if @procedure.experts_require_administrateur_invitation? - if @procedure.experts_require_administrateur_invitation?
.card .card
.card-title Affecter des experts à la démarche
= form_for :experts_procedure, = form_for :experts_procedure,
url: admin_procedure_experts_path(@procedure), url: admin_procedure_experts_path(@procedure),
html: { class: 'form' } do |f| html: { class: 'form' } do |f|
.instructeur-wrapper .instructeur-wrapper
%p Pendant l'instruction dun dossier, les instructeurs peuvent demander leur avis à un ou plusieurs experts. %p#experts-emails Entrez les adresses emails des experts que vous souhaitez ajouter à la liste prédéfinie
%p#experts-emails Entrez les adresses email des experts que vous souhaitez affecter à cette démarche
= hidden_field_tag :emails, nil = hidden_field_tag :emails, nil
= react_component("ComboMultiple", = react_component("ComboMultiple",
options: [], options: [],
@ -68,15 +74,19 @@
describedby: 'experts-emails', describedby: 'experts-emails',
acceptNewValues: true) acceptNewValues: true)
= f.submit 'Affecter à la démarche', class: 'button primary send' = f.submit 'Ajouter à la liste', class: 'fr-btn'
- if @experts_procedure.present? - if @experts_procedure.present?
%table.table.mt-2 .fr-table.fr-table--no-caption.fr-table--layout-fixed.fr-mt-3w
%table
%thead %thead
%tr %tr
%th Liste des experts %th Liste des experts
%th Nombre davis %th Nombre davis
- if @procedure.experts_require_administrateur_invitation - if @procedure.experts_require_administrateur_invitation
%th Notifier des décisions sur les dossiers %th Notifier des décisions sur les dossiers
- if @procedure.experts_require_administrateur_invitation
%th Action
%tbody %tbody
- @experts_procedure.each do |expert_procedure| - @experts_procedure.each do |expert_procedure|
%tr %tr
@ -102,7 +112,7 @@
admin_procedure_expert_path(id: expert_procedure, procedure: @procedure), admin_procedure_expert_path(id: expert_procedure, procedure: @procedure),
method: :delete, method: :delete,
data: { confirm: "Êtes-vous sûr de vouloir révoquer l'expert « #{expert_procedure.expert.email} » de la démarche #{expert_procedure.procedure.libelle} ? Les instructeurs ne pourront plus lui demander davis" }, data: { confirm: "Êtes-vous sûr de vouloir révoquer l'expert « #{expert_procedure.expert.email} » de la démarche #{expert_procedure.procedure.libelle} ? Les instructeurs ne pourront plus lui demander davis" },
class: 'button' class: 'fr-btn fr-btn--secondary'
- else - else
.blank-tab .blank-tab
%h2.empty-text Aucun expert invité pour le moment. %h2.empty-text Aucun expert invité pour le moment.

View file

@ -6,8 +6,11 @@ fr:
main: Experts invités sur %{libelle} main: Experts invités sur %{libelle}
allow_invite_experts: "Autoriser les instructeurs à solliciter des experts invités" allow_invite_experts: "Autoriser les instructeurs à solliciter des experts invités"
allow_expert_messaging: "Autoriser les experts à accéder à la messagerie usager" allow_expert_messaging: "Autoriser les experts à accéder à la messagerie usager"
manage_procedure_experts: "Gérer les experts invités de la démarche" manage_procedure_experts: "Gérer les experts invités de la démarche avec une liste prédéfinie"
descriptions: descriptions:
allow_invite_experts : Lorsque cette fonctionnalité est active, les instructeurs peuvent solliciter les experts allow_invite_experts : Lorsque cette fonctionnalité est active, les instructeurs peuvent solliciter les experts
allow_expert_messaging: Lorsque cette fonctionnalité est active, les experts peuvent demander des informations aux usagers allow_expert_messaging: Lorsque cette fonctionnalité est active, les experts peuvent demander des informations aux usagers
manage_procedure_experts: Lorsque cette fonctionnalité est active, les instructeurs peuvent uniquement solliciter les experts de votre liste manage_procedure_experts: Lorsque cette fonctionnalité est active, les instructeurs peuvent uniquement solliciter les experts de votre liste
experts_doc:
title: Avis externes documentation
url: 'https://app.gitbook.com/o/-L7_aClyGhmMzzsqtO4_/s/-L7_aKvpAJdAIEfxHudA/tutoriels/tutoriel-administrateur/~/comments?context=post&node=ff7bd481c1994d6aa56817b7237b9e59#id-12.-la-gestion-des-avis-experts-invites-de-votre-demarche'

View file

@ -40,7 +40,7 @@ describe 'administrateurs/experts_procedures/index', type: :view do
context 'when the experts_require_administrateur_invitation is false' do context 'when the experts_require_administrateur_invitation is false' do
it 'authorize instructors to invite any expert' do it 'authorize instructors to invite any expert' do
expect(rendered).not_to have_content "Affecter des experts à la démarche" expect(rendered).not_to have_content "Entrez les adresses emails des experts que vous souhaitez ajouter à la liste prédéfinie"
end end
end end
@ -50,7 +50,7 @@ describe 'administrateurs/experts_procedures/index', type: :view do
subject subject
end end
it 'does not authorize instructors to invite any expert but only those presents in admin list' do it 'does not authorize instructors to invite any expert but only those presents in admin list' do
expect(rendered).to have_content "Affecter des experts à la démarche" expect(rendered).to have_content "Entrez les adresses emails des experts que vous souhaitez ajouter à la liste prédéfinie"
end end
end end
end end