From dbea65202fea3415a3e0fb0d80fb4c6aeadb4141 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Gaya?= <sebastien.gaya@gmail.com> Date: Mon, 15 May 2023 10:47:01 +0200 Subject: [PATCH] fix page dependencies based on languages --- app/controllers/admin/university/people_controller.rb | 6 +++--- app/models/communication/website/page/administrator.rb | 2 +- app/models/communication/website/page/author.rb | 2 +- app/models/communication/website/page/communication_post.rb | 4 ++-- app/models/communication/website/page/education_diploma.rb | 1 + app/models/communication/website/page/education_program.rb | 1 + app/models/communication/website/page/organization.rb | 1 + app/models/communication/website/page/person.rb | 3 +-- app/models/communication/website/page/research_paper.rb | 1 + app/models/communication/website/page/research_volume.rb | 1 + app/models/communication/website/page/researcher.rb | 2 +- app/models/communication/website/page/teacher.rb | 2 +- app/models/university/person.rb | 2 +- .../admin/communication/extranets/contacts/index.html.erb | 4 ++-- .../pages/show/special_pages/_organization.html.erb | 4 ++-- .../websites/pages/show/special_pages/_person.html.erb | 6 +++--- 16 files changed, 23 insertions(+), 19 deletions(-) diff --git a/app/controllers/admin/university/people_controller.rb b/app/controllers/admin/university/people_controller.rb index 25679b8f7..8ac8268ef 100644 --- a/app/controllers/admin/university/people_controller.rb +++ b/app/controllers/admin/university/people_controller.rb @@ -28,9 +28,9 @@ class Admin::University::PeopleController < Admin::University::ApplicationContro def search @term = params[:term].to_s - @people = current_university.people - .for_search_term(@term) - .ordered + language = Language.find_by(iso_code: params[:lang]) + @people = current_university.people.for_search_term(@term).ordered + @people = @people.joins(:language).where(languages: { iso_code: language.iso_code }) if language.present? end def show diff --git a/app/models/communication/website/page/administrator.rb b/app/models/communication/website/page/administrator.rb index 7e0166f0a..a58eeadb4 100644 --- a/app/models/communication/website/page/administrator.rb +++ b/app/models/communication/website/page/administrator.rb @@ -51,7 +51,7 @@ class Communication::Website::Page::Administrator < Communication::Website::Page def dependencies super + [website.config_default_languages] + - website&.administrators&.map(&:administrator) + website.administrators.where(language_id: language_id).map(&:administrator) end protected diff --git a/app/models/communication/website/page/author.rb b/app/models/communication/website/page/author.rb index 8e8d2ea7d..4b3ef3d58 100644 --- a/app/models/communication/website/page/author.rb +++ b/app/models/communication/website/page/author.rb @@ -47,7 +47,7 @@ class Communication::Website::Page::Author < Communication::Website::Page def dependencies super + [website.config_default_languages] + - website&.authors&.map(&:author) + website.authors.where(language_id: language_id).map(&:author) end protected diff --git a/app/models/communication/website/page/communication_post.rb b/app/models/communication/website/page/communication_post.rb index cea66d118..873ab1626 100644 --- a/app/models/communication/website/page/communication_post.rb +++ b/app/models/communication/website/page/communication_post.rb @@ -55,8 +55,8 @@ class Communication::Website::Page::CommunicationPost < Communication::Website:: def dependencies super + [website.config_default_languages] + - website.categories + - website.posts + website.categories.where(language_id: language_id) + + website.posts.where(language_id: language_id) end protected diff --git a/app/models/communication/website/page/education_diploma.rb b/app/models/communication/website/page/education_diploma.rb index 43ee5782f..d210fe531 100644 --- a/app/models/communication/website/page/education_diploma.rb +++ b/app/models/communication/website/page/education_diploma.rb @@ -60,6 +60,7 @@ class Communication::Website::Page::EducationDiploma < Communication::Website::P true end + # TODO: Scope .where(language_id: language_id) when diplomas are translatable def dependencies super + [website.config_default_languages] + diff --git a/app/models/communication/website/page/education_program.rb b/app/models/communication/website/page/education_program.rb index 45de861ba..9c21eb8fe 100644 --- a/app/models/communication/website/page/education_program.rb +++ b/app/models/communication/website/page/education_program.rb @@ -60,6 +60,7 @@ class Communication::Website::Page::EducationProgram < Communication::Website::P true end + # TODO: Scope .where(language_id: language_id) when programs are translatable def dependencies super + [website.config_default_languages] + diff --git a/app/models/communication/website/page/organization.rb b/app/models/communication/website/page/organization.rb index 87d1694fb..5af8439d1 100644 --- a/app/models/communication/website/page/organization.rb +++ b/app/models/communication/website/page/organization.rb @@ -44,6 +44,7 @@ # class Communication::Website::Page::Organization < Communication::Website::Page + # TODO: Scope .where(language_id: language_id) when organizations are translatable def dependencies super + [website.config_default_languages] + diff --git a/app/models/communication/website/page/person.rb b/app/models/communication/website/page/person.rb index ac27f9961..6a16e8d1b 100644 --- a/app/models/communication/website/page/person.rb +++ b/app/models/communication/website/page/person.rb @@ -47,12 +47,11 @@ class Communication::Website::Page::Person < Communication::Website::Page def dependencies super + [website.config_default_languages] + - # TODO: @arnaud ça te va ? explicitly_connected_people end def explicitly_connected_people - ids = website.connections.where(indirect_object_type: 'University::Person', direct_source_type: 'Communication::Website::Page::Person').pluck(:indirect_object_id) + ids = website.connections.where(indirect_object_type: 'University::Person', direct_source_type: 'Communication::Website::Page::Person', direct_source_id: self.id).pluck(:indirect_object_id) University::Person.where(id: ids) end diff --git a/app/models/communication/website/page/research_paper.rb b/app/models/communication/website/page/research_paper.rb index b3e3e3396..be477bb28 100644 --- a/app/models/communication/website/page/research_paper.rb +++ b/app/models/communication/website/page/research_paper.rb @@ -48,6 +48,7 @@ class Communication::Website::Page::ResearchPaper < Communication::Website::Page website.about && website.about&.respond_to?(:papers) end + # TODO: Scope .where(language_id: language_id) when papers are translatable def dependencies super + [website.config_default_languages] + diff --git a/app/models/communication/website/page/research_volume.rb b/app/models/communication/website/page/research_volume.rb index f625016c3..e348a1d91 100644 --- a/app/models/communication/website/page/research_volume.rb +++ b/app/models/communication/website/page/research_volume.rb @@ -48,6 +48,7 @@ class Communication::Website::Page::ResearchVolume < Communication::Website::Pag website.about && website.about&.respond_to?(:volumes) end + # TODO: Scope .where(language_id: language_id) when volumes are translatable def dependencies super + [website.config_default_languages] + diff --git a/app/models/communication/website/page/researcher.rb b/app/models/communication/website/page/researcher.rb index b8f9a3d1b..640edb89d 100644 --- a/app/models/communication/website/page/researcher.rb +++ b/app/models/communication/website/page/researcher.rb @@ -51,7 +51,7 @@ class Communication::Website::Page::Researcher < Communication::Website::Page def dependencies super + [website.config_default_languages] + - website.researchers&.map(&:researcher) + website.researchers.where(language_id: language_id).map(&:researcher) end protected diff --git a/app/models/communication/website/page/teacher.rb b/app/models/communication/website/page/teacher.rb index 283d7f9ee..aa07af6db 100644 --- a/app/models/communication/website/page/teacher.rb +++ b/app/models/communication/website/page/teacher.rb @@ -51,7 +51,7 @@ class Communication::Website::Page::Teacher < Communication::Website::Page def dependencies super + [website.config_default_languages] + - website.teachers&.map(&:teacher) + website.teachers.where(language_id: language_id).map(&:teacher) end protected diff --git a/app/models/university/person.rb b/app/models/university/person.rb index 0c797db15..a249fbc17 100644 --- a/app/models/university/person.rb +++ b/app/models/university/person.rb @@ -181,7 +181,7 @@ class University::Person < ApplicationRecord end def to_s_with_mail - "#{to_s} (#{email})" + email.present? ? "#{to_s} (#{email})" : to_s end def to_s_alphabetical diff --git a/app/views/admin/communication/extranets/contacts/index.html.erb b/app/views/admin/communication/extranets/contacts/index.html.erb index 117a74808..1d5c9c26f 100644 --- a/app/views/admin/communication/extranets/contacts/index.html.erb +++ b/app/views/admin/communication/extranets/contacts/index.html.erb @@ -6,7 +6,7 @@ class: button_classes('ms-1') if can?(:show, University::Person) %> <%= osuny_panel University::Person.model_name.human(count: 2), action: action do %> <div class="table-responsive"> - <table class="<%= table_classes%>"> + <table class="<%= table_classes %>"> <tbody> <% @people.each do |person| %> <tr> @@ -25,7 +25,7 @@ class: button_classes('ms-1') if can?(:show, University::Person) %> <%= osuny_panel University::Organization.model_name.human(count: 2), action: action do %> <div class="table-responsive"> - <table class="<%= table_classes%>"> + <table class="<%= table_classes %>"> <tbody> <% @organizations.each do |organization| %> <tr> diff --git a/app/views/admin/communication/websites/pages/show/special_pages/_organization.html.erb b/app/views/admin/communication/websites/pages/show/special_pages/_organization.html.erb index 307a28fc0..9292423bb 100644 --- a/app/views/admin/communication/websites/pages/show/special_pages/_organization.html.erb +++ b/app/views/admin/communication/websites/pages/show/special_pages/_organization.html.erb @@ -16,12 +16,12 @@ } %> <% end %> - <table class="<%= table_classes%>"> + <table class="<%= table_classes %>"> <tbody> <% @organizations.each do |organization| %> <tr> <td><%= link_to organization, [:admin, organization] %></td> - <td><%= link_to 'Déconnecter', + <td><%= link_to 'Déconnecter', disconnect_admin_communication_website_page_path(@page, objectId: organization.id, objectType: organization.class), class: button_classes_danger, method: :post %></td> diff --git a/app/views/admin/communication/websites/pages/show/special_pages/_person.html.erb b/app/views/admin/communication/websites/pages/show/special_pages/_person.html.erb index d94258d4b..0c263addf 100644 --- a/app/views/admin/communication/websites/pages/show/special_pages/_person.html.erb +++ b/app/views/admin/communication/websites/pages/show/special_pages/_person.html.erb @@ -6,7 +6,7 @@ <%= f.input :name, label: false, as: :autocomplete, - url: search_admin_university_people_path(lang: nil, website_id: nil), + url: search_admin_university_people_path(lang: @page.language.iso_code, website_id: nil), placeholder: t("university.person.search"), input_html: { data: { @@ -16,12 +16,12 @@ } %> <% end %> - <table class="<%= table_classes%>"> + <table class="<%= table_classes %>"> <tbody> <% @people.each do |person| %> <tr> <td><%= link_to person, [:admin, person] %></td> - <td><%= link_to 'Déconnecter', + <td><%= link_to 'Déconnecter', disconnect_admin_communication_website_page_path(@page, objectId: person.id, objectType: person.class), class: button_classes_danger, method: :post %></td> -- GitLab