OSDN Git Service

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