update wording and cards order

This commit is contained in:
Eric Leroy-Terquem 2022-10-17 11:01:55 +02:00
parent b419c48262
commit 63ae328bee
10 changed files with 73 additions and 85 deletions

View file

@ -15,13 +15,8 @@ module Administrateurs
@procedure = procedure
@groupes_instructeurs = paginated_groupe_instructeurs
if procedure.routee?
@instructeurs = []
@available_instructeur_emails = []
else
@instructeurs = paginated_instructeurs
@available_instructeur_emails = available_instructeur_emails
end
@instructeurs = paginated_instructeurs
@available_instructeur_emails = available_instructeur_emails
end
def show
@ -37,8 +32,9 @@ module Administrateurs
.new({ instructeurs: [current_administrateur.instructeur] }.merge(groupe_instructeur_params))
if @groupe_instructeur.save
routing_notice = " et le routage a été activé" if procedure.groupe_instructeurs.actif.size == 2
redirect_to admin_procedure_groupe_instructeur_path(procedure, @groupe_instructeur),
notice: "Le groupe dinstructeurs « #{@groupe_instructeur.label} » a été créé."
notice: "Le groupe dinstructeurs « #{@groupe_instructeur.label} » a été créé#{routing_notice}."
else
@procedure = procedure
@instructeurs = paginated_instructeurs
@ -60,7 +56,7 @@ module Administrateurs
@instructeurs = paginated_instructeurs
@available_instructeur_emails = available_instructeur_emails
flash[:alert] = "le nom « #{@groupe_instructeur.label} » est déjà pris par un autre groupe."
flash[:alert] = @groupe_instructeur.errors.values.join('<br>')
render :show
end
end
@ -76,9 +72,9 @@ module Administrateurs
@groupe_instructeur.destroy!
if procedure.groupe_instructeurs.actif.count == 1
procedure.update!(routing_enabled: false)
routing_notice = " et le routage a été désactivé"
end
routing_notice = "et le routage a été désactivé" if procedure.groupe_instructeurs.size == 1
flash[:notice] = "le groupe « #{@groupe_instructeur.label} » a été supprimé #{routing_notice}."
flash[:notice] = "le groupe « #{@groupe_instructeur.label} » a été supprimé#{routing_notice}."
end
redirect_to admin_procedure_groupe_instructeurs_path(procedure)
end

View file

@ -20,6 +20,7 @@ class GroupeInstructeur < ApplicationRecord
validates :label, presence: { message: 'doit être renseigné' }, allow_nil: false
validates :label, uniqueness: { scope: :procedure, message: 'existe déjà' }
validates :closed, acceptance: { accept: [false], message: "Modification impossible : il doit y avoir au moins un groupe instructeur actif sur chaque procédure" }, if: -> { self.procedure.groupe_instructeurs.actif.one? }
before_validation -> { label&.strip! }
after_create :toggle_routing

View file

@ -13,4 +13,4 @@
= f.check_box :closed
%br
= f.submit 'Valider', class: 'button primary send'
= f.submit 'Modifier le groupe', class: 'button primary send'

View file

@ -1,15 +1,14 @@
- groupe_instructeurs_count = procedure.groupe_instructeurs.count
.card
= form_for procedure,
url: { action: :update_routing_criteria_name },
html: { class: 'form' } do |f|
- if groupes_instructeurs.many?
.card
= form_for procedure,
url: { action: :update_routing_criteria_name },
html: { class: 'form' } do |f|
= f.label :routing_criteria_name do
= t('.routing.title')
%p.notice
= t('.routing.notice')
= f.text_field :routing_criteria_name, placeholder: t('.add_a_group.placeholder'), required: true
= f.submit t('.button.rename'), class: 'button primary send'
= f.label :routing_criteria_name do
= t('.routing.title')
%p.notice
= f.text_field :routing_criteria_name, required: true
= f.submit t('.button.rename'), class: 'button primary send'
.card
.card-title
@ -18,9 +17,10 @@
= form_for :groupe_instructeur, html: { class: 'form' } do |f|
= f.label :label do
= t('.add_a_group.title')
%p.notice
= t('.add_a_group.notice', routing_criteria_name: procedure.routing_criteria_name)
= f.text_field :label, placeholder: t('.add_a_group.placeholder'), required: true
- if groupes_instructeurs.many?
%p.notice
= t('.add_a_group.notice', routing_criteria_name: procedure.routing_criteria_name)
= f.text_field :label, required: true
= f.submit t('.button.add_group'), class: "button primary send"
- csv_max_size = Administrateurs::GroupeInstructeursController::CSV_MAX_SIZE
@ -51,7 +51,7 @@
- groupes_instructeurs.each do |group|
%tr
%td= group.label
%td.actions= link_to t('.view'), admin_procedure_groupe_instructeur_path(procedure, group)
%td.actions= link_to t('.set_up'), admin_procedure_groupe_instructeur_path(procedure, group)
- if groupes_instructeurs.many?
- if group.dossiers.empty?
%td.actions

View file

@ -0,0 +1,13 @@
.card
%h2.card-title Lautogestion des instructeurs
%p.notice= t('.self_managment_notice_html')
= form_for procedure,
method: :patch,
url: update_instructeurs_self_management_enabled_admin_procedure_groupe_instructeurs_path(procedure),
html: { class: 'form procedure-form__column--form no-background' } do |f|
%label.toggle-switch
= f.check_box :instructeurs_self_management_enabled, class: 'toggle-switch-checkbox', onchange: 'this.form.submit()'
%span.toggle-switch-control.round
%span.toggle-switch-label.on
%span.toggle-switch-label.off

View file

@ -1,19 +1,4 @@
.card
%h2.card-title= t('.title')
- if !procedure.routee?
%p.notice= t('.notice_html')
.card
%h2.card-title Lautogestion des instructeurs
%p.notice= t('.self_managment_notice_html')
= form_for procedure,
method: :patch,
url: update_instructeurs_self_management_enabled_admin_procedure_groupe_instructeurs_path(procedure),
html: { class: 'form procedure-form__column--form no-background' } do |f|
%label.toggle-switch
= f.check_box :instructeurs_self_management_enabled, class: 'toggle-switch-checkbox', onchange: 'this.form.submit()'
%span.toggle-switch-control.round
%span.toggle-switch-label.on
%span.toggle-switch-label.off
%p.notice= t('.notice_html')

View file

@ -12,9 +12,6 @@
.container.groupe-instructeur
%h1 Gérer les instructeurs et les options d'instruction de « #{@procedure.libelle} »
= render partial: 'administrateurs/groupe_instructeurs/routing', locals: { procedure: @procedure }
= render partial: 'administrateurs/groupe_instructeurs/edit', locals: { procedure: @procedure, groupes_instructeurs: @groupes_instructeurs }
- if @procedure.groupe_instructeurs.one?
= render partial: 'administrateurs/groupe_instructeurs/instructeurs',
locals: { procedure: @procedure,
@ -22,3 +19,9 @@
instructeurs: @instructeurs,
available_instructeur_emails: @available_instructeur_emails,
disabled_as_super_admin: administrateur_as_manager? }
- if !@procedure.routee?
= render partial: 'administrateurs/groupe_instructeurs/instructeurs_self_management', locals: { procedure: @procedure }
= render partial: 'administrateurs/groupe_instructeurs/routing', locals: { procedure: @procedure }
= render partial: 'administrateurs/groupe_instructeurs/edit', locals: { procedure: @procedure, groupes_instructeurs: @groupes_instructeurs }

View file

@ -26,8 +26,7 @@ en:
other: "%{count} instructors are assigned"
edit:
routing:
title: Routing label
notice: This text will appear on the user form as the label of a list
title: Label of the groups list
group_management:
title: Group management
delete: delete the group
@ -37,7 +36,6 @@ en:
add_a_group:
title: Add a group
notice: This group will be a choice from the list "%{routing_criteria_name}"
placeholder: ex. City of Bordeaux
csv_import:
title: CSV Import
notice_1: The csv file must have 2 columns (Group, Email) and be separated by commas. The import does not overwrite existing groups and instructors.
@ -45,7 +43,7 @@ en:
download_exemple: Download sample CSV file
import_file: Import file
import_file_procedure_not_published: The import of instructors by CSV file is available once the process has been published
view: view
set_up: set up
button:
add_group: Add group
rename: Rename
@ -60,8 +58,8 @@ en:
This feature makes it possible to route the files to each group, and to no longer need to filter its files among a large quantity of requests. It is therefore particularly suitable for national approaches instructed locally.
<br><br>
Instructors only see the files that concern them, and therefore do not have access to data outside their scope.
<br><br>
Routing is activated once there are at least two active instructors groups
instructeurs_self_management:
self_managment_notice_html: |
Instructor Self-Management allows instructors to self-manage the list of Gait Instructors.
button:
routing_enable: Enable routing
routing_disable: Disable routing
Instructor Self-Management allows instructors to self-manage the list of Gait Instructors.

View file

@ -32,8 +32,7 @@ fr:
other: "%{count} instructeurs sont affectés"
edit:
routing:
title: Libellé du routage
notice: Ce texte apparaitra sur le formulaire usager comme le libellé dune liste
title: Libellé de la liste de groupes
group_management:
title: Gestion des Groupes
delete: supprimer le groupe
@ -41,9 +40,8 @@ fr:
move_folders: déplacer les dossiers
move_folders_confirmation: Réaffecter les dossiers à un autre groupe afin de pouvoir le supprimer
add_a_group:
title: Ajouter un groupe
title: Ajouter un nom de groupe
notice: Ce groupe sera un choix de la liste "%{routing_criteria_name}"
placeholder: ex. Ville de Bordeaux
csv_import:
title: Importer par CSV
notice_1: Le fichier csv doit comporter 2 colonnes (Groupe, Email) et être séparé par des virgules. L'import n'écrase pas les groupes et les instructeurs existants.
@ -52,6 +50,7 @@ fr:
import_file: Importer le fichier
import_file_procedure_not_published: Limport dinstructeurs par fichier CSV est disponible une fois la démarche publiée
view: voir
set_up: paramétrer
button:
add_group: Ajouter le groupe
rename: Renommer
@ -61,15 +60,10 @@ fr:
routing:
title: Routage
notice_html: |
Le routage est une fonctionnalité pour les démarches nécessitant le partage de linstruction entre différents groupes en fonction dun critère précis (territoire, thématique ou autre).
<br><br>
Cette fonctionnalité permet dacheminer les dossier vers chaque groupe, et de ne plus avoir besoin de filtrer ses dossiers parmi une grande quantité de demandes. Elle est donc particulièrement adaptée pour les démarches nationales instruites localement.
<br><br>
Les instructeurs ne voient que les dossiers les concernant, et nont donc pas accès aux données extérieures à leur périmètre.
self_managment_notice_html: |
Lautogestion des instructeurs permet aux instructeurs de gérer eux-mêmes la liste des instructeurs de la démarche.
Le routage permet d'acheminer les dossiers vers différents groupes d'instructeurs. Il s'active automatiquement dès qu'une démarche compte au moins deux groupes actifs.
button:
routing_enable: Activer le routage
routing_disable: Désactiver le routage
self_managment_toggle: Activer lautogestion des instructeurs
add_group: Ajouter le groupe
instructeurs_self_management:
self_managment_notice_html: |
Lautogestion des instructeurs permet aux instructeurs de gérer eux-mêmes la liste des instructeurs de la démarche.

View file

@ -12,46 +12,44 @@ describe 'The routing', js: true do
scenario 'works' do
login_as administrateur.user, scope: :user
visit admin_procedure_path(procedure.id)
find('#groupe-instructeurs').click
# rename routing criteria to spécialité
fill_in 'Libellé du routage', with: 'spécialité'
click_on 'Renommer'
expect(page).to have_text('Le libellé est maintenant « spécialité ».')
expect(page).to have_field('Libellé du routage', with: 'spécialité')
# rename defaut groupe to littéraire
click_on 'voir'
fill_in 'Nom du groupe', with: 'littéraire'
click_on 'Valider'
expect(page).to have_text('Le nom est à présent « littéraire ».')
expect(page).to have_field('Nom du groupe', with: 'littéraire')
# add littéraire groupe
fill_in 'Ajouter un nom de groupe', with: 'littéraire'
click_on 'Ajouter le groupe'
expect(page).to have_text('Le groupe dinstructeurs « littéraire » a été créé et le routage a été activé.')
# add victor to littéraire groupe
fill_in 'Emails', with: 'victor@inst.com'
perform_enqueued_jobs { click_on 'Affecter' }
expect(page).to have_text("Les instructeurs ont bien été affectés à la démarche")
expect(page).to have_text("Linstructeur victor@inst.com a été affecté")
victor = User.find_by(email: 'victor@inst.com').instructeur
# add superwoman to littéraire groupe
fill_in 'Emails', with: 'superwoman@inst.com'
perform_enqueued_jobs { click_on 'Affecter' }
expect(page).to have_text("Les instructeurs ont bien été affectés à la démarche")
expect(page).to have_text("Linstructeur superwoman@inst.com a été affecté")
superwoman = User.find_by(email: 'superwoman@inst.com').instructeur
# rename routing criteria to spécialité
click_on 'Groupes dinstructeurs'
fill_in 'Libellé de la liste de groupes', with: 'spécialité'
click_on 'Renommer'
expect(page).to have_text('Le libellé est maintenant « spécialité ».')
expect(page).to have_field('Libellé de la liste de groupes', with: 'spécialité')
# add inactive groupe
fill_in 'Ajouter un groupe', with: 'non visible car inactif'
fill_in 'Ajouter un nom de groupe', with: 'non visible car inactif'
click_on 'Ajouter le groupe'
check "Groupe inactif"
click_on 'Valider'
click_on 'Modifier'
# add scientifique groupe
click_on 'Groupes dinstructeurs'
fill_in 'Ajouter un groupe', with: 'scientifique'
fill_in 'Ajouter un nom de groupe', with: 'scientifique'
click_on 'Ajouter le groupe'
expect(page).to have_text('Le groupe dinstructeurs « scientifique » a été créé.')