Class: Skyline::Article
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Skyline::Article
- Extended by:
- ActiveSupport::Memoizable
- Defined in:
- app/models/skyline/article.rb
Direct Known Subclasses
Defined Under Namespace
Classes: Data
Class Method Summary collapse
-
.publishable? ⇒ Boolean
used by SearchableItem.
-
.right_prefix ⇒ Object
The prefix to use when determining rights.
- .to_param ⇒ Object
Instance Method Summary collapse
-
#data_class ⇒ Object
The class that provides our custom data fields.
-
#depublish ⇒ Object
Depublish a page, removes the published_publication if keep_history? is false.
- #depublishable? ⇒ Boolean
- #destroy ⇒ Object
- #destroyable? ⇒ Boolean
-
#editable_by?(user) ⇒ Boolean
Checks if the page can be edited by a certain user Currently only checks on page locks.
- #enable_locking? ⇒ Boolean
- #enable_multiple_variants? ⇒ Boolean
- #enable_publishing? ⇒ Boolean
- #keep_history? ⇒ Boolean
-
#preview_wrapper_page ⇒ Object
a subclass might return a Page in which the article (ie: NewsItem) will be rendered for previewing.
- #previewable? ⇒ Boolean
- #published? ⇒ Boolean
- #renderable? ⇒ Boolean
- #renderable_scope ⇒ Object
- #right_prefix ⇒ Object
- #rollbackable? ⇒ Boolean
- #set_default_variant(variant) ⇒ Object
- #set_default_variant!(variant) ⇒ Object
- #site ⇒ Object
- #sites ⇒ Object
- #title ⇒ Object
Class Method Details
.publishable? ⇒ Boolean
used by SearchableItem
66 67 68 |
# File 'app/models/skyline/article.rb', line 66 def publishable? true end |
.right_prefix ⇒ Object
The prefix to use when determining rights. User#allow? uses this method when called with 2 parameters. –
61 62 63 |
# File 'app/models/skyline/article.rb', line 61 def right_prefix "article" end |
.to_param ⇒ Object
54 55 56 |
# File 'app/models/skyline/article.rb', line 54 def to_param self.name.underscore end |
Instance Method Details
#data_class ⇒ Object
The class that provides our custom data fields. – Note: We can’t use memoize here, because it freezes the class
164 165 166 167 168 169 |
# File 'app/models/skyline/article.rb', line 164 def data_class return @_data_class unless @_data_class.nil? @_data_class = (self.class.name + "::" + "Data").constantize rescue NameError @_data_class = false end |
#depublish ⇒ Object
Depublish a page, removes the published_publication if keep_history? is false
Raises
- StandardError
-
if page is persistent
–
83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'app/models/skyline/article.rb', line 83 def depublish raise StandardError, "can't be depublished because this page is persistent" if self.persistent? if self.published_publication self.published_publication.destroy unless self.keep_history? self.published_publication = nil end self.published_publication_data = nil self.url_part = "page-#{self.position}" self.save end |
#depublishable? ⇒ Boolean
102 103 104 |
# File 'app/models/skyline/article.rb', line 102 def depublishable? !self.persistent? end |
#destroy ⇒ Object
97 98 99 100 |
# File 'app/models/skyline/article.rb', line 97 def destroy depublish super end |
#destroyable? ⇒ Boolean
106 107 108 |
# File 'app/models/skyline/article.rb', line 106 def destroyable? !self.persistent? && self.published_publication == nil end |
#editable_by?(user) ⇒ Boolean
Checks if the page can be edited by a certain user Currently only checks on page locks. –
146 147 148 149 |
# File 'app/models/skyline/article.rb', line 146 def editable_by?(user) user = user.kind_of?(Skyline::User) ? user : Skyline::User.find_by_id(user) self.locked? && user.allow?(:page_lock) || !self.locked? end |
#enable_locking? ⇒ Boolean
138 139 140 |
# File 'app/models/skyline/article.rb', line 138 def enable_locking? true end |
#enable_multiple_variants? ⇒ Boolean
134 135 136 |
# File 'app/models/skyline/article.rb', line 134 def enable_multiple_variants? true end |
#enable_publishing? ⇒ Boolean
130 131 132 |
# File 'app/models/skyline/article.rb', line 130 def enable_publishing? true end |
#keep_history? ⇒ Boolean
126 127 128 |
# File 'app/models/skyline/article.rb', line 126 def keep_history? false end |
#preview_wrapper_page ⇒ Object
a subclass might return a Page in which the article (ie: NewsItem) will be rendered for previewing
180 181 182 |
# File 'app/models/skyline/article.rb', line 180 def preview_wrapper_page nil end |
#previewable? ⇒ Boolean
118 119 120 |
# File 'app/models/skyline/article.rb', line 118 def previewable? self.renderable? end |
#published? ⇒ Boolean
71 72 73 74 75 |
# File 'app/models/skyline/article.rb', line 71 def published? # Don't use only "self.published_publication" here, it causes way too many lookups # If the next test is wrong, than maybe you should wonder why it is wrong? Foreign key left behind? self.published_publication_id.present? end |
#renderable? ⇒ Boolean
110 111 112 |
# File 'app/models/skyline/article.rb', line 110 def renderable? self.renderable_scope.renderer.templates_for(self).any? end |
#renderable_scope ⇒ Object
114 115 116 |
# File 'app/models/skyline/article.rb', line 114 def renderable_scope Skyline::WildcardRenderableScope.new end |
#right_prefix ⇒ Object
171 172 173 |
# File 'app/models/skyline/article.rb', line 171 def right_prefix self.class.right_prefix end |
#rollbackable? ⇒ Boolean
122 123 124 |
# File 'app/models/skyline/article.rb', line 122 def rollbackable? true end |
#set_default_variant(variant) ⇒ Object
156 157 158 159 |
# File 'app/models/skyline/article.rb', line 156 def set_default_variant(variant) return if variant.id == self.default_variant_id && variant.data_id == self.default_variant_data_id self.attributes = {:default_variant_id => variant.id, :default_variant_data_id => variant.data_id} end |
#set_default_variant!(variant) ⇒ Object
151 152 153 154 |
# File 'app/models/skyline/article.rb', line 151 def set_default_variant!(variant) return if variant.id == self.default_variant_id && variant.data_id == self.default_variant_data_id self.update_attributes(:default_variant_id => variant.id, :default_variant_data_id => variant.data_id) end |
#site ⇒ Object
188 189 190 |
# File 'app/models/skyline/article.rb', line 188 def site Skyline::Site.new end |
#sites ⇒ Object
184 185 186 |
# File 'app/models/skyline/article.rb', line 184 def sites [Skyline::Site.new] end |
#title ⇒ Object
175 176 177 |
# File 'app/models/skyline/article.rb', line 175 def title self.id end |