diff --git a/app/assets/javascripts/admin/communication/menu_items.js b/app/assets/javascripts/admin/communication/menu_items.js index 25a915265c6d4d82fe2789ca19d3d06a781b1c15..59ab729c67ccddbf2af10f34aa4f7ed75bf99318 100644 --- a/app/assets/javascripts/admin/communication/menu_items.js +++ b/app/assets/javascripts/admin/communication/menu_items.js @@ -10,7 +10,6 @@ window.osuny.communication.menuItems = { this.switchUrl = this.kindInput.dataset.url; this.kindInput.addEventListener('change', this.onKindChange.bind(this)); - this.onKindChange(); }, onKindChange: function () { diff --git a/app/models/communication/website/menu/item.rb b/app/models/communication/website/menu/item.rb index 28b613c9254d3b0c617ebd333ff4ca3fa382e2fc..9cb253e4101ac3753b1d5a00c0160d8e670bfb9f 100644 --- a/app/models/communication/website/menu/item.rb +++ b/app/models/communication/website/menu/item.rb @@ -80,6 +80,10 @@ class Communication::Website::Menu::Item < ApplicationRecord } end + def has_about? + kind_page? || kind_program? || kind_news_category? || kind_news_article + end + protected def set_position 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 c5ae967ca872d33ea276eb1046c66b9cb680681d..2beebc68f03e41eabb75da8bfe1defbdf6b19527 100644 --- a/app/views/admin/communication/website/menu/items/_form.html.erb +++ b/app/views/admin/communication/website/menu/items/_form.html.erb @@ -15,12 +15,24 @@ class: 'js-kind-input', data: { url: kind_switch_admin_communication_website_menu_items_path } } %> - <div class="d-none js-url-field"> + <div class="<%= 'd-none' unless item.url? %> js-url-field"> <%= f.input :url, as: :string %> </div> - <div class="d-none js-about-fields"> - <%= f.input :about_type, as: :hidden, input_html: { class: 'js-about-id' } %> - <%= f.association :about, collection: @website.list_of_pages, label_method: ->(p) { sanitize p[:label] }, value_method: ->(p) { p[:id] }, input_html: { class: 'js-about-id' } %> + <div class="<%= 'd-none' unless item.has_about? %> js-about-fields"> + <% + if item.has_about? + if item.kind_page? + about_collection = @website.list_of_pages + elsif item.kind_program? + elsif item.kind_news_category? + elsif item.kind_news_article? + end + else + about_collection = nil + end + %> + <%= f.input :about_type, as: :hidden, input_html: { class: 'js-about-type' } %> + <%= f.association :about, collection: about_collection, label_method: ->(p) { sanitize p[:label] }, value_method: ->(p) { p[:id] }, input_html: { class: 'js-about-id' } %> </div> </div> </div> diff --git a/app/views/admin/communication/website/menu/items/kind_switch.js.erb b/app/views/admin/communication/website/menu/items/kind_switch.js.erb index cbdb12e62bd2c407a28575026cc4cb5e1c2f547c..71103f36439b36b7d4b65d0f6e1d3ba8699bc4a4 100644 --- a/app/views/admin/communication/website/menu/items/kind_switch.js.erb +++ b/app/views/admin/communication/website/menu/items/kind_switch.js.erb @@ -1,6 +1,7 @@ -function displayAbout(options) { +function displayAbout(kind, options) { $('.js-url-field').addClass('d-none'); $('.js-about-fields').removeClass('d-none'); + $('.js-about-type').val(kind); $('.js-about-id').html(options); } @@ -18,7 +19,7 @@ function hideAbout() { options << "<option value=\"#{page[:id]}\">#{page[:label]}</option>" end %> - displayAbout("<%= j(raw(options.join(''))) %>"); + displayAbout('Communication::Website::Page', "<%= j(raw(options.join(''))) %>"); <% elsif @kind == 'program' %> displayAbout(); <% elsif @kind == 'news_category' %>