diff options
Diffstat (limited to 'app/controllers')
| -rw-r--r-- | app/controllers/nodes_controller.rb | 39 |
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 |
