summaryrefslogtreecommitdiff
path: root/app/controllers/nodes_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/nodes_controller.rb')
-rw-r--r--app/controllers/nodes_controller.rb39
1 files changed, 29 insertions, 10 deletions
diff --git a/app/controllers/nodes_controller.rb b/app/controllers/nodes_controller.rb
index a72be68..042963b 100644
--- a/app/controllers/nodes_controller.rb
+++ b/app/controllers/nodes_controller.rb
@@ -11,7 +11,8 @@ class NodesController < ApplicationController
11 :update, 11 :update,
12 :destroy, 12 :destroy,
13 :publish, 13 :publish,
14 :unlock 14 :unlock,
15 :autosave
15 ] 16 ]
16 17
17 def index 18 def index
@@ -72,17 +73,35 @@ class NodesController < ApplicationController
72 73
73 def update 74 def update
74 @node.update(node_params) 75 @node.update(node_params)
75 @draft = @node.find_or_create_draft current_user 76 @node.autosave!( page_params.merge(:tag_list => params[:tag_list]), current_user )
76 @draft.tag_list = params[:tag_list] 77 @node.save_draft!(current_user)
77 if @draft.update( page_params ) 78
78 flash[:notice] = "Draft has been saved: #{Time.now}" 79 flash[:notice] = "Draft has been saved: #{Time.now}"
79 respond_to do |format| 80
80 format.html { redirect_to edit_node_path(@node) } 81 if params[:commit] == "Save + Unlock + Exit"
81 format.js 82 @node.unlock!
82 end 83 redirect_to node_path(@node)
83 else 84 else
84 render :action => :edit 85 redirect_to edit_node_path(@node)
85 end 86 end
87 rescue LockedByAnotherUser => e
88 flash[:error] = e.message
89 redirect_to node_path(@node)
90 rescue ActiveRecord::RecordInvalid
91 @page = @node.autosave || @node.draft || @node.head
92 render :action => :edit
93 end
94
95 def autosave
96 @node.update(node_params)
97 @node.autosave!( page_params.merge(:tag_list => params[:tag_list]), current_user )
98 head :ok
99 rescue LockedByAnotherUser => e
100 render plain: e.message, status: :locked
101 rescue ActiveRecord::RecordInvalid => e
102 render plain: e.message, status: :unprocessable_entity
103 rescue StandardError => e
104 render plain: "Autosave failed", status: :internal_server_error
86 end 105 end
87 106
88 def destroy 107 def destroy