\r
constructor: (options) ->\r
@operators = options.operators\r
+ @gate = options.gate\r
_.extend(this, Backbone.Events)\r
\r
local_router: (parsed_callback) ->\r
@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
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
@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