OSDN Git Service

fix: show's destroy button
[pettanr/pettanr.git] / app / assets / javascripts / pettanr / proxy.js.coffee
1 class Pettanr.Proxy\r
2   \r
3   constructor: (options) ->\r
4     @gate = options.gate\r
5     _.extend(this, Backbone.Events)\r
6   \r
7   local_router: (parsed_callback) ->\r
8     local_router = new Pettanr.LocalRouter({})\r
9     @listenTo(local_router, 'go', parsed_callback)\r
10     local_router\r
11   \r
12   http_get: (url, form) ->\r
13     @local_router(@get).navigate(url, form)\r
14   \r
15   get: (params, form) ->\r
16     return if !@test(params, form)\r
17     return if !@filter(params, form)\r
18     controller = Pettanr.AppController.new2(params, form, @gate)\r
19     @add_get_listener(controller)\r
20     action_name = params['action']\r
21     controller[action_name]()\r
22   \r
23   add_get_listener: (controller) ->\r
24     @listenTo(controller, 'ready', @ready)\r
25     @listenTo(controller, 'title', @title)\r
26     @listenTo(controller, 'done', @done)\r
27     @listenTo(controller, 'other', @other)\r
28     @listenTo(controller, 'deny', @remote_folder_deny)\r
29     @listenTo(controller, 'lock', @lock)\r
30     @listenTo(controller, 'unlock', @unlock)\r
31   \r
32   test: (params, form) ->\r
33     return true if !@gate\r
34     switch @gate.test()\r
35       when 0\r
36         # free\r
37         true\r
38       when 1\r
39         # agree move\r
40         @gate.unlock()\r
41         true\r
42       else\r
43         # blocking\r
44         # back button event\r
45         Backbone.history.navigate('/' + @gate.url(), {trigger: false})\r
46         @trigger('cancel', params, form)\r
47         false\r
48   \r
49   filter: (params, form) ->\r
50     if safe_url = Pettanr.ActionFilter.test(params)\r
51       @trigger('deny', params, form, safe_url)\r
52       false\r
53     else\r
54       true\r
55   \r
56   ready: (view) ->\r
57     @trigger('ready', view)\r
58   \r
59   title: (params, str) ->\r
60     @trigger('title', params, str)\r
61   \r
62   done: (params) ->\r
63     @trigger('done', params)\r
64   \r
65   other: (url) ->\r
66     @local_router(@get).navigate(url)\r
67   \r
68   lock: (params, form) ->\r
69     @trigger('lock', params, form)\r
70   \r
71   unlock: (params, form) ->\r
72     @trigger('unlock', params, form)\r
73   \r
74   deny: (params, form, safe_url) ->\r
75     @trigger('deny', params, form, safe_url)\r
76   \r
77   remote_folder_deny: (params, form, safe_url) ->\r
78     @trigger('deny', params, form, safe_url)\r
79   \r
80   http_post: (url, form) ->\r
81     @local_router(@post).navigate(url, form)\r
82   \r
83   post: (params, form) ->\r
84     controller = Pettanr.AppController.new2(params, form)\r
85     @listenTo(controller, 'success', @success)\r
86     @listenTo(controller, 'fail', @fail)\r
87     @listenTo(controller, 'redirect', @redirect)\r
88     @listenTo(controller, 'sign_in', @sign_in)\r
89     @listenTo(controller, 'sign_out', @sign_out)\r
90     @listenTo(controller, 'lock', @lock)\r
91     @listenTo(controller, 'unlock', @unlock)\r
92     action_name = params['action']\r
93     controller[action_name]()\r
94   \r
95   success: (model, response) ->\r
96     @trigger('success', model, response)\r
97   \r
98   fail: (response) ->\r
99     @trigger('fail', response)\r
100   \r
101   redirect: (new_url) ->\r
102     @trigger('redirect', new_url)\r
103   \r
104   sign_in: (user) ->\r
105     @trigger('sign_in', user)\r
106   \r
107   sign_out: () ->\r
108     @trigger('sign_out')\r
109   \r
110   @destroy: (item, options = {}) ->\r
111     return if !confirm('remove?')\r
112     proxy = new Pettanr.Proxy({})\r
113     proxy.listenTo(proxy, 'success', options['success'])\r
114     proxy.listenTo(proxy, 'redirect', options['redirect'])\r
115     proxy.listenTo(proxy, 'fail', options['fail'])\r
116     proxy.listenTo(proxy, 'deny', options['deny'])\r
117     proxy.http_post(item.destroy_url())\r
118   \r
119 class Pettanr.PickerProxy extends Pettanr.Proxy\r
120   \r
121   constructor: (options) ->\r
122     super(options)\r
123   \r
124   get: (params, form) ->\r
125     if @is_deny(params)\r
126       alert("editor can't open on pick window")\r
127     else\r
128       super(params, form)\r
129   \r
130   is_deny: (params) ->\r
131     c = Pettanr.AppController.controller_by_name(params['controller'])\r
132     return false if !c['is_deny_action_on_picker']\r
133     c.is_deny_action_on_picker(params)\r
134   \r
135 class Pettanr.PublisherProxy extends Pettanr.Proxy\r
136   \r
137   add_get_listener: (controller) ->\r
138     super(controller)\r
139     # dialog send success message on select lisence_group select-box\r
140     @listenTo(controller, 'next', @next)\r
141     # dialog send success message on opl submit button\r
142   \r
143   next: (opl) ->\r
144     @trigger('next', opl)\r
145   \r