OSDN Git Service

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