From 520eb0ace092b6fbdaf19f5ba4637a04c5c21f14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Gaya?= <sebastien.gaya@gmail.com> Date: Wed, 19 Jan 2022 14:00:07 +0100 Subject: [PATCH] whitelisted kinds for menu items depending of website.about --- app/models/communication/website/menu/item.rb | 16 ++++++++++++++++ .../website/menu/items/_form.html.erb | 1 + 2 files changed, 17 insertions(+) diff --git a/app/models/communication/website/menu/item.rb b/app/models/communication/website/menu/item.rb index 59e88b4c3..f397cd49e 100644 --- a/app/models/communication/website/menu/item.rb +++ b/app/models/communication/website/menu/item.rb @@ -32,6 +32,9 @@ # fk_rails_... (website_id => communication_websites.id) # class Communication::Website::Menu::Item < ApplicationRecord + KINDS_FOR_SCHOOL = ['programs', 'program', 'administrators', 'teachers'] + KINDS_FOR_JOURNAL = ['researchers', 'research_volumes', 'research_volume', 'research_articles', 'research_article'] + include WithTree include WithPosition @@ -72,6 +75,19 @@ class Communication::Website::Menu::Item < ApplicationRecord after_commit :sync_menu + def self.kinds_for_website(website) + whitelisted_kinds = self.kinds.dup + + KINDS_FOR_SCHOOL.each { |school_kind| + whitelisted_kinds.delete(school_kind) + } unless website.about_school? + KINDS_FOR_JOURNAL.each { |journal_kind| + whitelisted_kinds.delete(journal_kind) + } unless website.about_journal? + + whitelisted_kinds + end + def to_s "#{title}" end diff --git a/app/views/admin/communication/website/menu/items/_form.html.erb b/app/views/admin/communication/website/menu/items/_form.html.erb index 0e9e61ee6..1527fd04a 100644 --- a/app/views/admin/communication/website/menu/items/_form.html.erb +++ b/app/views/admin/communication/website/menu/items/_form.html.erb @@ -9,6 +9,7 @@ <div class="card-body"> <%= f.input :title %> <%= f.input :kind, + collection: Communication::Website::Menu::Item.kinds_for_website(@website), include_blank: false, input_html: { class: 'js-kind-input', -- GitLab