Sha256: 711f32d764674b73c798f6fb38b0102dba5041f4c18da44d8c44c12f33fa6281

Contents?: true

Size: 1.51 KB

Versions: 8

Compression:

Stored size: 1.51 KB

Contents

require 'actionpack/action_caching'
require 'actionpack/page_caching'
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_url_for_page(record.url_name_was)
      end
    end
  end

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

  def after_destroy(record)
    expire_cache_for(record)
    expire_page spud_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_url_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

  def cache_url_for_page(url_name)
    if url_name == Spud::Cms.root_page_name
      root_url
    else
      page_url(:id => url_name)
    end
  end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
spud_cms-1.0.2 app/observers/page_sweeper.rb
spud_cms-1.0.1 app/observers/page_sweeper.rb
spud_cms-1.0.0 app/observers/page_sweeper.rb
spud_cms-1.0.0.rc1.4 app/observers/page_sweeper.rb
spud_cms-1.0.0.rc1.3 app/observers/page_sweeper.rb
spud_cms-1.0.0.rc1.2 app/observers/page_sweeper.rb
spud_cms-1.0.0.rc1.1 app/observers/page_sweeper.rb
spud_cms-1.0.0.RC1 app/observers/page_sweeper.rb