diff --git a/app/controllers/admin/communication/website/menu/items_controller.rb b/app/controllers/admin/communication/website/menu/items_controller.rb index b996c1f3bced137ce73341731db2647513ac8c8b..35e393a59443812cd1e142da2ce18684929db45f 100644 --- a/app/controllers/admin/communication/website/menu/items_controller.rb +++ b/app/controllers/admin/communication/website/menu/items_controller.rb @@ -6,12 +6,14 @@ class Admin::Communication::Website::Menu::ItemsController < Admin::Communicatio parent_id = params[:parentId].blank? ? nil : params[:parentId] ids = params[:ids] || [] ids.each.with_index do |id, index| - category = @menu.items.find(id) - category.update( + item = @menu.items.find(id) + item.update( parent_id: parent_id, - position: index + 1 + position: index + 1, + skip_publication_callback: true ) end + @menu.force_publish! end def show diff --git a/app/models/communication/website/menu/item.rb b/app/models/communication/website/menu/item.rb index 347d3fcfcbb4cfc965568b00052a97137bf8c96f..39f079a918c9584caeeaf63cb0fba2a3ae152110 100644 --- a/app/models/communication/website/menu/item.rb +++ b/app/models/communication/website/menu/item.rb @@ -34,9 +34,11 @@ class Communication::Website::Menu::Item < ApplicationRecord include WithTree + attr_accessor :skip_publication_callback + belongs_to :university belongs_to :website, class_name: 'Communication::Website' - belongs_to :menu, class_name: 'Communication::Website::Menu', touch: true + belongs_to :menu, class_name: 'Communication::Website::Menu' belongs_to :parent, class_name: 'Communication::Website::Menu::Item', optional: true belongs_to :about, polymorphic: true, optional: true has_many :children, @@ -60,6 +62,7 @@ class Communication::Website::Menu::Item < ApplicationRecord validates :about, presence: true, if: :has_about? before_create :set_position + after_commit :force_publish_menu, unless: :skip_publication_callback scope :ordered, -> { order(position: :asc) } @@ -112,6 +115,10 @@ class Communication::Website::Menu::Item < ApplicationRecord kind_page? || kind_program? || kind_news_category? || kind_news_article? end + def force_publish_menu + menu.force_publish! + end + protected def set_position