Sha256: 7ebfeb32ede619f78967d2fdb54d9c85a7973eca2bbc27e5f31e0fce756bc13f

Contents?: true

Size: 1.11 KB

Versions: 1

Compression:

Stored size: 1.11 KB

Contents

module Alchemy
  class ContentSweeper < ActionController::Caching::Sweeper

    observe Element, Page

    def after_create(object)
      if object.class.to_s == "Alchemy::Page"
        expire_contents_displayed_as_select(object)
      end
    end

    def after_update(object)
      if object.class.to_s == "Alchemy::Element"
        expire_cache_for(object.contents)
      elsif object.class.to_s == "Alchemy::Page"
        expire_contents_displayed_as_select(object)
      end
    end

    def after_destroy(object)
      if object.class.to_s == "Alchemy::Element"
        expire_cache_for(object.contents)
      elsif object.class.to_s == "Alchemy::Page"
        expire_contents_displayed_as_select(object)
      end
    end

  private

    def expire_cache_for(contents)
      contents.each do |content|
        expire_fragment(content)
      end
    end

    # Expires all EssenceSelect content editor cache fragments.
    def expire_contents_displayed_as_select(page)
      return unless page.urlname_changed? || page.name_changed?
      Content.essence_selects.each { |content| expire_fragment(content) }
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
alchemy_cms-2.2.rc14 app/sweepers/alchemy/content_sweeper.rb