From: yasushiito Date: Sat, 24 Jan 2015 06:44:52 +0000 (+0900) Subject: add silent navigator for dialog X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=commitdiff_plain;h=fb988a1bf9deb71addb22604953607392ae0f79a add silent navigator for dialog --- diff --git a/app/assets/javascripts/pettanr.js.coffee b/app/assets/javascripts/pettanr.js.coffee index 6685799e..9a08130e 100644 --- a/app/assets/javascripts/pettanr.js.coffee +++ b/app/assets/javascripts/pettanr.js.coffee @@ -131,7 +131,7 @@ class Pettanr pager = Locmare.ListGroupModule.LibModule.Pager.factory(@list.page_status, @params) f = new Locmare.Filer({ el: "#pettanr", - item_name: @my_list_model_class.item_name(), + item_name: @list.item_name, items: @list.items(), pager: pager, operators: @operators diff --git a/app/assets/javascripts/routes.js.coffee b/app/assets/javascripts/routes.js.coffee index e3e093a4..9fe1d8ed 100644 --- a/app/assets/javascripts/routes.js.coffee +++ b/app/assets/javascripts/routes.js.coffee @@ -16,70 +16,101 @@ class Pettanr.Router extends Backbone.Router _.extend(params, o) params - fire: (params) -> + initialize: () -> + _.each @peta_routes(), (r) => + @route(r.route, r.callback) + + fire: (params, el) -> c = Pettanr[Pettanr.camelize(params['controller']) + 'Controller'] controller = new c controller.params = params - controller[params['action']]() + controller[params['action']](el) - initialize: () -> - this['c_i_a'] = (controller, id, action, query_string) -> - params = this.parse_query_string(query_string) - params['controller'] = controller - params['format'] = 'html' - t = id.split('.') - if t.length > 1 - params['format'] = t[1] - id = t[0] - t = action.split('.') - if t.length > 1 - params['format'] = t[1] - action = t[0] - if Pettanr.is_number(action) - params['action'] = id - params['id'] = action - else - params['action'] = action - params['id'] = id - this.fire(params) - this['c_i'] = (controller, id, query_string) -> - params = this.parse_query_string(query_string) - params['controller'] = controller - params['format'] = 'html' - t = id.split('.') - if t.length > 1 - params['format'] = t[1] - id = t[0] - if Pettanr.is_number(id) - params['action'] = 'show' - params['id'] = id - else - if id - params['action'] = id - else - params['action'] = 'index' - this.fire(params) - this['c'] = (controller, query_string) -> - params = this.parse_query_string(query_string) - params['controller'] = controller - params['format'] = 'html' - params['action'] = 'index' - this.fire(params) - this.route('', 'home') - this.route(':controller/:id/:action?*query_string', 'c_i_a') - this.route(':controller/:id/:action', 'c_i_a') - this.route(':controller/:id?*query_string', 'c_i') - this.route(':controller/:id', 'c_i') - this.route(':controller?*query_string', 'c') - this.route(':controller', 'c') - this.route('users/sign_in', 'user_sign_in') + peta_routes: () -> + [ + {route: '', callback: 'home'}, + {route: ':controller/:id/:action?*query_string', callback: 'c_i_a'}, + {route: ':controller/:id/:action', callback: 'c_i_a'}, + {route: ':controller/:id?*query_string', callback: 'c_i'}, + {route: ':controller/:id', callback: 'c_i'}, + {route: ':controller?*query_string', callback: 'c'}, + {route: ':controller', callback: 'c'}, + {route: 'users/sign_in', callback: 'user_sign_in'}, + ] home: () -> + params = @home_params() + @fire(params) + + home_params: () -> params = {} params['controller'] = 'folders' params['action'] = 'root' + params + + # controller/id/action case + # ex) scrolls/3/edit + c_i_a: (controller, id, action, query_string) -> + params = @c_i_a_params(controller, id, action, query_string) + @fire(params) + + c_i_a_params: (controller, id, action, query_string) -> + params = @parse_query_string(query_string) + params['controller'] = controller + params['format'] = 'html' + t = id.split('.') + if t.length > 1 + params['format'] = t[1] + id = t[0] + t = action.split('.') + if t.length > 1 + params['format'] = t[1] + action = t[0] + if Pettanr.is_number(action) + params['action'] = id + params['id'] = action + else + params['action'] = action + params['id'] = id + params + + # controller and id case + # ex) scrolls/3 + c_i: (controller, id, query_string) -> + params = @c_i_params(controller, id, query_string) @fire(params) + c_i_params: (controller, id, query_string) -> + params = @parse_query_string(query_string) + params['controller'] = controller + params['format'] = 'html' + t = id.split('.') + if t.length > 1 + params['format'] = t[1] + id = t[0] + if Pettanr.is_number(id) + params['action'] = 'show' + params['id'] = id + else + if id + params['action'] = id + else + params['action'] = 'index' + params + + # controller only case + # ex) scrolls + c: (controller, query_string) -> + params = @c_i_params(controller, query_string) + @fire(params) + + c_params: (controller, query_string) -> + params = @parse_query_string(query_string) + params['controller'] = controller + params['format'] = 'html' + params['action'] = 'index' + params + user_sign_in: () -> r = new Pettanr.UsersController() r.index() @@ -94,6 +125,35 @@ class Pettanr.Router extends Backbone.Router else super(fragment, options) + local_navigate: (url, el) -> + _.any @peta_routes(), (r) => + route = @_routeToRegExp(r.route) + if route.test(url) + args = @_extractParameters(route, url) + args.unshift(el) + n = 'local_' + r.callback + this[n].apply(this, args) + + # from Backbone.History.loadUrl(fragment) + local_home: (el) -> + params = @home_params() + @fire(params, el) + + local_c_i_a: (el, controller, id, action, query_string) -> + params = @c_i_a_params(controller, id, action, query_string) + @fire(params, el) + + local_c_i: (el, controller, id, query_string) -> + params = @c_i_params(controller, id, query_string) + @fire(params, el) + + local_c: (el, controller, query_string) -> + params = @c_params(controller, query_string) + @fire(params, el) + + local_user_sign_in: (el) -> + console.log('user_sign_in'); + hoge: () -> names = _.map Manifest.manifest().controllers, (controller_manifest, controller_name) -> c = Pettanr[Pettanr.camelize(controller_name) + 'Controller']