Sha256: 7d4af4a5bfbf24086d9f11bb58d12fd005c28c5685016c5ae9fa8aa277f3c08f

Contents?: true

Size: 1.47 KB

Versions: 22

Compression:

Stored size: 1.47 KB

Contents

module ComfortableMexicanSofa::ControllerMethods
  
  def self.included(base)
    
    # If application controller doesn't have template associated with it
    # CMS will attempt to find one. This is so you don't have to explicitly
    # call render :cms_page => '/something'
    base.rescue_from 'ActionView::MissingTemplate' do |e|
      begin
        render :cms_page => request.path
      rescue ComfortableMexicanSofa::MissingPage
        raise e
      end
    end
    
    # Now you can render cms_page simply by calling:
    #   render :cms_page => '/path/to/page'
    # This way application controllers can use CMS content while populating
    # instance variables that can be used in partials (that are included by
    # by the cms page and/or layout)
    def render(options = {}, locals = {}, &block)
      if options.is_a?(Hash) && path = options.delete(:cms_page)
        site = Cms::Site.find_by_hostname(request.host.downcase)
        page = site && site.pages.find_by_full_path(path)
        if page
          cms_app_layout = page.layout.try(:app_layout)
          options[:layout] ||= cms_app_layout.blank?? nil : cms_app_layout
          options[:inline] = page.content
          @cms_page = page
          super(options, locals, &block)
        else
          raise ComfortableMexicanSofa::MissingPage.new(path)
        end
      else
        super(options, locals, &block)
      end
    end
  end
end

ActionController::Base.send :include, ComfortableMexicanSofa::ControllerMethods

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
comfortable_mexican_sofa-1.4.9 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.4.8 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.4.7 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.4.6 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.4.5 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.4.4 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.4.3 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.4.2 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.4.1 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.4.0 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.3.8 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.3.7 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.3.6 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.3.5 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.3.4 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.3.3 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.3.2 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.3.1 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.3.0 lib/comfortable_mexican_sofa/controller_methods.rb
comfortable_mexican_sofa-1.2.8 lib/comfortable_mexican_sofa/controller_methods.rb