OSDN Git Service

fix gate
[pettanr/pettanr.git] / app / assets / javascripts / pettanr / proxy.js.coffee
index 0dbcb75..c78d767 100644 (file)
@@ -2,6 +2,7 @@ class Pettanr.Proxy
   \r
   constructor: (options) ->\r
     @operators = options.operators\r
+    @gate = options.gate\r
     _.extend(this, Backbone.Events)\r
   \r
   local_router: (parsed_callback) ->\r
@@ -15,14 +16,32 @@ class Pettanr.Proxy
     @local_router(@get).navigate(url, form)\r
   \r
   get: (params, form) ->\r
-    controller = Pettanr.AppController.new2(params, form, @operators)\r
+    return if !@test(params, form)\r
+    controller = Pettanr.AppController.new2(params, form, @operators, @gate)\r
     @listenTo(controller, 'ready', @ready)\r
     @listenTo(controller, 'title', @title)\r
     @listenTo(controller, 'done', @done)\r
     @listenTo(controller, 'lock', @lock)\r
+    @listenTo(controller, 'unlock', @unlock)\r
     action_name = params['action']\r
     controller[action_name]()\r
   \r
+  test: (params, form) ->\r
+    return true if !@gate\r
+    switch @gate.test()\r
+      when 0\r
+        # free\r
+        true\r
+      when 1\r
+        # agree move\r
+        @gate.unlock()\r
+        true\r
+      else\r
+        # blocking\r
+        # back button event\r
+        Backbone.history.navigate('/' + @gate.url(), {trigger: false})\r
+        false\r
+  \r
   ready: (view) ->\r
     @trigger('ready', view)\r
   \r
@@ -32,8 +51,11 @@ class Pettanr.Proxy
   done: (params) ->\r
     @trigger('done', params)\r
   \r
-  lock: (params) ->\r
-    @trigger('lock', params)\r
+  lock: (params, form) ->\r
+    @trigger('lock', params, form)\r
+  \r
+  unlock: (params, form) ->\r
+    @trigger('unlock', params, form)\r
   \r
   deny: (params, form, safe_url) ->\r
     @trigger('deny', params, form, safe_url)\r
@@ -51,6 +73,8 @@ class Pettanr.Proxy
     @listenTo(controller, 'redirect', @redirect)\r
     @listenTo(controller, 'sign_in', @sign_in)\r
     @listenTo(controller, 'sign_out', @sign_out)\r
+    @listenTo(controller, 'lock', @lock)\r
+    @listenTo(controller, 'unlock', @unlock)\r
     action_name = params['action']\r
     controller[action_name]()\r
   \r