Add announcement admin and view template
This commit is contained in:
		
							parent
							
								
									4807066c68
								
							
						
					
					
						commit
						5570a2dfbf
					
				|  | @ -0,0 +1,66 @@ | ||||||
|  | class Admin::AnnouncementsController < ApplicationController | ||||||
|  |    | ||||||
|  |   layout "admin" | ||||||
|  |    | ||||||
|  |   def index | ||||||
|  |     @announcements = Announcement.all | ||||||
|  | 
 | ||||||
|  |     respond_to do |format| | ||||||
|  |       format.html # index.html.erb | ||||||
|  |       format.xml  { render :xml => @announcements } | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def new | ||||||
|  |     @announcement = Announcement.new | ||||||
|  | 
 | ||||||
|  |     respond_to do |format| | ||||||
|  |       format.html # new.html.erb | ||||||
|  |       format.xml  { render :xml => @announcement } | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def edit | ||||||
|  |     @announcement = Announcement.find(params[:id]) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def create | ||||||
|  |     @announcement = Announcement.new(params[:announcement]) | ||||||
|  | 
 | ||||||
|  |     respond_to do |format| | ||||||
|  |       if @announcement.save | ||||||
|  |         flash[:notice] = 'Announcement was successfully created.' | ||||||
|  |         format.html { redirect_to admin_announcements_path } | ||||||
|  |         format.xml  { render :xml => @announcement, :status => :created, :location => @announcement } | ||||||
|  |       else | ||||||
|  |         format.html { render :action => "new" } | ||||||
|  |         format.xml  { render :xml => @announcement.errors, :status => :unprocessable_entity } | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def update | ||||||
|  |     @announcement = Announcement.find(params[:id]) | ||||||
|  | 
 | ||||||
|  |     respond_to do |format| | ||||||
|  |       if @announcement.update_attributes(params[:announcement]) | ||||||
|  |         flash[:notice] = 'Announcement was successfully updated.' | ||||||
|  |         format.html { redirect_to admin_announcements_path } | ||||||
|  |         format.xml  { head :ok } | ||||||
|  |       else | ||||||
|  |         format.html { render :action => "edit" } | ||||||
|  |         format.xml  { render :xml => @announcement.errors, :status => :unprocessable_entity } | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def destroy | ||||||
|  |     @announcement = Announcement.find(params[:id]) | ||||||
|  |     @announcement.destroy | ||||||
|  | 
 | ||||||
|  |     respond_to do |format| | ||||||
|  |       format.html { redirect_to admin_announcements_path } | ||||||
|  |       format.xml  { head :ok } | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
|  | @ -1,85 +1,29 @@ | ||||||
| class AnnouncementsController < ApplicationController | class AnnouncementsController < ApplicationController | ||||||
|   # GET /announcements | 
 | ||||||
|   # GET /announcements.xml |  | ||||||
|   def index |   def index | ||||||
|     @announcements = Announcement.all |     @announcements = Announcement.all | ||||||
| 
 | 
 | ||||||
|     respond_to do |format| |     respond_to do |format| | ||||||
|       format.html # index.html.erb |       format.html { | ||||||
|  |         @page = Page.find_by_name( 'announcement_index') | ||||||
|  |         @page_options = { "announcements" => @announcements.map{ |a| a.to_liquid } } | ||||||
|  |         render_liquid_page | ||||||
|  |       } | ||||||
|       format.xml  { render :xml => @announcements } |       format.xml  { render :xml => @announcements } | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   # GET /announcements/1 |  | ||||||
|   # GET /announcements/1.xml |  | ||||||
|   def show |   def show | ||||||
|     @announcement = Announcement.find(params[:id]) |     @announcement = Announcement.find(params[:id]) | ||||||
| 
 | 
 | ||||||
|     respond_to do |format| |     respond_to do |format| | ||||||
|       format.html # show.html.erb |       format.html{ | ||||||
|  |         @page = Page.find_by_name( 'announcement_show') | ||||||
|  |         @page_options = { 'announcement' => @announcement.to_liquid } | ||||||
|  |         render_liquid_page         | ||||||
|  |       } | ||||||
|       format.xml  { render :xml => @announcement } |       format.xml  { render :xml => @announcement } | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   # GET /announcements/new |  | ||||||
|   # GET /announcements/new.xml |  | ||||||
|   def new |  | ||||||
|     @announcement = Announcement.new |  | ||||||
| 
 |  | ||||||
|     respond_to do |format| |  | ||||||
|       format.html # new.html.erb |  | ||||||
|       format.xml  { render :xml => @announcement } |  | ||||||
|     end |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   # GET /announcements/1/edit |  | ||||||
|   def edit |  | ||||||
|     @announcement = Announcement.find(params[:id]) |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   # POST /announcements |  | ||||||
|   # POST /announcements.xml |  | ||||||
|   def create |  | ||||||
|     @announcement = Announcement.new(params[:announcement]) |  | ||||||
| 
 |  | ||||||
|     respond_to do |format| |  | ||||||
|       if @announcement.save |  | ||||||
|         flash[:notice] = 'Announcement was successfully created.' |  | ||||||
|         format.html { redirect_to(@announcement) } |  | ||||||
|         format.xml  { render :xml => @announcement, :status => :created, :location => @announcement } |  | ||||||
|       else |  | ||||||
|         format.html { render :action => "new" } |  | ||||||
|         format.xml  { render :xml => @announcement.errors, :status => :unprocessable_entity } |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   # PUT /announcements/1 |  | ||||||
|   # PUT /announcements/1.xml |  | ||||||
|   def update |  | ||||||
|     @announcement = Announcement.find(params[:id]) |  | ||||||
| 
 |  | ||||||
|     respond_to do |format| |  | ||||||
|       if @announcement.update_attributes(params[:announcement]) |  | ||||||
|         flash[:notice] = 'Announcement was successfully updated.' |  | ||||||
|         format.html { redirect_to(@announcement) } |  | ||||||
|         format.xml  { head :ok } |  | ||||||
|       else |  | ||||||
|         format.html { render :action => "edit" } |  | ||||||
|         format.xml  { render :xml => @announcement.errors, :status => :unprocessable_entity } |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   # DELETE /announcements/1 |  | ||||||
|   # DELETE /announcements/1.xml |  | ||||||
|   def destroy |  | ||||||
|     @announcement = Announcement.find(params[:id]) |  | ||||||
|     @announcement.destroy |  | ||||||
| 
 |  | ||||||
|     respond_to do |format| |  | ||||||
|       format.html { redirect_to(announcements_url) } |  | ||||||
|       format.xml  { head :ok } |  | ||||||
|     end |  | ||||||
|   end |  | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -1,10 +1,22 @@ | ||||||
| # Filters added to this controller apply to all controllers in the application. |  | ||||||
| # Likewise, all the methods added will be available for all controllers. |  | ||||||
| 
 |  | ||||||
| class ApplicationController < ActionController::Base | class ApplicationController < ActionController::Base | ||||||
|   helper :all # include all helpers, all the time |  | ||||||
|   protect_from_forgery # See ActionController::RequestForgeryProtection for details |  | ||||||
| 
 | 
 | ||||||
|   # Scrub sensitive parameters from your log |   helper :all | ||||||
|   # filter_parameter_logging :password |   protect_from_forgery | ||||||
|  | 
 | ||||||
|  |   filter_parameter_logging :password | ||||||
|  |    | ||||||
|  |   Liquid::Template.register_filter(SnippetFilter) | ||||||
|  |    | ||||||
|  |   def render_liquid_page | ||||||
|  |     if @page | ||||||
|  |       @layout = @page.layout | ||||||
|  |       @page_options ||= {} | ||||||
|  |       @page_content = Liquid::Template.parse(@page.content).render(@page_options) | ||||||
|  |       @layout_content = (@page.layout)? @layout.content : "{{page_content}}" | ||||||
|  |       render :text => Liquid::Template.parse(@layout_content).render( 'page_content' => @page_content ) | ||||||
|  |     else | ||||||
|  |       render :text => '404 Not Found' | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  |    | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -1,22 +1,24 @@ | ||||||
| class PagesController < ApplicationController | class PagesController < ApplicationController | ||||||
|    |    | ||||||
|   Liquid::Template.register_filter(SnippetFilter) |   def index | ||||||
|  |     @page = Page.find_by_name('home') | ||||||
|  |     if @page | ||||||
|  |       render_liquid_page | ||||||
|  |     else | ||||||
|  |       render :text => 'You need a home page' | ||||||
|  |     end | ||||||
|  |   end | ||||||
|    |    | ||||||
|   def show |   def show | ||||||
|     @page = Page.find(:first, :conditions => { :name => params[:page_name], :is_published => true }) |     @page = Page.find_by_name(params[:page_name]) | ||||||
|      |      | ||||||
|     if @page && !@page.external_link.blank? |     if @page && !@page.external_link.blank? | ||||||
|       redirect_to @page.external_link |       redirect_to @page.external_link | ||||||
|     elsif @page && @page.use_engine |     elsif @page && @page.use_engine | ||||||
|       #model_class = Kernel.const_get( "Announcement" ) # page.use_engine |       #model_class = Kernel.const_get( "Announcement" ) # page.use_engine | ||||||
|       redirect_to announcements_path |       redirect_to announcements_path | ||||||
|     elsif @page |  | ||||||
|       @layout = @page.layout |  | ||||||
|       @page_content = Liquid::Template.parse(@page.content).render |  | ||||||
|       @layout_content = (@page.layout)? @layout.content : "{{page_content}}" |  | ||||||
|       render :text => Liquid::Template.parse(@layout_content).render( 'page_content' => @page_content ) |  | ||||||
|     else |     else | ||||||
|       render :text => '404 not found' |       render_liquid_page | ||||||
|     end |     end | ||||||
|      |      | ||||||
|   end |   end | ||||||
|  |  | ||||||
|  | @ -1,16 +1,13 @@ | ||||||
|  | require 'couch_foo' | ||||||
| class Announcement < CouchFoo::Base | class Announcement < CouchFoo::Base | ||||||
|    |    | ||||||
|    property :title, String |    property :title, String | ||||||
|    property :content, String |    property :content, String | ||||||
|     |     | ||||||
|    validates_presence_of :title |    validates_presence_of :title | ||||||
| 
 |  | ||||||
|    def self.load |  | ||||||
|      # hmm.... but one module will has many pages |  | ||||||
|    end |  | ||||||
|      |      | ||||||
|    def to_liquid |    def to_liquid | ||||||
|      { :title => self.title, :content => self.content } |      { "id" => self.id, "title" => self.title, "content" => self.content } | ||||||
|    end |    end | ||||||
|      |      | ||||||
| end | end | ||||||
|  | @ -21,6 +21,12 @@ class Page < CouchFoo::Base | ||||||
|     |     | ||||||
|    default_sort :position |    default_sort :position | ||||||
|     |     | ||||||
|  |    def self.find_by_name(page_name) | ||||||
|  |      Page.find(:first, :conditions => { :name => page_name, :is_published => true }) | ||||||
|  |    end | ||||||
|  |     | ||||||
|  |    protected | ||||||
|  |        | ||||||
|    def setup_layout_id |    def setup_layout_id | ||||||
|      if self.layout_name.blank? |      if self.layout_name.blank? | ||||||
|        self.layout_id = nil |        self.layout_id = nil | ||||||
|  | @ -28,8 +34,6 @@ class Page < CouchFoo::Base | ||||||
|        self.layout_id = Layout.find_by_name( self.layout_name ).id |        self.layout_id = Layout.find_by_name( self.layout_name ).id | ||||||
|      end |      end | ||||||
|    end |    end | ||||||
|      |  | ||||||
|    protected |  | ||||||
|     |     | ||||||
|    def setup_default_value |    def setup_default_value | ||||||
|      if self.position.blank? |      if self.position.blank? | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| <h1>Editing announcement</h1> | <h1>Editing announcement</h1> | ||||||
| 
 | 
 | ||||||
| <% form_for(@announcement) do |f| %> | <% form_for @announcement, :url => admin_announcement_path(@announcement) do |f| %> | ||||||
|   <%= f.error_messages %> |   <%= f.error_messages %> | ||||||
| 
 | 
 | ||||||
|   <p> |   <p> | ||||||
|  | @ -19,4 +19,4 @@ | ||||||
| <% end %> | <% end %> | ||||||
| 
 | 
 | ||||||
| <%= link_to 'Show', @announcement %> | | <%= link_to 'Show', @announcement %> | | ||||||
| <%= link_to 'Back', announcements_path %> | <%= link_to 'Back', admin_announcements_path %> | ||||||
|  | @ -0,0 +1,21 @@ | ||||||
|  | <h1>Listing announcements</h1> | ||||||
|  | 
 | ||||||
|  | <table> | ||||||
|  |   <tr> | ||||||
|  |     <th>Title</th> | ||||||
|  |     <th>Actions</th> | ||||||
|  |   </tr> | ||||||
|  | 
 | ||||||
|  | <% @announcements.each do |announcement| %> | ||||||
|  |   <tr> | ||||||
|  |     <td><%=h announcement.title %></td> | ||||||
|  |     <td><%= link_to 'Show', announcement_path(announcement) %> |   | ||||||
|  |         <%= link_to 'Edit', edit_admin_announcement_path(announcement) %> |  | ||||||
|  |         <%= link_to 'Destroy', admin_announcement_path(announcement), :confirm => 'Are you sure?', :method => :delete %></td> | ||||||
|  |   </tr> | ||||||
|  | <% end %> | ||||||
|  | </table> | ||||||
|  | 
 | ||||||
|  | <br /> | ||||||
|  | 
 | ||||||
|  | <%= link_to 'New announcement', new_admin_announcement_path %> | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| <h1>New announcement</h1> | <h1>New announcement</h1> | ||||||
| 
 | 
 | ||||||
| <% form_for(@announcement) do |f| %> | <% form_for @announcement, :url => admin_announcements_path do |f| %> | ||||||
|   <%= f.error_messages %> |   <%= f.error_messages %> | ||||||
| 
 | 
 | ||||||
|   <p> |   <p> | ||||||
|  | @ -18,4 +18,4 @@ | ||||||
|   </p> |   </p> | ||||||
| <% end %> | <% end %> | ||||||
| 
 | 
 | ||||||
| <%= link_to 'Back', announcements_path %> | <%= link_to 'Back', admin_announcements_path %> | ||||||
|  | @ -1,18 +0,0 @@ | ||||||
| <h1>Listing announcements</h1> |  | ||||||
| 
 |  | ||||||
| <table> |  | ||||||
|   <tr> |  | ||||||
|   </tr> |  | ||||||
| 
 |  | ||||||
| <% @announcements.each do |announcement| %> |  | ||||||
|   <tr> |  | ||||||
|     <td><%= link_to 'Show', announcement %></td> |  | ||||||
|     <td><%= link_to 'Edit', edit_announcement_path(announcement) %></td> |  | ||||||
|     <td><%= link_to 'Destroy', announcement, :confirm => 'Are you sure?', :method => :delete %></td> |  | ||||||
|   </tr> |  | ||||||
| <% end %> |  | ||||||
| </table> |  | ||||||
| 
 |  | ||||||
| <br /> |  | ||||||
| 
 |  | ||||||
| <%= link_to 'New announcement', new_announcement_path %> |  | ||||||
|  | @ -15,9 +15,11 @@ | ||||||
| <body> | <body> | ||||||
| <div class="container"> | <div class="container"> | ||||||
|   <div id ="nav" class="span-24"> |   <div id ="nav" class="span-24"> | ||||||
|  |     <%= link_to 'Home', root_path %> | | ||||||
|     <%= link_to 'Pages', admin_pages_path %> | |     <%= link_to 'Pages', admin_pages_path %> | | ||||||
|     <%= link_to 'Snippet', admin_snippets_path %> | |     <%= link_to 'Snippet', admin_snippets_path %> | | ||||||
|     <%= link_to 'Layout', admin_layouts_path %> |     <%= link_to 'Layout', admin_layouts_path %> | | ||||||
|  |     <%= link_to 'Announcement', admin_announcements_path %> | ||||||
|   </div> |   </div> | ||||||
|    |    | ||||||
|   <%= yield %> |   <%= yield %> | ||||||
|  |  | ||||||
|  | @ -1,6 +1,4 @@ | ||||||
| ActionController::Routing::Routes.draw do |map| | ActionController::Routing::Routes.draw do |map| | ||||||
|   map.resources :announcements |  | ||||||
| 
 |  | ||||||
|    |    | ||||||
|   map.resources :announcements |   map.resources :announcements | ||||||
|    |    | ||||||
|  | @ -8,6 +6,8 @@ ActionController::Routing::Routes.draw do |map| | ||||||
|     admin.resources :pages |     admin.resources :pages | ||||||
|     admin.resources :layouts |     admin.resources :layouts | ||||||
|     admin.resources :snippets |     admin.resources :snippets | ||||||
|  |      | ||||||
|  |     admin.resources :announcements | ||||||
|   end |   end | ||||||
|    |    | ||||||
|   # The priority is based upon order of creation: first created -> highest priority. |   # The priority is based upon order of creation: first created -> highest priority. | ||||||
|  | @ -42,7 +42,7 @@ ActionController::Routing::Routes.draw do |map| | ||||||
|   #   end |   #   end | ||||||
| 
 | 
 | ||||||
|   # You can have the root of your site routed with map.root -- just remember to delete public/index.html. |   # You can have the root of your site routed with map.root -- just remember to delete public/index.html. | ||||||
|   # map.root :controller => "welcome" |   map.root :controller => "pages" | ||||||
| 
 | 
 | ||||||
|   # See how all your routes lay out with "rake routes" |   # See how all your routes lay out with "rake routes" | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue