class Locmare.Bucket extends Pettanr.View tagName: 'form' @factory: (bucket_or_form_name, use_name, item, submit) -> bucket = LocalManifest.manifest().buckets[bucket_or_form_name] if bucket and bucket.has_member() new Locmare.Bucket({ bucket_name: bucket_or_form_name, use_name: use_name, item: item, submit: submit, action: '/' + item.table_name() + '/' + Pettanr.to_s(item.get('id')) }) else Locmare.Form.factory({ form_name: bucket_or_form_name, use_name: use_name, item: item, submit: submit, action: '/' + item.table_name() + '/' + Pettanr.to_s(item.get('id')) }) initialize: (options) -> @bucket_name = options.bucket_name @use_name = options.use_name @item = options.item @submit = options.submit @item.boosts 'post' @manifest = LocalManifest.manifest().buckets[@bucket_name] @form_fields = [] @forms = {} @forms[@item.item_name()] = new Locmare.Form({ form_name: @item.item_name(), use_name: @use_name, item: @item, submit: false, }) @init_forms(@item.item_name(), @manifest, @item) @init_fields() render: () -> this.$el.html('') @div_fields = new Locmare.FormModule.Fields({ fields: @form_fields }) this.$el.append(@div_fields.render().el) this fold_extend_settings: (params) -> @item.my_class().fold_extend_settings params[@item.item_name()] @members_fold_extend_settings @item, params[@item.item_name()], @manifest members_fold_extend_settings: (fold_item, attr, man) -> _.each man.members, (member_manifest, member_name) => member_item = fold_item[member_name]() member_item.my_class().fold_extend_settings attr[member_name + '_attributes'] @members_fold_extend_settings member_item, attr[member_name + '_attributes'], member_manifest push_form: (key, form_name, item) -> init_forms: (key, man, item) -> _.each man.members, (member_manifest, member_name) => form_name = member_name # write exchange function if you want member_item = item.get(form_name) new_key = key + '.' + form_name @forms[new_key] = new Locmare.Form({ form_name: new_key, item: member_item, submit: false, }) @init_forms(new_key, member_manifest, member_item) init_fields: () -> _.each @manifest.form_field_names, (form_field_name) => r = if Pettanr.is_blank(form_field_name.form_name) '' else '.' + form_field_name.form_name key = @item.item_name() + r form = @forms[key] field = form.fields[form_field_name.field_name] @form_fields.push(field) image_dir: () -> '/images/' submit_name: () -> if @item.isNew() @item.table_name() + '.submit.new' else @item.table_name() + '.submit.edit' form_name: () -> @bucket_name class Locmare.BucketModule