OSDN Git Service

fix: fetch err
authoryasushiito <yas@pen-chan.jp>
Thu, 20 Aug 2015 02:07:46 +0000 (11:07 +0900)
committeryasushiito <yas@pen-chan.jp>
Thu, 20 Aug 2015 02:07:46 +0000 (11:07 +0900)
22 files changed:
app/assets/javascripts/controllers.js.coffee
app/assets/javascripts/controllers/comics.js.coffee
app/assets/javascripts/controllers/folders.js.coffee
app/assets/javascripts/controllers/panels.js.coffee
app/assets/javascripts/controllers/scrolls.js.coffee
app/assets/javascripts/controllers/sheets.js.coffee
app/assets/javascripts/controllers/stories.js.coffee
app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee
app/assets/javascripts/models/panel.js.coffee
app/assets/javascripts/peta/element_nestable_content.js.coffee
app/assets/javascripts/peta/item.js.coffee
app/assets/javascripts/pettanr/cache.js.coffee
app/assets/javascripts/view.js.coffee
app/assets/javascripts/view/layout.js.coffee
app/assets/javascripts/views/authors/show.js.coffee
app/assets/javascripts/views/balloons/show.js.coffee
app/assets/javascripts/views/ground_colors/show.js.coffee
app/assets/javascripts/views/ground_pictures/show.js.coffee
app/assets/javascripts/views/panel_pictures/show.js.coffee
app/assets/javascripts/views/scrolls/play.js.coffee
app/assets/javascripts/views/speech_balloons/show.js.coffee
app/assets/javascripts/views/speeches/show.js.coffee

index 2f16137..79794b4 100644 (file)
@@ -66,6 +66,9 @@ class Pettanr.AppController
     @set_model()\r
     retriever = new Pettanr.Cache.Retriever(@my_model_class, @params['id'])\r
     @listenTo(retriever, 'retrieve', @render_edit)\r
+    @listenTo(retriever, 'fail', (response, opt) =>\r
+      @trigger('fail', response, opt)\r
+    )\r
     retriever.edit(options)\r
   \r
   render_edit: (@item) ->\r
index 658bce5..6619587 100644 (file)
@@ -48,6 +48,8 @@ class Pettanr.ComicsController extends Pettanr.AppController
         })\r
         show.render()\r
         @trigger('ready', show)\r
+      fail: (response, opt) =>\r
+        @trigger('fail', response, opt)\r
     })\r
     @trigger('done', @params)\r
   \r
index 85b3b07..807d856 100644 (file)
@@ -10,6 +10,8 @@ class Pettanr.FoldersController extends Pettanr.AppController
     Pettanr.Folder.Root.retrieve(null, this, {\r
       success: (@item) => \r
         @children_html()\r
+      fail: (response, opt) => \r
+        @trigger('fail', response, opt)\r
       force: true\r
     })\r
   \r
@@ -21,6 +23,8 @@ class Pettanr.FoldersController extends Pettanr.AppController
     folder.retrieve(this, {\r
       success: (@item) => \r
         @render_show()\r
+      fail: (response, opt) => \r
+        @trigger('fail', response, opt)\r
       force: true\r
     })\r
   \r
@@ -41,15 +45,19 @@ class Pettanr.FoldersController extends Pettanr.AppController
   children_html: () -> \r
     @trigger('title', @params, @item.get('name'))\r
     collection = new Pettanr.Folder.Children({id: @item.get('id')})\r
-    collection.fetch({cache: true}).done =>\r
-      filer = new Locmare.Filer({\r
-        item_name: 'folder', \r
-        items: collection.models, \r
-        pager: null, \r
-      })\r
-      filer.render()\r
-      @trigger('ready', filer)\r
-      @trigger('done', @params)\r
+    collection.fetch({\r
+      success: (models, response, opt) =>\r
+        filer = new Locmare.Filer({\r
+          item_name: 'folder', \r
+          items: collection.models, \r
+          pager: null, \r
+        })\r
+        filer.render()\r
+        @trigger('ready', filer)\r
+        @trigger('done', @params)\r
+      error: (item, response, opt) =>\r
+        @trigger('fail', response, opt)\r
+    })\r
   \r
   count: () ->\r
   \r
index e143e72..1b68d11 100644 (file)
@@ -37,15 +37,20 @@ class Pettanr.PanelsController extends Pettanr.AppController
   \r
   show_html: () -> \r
     @item = @item.play() # retake panel for 'with_elements' mode\r
-    @item.fetch({cache: false}).done =>\r
-      @item.attributes = @item.decoded_attributes()\r
-      @trigger('title', @params, @item.get('caption'))\r
-      show = new Pettanr.Views.Panel.Show(@item, {\r
-        spot: null\r
-      })\r
-      show.render()\r
-      @trigger('ready', show)\r
-      @trigger('done', @params)\r
+    @item.fetch({\r
+      cache: false\r
+      success: (@parent_item, response, opt) =>\r
+        @item.attributes = @item.decoded_attributes()\r
+        @trigger('title', @params, @item.get('caption'))\r
+        show = new Pettanr.Views.Panel.Show(@item, {\r
+          spot: null\r
+        })\r
+        show.render()\r
+        @trigger('ready', show)\r
+        @trigger('done', @params)\r
+      error: (item, response, opt) =>\r
+        @trigger('fail', response, opt)\r
+    })\r
   \r
   count: () ->\r
   \r
@@ -71,6 +76,8 @@ class Pettanr.PanelsController extends Pettanr.AppController
       success: (@item) ->\r
         @item.boosts 'post'\r
         @render_form()\r
+      fail: (response, opt) ->\r
+        @trigger('fail', response, opt)\r
     })\r
   \r
   render_form: () ->\r
index 739db3f..d6fc839 100644 (file)
@@ -51,6 +51,8 @@ class Pettanr.ScrollsController extends Pettanr.AppController
         @listenTo(show, 'dialog:close', @close_dialog)\r
         show.render()\r
         @trigger('ready', show)\r
+      fail: (response, opt) =>\r
+        @trigger('fail', response, opt)\r
     })\r
     @trigger('done', @params)\r
   \r
index 56c030a..e3b1aa4 100644 (file)
@@ -51,6 +51,8 @@ class Pettanr.SheetsController extends Pettanr.AppController
         })\r
         show.render()\r
         @trigger('ready', show)\r
+      fail: (response, opt) =>\r
+        @trigger('fail', response, opt)\r
     })\r
     @trigger('done', @params)\r
   \r
index f292605..8f8cc23 100644 (file)
@@ -53,6 +53,8 @@ class Pettanr.StoriesController extends Pettanr.AppController
         })\r
         show.render()\r
         @trigger('ready', show)\r
+      fail: (response, opt) =>\r
+        @trigger('fail', response, opt)\r
     })\r
     @trigger('done', @params)\r
   \r
index 50bc6b9..ad6789f 100644 (file)
@@ -11,6 +11,8 @@ class Locmare.ProfilerModule.AssociationModule.BelongsTo extends Pettanr.View
       success: (@parent_item) =>\r
         @set_filer()\r
         @render()\r
+      fail: (response, opt) =>\r
+        @open_error_dialog(response, opt)\r
     })\r
     this\r
   \r
index fec6673..976cd44 100644 (file)
@@ -78,9 +78,13 @@ class Pettanr.Panel.Play extends Pettanr.Panel
 class Pettanr.Panel.Edit extends Pettanr.Panel.Play\r
   \r
   load: (options) ->\r
-    @fetch().done =>\r
-      @attributes = @decoded_attributes()\r
-      @load_elements(options)\r
+    @fetch({\r
+      success: (model, response, opt) => \r
+        @attributes = @decoded_attributes()\r
+        @load_elements(options)\r
+      error: (item, response, opt) =>\r
+        options.fail.call(options.context, response, opt)\r
+    })\r
   \r
   save: (attrs) ->\r
     @url = @default_url()\r
index 2e4c392..43c61ea 100644 (file)
@@ -37,8 +37,12 @@ class Peta.ElementNestableContent extends Peta.Content
       options.success.call(options.context, this)\r
       return\r
     item = items.shift()\r
-    item.fetch().done =>\r
-      @_load_elements(items, options)\r
+    item.fetch({\r
+      success: (model, response, opt) => \r
+        @_load_elements(items, options)\r
+      error: (item, response, opt) =>\r
+        options.fail.call(options.context, response, opt)\r
+    })\r
   \r
   decoded_attributes: () ->\r
     attributes = {}\r
index b5e54b8..f5fa53b 100644 (file)
@@ -187,6 +187,9 @@ class Peta.Item extends Backbone.Model
     @listenTo(retriever, 'retrieve', (item) =>\r
       options.success.call(context, item)\r
     )\r
+    @listenTo(retriever, 'fail', (response, opt) =>\r
+      options.fail.call(context, response, opt)\r
+    )\r
     retriever.retrieve()\r
   \r
   get_child: (has_one_name, context, options = null) ->\r
@@ -263,7 +266,7 @@ class Peta.Item extends Backbone.Model
     )\r
     @listenTo(retriever, 'fail', (response, opt) =>\r
       callback = options.fail\r
-      callback.call(context, response, options)\r
+      callback.call(context, response, opt)\r
     )\r
     retriever.retrieve(options.force)\r
   \r
index 8a6118c..7d93922 100644 (file)
@@ -60,8 +60,12 @@ class Pettanr.Cache
     #item\r
   \r
   sync: (item) ->\r
-    item.fetch().done =>\r
-      item.expire_time.setTime(Date.now() + 10 * 60 * 1000)\r
+    item.fetch({\r
+      success: (model, response, opt) =>\r
+        item.expire_time.setTime(Date.now() + 10 * 60 * 1000)\r
+      error: (model, response, opt) =>\r
+        @trigger('fail', response, opt)\r
+    })\r
   \r
 class Pettanr.Cache.Retriever\r
   \r
@@ -91,16 +95,20 @@ class Pettanr.Cache.Retriever
       @trigger('retrieve', empty_item)\r
   \r
   retrieve_force: (item) ->\r
-    item.fetch().done =>\r
-      @trigger('retrieve', item)\r
+    item.fetch({\r
+      success: (model, response, opt) =>\r
+        @trigger('retrieve', item)\r
+      error: (model, response, opt) =>\r
+        @trigger('fail', response, opt)\r
+    })\r
   \r
   edit: (options = {}) ->\r
     empty_item = new @model({id: @id})\r
     item = empty_item.hold()\r
-    if options.with_elements\r
-      item = item.with_elements()\r
-    item.fetch().done =>\r
-      if options.with_elements\r
-        item.attributes = item.replaced_attributes({hold: true})\r
-      @trigger('retrieve', item)\r
+    item.fetch({\r
+      success: (model, response, opt) =>\r
+        @trigger('retrieve', item)\r
+      error: (model, response, opt) =>\r
+        @trigger('fail', response, opt)\r
+    })\r
   \r
index c652f3d..f1a8a4e 100644 (file)
@@ -23,6 +23,22 @@ class Pettanr.View extends Backbone.View
     options.content = content\r
     new Tag.Span(options)\r
   \r
+  open_error_dialog: (response, options) ->\r
+    error_dialog = new Editor.Error.Dialog({parent: this})\r
+    this.$el.append(error_dialog.render().el)\r
+    error_dialog.$el.dialog({\r
+      autoOpen: false,\r
+      resizable: false,\r
+      width: 500, \r
+      height: 600,\r
+      modal: true,\r
+      buttons: {\r
+        close: () ->\r
+          $(@).dialog('close')\r
+      }\r
+    })\r
+    error_dialog.start(response, options)\r
+  \r
   @replace_empty: (caption) ->\r
     if Pettanr.is_blank(caption)\r
       empty = new Pettanr.View.EmptyDiv()\r
index 02a4dde..36d9e26 100644 (file)
@@ -39,9 +39,6 @@ class Pettanr.View.Layout.Sns extends Pettanr.View.Layout.Base
     })\r
     this\r
   \r
-  error_dialog_close: () ->\r
-    @error_dialog.stop()\r
-  \r
   init_operators: (user) ->\r
     author = new Pettanr.Author(user.get('author')) if user.get('author')\r
     artist = new Pettanr.Artist(user.get('artist')) if user.get('artist')\r
index 27fa31c..b3c06c8 100644 (file)
@@ -43,14 +43,18 @@ class Pettanr.Views.Author.ShowModule.PanelsBody extends Pettanr.View
         pager = Locmare.ListGroupModule.LibModule.Pager.factory(@list.page_status, params)\r
         _.each items, (panel) =>\r
           panel = panel.play() # retake panel for 'with_elements' mode\r
-          panel.fetch({cache: false}).done =>\r
-            panel.attributes = panel.decoded_attributes()\r
-            body = new Pettanr.Views.Panel.Body({\r
-              panel: panel,\r
-              spot: null\r
-            })\r
-            @trigger('ready', panel)\r
-            this.$el.append(body.render().el)\r
+          panel.fetch({\r
+            success: (model, response, opt) => \r
+              panel.attributes = panel.decoded_attributes()\r
+              body = new Pettanr.Views.Panel.Body({\r
+                panel: panel,\r
+                spot: null\r
+              })\r
+              @trigger('ready', panel)\r
+              this.$el.append(body.render().el)\r
+            error: (item, response, opt) =>\r
+              @open_error_dialog(response, opt)\r
+          })\r
     })\r
     this\r
   \r
index a02f82c..d87cd8f 100644 (file)
@@ -10,19 +10,23 @@ class Pettanr.Views.Balloon.Show extends Pettanr.View.Show
         @speech_balloon.get_parent('panel', this, {\r
           success: (item) =>\r
             @panel = item.play()\r
-            @panel.fetch().done =>\r
-              @panel.attributes = @panel.decoded_attributes()\r
-              @authored_by = @panel.authored_by()\r
-              @body = new Pettanr.Views.Panel.Body({\r
-                panel: @panel,\r
-                spot: @item\r
-              })\r
-              @listenTo(@header, 'click:pick', @click_pick)\r
-              @listenTo(@authored_by, 'click', @click_authored_by)\r
-              this.$el.append(@header.render().el)\r
-              this.$el.append(@authored_by.render().el)\r
-              this.$el.append(@body.render().el)\r
-              @add_credits()\r
+            @panel.fetch({\r
+              success: (model, response, opt) => \r
+                @panel.attributes = @panel.decoded_attributes()\r
+                @authored_by = @panel.authored_by()\r
+                @body = new Pettanr.Views.Panel.Body({\r
+                  panel: @panel,\r
+                  spot: @item\r
+                })\r
+                @listenTo(@header, 'click:pick', @click_pick)\r
+                @listenTo(@authored_by, 'click', @click_authored_by)\r
+                this.$el.append(@header.render().el)\r
+                this.$el.append(@authored_by.render().el)\r
+                this.$el.append(@body.render().el)\r
+                @add_credits()\r
+              error: (item, response, opt) =>\r
+                @open_error_dialog(response, opt)\r
+            })\r
         })\r
     })\r
     this\r
index 7e8b6b3..6baef01 100644 (file)
@@ -8,19 +8,23 @@ class Pettanr.Views.GroundColor.Show extends Pettanr.View.Show
     @item.get_parent('panel', this, {\r
       success: (item) =>\r
         @panel = item.play()\r
-        @panel.fetch().done =>\r
-          @panel.attributes = @panel.decoded_attributes()\r
-          @authored_by = @panel.authored_by()\r
-          @body = new Pettanr.Views.Panel.Body({\r
-            panel: @panel,\r
-            spot: @item\r
-          })\r
-          @listenTo(@header, 'click:pick', @click_pick)\r
-          @listenTo(@authored_by, 'click', @click_authored_by)\r
-          this.$el.append(@header.render().el)\r
-          this.$el.append(@authored_by.render().el)\r
-          this.$el.append(@body.render().el)\r
-          @add_credits()\r
+        @panel.fetch({\r
+          success: (model, response, opt) => \r
+            @panel.attributes = @panel.decoded_attributes()\r
+            @authored_by = @panel.authored_by()\r
+            @body = new Pettanr.Views.Panel.Body({\r
+              panel: @panel,\r
+              spot: @item\r
+            })\r
+            @listenTo(@header, 'click:pick', @click_pick)\r
+            @listenTo(@authored_by, 'click', @click_authored_by)\r
+            this.$el.append(@header.render().el)\r
+            this.$el.append(@authored_by.render().el)\r
+            this.$el.append(@body.render().el)\r
+            @add_credits()\r
+          error: (item, response, opt) =>\r
+            @open_error_dialog(response, opt)\r
+        })\r
     })\r
     this\r
   \r
index 4fad461..206d513 100644 (file)
@@ -8,19 +8,23 @@ class Pettanr.Views.GroundPicture.Show extends Pettanr.View.Show
     @item.get_parent('panel', this, {\r
       success: (item) =>\r
         @panel = item.play()\r
-        @panel.fetch().done =>\r
-          @panel.attributes = @panel.decoded_attributes()\r
-          @authored_by = @panel.authored_by()\r
-          @body = new Pettanr.Views.Panel.Body({\r
-            panel: @panel,\r
-            spot: @item\r
-          })\r
-          @listenTo(@header, 'click:pick', @click_pick)\r
-          @listenTo(@authored_by, 'click', @click_authored_by)\r
-          this.$el.append(@header.render().el)\r
-          this.$el.append(@authored_by.render().el)\r
-          this.$el.append(@body.render().el)\r
-          @add_credits()\r
+        @panel.fetch({\r
+          success: (model, response, opt) => \r
+            @panel.attributes = @panel.decoded_attributes()\r
+            @authored_by = @panel.authored_by()\r
+            @body = new Pettanr.Views.Panel.Body({\r
+              panel: @panel,\r
+              spot: @item\r
+            })\r
+            @listenTo(@header, 'click:pick', @click_pick)\r
+            @listenTo(@authored_by, 'click', @click_authored_by)\r
+            this.$el.append(@header.render().el)\r
+            this.$el.append(@authored_by.render().el)\r
+            this.$el.append(@body.render().el)\r
+            @add_credits()\r
+          error: (item, response, opt) =>\r
+            @open_error_dialog(response, opt)\r
+        })\r
     })\r
     this\r
   \r
index f539a5d..e2ec28a 100644 (file)
@@ -8,19 +8,23 @@ class Pettanr.Views.PanelPicture.Show extends Pettanr.View.Show
     @item.get_parent('panel', this, {\r
       success: (item) =>\r
         @panel = item.play()\r
-        @panel.fetch().done =>\r
-          @panel.attributes = @panel.decoded_attributes()\r
-          @authored_by = @panel.authored_by()\r
-          @body = new Pettanr.Views.Panel.Body({\r
-            panel: @panel,\r
-            spot: @item\r
-          })\r
-          @listenTo(@header, 'click:pick', @click_pick)\r
-          @listenTo(@authored_by, 'click', @click_authored_by)\r
-          this.$el.append(@header.render().el)\r
-          this.$el.append(@authored_by.render().el)\r
-          this.$el.append(@body.render().el)\r
-          @add_credits()\r
+        @panel.fetch({\r
+          success: (model, response, opt) => \r
+            @panel.attributes = @panel.decoded_attributes()\r
+            @authored_by = @panel.authored_by()\r
+            @body = new Pettanr.Views.Panel.Body({\r
+              panel: @panel,\r
+              spot: @item\r
+            })\r
+            @listenTo(@header, 'click:pick', @click_pick)\r
+            @listenTo(@authored_by, 'click', @click_authored_by)\r
+            this.$el.append(@header.render().el)\r
+            this.$el.append(@authored_by.render().el)\r
+            this.$el.append(@body.render().el)\r
+            @add_credits()\r
+          error: (item, response, opt) =>\r
+            @open_error_dialog(response, opt)\r
+        })\r
     })\r
     this\r
   \r
index 85dcfcd..b9e62fd 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
index 5aa6147..37874b8 100644 (file)
@@ -8,18 +8,22 @@ class Pettanr.Views.SpeechBalloon.Show extends Pettanr.View.Show
     @item.get_parent('panel', this, {\r
       success: (item) =>\r
         @panel = item.play()\r
-        @panel.fetch().done =>\r
-          @panel.attributes = @panel.decoded_attributes()\r
-          @authored_by = @panel.authored_by()\r
-          @body = new Pettanr.Views.Panel.Body({\r
-            panel: @panel,\r
-            spot: @item\r
-          })\r
-          @listenTo(@authored_by, 'click', @click_authored_by)\r
-          this.$el.append(@header.render().el)\r
-          this.$el.append(@authored_by.render().el)\r
-          this.$el.append(@body.render().el)\r
-          @add_credits()\r
+        @panel.fetch({\r
+          success: (model, response, opt) => \r
+            @panel.attributes = @panel.decoded_attributes()\r
+            @authored_by = @panel.authored_by()\r
+            @body = new Pettanr.Views.Panel.Body({\r
+              panel: @panel,\r
+              spot: @item\r
+            })\r
+            @listenTo(@authored_by, 'click', @click_authored_by)\r
+            this.$el.append(@header.render().el)\r
+            this.$el.append(@authored_by.render().el)\r
+            this.$el.append(@body.render().el)\r
+            @add_credits()\r
+          error: (item, response, opt) =>\r
+            @open_error_dialog(response, opt)\r
+        })\r
     })\r
     this\r
   \r
index 7b6d5f9..2ceb7b0 100644 (file)
@@ -10,19 +10,25 @@ class Pettanr.Views.Speech.Show extends Pettanr.View.Show
         @speech_balloon.get_parent('panel', this, {\r
           success: (item) =>\r
             @panel = item.play()\r
-            @panel.fetch().done =>\r
-              @panel.attributes = @panel.decoded_attributes()\r
-              @authored_by = @panel.authored_by()\r
-              @body = new Pettanr.Views.Panel.Body({\r
-                panel: @panel,\r
-                spot: @item\r
-              })\r
-              @listenTo(@header, 'click:pick', @click_pick)\r
-              @listenTo(@authored_by, 'click', @click_authored_by)\r
-              this.$el.append(@header.render().el)\r
-              this.$el.append(@authored_by.render().el)\r
-              this.$el.append(@body.render().el)\r
-              @add_credits()\r
+            @panel.fetch({\r
+              success: (model, response, opt) => \r
+                @panel.attributes = @panel.decoded_attributes()\r
+                @authored_by = @panel.authored_by()\r
+                @body = new Pettanr.Views.Panel.Body({\r
+                  panel: @panel,\r
+                  spot: @item\r
+                })\r
+                @listenTo(@header, 'click:pick', @click_pick)\r
+                @listenTo(@authored_by, 'click', @click_authored_by)\r
+                this.$el.append(@header.render().el)\r
+                this.$el.append(@authored_by.render().el)\r
+                this.$el.append(@body.render().el)\r
+                @add_credits()\r
+              error: (item, response, opt) =>\r
+                @open_error_dialog(response, opt)\r
+            })\r
+          fail: (response, opt) =>\r
+            @open_error_dialog(response, opt)\r
         })\r
     })\r
     this\r