From 50a03a184ca867ce0962b3a5980261b1912c8c26 Mon Sep 17 00:00:00 2001 From: hukl Date: Thu, 3 Sep 2009 20:40:15 +0200 Subject: more graceful handling of locked pages exceptions. --- app/controllers/nodes_controller.rb | 7 ++++++- app/models/node.rb | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/controllers/nodes_controller.rb b/app/controllers/nodes_controller.rb index 09d0c52..07bbbac 100644 --- a/app/controllers/nodes_controller.rb +++ b/app/controllers/nodes_controller.rb @@ -43,7 +43,12 @@ class NodesController < ApplicationController end def edit - @draft = @node.find_or_create_draft( current_user ) + begin + @draft = @node.find_or_create_draft( current_user ) + rescue LockedByAnotherUser + flash[:error] = "Page is locked by another user who is working on it!" + redirect_to :back + end end def update diff --git a/app/models/node.rb b/app/models/node.rb index b45ba80..318c203 100644 --- a/app/models/node.rb +++ b/app/models/node.rb @@ -61,7 +61,7 @@ class Node < ActiveRecord::Base draft.save draft elsif draft && self.lock_owner != current_user - raise "Page is locked" + raise LockedByAnotherUser else lock_for! current_user create_new_draft current_user @@ -154,4 +154,6 @@ class Node < ActiveRecord::Base end end +class LockedByAnotherUser < StandardError; end + -- cgit v1.3