diff --git a/app/components/groupe_gestionnaire/groupe_gestionnaire_administrateurs/administrateur_component.rb b/app/components/groupe_gestionnaire/groupe_gestionnaire_administrateurs/administrateur_component.rb index 456f0f910..ef36aea6b 100644 --- a/app/components/groupe_gestionnaire/groupe_gestionnaire_administrateurs/administrateur_component.rb +++ b/app/components/groupe_gestionnaire/groupe_gestionnaire_administrateurs/administrateur_component.rb @@ -35,7 +35,9 @@ class GroupeGestionnaire::GroupeGestionnaireAdministrateurs::AdministrateurCompo button_to "Révoquer l'accès administrateur", gestionnaire_groupe_gestionnaire_administrateur_path(@groupe_gestionnaire, @administrateur), method: :delete, + disabled: !@administrateur.can_be_deleted?, class: 'fr-btn fr-btn--sm fr-btn--tertiary', + title: @administrateur.can_be_deleted? ? "Supprimer" : "Cet administrateur a des démarches dont il est le seul admin et ne peut être supprimé", form: { data: { turbo: true, turbo_confirm: "Supprimer « #{@administrateur.email} » en tant qu'administrateur ?" } } end end diff --git a/app/components/groupe_gestionnaire/groupe_gestionnaire_list_commentaires/commentaire_component.rb b/app/components/groupe_gestionnaire/groupe_gestionnaire_list_commentaires/commentaire_component.rb index 8663300c2..91d1d5ca4 100644 --- a/app/components/groupe_gestionnaire/groupe_gestionnaire_list_commentaires/commentaire_component.rb +++ b/app/components/groupe_gestionnaire/groupe_gestionnaire_list_commentaires/commentaire_component.rb @@ -8,9 +8,11 @@ class GroupeGestionnaire::GroupeGestionnaireListCommentaires::CommentaireCompone def email if @commentaire.sender == current_gestionnaire - "Messages avec le groupe gestionnaire parent (#{@groupe_gestionnaire.parent.name})" - else + "Messages avec le groupe gestionnaire parent" + elsif @commentaire.groupe_gestionnaire_id.in?([@groupe_gestionnaire.parent_id, @groupe_gestionnaire.id]) @commentaire.sender_email + else + "#{@commentaire.sender_email} (#{@commentaire.groupe_gestionnaire.name})" end end @@ -24,10 +26,6 @@ class GroupeGestionnaire::GroupeGestionnaireListCommentaires::CommentaireCompone class: 'fr-btn' end - def groupe_gestionnaire_name - @commentaire.groupe_gestionnaire.name - end - def highlight? commentaire_seen_at = current_gestionnaire.commentaire_seen_at(@groupe_gestionnaire, @commentaire.sender_id, @commentaire.sender_type) commentaire_seen_at.nil? || commentaire_seen_at < @commentaire.created_at diff --git a/app/components/groupe_gestionnaire/groupe_gestionnaire_list_commentaires/commentaire_component/commentaire_component.html.haml b/app/components/groupe_gestionnaire/groupe_gestionnaire_list_commentaires/commentaire_component/commentaire_component.html.haml index 8e8a5ee4c..e776d1b85 100644 --- a/app/components/groupe_gestionnaire/groupe_gestionnaire_list_commentaires/commentaire_component/commentaire_component.html.haml +++ b/app/components/groupe_gestionnaire/groupe_gestionnaire_list_commentaires/commentaire_component/commentaire_component.html.haml @@ -1,6 +1,4 @@ %tr{ id: dom_id(@commentaire) } - %td - = groupe_gestionnaire_name %td = email - if highlight? diff --git a/app/controllers/gestionnaires/groupe_gestionnaire_commentaires_controller.rb b/app/controllers/gestionnaires/groupe_gestionnaire_commentaires_controller.rb index 219cb6f08..51490c8c7 100644 --- a/app/controllers/gestionnaires/groupe_gestionnaire_commentaires_controller.rb +++ b/app/controllers/gestionnaires/groupe_gestionnaire_commentaires_controller.rb @@ -9,6 +9,9 @@ module Gestionnaires .select("sender_id, sender_type, sender_email, groupe_gestionnaire_id, MAX(id) as id, MAX(created_at) as created_at") .group(:sender_id, :sender_type, :sender_email, :groupe_gestionnaire_id) .order("MAX(id) DESC") + @commentaires_parent_group = @commentaires.filter { |commentaire| commentaire.groupe_gestionnaire_id == @groupe_gestionnaire.parent_id } + @commentaires_children_groups = @commentaires.filter { |commentaire| commentaire.groupe_gestionnaire_id != @groupe_gestionnaire.parent_id && commentaire.groupe_gestionnaire_id != @groupe_gestionnaire.id } + @commentaires = @commentaires.filter { |commentaire| commentaire.groupe_gestionnaire_id == @groupe_gestionnaire.id } end def show diff --git a/app/views/gestionnaires/_breadcrumbs.html.haml b/app/views/gestionnaires/_breadcrumbs.html.haml index 2f10b1eac..af3c7fce1 100644 --- a/app/views/gestionnaires/_breadcrumbs.html.haml +++ b/app/views/gestionnaires/_breadcrumbs.html.haml @@ -5,11 +5,9 @@ = t('show', scope: [:layouts, :breadcrumb]) .fr-collapse#breadcrumb-1 %ol.fr-breadcrumb__list - %li= link_to t('root', scope: [:layouts, :breadcrumb]), root_path, class: 'fr-breadcrumb__link' - steps.each.with_index do |step, i| - if i == steps.size - 1 - %li{ aria: { current: "page" } } - %span.fr-breadcrumb__link= step[0] + %li= link_to step[0], '', { aria: { current: "page" } , class: 'fr-breadcrumb__link' } - else %li= link_to step[0], step[1], class: 'fr-breadcrumb__link' - if defined?(metadatas) diff --git a/app/views/gestionnaires/groupe_gestionnaire_commentaires/_list_commentaires.html.haml b/app/views/gestionnaires/groupe_gestionnaire_commentaires/_list_commentaires.html.haml new file mode 100644 index 000000000..921e2db62 --- /dev/null +++ b/app/views/gestionnaires/groupe_gestionnaire_commentaires/_list_commentaires.html.haml @@ -0,0 +1,8 @@ +%table.fr-table.width-100.mt-3 + %thead + %tr + %th= 'Adresse email' + %th= 'Dernier message' + %th + %tbody#commentaires + = render(GroupeGestionnaire::GroupeGestionnaireListCommentaires::CommentaireComponent.with_collection(commentaires, groupe_gestionnaire: groupe_gestionnaire)) diff --git a/app/views/gestionnaires/groupe_gestionnaire_commentaires/index.html.haml b/app/views/gestionnaires/groupe_gestionnaire_commentaires/index.html.haml index 25eb42ebe..4024b53c1 100644 --- a/app/views/gestionnaires/groupe_gestionnaire_commentaires/index.html.haml +++ b/app/views/gestionnaires/groupe_gestionnaire_commentaires/index.html.haml @@ -6,19 +6,25 @@ .container %h1 Messagerie de « #{@groupe_gestionnaire.name} » - %table.fr-table.width-100.mt-3 - %thead - %tr - %th= 'Groupe gestionnaire' - %th= 'Adresse email' - %th= 'Dernier message' - %th - %tbody#commentaires - = render(GroupeGestionnaire::GroupeGestionnaireListCommentaires::CommentaireComponent.with_collection(@commentaires, groupe_gestionnaire: @groupe_gestionnaire)) - - if @groupe_gestionnaire.parent_id && !current_gestionnaire.groupe_gestionnaires.where(id: @groupe_gestionnaire.parent_id).exists? && @last_commentaire.nil? - %tr - %td= @groupe_gestionnaire.parent.name - %td= "Messages avec le groupe gestionnaire parent (#{@groupe_gestionnaire.parent.name})" - %td - %td - = link_to 'Voir', parent_groupe_gestionnaire_gestionnaire_groupe_gestionnaire_commentaires_path(@groupe_gestionnaire), class: 'fr-btn' + = render partial: 'list_commentaires', locals: { commentaires: @commentaires, groupe_gestionnaire: @groupe_gestionnaire } + + - if @commentaires_children_groups.present? + %h5 Messagerie des groupes enfants + = render partial: 'list_commentaires', locals: { commentaires: @commentaires_children_groups, groupe_gestionnaire: @groupe_gestionnaire } + + - if @groupe_gestionnaire.parent_id + %h5 Messagerie du groupe parent « #{@groupe_gestionnaire.parent.name} » + - if @commentaires_parent_group.present? + = render partial: 'list_commentaires', locals: { commentaires: @commentaires_parent_group, groupe_gestionnaire: @groupe_gestionnaire } + - else + %table.fr-table.width-100.mt-3 + %thead + %tr + %th= 'Adresse email' + %th= 'Dernier message' + %th + %tr + %td= "Messages avec le groupe gestionnaire parent" + %td + %td + = link_to 'Voir', parent_groupe_gestionnaire_gestionnaire_groupe_gestionnaire_commentaires_path(@groupe_gestionnaire), class: 'fr-btn' diff --git a/app/views/gestionnaires/groupe_gestionnaires/index.html.haml b/app/views/gestionnaires/groupe_gestionnaires/index.html.haml index e84f2e1d4..c81b05255 100644 --- a/app/views/gestionnaires/groupe_gestionnaires/index.html.haml +++ b/app/views/gestionnaires/groupe_gestionnaires/index.html.haml @@ -15,6 +15,8 @@ Nombre de gestionnaires %th{ scope: "col" } Nombre d'administrateurs + %th{ scope: "col" } + Arborescence %tbody - @groupe_gestionnaires.order(:name).each do |groupe_gestionnaire| @@ -25,3 +27,5 @@ = groupe_gestionnaire.gestionnaire_ids.size %td = groupe_gestionnaire.administrateur_ids.size + %td + = link_to 'Voir', tree_structure_gestionnaire_groupe_gestionnaire_path(groupe_gestionnaire), class: 'fr-btn' diff --git a/app/views/gestionnaires/groupe_gestionnaires/tree_structure.html.haml b/app/views/gestionnaires/groupe_gestionnaires/tree_structure.html.haml index 3b1055657..ea7ed2eb4 100644 --- a/app/views/gestionnaires/groupe_gestionnaires/tree_structure.html.haml +++ b/app/views/gestionnaires/groupe_gestionnaires/tree_structure.html.haml @@ -7,6 +7,9 @@ %h1 Arborescence de « #{@groupe_gestionnaire.name} » .fr-mt-4w + - if @groupe_gestionnaire.parent_id + %ul + %li= @groupe_gestionnaire.parent.name %ul - @tree_structure.each do |parent, children| %li