summaryrefslogtreecommitdiff
path: root/app/models/node.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/node.rb')
-rw-r--r--app/models/node.rb25
1 files changed, 18 insertions, 7 deletions
diff --git a/app/models/node.rb b/app/models/node.rb
index da26164..0f34b73 100644
--- a/app/models/node.rb
+++ b/app/models/node.rb
@@ -8,6 +8,7 @@ class Node < ActiveRecord::Base
8 belongs_to :draft, :class_name => "Page", :foreign_key => :draft_id 8 belongs_to :draft, :class_name => "Page", :foreign_key => :draft_id
9 has_many :permissions 9 has_many :permissions
10 has_one :event 10 has_one :event
11 belongs_to :user, :foreign_key => :locking_user_id
11 12
12 # Callbacks 13 # Callbacks
13 after_create :initialize_empty_page 14 after_create :initialize_empty_page
@@ -43,17 +44,17 @@ class Node < ActiveRecord::Base
43 44
44 # Instance Methods 45 # Instance Methods
45 46
46 def find_or_create_draft user 47 def find_or_create_draft current_user
47 if draft && draft.user == user 48 if draft && self.user == current_user
48 draft 49 draft
49 elsif draft && draft.user.nil? 50 elsif draft && self.user.nil?
50 draft.user = user 51 lock_for! current_user
51 draft.save
52 draft 52 draft
53 elsif draft && draft.user != user 53 elsif draft && self.user != current_user
54 raise "Page is locked" 54 raise "Page is locked"
55 else 55 else
56 create_new_draft user 56 lock_for! current_user
57 create_new_draft current_user
57 end 58 end
58 end 59 end
59 60
@@ -73,6 +74,7 @@ class Node < ActiveRecord::Base
73 self.head.save! 74 self.head.save!
74 self.draft = nil 75 self.draft = nil
75 self.save! 76 self.save!
77 self.unlock!
76 else 78 else
77 nil 79 nil
78 end 80 end
@@ -95,6 +97,15 @@ class Node < ActiveRecord::Base
95 end 97 end
96 98
97 protected 99 protected
100 def lock_for! current_user
101 self.user = current_user
102 self.save
103 end
104
105 def unlock!
106 self.user = nil
107 self.save
108 end
98 109
99 # Creates an empty page and associates it to the given node. This means 110 # Creates an empty page and associates it to the given node. This means
100 # freshly created node has an empty draft. A user can create nodes as he 111 # freshly created node has an empty draft. A user can create nodes as he