diff --git a/app/components/conditions/ineligibilite_rules_component/ineligibilite_rules_component.html.haml b/app/components/conditions/ineligibilite_rules_component/ineligibilite_rules_component.html.haml index 7cbbca2fa..a012dc339 100644 --- a/app/components/conditions/ineligibilite_rules_component/ineligibilite_rules_component.html.haml +++ b/app/components/conditions/ineligibilite_rules_component/ineligibilite_rules_component.html.haml @@ -44,6 +44,6 @@ .fr-col-12 %ul.fr-btns-group.fr-btns-group--inline-md %li - = link_to "Annuler et revenir à l'écran de gestion", admin_procedure_path(id: @draft_revision.procedure), class: 'fr-btn fr-btn--secondary', data: { confirm: 'Si vous avez fait des modifications elles ne seront pas sauvegardées.'} + = link_to "Annuler et revenir à l’écran de gestion", admin_procedure_path(id: @draft_revision.procedure), class: 'fr-btn fr-btn--secondary', data: { confirm: 'Si vous avez fait des modifications elles ne seront pas sauvegardées.'} %li = button_tag "Enregistrer", class: "fr-btn", form: 'ineligibilite_form' diff --git a/app/components/procedure/fixed_footer_component/fixed_footer_component.html.fr.yml b/app/components/procedure/fixed_footer_component/fixed_footer_component.html.fr.yml index 0c67a97f1..70525d005 100644 --- a/app/components/procedure/fixed_footer_component/fixed_footer_component.html.fr.yml +++ b/app/components/procedure/fixed_footer_component/fixed_footer_component.html.fr.yml @@ -1,4 +1,4 @@ fr: - back: Revenir à l'écran de gestion + back: Revenir à l’écran de gestion submit: Enregistrer - cancel: Annuler et revenir à l'écran de gestion + cancel: Annuler et revenir à l’écran de gestion diff --git a/app/components/procedure/groupes_management_component/groupes_management_component.html.haml b/app/components/procedure/groupes_management_component/groupes_management_component.html.haml index 3ae0bb3f9..7548d6da0 100644 --- a/app/components/procedure/groupes_management_component/groupes_management_component.html.haml +++ b/app/components/procedure/groupes_management_component/groupes_management_component.html.haml @@ -50,3 +50,6 @@ = select_tag :defaut_groupe_instructeur_id, options_for_select(@procedure.groupe_instructeurs.pluck(:label, :id), selected: @procedure.defaut_groupe_instructeur.id), class: 'fr-select' + +- if flash[:routing_mode] == 'custom' + = render partial: 'custom_routing_modal' diff --git a/app/components/procedure/instructeurs_menu_component/instructeurs_menu_component.html.haml b/app/components/procedure/instructeurs_menu_component/instructeurs_menu_component.html.haml index df138518d..ec0588d15 100644 --- a/app/components/procedure/instructeurs_menu_component/instructeurs_menu_component.html.haml +++ b/app/components/procedure/instructeurs_menu_component/instructeurs_menu_component.html.haml @@ -1,6 +1,13 @@ .container .fr-grid-row .fr-col.fr-col-12.fr-col-md-3 - = render(Dsfr::SidemenuComponent.new) do |component| - - component.with_links(links) + - if params[:state] != 'choix' + = render(Dsfr::SidemenuComponent.new) do |component| + - component.with_links(links) + - else + .fr-container + %ul.fr-btns-group.fr-btns-group--inline-md.fr-ml-0 + %li + = link_to options_admin_procedure_groupe_instructeurs_path, class: 'fr-link fr-icon-arrow-left-line fr-link--icon-left fr-mb-2w fr-mr-2w' do + Revenir aux options .fr-col= content diff --git a/app/components/procedure/instructeurs_options_component/instructeurs_options_component.html.haml b/app/components/procedure/instructeurs_options_component/instructeurs_options_component.html.haml index 4b281219a..e4084a801 100644 --- a/app/components/procedure/instructeurs_options_component/instructeurs_options_component.html.haml +++ b/app/components/procedure/instructeurs_options_component/instructeurs_options_component.html.haml @@ -54,15 +54,27 @@ data: { controller: 'enable-submit-if-checked' }, url: wizard_admin_procedure_groupe_instructeurs_path(@procedure) do |f| - %div{ data: { 'action': "click->enable-submit-if-checked#click" } } + %h1 Configuration du routage + %h2 Choix du type de routage + + .card.fr-pb-0{ data: { 'action': "click->enable-submit-if-checked#click" } } + %p.fr-mb-0 Routage = render Dsfr::RadioButtonListComponent.new(form: f, target: :state, buttons: [ { label: 'À partir d’un champ', value: 'routage_simple', hint: 'crée les groupes en fonction d’un champ du formulaire' } , - { label: 'Avancé', value: 'routage_custom', hint: 'libre à vous de créer et de configurer les groupes' }]) do - %h1 Choix du type de routage + { label: 'Avancé', value: 'custom_routing', hint: 'libre à vous de créer et de configurer les groupes' }]) - %ul.fr-btns-group.fr-btns-group--inline-sm - %li - = link_to 'Retour', options_admin_procedure_groupe_instructeurs_path(@procedure), class: 'fr-btn fr-btn--secondary' - %li - %button.fr-btn{ disabled: true, data: { 'enable-submit-if-checked-target': 'submit' } } Continuer + + %ul.fr-btns-group.fr-btns-group--inline-sm + %li + = link_to 'Annuler', options_admin_procedure_groupe_instructeurs_path(@procedure), class: 'fr-btn fr-btn--secondary' + %li + %button.fr-btn{ disabled: true, data: { 'enable-submit-if-checked-target': 'submit' } } Continuer +- if params[:state] != 'choix' + .padded-fixed-footer + .fixed-footer + .fr-container + %ul.fr-btns-group.fr-btns-group--inline-md.fr-ml-0 + %li + = link_to admin_procedure_path(id: @procedure), class: 'fr-link fr-icon-arrow-left-line fr-link--icon-left fr-mb-2w fr-mr-2w' do + Revenir à l’écran de gestion diff --git a/app/controllers/administrateurs/groupe_instructeurs_controller.rb b/app/controllers/administrateurs/groupe_instructeurs_controller.rb index 241e0929b..607749f0c 100644 --- a/app/controllers/administrateurs/groupe_instructeurs_controller.rb +++ b/app/controllers/administrateurs/groupe_instructeurs_controller.rb @@ -27,7 +27,7 @@ module Administrateurs def options @procedure = procedure if params[:state] == 'choix' && @procedure.active_revision.simple_routable_types_de_champ.none? - configurate_routage_custom + configurate_custom_routing end end @@ -93,20 +93,22 @@ module Administrateurs end def wizard - if params[:choice][:state] == 'routage_custom' - configurate_routage_custom + if params[:choice][:state] == 'custom_routing' + configurate_custom_routing elsif params[:choice][:state] == 'routage_simple' redirect_to simple_routing_admin_procedure_groupe_instructeurs_path end end - def configurate_routage_custom - new_label = procedure.defaut_groupe_instructeur.label + ' bis' + def configurate_custom_routing + procedure.defaut_groupe_instructeur.update!(label: 'Groupe 1 (à renommer et configurer)') procedure.groupe_instructeurs - .create({ label: new_label, instructeurs: [current_administrateur.instructeur] }) + .create({ label: 'Groupe 2 (à renommer et configurer)', instructeurs: [current_administrateur.instructeur] }) procedure.toggle_routing + flash[:routing_mode] = 'custom' + redirect_to admin_procedure_groupe_instructeurs_path(procedure) end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 3fdc45795..a4dc44d5d 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -44,6 +44,8 @@ module ApplicationHelper class_names << 'alert-success' when 'alert', 'error' class_names << 'alert-danger' + when 'routing_mode' + class_names << 'hidden' end if sticky class_names << 'sticky' diff --git a/app/views/administrateurs/groupe_instructeurs/_custom_routing_modal.html.haml b/app/views/administrateurs/groupe_instructeurs/_custom_routing_modal.html.haml new file mode 100644 index 000000000..cc503f514 --- /dev/null +++ b/app/views/administrateurs/groupe_instructeurs/_custom_routing_modal.html.haml @@ -0,0 +1,20 @@ +%dialog{ aria: { labelledby: "fr-modal-title-modal-1" }, role: "dialog", id: "routing-mode-modal", class: "fr-modal fr-modal--opened" } + .fr-container.fr-container--fluid.fr-container-md + .fr-grid-row.fr-grid-row--center + .fr-col-12.fr-col-md-8.fr-col-lg-6 + .fr-modal__body + .fr-modal__header + %button.fr-btn.fr-btn--close{ title: "Fermer la fenêtre modale", aria: { controls: "routing-mode-modal" } } Fermer + .fr-modal__content + %h1#fr-modal-title-modal-1.fr-modal__title + %span.fr-icon-arrow-right-line.fr-icon--lg + Routage avancé + .fr-alert.fr-alert--success + %h2.fr-alert__title + Deux groupes par défaut ont été créés + %p + Vous devez maintenant les renommer et leur attribuer des règles de routage à partir du ou des champs « routables » de votre formulaire, soit des champs de type : + %ul + - TypeDeChamp.humanized_conditionable_types_by_category.each do |category| + %li + = category.join(', ') diff --git a/app/views/administrateurs/procedures/annotations.html.haml b/app/views/administrateurs/procedures/annotations.html.haml index 579e9cac1..a8eb33b08 100644 --- a/app/views/administrateurs/procedures/annotations.html.haml +++ b/app/views/administrateurs/procedures/annotations.html.haml @@ -20,7 +20,7 @@ .fr-container %ul.fr-btns-group.fr-btns-group--inline-md.fr-ml-0 %li - = link_to "Revenir à l'écran de gestion", admin_procedure_path(@procedure), title: t('continue_annotations', scope: [:layouts, :breadcrumb]), class: 'fr-link fr-icon-arrow-left-line fr-link--icon-left fr-mb-2w fr-mr-2w' + = link_to "Revenir à l’écran de gestion", admin_procedure_path(@procedure), title: t('continue_annotations', scope: [:layouts, :breadcrumb]), class: 'fr-link fr-icon-arrow-left-line fr-link--icon-left fr-mb-2w fr-mr-2w' - if @procedure.draft_revision.revision_types_de_champ_private.count > 0 %li = link_to t('preview_annotations', scope: [:layouts, :breadcrumb]), apercu_admin_procedure_path(@procedure, params: {tab: 'annotations-privees'}), target: "_blank", rel: "noopener", class: 'fr-link fr-mb-2w' diff --git a/app/views/administrateurs/procedures/champs.html.haml b/app/views/administrateurs/procedures/champs.html.haml index e2a33167f..7fa005e67 100644 --- a/app/views/administrateurs/procedures/champs.html.haml +++ b/app/views/administrateurs/procedures/champs.html.haml @@ -26,7 +26,7 @@ %ul.fr-btns-group.fr-btns-group--inline-md.fr-ml-0 %li = link_to admin_procedure_path(id: @procedure), class: 'fr-link fr-icon-arrow-left-line fr-link--icon-left fr-mb-2w fr-mr-2w' do - Revenir à l'écran de gestion + Revenir à l’écran de gestion - if @procedure.draft_revision.revision_types_de_champ_public.count > 0 %li = link_to t('preview', scope: [:layouts, :breadcrumb]), apercu_admin_procedure_path(@procedure), target: "_blank", rel: "noopener", class: 'fr-link fr-mb-2w' diff --git a/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb b/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb index 668bc1873..abf329856 100644 --- a/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb +++ b/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb @@ -1058,11 +1058,11 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do let!(:drop_down_tdc) { procedure4.draft_revision.types_de_champ.first } - before { patch :wizard, params: { procedure_id: procedure4.id, choice: { state: 'routage_custom' } } } + before { patch :wizard, params: { procedure_id: procedure4.id, choice: { state: 'custom_routing' } } } it do expect(response).to redirect_to(admin_procedure_groupe_instructeurs_path(procedure4)) - expect(procedure4.groupe_instructeurs.pluck(:label)).to match_array(['défaut', 'défaut bis']) + expect(procedure4.groupe_instructeurs.pluck(:label)).to match_array(['Groupe 1 (à renommer et configurer)', 'Groupe 2 (à renommer et configurer)']) expect(procedure4.reload.routing_enabled).to be_truthy end end diff --git a/spec/system/administrateurs/procedure_ineligibilite_spec.rb b/spec/system/administrateurs/procedure_ineligibilite_spec.rb index e20ff40af..541822101 100644 --- a/spec/system/administrateurs/procedure_ineligibilite_spec.rb +++ b/spec/system/administrateurs/procedure_ineligibilite_spec.rb @@ -24,7 +24,7 @@ describe 'Administrateurs can edit procedures', js: true do click_on 'Ajouter un champ' select "Oui/Non" fill_in "Libellé du champ", with: "Un champ oui non" - click_on "Revenir à l'écran de gestion" + click_on "Revenir à l’écran de gestion" procedure.reload first_tdc = procedure.draft_revision.types_de_champ.first # back to procedure dashboard, explain you can set it up now diff --git a/spec/system/routing/rules_full_scenario_spec.rb b/spec/system/routing/rules_full_scenario_spec.rb index ee4620705..b38bbba68 100644 --- a/spec/system/routing/rules_full_scenario_spec.rb +++ b/spec/system/routing/rules_full_scenario_spec.rb @@ -53,8 +53,13 @@ describe 'The routing with rules', js: true do expect(page).to have_text('Gestion des groupes') expect(page).to have_text('règle invalide') + # close modal + expect(page).to have_selector("#routing-mode-modal", visible: true) + within("#routing-mode-modal") { click_on "Fermer" } + expect(page).to have_selector("#routing-mode-modal", visible: false) + # update defaut groupe - click_on 'défaut' + click_on 'Groupe 1 (à renommer et configurer)' expect(page).to have_text('Paramètres du groupe') fill_in 'Nom du groupe', with: 'littéraire' click_on 'Renommer' @@ -83,7 +88,7 @@ describe 'The routing with rules', js: true do # # add scientifique groupe click_on '3 groupes' - click_on 'défaut bis' + click_on 'Groupe 2 (à renommer et configurer)' fill_in 'Nom du groupe', with: 'scientifique' click_on 'Renommer' expect(page).to have_text('Le nom est à présent « scientifique ». ')