class Pettanr.Proxy constructor: (options) -> @gate = options.gate _.extend(this, Backbone.Events) local_router: (parsed_callback) -> local_router = new Pettanr.LocalRouter({}) @listenTo(local_router, 'go', parsed_callback) local_router http_get: (url, form) -> @local_router(@get).navigate(url, form) get: (params, form) -> return if !@test(params, form) return if !@filter(params, form) controller = Pettanr.AppController.new2(params, form, @gate) @add_get_listener(controller) action_name = params['action'] controller[action_name]() add_get_listener: (controller) -> @listenTo(controller, 'ready', @ready) @listenTo(controller, 'fail', @fail) @listenTo(controller, 'title', @title) @listenTo(controller, 'done', @done) @listenTo(controller, 'other', @other) @listenTo(controller, 'deny', @remote_folder_deny) @listenTo(controller, 'lock', @lock) @listenTo(controller, 'unlock', @unlock) test: (params, form) -> return true if !@gate switch @gate.test() when 0 # free true when 1 # agree move @gate.unlock() true else # blocking # back button event Backbone.history.navigate('/' + @gate.url(), {trigger: false}) @trigger('cancel', params, form) false filter: (params, form) -> if safe_url = Pettanr.ActionFilter.test(params) @trigger('deny', params, form, safe_url) false else true ready: (view) -> @trigger('ready', view) fail: (response, options) -> @trigger('fail', response, options) title: (params, str) -> @trigger('title', params, str) done: (params) -> @trigger('done', params) other: (url) -> @local_router(@get).navigate(url) lock: (params, form) -> @trigger('lock', params, form) unlock: (params, form) -> @trigger('unlock', params, form) deny: (params, form, safe_url) -> @trigger('deny', params, form, safe_url) remote_folder_deny: (params, form, safe_url) -> @trigger('deny', params, form, safe_url) http_post: (url, form) -> @local_router(@post).navigate(url, form) post: (params, form) -> controller = Pettanr.AppController.new2(params, form) @listenTo(controller, 'success', @success) @listenTo(controller, 'fail', @fail) @listenTo(controller, 'redirect', @redirect) @listenTo(controller, 'sign_in', @sign_in) @listenTo(controller, 'sign_out', @sign_out) @listenTo(controller, 'lock', @lock) @listenTo(controller, 'unlock', @unlock) action_name = params['action'] controller[action_name]() success: (model, response) -> @trigger('success', model, response) redirect: (new_url) -> @trigger('redirect', new_url) sign_in: (user) -> @trigger('sign_in', user) sign_out: () -> @trigger('sign_out') @destroy: (item, options = {}) -> return if !confirm('remove?') proxy = new Pettanr.Proxy({}) proxy.listenTo(proxy, 'success', options['success']) proxy.listenTo(proxy, 'redirect', options['redirect']) proxy.listenTo(proxy, 'fail', options['fail']) proxy.listenTo(proxy, 'deny', options['deny']) proxy.http_post(item.destroy_url()) class Pettanr.PickerProxy extends Pettanr.Proxy constructor: (options) -> super(options) get: (params, form) -> if @is_deny(params) alert("editor can't open on pick window") else super(params, form) is_deny: (params) -> c = Pettanr.AppController.controller_by_name(params['controller']) return false if !c['is_deny_action_on_picker'] c.is_deny_action_on_picker(params) class Pettanr.PublisherProxy extends Pettanr.Proxy add_get_listener: (controller) -> super(controller) # dialog send success message on select lisence_group select-box @listenTo(controller, 'next', @next) # dialog send success message on opl submit button next: (opl) -> @trigger('next', opl)