Sha256: 095ac3b79da55d73e6e12725fa2494cd8eb8a591e5fec9d25e0ea9c57abff8fe

Contents?: true

Size: 968 Bytes

Versions: 4

Compression:

Stored size: 968 Bytes

Contents

class PagesController < ApplicationController
  include SpudCmsLayoutActions

  respond_to :html
  before_action :set_default_content_type

  def show
    # prevents 500 errors if a url like "/home.jpg" is hit
    if request.format != :html
      render_404
      return
    end

    url_name = !params[:id].blank? ? params[:id] : Spud::Cms.root_page_name
    @page = SpudPage.published_pages.find_by(url_name: url_name)

    if @page.blank?
      render_404
      return
    end

    if @page.is_private?
      return if defined?(require_user) && require_user == false
    end

    layout = @page.layout || Spud::Cms.default_page_layout

    action_name = "#{layout}_action"
    send(action_name, request.method.downcase.to_sym) if respond_to?(action_name)

    render layout: layout
  end

  private

  def render_404
    raise Spud::NotFoundError, item: 'page'
   end

  def set_default_content_type
    request.format = :html if params[:format].blank?
   end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
tb_cms-1.3.2 app/controllers/pages_controller.rb
tb_cms-1.3.1 app/controllers/pages_controller.rb
tb_cms-1.3.0 app/controllers/pages_controller.rb
tb_cms-1.3.beta1 app/controllers/pages_controller.rb