From fa83dbf79140f95a5abd985596fa6068af6a148f Mon Sep 17 00:00:00 2001 From: chris Date: Thu, 3 Jan 2013 19:12:52 +0800 Subject: [PATCH] Fix order in structure --- app/models/item.rb | 4 ++-- app/models/page.rb | 11 +++-------- lib/tasks/migrate.rake | 12 ++++++++++++ 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/app/models/item.rb b/app/models/item.rb index 1809e2b2..6b34d8b8 100644 --- a/app/models/item.rb +++ b/app/models/item.rb @@ -47,10 +47,10 @@ class Item new_parent = Item.find(new_parent) current_position_sibling = find_by_parent_and_position(new_parent, position.to_i) if current_position_sibling - current_position_sibling.at_bottom? ? move_below(current_position_sibling) : move_above(current_position_sibling) + move_above(current_position_sibling) elsif self.parent != new_parent self.parent = new_parent - save! + save end end end diff --git a/app/models/page.rb b/app/models/page.rb index 5c1a7b24..bc257eaa 100644 --- a/app/models/page.rb +++ b/app/models/page.rb @@ -24,14 +24,12 @@ class Page < Item has_many :page_metas, :autosave => true, :dependent => :destroy accepts_nested_attributes_for :page_parts, :allow_destroy => true - before_save :delete_empty_frontend_field before_save :create_parts, if: Proc.new { |page| page.new_record? || page.design_id_changed? } - after_save :generate_html + before_save :delete_empty_frontend_field, :generate_html -# protected + protected def create_parts - page_design = self.design parent = self.parent menu_part = parent.page_parts.detect{|page_part| page_part.kind.eql?('public_r_tag') && page_part.public_r_tag.eql?('sub_menu') && page_part.public_r_tag_object_id.eql?(parent.id.to_s)} if parent @@ -73,10 +71,7 @@ class Page < Item end def generate_html - Page.without_callback(:save, :after, :generate_html) do - self.content_translations = parse_page_noko(self, Site.first) - self.save - end + self.content_translations = parse_page_noko(self, Site.first) end end diff --git a/lib/tasks/migrate.rake b/lib/tasks/migrate.rake index 74d1f53a..216a3ac1 100644 --- a/lib/tasks/migrate.rake +++ b/lib/tasks/migrate.rake @@ -350,4 +350,16 @@ namespace :migrate do ModuleApp.new.from_json(File.open("#{Rails.root}/vendor/built_in_modules/gallery/gallery.json").read).save end + task :reorder_items => :environment do + reorder_children(Item.root) + end + + def reorder_children(parent) + parent.children.each_with_index do |child, i| + child.position = i + child.save + reorder_children(child) if child.children + end + end + end