OSDN Git Service

fix anything
[pettanr/pettanr.git] / lib / local_manifest / form / field.rb
index beb720b..a6edd11 100644 (file)
@@ -1,18 +1,73 @@
-require_dependency "local_manifest/form/field/field"
+ManifestBase.require_modules "local_manifest/form/field/", 
+  %w|tag label helper|
+
 module LocalManifest
   module FormModule
-    class FieldFactory
+    class Field < ManifestBase::NameValues
       include FieldModule
-      @@types = {
-        'element' => ElementField, 'part' => PartField
-      }
-      def self.factory form, field_name, my_manifest
-        my_manifest['type'] ||= 'element'
-        type = my_manifest['type']
-        raise "undefined type for forms > #{form.form_name} > fields > #{field_name}\n" unless type
-        my_class = @@types[type]
-        raise "undefined class for forms > #{form.form_name} > fields > #{field_name} > #{type}\n" unless my_class
-        my_class.new(form, field_name, my_manifest)
+      
+      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 form_field_name
+        @model_name + '[' + @model_name + '_attributes][' + @column_name + ']'
       end
       
     end