X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=blobdiff_plain;f=app%2Fassets%2Fjavascripts%2Fviews%2Fpanels%2Fshow.js.coffee;h=09665637cf0ad9d1d19ab58a3ccc01375f10f052;hp=e527a96ab3359e63721b442149ac6d2f3717d56b;hb=aa9eca25671c772ffec8f2f65aecc8a978a2f375;hpb=59535c9a030167616214c63d32ebbee59a9a59bb diff --git a/app/assets/javascripts/views/panels/show.js.coffee b/app/assets/javascripts/views/panels/show.js.coffee index e527a96a..09665637 100644 --- a/app/assets/javascripts/views/panels/show.js.coffee +++ b/app/assets/javascripts/views/panels/show.js.coffee @@ -1,3 +1,52 @@ +class Pettanr.Views.Panel.ShowModule +class Pettanr.Views.Panel.ShowModule.Header extends Pettanr.Views.Show.Header + + initialize: (options) -> + super(options) + +class Pettanr.Views.Panel.ShowModule.Owner extends Pettanr.Views.Show.Owner + + initialize: (options) -> + super(options) + +class Pettanr.Views.Panel.ShowModule.Credits extends Backbone.View + tagName: 'div' + className: 'credits' + + initialize: (options) -> + @pictures = options.pictures + @credited = {} + + render: () -> + this.$el.html('') + _.each @pictures, (picture, pid) => + @add_picture(picture) + this + + add_picture: (retriever) -> + @listenTo(retriever, 'retrieve', @retrieve_picture) + retriever.retrieve() + + retrieve_picture: (picture) -> + pid = picture.get('id') + if not @credited[pid] + @credited[pid] = picture + credit = picture.credit_view() + @listenTo(credit, 'click:icon', @click_credit_icon) + this.$el.append(credit.render().el) + + click_credit_icon: (item) -> + @trigger('click:credit:icon', item) + + click_pick: () -> + @trigger('pick', @item) + + is_pickable: () -> + true + + add_pick: (target_model) -> + @header.add_pick(target_model) + # panel: panel item # spot: no opacity element class Pettanr.Views.Panel.Show extends Backbone.View @@ -24,6 +73,7 @@ class Pettanr.Views.Panel.Show extends Backbone.View @credits = new Pettanr.Views.Panel.ShowModule.Credits({ pictures: @panel.licensed_pictures() }) + @owner = new Pettanr.Views.Panel.ShowModule.Owner({item: @panel}) @listenTo(@header, 'click:pick', @click_pick) @listenTo(@header, 'click:icon', @click_show) @listenTo(@header, 'click:caption', @click_show) @@ -33,6 +83,8 @@ class Pettanr.Views.Panel.Show extends Backbone.View @listenTo(@footer, 'click:edit', @click_edit) @listenTo(@footer, 'click:inspire', @click_inspire) @listenTo(@credits, 'click:credit:icon', @click_credit_icon) + @listenTo(@owner, 'click:edit', @click_edit) + @listenTo(@owner, 'click:destroy', @click_destroy) render: () -> this.$el.html('') @@ -42,6 +94,7 @@ class Pettanr.Views.Panel.Show extends Backbone.View this.$el.append(@credits.render().el) rb = new Tag.RowBreak() this.$el.append(rb.render().el) + this.$el.append(@owner.render().el) this click_show: () -> @@ -53,6 +106,11 @@ class Pettanr.Views.Panel.Show extends Backbone.View click_edit: () -> @trigger('http_get', @panel.edit_url()) + click_destroy: () -> + redirect = (url) => + @trigger('http_get', url) + Pettanr.Proxy.destroy(@panel, {redirect: redirect}) + click_inspire: () -> inspire = new Pettanr.Inspire({item: @panel}) @listenTo(inspire, 'inspire', @inspire) @@ -76,47 +134,3 @@ class Pettanr.Views.Panel.Show extends Backbone.View inspire: (item) -> @trigger('http_get', item.show_url()) -class Pettanr.Views.Panel.ShowModule -class Pettanr.Views.Panel.ShowModule.Header extends Pettanr.Views.Show.Header - - initialize: (options) -> - super(options) - -class Pettanr.Views.Panel.ShowModule.Credits extends Backbone.View - tagName: 'div' - className: 'credits' - - initialize: (options) -> - @pictures = options.pictures - @credited = {} - - render: () -> - this.$el.html('') - _.each @pictures, (picture, pid) => - @add_picture(picture) - this - - add_picture: (retriever) -> - @listenTo(retriever, 'retrieve', @retrieve_picture) - retriever.retrieve() - - retrieve_picture: (picture) -> - pid = picture.get('id') - if not @credited[pid] - @credited[pid] = picture - credit = picture.credit_view() - @listenTo(credit, 'click:icon', @click_credit_icon) - this.$el.append(credit.render().el) - - click_credit_icon: (item) -> - @trigger('click:credit:icon', item) - - click_pick: () -> - @trigger('pick', @item) - - is_pickable: () -> - true - - add_pick: (target_model) -> - @header.add_pick(target_model) -