Add admin/pages scaffold and basic page render
This commit is contained in:
		
							parent
							
								
									40831c1314
								
							
						
					
					
						commit
						66604d00f4
					
				|  | @ -0,0 +1,82 @@ | ||||||
|  | class Admin::PagesController < ApplicationController | ||||||
|  |   # GET /pages | ||||||
|  |   # GET /pages.xml | ||||||
|  |   def index | ||||||
|  |     @pages = Page.all | ||||||
|  | 
 | ||||||
|  |     respond_to do |format| | ||||||
|  |       format.html # index.html.erb | ||||||
|  |       format.xml  { render :xml => @pages } | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   # GET /pages/1 | ||||||
|  |   # GET /pages/1.xml | ||||||
|  |   def show | ||||||
|  |     @page = Page.find(params[:id]) | ||||||
|  |      | ||||||
|  |     redirect_to "/#{@page.name}" | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   # GET /pages/new | ||||||
|  |   # GET /pages/new.xml | ||||||
|  |   def new | ||||||
|  |     @page = Page.new | ||||||
|  | 
 | ||||||
|  |     respond_to do |format| | ||||||
|  |       format.html # new.html.erb | ||||||
|  |       format.xml  { render :xml => @pages } | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   # GET /pages/1/edit | ||||||
|  |   def edit | ||||||
|  |     @page = Page.find(params[:id]) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   # POST /pages | ||||||
|  |   # POST /pages.xml | ||||||
|  |   def create | ||||||
|  |     @page = Page.new(params[:page]) | ||||||
|  | 
 | ||||||
|  |     respond_to do |format| | ||||||
|  |       if @page.save | ||||||
|  |         flash[:notice] = 'Page was successfully created.' | ||||||
|  |         format.html { redirect_to admin_pages_url } | ||||||
|  |         format.xml  { render :xml => @page, :status => :created, :location => @pages } | ||||||
|  |       else | ||||||
|  |         format.html { render :action => "new" } | ||||||
|  |         format.xml  { render :xml => @page.errors, :status => :unprocessable_entity } | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   # PUT /pages/1 | ||||||
|  |   # PUT /pages/1.xml | ||||||
|  |   def update | ||||||
|  |     @page = Page.find(params[:id]) | ||||||
|  | 
 | ||||||
|  |     respond_to do |format| | ||||||
|  |       if @page.update_attributes(params[:page]) | ||||||
|  |         flash[:notice] = 'Page was successfully updated.' | ||||||
|  |         format.html { redirect_to admin_pages_url } | ||||||
|  |         format.xml  { head :ok } | ||||||
|  |       else | ||||||
|  |         format.html { render :action => "edit" } | ||||||
|  |         format.xml  { render :xml => @page.errors, :status => :unprocessable_entity } | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   # DELETE /pages/1 | ||||||
|  |   # DELETE /pages/1.xml | ||||||
|  |   def destroy | ||||||
|  |     @page = Page.find(params[:id]) | ||||||
|  |     @page.destroy | ||||||
|  | 
 | ||||||
|  |     respond_to do |format| | ||||||
|  |       format.html { redirect_to admin_pages_url } | ||||||
|  |       format.xml  { head :ok } | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
|  | @ -0,0 +1,14 @@ | ||||||
|  | class PagesController < ApplicationController | ||||||
|  |    | ||||||
|  |   def show | ||||||
|  |     @page = Page.find_by_name(params[:page_name]) | ||||||
|  |      | ||||||
|  |     if @page | ||||||
|  |       render :text => @page.content | ||||||
|  |     else | ||||||
|  |       render :text => '404 not found' | ||||||
|  |     end | ||||||
|  |      | ||||||
|  |   end | ||||||
|  |    | ||||||
|  | end | ||||||
|  | @ -0,0 +1,2 @@ | ||||||
|  | module PagesHelper | ||||||
|  | end | ||||||
|  | @ -0,0 +1,9 @@ | ||||||
|  | class Page < CouchFoo::Base | ||||||
|  |    | ||||||
|  |    property :name, String | ||||||
|  |    property :parent_name, String | ||||||
|  |    property :content, String | ||||||
|  |     | ||||||
|  |    validates_presence_of :name | ||||||
|  |     | ||||||
|  | end | ||||||
|  | @ -0,0 +1,21 @@ | ||||||
|  | <h1>Editing pages</h1> | ||||||
|  | 
 | ||||||
|  | <% form_for @page, :url => admin_page_path(@page) do |f| %> | ||||||
|  |   <%= f.error_messages %> | ||||||
|  |    | ||||||
|  |   <p> | ||||||
|  |   <%= f.label :name, "Name" %> | ||||||
|  |   <%= f.text_field :name %> | ||||||
|  |   </p> | ||||||
|  |    | ||||||
|  |   <p> | ||||||
|  |   <%= f.label :content, "Content" %> | ||||||
|  |   <%= f.text_area :content %> | ||||||
|  |   </p> | ||||||
|  |    | ||||||
|  |   <p> | ||||||
|  |     <%= f.submit 'Update' %> | ||||||
|  |   </p> | ||||||
|  | <% end %> | ||||||
|  | 
 | ||||||
|  | <%= link_to 'Back', admin_pages_path %> | ||||||
|  | @ -0,0 +1,18 @@ | ||||||
|  | <h1>Listing pages</h1> | ||||||
|  | 
 | ||||||
|  | <table> | ||||||
|  |   <tr> | ||||||
|  |   </tr> | ||||||
|  | 
 | ||||||
|  | <% @pages.each do |page| %> | ||||||
|  |   <tr> | ||||||
|  |     <td><%= link_to page.name, admin_page_path(page) %></td> | ||||||
|  |     <td><%= link_to 'Edit', edit_admin_page_path(page) %></td> | ||||||
|  |     <td><%= link_to 'Destroy', admin_page_path(page), :confirm => 'Are you sure?', :method => :delete %></td> | ||||||
|  |   </tr> | ||||||
|  | <% end %> | ||||||
|  | </table> | ||||||
|  | 
 | ||||||
|  | <br /> | ||||||
|  | 
 | ||||||
|  | <%= link_to 'New pages', new_admin_page_path %> | ||||||
|  | @ -0,0 +1,21 @@ | ||||||
|  | <h1>New pages</h1> | ||||||
|  | 
 | ||||||
|  | <% form_for :page, :url => admin_pages_path do |f| %> | ||||||
|  |   <%= f.error_messages %> | ||||||
|  | 
 | ||||||
|  |   <p> | ||||||
|  |   <%= f.label :name, "Name" %> | ||||||
|  |   <%= f.text_field :name %> | ||||||
|  |   </p> | ||||||
|  |    | ||||||
|  |   <p> | ||||||
|  |   <%= f.label :content, "Content" %> | ||||||
|  |   <%= f.text_area :content %> | ||||||
|  |   </p> | ||||||
|  |    | ||||||
|  |   <p> | ||||||
|  |     <%= f.submit 'Create' %> | ||||||
|  |   </p> | ||||||
|  | <% end %> | ||||||
|  | 
 | ||||||
|  | <%= link_to 'Back', admin_pages_path %> | ||||||
|  | @ -0,0 +1,17 @@ | ||||||
|  | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | ||||||
|  |        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||||||
|  | 
 | ||||||
|  | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> | ||||||
|  | <head> | ||||||
|  |   <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> | ||||||
|  |   <title>Pages: <%= controller.action_name %></title> | ||||||
|  |   <%= stylesheet_link_tag 'scaffold' %> | ||||||
|  | </head> | ||||||
|  | <body> | ||||||
|  | 
 | ||||||
|  | <p style="color: green"><%= flash[:notice] %></p> | ||||||
|  | 
 | ||||||
|  | <%= yield %> | ||||||
|  | 
 | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
|  | @ -0,0 +1,22 @@ | ||||||
|  | # SQLite version 3.x | ||||||
|  | #   gem install sqlite3-ruby (not necessary on OS X Leopard) | ||||||
|  | development: | ||||||
|  |   adapter: sqlite3 | ||||||
|  |   database: db/development.sqlite3 | ||||||
|  |   pool: 5 | ||||||
|  |   timeout: 5000 | ||||||
|  | 
 | ||||||
|  | # Warning: The database defined as "test" will be erased and | ||||||
|  | # re-generated from your development database when you run "rake". | ||||||
|  | # Do not set this db to the same as development or production. | ||||||
|  | test: | ||||||
|  |   adapter: sqlite3 | ||||||
|  |   database: db/test.sqlite3 | ||||||
|  |   pool: 5 | ||||||
|  |   timeout: 5000 | ||||||
|  | 
 | ||||||
|  | production: | ||||||
|  |   adapter: sqlite3 | ||||||
|  |   database: db/production.sqlite3 | ||||||
|  |   pool: 5 | ||||||
|  |   timeout: 5000 | ||||||
|  | @ -33,9 +33,13 @@ Rails::Initializer.run do |config| | ||||||
| 
 | 
 | ||||||
|   # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. |   # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. | ||||||
|   # Run "rake -D time" for a list of tasks for finding time zone names. |   # Run "rake -D time" for a list of tasks for finding time zone names. | ||||||
|   config.time_zone = 'UTC' |   config.time_zone = "Taipei" | ||||||
|    |    | ||||||
|   # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. |   # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. | ||||||
|   # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}')] |   # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}')] | ||||||
|   # config.i18n.default_locale = :de |   # config.i18n.default_locale = :de | ||||||
|  |    | ||||||
| end | end | ||||||
|  | 
 | ||||||
|  | require 'couch_foo' | ||||||
|  | CouchFoo::Base.set_database(:host => "http://localhost:5984", :database => "r4") | ||||||
|  | @ -1,4 +1,9 @@ | ||||||
| ActionController::Routing::Routes.draw do |map| | ActionController::Routing::Routes.draw do |map| | ||||||
|  |    | ||||||
|  |   map.namespace :admin do |admin| | ||||||
|  |     admin.resources :pages | ||||||
|  |   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. | ||||||
| 
 | 
 | ||||||
|   # Sample of regular route: |   # Sample of regular route: | ||||||
|  | @ -38,6 +43,9 @@ ActionController::Routing::Routes.draw do |map| | ||||||
|   # Install the default routes as the lowest priority. |   # Install the default routes as the lowest priority. | ||||||
|   # Note: These default routes make all actions in every controller accessible via GET requests. You should |   # Note: These default routes make all actions in every controller accessible via GET requests. You should | ||||||
|   # consider removing the them or commenting them out if you're using named routes and resources. |   # consider removing the them or commenting them out if you're using named routes and resources. | ||||||
|   map.connect ':controller/:action/:id' |    | ||||||
|   map.connect ':controller/:action/:id.:format' |   map.connect ':page_name', :controller => 'pages', :action => 'show' | ||||||
|  |    | ||||||
|  |   #map.connect ':controller/:action/:id' | ||||||
|  |   #map.connect ':controller/:action/:id.:format' | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -0,0 +1,54 @@ | ||||||
|  | body { background-color: #fff; color: #333; } | ||||||
|  | 
 | ||||||
|  | body, p, ol, ul, td { | ||||||
|  |   font-family: verdana, arial, helvetica, sans-serif; | ||||||
|  |   font-size:   13px; | ||||||
|  |   line-height: 18px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | pre { | ||||||
|  |   background-color: #eee; | ||||||
|  |   padding: 10px; | ||||||
|  |   font-size: 11px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | a { color: #000; } | ||||||
|  | a:visited { color: #666; } | ||||||
|  | a:hover { color: #fff; background-color:#000; } | ||||||
|  | 
 | ||||||
|  | .fieldWithErrors { | ||||||
|  |   padding: 2px; | ||||||
|  |   background-color: red; | ||||||
|  |   display: table; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #errorExplanation { | ||||||
|  |   width: 400px; | ||||||
|  |   border: 2px solid red; | ||||||
|  |   padding: 7px; | ||||||
|  |   padding-bottom: 12px; | ||||||
|  |   margin-bottom: 20px; | ||||||
|  |   background-color: #f0f0f0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #errorExplanation h2 { | ||||||
|  |   text-align: left; | ||||||
|  |   font-weight: bold; | ||||||
|  |   padding: 5px 5px 5px 15px; | ||||||
|  |   font-size: 12px; | ||||||
|  |   margin: -7px; | ||||||
|  |   background-color: #c00; | ||||||
|  |   color: #fff; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #errorExplanation p { | ||||||
|  |   color: #333; | ||||||
|  |   margin-bottom: 0; | ||||||
|  |   padding: 5px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #errorExplanation ul li { | ||||||
|  |   font-size: 12px; | ||||||
|  |   list-style: square; | ||||||
|  | } | ||||||
|  | 
 | ||||||
		Loading…
	
		Reference in New Issue