From: yasushiito Date: Sun, 22 Feb 2015 09:32:28 +0000 (+0900) Subject: fix any X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=3ac1e0a531b2411f6ce326acf1b910a4c68bfdd9;p=pettanr%2Fpettanr.git fix any --- diff --git a/app/assets/javascripts/editor/panel_editor.js.coffee b/app/assets/javascripts/editor/panel_editor.js.coffee index 79194547..e49f9edb 100644 --- a/app/assets/javascripts/editor/panel_editor.js.coffee +++ b/app/assets/javascripts/editor/panel_editor.js.coffee @@ -23,6 +23,7 @@ class Editor.PanelEditor extends Backbone.View #@dock.add_new_tab() @body.on('panel:resize', @panel_resize) @listenTo(@dock, 'put', @put) + Pettanr.History.lock_url = @panel.edit_url() add_element: (element) -> console.log(element) @@ -55,7 +56,6 @@ class Editor.PanelEditor extends Backbone.View rb = new Tag.RowBreak() this.$el.append(rb.render().el) @dock.$el.tabs() - window.editor = this # enable leave cancel flag on unsave this panel_resize: () -> @@ -67,11 +67,11 @@ class Editor.PanelEditor extends Backbone.View quit: () -> @dialog.$el.dialog('destroy') - window.editor = null # release editor + Pettanr.History.lock_url = null # release editor put: () -> success = (data, textStatus) => - window.editor = null # release editor + Pettanr.History.lock_url = null # release editor @dock.valid() error = (data, textStatus) => @dock.invalid() diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default.js.coffee index 773f7d93..5b1f9207 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default.js.coffee @@ -14,7 +14,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo ready_caption: (caption) -> el = if @has_link() linked_caption = new Tag.A({ - attr: {href: @link.url()}, + attr: {href: '/' + @link.url()}, content: caption }) @listenTo(linked_caption, 'click', @click) diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/action.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/action.js.coffee index cc3e1046..5ecb7cb1 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/action.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/action.js.coffee @@ -18,5 +18,5 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo id: @item.get('id'), format: 'html' } - '/' + mani.url(params) + mani.url(params) diff --git a/app/assets/javascripts/pettanr/action_filter.js.coffee b/app/assets/javascripts/pettanr/action_filter.js.coffee index 8f1ebb24..5326adb1 100644 --- a/app/assets/javascripts/pettanr/action_filter.js.coffee +++ b/app/assets/javascripts/pettanr/action_filter.js.coffee @@ -6,6 +6,12 @@ class Pettanr.ActionFilter default_user_filters = ['new', 'create', 'edit', 'update', 'destroy'] default_author_filters = ['new', 'create', 'edit', 'update', 'destroy'] { + 'folders': { + reader: _.union(default_reader_filters, ['root', 'watch']), + resource_reader: _.union(default_resource_reader_filters, []), + user: _.union(default_user_filters, []), + author: _.union(default_author_filters, []) + }, 'scrolls': { reader: _.union(default_reader_filters, ['play', 'by_panel', 'by_author']), resource_reader: _.union(default_resource_reader_filters, []), @@ -19,6 +25,12 @@ class Pettanr.ActionFilter default_user_filters = ['new', 'create', 'edit', 'update', 'destroy'] default_author_filters = ['new', 'create', 'edit', 'update', 'destroy'] { + 'folders': { + reader: _.union(default_reader_filters, []), + resource_reader: _.union(default_resource_reader_filters, []), + user: _.union(default_user_filters, []), + author: _.union(default_author_filters, []) + }, 'scrolls': { user: _.union(default_user_filters, []), author: _.union(default_author_filters, []) diff --git a/app/assets/javascripts/pettanr/operator.js.coffee b/app/assets/javascripts/pettanr/operator.js.coffee index c31b05d3..8df5a4a9 100644 --- a/app/assets/javascripts/pettanr/operator.js.coffee +++ b/app/assets/javascripts/pettanr/operator.js.coffee @@ -31,3 +31,11 @@ class Pettanr.Operator return true if @admin false + is_author: () -> + return true if @author + false + + is_artist: () -> + return true if @artist + false + diff --git a/app/assets/javascripts/routes.js.coffee b/app/assets/javascripts/routes.js.coffee index a1600d59..b4e270db 100644 --- a/app/assets/javascripts/routes.js.coffee +++ b/app/assets/javascripts/routes.js.coffee @@ -1,5 +1,21 @@ +class Pettanr.History extends Backbone.History + @lock_url = null + checkUrl: (e) -> + if Pettanr.History.lock_url + if confirm('leave? edit data unsaved') + Pettanr.History.lock_url = null + else + @history.pushState({}, document.title, '/' + Pettanr.History.lock_url) + return false + super(e) + +Backbone.history = new Pettanr.History class Pettanr.Router extends Backbone.Router + initialize: (options) -> + super() + @operators = options.operators + parse_query_string: (query_string) -> params = {} if query_string @@ -40,8 +56,11 @@ class Pettanr.Router extends Backbone.Router url_to_params: (url) -> if route = @find_route(url) + args = @_extractParameters(route.regex, url) n = route.callback # callback function name by string this[n + '_params'].apply(this, args) # call to c_i_a_params, c_i_params, c_params + else + {} # render App(render:all) home: () -> @@ -159,14 +178,12 @@ class Pettanr.GlobalRouter extends Pettanr.Router @route(r.route, r.callback) navigate: (fragment, options) -> - if window.editor + if Pettanr.History.lock_url if confirm('leave? edit data unsaved') - window.editor.quit() - super(fragment, options) + Pettanr.History.lock_url = null else - false - else - super(fragment, options) + return false + super(fragment, options) class Pettanr.LocalRouter extends Pettanr.Router @@ -194,8 +211,11 @@ class Pettanr.RouterFilter r = c[role] r + # return false if allow + # return true if deny authenticate: (role, params, operators) -> - if not operators[('is_' + role)]() # ex: operators.is_user() + 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 @@ -211,11 +231,11 @@ class Pettanr.BodyRouter extends Pettanr.GlobalRouter initialize: () -> super() - _.extend(this, Pettanr.RouterFilter) + _.extend(this, Pettanr.RouterFilter.prototype) - navigate: (url, operators) -> + navigate: (url, options, operators) -> safe_url = @block(url, operators) || url - super(safe_url) + super(safe_url, options) # access block # return sign in form if invalid url diff --git a/app/assets/javascripts/views/layout.js.coffee b/app/assets/javascripts/views/layout.js.coffee index 281d59cb..288b135b 100644 --- a/app/assets/javascripts/views/layout.js.coffee +++ b/app/assets/javascripts/views/layout.js.coffee @@ -30,10 +30,6 @@ class Pettanr.Views.Layout.ControllerManager add_listener: (controller, self) -> self.listenTo(controller, 'ready', self.refresh) self.listenTo(controller, 'retitle', self.retitle) - self.listenTo(controller, 'sign_in:success', self.sign_in_success) - self.listenTo(controller, 'sign_in:fail', self.sign_in_fail) - self.listenTo(controller, 'sign_out:success', self.sign_out_success) - self.listenTo(controller, 'sign_out:fail', self.sign_out_fail) self.listenTo(controller, 'block', self.block) self.listenTo(controller, 'redirect', self.redirect_to) @@ -45,7 +41,7 @@ class Pettanr.Views.Layout.Base extends Backbone.View _.extend(this, Pettanr.Views.Layout.ControllerManager.prototype) @operators = new Pettanr.Operator({}) # router for refresh body - @global_router = new Pettanr.GlobalRouter() + @global_router = new Pettanr.BodyRouter() # router for refresh body. but not replace url @local_router = new Pettanr.LocalRouter() # router for refresh header @@ -73,7 +69,13 @@ class Pettanr.Views.Layout.Base extends Backbone.View start: () -> # check current user signed in? # callback sign_in_success from users controller if signed in - @local_router.navigate('users/test') + @test() + + test: () -> + @user = new Pettanr.User.Session() + @listenTo(@user, 'sign_in:success', @sign_in_success) + @listenTo(@user, 'sign_in:fail', @sign_in_fail) + @user.save({}) fire_for_header: (params) -> @fire(params, @refresh_header) @@ -153,10 +155,6 @@ class Pettanr.Views.Layout.Sns extends Pettanr.Views.Layout.Base @listenTo(@header, 'navigate', @header_navigate) @listenTo(@header, 'sign_in', @sign_in) @listenTo(@header, 'sign_out', @sign_out) - @listenTo(@header, 'sign_in:success', @sign_in_success) - @listenTo(@header, 'sign_in:fail', @sign_in_fail) - @listenTo(@header, 'sign_out:success', @sign_out_success) - @listenTo(@header, 'sign_out:fail', @sign_out_fail) @listenTo(@body, 'navigate', @body_navigate) @listenTo(@body, 'retitle', @retitle) @listenTo(@body, 'sign_in', @sign_in) @@ -187,11 +185,14 @@ class Pettanr.Views.Layout.Sns extends Pettanr.Views.Layout.Base @body.fire({controller: 'user_sessions', action: 'new'}) sign_out: () -> - @header.fire({controller: 'users', action: 'sign_out'}) + @user = new Pettanr.User.Session() + @listenTo(@user, 'sign_out:success', @sign_out_success) + @listenTo(@user, 'sign_out:fail', @sign_out_fail) + @user.destroy() sign_out_success: (user, response) -> super(user, response) - @global_router.navigate('') + @global_router.navigate('', {trigger: false}, @operators) ## navigate users/guest ## callback from fire to refresh_header @header.fire({controller: 'users', action: 'guest'}) @@ -205,13 +206,13 @@ class Pettanr.Views.Layout.Sns extends Pettanr.Views.Layout.Base block: () -> super() @header_router.navigate('users/guest') - @local_router.navigate('user_seeeions/new') + @body.fire({controller: 'user_sessions', action: 'new'}) header_navigate: (url) -> - @global_router.navigate(url, true) + @global_router.navigate(url, {trigger: true}, @operators) body_navigate: (url) -> - @global_router.navigate(url, {trigger: false}) + @global_router.navigate(url, {trigger: false}, @operators) header_class: () -> Pettanr.Views.Layout.Sns.Header diff --git a/app/assets/javascripts/views/layouts/sns.js.coffee b/app/assets/javascripts/views/layouts/sns.js.coffee index ab073fec..2c85923e 100644 --- a/app/assets/javascripts/views/layouts/sns.js.coffee +++ b/app/assets/javascripts/views/layouts/sns.js.coffee @@ -21,21 +21,9 @@ class Pettanr.Views.Layout.Sns.Header extends Backbone.View sign_in: (attr) -> @trigger('sign_in', attr) - sign_in_success: (user, response) -> - @trigger('sign_in:success', user, response) - - sign_in_fail: (user, response) -> - @trigger('sign_in:fail', user, response) - sign_out: () -> @trigger('sign_out') - sign_out_success: (user, response) -> - @trigger('sign_out:success', user, response) - - sign_out_fail: (user, response) -> - @trigger('sign_out:fail', user, response) - retitle: (params, str = null) -> @trigger('retitle', params, str = null) @@ -76,21 +64,9 @@ class Pettanr.Views.Layout.Sns.Body extends Backbone.View sign_in: (attr) -> @trigger('sign_in', attr) - sign_in_success: (user, response) -> - @trigger('sign_in:success', user, response) - - sign_in_fail: (user, response) -> - @trigger('sign_in:fail', user, response) - sign_out: () -> @trigger('sign_out') - sign_out_success: (user, response) -> - @trigger('sign_out:success', user, response) - - sign_out_fail: (user, response) -> - @trigger('sign_out:fail', user, response) - retitle: (params, str = null) -> @trigger('retitle', params, str = null)