Sha256: d4598e8533f86b2920fe61c9284c013288b0fa7bcd15068b024e3dc80d32fa9f

Contents?: true

Size: 1.6 KB

Versions: 5

Compression:

Stored size: 1.6 KB

Contents

class Admin::PagesController < Admin::BaseController

  crudify :page, :conditions => "parent_id IS NULL", :order => "position ASC", :include => [:parts, :slugs, :children], :paging => false
  before_filter :find_pages_for_parents_list, :only => [:new, :create, :edit, :update]
  after_filter :expire_menu_fragment_caching, :only => [:create, :update, :destroy, :update_positions]

  def new
    @page = Page.new
    RefinerySetting.find_or_set(:default_page_parts, ["Body", "Side Body"]).each do |page_part|
      @page.parts << PagePart.new(:title => page_part)
    end
  end

protected
  def expire_menu_fragment_caching
    expire_fragment(%r{#{RefinerySetting.find_or_set(:refinery_menu_cache_action_suffix, "site_menu")}})
  end

  # This finds all of the pages that could possibly be assigned as the current page's parent.
  def find_pages_for_parents_list
    @pages_for_parents_list = []
    Page.find_all_by_parent_id(nil, :order => "position ASC").each do |page|
      @pages_for_parents_list << page
      @pages_for_parents_list += add_pages_branch_to_parents_list(page)
    end
    @pages_for_parents_list.flatten.compact!
    # We need to remove all references to the current page or any of its decendants or we get a nightmare.
    unless @page.nil? or @page.new_record?
      @pages_for_parents_list.reject! do |page|
        page.id == @page.id or @page.descendants.include?(page)
      end
    end
  end

  def add_pages_branch_to_parents_list(page)
    list = []
    page.children.each do |child|
      list << child
      list += add_pages_branch_to_parents_list(child) if child.children.any?
    end
    list
  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
refinerycms-0.9.6.34 vendor/plugins/pages/app/controllers/admin/pages_controller.rb
refinerycms-0.9.6.33 vendor/plugins/pages/app/controllers/admin/pages_controller.rb
refinerycms-0.9.6.32 vendor/plugins/pages/app/controllers/admin/pages_controller.rb
refinerycms-0.9.6.31 vendor/plugins/pages/app/controllers/admin/pages_controller.rb
refinerycms-0.9.6.30 vendor/plugins/pages/app/controllers/admin/pages_controller.rb