Sha256: ea6f92620ebd8372a19445f9fac3ec7486c5e0cccec74d2c85d729086b84a2af

Contents?: true

Size: 1.29 KB

Versions: 2

Compression:

Stored size: 1.29 KB

Contents

class PageSweeper < ActionController::Caching::Sweeper
  observe :spud_page,:spud_menu_item

  def before_save(record)
    if record.is_a?(SpudPage) && record.url_name_was.blank? == false && record.url_name_was != record.url_name
      if Spud::Cms.cache_mode == :full_page
        expire_page cache_path_for_page(record.url_name_was)
      elsif Spud::Cms.cache_mode == :action
        expire_action cache_path_for_page(record.url_name_was)
      end
    end
  end

  def after_save(record)
    expire_cache_for(record)
    expire_page cms_sitemap_path(:format => :xml)
    expire_page spud_sitemap_path(:format => :xml)
  end

  def after_destroy(record)
    expire_cache_for(record)
    expire_page cms_sitemap_path
    expire_page spud_sitemap_path
  end

private
  def expire_cache_for(record)
    if record.is_a?(SpudPage)
      if Spud::Cms.cache_mode == :full_page
        expire_page cache_path_for_page(record.url_name)
      elsif Spud::Cms.cache_mode == :action
        expire_action cache_path_for_page(record.url_name)
      end
    else
      Rails.cache.clear
      SpudPage.published_pages.all.each {|page| expire_cache_for(page)}
    end
  end

  def cache_path_for_page(url_name)
    if url_name == Spud::Cms.root_page_name
      root_path
    else
      page_path(:id => url_name)
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tb_cms-1.0.2 app/observers/page_sweeper.rb
tb_cms-1.0.1 app/observers/page_sweeper.rb