--- /dev/null
+require_dependency "local_manifest/form/field/tag"
+require_dependency "local_manifest/form/field/label"
+require_dependency "local_manifest/form/field/helper"
+module LocalManifest
+ module FormModule
+ class Field
+ include FieldModule
+ attr :form, :field_name, :field_manifest, :type,
+ :model_name, :column_name, :label, :tag, :helpers, :row_break
+
+ def initialize form, field_name, field_manifest
+ @form = form
+ @field_name = field_name
+ @field_manifest = field_manifest
+ self.set_default
+ self.init
+ end
+
+ def set_default
+ @field_manifest['args'] ||= {}
+ n = self.field_name.split '.'
+ if n.size > 1
+ @field_manifest['args']['model_name'] ||= n[0]
+ @field_manifest['args']['column_name'] ||= n[1]
+ else
+ @field_manifest['args']['model_name'] ||= self.form.form_name
+ @field_manifest['args']['column_name'] ||= self.field_name
+ end
+ @field_manifest['args']['label'] ||= {}
+ @field_manifest['args']['tag'] ||= {}
+ @field_manifest['args']['helpers'] ||= {}
+ @field_manifest['args']['row_break'] ||= true
+ end
+
+ def init
+ @type = @field_manifest['type']
+ @args = @field_manifest['args']
+ @model_name = @args['model_name']
+ @column_name = @args['column_name']
+ @label = LabelFactory.factory(self, @args['label'])
+ @tag = TagFactory.factory(self, @args['tag'])
+ @helpers = {}
+ @args['helpers'].each {|helper_name, helper_manifest|
+ @helpers[helper_name] = HelperFactory.factory(self, helper_name, helper_manifest)
+ }
+ @row_break = @args['row_break']
+ end
+
+ def part?
+ @part_name != nil
+ end
+
+ def form_name
+ @form.form_name
+ end
+
+ def filer_manifest
+ @form.form_manifest
+ end
+
+ end
+
+ class ElementField < Field
+ def form_field_name
+ @model_name + '[' + @column_name + ']'
+ end
+
+ end
+
+ class PartField < Field
+ attr :part_name
+
+ def set_default
+ super
+ @field_manifest['args']['part_name'] ||= @field_manifest['args']['model_name']
+ end
+
+ def init
+ super
+ @part_name = @args['part_name']
+ end
+
+ def form_field_name
+ @model_name + '[' + @model_name + '_attributes][' + @column_name + ']'
+ end
+
+ end
+
+ end
+end