OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
authoryasushiito <yas@pen-chan.jp>
Sun, 22 Feb 2015 09:32:54 +0000 (18:32 +0900)
committeryasushiito <yas@pen-chan.jp>
Sun, 22 Feb 2015 09:32:54 +0000 (18:32 +0900)
app/assets/javascripts/editor/panel_editor.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/action.js.coffee
app/assets/javascripts/pettanr/action_filter.js.coffee
app/assets/javascripts/pettanr/operator.js.coffee
app/assets/javascripts/routes.js.coffee
app/assets/javascripts/views/layout.js.coffee
app/assets/javascripts/views/layouts/sns.js.coffee

index 7919454..e49f9ed 100644 (file)
@@ -23,6 +23,7 @@ class Editor.PanelEditor extends Backbone.View
     #@dock.add_new_tab()\r
     @body.on('panel:resize', @panel_resize)\r
     @listenTo(@dock, 'put', @put)\r
+    Pettanr.History.lock_url = @panel.edit_url()\r
   \r
   add_element: (element) ->\r
     console.log(element)\r
@@ -55,7 +56,6 @@ class Editor.PanelEditor extends Backbone.View
     rb = new Tag.RowBreak()\r
     this.$el.append(rb.render().el)\r
     @dock.$el.tabs()\r
-    window.editor = this  # enable leave cancel flag on unsave\r
     this\r
   \r
   panel_resize: () ->\r
@@ -67,11 +67,11 @@ class Editor.PanelEditor extends Backbone.View
   \r
   quit: () ->\r
     @dialog.$el.dialog('destroy')\r
-    window.editor = null  # release editor\r
+    Pettanr.History.lock_url = null  # release editor\r
   \r
   put: () ->\r
     success = (data, textStatus) =>\r
-      window.editor = null  # release editor\r
+      Pettanr.History.lock_url = null  # release editor\r
       @dock.valid()\r
     error = (data, textStatus) =>\r
       @dock.invalid()\r
index 773f7d9..5b1f920 100644 (file)
@@ -14,7 +14,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo
   ready_caption: (caption) ->\r
     el = if @has_link()\r
       linked_caption = new Tag.A({\r
-        attr: {href: @link.url()}, \r
+        attr: {href: '/' + @link.url()}, \r
         content: caption\r
       })\r
       @listenTo(linked_caption, 'click', @click)\r
index cc3e104..5ecb7cb 100644 (file)
@@ -18,5 +18,5 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo
       id: @item.get('id'),\r
       format: 'html'\r
     }\r
-    '/' + mani.url(params)\r
+    mani.url(params)\r
   \r
index 8f1ebb2..5326adb 100644 (file)
@@ -6,6 +6,12 @@ class Pettanr.ActionFilter
     default_user_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
     default_author_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
     {\r
+      'folders': {\r
+        reader: _.union(default_reader_filters, ['root', 'watch']),\r
+        resource_reader: _.union(default_resource_reader_filters, []),\r
+        user: _.union(default_user_filters, []),\r
+        author: _.union(default_author_filters, [])\r
+      },\r
       'scrolls': {\r
         reader: _.union(default_reader_filters, ['play', 'by_panel', 'by_author']),\r
         resource_reader: _.union(default_resource_reader_filters, []),\r
@@ -19,6 +25,12 @@ class Pettanr.ActionFilter
     default_user_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
     default_author_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
     {\r
+      'folders': {\r
+        reader: _.union(default_reader_filters, []),\r
+        resource_reader: _.union(default_resource_reader_filters, []),\r
+        user: _.union(default_user_filters, []),\r
+        author: _.union(default_author_filters, [])\r
+      },\r
       'scrolls': {\r
         user: _.union(default_user_filters, []),\r
         author: _.union(default_author_filters, [])\r
index c31b05d..8df5a4a 100644 (file)
@@ -31,3 +31,11 @@ class Pettanr.Operator
     return true if @admin\r
     false\r
   \r
+  is_author: () ->\r
+    return true if @author\r
+    false\r
+  \r
+  is_artist: () ->\r
+    return true if @artist\r
+    false\r
+  \r
index a1600d5..b4e270d 100644 (file)
@@ -1,5 +1,21 @@
+class Pettanr.History extends Backbone.History\r
+  @lock_url = null\r
+  checkUrl: (e) ->\r
+    if Pettanr.History.lock_url\r
+      if confirm('leave? edit data unsaved')\r
+        Pettanr.History.lock_url = null\r
+      else\r
+        @history.pushState({}, document.title, '/' + Pettanr.History.lock_url)\r
+        return false\r
+    super(e)\r
+    \r
+Backbone.history = new Pettanr.History\r
 class Pettanr.Router extends Backbone.Router\r
   \r
+  initialize: (options) ->\r
+    super()\r
+    @operators = options.operators\r
+  \r
   parse_query_string: (query_string) ->\r
     params = {}\r
     if query_string\r
@@ -40,8 +56,11 @@ class Pettanr.Router extends Backbone.Router
   \r
   url_to_params: (url) ->\r
     if route = @find_route(url)\r
+      args = @_extractParameters(route.regex, url)\r
       n = route.callback  # callback function name by string\r
       this[n + '_params'].apply(this, args)  # call to c_i_a_params, c_i_params, c_params\r
+    else\r
+      {}\r
   \r
   # render App(render:all)\r
   home: () ->\r
@@ -159,14 +178,12 @@ class Pettanr.GlobalRouter extends Pettanr.Router
       @route(r.route, r.callback)\r
   \r
   navigate: (fragment, options) ->\r
-    if window.editor\r
+    if Pettanr.History.lock_url\r
       if confirm('leave? edit data unsaved')\r
-        window.editor.quit()\r
-        super(fragment, options)\r
+        Pettanr.History.lock_url = null\r
       else\r
-        false\r
-    else\r
-      super(fragment, options)\r
+        return false\r
+    super(fragment, options)\r
   \r
 class Pettanr.LocalRouter extends Pettanr.Router\r
   \r
@@ -194,8 +211,11 @@ class Pettanr.RouterFilter
     r = c[role]\r
     r\r
   \r
+  # return false if allow\r
+  # return true if deny\r
   authenticate: (role, params, operators) ->\r
-    if not operators[('is_' + role)]()  # ex: operators.is_user()\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
@@ -211,11 +231,11 @@ class Pettanr.BodyRouter extends Pettanr.GlobalRouter
   \r
   initialize: () ->\r
     super()\r
-    _.extend(this, Pettanr.RouterFilter)\r
+    _.extend(this, Pettanr.RouterFilter.prototype)\r
   \r
-  navigate: (url, operators) ->\r
+  navigate: (url, options, operators) ->\r
     safe_url = @block(url, operators) || url\r
-    super(safe_url)\r
+    super(safe_url, options)\r
   \r
   # access block\r
   # return sign in form if invalid url\r
index 281d59c..288b135 100644 (file)
@@ -30,10 +30,6 @@ class Pettanr.Views.Layout.ControllerManager
   add_listener: (controller, self) ->\r
     self.listenTo(controller, 'ready', self.refresh)\r
     self.listenTo(controller, 'retitle', self.retitle)\r
-    self.listenTo(controller, 'sign_in:success', self.sign_in_success)\r
-    self.listenTo(controller, 'sign_in:fail', self.sign_in_fail)\r
-    self.listenTo(controller, 'sign_out:success', self.sign_out_success)\r
-    self.listenTo(controller, 'sign_out:fail', self.sign_out_fail)\r
     self.listenTo(controller, 'block', self.block)\r
     self.listenTo(controller, 'redirect', self.redirect_to)\r
   \r
@@ -45,7 +41,7 @@ class Pettanr.Views.Layout.Base extends Backbone.View
     _.extend(this, Pettanr.Views.Layout.ControllerManager.prototype)\r
     @operators = new Pettanr.Operator({})\r
     # router for refresh body\r
-    @global_router = new Pettanr.GlobalRouter()\r
+    @global_router = new Pettanr.BodyRouter()\r
     # router for refresh body. but not replace url\r
     @local_router = new Pettanr.LocalRouter()\r
     # router for refresh header\r
@@ -73,7 +69,13 @@ class Pettanr.Views.Layout.Base extends Backbone.View
   start: () ->\r
     # check current user signed in?\r
     # callback sign_in_success from users controller if signed in\r
-    @local_router.navigate('users/test')\r
+    @test()\r
+  \r
+  test: () ->\r
+    @user = new Pettanr.User.Session()\r
+    @listenTo(@user, 'sign_in:success', @sign_in_success)\r
+    @listenTo(@user, 'sign_in:fail', @sign_in_fail)\r
+    @user.save({})\r
   \r
   fire_for_header: (params) ->\r
     @fire(params, @refresh_header)\r
@@ -153,10 +155,6 @@ class Pettanr.Views.Layout.Sns extends Pettanr.Views.Layout.Base
     @listenTo(@header, 'navigate', @header_navigate)\r
     @listenTo(@header, 'sign_in', @sign_in)\r
     @listenTo(@header, 'sign_out', @sign_out)\r
-    @listenTo(@header, 'sign_in:success', @sign_in_success)\r
-    @listenTo(@header, 'sign_in:fail', @sign_in_fail)\r
-    @listenTo(@header, 'sign_out:success', @sign_out_success)\r
-    @listenTo(@header, 'sign_out:fail', @sign_out_fail)\r
     @listenTo(@body, 'navigate', @body_navigate)\r
     @listenTo(@body, 'retitle', @retitle)\r
     @listenTo(@body, 'sign_in', @sign_in)\r
@@ -187,11 +185,14 @@ class Pettanr.Views.Layout.Sns extends Pettanr.Views.Layout.Base
     @body.fire({controller: 'user_sessions', action: 'new'})\r
   \r
   sign_out: () ->\r
-    @header.fire({controller: 'users', action: 'sign_out'})\r
+    @user = new Pettanr.User.Session()\r
+    @listenTo(@user, 'sign_out:success', @sign_out_success)\r
+    @listenTo(@user, 'sign_out:fail', @sign_out_fail)\r
+    @user.destroy()\r
   \r
   sign_out_success: (user, response) ->\r
     super(user, response)\r
-    @global_router.navigate('')\r
+    @global_router.navigate('', {trigger: false}, @operators)\r
     ## navigate users/guest\r
     ## callback from fire to refresh_header\r
     @header.fire({controller: 'users', action: 'guest'})\r
@@ -205,13 +206,13 @@ class Pettanr.Views.Layout.Sns extends Pettanr.Views.Layout.Base
   block: () ->\r
     super()\r
     @header_router.navigate('users/guest')\r
-    @local_router.navigate('user_seeeions/new')\r
+    @body.fire({controller: 'user_sessions', action: 'new'})\r
   \r
   header_navigate: (url) ->\r
-    @global_router.navigate(url, true)\r
+    @global_router.navigate(url, {trigger: true}, @operators)\r
   \r
   body_navigate: (url) ->\r
-    @global_router.navigate(url, {trigger: false})\r
+    @global_router.navigate(url, {trigger: false}, @operators)\r
   \r
   header_class: () ->\r
     Pettanr.Views.Layout.Sns.Header\r
index ab073fe..2c85923 100644 (file)
@@ -21,21 +21,9 @@ class Pettanr.Views.Layout.Sns.Header extends Backbone.View
   sign_in: (attr) ->\r
     @trigger('sign_in', attr)\r
   \r
-  sign_in_success: (user, response) ->\r
-    @trigger('sign_in:success', user, response)\r
-  \r
-  sign_in_fail: (user, response) ->\r
-    @trigger('sign_in:fail', user, response)\r
-  \r
   sign_out: () ->\r
     @trigger('sign_out')\r
   \r
-  sign_out_success: (user, response) ->\r
-    @trigger('sign_out:success', user, response)\r
-  \r
-  sign_out_fail: (user, response) ->\r
-    @trigger('sign_out:fail', user, response)\r
-  \r
   retitle: (params, str = null) ->\r
     @trigger('retitle', params, str = null)\r
   \r
@@ -76,21 +64,9 @@ class Pettanr.Views.Layout.Sns.Body extends Backbone.View
   sign_in: (attr) ->\r
     @trigger('sign_in', attr)\r
   \r
-  sign_in_success: (user, response) ->\r
-    @trigger('sign_in:success', user, response)\r
-  \r
-  sign_in_fail: (user, response) ->\r
-    @trigger('sign_in:fail', user, response)\r
-  \r
   sign_out: () ->\r
     @trigger('sign_out')\r
   \r
-  sign_out_success: (user, response) ->\r
-    @trigger('sign_out:success', user, response)\r
-  \r
-  sign_out_fail: (user, response) ->\r
-    @trigger('sign_out:fail', user, response)\r
-  \r
   retitle: (params, str = null) ->\r
     @trigger('retitle', params, str = null)\r
   \r