OSDN Git Service

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