OSDN Git Service

fix: any
[pettanr/pettanr.git] / app / assets / javascripts / controllers.js.coffee
1 class Pettanr.AppController\r
2   \r
3   constructor: (@params, @form, @gate) ->\r
4     _.extend(this, Backbone.Events)\r
5   \r
6   @new2: (params, form, gate) ->\r
7     c = @controller_by_name(params['controller'])\r
8     new c(params, form, 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     @list = @my_action.find(@params)\r
22   \r
23   set_show: (render_func) ->\r
24     @set_model()\r
25     @my_model_class.retrieve(@params['id'], this, {\r
26       success: render_func\r
27       fail: (response, options) =>\r
28         @trigger('fail', response, options)\r
29     })\r
30   \r
31   filer_list: () ->\r
32     @set_list()\r
33     @list.to_filer(this, {\r
34       success: (filer) =>\r
35         @listenTo(filer, 'navigate', @navigate)\r
36         filer.render()\r
37         @trigger('ready', filer)\r
38       fail: (response, options) =>\r
39         @trigger('fail', response, options)\r
40     })\r
41     false\r
42   \r
43   set_play: (render_func) ->\r
44     @set_list()\r
45     @my_model_class.retrieve(@params['id'], this, {success: render_func})\r
46   \r
47   show_prof: () ->\r
48     @item.boosts 'post'\r
49     profiler = new Locmare.Profiler({\r
50       item_name: @item.item_name(), \r
51       item: @item\r
52     })\r
53     @listenTo(profiler, 'navigate', @navigate)\r
54     profiler.render()\r
55     @trigger('ready', profiler)\r
56     @trigger('title', @params)\r
57     @trigger('done', @params)\r
58   \r
59   set_new: () ->\r
60     @set_model()\r
61     @item = new @my_model_class({id: @params['id']})\r
62     # Backbone.Model has defaults property\r
63     #@item.supply_default()\r
64   \r
65   set_edit: (options = {}) ->\r
66     @set_model()\r
67     retriever = new Pettanr.Cache.Retriever(@my_model_class, @params['id'])\r
68     @listenTo(retriever, 'retrieve', @render_edit)\r
69     @listenTo(retriever, 'fail', (response, opt) =>\r
70       @trigger('fail', response, opt)\r
71     )\r
72     retriever.edit(options)\r
73   \r
74   render_edit: (@item) ->\r
75     @item.boosts 'post'\r
76     @render_form()\r
77   \r
78   render_form: () ->\r
79     @form = Locmare.Form.factory({\r
80       form_name: @item.item_name(), \r
81       use_name: 'default', \r
82       item: @item, \r
83       element_form: false, \r
84       submit: 'default'\r
85     })\r
86     @form.render()\r
87     @trigger('ready', @form)\r
88     @trigger('lock', @params, @form)\r
89   \r
90   form_new: () ->\r
91     @set_new()\r
92     @render_form()\r
93   \r
94   form_edit: () ->\r
95     @set_edit()\r
96   \r
97   post_success: (model, response) ->\r
98     @trigger('unlock', @params, @form)\r
99     @trigger('redirect', @form.item.show_url())\r
100     @trigger('success', model, response)\r
101   \r
102   post_fail: (model, response) ->\r
103     @trigger('fail', response)\r
104   \r
105   destroy_success: (model, response) ->\r
106     @trigger('redirect', 'home/' + model.path_name())\r
107     @trigger('success', model, response)\r
108   \r
109   destroy_fail: (model, response) ->\r
110     @trigger('fail', response)\r
111   \r
112   navigate: (url) ->\r
113     @trigger('navigate', url)\r
114   \r