OSDN Git Service

fix:
authoryasushiito <yas@pen-chan.jp>
Sun, 29 Mar 2015 00:16:33 +0000 (09:16 +0900)
committeryasushiito <yas@pen-chan.jp>
Sun, 29 Mar 2015 00:16:33 +0000 (09:16 +0900)
27 files changed:
app/assets/javascripts/addons/circle_speech_balloons/init.js.coffee
app/assets/javascripts/addons/plain_speech_balloons/init.js.coffee
app/assets/javascripts/addons/square_speech_balloons/init.js.coffee
app/assets/javascripts/controllers.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item.js.coffee
app/assets/javascripts/locmare/form/field/helper/tail_angle.js.coffee
app/assets/javascripts/models/ground_color.js.coffee
app/assets/javascripts/models/ground_picture.js.coffee
app/assets/javascripts/models/panel_picture.js.coffee
app/assets/javascripts/models/speech_balloon.js.coffee
app/assets/javascripts/peta/item.js.coffee
app/assets/javascripts/views/balloons/element.js.coffee
app/assets/javascripts/views/balloons/form.js.coffee [new file with mode: 0644]
app/assets/javascripts/views/balloons/show.js.coffee
app/assets/javascripts/views/comics/show.js.coffee
app/assets/javascripts/views/common.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/panels/show.js.coffee
app/assets/javascripts/views/scrolls/play.js.coffee
app/assets/javascripts/views/scrolls/show.js.coffee
app/assets/javascripts/views/sheets/show.js.coffee
app/assets/javascripts/views/show.js.coffee
app/assets/javascripts/views/speech_balloons/show.js.coffee
app/assets/javascripts/views/speeches/show.js.coffee
app/assets/javascripts/views/stories/show.js.coffee

index 51e22d8..1110032 100644 (file)
@@ -110,6 +110,20 @@ class Pettanr.CircleSpeechBalloon.BalloonModule
     })\r
     @select_system_picture()\r
   \r
     })\r
     @select_system_picture()\r
   \r
+  hoge_templates: () ->\r
+    if !@templates.speech_balloon_template\r
+      empty_item = new Pettanr.SpeechBalloonTemplate({id: @get('speech_balloon_template_id')})\r
+      item = Pettanr.cache.restore(empty_item)\r
+      if item\r
+        # got cached item\r
+        @templates.speech_balloon_template = item\r
+      else\r
+        # built empty item\r
+        item = empty_item\r
+        item.fetch().done =>\r
+          Pettanr.cache.store(item)\r
+        @templates.speech_balloon_template = item\r
+  \r
   balloon_extend: () ->\r
     @new_balloon() if not @bex\r
     @bex\r
   balloon_extend: () ->\r
     @new_balloon() if not @bex\r
     @bex\r
@@ -128,17 +142,26 @@ class Pettanr.CircleSpeechBalloon.BalloonModule
     @parsed = @templates.speech_balloon_template.parsed_settings()\r
   \r
   select_system_picture: () ->\r
     @parsed = @templates.speech_balloon_template.parsed_settings()\r
   \r
   select_system_picture: () ->\r
-    tr = @get('r') % 360\r
-    tr = 360 + tr if tr < 0\r
-    offset = @r_step() / 2.0\r
-    idx = Pettanr.to_i(((tr + offset) % 360) / @r_step())\r
+    idx = @r_to_index(@round_r(@get('r')))\r
     sid = @parsed_settings()[Pettanr.to_s(idx)]['balloon']['system_picture_id']\r
     sid = @parsed_settings()[Pettanr.to_s(idx)]['balloon']['system_picture_id']\r
-    @set('system_picture_id', sid)\r
+    @set({system_picture_id: sid}, {silent: true})\r
     sid\r
   \r
   r_step: () ->\r
     @parsed_settings()['speech_balloon']['r_step']\r
   \r
     sid\r
   \r
   r_step: () ->\r
     @parsed_settings()['speech_balloon']['r_step']\r
   \r
+  # round 0 ~ 359\r
+  round_r: (r) ->\r
+    tr = r % 360\r
+    tr = 360 + tr if tr < 0\r
+    tr\r
+  \r
+  r_to_index: (round_r) ->\r
+    # 0 ~ 45 -> 22.5 ~ 66.5\r
+    offset = @r_step() / 2.0\r
+    # rounded index\r
+    Math.floor(((round_r + offset) % 360) / @r_step())\r
+  \r
 class Pettanr.CircleSpeechBalloon.SpeechModule\r
   supply_default: (templates) ->\r
     @templates = templates\r
 class Pettanr.CircleSpeechBalloon.SpeechModule\r
   supply_default: (templates) ->\r
     @templates = templates\r
index 37a8de0..529a487 100644 (file)
@@ -109,6 +109,20 @@ class Pettanr.PlainSpeechBalloon.BalloonModule
     })\r
     @select_system_picture()\r
   \r
     })\r
     @select_system_picture()\r
   \r
+  hoge_templates: () ->\r
+    if !@templates.speech_balloon_template\r
+      empty_item = new Pettanr.SpeechBalloonTemplate({id: @get('speech_balloon_template_id')})\r
+      item = Pettanr.cache.restore(empty_item)\r
+      if item\r
+        # got cached item\r
+        @templates.speech_balloon_template = item\r
+      else\r
+        # built empty item\r
+        item = empty_item\r
+        item.fetch().done =>\r
+          Pettanr.cache.store(item)\r
+        @templates.speech_balloon_template = item\r
+  \r
   balloon_extend: () ->\r
     @new_balloon() if not @bex\r
     @bex\r
   balloon_extend: () ->\r
     @new_balloon() if not @bex\r
     @bex\r
@@ -129,9 +143,15 @@ class Pettanr.PlainSpeechBalloon.BalloonModule
   select_system_picture: () ->\r
     s = @parsed_settings()['all']['balloon']\r
     sid = s['system_picture_id']\r
   select_system_picture: () ->\r
     s = @parsed_settings()['all']['balloon']\r
     sid = s['system_picture_id']\r
-    @set('system_picture_id', sid)\r
+    @set({system_picture_id: sid}, {silent: true})\r
     sid\r
   \r
     sid\r
   \r
+  #\r
+  # yasapp only methods\r
+  #\r
+  r_step: () ->\r
+    0\r
+  \r
 class Pettanr.PlainSpeechBalloon.SpeechModule\r
   supply_default: (templates) ->\r
     @templates = templates\r
 class Pettanr.PlainSpeechBalloon.SpeechModule\r
   supply_default: (templates) ->\r
     @templates = templates\r
index 07669f6..a9625a9 100644 (file)
@@ -110,6 +110,20 @@ class Pettanr.SquareSpeechBalloon.BalloonModule
     })\r
     @select_system_picture()\r
   \r
     })\r
     @select_system_picture()\r
   \r
+  hoge_templates: () ->\r
+    if !@templates.speech_balloon_template\r
+      empty_item = new Pettanr.SpeechBalloonTemplate({id: @get('speech_balloon_template_id')})\r
+      item = Pettanr.cache.restore(empty_item)\r
+      if item\r
+        # got cached item\r
+        @templates.speech_balloon_template = item\r
+      else\r
+        # built empty item\r
+        item = empty_item\r
+        item.fetch().done =>\r
+          Pettanr.cache.store(item)\r
+        @templates.speech_balloon_template = item\r
+  \r
   balloon_extend: () ->\r
     @new_balloon() if not @bex\r
     @bex\r
   balloon_extend: () ->\r
     @new_balloon() if not @bex\r
     @bex\r
@@ -130,9 +144,12 @@ class Pettanr.SquareSpeechBalloon.BalloonModule
   select_system_picture: () ->\r
     s = @parsed_settings()['all']['balloon']\r
     sid = s['system_picture_id']\r
   select_system_picture: () ->\r
     s = @parsed_settings()['all']['balloon']\r
     sid = s['system_picture_id']\r
-    @set('system_picture_id', sid)\r
+    @set({system_picture_id: sid}, {silent: true})\r
     sid\r
   \r
     sid\r
   \r
+  r_step: () ->\r
+    0\r
+  \r
 class Pettanr.SquareSpeechBalloon.SpeechModule\r
   supply_default: (templates) ->\r
     @templates = templates\r
 class Pettanr.SquareSpeechBalloon.SpeechModule\r
   supply_default: (templates) ->\r
     @templates = templates\r
index c972325..28a6879 100644 (file)
@@ -88,7 +88,6 @@ class Pettanr.AppController
   set_new: () ->\r
     @set_model()\r
     @item = new @my_model_class({id: @params['id']})\r
   set_new: () ->\r
     @set_model()\r
     @item = new @my_model_class({id: @params['id']})\r
-    @item.boosts 'post'\r
     # Backbone.Model has defaults property\r
     #@item.supply_default()\r
   \r
     # Backbone.Model has defaults property\r
     #@item.supply_default()\r
   \r
index 86884b4..7e8a034 100644 (file)
@@ -56,9 +56,8 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItem extends Backbone.Vi
     @filer().items\r
   \r
   add_pick: (target_model) ->\r
     @filer().items\r
   \r
   add_pick: (target_model) ->\r
-    @pick = new Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.Pick.factory({\r
-      parent: this,\r
-      target_model: target_model\r
+    @pick = new Pettanr.Views.Common.PickIcon({\r
+      name: target_model.pick_type(@item_name()), class_name: 'filer-item-pick'\r
     })\r
     @listenTo(@pick, 'click', @click_pick)\r
     @render()\r
     })\r
     @listenTo(@pick, 'click', @click_pick)\r
     @render()\r
@@ -90,34 +89,14 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItem extends Backbone.Vi
   \r
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule\r
 \r
   \r
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule\r
 \r
-\r
-class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.Pick extends Backbone.View\r
-  tagName: 'div'\r
-  \r
-  @factory: (options) ->\r
-    @target_model = options.target_model\r
-    @parent = options.parent\r
-    filer = @parent.filer()\r
-    klass = if filer.item_name == @target_model.item_name()\r
-      Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Inspire\r
-    else if @target_model.is_traceable(filer.item_name)\r
-      Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Trace\r
-    else if filer.item_name == @target_model.pick_item_name()\r
-      Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Pick\r
-    else\r
-      Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.None\r
-    new klass({\r
-      target_model: @target_model\r
-    })\r
-  \r
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule\r
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule\r
-class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Base extends Backbone.View\r
+class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Icon extends Backbone.View\r
   tagName: 'div'\r
   \r
   initialize: (options) ->\r
   tagName: 'div'\r
   \r
   initialize: (options) ->\r
-    @target_model = options.target_model\r
+    @name = options.name\r
     @el.className = 'filer-item-pick'\r
     @el.className = 'filer-item-pick'\r
-    @button = @set_button()\r
+    @button = new Pettanr.Views.Common.PickIcon({name: @name})\r
   \r
   render: () ->\r
     this.$el.html('')\r
   \r
   render: () ->\r
     this.$el.html('')\r
@@ -125,50 +104,6 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Ba
     this.$el.append(@button.render().el)\r
     this\r
   \r
     this.$el.append(@button.render().el)\r
     this\r
   \r
-  name: () ->\r
-    'none'\r
-  \r
-  icon: () ->\r
-    new Pettanr.Image.SymbolImg({attr: {src: '/images/' + @name() + '.gif'}})\r
-  \r
-  linked_icon: () ->\r
-    new Tag.A({\r
-      attr: {href: '#'},\r
-      content: @icon().render().el\r
-    })\r
-  \r
   click: () ->\r
     @trigger('click', this)\r
   \r
   click: () ->\r
     @trigger('click', this)\r
   \r
-class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.None extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Base\r
-  \r
-  set_button: () ->\r
-    @button = @icon()\r
-  \r
-  name: () ->\r
-    'none'\r
-  \r
-class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Pick extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Base\r
-  \r
-  set_button: () ->\r
-    @button = @linked_icon()\r
-  \r
-  name: () ->\r
-    'pick'\r
-  \r
-class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Inspire extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Base\r
-  \r
-  set_button: () ->\r
-    @button = @linked_icon()\r
-  \r
-  name: () ->\r
-    'inspire'\r
-  \r
-class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Trace extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.PickModule.Base\r
-  \r
-  set_button: () ->\r
-    @button = @linked_icon()\r
-  \r
-  name: () ->\r
-    'trace'\r
-  \r
index 47d7176..b06b798 100644 (file)
@@ -10,11 +10,6 @@ class Locmare.FormModule.FieldModule.HelperModule.TailAngle extends Locmare.Form
     @listenTo(this, 'down', @down_click)\r
     @listenTo(this, 'up', @up_click)\r
     @listenTo(this, 'reset', @reset_click)\r
     @listenTo(this, 'down', @down_click)\r
     @listenTo(this, 'up', @up_click)\r
     @listenTo(this, 'reset', @reset_click)\r
-    @speech_balloon_template = new Pettanr.SpeechBalloonTemplate({\r
-      id: @field.item().get('speech_balloon_template_id')\r
-    })\r
-    @speech_balloon_template.fetch({cache: true}).done =>\r
-      @r_step = @_r_step()\r
   \r
   render: () ->\r
     @attr = {\r
   \r
   render: () ->\r
     @attr = {\r
@@ -28,70 +23,27 @@ class Locmare.FormModule.FieldModule.HelperModule.TailAngle extends Locmare.Form
     this\r
   \r
   refresh: () -> \r
     this\r
   \r
   refresh: () -> \r
-    @set_system_picture_id(@balloon_index())\r
   \r
   \r
-  settings: () ->\r
-    @speech_balloon_template.parsed_settings()\r
-  \r
-  _r_step: () ->\r
-    settings = @settings()\r
-    settings['speech_balloon']['r_step']\r
-  \r
-  system_picture_id: (idx) ->\r
-    settings = @settings()\r
-    settings[idx]['balloon']['system_picture_id']\r
+  r_step: () ->\r
+    @field.item().r_step()\r
   \r
   # balloon r helper\r
   \r
   \r
   # balloon r helper\r
   \r
-  balloon_next_index: (d) ->\r
-    r_val = @field.val()\r
-    v = parseInt(r_val) + @r_step * d\r
-    tr = v % 360\r
-    tr = 360 + tr if tr < 0\r
-    offset = @r_step / 2.0\r
-    idx = Math.floor(((tr + offset) % 360) / @r_step)\r
-    if idx == 0\r
-      ir = 0\r
-    else\r
-      if v < 0\r
-        ir = Math.floor(idx * @r_step) - 360\r
-      else\r
-        ir = Math.floor(idx * @r_step)\r
-    @field.set(ir)\r
-    @field.tag.$el.val(ir)\r
-    idx\r
-  \r
-  balloon_index: () ->\r
-    v = parseInt(@field.val())\r
-    tr = v % 360\r
-    tr = 360 + tr if tr < 0\r
-    offset = @r_step / 2.0\r
-    idx = Math.floor(((tr + offset) % 360) / @r_step)\r
-    idx\r
-  \r
-  refresh_balloon: (idx) ->\r
-    @set_system_picture_id(idx)\r
-  \r
-  set_system_picture_id: (idx) ->\r
-    sp_id = @system_picture_id(idx)\r
-    @field.item().set({\r
-      system_picture_id: sp_id\r
-    }, {silent: true})\r
-    sp_id\r
+  set_r: (r) ->\r
+    @field.tag.$el.val(r)\r
+    @field.change()\r
+  \r
+  r: () ->\r
+    parseInt(@field.val())\r
   \r
   down_click: () ->\r
   \r
   down_click: () ->\r
-    idx = @balloon_next_index(-1)\r
-    @refresh_balloon(idx)\r
-    @field.item().trigger('input:r')\r
+    @set_r(Math.floor(@r() - @r_step()))\r
   \r
   up_click: () ->\r
   \r
   up_click: () ->\r
-    idx = @balloon_next_index(1)\r
-    @refresh_balloon(idx)\r
-    @field.item().trigger('input:r')\r
+    @set_r(Math.floor(@r() + @r_step()))\r
   \r
   reset_click: () ->\r
   \r
   reset_click: () ->\r
-    @refresh_balloon(0)\r
-    @field.item().trigger('input:r')\r
+    @set_r(0)\r
   \r
 class Locmare.FormModule.FieldModule.HelperModule.TailAngleModule\r
 class Locmare.FormModule.FieldModule.HelperModule.TailAngleModule.Down extends Backbone.View\r
   \r
 class Locmare.FormModule.FieldModule.HelperModule.TailAngleModule\r
 class Locmare.FormModule.FieldModule.HelperModule.TailAngleModule.Down extends Backbone.View\r
index fc7ba8d..c4b8cd0 100644 (file)
@@ -18,15 +18,6 @@ class Pettanr.GroundColor extends Peta.Element
   @pick_item_name: () ->\r
     ''\r
   \r
   @pick_item_name: () ->\r
     ''\r
   \r
-  @pick_model: () ->\r
-    Manifest.item_name_to_model(@pick_item_name())\r
-  \r
-  @traceable_item_names: () ->\r
-    []\r
-  \r
-  @is_traceable: (item_name) ->\r
-    _.contains(@traceable_item_names(), item_name)\r
-  \r
   panel: (options = {}) ->\r
     new Pettanr.Panel({id: @get('panel_id')}, options)\r
   \r
   panel: (options = {}) ->\r
     new Pettanr.Panel({id: @get('panel_id')}, options)\r
   \r
index aba7d5e..2031d58 100644 (file)
@@ -20,15 +20,9 @@ class Pettanr.GroundPicture extends Peta.Element
   @pick_item_name: () ->\r
     'resource_picture'\r
   \r
   @pick_item_name: () ->\r
     'resource_picture'\r
   \r
-  @pick_model: () ->\r
-    Manifest.item_name_to_model(@pick_item_name())\r
-  \r
   @traceable_item_names: () ->\r
     ['panel_picture', 'picture']\r
   \r
   @traceable_item_names: () ->\r
     ['panel_picture', 'picture']\r
   \r
-  @is_traceable: (item_name) ->\r
-    _.contains(@traceable_item_names(), item_name)\r
-  \r
   trace_from_panel_picture: () ->\r
   \r
   trace_from_picture: () ->\r
   trace_from_panel_picture: () ->\r
   \r
   trace_from_picture: () ->\r
index 52b1fd0..db473bd 100644 (file)
@@ -14,15 +14,9 @@ class Pettanr.PanelPicture extends Peta.Element
   @pick_item_name: () ->\r
     'resource_picture'\r
   \r
   @pick_item_name: () ->\r
     'resource_picture'\r
   \r
-  @pick_model: () ->\r
-    Manifest.item_name_to_model(@pick_item_name())\r
-  \r
   @traceable_item_names: () ->\r
     ['ground_picture', 'picture']\r
   \r
   @traceable_item_names: () ->\r
     ['ground_picture', 'picture']\r
   \r
-  @is_traceable: (item_name) ->\r
-    _.contains(@traceable_item_names(), item_name)\r
-  \r
   trace_from_ground_picture: () ->\r
   \r
   trace_from_picture: () ->\r
   trace_from_ground_picture: () ->\r
   \r
   trace_from_picture: () ->\r
index 4d8e84b..ff3fc2c 100644 (file)
@@ -16,15 +16,9 @@ class Pettanr.SpeechBalloon extends Peta.Element
   @pick_item_name: () ->\r
     'speech_balloon_template'\r
   \r
   @pick_item_name: () ->\r
     'speech_balloon_template'\r
   \r
-  @pick_model: () ->\r
-    Manifest.item_name_to_model(@pick_item_name())\r
-  \r
   @traceable_item_names: () ->\r
     ['speech', 'balloon']\r
   \r
   @traceable_item_names: () ->\r
     ['speech', 'balloon']\r
   \r
-  @is_traceable: (item_name) ->\r
-    _.contains(@traceable_item_names(), item_name)\r
-  \r
   trace_from_speech: () ->\r
   \r
   trace_from_balloon: () ->\r
   trace_from_speech: () ->\r
   \r
   trace_from_balloon: () ->\r
index 22fe57a..3737f2e 100644 (file)
@@ -4,6 +4,7 @@ class Peta.Item extends Backbone.Model
     super(attr, options)\r
     @expire_time = options.expire_time\r
     @boosters = {}\r
     super(attr, options)\r
     @expire_time = options.expire_time\r
     @boosters = {}\r
+    @templates = {}\r
   \r
   @child_models: () ->\r
     @my_manifest().child_models()\r
   \r
   @child_models: () ->\r
     @my_manifest().child_models()\r
@@ -67,12 +68,6 @@ class Peta.Item extends Backbone.Model
   @path_name: (with_engine = false) ->\r
     @table_name()\r
   \r
   @path_name: (with_engine = false) ->\r
     @table_name()\r
   \r
-  @pickup_item_name: () ->\r
-    @item_name()\r
-  \r
-  @pickup_column_name: () ->\r
-    'id'\r
-  \r
   @find_boost_name: (column_name) ->\r
     @my_peta().find_boost_name column_name\r
   \r
   @find_boost_name: (column_name) ->\r
     @my_peta().find_boost_name column_name\r
   \r
@@ -105,15 +100,6 @@ class Peta.Item extends Backbone.Model
   path_name: (with_engine = false) ->\r
     @my_class().path_name(with_engine)\r
   \r
   path_name: (with_engine = false) ->\r
     @my_class().path_name(with_engine)\r
   \r
-  pickup_item_name: () ->\r
-    @my_class().pickup_item_name()\r
-  \r
-  pickup_column_name: () ->\r
-    @my_class().pickup_column_name()\r
-  \r
-  pickup_id: () ->\r
-    @get(pickup_column_name())\r
-  \r
   form_template: (with_engine = false) ->\r
     @path_name(with_engine) + '/form'\r
   \r
   form_template: (with_engine = false) ->\r
     @path_name(with_engine) + '/form'\r
   \r
@@ -144,6 +130,37 @@ class Peta.Item extends Backbone.Model
       return false if not operators.is_resource_reader()\r
     true\r
   \r
       return false if not operators.is_resource_reader()\r
     true\r
   \r
+  @pick_item_name: () ->\r
+    null\r
+  \r
+  @pick_model: () ->\r
+    Manifest.item_name_to_model(@pick_item_name())\r
+  \r
+  @traceable_item_names: () ->\r
+    []\r
+  \r
+  @is_traceable: (item_name) ->\r
+    _.contains(@traceable_item_names(), item_name)\r
+  \r
+  @is_picker_inspire: (item_name) ->\r
+    item_name == @item_name()\r
+  \r
+  @is_picker_trace: (item_name) ->\r
+    @is_traceable(item_name)\r
+  \r
+  @is_picker_pick: (item_name) ->\r
+    item_name == @pick_item_name()\r
+  \r
+  @pick_type: (item_name) ->\r
+    if @is_picker_inspire(item_name)\r
+      'inspire'\r
+    else if @is_picker_trace(item_name)\r
+      'trace'\r
+    else if @is_picker_pick(item_name)\r
+      'pick'\r
+    else\r
+      'none'\r
+  \r
   icon_view: (half) ->\r
     new Pettanr.Views[@my_class().singular()].Icon({item: this, half: half})\r
   \r
   icon_view: (half) ->\r
     new Pettanr.Views[@my_class().singular()].Icon({item: this, half: half})\r
   \r
index 9120280..e2e77a2 100644 (file)
@@ -43,7 +43,7 @@ class Pettanr.Views.Balloon.Element.Edit extends Pettanr.Views.Balloon.Element
   \r
   initialize: (options) ->\r
     super(options)\r
   \r
   initialize: (options) ->\r
     super(options)\r
-    @listenTo(@element, 'input:r', @input_r)\r
+    @listenTo(@element, 'input:system_picture_id', @input_r)\r
     @listenTo(@element, 'input:width', @resize)\r
     @listenTo(@element, 'input:height', @resize)\r
   \r
     @listenTo(@element, 'input:width', @resize)\r
     @listenTo(@element, 'input:height', @resize)\r
   \r
diff --git a/app/assets/javascripts/views/balloons/form.js.coffee b/app/assets/javascripts/views/balloons/form.js.coffee
new file mode 100644 (file)
index 0000000..dba310e
--- /dev/null
@@ -0,0 +1,11 @@
+class Pettanr.Views.Balloon.Form extends Locmare.Form\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+    @listenTo(@item, 'input:r', @input_r)\r
+    @item.hoge_templates()\r
+  \r
+  input_r: () ->\r
+    @item.select_system_picture()\r
+    @item.trigger('input:system_picture_id')\r
+  \r
index 246054c..10a520c 100644 (file)
@@ -36,6 +36,7 @@ class Pettanr.Views.Balloon.Show extends Backbone.View
         @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
           pictures: @panel.licensed_pictures()\r
         })\r
         @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
           pictures: @panel.licensed_pictures()\r
         })\r
+        @listenTo(@header, 'click:pick', @click_pick)\r
         @listenTo(@header, 'click:icon', @click_show)\r
         @listenTo(@header, 'click:caption', @click_show)\r
         @listenTo(@header, 'click:prof', @click_prof)\r
         @listenTo(@header, 'click:icon', @click_show)\r
         @listenTo(@header, 'click:caption', @click_show)\r
         @listenTo(@header, 'click:prof', @click_prof)\r
@@ -68,3 +69,12 @@ class Pettanr.Views.Balloon.Show extends Backbone.View
   click_credit_icon: (item) ->\r
     @trigger('http_get', item.show_url())\r
   \r
   click_credit_icon: (item) ->\r
     @trigger('http_get', item.show_url())\r
   \r
+  click_pick: () ->\r
+    @trigger('pick', @item)\r
+  \r
+  is_pickable: () ->\r
+    true\r
+  \r
+  add_pick: (target_model) ->\r
+    @header.add_pick(target_model)\r
+  \r
index b7c9513..8b5ad41 100644 (file)
@@ -29,6 +29,7 @@ class Pettanr.Views.Comic.Show extends Backbone.View
     })\r
     @author = new Pettanr.Views.Show.HeaderAuthor({item: @item})\r
     @owner = new Pettanr.Views.Comic.ShowModule.Owner({item: @item, operators: @operators})\r
     })\r
     @author = new Pettanr.Views.Show.HeaderAuthor({item: @item})\r
     @owner = new Pettanr.Views.Comic.ShowModule.Owner({item: @item, operators: @operators})\r
+    @listenTo(@header, 'click:pick', @click_pick)\r
     @listenTo(@header, 'click:icon', @click_show)\r
     @listenTo(@header, 'click:caption', @click_show)\r
     @listenTo(@header, 'click:prof', @click_prof)\r
     @listenTo(@header, 'click:icon', @click_show)\r
     @listenTo(@header, 'click:caption', @click_show)\r
     @listenTo(@header, 'click:prof', @click_prof)\r
@@ -58,3 +59,12 @@ class Pettanr.Views.Comic.Show extends Backbone.View
   click_destroy: () ->\r
     @trigger('http_get', @item.destroy_url())\r
   \r
   click_destroy: () ->\r
     @trigger('http_get', @item.destroy_url())\r
   \r
+  click_pick: () ->\r
+    @trigger('pick', @item)\r
+  \r
+  is_pickable: () ->\r
+    true\r
+  \r
+  add_pick: (target_model) ->\r
+    @header.add_pick(target_model)\r
+  \r
index c34e908..c5c960b 100644 (file)
@@ -57,6 +57,40 @@ class Pettanr.Views.Common.RootIcon extends Pettanr.Views.Common.EmptyIcon
   file_name: () ->\r
     '/images/root.png'\r
   \r
   file_name: () ->\r
     '/images/root.png'\r
   \r
+class Pettanr.Views.Common.PickIcon extends Backbone.View\r
+  \r
+  initialize: (options) ->\r
+    @class_name = options.class_name\r
+    @name = options.name\r
+    @half = options.half\r
+    @button = if @is_button()\r
+      @linked_icon()\r
+    else\r
+      @icon()\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    @el.className = @class_name if @class_name\r
+    if @is_button()\r
+      @listenTo(@button, 'click', @click)\r
+    this.$el.append(@button.render().el)\r
+    this\r
+  \r
+  is_button: () ->\r
+    @name != 'none'\r
+  \r
+  icon: () ->\r
+    new Pettanr.Image.SymbolImg({attr: {src: '/images/' + @name + '.gif'}, half: @half})\r
+  \r
+  linked_icon: () ->\r
+    new Tag.A({\r
+      attr: {href: '#'},\r
+      content: @icon().render().el\r
+    })\r
+  \r
+  click: () ->\r
+    @trigger('click', this)\r
+  \r
 class Pettanr.Views.Common.EmptyCaption extends Backbone.View\r
   tagName: 'div'\r
   className: 'empty'\r
 class Pettanr.Views.Common.EmptyCaption extends Backbone.View\r
   tagName: 'div'\r
   className: 'empty'\r
index 5ff3fbb..22a8416 100644 (file)
@@ -25,6 +25,7 @@ class Pettanr.Views.GroundColor.Show extends Backbone.View
     @listenTo(this, 'ready', @ready)\r
     @panel = @item.panel().with_elements()\r
     @panel.fetch({cache: false}).done =>  # with elements\r
     @listenTo(this, 'ready', @ready)\r
     @panel = @item.panel().with_elements()\r
     @panel.fetch({cache: false}).done =>  # with elements\r
+      @panel.attributes = @panel.replaced_attributes()\r
       @author = new Pettanr.Views.Show.HeaderAuthor({item: @panel})\r
       @body = new Pettanr.Views.Panel.Body({\r
         panel: @panel,\r
       @author = new Pettanr.Views.Show.HeaderAuthor({item: @panel})\r
       @body = new Pettanr.Views.Panel.Body({\r
         panel: @panel,\r
@@ -34,6 +35,7 @@ class Pettanr.Views.GroundColor.Show extends Backbone.View
       @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
         pictures: @panel.licensed_pictures()\r
       })\r
       @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
         pictures: @panel.licensed_pictures()\r
       })\r
+      @listenTo(@header, 'click:pick', @click_pick)\r
       @listenTo(@header, 'click:icon', @click_show)\r
       @listenTo(@header, 'click:caption', @click_show)\r
       @listenTo(@header, 'click:prof', @click_prof)\r
       @listenTo(@header, 'click:icon', @click_show)\r
       @listenTo(@header, 'click:caption', @click_show)\r
       @listenTo(@header, 'click:prof', @click_prof)\r
@@ -66,3 +68,12 @@ class Pettanr.Views.GroundColor.Show extends Backbone.View
   click_credit_icon: (item) ->\r
     @trigger('http_get', item.show_url())\r
   \r
   click_credit_icon: (item) ->\r
     @trigger('http_get', item.show_url())\r
   \r
+  click_pick: () ->\r
+    @trigger('pick', @item)\r
+  \r
+  is_pickable: () ->\r
+    true\r
+  \r
+  add_pick: (target_model) ->\r
+    @header.add_pick(target_model)\r
+  \r
index e4b193b..fd902c1 100644 (file)
@@ -25,6 +25,7 @@ class Pettanr.Views.GroundPicture.Show extends Backbone.View
     @listenTo(this, 'ready', @ready)\r
     @panel = @item.panel().with_elements()\r
     @panel.fetch({cache: false}).done =>  # with elements\r
     @listenTo(this, 'ready', @ready)\r
     @panel = @item.panel().with_elements()\r
     @panel.fetch({cache: false}).done =>  # with elements\r
+      @panel.attributes = @panel.replaced_attributes()\r
       @author = new Pettanr.Views.Show.HeaderAuthor({item: @panel})\r
       @body = new Pettanr.Views.Panel.Body({\r
         panel: @panel,\r
       @author = new Pettanr.Views.Show.HeaderAuthor({item: @panel})\r
       @body = new Pettanr.Views.Panel.Body({\r
         panel: @panel,\r
@@ -34,6 +35,7 @@ class Pettanr.Views.GroundPicture.Show extends Backbone.View
       @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
         pictures: @panel.licensed_pictures()\r
       })\r
       @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
         pictures: @panel.licensed_pictures()\r
       })\r
+      @listenTo(@header, 'click:pick', @click_pick)\r
       @listenTo(@header, 'click:icon', @click_show)\r
       @listenTo(@header, 'click:caption', @click_show)\r
       @listenTo(@header, 'click:prof', @click_prof)\r
       @listenTo(@header, 'click:icon', @click_show)\r
       @listenTo(@header, 'click:caption', @click_show)\r
       @listenTo(@header, 'click:prof', @click_prof)\r
@@ -66,3 +68,12 @@ class Pettanr.Views.GroundPicture.Show extends Backbone.View
   click_credit_icon: (item) ->\r
     @trigger('http_get', item.show_url())\r
   \r
   click_credit_icon: (item) ->\r
     @trigger('http_get', item.show_url())\r
   \r
+  click_pick: () ->\r
+    @trigger('pick', @item)\r
+  \r
+  is_pickable: () ->\r
+    true\r
+  \r
+  add_pick: (target_model) ->\r
+    @header.add_pick(target_model)\r
+  \r
index e4b32b9..5e425e2 100644 (file)
@@ -25,6 +25,7 @@ class Pettanr.Views.PanelPicture.Show extends Backbone.View
     @listenTo(this, 'ready', @ready)\r
     @panel = @item.panel().with_elements()\r
     @panel.fetch({cache: false}).done =>  # with elements\r
     @listenTo(this, 'ready', @ready)\r
     @panel = @item.panel().with_elements()\r
     @panel.fetch({cache: false}).done =>  # with elements\r
+      @panel.attributes = @panel.replaced_attributes()\r
       @author = new Pettanr.Views.Show.HeaderAuthor({item: @panel})\r
       @body = new Pettanr.Views.Panel.Body({\r
         panel: @panel,\r
       @author = new Pettanr.Views.Show.HeaderAuthor({item: @panel})\r
       @body = new Pettanr.Views.Panel.Body({\r
         panel: @panel,\r
@@ -34,6 +35,7 @@ class Pettanr.Views.PanelPicture.Show extends Backbone.View
       @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
         pictures: @panel.licensed_pictures()\r
       })\r
       @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
         pictures: @panel.licensed_pictures()\r
       })\r
+      @listenTo(@header, 'click:pick', @click_pick)\r
       @listenTo(@header, 'click:icon', @click_show)\r
       @listenTo(@header, 'click:caption', @click_show)\r
       @listenTo(@header, 'click:prof', @click_prof)\r
       @listenTo(@header, 'click:icon', @click_show)\r
       @listenTo(@header, 'click:caption', @click_show)\r
       @listenTo(@header, 'click:prof', @click_prof)\r
@@ -66,3 +68,12 @@ class Pettanr.Views.PanelPicture.Show extends Backbone.View
   click_credit_icon: (item) ->\r
     @trigger('http_get', item.show_url())\r
   \r
   click_credit_icon: (item) ->\r
     @trigger('http_get', item.show_url())\r
   \r
+  click_pick: () ->\r
+    @trigger('pick', @item)\r
+  \r
+  is_pickable: () ->\r
+    true\r
+  \r
+  add_pick: (target_model) ->\r
+    @header.add_pick(target_model)\r
+  \r
index 11bbc53..afe7bd3 100644 (file)
@@ -29,6 +29,7 @@ class Pettanr.Views.Panel.Show extends Backbone.View
     @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
       pictures: @panel.licensed_pictures()\r
     })\r
     @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
       pictures: @panel.licensed_pictures()\r
     })\r
+    @listenTo(@header, 'click:pick', @click_pick)\r
     @listenTo(@header, 'click:icon', @click_show)\r
     @listenTo(@header, 'click:caption', @click_show)\r
     @listenTo(@header, 'click:prof', @click_prof)\r
     @listenTo(@header, 'click:icon', @click_show)\r
     @listenTo(@header, 'click:caption', @click_show)\r
     @listenTo(@header, 'click:prof', @click_prof)\r
@@ -62,6 +63,15 @@ class Pettanr.Views.Panel.Show extends Backbone.View
   click_credit_icon: (item) ->\r
     @trigger('http_get', item.show_url())\r
   \r
   click_credit_icon: (item) ->\r
     @trigger('http_get', item.show_url())\r
   \r
+  click_pick: () ->\r
+    @trigger('pick', @item)\r
+  \r
+  is_pickable: () ->\r
+    true\r
+  \r
+  add_pick: (target_model) ->\r
+    @header.add_pick(target_model)\r
+  \r
 class Pettanr.Views.Panel.ShowModule\r
 class Pettanr.Views.Panel.ShowModule.Header extends Pettanr.Views.Show.Header\r
   \r
 class Pettanr.Views.Panel.ShowModule\r
 class Pettanr.Views.Panel.ShowModule.Header extends Pettanr.Views.Show.Header\r
   \r
@@ -96,3 +106,12 @@ class Pettanr.Views.Panel.ShowModule.Credits extends Backbone.View
   click_credit_icon: (item) ->\r
     @trigger('click:credit:icon', item)\r
   \r
   click_credit_icon: (item) ->\r
     @trigger('click:credit:icon', item)\r
   \r
+  click_pick: () ->\r
+    @trigger('pick', @item)\r
+  \r
+  is_pickable: () ->\r
+    true\r
+  \r
+  add_pick: (target_model) ->\r
+    @header.add_pick(target_model)\r
+  \r
index 43f13a4..03602d3 100644 (file)
@@ -75,6 +75,7 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View
       return if not scroll_panel.has_panel()\r
       panel = scroll_panel.panel()\r
       panel.fetch({cache: true}).done =>\r
       return if not scroll_panel.has_panel()\r
       panel = scroll_panel.panel()\r
       panel.fetch({cache: true}).done =>\r
+        panel.attributes = panel.replaced_attributes()\r
         body = new Pettanr.Views.Panel.Body({\r
           panel: panel,\r
           operators: @operators,\r
         body = new Pettanr.Views.Panel.Body({\r
           panel: panel,\r
           operators: @operators,\r
index 1507f46..cd25122 100644 (file)
@@ -26,6 +26,7 @@ class Pettanr.Views.Scroll.Show extends Backbone.View
     })\r
     @author = new Pettanr.Views.Show.HeaderAuthor({item: @item})\r
     @owner = new Pettanr.Views.Scroll.ShowModule.Owner({item: @item, operators: @operators})\r
     })\r
     @author = new Pettanr.Views.Show.HeaderAuthor({item: @item})\r
     @owner = new Pettanr.Views.Scroll.ShowModule.Owner({item: @item, operators: @operators})\r
+    @listenTo(@header, 'click:pick', @click_pick)\r
     @listenTo(@header, 'click:icon', @click_show)\r
     @listenTo(@header, 'click:caption', @click_play)\r
     @listenTo(@header, 'click:prof', @click_prof)\r
     @listenTo(@header, 'click:icon', @click_show)\r
     @listenTo(@header, 'click:caption', @click_play)\r
     @listenTo(@header, 'click:prof', @click_prof)\r
@@ -58,3 +59,12 @@ class Pettanr.Views.Scroll.Show extends Backbone.View
   click_destroy: () ->\r
     @trigger('http_get', @item.destroy_url())\r
   \r
   click_destroy: () ->\r
     @trigger('http_get', @item.destroy_url())\r
   \r
+  click_pick: () ->\r
+    @trigger('pick', @item)\r
+  \r
+  is_pickable: () ->\r
+    true\r
+  \r
+  add_pick: (target_model) ->\r
+    @header.add_pick(target_model)\r
+  \r
index 358e81c..f4cf5b2 100644 (file)
@@ -29,6 +29,7 @@ class Pettanr.Views.Sheet.Show extends Backbone.View
     })\r
     @author = new Pettanr.Views.Show.HeaderAuthor({item: @item})\r
     @owner = new Pettanr.Views.Sheet.ShowModule.Owner({item: @item, operators: @operators})\r
     })\r
     @author = new Pettanr.Views.Show.HeaderAuthor({item: @item})\r
     @owner = new Pettanr.Views.Sheet.ShowModule.Owner({item: @item, operators: @operators})\r
+    @listenTo(@header, 'click:pick', @click_pick)\r
   \r
   render: () ->\r
     this.$el.html('')\r
   \r
   render: () ->\r
     this.$el.html('')\r
@@ -37,3 +38,12 @@ class Pettanr.Views.Sheet.Show extends Backbone.View
     this.$el.append(@owner.render().el) if @item.is_own(@operators)\r
     this\r
   \r
     this.$el.append(@owner.render().el) if @item.is_own(@operators)\r
     this\r
   \r
+  click_pick: () ->\r
+    @trigger('pick', @item)\r
+  \r
+  is_pickable: () ->\r
+    true\r
+  \r
+  add_pick: (target_model) ->\r
+    @header.add_pick(target_model)\r
+  \r
index 69160ac..b5f98f1 100644 (file)
@@ -11,6 +11,7 @@ class Pettanr.Views.Show.Header extends Backbone.View
     @caption_url = options.caption_url\r
     @prof_url = options.prof_url\r
     \r
     @caption_url = options.caption_url\r
     @prof_url = options.prof_url\r
     \r
+    @pick = null\r
     @icon = new Pettanr.Image.Icon({item: @item, half: true})\r
     @icon_button = new Tag.A({\r
       attr: {href: '/' + @icon_url}, \r
     @icon = new Pettanr.Image.Icon({item: @item, half: true})\r
     @icon_button = new Tag.A({\r
       attr: {href: '/' + @icon_url}, \r
@@ -34,11 +35,15 @@ class Pettanr.Views.Show.Header extends Backbone.View
   \r
   render: () ->\r
     this.$el.html('')\r
   \r
   render: () ->\r
     this.$el.html('')\r
+    this.$el.append(@pick.render().el) if @pick\r
     this.$el.append(@icon_button.render().el)\r
     this.$el.append(@caption.render().el)\r
     this.$el.append(@prof_button.render().el)\r
     this\r
   \r
     this.$el.append(@icon_button.render().el)\r
     this.$el.append(@caption.render().el)\r
     this.$el.append(@prof_button.render().el)\r
     this\r
   \r
+  click_pick: () ->\r
+    @trigger('click:pick')\r
+  \r
   click_icon: () ->\r
     @trigger('click:icon')\r
   \r
   click_icon: () ->\r
     @trigger('click:icon')\r
   \r
@@ -48,6 +53,13 @@ class Pettanr.Views.Show.Header extends Backbone.View
   click_prof: () ->\r
     @trigger('click:prof')\r
   \r
   click_prof: () ->\r
     @trigger('click:prof')\r
   \r
+  add_pick: (target_model) ->\r
+    @pick = new Pettanr.Views.Common.PickIcon({\r
+      name: target_model.pick_type(@item.item_name()), half: true\r
+    })\r
+    @listenTo(@pick, 'click', @click_pick)\r
+    @render()\r
+  \r
 class Pettanr.Views.Show.HeaderAuthor extends Backbone.View\r
   tagName: 'div'\r
   \r
 class Pettanr.Views.Show.HeaderAuthor extends Backbone.View\r
   tagName: 'div'\r
   \r
index a2fe35e..ca62cc1 100644 (file)
@@ -25,6 +25,7 @@ class Pettanr.Views.SpeechBalloon.Show extends Backbone.View
     @listenTo(this, 'ready', @ready)\r
     @panel = @item.panel().with_elements()\r
     @panel.fetch({cache: false}).done =>  # with elements\r
     @listenTo(this, 'ready', @ready)\r
     @panel = @item.panel().with_elements()\r
     @panel.fetch({cache: false}).done =>  # with elements\r
+      @panel.attributes = @panel.replaced_attributes()\r
       @author = new Pettanr.Views.Show.HeaderAuthor({item: @panel})\r
       @body = new Pettanr.Views.Panel.Body({\r
         panel: @panel,\r
       @author = new Pettanr.Views.Show.HeaderAuthor({item: @panel})\r
       @body = new Pettanr.Views.Panel.Body({\r
         panel: @panel,\r
@@ -34,6 +35,7 @@ class Pettanr.Views.SpeechBalloon.Show extends Backbone.View
       @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
         pictures: @panel.licensed_pictures()\r
       })\r
       @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
         pictures: @panel.licensed_pictures()\r
       })\r
+      @listenTo(@header, 'click:pick', @click_pick)\r
       @listenTo(@header, 'click:icon', @click_show)\r
       @listenTo(@header, 'click:caption', @click_show)\r
       @listenTo(@header, 'click:prof', @click_prof)\r
       @listenTo(@header, 'click:icon', @click_show)\r
       @listenTo(@header, 'click:caption', @click_show)\r
       @listenTo(@header, 'click:prof', @click_prof)\r
@@ -66,3 +68,12 @@ class Pettanr.Views.SpeechBalloon.Show extends Backbone.View
   click_credit_icon: (item) ->\r
     @trigger('http_get', item.show_url())\r
   \r
   click_credit_icon: (item) ->\r
     @trigger('http_get', item.show_url())\r
   \r
+  click_pick: () ->\r
+    @trigger('pick', @item)\r
+  \r
+  is_pickable: () ->\r
+    true\r
+  \r
+  add_pick: (target_model) ->\r
+    @header.add_pick(target_model)\r
+  \r
index 7bb259e..ea9d375 100644 (file)
@@ -36,6 +36,7 @@ class Pettanr.Views.Speech.Show extends Backbone.View
         @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
           pictures: @panel.licensed_pictures()\r
         })\r
         @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
           pictures: @panel.licensed_pictures()\r
         })\r
+        @listenTo(@header, 'click:pick', @click_pick)\r
         @listenTo(@header, 'click:icon', @click_show)\r
         @listenTo(@header, 'click:caption', @click_show)\r
         @listenTo(@header, 'click:prof', @click_prof)\r
         @listenTo(@header, 'click:icon', @click_show)\r
         @listenTo(@header, 'click:caption', @click_show)\r
         @listenTo(@header, 'click:prof', @click_prof)\r
@@ -68,3 +69,12 @@ class Pettanr.Views.Speech.Show extends Backbone.View
   click_credit_icon: (item) ->\r
     @trigger('http_get', item.show_url())\r
   \r
   click_credit_icon: (item) ->\r
     @trigger('http_get', item.show_url())\r
   \r
+  click_pick: () ->\r
+    @trigger('pick', @item)\r
+  \r
+  is_pickable: () ->\r
+    true\r
+  \r
+  add_pick: (target_model) ->\r
+    @header.add_pick(target_model)\r
+  \r
index 55bd0c5..730c386 100644 (file)
@@ -29,6 +29,7 @@ class Pettanr.Views.Story.Show extends Backbone.View
     })\r
     @author = new Pettanr.Views.Show.HeaderAuthor({item: @item})\r
     @owner = new Pettanr.Views.Story.ShowModule.Owner({item: @item, operators: @operators})\r
     })\r
     @author = new Pettanr.Views.Show.HeaderAuthor({item: @item})\r
     @owner = new Pettanr.Views.Story.ShowModule.Owner({item: @item, operators: @operators})\r
+    @listenTo(@header, 'click:pick', @click_pick)\r
   \r
   render: () ->\r
     this.$el.html('')\r
   \r
   render: () ->\r
     this.$el.html('')\r
@@ -37,3 +38,12 @@ class Pettanr.Views.Story.Show extends Backbone.View
     this.$el.append(@owner.render().el) if @item.is_own(@operators)\r
     this\r
   \r
     this.$el.append(@owner.render().el) if @item.is_own(@operators)\r
     this\r
   \r
+  click_pick: () ->\r
+    @trigger('pick', @item)\r
+  \r
+  is_pickable: () ->\r
+    true\r
+  \r
+  add_pick: (target_model) ->\r
+    @header.add_pick(target_model)\r
+  \r