OSDN Git Service

fix: cache
[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     @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, @params\r
25     )\r
26   \r
27   set_show: (render_func) ->\r
28     @set_model()\r
29     retriever = new Pettanr.Cache.Retriever(@my_model_class, @params['id'])\r
30     @listenTo(retriever, 'retrieve', render_func)\r
31     retriever.retrieve()\r
32   \r
33   filer_list: () ->\r
34     @set_list()\r
35     @list.open(() =>\r
36       pager = Locmare.ListGroupModule.LibModule.Pager.factory(@list.page_status, @params)\r
37       filer = new Locmare.Filer({\r
38         item_name: @list.item_name, \r
39         items: @list.items(), \r
40         pager: pager\r
41       })\r
42       @listenTo(filer, 'navigate', @navigate)\r
43       filer.render()\r
44       @trigger('ready', filer)\r
45     )\r
46     false\r
47   \r
48   set_play: (render_func) ->\r
49     @set_list()\r
50     @binder_action = @my_action.original\r
51     @binder_controller = @binder_action.controller()\r
52     @binder_model = Manifest.manifest().models[@binder_action.item_name]\r
53     @binder_model_class = @binder_model.classify()\r
54     retriever = new Pettanr.Cache.Retriever(@binder_model_class, @params['id'])\r
55     @listenTo(retriever, 'retrieve', render_func)\r
56     retriever.retrieve()\r
57   \r
58   show_prof: () ->\r
59     @item.boosts 'post'\r
60     profiler = new Locmare.Profiler({\r
61       item_name: @item.item_name(), \r
62       item: @item\r
63     })\r
64     @listenTo(profiler, 'navigate', @navigate)\r
65     profiler.render()\r
66     @trigger('ready', profiler)\r
67     @trigger('title', @params)\r
68     @trigger('done', @params)\r
69   \r
70   set_new: () ->\r
71     @set_model()\r
72     @item = new @my_model_class({id: @params['id']})\r
73     # Backbone.Model has defaults property\r
74     #@item.supply_default()\r
75   \r
76   set_edit: (options = {}) ->\r
77     @set_model()\r
78     retriever = new Pettanr.Cache.Retriever(@my_model_class, @params['id'])\r
79     @listenTo(retriever, 'retrieve', @render_edit)\r
80     retriever.edit(options)\r
81   \r
82   render_edit: (@item) ->\r
83     @item.boosts 'post'\r
84     @render_form()\r
85   \r
86   render_form: () ->\r
87     @form = Locmare.Form.factory({\r
88       form_name: @item.item_name(), \r
89       use_name: 'default', \r
90       item: @item, \r
91       element_form: false, \r
92       submit: 'default'\r
93     })\r
94     @form.render()\r
95     @trigger('ready', @form)\r
96     @trigger('lock', @params, @form)\r
97   \r
98   form_new: () ->\r
99     @set_new()\r
100     @render_form()\r
101   \r
102   form_edit: () ->\r
103     @set_edit()\r
104   \r
105   post_success: (model, response) ->\r
106     @trigger('unlock', @params, @form)\r
107     @trigger('redirect', @form.item.show_url())\r
108     @trigger('success', model, response)\r
109   \r
110   post_fail: (model, response) ->\r
111     @trigger('fail', response)\r
112   \r
113   destroy_success: (model, response) ->\r
114     @trigger('redirect', '/home/' + model.path_name())\r
115     @trigger('success', model, response)\r
116   \r
117   destroy_fail: (model, response) ->\r
118     @trigger('fail', response)\r
119   \r
120   navigate: (url) ->\r
121     @trigger('navigate', url)\r
122   \r