Module: Versioning
- Extended by:
- ActiveSupport::Concern
- Included in:
- Concept::Base
- Defined in:
- app/models/concerns/versioning.rb
Overview
Copyright 2011-2013 innoQ Deutschland GmbH
Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
-
#branch(user) ⇒ Object
module ClassMethods.
- #disable_validations_for_publishing ⇒ Object
-
#editor_selectable? ⇒ Boolean
Editor selectable if published or no published version exists (before first publication).
- #enable_validations_for_publishing ⇒ Object
- #in_review? ⇒ Boolean
- #lock_by_user(user_id) ⇒ Object
- #locked? ⇒ Boolean
- #never_published? ⇒ Boolean
- #publish ⇒ Object
- #publish! ⇒ Object
- #publishable? ⇒ Boolean
- #published? ⇒ Boolean
- #state ⇒ Object
- #to_review ⇒ Object
- #unlock ⇒ Object
- #unpublish ⇒ Object
- #unpublished? ⇒ Boolean
- #validatable_for_publishing? ⇒ Boolean
- #with_validations_for_publishing ⇒ Object
Instance Method Details
#branch(user) ⇒ Object
module ClassMethods
102 103 104 105 106 107 108 109 |
# File 'app/models/concerns/versioning.rb', line 102 def branch(user) new_version = self.deep_clone(include: self.class.includes_to_deep_cloning) new_version.lock_by_user(user.id) new_version.increment(:rev) new_version.published_version_id = self.id new_version.unpublish new_version end |
#disable_validations_for_publishing ⇒ Object
169 170 171 |
# File 'app/models/concerns/versioning.rb', line 169 def disable_validations_for_publishing @_run_validations_for_publishing = false end |
#editor_selectable? ⇒ Boolean
Editor selectable if published or no published version exists (before first publication)
113 114 115 |
# File 'app/models/concerns/versioning.rb', line 113 def editor_selectable? published? || read_attribute(:published_version_id).blank? end |
#enable_validations_for_publishing ⇒ Object
165 166 167 |
# File 'app/models/concerns/versioning.rb', line 165 def enable_validations_for_publishing @_run_validations_for_publishing = true end |
#in_review? ⇒ Boolean
147 148 149 |
# File 'app/models/concerns/versioning.rb', line 147 def in_review? read_attribute(:to_review).present? end |
#lock_by_user(user_id) ⇒ Object
117 118 119 120 121 |
# File 'app/models/concerns/versioning.rb', line 117 def lock_by_user(user_id) tap do write_attribute(:locked_by, user_id) end end |
#locked? ⇒ Boolean
127 128 129 |
# File 'app/models/concerns/versioning.rb', line 127 def locked? locked_by? end |
#never_published? ⇒ Boolean
123 124 125 |
# File 'app/models/concerns/versioning.rb', line 123 def never_published? unpublished? && rev == 1 end |
#publish ⇒ Object
177 178 179 180 181 182 183 |
# File 'app/models/concerns/versioning.rb', line 177 def publish tap do write_attribute(:published_at, Time.now) write_attribute(:to_review, nil) write_attribute(:published_version_id, nil) end end |
#publish! ⇒ Object
199 200 201 202 203 204 |
# File 'app/models/concerns/versioning.rb', line 199 def publish! with_validations_for_publishing do publish save! end end |
#publishable? ⇒ Boolean
206 207 208 209 210 |
# File 'app/models/concerns/versioning.rb', line 206 def publishable? with_validations_for_publishing do valid? end end |
#published? ⇒ Boolean
191 192 193 |
# File 'app/models/concerns/versioning.rb', line 191 def published? read_attribute(:published_at).present? end |
#state ⇒ Object
131 132 133 134 135 136 137 138 139 |
# File 'app/models/concerns/versioning.rb', line 131 def state if published? I18n.t('txt.common.state.published') elsif !published? && in_review? I18n.t('txt.common.state.in_review') elsif !published? && !in_review? I18n.t('txt.common.state.checked_out') end end |
#to_review ⇒ Object
151 152 153 154 155 |
# File 'app/models/concerns/versioning.rb', line 151 def to_review tap do write_attribute(:to_review, true) end end |
#unlock ⇒ Object
141 142 143 144 145 |
# File 'app/models/concerns/versioning.rb', line 141 def unlock tap do write_attribute(:locked_by, nil) end end |
#unpublish ⇒ Object
185 186 187 188 189 |
# File 'app/models/concerns/versioning.rb', line 185 def unpublish tap do write_attribute(:published_at, nil) end end |
#unpublished? ⇒ Boolean
195 196 197 |
# File 'app/models/concerns/versioning.rb', line 195 def unpublished? !published? end |
#validatable_for_publishing? ⇒ Boolean
173 174 175 |
# File 'app/models/concerns/versioning.rb', line 173 def validatable_for_publishing? @_run_validations_for_publishing end |
#with_validations_for_publishing ⇒ Object
157 158 159 160 161 162 163 |
# File 'app/models/concerns/versioning.rb', line 157 def with_validations_for_publishing enable_validations_for_publishing status = yield disable_validations_for_publishing return status end |