OSDN Git Service

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