3 constructor: (options) ->
\r
4 @operators = options.operators
\r
6 _.extend(this, Backbone.Events)
\r
8 local_router: (parsed_callback) ->
\r
9 local_router = new Pettanr.LocalRouter({operators: @operators})
\r
10 @listenTo(local_router, 'go', parsed_callback)
\r
13 http_get: (url, form) ->
\r
14 @local_router(@get).navigate(url, form)
\r
16 get: (params, form) ->
\r
17 return if !@test(params, form)
\r
18 return if !@filter(params, form)
\r
19 controller = Pettanr.AppController.new2(params, form, @operators, @gate)
\r
20 @listenTo(controller, 'ready', @ready)
\r
21 @listenTo(controller, 'title', @title)
\r
22 @listenTo(controller, 'done', @done)
\r
23 @listenTo(controller, 'other', @other)
\r
24 @listenTo(controller, 'deny', @remote_folder_deny)
\r
25 @listenTo(controller, 'lock', @lock)
\r
26 @listenTo(controller, 'unlock', @unlock)
\r
27 action_name = params['action']
\r
28 controller[action_name]()
\r
30 test: (params, form) ->
\r
31 return true if !@gate
\r
43 Backbone.history.navigate('/' + @gate.url(), {trigger: false})
\r
44 @trigger('cancel', params, form)
\r
47 filter: (params, form) ->
\r
48 if safe_url = Pettanr.ActionFilter.test(params, @operators)
\r
49 @trigger('deny', params, form, safe_url)
\r
55 @trigger('ready', view)
\r
57 title: (params, str) ->
\r
58 @trigger('title', params, str)
\r
61 @trigger('done', params)
\r
64 @local_router(@get).navigate(url)
\r
66 lock: (params, form) ->
\r
67 @trigger('lock', params, form)
\r
69 unlock: (params, form) ->
\r
70 @trigger('unlock', params, form)
\r
72 deny: (params, form, safe_url) ->
\r
73 @trigger('deny', params, form, safe_url)
\r
75 remote_folder_deny: (params, form, safe_url) ->
\r
76 @trigger('deny', params, form, safe_url)
\r
78 http_post: (url, form) ->
\r
79 @local_router(@post).navigate(url, form)
\r
81 post: (params, form) ->
\r
82 controller = Pettanr.AppController.new2(params, form, @operators)
\r
83 @listenTo(controller, 'success', @success)
\r
84 @listenTo(controller, 'fail', @fail)
\r
85 @listenTo(controller, 'redirect', @redirect)
\r
86 @listenTo(controller, 'sign_in', @sign_in)
\r
87 @listenTo(controller, 'sign_out', @sign_out)
\r
88 @listenTo(controller, 'lock', @lock)
\r
89 @listenTo(controller, 'unlock', @unlock)
\r
90 action_name = params['action']
\r
91 controller[action_name]()
\r
93 success: (model, response) ->
\r
94 @trigger('success', model, response)
\r
97 @trigger('fail', response)
\r
99 redirect: (new_url) ->
\r
100 @trigger('redirect', new_url)
\r
103 @trigger('sign_in', user)
\r
106 @trigger('sign_out')
\r
108 class Pettanr.PickerProxy extends Pettanr.Proxy
\r
110 get: (params, form) ->
\r
111 if @is_deny(params)
\r
112 alert("editor can't open on pick window")
\r
114 super(params, form)
\r
116 is_deny: (params) ->
\r
117 c = Pettanr.AppController.controller_by_name(params['controller'])
\r
118 return false if !c['is_deny_action_on_picker']
\r
119 c.is_deny_action_on_picker(params)
\r