Module: Cmtool::Includes::PagesController

Extended by:
ActiveSupport::Concern
Defined in:
lib/cmtool/includes/pages_controller.rb

Instance Method Summary collapse

Instance Method Details

#homeObject



5
6
7
8
9
10
# File 'lib/cmtool/includes/pages_controller.rb', line 5

def home
  page_name = "home"
  @page = find_page(page_name)
  @sub_pages = @page.children.select{|child| child.in_menu.present? }
  render :template => "pages/#{page_name}", :layout => @page.layout.presence || ::Page.layouts.first.to_s
end

#not_foundObject



27
28
29
30
31
# File 'lib/cmtool/includes/pages_controller.rb', line 27

def not_found
  @page = ::Page.find_by_name_and_locale('404', I18n.locale.to_s) || ::Page.new(name: '404', body: "404 Page Not Found")
  @sub_pages = []
  render template: 'pages/404', layout: @page.layout.presence || ::Page.layouts.first.to_s, status: 404
end

#showObject

General catcher for pages



13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/cmtool/includes/pages_controller.rb', line 13

def show
  @page = ::Page.find_by_name_and_locale(params[:name], I18n.locale.to_s)
  not_found and return unless @page

  @sub_pages = [@page] + @page.children.select{|child| child.in_menu.present? }
  template = "pages/#{@page.name}"
  if template_exists?(template)
    render :template => template, :layout => @page.layout.presence || ::Page.layouts.first
    return
  else
    render :layout => @page.layout.presence || ::Page.layouts.first
  end
end

#sitemapObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/cmtool/includes/pages_controller.rb', line 33

def sitemap
  respond_to do |format|
    format.xml do
      pages_xml = ::Page.for_sitemap.map do |page|
        uri = page_url(page.name, locale: page.locale)
        "<url><loc>#{uri}</loc><lastmod>#{page.updated_at.strftime('%Y-%m-%d')}</lastmod></url>"
      end.join("\n")
      result = <<-XML
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
#{pages_xml}
</urlset>
      XML
      render xml: result
    end
  end
end