OSDN Git Service

fix anything
[pettanr/pettanr.git] / lib / local_manifest / form / field.rb
index b579ba9..a6edd11 100644 (file)
@@ -1,21 +1,76 @@
 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