Class: CamaleonCms::PostType

Inherits:
TermTaxonomy
  • Object
show all
Defined in:
app/models/camaleon_cms/post_type.rb

Instance Method Summary collapse

Instance Method Details

#add_post(args) ⇒ Object

add a post for current model title: title for post, => required content: html text content, => required thumb: image url, => default (empty). check https://camaleon.website/api-methods.html#section_fileuploads categories: [1,3,4,5], => default (empty) tags: String comma separated, => default (empty) slug: string key for post, => default (empty) summary: String resume (optional) => default (empty) post_order: Integer to define the order position in the list (optional) fields: Hash of values for custom fields, sample => fields: {subtitle: 'abc', icon: 'test' } (optional) settings: Hash of post settings, sample => settings: (optional, see more in post.set_setting(...)) {has_content: false, has_summary: true, default_layout: 'my_layout', default_template: 'my_template' } data_metas: "", layout: "" sample: my_posttype.add_post( title: "My Title", post_order: 5, content: 'lorem_ipsum', settings: { default_template: "home/counters", has_content: false, has_seo: false, skip_fields: ["sub_tite", 'banner'] }, fields: { pattern: true, bg: 'https://www.reallusion.com/de/images/3dx5/whatsnew/3dx5_features_banner_bg_02.jpg' } ) More samples here: https://gist.github.com/owen2345/eba9691585ed78ad6f7b52e9591357bf return created post if it was created, else return errors



125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# File 'app/models/camaleon_cms/post_type.rb', line 125

def add_post(args)
  _fields = args.delete(:fields)
  _settings = args.delete(:settings)
  _summary = args.delete(:summary)
  _order_position = args.delete(:order_position)
  args[:data_categories] = _categories = args.delete(:categories)
  args[:data_tags] = args.delete(:tags)
  _thumb = args.delete(:thumb)
  p = posts.new(args)
  p.slug = site.get_valid_post_slug(p.title.parameterize) if p.slug.blank?
  if p.save!
    _settings.each { |k, v| p.set_setting(k, v) } if _settings.present?
    p.set_position(_order_position) if _order_position.present?
    p.set_summary(_summary) if _summary.present?
    p.set_thumb(_thumb) if _thumb.present?
    _fields.each { |k, v| p.save_field_value(k, v) } if _fields.present?
    p.decorate
  else
    p.errors
  end
end

#contents_route_formatObject

return the configuration of routes for post contents



162
163
164
# File 'app/models/camaleon_cms/post_type.rb', line 162

def contents_route_format
  get_option('contents_route_format', 'post')
end

#contents_route_formatsObject

return all available route formats of this post type for content posts rubocop:disable Layout/LineLength



149
150
151
152
153
154
155
156
157
158
# File 'app/models/camaleon_cms/post_type.rb', line 149

def contents_route_formats
  {
    'post_of_post_type' => '<code>/group/:post_type_id-:title/:slug</code><br>  (Sample: https://localhost.com/group/17-services/myservice.html)',
    'post_of_category' => '<code>/category/:category_id-:title/:slug</code><br>  (Sample: https://localhost.com/category/17-services/myservice.html)',
    'post_of_category_post_type' => '<code>/:post_type_title/category/:category_id-:title/:slug</code><br>  (Sample: https://localhost.com/services/category/17-services/myservice.html)',
    'post_of_posttype' => '<code>/:post_type_title/:slug</code><br>  (Sample: https://localhost.com/services/myservice.html)',
    'post' => '<code>/:slug</code><br>  (Sample: https://localhost.com/myservice.html)',
    'hierarchy_post' => '<code>/:parent1_slug/:parent2_slug/.../:slug</code><br>  (Sample: https://localhost.com/item-1/item-1-1/item-111.html)'
  }
end

#default_categoryObject

return default category for this post type only return a category for post types that manage categories



91
92
93
94
95
96
97
98
99
100
# File 'app/models/camaleon_cms/post_type.rb', line 91

def default_category
  return unless manage_categories?

  cat = categories.find_by_slug('uncategorized') # rubocop:disable Rails/DynamicFindBy
  unless cat
    cat = categories.create({ name: 'Uncategorized', slug: 'uncategorized', parent_id: id })
    cat.set_option('not_deleted', true)
  end
  cat
end

#full_categoriesObject

select full_categories for the post type, include all children categories



85
86
87
# File 'app/models/camaleon_cms/post_type.rb', line 85

def full_categories
  CamaleonCms::Category.where(site_id: site_id, post_type_id: id)
end

#manage_categories?Boolean

check if current post type manage categories

Returns:

  • (Boolean)


33
34
35
# File 'app/models/camaleon_cms/post_type.rb', line 33

def manage_categories?
  options[:has_category] || options[:has_single_category]
end

#manage_hierarchy?Boolean

verify if this post_type support for page hierarchy (parents)

Returns:

  • (Boolean)


167
168
169
# File 'app/models/camaleon_cms/post_type.rb', line 167

def manage_hierarchy?
  get_option('has_parent_structure', false)
end

#manage_seo?Boolean

check if this post type permit to manage seo attrs in posts

Returns:

  • (Boolean)


54
55
56
# File 'app/models/camaleon_cms/post_type.rb', line 54

def manage_seo?
  get_option('has_seo', get_option('has_keywords', true))
end

#manage_tags?Boolean

check if this post type manage post tags

Returns:

  • (Boolean)


49
50
51
# File 'app/models/camaleon_cms/post_type.rb', line 49

def manage_tags?
  options[:has_tags]
end

#set_setting(key, value) ⇒ Object

set or update a setting for this post type



80
81
82
# File 'app/models/camaleon_cms/post_type.rb', line 80

def set_setting(key, value)
  set_option(key, value)
end

#set_settings(settings = {}) ⇒ Object

assign settings for this post type default values: { has_category: false, has_tags: false, has_summary: true, has_content: true, has_comments: false, has_picture: true, has_template: true, has_seo: true, not_deleted: false, has_layout: false, default_layout: '', contents_route_format: 'post' }



73
74
75
76
77
# File 'app/models/camaleon_cms/post_type.rb', line 73

def set_settings(settings = {})
  settings.each do |key, val|
    set_option(key, val)
  end
end

#show_for_admin_menu?Boolean

check if this post type is shown on admin -> contents -> menu

Returns:

  • (Boolean)


44
45
46
# File 'app/models/camaleon_cms/post_type.rb', line 44

def show_for_admin_menu?
  term_group.nil?
end

#toggle_show_for_admin_menu(flag) ⇒ Object

hide or show this post type on admin -> contents -> menu true => enable, false => disable



39
40
41
# File 'app/models/camaleon_cms/post_type.rb', line 39

def toggle_show_for_admin_menu(flag)
  update(term_group: flag == true ? nil : -1)
end