OSDN Git Service

fix: any
[pettanr/pettanr.git] / app / assets / javascripts / locmare / filer / body / file_body.js.coffee
index 0e0218c..c370d9d 100644 (file)
@@ -1,20 +1,26 @@
-class Locmare.FilerModule.BodyModule.FileBody extends Backbone.View\r
+class Locmare.FilerModule.BodyModule.FileBody extends Pettanr.View\r
   tagName: 'div'\r
   \r
   initialize: (options) ->\r
     @body = options.body\r
-    @items = @filer().items\r
+    @file_items = []\r
+    @file_items = _.map @filer().items, (item) =>\r
+      @init_file_item(item)\r
   \r
   render: () ->\r
-    _this = this\r
-    _.each @items, (item) ->\r
-      c = _this.file_item_class()\r
-      file_item = new c({'file_body': _this, 'item': item})\r
-      _this.$el.append(file_item.render().el)\r
+    this.$el.html('')\r
+    _.each @file_items, (file_item) =>\r
+      this.$el.append(file_item.render().el)\r
     this\r
   \r
-  file_item_class: () ->\r
-    Locmare.FilerModule.BodyModule.FileBodyModule.FileItem\r
+  init_file_item: (item) ->\r
+    file_item_view = new (@module().FileItem)({'file_body': this, 'item': item})\r
+    @listenTo(file_item_view, 'click:pick', @click_pick)\r
+    @listenTo(file_item_view, 'click:symbol', @click_symbol)\r
+    @listenTo(file_item_view, 'http_get', @http_get)\r
+    @listenTo(file_item_view, 'http_post', @http_post)\r
+    @listenTo(file_item_view, 'remove:success', @remove_success)\r
+    file_item_view\r
   \r
   filer: () ->\r
     @body.filer\r
@@ -31,13 +37,28 @@ class Locmare.FilerModule.BodyModule.FileBody extends Backbone.View
   items: () ->\r
     @filer().items\r
   \r
-  template_dir: () ->\r
-    @filer().template_dir\r
+  add_pick: (target_model) ->\r
+    _.each @file_items, (file_item) =>\r
+      file_item.add_pick(target_model)\r
   \r
-  template_file_name: () ->\r
-    "file_body"\r
+  click_pick: (file_item_view) ->\r
+    @trigger('click:pick', file_item_view)\r
   \r
-  template_name: () ->\r
-    @template_dir() + @template_file_name()\r
+  click_symbol: (file_item_view) ->\r
+    @trigger('click:symbol', file_item_view)\r
+  \r
+  http_get: (url) ->\r
+    @trigger('http_get', url)\r
+  \r
+  http_post: (url) ->\r
+    @trigger('http_post', url)\r
+  \r
+  remove_success: (file_item_view) ->\r
+    @trigger('remove', file_item_view.item)\r
+    @file_items = _.without(@file_items, file_item_view)\r
+    file_item_view.remove()\r
+  \r
+  module: () ->\r
+    Locmare.FilerModule.BodyModule.FileBodyModule\r
   \r
 class Locmare.FilerModule.BodyModule.FileBodyModule\r