Class: CamaleonCms::Post

Inherits:
PostDefault
  • Object
show all
Includes:
CategoriesTagsForPosts
Defined in:
app/models/camaleon_cms/post.rb

Instance Attribute Summary collapse

Attributes inherited from PostDefault

#draft_id

Instance Method Summary collapse

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_parentObject

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)

Returns:

  • (Boolean)


155
156
157
# File 'app/models/camaleon_cms/post.rb', line 155

def can_commented?
  manage_comments? && get_meta('has_comments').to_s == "1"
end

#decorator_classObject



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

Returns:

  • (Boolean)


103
104
105
# File 'app/models/camaleon_cms/post.rb', line 103

def draft?
  status == 'draft' || status == 'draft_child'
end

#draft_child?Boolean

Returns:

  • (Boolean)


107
108
109
# File 'app/models/camaleon_cms/post.rb', line 107

def draft_child?
  status == 'draft_child'
end

#full_childrenObject

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)
  get_meta('layout', get_option("default_layout") || (posttype || self.post_type).get_option('default_layout', nil))
end

#get_post_type_depreObject

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)
  get_meta('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!
  set_meta("visits", total_visits+1)
end

#is_required_picture?Boolean

check if is required picture for current post

Returns:

  • (Boolean)


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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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

#parentsObject

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

Returns:

  • (Boolean)


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

Returns:

  • (Boolean)


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)
  set_meta("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)
  set_meta("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)
  set_meta("thumb", thumb_url)
end

#total_commentsObject

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.get_meta("comments_count", 0).to_i
end

#total_visitsObject

return the quantity of visits for this post



242
243
244
# File 'app/models/camaleon_cms/post.rb', line 242

def total_visits
  get_meta("visits", 0).to_i
end

#trash?Boolean

check if this is in trash status

Returns:

  • (Boolean)


112
113
114
# File 'app/models/camaleon_cms/post.rb', line 112

def trash?
  status == 'trash'
end