OSDN Git Service

fix gate
[pettanr/pettanr.git] / app / assets / javascripts / pettanr / proxy.js.coffee
1 class Pettanr.Proxy\r
2   \r
3   constructor: (options) ->\r
4     @operators = options.operators\r
5     @gate = options.gate\r
6     _.extend(this, Backbone.Events)\r
7   \r
8   local_router: (parsed_callback) ->\r
9     local_router = new Pettanr.LocalRouter({operators: @operators})\r
10     @listenTo(local_router, 'go', parsed_callback)\r
11     @listenTo(local_router, 'deny', @deny)\r
12     @listenTo(local_router, 'cancel', @cancel)\r
13     local_router\r
14   \r
15   http_get: (url, form) ->\r
16     @local_router(@get).navigate(url, form)\r
17   \r
18   get: (params, form) ->\r
19     return if !@test(params, form)\r
20     controller = Pettanr.AppController.new2(params, form, @operators, @gate)\r
21     @listenTo(controller, 'ready', @ready)\r
22     @listenTo(controller, 'title', @title)\r
23     @listenTo(controller, 'done', @done)\r
24     @listenTo(controller, 'lock', @lock)\r
25     @listenTo(controller, 'unlock', @unlock)\r
26     action_name = params['action']\r
27     controller[action_name]()\r
28   \r
29   test: (params, form) ->\r
30     return true if !@gate\r
31     switch @gate.test()\r
32       when 0\r
33         # free\r
34         true\r
35       when 1\r
36         # agree move\r
37         @gate.unlock()\r
38         true\r
39       else\r
40         # blocking\r
41         # back button event\r
42         Backbone.history.navigate('/' + @gate.url(), {trigger: false})\r
43         false\r
44   \r
45   ready: (view) ->\r
46     @trigger('ready', view)\r
47   \r
48   title: (params, str) ->\r
49     @trigger('title', params, str)\r
50   \r
51   done: (params) ->\r
52     @trigger('done', params)\r
53   \r
54   lock: (params, form) ->\r
55     @trigger('lock', params, form)\r
56   \r
57   unlock: (params, form) ->\r
58     @trigger('unlock', params, form)\r
59   \r
60   deny: (params, form, safe_url) ->\r
61     @trigger('deny', params, form, safe_url)\r
62   \r
63   cancel: () ->\r
64     @trigger('cancel')\r
65   \r
66   http_post: (url, form) ->\r
67     @local_router(@post).navigate(url, form)\r
68   \r
69   post: (params, form) ->\r
70     controller = Pettanr.AppController.new2(params, form, @operators)\r
71     @listenTo(controller, 'success', @success)\r
72     @listenTo(controller, 'fail', @fail)\r
73     @listenTo(controller, 'redirect', @redirect)\r
74     @listenTo(controller, 'sign_in', @sign_in)\r
75     @listenTo(controller, 'sign_out', @sign_out)\r
76     @listenTo(controller, 'lock', @lock)\r
77     @listenTo(controller, 'unlock', @unlock)\r
78     action_name = params['action']\r
79     controller[action_name]()\r
80   \r
81   success: (model, response) ->\r
82     @trigger('success', model, response)\r
83   \r
84   fail: (response) ->\r
85     @trigger('fail', response)\r
86   \r
87   redirect: (new_url) ->\r
88     @trigger('redirect', new_url)\r
89   \r
90   sign_in: (user) ->\r
91     @trigger('sign_in', user)\r
92   \r
93   sign_out: () ->\r
94     @trigger('sign_out')\r
95   \r