_.extend(params, o)\r
params\r
\r
- fire: (params) ->\r
+ initialize: () ->\r
+ _.each @peta_routes(), (r) =>\r
+ @route(r.route, r.callback)\r
+ \r
+ fire: (params, el) ->\r
c = Pettanr[Pettanr.camelize(params['controller']) + 'Controller']\r
controller = new c\r
controller.params = params\r
- controller[params['action']]()\r
+ controller[params['action']](el)\r
\r
- initialize: () ->\r
- this['c_i_a'] = (controller, id, action, query_string) ->\r
- params = this.parse_query_string(query_string)\r
- params['controller'] = controller\r
- params['format'] = 'html'\r
- t = id.split('.')\r
- if t.length > 1\r
- params['format'] = t[1]\r
- id = t[0]\r
- t = action.split('.')\r
- if t.length > 1\r
- params['format'] = t[1]\r
- action = t[0]\r
- if Pettanr.is_number(action)\r
- params['action'] = id\r
- params['id'] = action\r
- else\r
- params['action'] = action\r
- params['id'] = id\r
- this.fire(params)\r
- this['c_i'] = (controller, id, query_string) ->\r
- params = this.parse_query_string(query_string)\r
- params['controller'] = controller\r
- params['format'] = 'html'\r
- t = id.split('.')\r
- if t.length > 1\r
- params['format'] = t[1]\r
- id = t[0]\r
- if Pettanr.is_number(id)\r
- params['action'] = 'show'\r
- params['id'] = id\r
- else\r
- if id\r
- params['action'] = id\r
- else\r
- params['action'] = 'index'\r
- this.fire(params)\r
- this['c'] = (controller, query_string) ->\r
- params = this.parse_query_string(query_string)\r
- params['controller'] = controller\r
- params['format'] = 'html'\r
- params['action'] = 'index'\r
- this.fire(params)\r
- this.route('', 'home')\r
- this.route(':controller/:id/:action?*query_string', 'c_i_a')\r
- this.route(':controller/:id/:action', 'c_i_a')\r
- this.route(':controller/:id?*query_string', 'c_i')\r
- this.route(':controller/:id', 'c_i')\r
- this.route(':controller?*query_string', 'c')\r
- this.route(':controller', 'c')\r
- this.route('users/sign_in', 'user_sign_in')\r
+ peta_routes: () ->\r
+ [\r
+ {route: '', callback: 'home'}, \r
+ {route: ':controller/:id/:action?*query_string', callback: 'c_i_a'}, \r
+ {route: ':controller/:id/:action', callback: 'c_i_a'}, \r
+ {route: ':controller/:id?*query_string', callback: 'c_i'}, \r
+ {route: ':controller/:id', callback: 'c_i'}, \r
+ {route: ':controller?*query_string', callback: 'c'}, \r
+ {route: ':controller', callback: 'c'}, \r
+ {route: 'users/sign_in', callback: 'user_sign_in'}, \r
+ ]\r
\r
home: () ->\r
+ params = @home_params()\r
+ @fire(params)\r
+ \r
+ home_params: () ->\r
params = {}\r
params['controller'] = 'folders'\r
params['action'] = 'root'\r
+ params\r
+ \r
+ # controller/id/action case\r
+ # ex) scrolls/3/edit\r
+ c_i_a: (controller, id, action, query_string) ->\r
+ params = @c_i_a_params(controller, id, action, query_string)\r
+ @fire(params)\r
+ \r
+ c_i_a_params: (controller, id, action, query_string) ->\r
+ params = @parse_query_string(query_string)\r
+ params['controller'] = controller\r
+ params['format'] = 'html'\r
+ t = id.split('.')\r
+ if t.length > 1\r
+ params['format'] = t[1]\r
+ id = t[0]\r
+ t = action.split('.')\r
+ if t.length > 1\r
+ params['format'] = t[1]\r
+ action = t[0]\r
+ if Pettanr.is_number(action)\r
+ params['action'] = id\r
+ params['id'] = action\r
+ else\r
+ params['action'] = action\r
+ params['id'] = id\r
+ params\r
+ \r
+ # controller and id case\r
+ # ex) scrolls/3\r
+ c_i: (controller, id, query_string) ->\r
+ params = @c_i_params(controller, id, query_string)\r
@fire(params)\r
\r
+ c_i_params: (controller, id, query_string) ->\r
+ params = @parse_query_string(query_string)\r
+ params['controller'] = controller\r
+ params['format'] = 'html'\r
+ t = id.split('.')\r
+ if t.length > 1\r
+ params['format'] = t[1]\r
+ id = t[0]\r
+ if Pettanr.is_number(id)\r
+ params['action'] = 'show'\r
+ params['id'] = id\r
+ else\r
+ if id\r
+ params['action'] = id\r
+ else\r
+ params['action'] = 'index'\r
+ params\r
+ \r
+ # controller only case\r
+ # ex) scrolls\r
+ c: (controller, query_string) ->\r
+ params = @c_i_params(controller, query_string)\r
+ @fire(params)\r
+ \r
+ c_params: (controller, query_string) ->\r
+ params = @parse_query_string(query_string)\r
+ params['controller'] = controller\r
+ params['format'] = 'html'\r
+ params['action'] = 'index'\r
+ params\r
+ \r
user_sign_in: () ->\r
r = new Pettanr.UsersController()\r
r.index()\r
else\r
super(fragment, options)\r
\r
+ local_navigate: (url, el) ->\r
+ _.any @peta_routes(), (r) =>\r
+ route = @_routeToRegExp(r.route)\r
+ if route.test(url)\r
+ args = @_extractParameters(route, url)\r
+ args.unshift(el)\r
+ n = 'local_' + r.callback\r
+ this[n].apply(this, args)\r
+ \r
+ # from Backbone.History.loadUrl(fragment)\r
+ local_home: (el) ->\r
+ params = @home_params()\r
+ @fire(params, el)\r
+ \r
+ local_c_i_a: (el, controller, id, action, query_string) ->\r
+ params = @c_i_a_params(controller, id, action, query_string)\r
+ @fire(params, el)\r
+ \r
+ local_c_i: (el, controller, id, query_string) ->\r
+ params = @c_i_params(controller, id, query_string)\r
+ @fire(params, el)\r
+ \r
+ local_c: (el, controller, query_string) ->\r
+ params = @c_params(controller, query_string)\r
+ @fire(params, el)\r
+ \r
+ local_user_sign_in: (el) ->\r
+ console.log('user_sign_in');\r
+ \r
hoge: () ->\r
names = _.map Manifest.manifest().controllers, (controller_manifest, controller_name) ->\r
c = Pettanr[Pettanr.camelize(controller_name) + 'Controller']\r