Class: CamaleonCms::Post
- Inherits:
-
PostDefault
- Object
- ActiveRecord::Base
- PostDefault
- CamaleonCms::Post
- Includes:
- CategoriesTagsForPosts
- Defined in:
- app/models/camaleon_cms/post.rb
Instance Attribute Summary collapse
-
#show_title_with_parent ⇒ Object
Returns the value of attribute show_title_with_parent.
Attributes inherited from PostDefault
Instance Method Summary collapse
-
#can_commented? ⇒ Boolean
check if the post can be commented sample: @post.can_commented? return Boolean (true/false) to enable comments for current post, use this: post.set_meta(‘has_comments’, ‘1’).
- #decorator_class ⇒ Object
-
#draft? ⇒ Boolean
check if this is in draft status.
- #draft_child? ⇒ Boolean
-
#full_children ⇒ Object
return all children elements for current post (page hierarchy).
-
#get_layout(posttype = nil) ⇒ Object
return the layout assigned to this post post_type: post type owner of this post.
-
#get_post_type_depre ⇒ Object
return the post type of this post (DEPRECATED).
-
#get_template(posttype = nil) ⇒ Object
return the template assigned to this post verify default template defined in post type post_type: post type owner of this post.
-
#increment_visits! ⇒ Object
increment the counter of visitors.
-
#is_required_picture? ⇒ Boolean
check if is required picture for current post.
-
#manage_comments?(posttype = nil) ⇒ Boolean
check if current post can manage comments return boolean.
-
#manage_content?(posttype = nil) ⇒ Boolean
check if current post can manage content return boolean.
-
#manage_layout?(posttype = nil) ⇒ Boolean
return boolean.
-
#manage_picture?(posttype = nil) ⇒ Boolean
check if current post can manage picture return boolean.
-
#manage_seo?(posttype = nil) ⇒ Boolean
(also: #manage_keywords?)
check if current post permit manage seo attrs has_keywords: used until next version (deprecated to use has_seo) return boolean.
-
#manage_summary?(posttype = nil) ⇒ Boolean
check if current post can manage summary return boolean.
-
#manage_template?(posttype = nil) ⇒ Boolean
check if current post can manage template return boolean.
-
#parents ⇒ Object
return all parents for current page hierarchy ordered bottom to top.
-
#pending? ⇒ Boolean
check if this is in pending status.
-
#published? ⇒ Boolean
check if this post was published.
-
#set_layout(layout_name) ⇒ Object
save the layout name to be used on render this post layout_name: String layout name: my_layout.html.erb => ‘my_layout’.
-
#set_position(new_order_position) ⇒ Object
put a new order position for this post new_order_position: (Integer) position number return nil.
-
#set_setting(key, val) ⇒ Object
define post configuration for current post possible key values (String): has_content, boolean (default true) has_summary, boolean (default true) has_seo, boolean (default true) has_picture, boolean (default true) has_template, boolean (default false) has_comments, boolean (default false) default_layout: (string) (default layout) # this is still used if post type was inactivated layout and overwritten by dropdown in post view default_template: (string) (default template) # this is still used if post type was inactivated template and overwritten by dropdown in post view has_layout: (boolean) (default false) skip_fields: (array) (default empty) array of custom field keys to avoid for this post, sample: [“subtitle”, “icon”] val: value for the setting.
-
#set_settings(settings = {}) ⇒ Object
assign multiple settings.
-
#set_summary(summary) ⇒ Object
save the summary for current post summary: Text String without html.
-
#set_thumb(thumb_url) ⇒ Object
save the thumbnail url for current post thumb_url: String url.
-
#total_comments ⇒ Object
return the quantity of comments for this post TODO comments count to move into cache counter.
-
#total_visits ⇒ Object
return the quantity of visits for this post.
-
#trash? ⇒ Boolean
check if this is in trash status.
Methods included from CategoriesTagsForPosts
#assign_category, #assign_tags, #manage_categories?, #manage_tags?, #unassign_category, #unassign_tags, #update_categories, #update_extra_data, #update_tags
Methods inherited from PostDefault
#author, find_by_slug, #in_nav_menu_items, #parent, #set_params
Methods included from CustomFieldsRead
#add_custom_field_group, #add_custom_field_to_default_group, #get_field_groups, #get_field_object, #get_field_value, #get_field_values, #get_field_values_hash, #get_fields_grouped, #get_fields_object, #get_user_field_groups, #save_field_value, #set_field_value, #set_field_values, #update_field_value
Methods included from Metas
#delete_meta, #delete_option, #fix_save_metas_options_no_changed, #get_meta, #get_option, #options, #save_metas_options, #save_metas_options_skip, #set_meta, #set_metas, #set_option, #set_options
Instance Attribute Details
#show_title_with_parent ⇒ Object
Returns the value of attribute show_title_with_parent.
62 63 64 |
# File 'app/models/camaleon_cms/post.rb', line 62 def show_title_with_parent @show_title_with_parent end |
Instance Method Details
#can_commented? ⇒ Boolean
check if the post can be commented sample: @post.can_commented? return Boolean (true/false) to enable comments for current post, use this: post.set_meta(‘has_comments’, ‘1’). Note: Parent PostType should be enabled for comments too: post_type.set_option(‘has_comments’, true)
155 156 157 |
# File 'app/models/camaleon_cms/post.rb', line 155 def can_commented? manage_comments? && ('has_comments').to_s == "1" end |
#decorator_class ⇒ Object
255 256 257 |
# File 'app/models/camaleon_cms/post.rb', line 255 def decorator_class (post_type.get_option('cama_post_decorator_class', 'CamaleonCms::PostDecorator') rescue 'CamaleonCms::PostDecorator').constantize end |
#draft? ⇒ Boolean
check if this is in draft status
103 104 105 |
# File 'app/models/camaleon_cms/post.rb', line 103 def draft? status == 'draft' || status == 'draft_child' end |
#draft_child? ⇒ Boolean
107 108 109 |
# File 'app/models/camaleon_cms/post.rb', line 107 def draft_child? status == 'draft_child' end |
#full_children ⇒ Object
return all children elements for current post (page hierarchy)
79 80 81 82 83 84 85 |
# File 'app/models/camaleon_cms/post.rb', line 79 def full_children cama_fetch_cache("full_children_#{self.id}") do res = self.children.to_a res.each{|c| res += c.full_children } res end end |
#get_layout(posttype = nil) ⇒ Object
return the layout assigned to this post post_type: post type owner of this post
223 224 225 226 |
# File 'app/models/camaleon_cms/post.rb', line 223 def get_layout(posttype = nil) return get_option("default_layout") if !manage_layout?(posttype) ('layout', get_option("default_layout") || (posttype || self.post_type).get_option('default_layout', nil)) end |
#get_post_type_depre ⇒ Object
return the post type of this post (DEPRECATED)
88 89 90 |
# File 'app/models/camaleon_cms/post.rb', line 88 def get_post_type_depre post_types.reorder(nil).first end |
#get_template(posttype = nil) ⇒ Object
return the template assigned to this post verify default template defined in post type post_type: post type owner of this post
231 232 233 234 |
# File 'app/models/camaleon_cms/post.rb', line 231 def get_template(posttype = nil) return get_option("default_template") if !manage_template?(posttype) ('template', get_option("default_template") || (posttype || self.post_type).get_option('default_template', nil)) end |
#increment_visits! ⇒ Object
increment the counter of visitors
237 238 239 |
# File 'app/models/camaleon_cms/post.rb', line 237 def increment_visits! ("visits", total_visits+1) end |
#is_required_picture? ⇒ Boolean
check if is required picture for current post
160 161 162 |
# File 'app/models/camaleon_cms/post.rb', line 160 def is_required_picture? post_type.get_option('is_required_picture', false) end |
#manage_comments?(posttype = nil) ⇒ Boolean
check if current post can manage comments return boolean
147 148 149 |
# File 'app/models/camaleon_cms/post.rb', line 147 def manage_comments?(posttype = nil) get_option('has_comments', (posttype || post_type).get_option('has_comments', false)) end |
#manage_content?(posttype = nil) ⇒ Boolean
check if current post can manage content return boolean
118 119 120 |
# File 'app/models/camaleon_cms/post.rb', line 118 def manage_content?(posttype = nil) get_option('has_content', (posttype || post_type).get_option('has_content', true)) end |
#manage_layout?(posttype = nil) ⇒ Boolean
return boolean
123 124 125 |
# File 'app/models/camaleon_cms/post.rb', line 123 def manage_layout?(posttype = nil) get_option('has_layout', (posttype || post_type).get_option('has_layout', false)) end |
#manage_picture?(posttype = nil) ⇒ Boolean
check if current post can manage picture return boolean
141 142 143 |
# File 'app/models/camaleon_cms/post.rb', line 141 def manage_picture?(posttype = nil) get_option('has_picture', (posttype || post_type).get_option('has_picture', true)) end |
#manage_seo?(posttype = nil) ⇒ Boolean Also known as: manage_keywords?
check if current post permit manage seo attrs has_keywords: used until next version (deprecated to use has_seo) return boolean
204 205 206 |
# File 'app/models/camaleon_cms/post.rb', line 204 def manage_seo?(posttype = nil) get_option('has_seo', get_option('has_keywords', false)) || (posttype || post_type).manage_seo? end |
#manage_summary?(posttype = nil) ⇒ Boolean
check if current post can manage summary return boolean
135 136 137 |
# File 'app/models/camaleon_cms/post.rb', line 135 def manage_summary?(posttype = nil) get_option('has_summary', (posttype || post_type).get_option('has_summary', true)) end |
#manage_template?(posttype = nil) ⇒ Boolean
check if current post can manage template return boolean
129 130 131 |
# File 'app/models/camaleon_cms/post.rb', line 129 def manage_template?(posttype = nil) get_option('has_template', (posttype || post_type).get_option('has_template', true)) end |
#parents ⇒ Object
return all parents for current page hierarchy ordered bottom to top
66 67 68 69 70 71 72 73 74 75 76 |
# File 'app/models/camaleon_cms/post.rb', line 66 def parents cama_fetch_cache("parents_#{self.id}") do res = [] p = self.parent while p.present? res << p p = p.parent end res end end |
#pending? ⇒ Boolean
check if this is in pending status
98 99 100 |
# File 'app/models/camaleon_cms/post.rb', line 98 def pending? status == 'pending' end |
#published? ⇒ Boolean
check if this post was published
93 94 95 |
# File 'app/models/camaleon_cms/post.rb', line 93 def published? status == 'published' end |
#set_layout(layout_name) ⇒ Object
save the layout name to be used on render this post layout_name: String layout name: my_layout.html.erb => ‘my_layout’
217 218 219 |
# File 'app/models/camaleon_cms/post.rb', line 217 def set_layout(layout_name) ("layout", layout_name) end |
#set_position(new_order_position) ⇒ Object
put a new order position for this post new_order_position: (Integer) position number return nil
191 192 193 |
# File 'app/models/camaleon_cms/post.rb', line 191 def set_position(new_order_position) self.update_column("post_order", new_order_position) end |
#set_setting(key, val) ⇒ Object
define post configuration for current post possible key values (String):
has_content, boolean (default true)
has_summary, boolean (default true)
has_seo, boolean (default true)
has_picture, boolean (default true)
has_template, boolean (default false)
has_comments, boolean (default false)
default_layout: (string) (default layout) # this is still used if post type was inactivated layout and overwritten by dropdown in post view
default_template: (string) (default template) # this is still used if post type was inactivated template and overwritten by dropdown in post view
has_layout: (boolean) (default false)
skip_fields: (array) (default empty) array of custom field keys to avoid for this post, sample: ["subtitle", "icon"]
val: value for the setting
177 178 179 |
# File 'app/models/camaleon_cms/post.rb', line 177 def set_setting(key, val) set_option(key, val) end |
#set_settings(settings = {}) ⇒ Object
assign multiple settings
182 183 184 185 186 |
# File 'app/models/camaleon_cms/post.rb', line 182 def set_settings(settings = {}) settings.each do |key, val| set_setting(key, val) end end |
#set_summary(summary) ⇒ Object
save the summary for current post summary: Text String without html
197 198 199 |
# File 'app/models/camaleon_cms/post.rb', line 197 def set_summary(summary) ("summary", summary) end |
#set_thumb(thumb_url) ⇒ Object
save the thumbnail url for current post thumb_url: String url
211 212 213 |
# File 'app/models/camaleon_cms/post.rb', line 211 def set_thumb(thumb_url) ("thumb", thumb_url) end |
#total_comments ⇒ Object
return the quantity of comments for this post TODO comments count to move into cache counter
248 249 250 |
# File 'app/models/camaleon_cms/post.rb', line 248 def total_comments self.("comments_count", 0).to_i end |
#total_visits ⇒ Object
return the quantity of visits for this post
242 243 244 |
# File 'app/models/camaleon_cms/post.rb', line 242 def total_visits ("visits", 0).to_i end |
#trash? ⇒ Boolean
check if this is in trash status
112 113 114 |
# File 'app/models/camaleon_cms/post.rb', line 112 def trash? status == 'trash' end |