OSDN Git Service

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