super(options)\r
@submit = options.submit\r
@action = options.action\r
+ @child_forms = {}\r
@item.boosts 'post'\r
@init_fields()\r
\r
@delegateEvents({'submit': method_type})\r
this\r
\r
+ add_element: (element) ->\r
+ form = Locmare.Form.factory({\r
+ form_name: element.item_name(), \r
+ item: element, \r
+ mounted: @mounted, \r
+ submit: null, \r
+ operators: @operators,\r
+ action: '/' + element.table_name() + '/' + Pettanr.to_s(element.get('id'))\r
+ })\r
+ this.$el.append(form.render().el)\r
+ mm = @item.my_class().my_manifest()\r
+ em = element.my_class().my_manifest()\r
+ if mm.associations.is_has_one(em)\r
+ @child_forms[element.item_name()] = form\r
+ else\r
+ @child_forms[element.table_name()] ||= []\r
+ @child_forms[element.table_name()].push(form)\r
+ form\r
+ \r
init_fields: () ->\r
- _this = this\r
- _.each _this.manifest.field_names, (field_name) ->\r
- field_manifest = _this.manifest.fields[field_name]\r
- boost_name = _this.item.my_class().find_boost_name(field_name)\r
+ _.each @manifest.field_names, (field_name) =>\r
+ field_manifest = @manifest.fields[field_name]\r
+ boost_name = @item.my_class().find_boost_name(field_name)\r
extend_model = if boost_name \r
- _this.item.boosters[boost_name].extend_model()\r
+ @item.boosters[boost_name].extend_model()\r
else\r
null\r
if boost_name and extend_model # field is extend setting AND template has a extend model\r
- extend_form_name = _this.item.boosters[boost_name].item_name()\r
- extend_item = _this.item.boosters[boost_name].extend_item()\r
- _this.fields[field_name] = new Locmare.ExtendForm({\r
- parent: _this, \r
+ extend_form_name = @item.boosters[boost_name].item_name()\r
+ extend_item = @item.boosters[boost_name].extend_item()\r
+ @fields[field_name] = new Locmare.ExtendForm({\r
+ parent: this, \r
form_name: extend_form_name, \r
item: extend_item, \r
- mounted: _this.mounted, \r
- operators: _this.operators, \r
+ mounted: @mounted, \r
+ operators: @operators, \r
field_name: field_name\r
})\r
else\r
- _this.fields[field_name] = new Locmare.FormModule.Field({\r
- form: _this, \r
+ @fields[field_name] = new Locmare.FormModule.Field({\r
+ form: this, \r
field_name: field_name, \r
field_manifest: field_manifest\r
})\r
@submits()[@submit]\r
\r
post: () ->\r
- _this = this\r
- _.each @fields, (field) ->\r
- _this.item.set(field.field_name, field.val())\r
+ _.each @fields, (field) =>\r
+ @item.set(field.field_name, field.val())\r
if @item.save()\r
window.router.navigate('/' + @item.table_name() + '/' + Pettanr.to_s(@item.get('id')), true)\r
return false\r
alert('invalid')\r
\r
put: () ->\r
- _this = this\r
- _.each @fields, (field) ->\r
- _this.item.set(field.field_name, field.val())\r
+ _.each @fields, (field) =>\r
+ @item.set(field.field_name, field.val())\r
@item.overwrite({operators: @operators})\r
- if @item.save()\r
+ attrs = @make_attrs()\r
+ if @item.save(attrs)\r
window.router.navigate('/' + @item.table_name() + '/' + Pettanr.to_s(@item.get('id')), true)\r
return false\r
else\r
alert('invalid')\r
\r
+ save_data: () ->\r
+ @item.my_class().child_models()\r
+ attrs = {}\r
+ _.each @fields, (field) =>\r
+ attrs[field.field_name] = @item.get(field.field_name)\r
+ _.each @child_forms, (child_form, name) =>\r
+ mm = @item.my_class().my_manifest()\r
+ em = child_form.item.my_class().my_manifest()\r
+ if mm.associations.is_has_one(em)\r
+ attrs[name + '_attributes'] = child_form.save_data()\r
+ else\r
+ attrs[name + '_attributes'] = []\r
+ _.each child_form, (form) =>\r
+ attrs[name + '_attributes'].push(form.save_data())\r
+ attrs\r
+ \r
class Locmare.ExtendForm extends Locmare.FormBase\r
tagName: 'div'\r
className: 'fields'\r
this\r
\r
init_fields: () ->\r
- _this = this\r
- _.each _this.manifest.field_names, (field_name) ->\r
- field_manifest = _this.manifest.fields[field_name]\r
- _this.fields[field_name] = new Locmare.FormModule.ExtendField({\r
- form: _this, \r
+ _.each @manifest.field_names, (field_name) =>\r
+ field_manifest = @manifest.fields[field_name]\r
+ @fields[field_name] = new Locmare.FormModule.ExtendField({\r
+ form: this, \r
field_name: field_name, \r
field_manifest: field_manifest\r
})\r
\r
render: () ->\r
this.$el.html('')\r
- _this = this\r
- _.each @fields, (field) ->\r
- _this.$el.append(field.render().el)\r
- _this.$el.append(field.rb.render().el) if field.rb\r
+ _.each @fields, (field) =>\r
+ this.$el.append(field.render().el)\r
+ this.$el.append(field.rb.render().el) if field.rb\r
this\r
\r
class Locmare.FormModule.SubmitModule\r