added capacity for pulling static pages from multiple directory source trees.
[leap_website.git] / app / controllers / pages_controller.rb
1 class PagesController < ApplicationController
2
3   class PageNotFound < Exception; end
4
5   layout :choose_layout
6   rescue_from ActionView::MissingTemplate, :with => :render_404
7   rescue_from PageNotFound, :with => :render_404
8
9   def show
10     @page = site.find_pages(params[:page])
11     if @page
12       respond_to do |format|
13         format.atom { render_atom_feed(@page) }
14         format.all { render_page(@page) }
15       end
16     else
17       raise PageNotFound.new
18     end
19   end
20
21   protected
22
23   def choose_layout
24     if @page && @page.props && @page.props.layout
25       @page.props.layout
26     else
27       'application'
28     end
29   end
30
31   def render_atom_feed(root)
32     if root
33       @pages = root.all_children.order_by(:posted_at, :direction => :desc).limit(PAGINATION_SIZE)
34       if @pages.any?
35         render :file => 'layouts/blog/feed', :layout => false, :content_type => 'application/atom+xml'
36       else
37         render_404
38       end
39     end
40   end
41
42 end
43