1 class Pettanr.Router extends Backbone.Router
\r
3 parse_query_string: (query_string) ->
\r
6 ary = _.map decodeURI(query_string).split(/&/g), (el, i) ->
\r
21 {route: '', callback: 'home'},
\r
22 {route: 'top/:action', callback: 'top_a'},
\r
23 {route: 'users/:action', callback: 'users_a'},
\r
24 {route: 'user_sessions/:action', callback: 'user_sessions_a'},
\r
25 {route: ':controller/:id/:action?*query_string', callback: 'c_i_a'},
\r
26 {route: ':controller/:id/:action', callback: 'c_i_a'},
\r
27 {route: ':controller/:id?*query_string', callback: 'c_i'},
\r
28 {route: ':controller/:id', callback: 'c_i'},
\r
29 {route: ':controller?*query_string', callback: 'c'},
\r
30 {route: ':controller', callback: 'c'},
\r
33 # render App(render:all)
\r
35 params = @home_params()
\r
36 @trigger('fire', params)
\r
40 params['controller'] = 'folders'
\r
41 params['action'] = 'root'
\r
44 # controller/id/action case
\r
45 # ex) scrolls/3/edit
\r
46 c_i_a: (controller, id, action, query_string) ->
\r
47 params = @c_i_a_params(controller, id, action, query_string)
\r
48 @trigger('fire', params)
\r
50 c_i_a_params: (controller, id, action, query_string) ->
\r
51 params = @parse_query_string(query_string)
\r
52 params['controller'] = controller
\r
53 params['format'] = 'html'
\r
56 params['format'] = t[1]
\r
58 t = action.split('.')
\r
60 params['format'] = t[1]
\r
62 if Pettanr.is_number(action)
\r
63 params['action'] = id
\r
64 params['id'] = action
\r
66 params['action'] = action
\r
70 # controller and id case
\r
72 c_i: (controller, id, query_string) ->
\r
73 params = @c_i_params(controller, id, query_string)
\r
74 @trigger('fire', params)
\r
76 c_i_params: (controller, id, query_string) ->
\r
77 params = @parse_query_string(query_string)
\r
78 params['controller'] = controller
\r
79 params['format'] = 'html'
\r
82 params['format'] = t[1]
\r
84 if Pettanr.is_number(id)
\r
85 params['action'] = 'show'
\r
89 params['action'] = id
\r
91 params['action'] = 'index'
\r
94 # controller only case
\r
96 c: (controller, query_string) ->
\r
97 params = @c_params(controller, query_string)
\r
98 @trigger('fire', params)
\r
100 c_params: (controller, query_string) ->
\r
101 params = @parse_query_string(query_string)
\r
102 params['controller'] = controller
\r
103 params['format'] = 'html'
\r
104 params['action'] = 'index'
\r
107 top_a: (action, query_string) ->
\r
108 params = @users_a_params(action, query_string)
\r
109 @trigger('fire', params)
\r
111 top_a_params: (action, query_string) ->
\r
112 params = @parse_query_string(query_string)
\r
113 params['controller'] = 'top'
\r
114 params['format'] = 'html'
\r
115 params['action'] = action
\r
118 user_sessions_a: (action, query_string) ->
\r
119 params = @users_a_params(action, query_string)
\r
120 @trigger('fire', params)
\r
122 user_sessions_a_params: (action, query_string) ->
\r
123 params = @parse_query_string(query_string)
\r
124 params['controller'] = 'user_sessions'
\r
125 params['format'] = 'html'
\r
126 params['action'] = action
\r
129 users_a: (action, query_string) ->
\r
130 params = @users_a_params(action, query_string)
\r
131 @trigger('fire', params)
\r
133 users_a_params: (action, query_string) ->
\r
134 params = @parse_query_string(query_string)
\r
135 params['controller'] = 'users'
\r
136 params['format'] = 'html'
\r
137 params['action'] = action
\r
140 class Pettanr.GlobalRouter extends Pettanr.Router
\r
143 _.extend(this, Backbone.Events)
\r
144 _.each @peta_routes(), (r) =>
\r
145 @route(r.route, r.callback)
\r
147 navigate: (fragment, options) ->
\r
149 if confirm('leave? edit data unsaved')
\r
150 window.editor.quit()
\r
151 super(fragment, options)
\r
155 super(fragment, options)
\r
157 class Pettanr.LocalRouter extends Pettanr.Router
\r
160 _.extend(this, Backbone.Events)
\r
164 _.any @peta_routes(), (r) =>
\r
165 route = @_routeToRegExp(r.route)
\r
167 args = @_extractParameters(route, url)
\r
169 this[n].apply(this, args) # call to c_i_a, c_i, c
\r