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.rb34
1 files changed, 24 insertions, 10 deletions
diff --git a/app/controllers/nodes_controller.rb b/app/controllers/nodes_controller.rb
index 042963b..6fd000b 100644
--- a/app/controllers/nodes_controller.rb
+++ b/app/controllers/nodes_controller.rb
@@ -12,7 +12,8 @@ class NodesController < ApplicationController
12 :destroy, 12 :destroy,
13 :publish, 13 :publish,
14 :unlock, 14 :unlock,
15 :autosave 15 :autosave,
16 :revert
16 ] 17 ]
17 18
18 def index 19 def index
@@ -59,16 +60,17 @@ class NodesController < ApplicationController
59 end 60 end
60 61
61 def edit 62 def edit
62 begin 63 @node.lock_for_editing!( current_user )
63 @draft = @node.find_or_create_draft( current_user ) 64 @page = @node.autosave || @node.draft || @node.head
64 rescue LockedByAnotherUser => e 65
65 flash[:error] = e.message 66 if @node.autosave
66 if request.referer 67 flash.now[:notice] =
67 redirect_to request.referer || node_path(@node) 68 "This page has unsaved changes from a previous session, shown below. " \
68 else 69 "Save to keep them, or use \"Discard changes\" below to go back to the last saved version."
69 redirect_to node_path(@node)
70 end
71 end 70 end
71 rescue LockedByAnotherUser => e
72 flash[:error] = e.message
73 redirect_to(request.referer || node_path(@node))
72 end 74 end
73 75
74 def update 76 def update
@@ -104,6 +106,18 @@ class NodesController < ApplicationController
104 render plain: "Autosave failed", status: :internal_server_error 106 render plain: "Autosave failed", status: :internal_server_error
105 end 107 end
106 108
109 def revert
110 @node.revert!(current_user)
111 if @node.draft
112 redirect_to edit_node_path(@node)
113 else
114 redirect_to node_path(@node)
115 end
116 rescue LockedByAnotherUser => e
117 flash[:error] = e.message
118 redirect_to node_path(@node)
119 end
120
107 def destroy 121 def destroy
108 @node.destroy 122 @node.destroy
109 end 123 end