OSDN Git Service

fix editor
[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       new Locmare.Form({\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     _this = this\r
60     _.each man.members, (member_manifest, member_name) ->\r
61       member_item = fold_item[member_name]()\r
62       member_item.my_class().fold_extend_settings attr[member_name + '_attributes']\r
63       _this.members_fold_extend_settings member_item, attr[member_name + '_attributes'], member_manifest\r
64   \r
65   push_form: (key, form_name, item) ->\r
66   \r
67   init_forms: (key, man, item) ->\r
68     _this = this\r
69     _.each man.members, (member_manifest, member_name) ->\r
70       form_name = member_name   # write exchange function if you want\r
71       member_item = item.get(form_name)\r
72       new_key = key + '.' + form_name\r
73       _this.forms[new_key] = new Locmare.Form({\r
74         form_name: new_key, \r
75         item: member_item, \r
76         mounted: _this.mounted, \r
77         submit: false, \r
78         operators: _this.operators\r
79       })\r
80       _this.init_forms(new_key, member_manifest, member_item)\r
81   \r
82   init_fields: () ->\r
83     _this = this\r
84     _.each @manifest.form_field_names, (form_field_name) ->\r
85       r = if Pettanr.is_blank(form_field_name.form_name)\r
86         ''\r
87       else\r
88         '.' + form_field_name.form_name\r
89       key = _this.item.item_name() + r\r
90       form = _this.forms[key]\r
91       field = form.fields[form_field_name.field_name]\r
92       _this.form_fields.push(field)\r
93   \r
94   image_dir: () ->\r
95     '/images/'\r
96   \r
97   submit_name: () ->\r
98     if @item.isNew()\r
99       @item.table_name() + '.submit.new'\r
100     else\r
101       @item.table_name() + '.submit.edit'\r
102  \r
103   form_name: () ->\r
104     @bucket_name\r
105   \r
106 class Locmare.BucketModule\r