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