X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fassets%2Fjavascripts%2Froutes.js.coffee;h=8058b417e0f9dce6d48319fe638741bc0884045f;hb=bc33449931cc6705c3cfa5a79ee1450ae2d046fb;hp=8a0a3cfabff740dc0a90b4fc89be8a615c6299c6;hpb=d6d237012089604cdbc61943856d42c0a0472dc7;p=pettanr%2Fpettanr.git diff --git a/app/assets/javascripts/routes.js.coffee b/app/assets/javascripts/routes.js.coffee index 8a0a3cfa..8058b417 100644 --- a/app/assets/javascripts/routes.js.coffee +++ b/app/assets/javascripts/routes.js.coffee @@ -1,22 +1,37 @@ -class Pettanr.History extends Backbone.History - @lock_url = null +class Pettanr.BeforeUnload - checkUrl: (e) -> - if Pettanr.History.lock_url + constructor: (options) -> + + test: () -> + if @is_lock() if confirm('leave? edit data unsaved') - Pettanr.History.lock_url = null + return 1 else - @history.pushState({}, document.title, '/' + Pettanr.History.lock_url) - return false - super(e) - -Backbone.history = new Pettanr.History + return -1 + 0 + + is_lock: () -> + if @params + true + else + false + + lock: (params, form) -> + @form = form + @params = params + + unlock: () -> + @form.quit() + @params = null + + url: () -> + Pettanr.params_to_url(@params) + class Pettanr.Router extends Backbone.Router initialize: (options) -> super() _.extend(this, Backbone.Events) - @operators = options.operators parse_query_string: (query_string) -> params = {} @@ -38,6 +53,7 @@ class Pettanr.Router extends Backbone.Router [ {route: '', callback: 'home'}, {route: 'top/:action', callback: 'top_a'}, + {route: 'home/:action', callback: 'home_a'}, {route: 'users/:action', callback: 'users_a'}, # no manifest route {route: 'user_sessions/:action', callback: 'user_sessions_a'}, # no manifest route {route: ':controller/:id/:action?*query_string', callback: 'c_i_a'}, @@ -64,46 +80,6 @@ class Pettanr.Router extends Backbone.Router else {} - filters: () -> - if Pettanr.is_sns() - Pettanr.ActionFilter.sns_filters() - else - Pettanr.ActionFilter.blog_filters() - - my_filters: (role, params) -> - f = @filters() - c = f[params['controller']] || {} - r = c[role] - r - - # return false if allow - # return true if deny - authenticate: (role, params) -> - n = 'is_' + role - if not @operators[n]() # ex: operators.is_user() - filter = @my_filters(role, params) - if Pettanr.before_filter(params['action'], filter) - return true - false - - # access block - # return sign in form if invalid url - # return null if url is valid - block: (params) -> - return @guest_url() if @authenticate('reader', params) or @authenticate('resource_reader', params) or @authenticate('user', params) - return @new_author_url() if @authenticate('author', params) - return @new_artist_url() if @authenticate('artist', params) - null - - guest_url: () -> - 'user_seeeions/new' - - new_author_url: () -> - 'authors/new' - - new_artist_url: () -> - 'artists/new' - # render App(render:all) home: () -> params = @home_params() @@ -119,10 +95,7 @@ class Pettanr.Router extends Backbone.Router # ex) scrolls/3/edit c_i_a: (controller, id, action, query_string, form) -> params = @c_i_a_params(controller, id, action, query_string) - if safe_url = @block(params) - @trigger('deny', params, form, safe_url) - else - @trigger('go', params, form) + @trigger('go', params, form) c_i_a_params: (controller, id, action, query_string) -> params = @parse_query_string(query_string) @@ -148,10 +121,7 @@ class Pettanr.Router extends Backbone.Router # ex) scrolls/3 c_i: (controller, id, query_string, form) -> params = @c_i_params(controller, id, query_string) - if safe_url = @block(params) - @trigger('deny', params, form, safe_url) - else - @trigger('go', params, form) + @trigger('go', params, form) c_i_params: (controller, id, query_string) -> params = @parse_query_string(query_string) @@ -175,10 +145,7 @@ class Pettanr.Router extends Backbone.Router # ex) scrolls c: (controller, query_string, form) -> params = @c_params(controller, query_string) - if safe_url = @block(params) - @trigger('deny', params, form, safe_url) - else - @trigger('go', params, form) + @trigger('go', params, form) c_params: (controller, query_string) -> params = @parse_query_string(query_string) @@ -189,10 +156,7 @@ class Pettanr.Router extends Backbone.Router top_a: (action, query_string, form) -> params = @users_a_params(action, query_string) - if safe_url = @block(params) - @trigger('deny', params, safe_url) - else - @trigger('go', params, form) + @trigger('go', params, form) top_a_params: (action, query_string) -> params = @parse_query_string(query_string) @@ -201,12 +165,20 @@ class Pettanr.Router extends Backbone.Router params['action'] = action params + home_a: (action, query_string, form) -> + params = @home_a_params(action, query_string) + @trigger('go', params, form) + + home_a_params: (action, query_string) -> + params = @parse_query_string(query_string) + params['controller'] = 'home' + params['format'] = 'html' + params['action'] = action + params + user_sessions_a: (action, query_string, form) -> params = @user_sessions_a_params(action, query_string) - if safe_url = @block(params) - @trigger('deny', params, safe_url) - else - @trigger('go', params, form) + @trigger('go', params, form) user_sessions_a_params: (action, query_string) -> params = @parse_query_string(query_string) @@ -217,10 +189,7 @@ class Pettanr.Router extends Backbone.Router users_a: (action, query_string, form) -> params = @users_a_params(action, query_string) - if safe_url = @block(params) - @trigger('deny', params, safe_url) - else - @trigger('go', params, form) + @trigger('go', params, form) users_a_params: (action, query_string) -> params = @parse_query_string(query_string)