summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/node.rb51
1 files changed, 0 insertions, 51 deletions
diff --git a/app/models/node.rb b/app/models/node.rb
index 73eefd1..311c5c0 100644
--- a/app/models/node.rb
+++ b/app/models/node.rb
@@ -145,28 +145,6 @@ class Node < ApplicationRecord
145 pairs 145 pairs
146 end 146 end
147 147
148 def find_or_create_draft current_user
149 self.wipe_draft!
150 if draft && self.lock_owner == current_user
151 draft
152 elsif draft && self.lock_owner.nil?
153 lock_for! current_user
154 draft.user = current_user if draft.user.nil?
155 draft.editor = current_user
156 draft.save
157 draft
158 elsif draft && self.lock_owner != current_user
159 raise(
160 LockedByAnotherUser,
161 "Page is locked by another user who is working on it! " \
162 "Last modification: #{draft.updated_at.to_fs(:db)}"
163 )
164 else
165 lock_for! current_user
166 create_new_draft current_user
167 end
168 end
169
170 def create_new_draft user 148 def create_new_draft user
171 empty_page = self.pages.create! 149 empty_page = self.pages.create!
172 empty_page.user = (self.head ? self.head.user : user) 150 empty_page.user = (self.head ? self.head.user : user)
@@ -249,35 +227,6 @@ class Node < ApplicationRecord
249 self 227 self
250 end 228 end
251 229
252 # Releases whatever's stale and abandoned; never anything actively in
253 # use. Three independent cases share one rule -- nothing is touched
254 # unless it's been sitting untouched for over a day:
255 # - a lock held with no draft or autosave at all (the editor opened
256 # the page and never actually wrote anything)
257 # - a fresh autosave older than a day, never promoted to a draft
258 # - a draft older than a day that's still identical to head
259 def wipe_draft!
260 return if self.autosave && self.autosave.updated_at > 1.day.ago
261
262 unless self.draft
263 return if self.autosave.nil? && self.locked? && self.updated_at > 1.day.ago
264 self.autosave&.destroy
265 self.autosave_id = nil
266 self.unlock!
267 self.save!
268 return
269 end
270 return unless self.head
271 return unless self.draft.updated_at < 1.day.ago
272 return if self.head.has_changes_to? self.draft
273
274 self.draft.destroy
275 self.draft_id = nil
276 self.unlock!
277 self.save!
278 self.reload
279 end
280
281 def restore_revision! revision 230 def restore_revision! revision
282 if page = self.pages.find_by_revision(revision) 231 if page = self.pages.find_by_revision(revision)
283 self.head = page 232 self.head = page