OSDN Git Service

conflict
[pettanr/pettanr.git] / app / assets / javascripts / views / scrolls / play.js.coffee
index 0b2e0ec..5dfdd63 100644 (file)
@@ -152,41 +152,45 @@ class Pettanr.Views.Scroll.PlayModule.Panel extends Pettanr.View
   render: () ->\r
     this.$el.html('')\r
     @panel = @panel.play() # retake panel for 'with_elements' mode\r
-    @panel.fetch({cache: true}).done =>\r
-      @panel.attributes = @panel.decoded_attributes()\r
-      body = new Pettanr.Views.Scroll.PlayModule.PanelBody({\r
-        panel: @panel\r
-      })\r
-      @footer_switch = new Pettanr.Views.Scroll.PlayModule.FooterSwitch({\r
-        scroll_panel: @scroll_panel,\r
-        panel: @panel\r
-      })\r
-      @listenTo(@footer_switch, 'click', @click_footer_switch)\r
-      move_to = new Tag.A({\r
-        attr: {href: '/' + @scroll_panel.edit_url()},\r
-        content: I18n.t('scroll_panels.player.move_to')\r
-      })\r
-      @insert_point = new Pettanr.Views.Scroll.PlayModule.InsertPoint({\r
-        class_name: 'insert-point', content: move_to.render().el\r
-      })\r
-      @footer = new Pettanr.Views.Scroll.PlayModule.Footer({\r
-        scroll: @scroll,\r
-        scroll_panel: @scroll_panel,\r
-        panel: @panel,\r
-      })\r
-      @listenTo(move_to, 'click', @click_move_to)\r
-      @listenTo(@footer, 'click:panel', @click_show)\r
-      @listenTo(@footer, 'click:author', @click_author)\r
-      @listenTo(@footer, 'click:insert', @click_insert)\r
-      @listenTo(@footer, 'click:move', @click_move)\r
-      @listenTo(@footer, 'click:edit', @click_edit)\r
-      @listenTo(@footer, 'click:destroy', @click_destroy)\r
-      this.$el.append(@insert_point.clear().el)\r
-      @append_rb()\r
-      this.$el.append(body.render().el)\r
-      this.$el.append(@footer_switch.render().el)\r
-      this.$el.append(@footer.render().el)\r
-      @trigger('ready', @panel)\r
+    @panel.fetch({\r
+      success: (model, response, opt) => \r
+        @panel.attributes = @panel.decoded_attributes()\r
+        body = new Pettanr.Views.Scroll.PlayModule.PanelBody({\r
+          panel: @panel\r
+        })\r
+        @footer_switch = new Pettanr.Views.Scroll.PlayModule.FooterSwitch({\r
+          scroll_panel: @scroll_panel,\r
+          panel: @panel\r
+        })\r
+        @listenTo(@footer_switch, 'click', @click_footer_switch)\r
+        move_to = new Tag.A({\r
+          attr: {href: '/' + @scroll_panel.edit_url()},\r
+          content: I18n.t('scroll_panels.player.move_to')\r
+        })\r
+        @insert_point = new Pettanr.Views.Scroll.PlayModule.InsertPoint({\r
+          class_name: 'insert-point', content: move_to.render().el\r
+        })\r
+        @footer = new Pettanr.Views.Scroll.PlayModule.Footer({\r
+          scroll: @scroll,\r
+          scroll_panel: @scroll_panel,\r
+          panel: @panel,\r
+        })\r
+        @listenTo(move_to, 'click', @click_move_to)\r
+        @listenTo(@footer, 'click:panel', @click_show)\r
+        @listenTo(@footer, 'click:author', @click_author)\r
+        @listenTo(@footer, 'click:insert', @click_insert)\r
+        @listenTo(@footer, 'click:move', @click_move)\r
+        @listenTo(@footer, 'click:edit', @click_edit)\r
+        @listenTo(@footer, 'click:destroy', @click_destroy)\r
+        this.$el.append(@insert_point.clear().el)\r
+        @append_rb()\r
+        this.$el.append(body.render().el)\r
+        this.$el.append(@footer_switch.render().el)\r
+        this.$el.append(@footer.render().el)\r
+        @trigger('ready', @panel)\r
+      error: (item, response, opt) =>\r
+        @open_error_dialog(response, opt)\r
+    })\r
     this\r
   \r
   hide: () ->\r
@@ -310,6 +314,7 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Pettanr.View
       scroll: @binder, scroll_panel: scroll_panel,\r
     })\r
     @listenTo(panel_view, 'ready', @ready)\r
+    @listenTo(panel_view, 'http_get', @http_get)\r
     @listenTo(panel_view, 'click:insert', @click_insert)\r
     @listenTo(panel_view, 'click:move', @click_move)\r
     @listenTo(panel_view, 'click:destroy', @click_destroy)\r
@@ -320,6 +325,9 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Pettanr.View
   ready: (panel) ->\r
     this.credits.push(panel.licensed_pictures())\r
   \r
+  http_get: (url) ->\r
+    @trigger('http_get', url)\r
+  \r
   click_insert: (panel_view = null) ->\r
     @dialog = new Editor.Player.PanelInsertDialog({\r
       parent: this, binder: @binder, target_model: Pettanr.ScrollPanel,\r
@@ -482,7 +490,7 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Pettanr.View
   render: () ->\r
     this.$el.html('')\r
     # paginate(@pager)\r
-    credits = new Pettanr.View.Credits({parent: this})\r
+    credits = new Pettanr.View.Credits(this, {icon: true})\r
     @panels = new Pettanr.Views.Scroll.PlayModule.Panels({\r
       parent: this,\r
       binder: @binder,\r
@@ -508,11 +516,37 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Pettanr.View
     @append_rb()\r
     this\r
   \r
-  # true: empty scroll or has not next page\r
   is_appendable: () ->\r
-    if @pager and !@pager.hasNextPage()\r
+    return true if _.isEmpty(@items)\r
+    if @pager and @pager.hasNextPage()\r
       false\r
     else\r
+      this.$el.html('')\r
+      # paginate(@pager)\r
+      credits = new Pettanr.View.Credits(this, {icon: true})\r
+      @panels = new Pettanr.Views.Scroll.PlayModule.Panels({\r
+        parent: this,\r
+        binder: @binder,\r
+        items: @items,\r
+        credits: credits,\r
+      })\r
+      @listenTo(credits, 'click:credit:icon', @click_credit_icon)\r
+      @listenTo(@panels, 'http_get', @http_get)\r
+      @listenTo(@panels, 'click:insert', @click_insert)\r
+      @listenTo(@panels, 'click:move', @click_move)\r
+      @listenTo(@panels, 'dialog:close', @close_dialog)\r
+      @listenTo(@pager, 'page', @continue)\r
+      this.$el.append(@panels.render().el)\r
+      @append_rb()\r
+      @appender = new Pettanr.Views.Scroll.PlayModule.Append({\r
+      })\r
+      @listenTo(@appender, 'click', @click_append)\r
+      this.$el.append(@appender.render().el)\r
+      if !@pager.hasNextPage()\r
+        @appender.enable()\r
+      this.$el.append(@pager.render().el)\r
+      this.$el.append(credits.render().el)\r
+      @append_rb()\r
       true\r
   \r
   click_credit_icon: (item) ->\r
@@ -521,6 +555,9 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Pettanr.View
   click_append: () ->\r
     @panels.click_insert()\r
   \r
+  http_get: (url) ->\r
+    @trigger('http_get', url)\r
+  \r
   click_insert: (dialog) ->\r
     @appender.hide()\r
     @trigger('click:insert', dialog)\r