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.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/app/models/node.rb b/app/models/node.rb
index 7675ab6..82d9954 100644
--- a/app/models/node.rb
+++ b/app/models/node.rb
@@ -123,6 +123,27 @@ class Node < ApplicationRecord
123 self.draft.reload 123 self.draft.reload
124 end 124 end
125 125
126 def resolve_page_reference ref
127 case ref.to_s
128 when "head" then head
129 when "draft" then draft
130 when "autosave" then autosave
131 else pages.find_by_revision(ref)
132 end
133 end
134
135 # Which layer-pairs are meaningful to compare right now, given this
136 # node's actual state. Head vs autosave only shows up when no draft
137 # sits between them -- with a draft present, autosave is compared
138 # against the draft, never past it straight to head.
139 def available_layer_pairs
140 pairs = []
141 pairs << [:head, :draft] if head && draft
142 pairs << [:draft, :autosave] if draft && autosave
143 pairs << [:head, :autosave] if head && autosave && !draft
144 pairs
145 end
146
126 def find_or_create_draft current_user 147 def find_or_create_draft current_user
127 self.wipe_draft! 148 self.wipe_draft!
128 if draft && self.lock_owner == current_user 149 if draft && self.lock_owner == current_user