OSDN Git Service

fix: editor canceler for picker
authoryasushiito <yas@pen-chan.jp>
Thu, 26 Mar 2015 02:53:00 +0000 (11:53 +0900)
committeryasushiito <yas@pen-chan.jp>
Thu, 26 Mar 2015 02:53:00 +0000 (11:53 +0900)
24 files changed:
app/assets/javascripts/controllers.js.coffee
app/assets/javascripts/controllers/artists.js.coffee
app/assets/javascripts/controllers/authors.js.coffee
app/assets/javascripts/controllers/comic_stories.js.coffee
app/assets/javascripts/controllers/comics.js.coffee
app/assets/javascripts/controllers/folders.js.coffee
app/assets/javascripts/controllers/license_groups.js.coffee
app/assets/javascripts/controllers/licenses.js.coffee
app/assets/javascripts/controllers/panels.js.coffee
app/assets/javascripts/controllers/scroll_panels.js.coffee
app/assets/javascripts/controllers/scrolls.js.coffee
app/assets/javascripts/controllers/sheet_panels.js.coffee
app/assets/javascripts/controllers/sheets.js.coffee
app/assets/javascripts/controllers/speech_balloon_templates.js.coffee
app/assets/javascripts/controllers/stories.js.coffee
app/assets/javascripts/controllers/story_sheets.js.coffee
app/assets/javascripts/controllers/writing_formats.js.coffee
app/assets/javascripts/editor/panel_editor.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/default.js.coffee
app/assets/javascripts/pettanr.js.coffee
app/assets/javascripts/pettanr/action_filter.js.coffee
app/assets/javascripts/pettanr/proxy.js.coffee
app/assets/javascripts/routes.js.coffee
app/assets/javascripts/views/layout.js.coffee

index 2087b2d..c972325 100644 (file)
@@ -4,9 +4,12 @@ class Pettanr.AppController
     _.extend(this, Backbone.Events)\r
   \r
   @new2: (params, form, operators, gate) ->\r
     _.extend(this, Backbone.Events)\r
   \r
   @new2: (params, form, operators, gate) ->\r
-    c = Pettanr[Pettanr.camelize(params['controller']) + 'Controller']\r
+    c = @controller_by_name(params['controller'])\r
     new c(params, form, operators, gate)\r
   \r
     new c(params, form, operators, gate)\r
   \r
+  @controller_by_name: (name) ->\r
+    Pettanr[Pettanr.camelize(name) + 'Controller']\r
+  \r
   set_model: () ->\r
     @my_controller = Manifest.manifest().controllers[@params['controller']]\r
     @my_action = @my_controller.actions[@params['action']]\r
   set_model: () ->\r
     @my_controller = Manifest.manifest().controllers[@params['controller']]\r
     @my_action = @my_controller.actions[@params['action']]\r
index f81d311..6c41681 100644 (file)
@@ -59,3 +59,12 @@ class Pettanr.ArtistsController extends Pettanr.AppController
     @trigger('redirect', '/home/configure')\r
     @trigger('success', model, response)\r
   \r
     @trigger('redirect', '/home/configure')\r
     @trigger('success', model, response)\r
   \r
+  @is_deny_action_on_picker: (params) ->\r
+    switch params['action']\r
+      when 'new'\r
+        true\r
+      when 'edit'\r
+        true\r
+      else\r
+        false\r
+  \r
index 49a2f86..b9f1b21 100644 (file)
@@ -59,3 +59,12 @@ class Pettanr.AuthorsController extends Pettanr.AppController
     @trigger('redirect', '/home/configure')\r
     @trigger('success', model, response)\r
   \r
     @trigger('redirect', '/home/configure')\r
     @trigger('success', model, response)\r
   \r
+  @is_deny_action_on_picker: (params) ->\r
+    switch params['action']\r
+      when 'new'\r
+        true\r
+      when 'edit'\r
+        true\r
+      else\r
+        false\r
+  \r
index 5737a20..9d892a9 100644 (file)
@@ -72,3 +72,12 @@ class Pettanr.ComicStoriesController extends Pettanr.AppController
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
+  @is_deny_action_on_picker: (params) ->\r
+    switch params['action']\r
+      when 'new'\r
+        true\r
+      when 'edit'\r
+        true\r
+      else\r
+        false\r
+  \r
index c1b30dd..4513b25 100644 (file)
@@ -85,3 +85,12 @@ class Pettanr.ComicsController extends Pettanr.AppController
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
+  @is_deny_action_on_picker: (params) ->\r
+    switch params['action']\r
+      when 'new'\r
+        true\r
+      when 'edit'\r
+        true\r
+      else\r
+        false\r
+  \r
index aa49de5..15ac9d2 100644 (file)
@@ -48,11 +48,7 @@ class Pettanr.FoldersController extends Pettanr.AppController
   \r
   show_html: () -> \r
     if @item.is_remote()\r
   \r
   show_html: () -> \r
     if @item.is_remote()\r
-      proxy = new Pettanr.Proxy({operators: @operators})\r
-      @listenTo(proxy, 'ready', @refresh)\r
-      @listenTo(proxy, 'title', @title)\r
-      @listenTo(proxy, 'done', @done)\r
-      proxy.http_get(@item.remote_url())\r
+      @trigger('other', @item.remote_url())\r
     else\r
       @children_html()\r
   \r
     else\r
       @children_html()\r
   \r
@@ -92,3 +88,15 @@ class Pettanr.FoldersController extends Pettanr.AppController
   done: (params) ->\r
     @trigger('done', params)\r
   \r
   done: (params) ->\r
     @trigger('done', params)\r
   \r
+  deny: (params, form, safe_url) ->\r
+    @trigger('deny', params, form, safe_url)\r
+  \r
+  @is_deny_action_on_picker: (params) ->\r
+    switch params['action']\r
+      when 'new'\r
+        true\r
+      when 'edit'\r
+        true\r
+      else\r
+        false\r
+  \r
index 908b149..2abd477 100644 (file)
@@ -37,3 +37,12 @@ class Pettanr.LicenseGroupsController extends Pettanr.AppController
     @form_edit()\r
     @trigger('done', @params)\r
   \r
     @form_edit()\r
     @trigger('done', @params)\r
   \r
+  @is_deny_action_on_picker: (params) ->\r
+    switch params['action']\r
+      when 'new'\r
+        true\r
+      when 'edit'\r
+        true\r
+      else\r
+        false\r
+  \r
index 81d49ea..a16e28a 100644 (file)
@@ -65,3 +65,12 @@ class Pettanr.LicensesController extends Pettanr.AppController
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
+  @is_deny_action_on_picker: (params) ->\r
+    switch params['action']\r
+      when 'new'\r
+        true\r
+      when 'edit'\r
+        true\r
+      else\r
+        false\r
+  \r
index 530b774..4a90141 100644 (file)
@@ -101,3 +101,12 @@ class Pettanr.PanelsController extends Pettanr.AppController
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
+  @is_deny_action_on_picker: (params) ->\r
+    switch params['action']\r
+      when 'new'\r
+        true\r
+      when 'edit'\r
+        true\r
+      else\r
+        false\r
+  \r
index 41ece51..7de5298 100644 (file)
@@ -72,3 +72,12 @@ class Pettanr.ScrollPanelsController extends Pettanr.AppController
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
+  @is_deny_action_on_picker: (params) ->\r
+    switch params['action']\r
+      when 'new'\r
+        true\r
+      when 'edit'\r
+        true\r
+      else\r
+        false\r
+  \r
index e2f2aef..57a3d2e 100644 (file)
@@ -81,3 +81,12 @@ class Pettanr.ScrollsController extends Pettanr.AppController
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
+  @is_deny_action_on_picker: (params) ->\r
+    switch params['action']\r
+      when 'new'\r
+        true\r
+      when 'edit'\r
+        true\r
+      else\r
+        false\r
+  \r
index 7ce69d1..957d3d3 100644 (file)
@@ -72,3 +72,12 @@ class Pettanr.SheetPanelsController extends Pettanr.AppController
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
+  @is_deny_action_on_picker: (params) ->\r
+    switch params['action']\r
+      when 'new'\r
+        true\r
+      when 'edit'\r
+        true\r
+      else\r
+        false\r
+  \r
index aed930d..8d82207 100644 (file)
@@ -88,3 +88,12 @@ class Pettanr.SheetsController extends Pettanr.AppController
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
+  @is_deny_action_on_picker: (params) ->\r
+    switch params['action']\r
+      when 'new'\r
+        true\r
+      when 'edit'\r
+        true\r
+      else\r
+        false\r
+  \r
index 3c860c2..424771a 100644 (file)
@@ -65,3 +65,12 @@ class Pettanr.SpeechBalloonTemplatesController extends Pettanr.AppController
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
+  @is_deny_action_on_picker: (params) ->\r
+    switch params['action']\r
+      when 'new'\r
+        true\r
+      when 'edit'\r
+        true\r
+      else\r
+        false\r
+  \r
index 009938a..4c0ec82 100644 (file)
@@ -90,3 +90,12 @@ class Pettanr.StoriesController extends Pettanr.AppController
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
+  @is_deny_action_on_picker: (params) ->\r
+    switch params['action']\r
+      when 'new'\r
+        true\r
+      when 'edit'\r
+        true\r
+      else\r
+        false\r
+  \r
index 728d5e0..deb88d1 100644 (file)
@@ -72,3 +72,12 @@ class Pettanr.StorySheetsController extends Pettanr.AppController
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
+  @is_deny_action_on_picker: (params) ->\r
+    switch params['action']\r
+      when 'new'\r
+        true\r
+      when 'edit'\r
+        true\r
+      else\r
+        false\r
+  \r
index d5dc13c..9710945 100644 (file)
@@ -60,3 +60,12 @@ class Pettanr.WritingFormatsController extends Pettanr.AppController
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
     @listenTo(@item, 'destroy:fail', @destroy_fail)\r
     @item.destroy()\r
   \r
+  @is_deny_action_on_picker: (params) ->\r
+    switch params['action']\r
+      when 'new'\r
+        true\r
+      when 'edit'\r
+        true\r
+      else\r
+        false\r
+  \r
index dd15a08..eaeba62 100644 (file)
@@ -108,12 +108,12 @@ class Editor.PanelEditor.Dialog extends Backbone.View
     this.$el.append(view.el)\r
   \r
   getter_proxy: () ->\r
     this.$el.append(view.el)\r
   \r
   getter_proxy: () ->\r
-    proxy = new Pettanr.Proxy({operators: @operators})\r
+    proxy = new Pettanr.PickerProxy({operators: @operators})\r
     @listenTo(proxy, 'ready', @ready)\r
     @listenTo(proxy, 'title', @title)\r
     @listenTo(proxy, 'title', @push_history)\r
     @listenTo(proxy, 'done', @done)\r
     @listenTo(proxy, 'ready', @ready)\r
     @listenTo(proxy, 'title', @title)\r
     @listenTo(proxy, 'title', @push_history)\r
     @listenTo(proxy, 'done', @done)\r
-    @listenTo(proxy, 'lock', @lock)\r
+    @listenTo(proxy, 'deny', @deny)\r
     proxy\r
   \r
   http_get: (url, form) ->\r
     proxy\r
   \r
   http_get: (url, form) ->\r
@@ -133,8 +133,8 @@ class Editor.PanelEditor.Dialog extends Backbone.View
   done: (params) ->\r
     this.$el.dialog('open')\r
   \r
   done: (params) ->\r
     this.$el.dialog('open')\r
   \r
-  lock: (params) ->\r
-    console.log('_lock')\r
+  deny: (params, form, safe_url) ->\r
+    @getter_proxy().http_get(safe_url, params, form)\r
   \r
   push_history: (params, str = null) ->\r
     @history.push(params, str)\r
   \r
   push_history: (params, str = null) ->\r
     @history.push(params, str)\r
index c69d367..f34bf97 100644 (file)
@@ -48,6 +48,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum
     proxy = new Pettanr.Proxy({operators: @filer().operators})\r
     @listenTo(proxy, 'success', @remove_success)\r
     @listenTo(proxy, 'fail', @remove_fail)\r
     proxy = new Pettanr.Proxy({operators: @filer().operators})\r
     @listenTo(proxy, 'success', @remove_success)\r
     @listenTo(proxy, 'fail', @remove_fail)\r
+    @listenTo(proxy, 'deny', @remove_deny)\r
     proxy.http_post(@item.destroy_url())\r
   \r
   remove_success: () ->\r
     proxy.http_post(@item.destroy_url())\r
   \r
   remove_success: () ->\r
@@ -56,3 +57,5 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum
   remove_fail: () ->\r
     @trigger('remove:fail')\r
   \r
   remove_fail: () ->\r
     @trigger('remove:fail')\r
   \r
+  remove_deny: () ->\r
+  \r
index 818e157..544c250 100644 (file)
@@ -77,9 +77,6 @@ class Pettanr
   @is_sns: () ->\r
     Manifest.manifest().magic_numbers.run_mode != 0\r
   \r
   @is_sns: () ->\r
     Manifest.manifest().magic_numbers.run_mode != 0\r
   \r
-  @before_filter: (action_name, filter_action_names) ->\r
-    _.contains(filter_action_names, action_name)\r
-  \r
   class Pettanr.AppHelper\r
     @manifest: () ->\r
       Manifest.manifest\r
   class Pettanr.AppHelper\r
     @manifest: () ->\r
       Manifest.manifest\r
index 141fcb2..23b3c0f 100644 (file)
 class Pettanr.ActionFilter\r
   \r
 class Pettanr.ActionFilter\r
   \r
-  @suply_default: (reader, resource_reader, user, author) ->\r
+  # access block\r
+  # return sign in form if invalid url\r
+  # return null if url is valid\r
+  @test: (params, operators) ->\r
+    return @guest_url() if @is_deny('reader', params, operators) or @is_deny('resource_reader', params, operators) or @is_deny('user', params, operators)\r
+    return @new_author_url() if @is_deny('author', params, operators)\r
+    return @new_artist_url() if @is_deny('artist', params, operators)\r
+    null\r
+  \r
+  @filters: () ->\r
+    if Pettanr.is_sns()\r
+      @sns_filters()\r
+    else\r
+      @blog_filters()\r
+  \r
+  @my_filters: (role, params) ->\r
+    f = @filters()\r
+    c = f[params['controller']] || {}\r
+    r = c[role]\r
+    r\r
+  \r
+  @before_filter: (action_name, filter_action_names) ->\r
+    _.contains(filter_action_names, action_name)\r
+  \r
+  # return false if allow\r
+  # return true if deny\r
+  @is_deny: (role, params, operators) ->\r
+    n = 'is_' + role\r
+    if not operators[n]()  # ex: operators.is_user()\r
+      filter = @my_filters(role, params)\r
+      if @before_filter(params['action'], filter)\r
+        return true\r
+    false\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
+  @suply_default: (reader, resource_reader, user, author, artist) ->\r
+    author_filter = if _.isFunction(author)\r
+      author()\r
+    else\r
+      _.union(@default_author_filters, author)\r
+    artist_filter = if _.isFunction(artist)\r
+      artist()\r
+    else\r
+      _.union(@default_artist_filters, artist)\r
     {\r
       reader: _.union(@default_reader_filters, reader),\r
       resource_reader: _.union(@default_resource_reader_filters, resource_reader),\r
       user: _.union(@default_user_filters, user),\r
     {\r
       reader: _.union(@default_reader_filters, reader),\r
       resource_reader: _.union(@default_resource_reader_filters, resource_reader),\r
       user: _.union(@default_user_filters, user),\r
-      author: _.union(@default_author_filters, author)\r
+      author: author_filter,\r
+      artist: artist_filter\r
     }\r
   \r
   @default_reader_filters = ['index', 'show']\r
   @default_resource_reader_filters = []\r
   @default_user_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
   @default_author_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
     }\r
   \r
   @default_reader_filters = ['index', 'show']\r
   @default_resource_reader_filters = []\r
   @default_user_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
   @default_author_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
+  @default_artist_filters = []\r
   \r
   @sns_filters: () ->\r
   \r
   @sns_filters: () ->\r
-    default_reader_filters = ['index', 'show']\r
-    default_resource_reader_filters = []\r
-    default_user_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
-    default_author_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
     {\r
       folders: @suply_default(\r
         ['root', 'watch'], \r
         [], \r
         [], \r
     {\r
       folders: @suply_default(\r
         ['root', 'watch'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       scrolls: @suply_default(\r
         ['play', 'by_panel', 'by_author'], \r
         [], \r
         [], \r
         []\r
       ),\r
       scrolls: @suply_default(\r
         ['play', 'by_panel', 'by_author'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       scroll_panels: @suply_default(\r
         ['by_panel', 'by_scroll', 'by_author'], \r
         [], \r
         [], \r
         []\r
       ),\r
       scroll_panels: @suply_default(\r
         ['by_panel', 'by_scroll', 'by_author'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       comics: @suply_default(\r
         ['play', 'by_story', 'by_author'], \r
         [], \r
         [], \r
         []\r
       ),\r
       comics: @suply_default(\r
         ['play', 'by_story', 'by_author'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       comic_stories: @suply_default(\r
         ['by_story', 'by_comic', 'by_author'], \r
         [], \r
         [], \r
         []\r
       ),\r
       comic_stories: @suply_default(\r
         ['by_story', 'by_comic', 'by_author'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       stories: @suply_default(\r
         ['play', 'by_comic', 'by_sheet', 'by_author'], \r
         [], \r
         [], \r
         []\r
       ),\r
       stories: @suply_default(\r
         ['play', 'by_comic', 'by_sheet', 'by_author'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       story_sheets: @suply_default(\r
         ['by_story', 'by_sheet', 'by_author'], \r
         [], \r
         [], \r
         []\r
       ),\r
       story_sheets: @suply_default(\r
         ['by_story', 'by_sheet', 'by_author'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       sheets: @suply_default(\r
         ['play', 'by_story', 'by_panel', 'by_author'], \r
         [], \r
         [], \r
         []\r
       ),\r
       sheets: @suply_default(\r
         ['play', 'by_story', 'by_panel', 'by_author'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       sheet_panels: @suply_default(\r
         ['by_panel', 'by_sheet', 'by_author'], \r
         [], \r
         [], \r
         []\r
       ),\r
       sheet_panels: @suply_default(\r
         ['by_panel', 'by_sheet', 'by_author'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       panels: @suply_default(\r
         ['by_scroll', 'by_sheet', 'by_author', 'by_speech_balloon_template'], \r
         [], \r
         [], \r
         []\r
       ),\r
       panels: @suply_default(\r
         ['by_scroll', 'by_sheet', 'by_author', 'by_speech_balloon_template'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       panel_pictures: @suply_default(\r
         ['by_panel', 'by_author'], \r
         [], \r
         [], \r
         []\r
       ),\r
       panel_pictures: @suply_default(\r
         ['by_panel', 'by_author'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       speech_balloons: @suply_default(\r
         ['by_panel', 'by_author', 'by_speech_balloon_template'], \r
         [], \r
         [], \r
         []\r
       ),\r
       speech_balloons: @suply_default(\r
         ['by_panel', 'by_author', 'by_speech_balloon_template'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       speeches: @suply_default(\r
         ['by_author', 'by_speech_balloon', 'by_speech_balloon_template', 'by_writing_format'], \r
         [], \r
         [], \r
         []\r
       ),\r
       speeches: @suply_default(\r
         ['by_author', 'by_speech_balloon', 'by_speech_balloon_template', 'by_writing_format'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       balloons: @suply_default(\r
         [], \r
         [], \r
         [], \r
         []\r
       ),\r
       balloons: @suply_default(\r
         [], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       ground_pictures: @suply_default(\r
         ['by_panel', 'by_author'], \r
         [], \r
         [], \r
         []\r
       ),\r
       ground_pictures: @suply_default(\r
         ['by_panel', 'by_author'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       ground_colors: @suply_default(\r
         ['by_panel', 'by_author'], \r
         [], \r
         [], \r
         []\r
       ),\r
       ground_colors: @suply_default(\r
         ['by_panel', 'by_author'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       original_pictures: @suply_default(\r
         ['history'], \r
         [], \r
         [], \r
         []\r
       ),\r
       original_pictures: @suply_default(\r
         ['history'], \r
         [], \r
         [], \r
-        []\r
+        [], \r
+        ['index', 'new', 'create', 'edit', 'update', 'destroy']\r
       ),\r
       pictures: @suply_default(\r
         ['credit', 'search'], \r
         [], \r
         [], \r
       ),\r
       pictures: @suply_default(\r
         ['credit', 'search'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       resource_pictures: @suply_default(\r
         ['credit', 'by_original_picture', 'by_license_group', 'by_license', 'by_artist'], \r
         [], \r
         [], \r
         []\r
       ),\r
       resource_pictures: @suply_default(\r
         ['credit', 'by_original_picture', 'by_license_group', 'by_license', 'by_artist'], \r
         [], \r
         [], \r
-        []\r
+        [], \r
+        ['new', 'create', 'edit', 'update', 'destroy']\r
       ),\r
       speech_balloon_templates: @suply_default(\r
         ['by_panel', 'by_system_picture'], \r
         [], \r
         [], \r
       ),\r
       speech_balloon_templates: @suply_default(\r
         ['by_panel', 'by_system_picture'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       writing_formats: @suply_default(\r
         ['by_system_picture'], \r
         [], \r
         [], \r
         []\r
       ),\r
       writing_formats: @suply_default(\r
         ['by_system_picture'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       license_groups: @suply_default(\r
         ['by_resource_picture'], \r
         [], \r
         [], \r
         []\r
       ),\r
       license_groups: @suply_default(\r
         ['by_resource_picture'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       licenses: @suply_default(\r
         ['by_license_group', 'by_system_picture'], \r
         [], \r
         [], \r
         []\r
       ),\r
       licenses: @suply_default(\r
         ['by_license_group', 'by_system_picture'], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       authors: @suply_default(\r
         [], \r
         [], \r
         [], \r
         []\r
       ),\r
       authors: @suply_default(\r
         [], \r
         [], \r
         [], \r
+        () ->\r
+          ['edit', 'update', 'destroy']\r
+        , \r
         []\r
       ),\r
       artists: @suply_default(\r
         [], \r
         [], \r
         [], \r
         []\r
       ),\r
       artists: @suply_default(\r
         [], \r
         [], \r
         [], \r
-        []\r
+        [], \r
+        () ->\r
+          ['edit', 'update', 'destroy']\r
       ),\r
       system_pictures: @suply_default(\r
         [], \r
         [], \r
         [], \r
       ),\r
       system_pictures: @suply_default(\r
         [], \r
         [], \r
         [], \r
+        [], \r
         []\r
       ),\r
       home: @suply_default(\r
         []\r
       ),\r
       home: @suply_default(\r
@@ -186,6 +264,7 @@ class Pettanr.ActionFilter
           'panels', 'panel_pictures', 'speech_balloons', 'balloons', 'speeches', 'ground_pictures', 'ground_colors'\r
         ], \r
         [], \r
           'panels', 'panel_pictures', 'speech_balloons', 'balloons', 'speeches', 'ground_pictures', 'ground_colors'\r
         ], \r
         [], \r
+        [], \r
         []\r
       ),\r
     }\r
         []\r
       ),\r
     }\r
index c78d767..2ef5195 100644 (file)
@@ -8,8 +8,6 @@ class Pettanr.Proxy
   local_router: (parsed_callback) ->\r
     local_router = new Pettanr.LocalRouter({operators: @operators})\r
     @listenTo(local_router, 'go', parsed_callback)\r
   local_router: (parsed_callback) ->\r
     local_router = new Pettanr.LocalRouter({operators: @operators})\r
     @listenTo(local_router, 'go', parsed_callback)\r
-    @listenTo(local_router, 'deny', @deny)\r
-    @listenTo(local_router, 'cancel', @cancel)\r
     local_router\r
   \r
   http_get: (url, form) ->\r
     local_router\r
   \r
   http_get: (url, form) ->\r
@@ -17,10 +15,13 @@ class Pettanr.Proxy
   \r
   get: (params, form) ->\r
     return if !@test(params, form)\r
   \r
   get: (params, form) ->\r
     return if !@test(params, form)\r
+    return if !@filter(params, form)\r
     controller = Pettanr.AppController.new2(params, form, @operators, @gate)\r
     @listenTo(controller, 'ready', @ready)\r
     @listenTo(controller, 'title', @title)\r
     @listenTo(controller, 'done', @done)\r
     controller = Pettanr.AppController.new2(params, form, @operators, @gate)\r
     @listenTo(controller, 'ready', @ready)\r
     @listenTo(controller, 'title', @title)\r
     @listenTo(controller, 'done', @done)\r
+    @listenTo(controller, 'other', @other)\r
+    @listenTo(controller, 'deny', @remote_folder_deny)\r
     @listenTo(controller, 'lock', @lock)\r
     @listenTo(controller, 'unlock', @unlock)\r
     action_name = params['action']\r
     @listenTo(controller, 'lock', @lock)\r
     @listenTo(controller, 'unlock', @unlock)\r
     action_name = params['action']\r
@@ -40,8 +41,16 @@ class Pettanr.Proxy
         # blocking\r
         # back button event\r
         Backbone.history.navigate('/' + @gate.url(), {trigger: false})\r
         # blocking\r
         # back button event\r
         Backbone.history.navigate('/' + @gate.url(), {trigger: false})\r
+        @trigger('cancel', params, form)\r
         false\r
   \r
         false\r
   \r
+  filter: (params, form) ->\r
+    if safe_url = Pettanr.ActionFilter.test(params, @operators)\r
+      @trigger('deny', params, form, safe_url)\r
+      false\r
+    else\r
+      true\r
+  \r
   ready: (view) ->\r
     @trigger('ready', view)\r
   \r
   ready: (view) ->\r
     @trigger('ready', view)\r
   \r
@@ -51,6 +60,9 @@ class Pettanr.Proxy
   done: (params) ->\r
     @trigger('done', params)\r
   \r
   done: (params) ->\r
     @trigger('done', params)\r
   \r
+  other: (url) ->\r
+    @local_router(@get).navigate(url)\r
+  \r
   lock: (params, form) ->\r
     @trigger('lock', params, form)\r
   \r
   lock: (params, form) ->\r
     @trigger('lock', params, form)\r
   \r
@@ -60,8 +72,8 @@ class Pettanr.Proxy
   deny: (params, form, safe_url) ->\r
     @trigger('deny', params, form, safe_url)\r
   \r
   deny: (params, form, safe_url) ->\r
     @trigger('deny', params, form, safe_url)\r
   \r
-  cancel: () ->\r
-    @trigger('cancel')\r
+  remote_folder_deny: (params, form, safe_url) ->\r
+    @trigger('deny', params, form, safe_url)\r
   \r
   http_post: (url, form) ->\r
     @local_router(@post).navigate(url, form)\r
   \r
   http_post: (url, form) ->\r
     @local_router(@post).navigate(url, form)\r
@@ -93,3 +105,16 @@ class Pettanr.Proxy
   sign_out: () ->\r
     @trigger('sign_out')\r
   \r
   sign_out: () ->\r
     @trigger('sign_out')\r
   \r
+class Pettanr.PickerProxy extends Pettanr.Proxy\r
+  \r
+  get: (params, form) ->\r
+    if @is_deny(params)\r
+      alert("editor can't open on pick window")\r
+    else\r
+      super(params, form)\r
+  \r
+  is_deny: (params) ->\r
+    c = Pettanr.AppController.controller_by_name(params['controller'])\r
+    return false if !c['is_deny_action_on_picker']\r
+    c.is_deny_action_on_picker(params)\r
+  \r
index e32d666..be17bf3 100644 (file)
@@ -80,46 +80,6 @@ class Pettanr.Router extends Backbone.Router
     else\r
       {}\r
   \r
     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
   # render App(render:all)\r
   home: () ->\r
     params = @home_params()\r
@@ -135,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
   # 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
   \r
   c_i_a_params: (controller, id, action, query_string) ->\r
     params = @parse_query_string(query_string)\r
@@ -164,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
   # 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
   \r
   c_i_params: (controller, id, query_string) ->\r
     params = @parse_query_string(query_string)\r
@@ -191,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
   # 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
   \r
   c_params: (controller, query_string) ->\r
     params = @parse_query_string(query_string)\r
@@ -205,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
   \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
   \r
   top_a_params: (action, query_string) ->\r
     params = @parse_query_string(query_string)\r
@@ -219,10 +167,7 @@ class Pettanr.Router extends Backbone.Router
   \r
   user_sessions_a: (action, query_string, form) ->\r
     params = @user_sessions_a_params(action, query_string)\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
   \r
   user_sessions_a_params: (action, query_string) ->\r
     params = @parse_query_string(query_string)\r
@@ -233,10 +178,7 @@ class Pettanr.Router extends Backbone.Router
   \r
   users_a: (action, query_string, form) ->\r
     params = @users_a_params(action, query_string)\r
   \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
   \r
   users_a_params: (action, query_string) ->\r
     params = @parse_query_string(query_string)\r
index aff7337..5c891df 100644 (file)
@@ -93,8 +93,10 @@ class Pettanr.Views.Layout.Sns extends Pettanr.Views.Layout.Base
     @listenTo(proxy, 'title', @body_title)\r
     @listenTo(proxy, 'title', @push_history)\r
     @listenTo(proxy, 'done', @body_done)\r
     @listenTo(proxy, 'title', @body_title)\r
     @listenTo(proxy, 'title', @push_history)\r
     @listenTo(proxy, 'done', @body_done)\r
+    @listenTo(proxy, 'deny', @body_deny)\r
     @listenTo(proxy, 'lock', @body_lock)\r
     @listenTo(proxy, 'unlock', @body_unlock)\r
     @listenTo(proxy, 'lock', @body_lock)\r
     @listenTo(proxy, 'unlock', @body_unlock)\r
+    @listenTo(proxy, 'cancel', @cancel)\r
     proxy\r
   \r
   body_http_get: (url, form) ->\r
     proxy\r
   \r
   body_http_get: (url, form) ->\r
@@ -127,6 +129,7 @@ class Pettanr.Views.Layout.Sns extends Pettanr.Views.Layout.Base
     @listenTo(proxy, 'redirect', @body_redirect)\r
     @listenTo(proxy, 'sign_in', @sign_in)\r
     @listenTo(proxy, 'sign_out', @sign_out)\r
     @listenTo(proxy, 'redirect', @body_redirect)\r
     @listenTo(proxy, 'sign_in', @sign_in)\r
     @listenTo(proxy, 'sign_out', @sign_out)\r
+    @listenTo(proxy, 'deny', @body_deny)\r
     @listenTo(proxy, 'unlock', @body_unlock)\r
     proxy\r
   \r
     @listenTo(proxy, 'unlock', @body_unlock)\r
     proxy\r
   \r
@@ -146,12 +149,17 @@ class Pettanr.Views.Layout.Sns extends Pettanr.Views.Layout.Base
     @global_router.navigate(url)\r
     @getter_proxy().http_get(url)\r
   \r
     @global_router.navigate(url)\r
     @getter_proxy().http_get(url)\r
   \r
+  body_deny: (params, form, safe_url) ->\r
+    @getter_proxy().http_get(safe_url, params, form)\r
+  \r
   body_lock: (params, form) ->\r
     @gate.lock(params, form)\r
   \r
   body_unlock: (params, form) ->\r
     @gate.unlock()\r
   \r
   body_lock: (params, form) ->\r
     @gate.lock(params, form)\r
   \r
   body_unlock: (params, form) ->\r
     @gate.unlock()\r
   \r
+  cancel: (params, form) ->\r
+  \r
 class Pettanr.Views.Layout.Blog extends Pettanr.Views.Layout.Base\r
   className: 'layout-blog'\r
   \r
 class Pettanr.Views.Layout.Blog extends Pettanr.Views.Layout.Base\r
   className: 'layout-blog'\r
   \r