OSDN Git Service

add silent navigator for dialog
authoryasushiito <yas@pen-chan.jp>
Sat, 24 Jan 2015 06:44:52 +0000 (15:44 +0900)
committeryasushiito <yas@pen-chan.jp>
Sat, 24 Jan 2015 06:44:52 +0000 (15:44 +0900)
app/assets/javascripts/pettanr.js.coffee
app/assets/javascripts/routes.js.coffee

index 6685799..9a08130 100644 (file)
@@ -131,7 +131,7 @@ class Pettanr
         pager = Locmare.ListGroupModule.LibModule.Pager.factory(@list.page_status, @params)\r
         f = new Locmare.Filer({\r
           el: "#pettanr",\r
-          item_name: @my_list_model_class.item_name()\r
+          item_name: @list.item_name\r
           items: @list.items(), \r
           pager: pager, \r
           operators: @operators\r
index e3e093a..9fe1d8e 100644 (file)
@@ -16,70 +16,101 @@ class Pettanr.Router extends Backbone.Router
         _.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
@@ -94,6 +125,35 @@ class Pettanr.Router extends Backbone.Router
     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