1 require_dependency "locmare/form/field"
2 require_dependency "locmare/form/extend_field"
7 attr :manifest, :form_name, :use_name, :item, :mounted, :operators, :template_dir,
9 def initialize form_name_with_sub_form, use_name, item, mounted, operators
10 if form_name_with_sub_form =~ /\./
11 @sub_form_names = form_name_with_sub_form.split '.'
12 @form_name = @sub_form_names.last
13 @root_form_name = @sub_form_names.shift
16 @form_name = form_name_with_sub_form
17 @root_form_name = @form_name
22 @operators = operators
24 @manifest = LocalManifest.manifest.forms[@form_name].uses[@use_name]
25 @template_dir = 'templates/r/form/'
29 def fold_extend_settings params
30 @item.class.fold_extend_settings params[@item.item_name]
34 @sub_form_names.map{|name| '[' + name + '_attributes' + ']'}.join
37 def form_field_name field_name
38 @root_form_name + self.sub_form_name + '[' + field_name + ']'
42 @manifest.field_names.each do |field_name|
43 yield field_name, @fields[field_name]
47 def template_file_name
52 self.template_dir + self.template_file_name
55 def fields_template_name
56 self.template_dir + 'fields'
68 def initialize form_name, use_name, item, mounted, submit, operators
69 super form_name, use_name, item, mounted, operators
76 @manifest.each_field do |field_name, field_manifest|
77 boost_name = @item.class.find_boost_name(field_name)
78 extend_model = if boost_name
79 @item.boosters[boost_name].extend_model
83 if boost_name and extend_model # field is extend setting AND template has a extend model
84 extend_form_name = @item.boosters[boost_name].item_name
85 extend_item = @item.boosters[boost_name].extend_item
86 @fields[field_name] = ExtendForm.new self, extend_form_name, @use_name, extend_item, @mounted, @operators, field_name
88 @fields[field_name] = Field.new self, field_name, field_manifest
95 @item.table_name + '.submit.new'
97 @item.table_name + '.submit.edit'
101 def submit_template_dir
102 self.template_dir + 'submit/'
105 def submit_template_name
107 self.submit_template_dir + 'submit'
109 self.submit_template_dir + 'none'
115 class ExtendForm < FormBase
117 attr :parent, :field_name, :field, :label
119 def initialize parent, form_name, use_name, item, mounted, operators, field_name
121 @field_name = field_name
122 super form_name, use_name, item, mounted, operators
123 @field = Field.new @parent, @field_name, @parent.manifest.fields[@field_name]
124 @label = @field.label
129 @manifest.each_field do |field_name, field_manifest|
130 @fields[field_name] = ExtendField.new self, field_name, field_manifest
134 def form_field_name extend_field_name
136 @parent.form_field_name(@field_name) + '[' + extend_field_name + ']'
139 def template_file_name