1 # form_name_with_sub_form
\r
3 # mounted: true/false
\r
4 # submit: string / 'submit'
\r
6 class Locmare.FormBase extends Backbone.View
\r
9 initialize: (options) ->
\r
10 @form_name_with_sub_form = options.form_name_with_sub_form
\r
11 @item = options.item
\r
12 @mounted = options.mounted
\r
13 @submit = options.submit
\r
14 @operators = options.operators
\r
15 if /\./.test(form_name_with_sub_form)
\r
16 @sub_form_names = form_name_with_sub_form.split('.')
\r
17 @form_name = @sub_form_names.last
\r
18 @root_form_name = @sub_form_names.shift
\r
20 @sub_form_names = []
\r
21 @form_name = @form_name_with_sub_form
\r
22 @root_form_name = @form_name
\r
23 @manifest = LocalManifest.manifest().forms[@form_name]
\r
26 fold_extend_settings: (params) ->
\r
27 @item.my_class().fold_extend_settings params[@item.item_name()]
\r
29 sub_form_name: () ->
\r
30 r = _.map @sub_form_names, (name) ->
\r
31 '[' + name + '_attributes' + ']'
\r
34 form_field_name: (field_name) ->
\r
35 @root_form_name + @sub_form_name() + '[' + field_name + ']'
\r
40 class Locmare.Form extends Locmare.FormBase
\r
41 initialize: (options) ->
\r
43 @submit = options.submit
\r
49 @error_explanation = null
\r
50 @div_fields = new Locmare.FormModule.Fields({
\r
53 #this.$el.append(@error_explanation.render().el) if not @error_explanation
\r
54 this.$el.append(@div_fields.render().el)
\r
57 @div_submit = new c({form: this})
\r
58 this.$el.append(@div_submit.render().el)
\r
63 _.each _this.manifest.field_names, (field_name) ->
\r
64 field_manifest = _this.manifest.fields[field_name]
\r
65 boost_name = _this.item.my_class().find_boost_name(field_name)
\r
66 extend_model = if boost_name
\r
67 _this.item.boosters[boost_name].extend_model()
\r
70 if boost_name and extend_model # field is extend setting AND template has a extend model
\r
71 extend_form_name = @item.boosters[boost_name].model_name
\r
72 extend_item = @item.boosters[boost_name].extend_item
\r
73 _this.fields[field_name] = new Locmare.ExtendForm({
\r
75 form_name: extend_form_name,
\r
77 mounted: _this.mounted,
\r
78 operators: _this.operators,
\r
79 field_name: field_name
\r
82 _this.fields[field_name] = new Locmare.FormModule.Field({
\r
84 field_name: field_name,
\r
85 field_manifest: field_manifest
\r
90 @item.table_name() + '.submit.new'
\r
92 @item.table_name() + '.submit.edit'
\r
96 default: Locmare.FormModule.SubmitModule.Default
\r
100 @submits()[@submit]
\r
102 class Locmare.ExtendForm extends Locmare.FormBase
\r
104 initialize: (options) ->
\r
105 @parent = options.parent
\r
106 @form_name = options.form_name
\r
107 @item = options.item
\r
108 @mounted = options.mounted
\r
109 @operators = options.operators
\r
110 @field_name = options.field_name
\r
111 super(@form_name, @item, @mounted, @operators)
\r
112 @field = new Locmare.FormModule.Field({
\r
114 field_name: @field_name,
\r
115 field_manifest: @parent.manifest.fields[@field_name]
\r
117 @label = @field.label
\r
122 _.each _this.manifest.field_names, (field_name) ->
\r
123 field_manifest = _this.manifest.fields[field_name]
\r
124 _this.fields[field_name] = new Locmare.FormModule.ExtendField({
\r
126 field_name: field_name,
\r
127 field_manifest: field_manifest
\r
130 form_field_name: (field_name) ->
\r
132 @parent.form_field_name(field_name) + '[' + field_name + ']'
\r
134 class Locmare.FormModule
\r
135 class Locmare.FormModule.Fields extends Backbone.View
\r
137 className: 'fields'
\r
139 initialize: (options) ->
\r
140 @fields = options.fields
\r
145 _.each @fields, (field) ->
\r
146 _this.$el.append(field.render().el)
\r
149 class Locmare.FormModule.SubmitModule
\r
150 class Locmare.FormModule.SubmitModule.Default extends Backbone.View
\r
152 className: 'actions'
\r
154 initialize: (options) ->
\r
155 @form = options.form
\r
158 this.$el.html('<input type="submit" name="commit" class="submit" value="' + @form.submit_name() + '"></input>')
\r