OSDN Git Service

merge
[pettanr/pettanr.git] / lib / manifest / local / view / form / field.rb
1 require_dependency "manifest/local/view/form/field/label"
2 require_dependency "manifest/local/view/form/field/tag"
3 require_dependency "manifest/local/view/form/field/helper"
4 module Manifest
5   module View
6     module FormModule
7       class Field
8         include FieldModule
9         attr :form, :field_name, :field_manifest, 
10           :label, :tag, :helpers, :options
11         def initialize form, field_name, field_manifest
12           @form = form
13           @field_name = field_name
14           @field_manifest = field_manifest
15           @label = LabelFactory.factory self, @field_manifest.label
16           @tag = TagFactory.factory self, @field_manifest.tag
17           @helpers = {}
18           @field_manifest.helpers.each {|helper_name, helper_manifest|
19             @helpers[helper_name] = HelperFactory.factory self, helper_manifest
20           }
21           @options = {'data-model' => @field_manifest.model_name}
22         end
23         
24         def mounted
25           @form.mounted ? 0 : 1
26         end
27         
28         def mount_option
29           {'mount' => self.mounted}
30         end
31         
32         def item
33           @form.item
34         end
35         
36         def value
37           self.item.attributes[@field_manifest.column_name]
38         end
39         
40         def options tag_options = {}
41           self.item.field_tag_attributes(@field_manifest.column_name, tag_options).merge(self.mount_option)
42         end
43         
44         def form_field_name
45           @field_manifest.form_field_name
46         end
47         
48         def form_name
49           @form.form_name
50         end
51         
52         def template_dir
53           @form.template_dir + 'field/'
54         end
55         
56         def template_file_name
57           @field_manifest.type
58         end
59         
60         def template_name
61           self.template_dir + self.template_file_name
62         end
63         
64         def row_break_template_dir
65           @form.template_dir + 'row_break/'
66         end
67         
68         def row_break_template_file_name
69           if @field_manifest.row_break
70             'br'
71           else
72             'no_break'
73           end
74         end
75         
76         def row_break_template_name
77           self.row_break_template_dir + self.row_break_template_file_name
78         end
79         
80       end
81     end
82   end
83 end