OSDN Git Service

fix profiler extend system
[pettanr/pettanr.git] / lib / local_manifest / form / field / field.rb
1 ManifestBase.require_modules "local_manifest/form/field/", 
2   %w|tag label helper|
3
4 module LocalManifest
5   module FormModule
6     class Field < ManifestBase::TypeNameArgs
7       include FieldModule
8       
9       attr :model_name, :column_name, :label, :tag, :helpers, :row_break
10       
11       def set_default
12         super
13         n = @name.split '.'
14         if n.size > 1
15           @args['model_name'] ||= n[0]
16           @args['column_name'] ||= n[1]
17         else
18           @args['model_name'] ||= self.form.name
19           @args['column_name'] ||= @name
20         end
21         @args['label'] ||= {}
22         @args['tag'] ||= {}
23         @args['helpers'] ||= {}
24         @args['row_break'] ||= true
25       end
26       
27       def init
28         super
29         @model_name = @args['model_name']
30         @column_name = @args['column_name']
31         @label = ManifestBase.load_type_args self, @args, 'label', LabelFactory
32         @tag = ManifestBase.load_type_args self, @args, 'tag', TagFactory
33         @helpers = ManifestBase.load_type_name_args self, @args, 'helpers', HelperFactory
34         @row_break = @args['row_break']
35       end
36       
37       def part?
38         @part_name != nil 
39       end
40       
41       def form_name
42         @parent.name
43       end
44       
45       def form
46         @parent
47       end
48       
49     end
50     
51     class ElementField < Field
52       def form_field_name
53         @model_name + '[' + @column_name + ']'
54       end
55       
56     end
57     
58     class PartField < Field
59       attr :part_name
60       
61       def set_default
62         super
63         @args['part_name'] ||= @args['model_name']
64       end
65       
66       def init
67         super
68         @part_name = @args['part_name']
69       end
70       
71       def form_field_name
72         @model_name + '[' + @model_name + '_attributes][' + @column_name + ']'
73       end
74       
75     end
76     
77   end
78 end