Class: PagesController

Inherits:
ApplicationController
  • Object
show all
Defined in:
app/controllers/pages_controller.rb

Instance Method Summary collapse

Instance Method Details

#showObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'app/controllers/pages_controller.rb', line 6

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

  # MultiSite Code Block
  if params[:id].blank? && Spud::Core.multisite_mode_enabled
    site_config = Spud::Core.site_config_for_host(request.host_with_port)
    if !site_config.blank?
      cms_config = Spud::Cms.site_config_for_short_name(site_config[:short_name])
      url_name = cms_config[:root_page_name] if !cms_config.blank? && !cms_config[:root_page_name].blank?
    end
  end

  @page = SpudPage.published_pages.where(:url_name => url_name)

  # MultiSite Code Block
  if Spud::Core.multisite_mode_enabled
    site_config = Spud::Core.site_config_for_host(request.host_with_port)
    @page = @page.site(!site_config.blank? ? site_config[:site_id] : nil)
  end

  @page = @page.first
  if @page.blank?
    @permalink = SpudPermalink.where(:url_name => url_name)

    # MultiSite Code Block
    if Spud::Core.multisite_mode_enabled
      @permalink = @permalink.site(!site_config.blank? ? site_config[:site_id] : nil)
    end
    @permalink = @permalink.first

    if !@permalink.blank? && @permalink.attachment_type == 'SpudPage'
      redirect_to @permalink.attachment.url_name == Spud::Cms.root_page_name ? root_url() : page_url(:id => @permalink.attachment.url_name) , :status => :moved_permanently and return
    end

    render_404
    return
  end

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

  layout = Spud::Cms.default_page_layout

  # MultiSite Code Block
  if Spud::Core.multisite_mode_enabled && !site_config.blank?
    cms_config = Spud::Cms.site_config_for_short_name(site_config[:short_name])
    layout = cms_config[:default_page_layout] if !cms_config.blank? && !cms_config[:default_page_layout].blank?
  end

  layout = @page.layout || layout


  render :layout => layout

end