Fix order in structure

This commit is contained in:
chris 2013-01-03 19:12:52 +08:00
parent 5b289bc1d2
commit fa83dbf791
3 changed files with 17 additions and 10 deletions

View File

@ -47,10 +47,10 @@ class Item
new_parent = Item.find(new_parent) new_parent = Item.find(new_parent)
current_position_sibling = find_by_parent_and_position(new_parent, position.to_i) current_position_sibling = find_by_parent_and_position(new_parent, position.to_i)
if current_position_sibling 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 elsif self.parent != new_parent
self.parent = new_parent self.parent = new_parent
save! save
end end
end end
end end

View File

@ -24,14 +24,12 @@ class Page < Item
has_many :page_metas, :autosave => true, :dependent => :destroy has_many :page_metas, :autosave => true, :dependent => :destroy
accepts_nested_attributes_for :page_parts, :allow_destroy => true 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? } 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 def create_parts
page_design = self.design page_design = self.design
parent = self.parent 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 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 end
def generate_html def generate_html
Page.without_callback(:save, :after, :generate_html) do
self.content_translations = parse_page_noko(self, Site.first) self.content_translations = parse_page_noko(self, Site.first)
self.save
end
end end
end end

View File

@ -350,4 +350,16 @@ namespace :migrate do
ModuleApp.new.from_json(File.open("#{Rails.root}/vendor/built_in_modules/gallery/gallery.json").read).save ModuleApp.new.from_json(File.open("#{Rails.root}/vendor/built_in_modules/gallery/gallery.json").read).save
end 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 end