Sha256: c0000f967babc9bba3b6ab9980f3db635a99113ca2a98a6f28de127ef7c532f5

Contents?: true

Size: 969 Bytes

Versions: 2

Compression:

Stored size: 969 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_ignoring_case(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 TbCore::NotFoundError, item: 'page'
  end

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

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tb_cms-1.3.6 app/controllers/pages_controller.rb
tb_cms-1.3.5 app/controllers/pages_controller.rb