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): “field_key”:“text_box”,“multiple”:“1”,“required”:“1”,“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]]
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'app/models/camaleon_cms/custom_field_group.rb', line 42 def add_fields(items, ) self.fields.where.not(id: items.map{|k, obj| obj['id'] }.uniq).destroy_all cache_fields, order_index, errors_saved = [], 0, [] if items.present? items.each do |i,item| item[:field_order] = order_index = [i] || {} if item[:id].present? && (field_item = self.fields.where(id: item[:id]).first).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): “field_key”:“text_box”,“multiple”:“1”,“required”:“1”,“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”)
22 23 24 25 26 27 28 29 30 31 32 |
# File 'app/models/camaleon_cms/custom_field_group.rb', line 22 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
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'app/models/camaleon_cms/custom_field_group.rb', line 69 def = "" begin case self.object_class when "PostType_Post" = "Fields for Contents in <b>#{self.site.post_types.find(self.objectid).decorate.the_title}</b>" when 'PostType_Category' = "Fields for Categories in <b>#{self.site.post_types.find(self.objectid).decorate.the_title}</b>" when 'PostType_PostTag' = "Fields for Post tags in <b>#{self.site.post_types.find(self.objectid).decorate.the_title}</b>" when 'Widget::Main' = "Fields for Widget <b>(#{CamaleonCms::Widget::Main.find(self.objectid).name.translate})</b>" when 'Theme' = "Field settings for Theme <b>(#{self.site.themes.find(self.objectid).name rescue self.objectid})</b>" when 'NavMenu' = "Field settings for Menus <b>(#{CamaleonCms::NavMenu.find(self.objectid).name})</b>" when 'Site' = "Field settings the site" when 'PostType' = "Fields for all <b>Post_Types</b>" when 'Post' p = CamaleonCms::Post.find(self.objectid).decorate = "Fields for content <b>(#{p.the_title})</b>" else # 'Plugin' or other class = "Fields for <b>#{self.object_class}</b>" end rescue => e Rails.logger.info "----------#{e.}----#{self.attributes}" end end |
#get_field(slug) ⇒ Object
return a field with slug = slug from current group
36 37 38 |
# File 'app/models/camaleon_cms/custom_field_group.rb', line 36 def get_field(slug) self.fields.where(slug: slug).first end |