summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/controllers/nodes_controller.rb22
-rw-r--r--app/models/node.rb5
-rw-r--r--app/views/nodes/edit.html.erb32
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
2 2
3 layout 'admin' 3 layout 'admin'
4 4
5 before_filter :find_node, :only => [:create, :show, :edit, :update, :destroy]
6
5 def index 7 def index
6 @nodes = Node.root.children.all(:include => :head) 8 @nodes = Node.root.children.all(:include => :head)
7 end 9 end
@@ -10,6 +12,14 @@ class NodesController < ApplicationController
10 end 12 end
11 13
12 def create 14 def create
15 tmp_node = Node.new( params[:node] )
16
17 if request.post? and tmp_node.save
18 tmp_node.move_to_child_of @node
19 redirect_to(tmp_node)
20 else
21 render :action => :new
22 end
13 end 23 end
14 24
15 def show 25 def show
@@ -17,14 +27,22 @@ class NodesController < ApplicationController
17 end 27 end
18 28
19 def edit 29 def edit
20 node = Node.find(params[:id]) 30
21 @page = node.find_or_create_draft current_user
22 end 31 end
23 32
24 def update 33 def update
34 draft = @node.find_or_create_draft current_user
35 draft.update_attributes params[:page]
36 draft.save
25 end 37 end
26 38
27 def destroy 39 def destroy
28 end 40 end
41
42 private
43
44 def find_node
45 @node = Node.find(params[:id])
46 end
29 47
30end 48end
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
47 def find_or_create_draft user 47 def find_or_create_draft user
48 if draft && draft.user == user 48 if draft && draft.user == user
49 draft 49 draft
50 elsif draft && draft.user.nil?
51 tmp_draft = draft
52 tmp_draft.user = user
53 tmp_draft.save
54 tmp_draft
50 elsif draft && draft.user != user 55 elsif draft && draft.user != user
51 raise "Page is locked" 56 raise "Page is locked"
52 else 57 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 @@
2 2
3<h1>Editing page</h1> 3<h1>Editing page</h1>
4 4
5<% form_for(@page) do |f| %> 5<% form_for(@node) do |f| %>
6 <%= f.error_messages %> 6 <%= f.error_messages %>
7 7
8 <% if draft = @node.find_or_create_draft( User.first ) %>
9
10 <% fields_for @node.draft do |d| %>
8 <p> 11 <p>
9 <%= f.label :node_id %><br /> 12 <%= d.label :title %><br />
10 <%= f.text_field :node_id %> 13 <%= d.text_field :title %>
11 </p> 14 </p>
12 <p> 15 <p>
13 <%= f.label :title %><br /> 16 <%= d.label :abstract %><br />
14 <%= f.text_field :title %> 17 <%= d.text_area :abstract %>
15 </p> 18 </p>
16 <p> 19 <p>
17 <%= f.label :abstract %><br /> 20 <%= d.label :body %><br />
18 <%= f.text_area :abstract %> 21 <%= d.text_area :body %>
19 </p>
20 <p>
21 <%= f.label :body %><br />
22 <%= f.text_area :body %>
23 </p>
24 <p>
25 <%= f.label :revision %><br />
26 <%= f.text_field :revision %>
27 </p> 22 </p>
23 <% end %>
24
25 <% else %>
26
27 <p>Page is locked</p>
28
29 <% end %>
28 <p> 30 <p>
29 <%= f.submit "Update" %> 31 <%= f.submit "Update" %>
30 </p> 32 </p>