summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorhukl <contact@smyck.org>2009-03-21 17:39:11 +0100
committerhukl <contact@smyck.org>2009-03-21 17:39:11 +0100
commit0e215fab6ef01cfe4865ed10bbe083f800c9a73e (patch)
tree12b49dc4f5d12d5786f247c581624785bf90d38f /app
parent40bdc8384a33019c1771fbad888525505f61aa7c (diff)
put the lock onto nodes
Diffstat (limited to 'app')
-rw-r--r--app/models/node.rb25
-rw-r--r--app/views/nodes/index.html.erb2
2 files changed, 19 insertions, 8 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
diff --git a/app/views/nodes/index.html.erb b/app/views/nodes/index.html.erb
index 103617c..53ddb5b 100644
--- a/app/views/nodes/index.html.erb
+++ b/app/views/nodes/index.html.erb
@@ -28,7 +28,7 @@
28 <%= link_to 'Unlock', unlock_node_path(node), :method => :put, :confirm => "Are you sure you want to unlock?" %> 28 <%= link_to 'Unlock', unlock_node_path(node), :method => :put, :confirm => "Are you sure you want to unlock?" %>
29 </td> 29 </td>
30 <td> 30 <td>
31 <%= "#{node.draft.user.login}" if node.draft && node.draft.user %> 31 <%= node.user.login if node.user %>
32 </td> 32 </td>
33 <td> 33 <td>
34 <%= node.draft ? node.draft.revision : node.head.revision %> 34 <%= node.draft ? node.draft.revision : node.head.revision %>