Class: CamaleonCms::CustomFieldGroup
- Inherits:
-
CustomField
- Object
- ActiveRecord::Base
- CustomField
- CamaleonCms::CustomFieldGroup
- Defined in:
- app/models/camaleon_cms/custom_field_group.rb
Instance Method Summary collapse
-
#add_fields(items, item_options) ⇒ Object
only used by form on admin panel (protected) return array of failed_fields and full_fields [[failed fields], [all fields]].
-
#add_manual_field(item, options) ⇒ Object
(also: #add_field)
add fields to group item: - sample: “slug”=>“my_slug”, “description”=>“my description (optional)” - options (textbox sample): “translate”:“1” * field_key (string) | translate (boolean) | default_value (unique value) | default_values (array - multiple values for this field) | label_eval (boolean) | multiple_options (array) * multiple_options (used for select, radio and checkboxes ): [Title”, “value”=>“2”, “default”=>“1”, “value”=>“3”] * label_eval: (Boolean, default false), true => will evaluate the label and description of current field using (eval(‘my_label’)) to have translatable|dynamic labels ****** check all options for each case in Admin::CustomFieldsHelper **** SAMPLE: my_model.add_field(Title”, “slug”=>“subtitle”, “translate”=>true, default_value: “Get in Touch”).
-
#get_caption ⇒ Object
generate the caption for this group.
-
#get_field(slug) ⇒ Object
return a field with slug = slug from current group.
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 Method Details
#add_fields(items, item_options) ⇒ Object
only used by form on admin panel (protected) return array of failed_fields and full_fields [[failed fields], [all fields]]
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'app/models/camaleon_cms/custom_field_group.rb', line 54 def add_fields(items, ) self.fields.where.not(id: items.to_h.map { |_k, obj| obj['id'] }.uniq).destroy_all cache_fields = [] order_index = 0 errors_saved = [] if items.present? items.each do |i, item| item[:field_order] = order_index = [i] || {} if item[:id].present? && (field_item = self.fields.find_by(id: item[:id])).present? saved = field_item.update(item) cache_fields << field_item else field_item = self.fields.new(item) cache_fields << field_item saved = field_item.save auto_save_default_values(field_item, ) if saved errors_saved << field_item unless saved end if saved field_item.('_default', ) order_index += 1 end end end [errors_saved, cache_fields] end |
#add_manual_field(item, options) ⇒ Object Also known as: add_field
add fields to group item:
-
sample: “slug”=>“my_slug”, “description”=>“my description (optional)”
-
options (textbox sample):
"translate":"1"
-
field_key (string) | translate (boolean) | default_value (unique value) |
default_values (array - multiple values for this field) | label_eval (boolean) | multiple_options (array)
-
multiple_options (used for select, radio and checkboxes ): [{“title”=>“Option Title”,
"value"=>"2", "default"=>"1"}, {"title"=>"abcde", "value"=>"3"}]
-
label_eval: (Boolean, default false), true => will evaluate the label and description of
current field using (eval('my_label')) to have translatable|dynamic labels
****** check all options for each case in Admin::CustomFieldsHelper **** SAMPLE: my_model.add_field({“name”=>“Sub Title”, “slug”=>“subtitle”}, {“field_key”=>“text_box”,
"translate"=>true, default_value: "Get in Touch"})
34 35 36 37 38 39 40 41 42 43 44 |
# File 'app/models/camaleon_cms/custom_field_group.rb', line 34 def add_manual_field(item, ) c = get_field(item[:slug] || item['slug']) return c if c.present? field_item = self.fields.new(item) if field_item.save field_item.() auto_save_default_values(field_item, ) end field_item end |
#get_caption ⇒ Object
generate the caption for this group
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'app/models/camaleon_cms/custom_field_group.rb', line 83 def = '' begin case object_class when 'PostType_Post' = "Fields for Contents in <b>#{self.site.post_types.find(objectid).decorate.the_title}</b>" when 'PostType_Category' = "Fields for Categories in <b>#{self.site.post_types.find(objectid).decorate.the_title}</b>" when 'PostType_PostTag' = "Fields for Post tags in <b>#{self.site.post_types.find(objectid).decorate.the_title}</b>" when 'Widget::Main' = "Fields for Widget <b>(#{CamaleonCms::Widget::Main.find(objectid).name.translate})</b>" when 'Theme' = "Field settings for Theme <b>(#{self.site.themes.find(objectid).name rescue objectid})</b>" when 'NavMenu' = "Field settings for Menus <b>(#{CamaleonCms::NavMenu.find(objectid).name})</b>" when 'Site' = 'Field settings the site' when 'PostType' = 'Fields for all <b>Post_Types</b>' when 'Post' p = CamaleonCms::Post.find(objectid).decorate = "Fields for content <b>(#{p.the_title})</b>" else # 'Plugin' or other class = "Fields for <b>#{object_class}</b>" end rescue => e Rails.logger.debug "Camaleon CMS - Menu Item Error: #{e.} ==> Attrs: #{self.attributes}" end end |
#get_field(slug) ⇒ Object
return a field with slug = slug from current group
48 49 50 |
# File 'app/models/camaleon_cms/custom_field_group.rb', line 48 def get_field(slug) self.fields.find_by(slug: slug) end |