Sha256: 02f510f72f1f1091c4e4d79de2923faee12d6ba7bc3c0f32b45f6f03dd5495b6

Contents?: true

Size: 1.01 KB

Versions: 45

Compression:

Stored size: 1.01 KB

Contents

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

    observe Page

    def after_update(page)
      unless page.layoutpage?
        expire_page(page)
        check_multipage_elements(page)
      end
    end

    def after_destroy(page)
      unless page.layoutpage?
        expire_page(page)
        check_multipage_elements(page)
      end
    end

  private

    def check_multipage_elements(page)
      page.elements.each do |element|
        # are their pages beneath mine?
        if !element.to_be_sweeped_pages.detect { |p| p != page }.nil?
          # yepp! there are more pages then mine
          pages = element.to_be_sweeped_pages.published.where(:locked => false)
          if pages.any?
            # expire current page, even if it's locked
            pages.push(page).each do |page|
              expire_page(page)
            end
          end
        end
      end
    end

    def expire_page(page)
      return if page.do_not_sweep
      expire_action(page.cache_key)
    end

  end
end

Version data entries

45 entries across 45 versions & 1 rubygems

Version Path
alchemy_cms-2.9.1 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.9.0 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.8.3 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.7.5 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.6.3 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.7.4 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.8.2 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.8.1 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.7.3 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.7.2 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.7.1 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.7.0 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.6.2.1 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.6.2 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.6.1 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.6.0 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.6.0.rc5 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.5.3.1 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.5.3 app/sweepers/alchemy/pages_sweeper.rb
alchemy_cms-2.5.2.2 app/sweepers/alchemy/pages_sweeper.rb