From fdf54f298b07a6abc40e62634fc20340b8e19efd Mon Sep 17 00:00:00 2001 From: pabois <pierreandre.boissinot@noesya.coop> Date: Mon, 16 May 2022 18:09:02 +0200 Subject: [PATCH] =?UTF-8?q?alumni=20redescendu=20d'un=20niveau=20pour=20g?= =?UTF-8?q?=C3=A9rer=20correctement=20le=20highlight=20du=20menu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{people => }/alumni/imports_controller.rb | 8 ++++---- .../{people => }/alumni_controller.rb | 10 ++++++---- .../university/person/with_education.rb | 13 ++++++++++++ .../admin/university/{people => }/alumni.rb | 6 +++--- .../alumni/_cohort_fields.html.erb | 0 .../{people => }/alumni/_list.html.erb | 2 +- .../{people => }/alumni/edit_cohorts.html.erb | 4 ++-- .../alumni/imports/index.html.erb | 4 ++-- .../{people => }/alumni/imports/new.html.erb | 2 +- .../{people => }/alumni/imports/show.html.erb | 0 .../{people => }/alumni/index.html.erb | 6 +++--- .../{people => }/alumni/new.html.erb | 0 .../{people => }/alumni/show.html.erb | 2 +- config/admin_navigation.rb | 8 ++++---- config/routes/admin/university.rb | 20 +++++++++---------- 15 files changed, 49 insertions(+), 36 deletions(-) rename app/controllers/admin/university/{people => }/alumni/imports_controller.rb (79%) rename app/controllers/admin/university/{people => }/alumni_controller.rb (76%) rename app/services/filters/admin/university/{people => }/alumni.rb (81%) rename app/views/admin/university/{people => }/alumni/_cohort_fields.html.erb (100%) rename app/views/admin/university/{people => }/alumni/_list.html.erb (87%) rename app/views/admin/university/{people => }/alumni/edit_cohorts.html.erb (87%) rename app/views/admin/university/{people => }/alumni/imports/index.html.erb (77%) rename app/views/admin/university/{people => }/alumni/imports/new.html.erb (97%) rename app/views/admin/university/{people => }/alumni/imports/show.html.erb (100%) rename app/views/admin/university/{people => }/alumni/index.html.erb (67%) rename app/views/admin/university/{people => }/alumni/new.html.erb (100%) rename app/views/admin/university/{people => }/alumni/show.html.erb (88%) diff --git a/app/controllers/admin/university/people/alumni/imports_controller.rb b/app/controllers/admin/university/alumni/imports_controller.rb similarity index 79% rename from app/controllers/admin/university/people/alumni/imports_controller.rb rename to app/controllers/admin/university/alumni/imports_controller.rb index 66b44d749..6de670ed8 100644 --- a/app/controllers/admin/university/people/alumni/imports_controller.rb +++ b/app/controllers/admin/university/alumni/imports_controller.rb @@ -1,4 +1,4 @@ -class Admin::University::People::Alumni::ImportsController < Admin::University::ApplicationController +class Admin::University::Alumni::ImportsController < Admin::University::ApplicationController load_and_authorize_resource class: University::Person::Alumnus::Import, through: :current_university, through_association: :person_alumnus_imports @@ -30,11 +30,11 @@ class Admin::University::People::Alumni::ImportsController < Admin::University:: def breadcrumb super add_breadcrumb University::Person::Alumnus.model_name.human(count: 2), - admin_university_people_alumni_path + admin_university_alumni_path add_breadcrumb University::Person::Alumnus::Import.model_name.human(count: 2), - admin_university_people_alumni_imports_path + admin_university_alumni_imports_path return unless @import - @import.persisted? ? add_breadcrumb(@import, admin_university_people_alumni_import_path(@import)) + @import.persisted? ? add_breadcrumb(@import, admin_university_alumni_import_path(@import)) : add_breadcrumb(t('create')) end diff --git a/app/controllers/admin/university/people/alumni_controller.rb b/app/controllers/admin/university/alumni_controller.rb similarity index 76% rename from app/controllers/admin/university/people/alumni_controller.rb rename to app/controllers/admin/university/alumni_controller.rb index 5a06332f2..ae1f4a38b 100644 --- a/app/controllers/admin/university/people/alumni_controller.rb +++ b/app/controllers/admin/university/alumni_controller.rb @@ -1,9 +1,11 @@ -class Admin::University::People::AlumniController < Admin::University::ApplicationController +class Admin::University::AlumniController < Admin::University::ApplicationController load_and_authorize_resource class: University::Person::Alumnus, through: :current_university, through_association: :people has_scope :for_search_term + has_scope :for_alumni_program + has_scope :for_alumni_year def index @alumni = apply_scopes(@alumni).alumni @@ -25,7 +27,7 @@ class Admin::University::People::AlumniController < Admin::University::Applicati def update_cohorts if @alumnus.update(alumnus_params) - redirect_to admin_university_people_alumnus_path(@alumnus), + redirect_to admin_university_alumnus_path(@alumnus), notice: t('admin.successfully_updated_html', model: @alumnus.to_s) else render :edit_cohorts @@ -39,8 +41,8 @@ class Admin::University::People::AlumniController < Admin::University::Applicati def breadcrumb super add_breadcrumb University::Person::Alumnus.model_name.human(count: 2), - admin_university_people_alumni_path - add_breadcrumb @alumnus, admin_university_people_alumni_path(@alumnus) if @alumnus + admin_university_alumni_path + add_breadcrumb @alumnus, admin_university_alumni_path(@alumnus) if @alumnus end def alumnus_params diff --git a/app/models/university/person/with_education.rb b/app/models/university/person/with_education.rb index 3c36e95e9..978a9ed23 100644 --- a/app/models/university/person/with_education.rb +++ b/app/models/university/person/with_education.rb @@ -38,6 +38,19 @@ module University::Person::WithEducation class_name: 'Education::Program', foreign_key: 'university_person_id', association_foreign_key: 'education_program_id' + + scope :for_alumni_program, -> (program_id) { + left_joins(:cohorts) + .where(education_cohorts: { program_id: program_id }) + .select("university_people.*") + .distinct + } + scope :for_alumni_year, -> (academic_year_id) { + left_joins(:cohorts) + .where(education_cohorts: { academic_year_id: academic_year_id }) + .select("university_people.*") + .distinct + } end def add_to_cohort(cohort) diff --git a/app/services/filters/admin/university/people/alumni.rb b/app/services/filters/admin/university/alumni.rb similarity index 81% rename from app/services/filters/admin/university/people/alumni.rb rename to app/services/filters/admin/university/alumni.rb index 6495bda45..ad0f53c25 100644 --- a/app/services/filters/admin/university/people/alumni.rb +++ b/app/services/filters/admin/university/alumni.rb @@ -1,9 +1,9 @@ module Filters - class Admin::University::People::Alumni < Filters::Base + class Admin::University::Alumni < Filters::Base def initialize(user) super add_search - add :for_program, + add :for_alumni_program, user.university.education_programs, I18n.t( 'filters.attributes.element', @@ -11,7 +11,7 @@ module Filters ), false, true - add :for_academic_year, + add :for_alumni_year, user.university.academic_years.ordered, I18n.t( 'filters.attributes.element', diff --git a/app/views/admin/university/people/alumni/_cohort_fields.html.erb b/app/views/admin/university/alumni/_cohort_fields.html.erb similarity index 100% rename from app/views/admin/university/people/alumni/_cohort_fields.html.erb rename to app/views/admin/university/alumni/_cohort_fields.html.erb diff --git a/app/views/admin/university/people/alumni/_list.html.erb b/app/views/admin/university/alumni/_list.html.erb similarity index 87% rename from app/views/admin/university/people/alumni/_list.html.erb rename to app/views/admin/university/alumni/_list.html.erb index 00f837195..e86763434 100644 --- a/app/views/admin/university/people/alumni/_list.html.erb +++ b/app/views/admin/university/alumni/_list.html.erb @@ -7,7 +7,7 @@ </thead> <tbody> <% alumni.each do |alumnus| %> - <% path = admin_university_people_alumnus_path(alumnus) %> + <% path = admin_university_alumnus_path(alumnus) %> <tr> <td><%= link_to alumnus.last_name, path %></td> <td><%= link_to alumnus.first_name, path %></td> diff --git a/app/views/admin/university/people/alumni/edit_cohorts.html.erb b/app/views/admin/university/alumni/edit_cohorts.html.erb similarity index 87% rename from app/views/admin/university/people/alumni/edit_cohorts.html.erb rename to app/views/admin/university/alumni/edit_cohorts.html.erb index 2bc79d96d..ea332608a 100644 --- a/app/views/admin/university/people/alumni/edit_cohorts.html.erb +++ b/app/views/admin/university/alumni/edit_cohorts.html.erb @@ -2,7 +2,7 @@ <h2 class="h3"><%= Education::Program.model_name.human(count: 2) %></h2> -<%= simple_form_for [:admin, @alumnus], url: edit_cohorts_admin_university_people_alumnus_path(@alumnus) do |f| %> +<%= simple_form_for [:admin, @alumnus], url: edit_cohorts_admin_university_alumnus_path(@alumnus) do |f| %> <%= f.error_notification %> <%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %> @@ -21,7 +21,7 @@ <div class="col-md-10"> <div id="cohorts"> <%= f.simple_fields_for :cohorts, @alumnus.cohorts.sort_by { |c| [c.year ? 0 : 1, c.year] }.reverse, include_id: false do |cohort_f| %> - <%= render 'admin/university/people/alumni/cohort_fields', f: cohort_f, include_id: true %> + <%= render 'admin/university/alumni/cohort_fields', f: cohort_f, include_id: true %> <% end %> </div> </div> diff --git a/app/views/admin/university/people/alumni/imports/index.html.erb b/app/views/admin/university/alumni/imports/index.html.erb similarity index 77% rename from app/views/admin/university/people/alumni/imports/index.html.erb rename to app/views/admin/university/alumni/imports/index.html.erb index a376df884..e48aa45f4 100644 --- a/app/views/admin/university/people/alumni/imports/index.html.erb +++ b/app/views/admin/university/alumni/imports/index.html.erb @@ -9,7 +9,7 @@ <tbody> <% @imports.each do |import| %> <tr> - <td><%= link_to import, admin_university_people_alumni_import_path(import) %></td> + <td><%= link_to import, admin_university_alumni_import_path(import) %></td> </tr> <% end %> </tbody> @@ -18,6 +18,6 @@ <% content_for :action_bar_right do %> <%= link_to_if can?(:create, University::Person::Alumnus::Import), t('create'), - new_admin_university_people_alumni_import_path, + new_admin_university_alumni_import_path, class: button_classes %> <% end %> diff --git a/app/views/admin/university/people/alumni/imports/new.html.erb b/app/views/admin/university/alumni/imports/new.html.erb similarity index 97% rename from app/views/admin/university/people/alumni/imports/new.html.erb rename to app/views/admin/university/alumni/imports/new.html.erb index 0749b75c5..84e9abb84 100644 --- a/app/views/admin/university/people/alumni/imports/new.html.erb +++ b/app/views/admin/university/alumni/imports/new.html.erb @@ -11,7 +11,7 @@ Les valeurs pour gender peuvent être m (masculin), f (féminin) et n (non binaire). </p> <%= simple_form_for @import, - url: admin_university_people_alumni_imports_path do |f| %> + url: admin_university_alumni_imports_path do |f| %> <%= f.error_notification %> <%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %> diff --git a/app/views/admin/university/people/alumni/imports/show.html.erb b/app/views/admin/university/alumni/imports/show.html.erb similarity index 100% rename from app/views/admin/university/people/alumni/imports/show.html.erb rename to app/views/admin/university/alumni/imports/show.html.erb diff --git a/app/views/admin/university/people/alumni/index.html.erb b/app/views/admin/university/alumni/index.html.erb similarity index 67% rename from app/views/admin/university/people/alumni/index.html.erb rename to app/views/admin/university/alumni/index.html.erb index dc53377d8..6db0169c7 100644 --- a/app/views/admin/university/people/alumni/index.html.erb +++ b/app/views/admin/university/alumni/index.html.erb @@ -1,14 +1,14 @@ <% content_for :title, "#{University::Person::Alumnus.model_name.human(count: 2)} (#{@alumni.total_count})" %> -<%= render 'filters', current_path: admin_university_people_alumni_path, filters: @filters if @filters.any? %> +<%= render 'filters', current_path: admin_university_alumni_path, filters: @filters if @filters.any? %> -<%= render 'admin/university/people/alumni/list', alumni: @alumni %> +<%= render 'admin/university/alumni/list', alumni: @alumni %> <%= paginate @alumni, theme: 'bootstrap-5' %> <% content_for :action_bar_left do %> <%= link_to t('import'), - new_admin_university_people_alumni_import_path, + new_admin_university_alumni_import_path, class: button_classes if can? :manage, University::Person::Alumnus::Import %> <% end %> diff --git a/app/views/admin/university/people/alumni/new.html.erb b/app/views/admin/university/alumni/new.html.erb similarity index 100% rename from app/views/admin/university/people/alumni/new.html.erb rename to app/views/admin/university/alumni/new.html.erb diff --git a/app/views/admin/university/people/alumni/show.html.erb b/app/views/admin/university/alumni/show.html.erb similarity index 88% rename from app/views/admin/university/people/alumni/show.html.erb rename to app/views/admin/university/alumni/show.html.erb index ca7335644..c122295e9 100644 --- a/app/views/admin/university/people/alumni/show.html.erb +++ b/app/views/admin/university/alumni/show.html.erb @@ -20,5 +20,5 @@ <% content_for :action_bar_right do %> <%= edit_link @alumnus %> - <%= link_to t('university.manage_cohorts'), edit_cohorts_admin_university_people_alumnus_path(@alumnus), class: button_classes if can?(:update, @alumnus) %> + <%= link_to t('university.manage_cohorts'), edit_cohorts_admin_university_alumnus_path(@alumnus), class: button_classes if can?(:update, @alumnus) %> <% end %> diff --git a/config/admin_navigation.rb b/config/admin_navigation.rb index f0f93fb02..a319d52b1 100644 --- a/config/admin_navigation.rb +++ b/config/admin_navigation.rb @@ -6,11 +6,11 @@ SimpleNavigation::Configuration.run do |navigation| navigation.items do |primary| primary.item :dashboard, t('admin.dashboard'), admin_root_path, { icon: 'tachometer-alt', highlights_on: /admin$/ } - if can?(:read, User) || can?(:read, University::Person) || can?(:read, University::Organization) + if can?(:read, University::Person) || can?(:read, University::Organization) primary.item :university, University.model_name.human, nil, { kind: :header } - primary.item :university, University::Person.model_name.human(count: 2), admin_university_people_path, { icon: 'users-cog' } - primary.item :university, University::Organization.model_name.human(count: 2), admin_university_organizations_path, { icon: 'building' } - primary.item :communication_alumni, University::Person::Alumnus.model_name.human(count: 2), admin_university_people_alumni_path, { icon: 'users' } + primary.item :university, University::Person.model_name.human(count: 2), admin_university_people_path, { icon: 'users-cog' } if can?(:read, University::Person) + primary.item :university, University::Organization.model_name.human(count: 2), admin_university_organizations_path, { icon: 'building' } if can?(:read, University::Organization) + primary.item :communication_alumni, University::Person::Alumnus.model_name.human(count: 2), admin_university_alumni_path, { icon: 'users' } if can?(:read, University::Person) end if can?(:read, Education::Program) diff --git a/config/routes/admin/university.rb b/config/routes/admin/university.rb index 5106085dc..8b8d2a3b5 100644 --- a/config/routes/admin/university.rb +++ b/config/routes/admin/university.rb @@ -3,17 +3,15 @@ namespace :university do namespace :organizations do resources :imports, only: [:index, :show, :new, :create] end - namespace :people do - namespace :alumni do - resources :imports, only: [:index, :show, :new, :create] - end - resources :alumni, only: [:index, :show] do - member do - get 'edit_cohorts' => 'alumni#edit_cohorts' - patch 'edit_cohorts' => 'alumni#update_cohorts' - get 'edit_experience' => 'alumni#edit_experiences' - patch 'edit_experiences' => 'alumni#update_experiences' - end + namespace :alumni do + resources :imports, only: [:index, :show, :new, :create] + end + resources :alumni, only: [:index, :show] do + member do + get 'edit_cohorts' => 'alumni#edit_cohorts' + patch 'edit_cohorts' => 'alumni#update_cohorts' + get 'edit_experience' => 'alumni#edit_experiences' + patch 'edit_experiences' => 'alumni#update_experiences' end end resources :people, :organizations -- GitLab