OSDN Git Service

fix:
[pettanr/pettanr.git] / app / assets / javascripts / controllers.js.coffee
1 class Pettanr.AppController\r
2   \r
3   constructor: (@params, @form, @operators, @gate) ->\r
4     _.extend(this, Backbone.Events)\r
5   \r
6   @new2: (params, form, operators, gate) ->\r
7     c = @controller_by_name(params['controller'])\r
8     new c(params, form, operators, gate)\r
9   \r
10   @controller_by_name: (name) ->\r
11     Pettanr[Pettanr.camelize(name) + 'Controller']\r
12   \r
13   set_model: () ->\r
14     @my_controller = Manifest.manifest().controllers[@params['controller']]\r
15     @my_action = @my_controller.actions[@params['action']]\r
16     @my_model = Manifest.manifest().models[@my_action.item_name]\r
17     @my_model_class = @my_model.classify()\r
18     \r
19   set_list: () ->\r
20     @set_model()\r
21     @my_list_model = Manifest.manifest().models[@my_action.item_name]\r
22     @my_list_model_class = @my_list_model.classify()\r
23     @list = Locmare.ListGroup.list(\r
24       @my_action.path_name(), @my_action.name, @operators, @params\r
25     )\r
26   \r
27   set_show: (render_func) ->\r
28     @set_model()\r
29     @empty_item = new @my_model_class({id: @params['id']})\r
30     @item = Pettanr.cache.restore(@empty_item)\r
31     if @item\r
32       # got cached item\r
33       render_func.call(this)\r
34     else\r
35       # built empty item\r
36       @item = @empty_item\r
37       @item.fetch().done =>\r
38         Pettanr.cache.store(@item)\r
39         render_func.call(this)\r
40   \r
41   filer_list: () ->\r
42     @set_list()\r
43     @list.open(() =>\r
44       pager = Locmare.ListGroupModule.LibModule.Pager.factory(@list.page_status, @params)\r
45       filer = new Locmare.Filer({\r
46         item_name: @list.item_name, \r
47         items: @list.items(), \r
48         pager: pager, \r
49         operators: @operators\r
50       })\r
51       @listenTo(filer, 'navigate', @navigate)\r
52       filer.render()\r
53       @trigger('ready', filer)\r
54     )\r
55     false\r
56   \r
57   set_play: (render_func) ->\r
58     @set_list()\r
59     @binder_action = @my_action.original\r
60     @binder_controller = @binder_action.controller()\r
61     @binder_model = Manifest.manifest().models[@binder_action.item_name]\r
62     @binder_model_class = @binder_model.classify()\r
63     @empty_item = new @binder_model_class({id: @params['id']})\r
64     @item = Pettanr.cache.restore(@empty_item)\r
65     if @item\r
66       # got cached item\r
67       render_func.call(this)\r
68     else\r
69       # built empty item\r
70       @item = @empty_item\r
71       @item.fetch().done =>\r
72         Pettanr.cache.store(@item)\r
73         render_func.call(this)\r
74   \r
75   show_prof: () ->\r
76     @item.boosts 'post'\r
77     profiler = new Locmare.Profiler({\r
78       item_name: @item.item_name(), \r
79       item: @item, \r
80       operators: @operators\r
81     })\r
82     @listenTo(profiler, 'navigate', @navigate)\r
83     profiler.render()\r
84     @trigger('ready', profiler)\r
85     @trigger('title', @params)\r
86     @trigger('done', @params)\r
87   \r
88   set_new: () ->\r
89     @set_model()\r
90     @item = new @my_model_class({id: @params['id']})\r
91     # Backbone.Model has defaults property\r
92     #@item.supply_default()\r
93   \r
94   set_edit: () ->\r
95     @set_model()\r
96     @empty_item = new @my_model_class({id: @params['id']})\r
97     @item = Pettanr.cache.restore(@empty_item)\r
98     if @item\r
99       # got cached item\r
100       @render_edit()\r
101     else\r
102       # built empty item\r
103       @item = @empty_item\r
104       Pettanr.cache.store(@empty_item)\r
105       @item.fetch().done =>\r
106         @render_edit()\r
107   \r
108   render_edit: () ->\r
109     @item.boosts 'post'\r
110     @render_form()\r
111   \r
112   render_form: () ->\r
113     @form = Locmare.Form.factory({\r
114       form_name: @item.item_name(), \r
115       use_name: 'default', \r
116       item: @item, \r
117       element_form: false, \r
118       submit: 'default', \r
119       operators: @operators,\r
120     })\r
121     @form.render()\r
122     @trigger('ready', @form)\r
123     @trigger('lock', @params, @form)\r
124   \r
125   form_new: () ->\r
126     # how cansel on picker edit button?\r
127     @set_new()\r
128     @render_form()\r
129   \r
130   form_edit: () ->\r
131     # how cansel on picker edit button?\r
132     @set_edit()\r
133   \r
134   post_success: (model, response) ->\r
135     @trigger('unlock', @params, @form)\r
136     @trigger('redirect', @form.item.show_url())\r
137     @trigger('success', model, response)\r
138   \r
139   post_fail: (model, response) ->\r
140     @trigger('fail', response)\r
141   \r
142   destroy_success: (model, response) ->\r
143     @trigger('redirect', '/home/' + model.path_name())\r
144     @trigger('success', model, response)\r
145   \r
146   destroy_fail: (model, response) ->\r
147     @trigger('fail', response)\r
148   \r
149   navigate: (url) ->\r
150     @trigger('navigate', url)\r
151   \r