From 89d3dc4a676ee82cc6bad4d9d00535897318f1c3 Mon Sep 17 00:00:00 2001 From: hukl Date: Sat, 31 Jan 2009 13:04:29 +0100 Subject: Added Page model scaffold --- app/controllers/pages_controller.rb | 85 +++++++++++++++++++++++++++++++ app/helpers/pages_helper.rb | 2 + app/models/page.rb | 7 +++ app/views/layouts/pages.html.erb | 17 +++++++ app/views/pages/edit.html.erb | 32 ++++++++++++ app/views/pages/index.html.erb | 28 ++++++++++ app/views/pages/new.html.erb | 31 +++++++++++ app/views/pages/show.html.erb | 28 ++++++++++ db/migrate/20090131113802_create_pages.rb | 17 +++++++ public/stylesheets/scaffold.css | 54 ++++++++++++++++++++ test/fixtures/pages.yml | 15 ++++++ test/functional/pages_controller_test.rb | 45 ++++++++++++++++ test/unit/helpers/pages_helper_test.rb | 4 ++ test/unit/page_test.rb | 5 ++ 14 files changed, 370 insertions(+) create mode 100644 app/controllers/pages_controller.rb create mode 100644 app/helpers/pages_helper.rb create mode 100644 app/models/page.rb create mode 100644 app/views/layouts/pages.html.erb create mode 100644 app/views/pages/edit.html.erb create mode 100644 app/views/pages/index.html.erb create mode 100644 app/views/pages/new.html.erb create mode 100644 app/views/pages/show.html.erb create mode 100644 db/migrate/20090131113802_create_pages.rb create mode 100644 public/stylesheets/scaffold.css create mode 100644 test/fixtures/pages.yml create mode 100644 test/functional/pages_controller_test.rb create mode 100644 test/unit/helpers/pages_helper_test.rb create mode 100644 test/unit/page_test.rb diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb new file mode 100644 index 0000000..7e3f955 --- /dev/null +++ b/app/controllers/pages_controller.rb @@ -0,0 +1,85 @@ +class PagesController < ApplicationController + # GET /pages + # GET /pages.xml + def index + @pages = Page.find(: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]) + + respond_to do |format| + format.html # show.html.erb + format.xml { render :xml => @page } + end + 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 => @page } + 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(@page) } + format.xml { render :xml => @page, :status => :created, :location => @page } + 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(@page) } + 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(pages_url) } + format.xml { head :ok } + end + end +end diff --git a/app/helpers/pages_helper.rb b/app/helpers/pages_helper.rb new file mode 100644 index 0000000..2c057fd --- /dev/null +++ b/app/helpers/pages_helper.rb @@ -0,0 +1,2 @@ +module PagesHelper +end diff --git a/app/models/page.rb b/app/models/page.rb new file mode 100644 index 0000000..0fcb4a8 --- /dev/null +++ b/app/models/page.rb @@ -0,0 +1,7 @@ +class Page < ActiveRecord::Base + + belongs_to :node + + acts_as_list :column => :revision, :scope => :node_id + +end diff --git a/app/views/layouts/pages.html.erb b/app/views/layouts/pages.html.erb new file mode 100644 index 0000000..327e0eb --- /dev/null +++ b/app/views/layouts/pages.html.erb @@ -0,0 +1,17 @@ + + + + + + Pages: <%= controller.action_name %> + <%= stylesheet_link_tag 'scaffold' %> + + + +

<%= flash[:notice] %>

+ +<%= yield %> + + + diff --git a/app/views/pages/edit.html.erb b/app/views/pages/edit.html.erb new file mode 100644 index 0000000..a4b285a --- /dev/null +++ b/app/views/pages/edit.html.erb @@ -0,0 +1,32 @@ +

Editing page

+ +<% form_for(@page) do |f| %> + <%= f.error_messages %> + +

+ <%= f.label :node_id %>
+ <%= f.text_field :node_id %> +

+

+ <%= f.label :title %>
+ <%= f.text_field :title %> +

+

+ <%= f.label :abstract %>
+ <%= f.text_area :abstract %> +

+

+ <%= f.label :body %>
+ <%= f.text_area :body %> +

+

+ <%= f.label :revision %>
+ <%= f.text_field :revision %> +

+

+ <%= f.submit "Update" %> +

+<% end %> + +<%= link_to 'Show', @page %> | +<%= link_to 'Back', pages_path %> diff --git a/app/views/pages/index.html.erb b/app/views/pages/index.html.erb new file mode 100644 index 0000000..41c8bae --- /dev/null +++ b/app/views/pages/index.html.erb @@ -0,0 +1,28 @@ +

Listing pages

+ + + + + + + + + + +<% for page in @pages %> + + + + + + + + + + +<% end %> +
NodeTitleAbstractBodyRevision
<%=h page.node_id %><%=h page.title %><%=h page.abstract %><%=h page.body %><%=h page.revision %><%= link_to 'Show', page %><%= link_to 'Edit', edit_page_path(page) %><%= link_to 'Destroy', page, :confirm => 'Are you sure?', :method => :delete %>
+ +
+ +<%= link_to 'New page', new_page_path %> diff --git a/app/views/pages/new.html.erb b/app/views/pages/new.html.erb new file mode 100644 index 0000000..b27dc62 --- /dev/null +++ b/app/views/pages/new.html.erb @@ -0,0 +1,31 @@ +

New page

+ +<% form_for(@page) do |f| %> + <%= f.error_messages %> + +

+ <%= f.label :node_id %>
+ <%= f.text_field :node_id %> +

+

+ <%= f.label :title %>
+ <%= f.text_field :title %> +

+

+ <%= f.label :abstract %>
+ <%= f.text_area :abstract %> +

+

+ <%= f.label :body %>
+ <%= f.text_area :body %> +

+

+ <%= f.label :revision %>
+ <%= f.text_field :revision %> +

+

+ <%= f.submit "Create" %> +

+<% end %> + +<%= link_to 'Back', pages_path %> diff --git a/app/views/pages/show.html.erb b/app/views/pages/show.html.erb new file mode 100644 index 0000000..254b940 --- /dev/null +++ b/app/views/pages/show.html.erb @@ -0,0 +1,28 @@ +

+ Node: + <%=h @page.node_id %> +

+ +

+ Title: + <%=h @page.title %> +

+ +

+ Abstract: + <%=h @page.abstract %> +

+ +

+ Body: + <%=h @page.body %> +

+ +

+ Revision: + <%=h @page.revision %> +

+ + +<%= link_to 'Edit', edit_page_path(@page) %> | +<%= link_to 'Back', pages_path %> diff --git a/db/migrate/20090131113802_create_pages.rb b/db/migrate/20090131113802_create_pages.rb new file mode 100644 index 0000000..7493ffc --- /dev/null +++ b/db/migrate/20090131113802_create_pages.rb @@ -0,0 +1,17 @@ +class CreatePages < ActiveRecord::Migration + def self.up + create_table :pages do |t| + t.integer :node_id + t.string :title + t.text :abstract + t.text :body + t.integer :revision + + t.timestamps + end + end + + def self.down + drop_table :pages + end +end diff --git a/public/stylesheets/scaffold.css b/public/stylesheets/scaffold.css new file mode 100644 index 0000000..093c209 --- /dev/null +++ b/public/stylesheets/scaffold.css @@ -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; +} + diff --git a/test/fixtures/pages.yml b/test/fixtures/pages.yml new file mode 100644 index 0000000..2b1cad1 --- /dev/null +++ b/test/fixtures/pages.yml @@ -0,0 +1,15 @@ +# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html + +one: + node_id: 1 + title: MyString + abstract: MyText + body: MyText + revision: 1 + +two: + node_id: 1 + title: MyString + abstract: MyText + body: MyText + revision: 1 diff --git a/test/functional/pages_controller_test.rb b/test/functional/pages_controller_test.rb new file mode 100644 index 0000000..97ca1b6 --- /dev/null +++ b/test/functional/pages_controller_test.rb @@ -0,0 +1,45 @@ +require 'test_helper' + +class PagesControllerTest < ActionController::TestCase + test "should get index" do + get :index + assert_response :success + assert_not_nil assigns(:pages) + end + + test "should get new" do + get :new + assert_response :success + end + + test "should create page" do + assert_difference('Page.count') do + post :create, :page => { } + end + + assert_redirected_to page_path(assigns(:page)) + end + + test "should show page" do + get :show, :id => pages(:one).id + assert_response :success + end + + test "should get edit" do + get :edit, :id => pages(:one).id + assert_response :success + end + + test "should update page" do + put :update, :id => pages(:one).id, :page => { } + assert_redirected_to page_path(assigns(:page)) + end + + test "should destroy page" do + assert_difference('Page.count', -1) do + delete :destroy, :id => pages(:one).id + end + + assert_redirected_to pages_path + end +end diff --git a/test/unit/helpers/pages_helper_test.rb b/test/unit/helpers/pages_helper_test.rb new file mode 100644 index 0000000..535dfe1 --- /dev/null +++ b/test/unit/helpers/pages_helper_test.rb @@ -0,0 +1,4 @@ +require 'test_helper' + +class PagesHelperTest < ActionView::TestCase +end diff --git a/test/unit/page_test.rb b/test/unit/page_test.rb new file mode 100644 index 0000000..af62e93 --- /dev/null +++ b/test/unit/page_test.rb @@ -0,0 +1,5 @@ +require 'test_helper' + +class PageTest < ActiveSupport::TestCase + +end -- cgit v1.3