diff options
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/node.rb | 21 |
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 |
