OSDN Git Service

fix: show's destroy button
[pettanr/pettanr.git] / app / assets / javascripts / routes.js.coffee
index 9794c6d..8058b41 100644 (file)
@@ -1,26 +1,37 @@
-class Pettanr.History extends Backbone.History\r
-  @lock = null\r
+class Pettanr.BeforeUnload\r
   \r
-  checkUrl: (e) ->\r
-    if Pettanr.History.lock\r
+  constructor: (options) ->\r
+  \r
+  test: () ->\r
+    if @is_lock()\r
       if confirm('leave? edit data unsaved')\r
-        Pettanr.History.release()\r
+        return 1\r
       else\r
-        @history.pushState({}, document.title, '/' + Pettanr.History.lock.url)\r
-        return false\r
-    super(e)\r
+        return -1\r
+    0\r
+  \r
+  is_lock: () ->\r
+    if @params\r
+      true\r
+    else\r
+      false\r
   \r
-  @release: () ->\r
-    Pettanr.History.lock.form.quit()\r
-    Pettanr.History.lock = null\r
+  lock: (params, form) ->\r
+    @form = form\r
+    @params = params\r
+  \r
+  unlock: () ->\r
+    @form.quit()\r
+    @params = null\r
+  \r
+  url: () ->\r
+    Pettanr.params_to_url(@params)\r
   \r
-Backbone.history = new Pettanr.History\r
 class Pettanr.Router extends Backbone.Router\r
   \r
   initialize: (options) ->\r
     super()\r
     _.extend(this, Backbone.Events)\r
-    @operators = options.operators\r
   \r
   parse_query_string: (query_string) ->\r
     params = {}\r
@@ -42,6 +53,7 @@ class Pettanr.Router extends Backbone.Router
     [\r
       {route: '', callback: 'home'}, \r
       {route: 'top/:action', callback: 'top_a'}, \r
+      {route: 'home/:action', callback: 'home_a'}, \r
       {route: 'users/:action', callback: 'users_a'},   # no manifest route\r
       {route: 'user_sessions/:action', callback: 'user_sessions_a'},    # no manifest route\r
       {route: ':controller/:id/:action?*query_string', callback: 'c_i_a'}, \r
@@ -68,46 +80,6 @@ class Pettanr.Router extends Backbone.Router
     else\r
       {}\r
   \r
-  filters: () ->\r
-    if Pettanr.is_sns()\r
-      Pettanr.ActionFilter.sns_filters()\r
-    else\r
-      Pettanr.ActionFilter.blog_filters()\r
-  \r
-  my_filters: (role, params) ->\r
-    f = @filters()\r
-    c = f[params['controller']] || {}\r
-    r = c[role]\r
-    r\r
-  \r
-  # return false if allow\r
-  # return true if deny\r
-  authenticate: (role, params) ->\r
-    n = 'is_' + role\r
-    if not @operators[n]()  # ex: operators.is_user()\r
-      filter = @my_filters(role, params)\r
-      if Pettanr.before_filter(params['action'], filter)\r
-        return true\r
-    false\r
-  \r
-  # access block\r
-  # return sign in form if invalid url\r
-  # return null if url is valid\r
-  block: (params) ->\r
-    return @guest_url() if @authenticate('reader', params) or @authenticate('resource_reader', params) or @authenticate('user', params)\r
-    return @new_author_url() if @authenticate('author', params)\r
-    return @new_artist_url() if @authenticate('artist', params)\r
-    null\r
-  \r
-  guest_url: () ->\r
-    'user_seeeions/new'\r
-  \r
-  new_author_url: () ->\r
-    'authors/new'\r
-  \r
-  new_artist_url: () ->\r
-    'artists/new'\r
-  \r
   # render App(render:all)\r
   home: () ->\r
     params = @home_params()\r
@@ -123,10 +95,7 @@ class Pettanr.Router extends Backbone.Router
   # ex) scrolls/3/edit\r
   c_i_a: (controller, id, action, query_string, form) ->\r
     params = @c_i_a_params(controller, id, action, query_string)\r
-    if safe_url = @block(params)\r
-      @trigger('deny', params, form, safe_url)\r
-    else\r
-      @trigger('go', params, form)\r
+    @trigger('go', params, form)\r
   \r
   c_i_a_params: (controller, id, action, query_string) ->\r
     params = @parse_query_string(query_string)\r
@@ -152,10 +121,7 @@ class Pettanr.Router extends Backbone.Router
   # ex) scrolls/3\r
   c_i: (controller, id, query_string, form) ->\r
     params = @c_i_params(controller, id, query_string)\r
-    if safe_url = @block(params)\r
-      @trigger('deny', params, form, safe_url)\r
-    else\r
-      @trigger('go', params, form)\r
+    @trigger('go', params, form)\r
   \r
   c_i_params: (controller, id, query_string) ->\r
     params = @parse_query_string(query_string)\r
@@ -179,10 +145,7 @@ class Pettanr.Router extends Backbone.Router
   # ex) scrolls\r
   c: (controller, query_string, form) ->\r
     params = @c_params(controller, query_string)\r
-    if safe_url = @block(params)\r
-      @trigger('deny', params, form, safe_url)\r
-    else\r
-      @trigger('go', params, form)\r
+    @trigger('go', params, form)\r
   \r
   c_params: (controller, query_string) ->\r
     params = @parse_query_string(query_string)\r
@@ -193,10 +156,7 @@ class Pettanr.Router extends Backbone.Router
   \r
   top_a: (action, query_string, form) ->\r
     params = @users_a_params(action, query_string)\r
-    if safe_url = @block(params)\r
-      @trigger('deny', params, safe_url)\r
-    else\r
-      @trigger('go', params, form)\r
+    @trigger('go', params, form)\r
   \r
   top_a_params: (action, query_string) ->\r
     params = @parse_query_string(query_string)\r
@@ -205,12 +165,20 @@ class Pettanr.Router extends Backbone.Router
     params['action'] = action\r
     params\r
   \r
+  home_a: (action, query_string, form) ->\r
+    params = @home_a_params(action, query_string)\r
+    @trigger('go', params, form)\r
+  \r
+  home_a_params: (action, query_string) ->\r
+    params = @parse_query_string(query_string)\r
+    params['controller'] = 'home'\r
+    params['format'] = 'html'\r
+    params['action'] = action\r
+    params\r
+  \r
   user_sessions_a: (action, query_string, form) ->\r
     params = @user_sessions_a_params(action, query_string)\r
-    if safe_url = @block(params)\r
-      @trigger('deny', params, safe_url)\r
-    else\r
-      @trigger('go', params, form)\r
+    @trigger('go', params, form)\r
   \r
   user_sessions_a_params: (action, query_string) ->\r
     params = @parse_query_string(query_string)\r
@@ -221,10 +189,7 @@ class Pettanr.Router extends Backbone.Router
   \r
   users_a: (action, query_string, form) ->\r
     params = @users_a_params(action, query_string)\r
-    if safe_url = @block(params)\r
-      @trigger('deny', params, safe_url)\r
-    else\r
-      @trigger('go', params, form)\r
+    @trigger('go', params, form)\r
   \r
   users_a_params: (action, query_string) ->\r
     params = @parse_query_string(query_string)\r