ManifestBase.require_modules "local_manifest/form/field/",
- %w|field|
+ %w|tag label helper|
module LocalManifest
module FormModule
- class FieldFactory < ManifestBase::Factory
+ class Field < ManifestBase::NameValues
include FieldModule
- def self.types
- {
- 'element' => ElementField, 'part' => PartField
- }
+ attr :label, :tag, :helpers, :row_break
+
+ def set_default
+ super
+ @values['label'] ||= {}
+ @values['tag'] ||= {}
+ @values['helpers'] ||= {}
+ @values['row_break'] ||= true
+ end
+
+ def init
+ super
+ @label = ManifestBase.load_type_args self, @values, 'label', LabelFactory
+ @tag = ManifestBase.load_type_args self, @values, 'tag', TagFactory
+ @helpers = ManifestBase.load_type_name_args self, @values, 'helpers', HelperFactory
+ @row_break = @values['row_break']
+ end
+
+ def part?
+ @part_name != nil
+ end
+
+ def form_field_name
+ form_name + '[' + @name + ']'
+ end
+
+ def form_name
+ @parent.name
+ end
+
+ def column_name
+ @name
+ end
+
+ def model_name
+ form_name
+ end
+
+ def form
+ @parent
+ end
+
+ end
+
+ class ElementField < Field
+ end
+
+ class PartField < Field
+ attr :part_name
+
+ def set_default
+ super
+ @values['part_name'] ||= @values['model_name']
+ end
+
+ def init
+ super
+ @part_name = @values['part_name']
end
- def self.default_type
- 'element'
+ def form_field_name
+ @model_name + '[' + @model_name + '_attributes][' + @column_name + ']'
end
end
+
end
end