From 0720a9fdc4d9dc5d7d9974c0e806f03f8fc9de2a Mon Sep 17 00:00:00 2001 From: hukl Date: Sun, 15 Feb 2009 19:58:35 +0100 Subject: added implementation details for nodes --- app/controllers/nodes_controller.rb | 22 ++++++++++++++++++++-- app/models/node.rb | 5 +++++ app/views/nodes/edit.html.erb | 32 +++++++++++++++++--------------- 3 files changed, 42 insertions(+), 17 deletions(-) diff --git a/app/controllers/nodes_controller.rb b/app/controllers/nodes_controller.rb index 390136e..583ddf9 100644 --- a/app/controllers/nodes_controller.rb +++ b/app/controllers/nodes_controller.rb @@ -2,6 +2,8 @@ class NodesController < ApplicationController layout 'admin' + before_filter :find_node, :only => [:create, :show, :edit, :update, :destroy] + def index @nodes = Node.root.children.all(:include => :head) end @@ -10,6 +12,14 @@ class NodesController < ApplicationController end def create + tmp_node = Node.new( params[:node] ) + + if request.post? and tmp_node.save + tmp_node.move_to_child_of @node + redirect_to(tmp_node) + else + render :action => :new + end end def show @@ -17,14 +27,22 @@ class NodesController < ApplicationController end def edit - node = Node.find(params[:id]) - @page = node.find_or_create_draft current_user + end def update + draft = @node.find_or_create_draft current_user + draft.update_attributes params[:page] + draft.save end def destroy end + + private + + def find_node + @node = Node.find(params[:id]) + end end diff --git a/app/models/node.rb b/app/models/node.rb index bc48ac4..05da907 100644 --- a/app/models/node.rb +++ b/app/models/node.rb @@ -47,6 +47,11 @@ class Node < ActiveRecord::Base def find_or_create_draft user if draft && draft.user == user draft + elsif draft && draft.user.nil? + tmp_draft = draft + tmp_draft.user = user + tmp_draft.save + tmp_draft elsif draft && draft.user != user raise "Page is locked" else diff --git a/app/views/nodes/edit.html.erb b/app/views/nodes/edit.html.erb index a5668e2..433c5eb 100644 --- a/app/views/nodes/edit.html.erb +++ b/app/views/nodes/edit.html.erb @@ -2,29 +2,31 @@

Editing page

-<% form_for(@page) do |f| %> +<% form_for(@node) do |f| %> <%= f.error_messages %> + <% if draft = @node.find_or_create_draft( User.first ) %> + + <% fields_for @node.draft do |d| %>

- <%= f.label :node_id %>
- <%= f.text_field :node_id %> + <%= d.label :title %>
+ <%= d.text_field :title %>

- <%= f.label :title %>
- <%= f.text_field :title %> + <%= d.label :abstract %>
+ <%= d.text_area :abstract %>

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

-

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

-

- <%= f.label :revision %>
- <%= f.text_field :revision %> + <%= d.label :body %>
+ <%= d.text_area :body %>

+ <% end %> + + <% else %> + +

Page is locked

+ + <% end %>

<%= f.submit "Update" %>

-- cgit v1.3