OSDN Git Service

test editor event
[pettanr/pettanr.git] / app / assets / javascripts / locmare / bucket.js.coffee
1 class Locmare.Bucket extends Backbone.View\r
2   tagName: 'form'\r
3   \r
4   @factory: (bucket_or_form_name, item, mounted, submit, operators) ->\r
5     bucket = LocalManifest.manifest().buckets[bucket_or_form_name]\r
6     if bucket and bucket.has_member()\r
7       new Locmare.Bucket({\r
8         bucket_name: bucket_or_form_name, \r
9         item: item, \r
10         mounted: mounted, \r
11         submit: submit, \r
12         operators: operators,\r
13         action: '/' + item.table_name() + '/' + Pettanr.to_s(item.get('id'))\r
14       })\r
15     else\r
16       Locmare.Form.factory({\r
17         form_name: bucket_or_form_name, \r
18         item: item, \r
19         mounted: mounted, \r
20         submit: submit, \r
21         operators: operators,\r
22         action: '/' + item.table_name() + '/' + Pettanr.to_s(item.get('id'))\r
23       })\r
24   \r
25   initialize: (options) ->\r
26     @bucket_name = options.bucket_name\r
27     @item = options.item\r
28     @mounted = options.mounted\r
29     @submit = options.submit\r
30     @operators = options.operators\r
31     \r
32     @item.boosts 'post'\r
33     @manifest = LocalManifest.manifest().buckets[@bucket_name]\r
34     @form_fields = []\r
35     @forms = {}\r
36     @forms[@item.item_name()] = new Locmare.Form({\r
37       form_name: @item.item_name(), \r
38       item: @item, \r
39       mounted: @mounted, \r
40       submit: false, \r
41       operators: @operators\r
42     })\r
43     @init_forms(@item.item_name(), @manifest, @item)\r
44     @init_fields()\r
45   \r
46   render: () ->\r
47     this.$el.html('')\r
48     @div_fields = new Locmare.FormModule.Fields({\r
49       fields: @form_fields\r
50     })\r
51     this.$el.append(@div_fields.render().el)\r
52     this\r
53   \r
54   fold_extend_settings: (params) ->\r
55     @item.my_class().fold_extend_settings params[@item.item_name()]\r
56     @members_fold_extend_settings @item, params[@item.item_name()], @manifest\r
57   \r
58   members_fold_extend_settings: (fold_item, attr, man) ->\r
59     _.each man.members, (member_manifest, member_name) =>\r
60       member_item = fold_item[member_name]()\r
61       member_item.my_class().fold_extend_settings attr[member_name + '_attributes']\r
62       @members_fold_extend_settings member_item, attr[member_name + '_attributes'], member_manifest\r
63   \r
64   push_form: (key, form_name, item) ->\r
65   \r
66   init_forms: (key, man, item) ->\r
67     _.each man.members, (member_manifest, member_name) =>\r
68       form_name = member_name   # write exchange function if you want\r
69       member_item = item.get(form_name)\r
70       new_key = key + '.' + form_name\r
71       @forms[new_key] = new Locmare.Form({\r
72         form_name: new_key, \r
73         item: member_item, \r
74         mounted: @mounted, \r
75         submit: false, \r
76         operators: @operators\r
77       })\r
78       @init_forms(new_key, member_manifest, member_item)\r
79   \r
80   init_fields: () ->\r
81     _.each @manifest.form_field_names, (form_field_name) =>\r
82       r = if Pettanr.is_blank(form_field_name.form_name)\r
83         ''\r
84       else\r
85         '.' + form_field_name.form_name\r
86       key = @item.item_name() + r\r
87       form = @forms[key]\r
88       field = form.fields[form_field_name.field_name]\r
89       @form_fields.push(field)\r
90   \r
91   image_dir: () ->\r
92     '/images/'\r
93   \r
94   submit_name: () ->\r
95     if @item.isNew()\r
96       @item.table_name() + '.submit.new'\r
97     else\r
98       @item.table_name() + '.submit.edit'\r
99  \r
100   form_name: () ->\r
101     @bucket_name\r
102   \r
103 class Locmare.BucketModule\r