diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/nodes_controller.rb | 22 | ||||
| -rw-r--r-- | app/models/node.rb | 5 | ||||
| -rw-r--r-- | 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 | |||
| 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 | ||
| 30 | end | 48 | 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 | |||
| 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> |
