update wording and cards order
This commit is contained in:
parent
b419c48262
commit
63ae328bee
10 changed files with 73 additions and 85 deletions
|
@ -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 d’instructeurs « #{@groupe_instructeur.label} » a été créé."
|
||||
notice: "Le groupe d’instructeurs « #{@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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
.card
|
||||
%h2.card-title L‘autogestion 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
|
|
@ -1,19 +1,4 @@
|
|||
.card
|
||||
%h2.card-title= t('.title')
|
||||
|
||||
- if !procedure.routee?
|
||||
%p.notice= t('.notice_html')
|
||||
|
||||
.card
|
||||
%h2.card-title L‘autogestion 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')
|
||||
|
|
|
@ -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 }
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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é d’une 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: L’import d’instructeurs 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 l’instruction entre différents groupes en fonction d’un critère précis (territoire, thématique ou autre).
|
||||
<br><br>
|
||||
Cette fonctionnalité permet d’acheminer 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 n’ont donc pas accès aux données extérieures à leur périmètre.
|
||||
self_managment_notice_html: |
|
||||
L’autogestion 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 l’autogestion des instructeurs
|
||||
add_group: Ajouter le groupe
|
||||
instructeurs_self_management:
|
||||
self_managment_notice_html: |
|
||||
L’autogestion des instructeurs permet aux instructeurs de gérer eux-mêmes la liste des instructeurs de la démarche.
|
||||
|
|
|
@ -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 d’instructeurs « 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("L’instructeur 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("L’instructeur superwoman@inst.com a été affecté")
|
||||
|
||||
superwoman = User.find_by(email: 'superwoman@inst.com').instructeur
|
||||
|
||||
# rename routing criteria to spécialité
|
||||
click_on 'Groupes d’instructeurs'
|
||||
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 d’instructeurs'
|
||||
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 d’instructeurs « scientifique » a été créé.')
|
||||
|
||||
|
|
Loading…
Reference in a new issue