-# form_name_with_sub_form\r
-# item: editing item\r
-# mounted: true/false\r
-# submit: string / 'submit'\r
-# operators: \r
-class Locmare.FormBase extends Backbone.View\r
- tagName: 'div'\r
- \r
- initialize: (options) ->\r
- @form_name_with_sub_form = options.form_name_with_sub_form\r
- @item = options.item\r
- @mounted = options.mounted\r
- @submit = options.submit\r
- @operators = options.operators\r
- if /\./.test(form_name_with_sub_form)\r
- @sub_form_names = form_name_with_sub_form.split('.')\r
- @form_name = @sub_form_names.last\r
- @root_form_name = @sub_form_names.shift\r
- else\r
- @sub_form_names = []\r
- @form_name = @form_name_with_sub_form\r
- @root_form_name = @form_name\r
- @manifest = LocalManifest.manifest().forms[@form_name]\r
- @fields = {}\r
- \r
- fold_extend_settings: (params) ->\r
- @item.my_class().fold_extend_settings params[@item.item_name()]\r
- \r
- sub_form_name: () ->\r
- r = _.map @sub_form_names, (name) ->\r
- '[' + name + '_attributes' + ']'\r
- r.join()\r
- \r
- form_field_name: (field_name) ->\r
- @root_form_name + @sub_form_name() + '[' + field_name + ']'\r
- \r
- image_dir: () ->\r
- '/images/'\r
- \r
class Locmare.Bucket extends Backbone.View\r
+ tagName: 'form'\r
\r
- @factory: (options) ->\r
- @bucket_name = options.bucket_name\r
- @item = options.item\r
- @mounted = options.mounted\r
- @submit = options.submit\r
- @operators = options.operators\r
- \r
+ @factory: (bucket_or_form_name, item, mounted, submit, operators) ->\r
bucket = LocalManifest.manifest().buckets[bucket_or_form_name]\r
- c = if bucket and bucket.has_member\r
- Locmare.Bucket\r
+ if bucket and bucket.has_member()\r
+ new Locmare.Bucket({\r
+ bucket_name: bucket_or_form_name, \r
+ item: item, \r
+ mounted: mounted, \r
+ submit: submit, \r
+ operators: operators,\r
+ action: '/' + item.table_name() + '/' + Pettanr.to_s(item.get('id'))\r
+ })\r
else\r
- Locmare.Form\r
- new c({\r
- bucket_or_form_name, \r
- item, \r
- mounted, \r
- submit, \r
- operators\r
- })\r
+ Locmare.Form.factory({\r
+ form_name: bucket_or_form_name, \r
+ item: item, \r
+ mounted: mounted, \r
+ submit: submit, \r
+ operators: operators,\r
+ action: '/' + item.table_name() + '/' + Pettanr.to_s(item.get('id'))\r
+ })\r
\r
initialize: (options) ->\r
@bucket_name = options.bucket_name\r
@form_fields = []\r
@forms = {}\r
@forms[@item.item_name()] = new Locmare.Form({\r
- @item.item_name, @item, @mounted, false, @operators\r
+ form_name: @item.item_name(), \r
+ item: @item, \r
+ mounted: @mounted, \r
+ submit: false, \r
+ operators: @operators\r
})\r
- @init_forms(@item.item_name, @manifest, @item)\r
+ @init_forms(@item.item_name(), @manifest, @item)\r
@init_fields()\r
\r
+ render: () ->\r
+ this.$el.html('')\r
+ @div_fields = new Locmare.FormModule.Fields({\r
+ fields: @form_fields\r
+ })\r
+ this.$el.append(@div_fields.render().el)\r
+ this\r
+ \r
fold_extend_settings: (params) ->\r
- @item.class.fold_extend_settings params[@item.item_name]\r
- self.members_fold_extend_settings @item, params[@item.item_name], @manifest\r
+ @item.my_class().fold_extend_settings params[@item.item_name()]\r
+ @members_fold_extend_settings @item, params[@item.item_name()], @manifest\r
\r
members_fold_extend_settings: (fold_item, attr, man) ->\r
- man.members.each do |member_name, member_manifest|\r
- member_item = fold_item.__send__ member_name\r
- member_item.class.fold_extend_settings attr[member_name + '_attributes']\r
- self.members_fold_extend_settings member_item, attr[member_name + '_attributes'], member_manifest\r
- \r
- each_field: () ->\r
- @form_fields.each do |form_field|\r
- yield form_field.field_name, form_field\r
+ _.each man.members, (member_manifest, member_name) =>\r
+ member_item = fold_item[member_name]()\r
+ member_item.my_class().fold_extend_settings attr[member_name + '_attributes']\r
+ @members_fold_extend_settings member_item, attr[member_name + '_attributes'], member_manifest\r
\r
push_form: (key, form_name, item) ->\r
\r
init_forms: (key, man, item) ->\r
- man.members.each do |member_name, member_manifest|\r
+ _.each man.members, (member_manifest, member_name) =>\r
form_name = member_name # write exchange function if you want\r
- member_item = item.__send__(form_name)\r
+ member_item = item.get(form_name)\r
new_key = key + '.' + form_name\r
- @forms[new_key] = Locmare::Form.new new_key, member_item, @mounted, false, @operators\r
- self.init_forms new_key, member_manifest, member_item\r
+ @forms[new_key] = new Locmare.Form({\r
+ form_name: new_key, \r
+ item: member_item, \r
+ mounted: @mounted, \r
+ submit: false, \r
+ operators: @operators\r
+ })\r
+ @init_forms(new_key, member_manifest, member_item)\r
\r
init_fields: () ->\r
- @manifest.form_field_names.each do |form_field_name|\r
- r = form_field_name.form_name.blank? ? '' : '.' + form_field_name.form_name\r
- key = @item.item_name + r\r
+ _.each @manifest.form_field_names, (form_field_name) =>\r
+ r = if Pettanr.is_blank(form_field_name.form_name)\r
+ ''\r
+ else\r
+ '.' + form_field_name.form_name\r
+ key = @item.item_name() + r\r
form = @forms[key]\r
field = form.fields[form_field_name.field_name]\r
- @form_fields << field\r
+ @form_fields.push(field)\r
\r
image_dir: () ->\r
'/images/'\r