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 | ||||
|   # GET /announcements | ||||
|   # GET /announcements.xml | ||||
| 
 | ||||
|   def index | ||||
|     @announcements = Announcement.all | ||||
| 
 | ||||
|     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 } | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   # GET /announcements/1 | ||||
|   # GET /announcements/1.xml | ||||
|   def show | ||||
|     @announcement = Announcement.find(params[:id]) | ||||
| 
 | ||||
|     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 } | ||||
|     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 | ||||
|  |  | |||
|  | @ -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 | ||||
|   helper :all # include all helpers, all the time | ||||
|   protect_from_forgery # See ActionController::RequestForgeryProtection for details | ||||
| 
 | ||||
|   # Scrub sensitive parameters from your log | ||||
|   # filter_parameter_logging :password | ||||
|   helper :all | ||||
|   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 | ||||
|  |  | |||
|  | @ -1,22 +1,24 @@ | |||
| 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 | ||||
|     @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? | ||||
|       redirect_to @page.external_link | ||||
|     elsif @page && @page.use_engine | ||||
|       #model_class = Kernel.const_get( "Announcement" ) # page.use_engine | ||||
|       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 | ||||
|       render :text => '404 not found' | ||||
|       render_liquid_page | ||||
|     end | ||||
|      | ||||
|   end | ||||
|  |  | |||
|  | @ -1,16 +1,13 @@ | |||
| require 'couch_foo' | ||||
| class Announcement < CouchFoo::Base | ||||
|    | ||||
|    property :title, String | ||||
|    property :content, String | ||||
|     | ||||
|    validates_presence_of :title | ||||
| 
 | ||||
|    def self.load | ||||
|      # hmm.... but one module will has many pages | ||||
|    end | ||||
|      | ||||
|    def to_liquid | ||||
|      { :title => self.title, :content => self.content } | ||||
|      { "id" => self.id, "title" => self.title, "content" => self.content } | ||||
|    end | ||||
|      | ||||
| end | ||||
|  | @ -21,6 +21,12 @@ class Page < CouchFoo::Base | |||
|     | ||||
|    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 | ||||
|      if self.layout_name.blank? | ||||
|        self.layout_id = nil | ||||
|  | @ -28,8 +34,6 @@ class Page < CouchFoo::Base | |||
|        self.layout_id = Layout.find_by_name( self.layout_name ).id | ||||
|      end | ||||
|    end | ||||
|      | ||||
|    protected | ||||
|     | ||||
|    def setup_default_value | ||||
|      if self.position.blank? | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| <h1>Editing announcement</h1> | ||||
| 
 | ||||
| <% form_for(@announcement) do |f| %> | ||||
| <% form_for @announcement, :url => admin_announcement_path(@announcement) do |f| %> | ||||
|   <%= f.error_messages %> | ||||
| 
 | ||||
|   <p> | ||||
|  | @ -19,4 +19,4 @@ | |||
| <% end %> | ||||
| 
 | ||||
| <%= 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> | ||||
| 
 | ||||
| <% form_for(@announcement) do |f| %> | ||||
| <% form_for @announcement, :url => admin_announcements_path do |f| %> | ||||
|   <%= f.error_messages %> | ||||
| 
 | ||||
|   <p> | ||||
|  | @ -18,4 +18,4 @@ | |||
|   </p> | ||||
| <% 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> | ||||
| <div class="container"> | ||||
|   <div id ="nav" class="span-24"> | ||||
|     <%= link_to 'Home', root_path %> | | ||||
|     <%= link_to 'Pages', admin_pages_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> | ||||
|    | ||||
|   <%= yield %> | ||||
|  |  | |||
|  | @ -1,6 +1,4 @@ | |||
| ActionController::Routing::Routes.draw do |map| | ||||
|   map.resources :announcements | ||||
| 
 | ||||
|    | ||||
|   map.resources :announcements | ||||
|    | ||||
|  | @ -8,6 +6,8 @@ ActionController::Routing::Routes.draw do |map| | |||
|     admin.resources :pages | ||||
|     admin.resources :layouts | ||||
|     admin.resources :snippets | ||||
|      | ||||
|     admin.resources :announcements | ||||
|   end | ||||
|    | ||||
|   # The priority is based upon order of creation: first created -> highest priority. | ||||
|  | @ -42,7 +42,7 @@ ActionController::Routing::Routes.draw do |map| | |||
|   #   end | ||||
| 
 | ||||
|   # 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" | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue