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=e8af5f1bcda81986eb1d1f770f9e8a7c8cbc296c;hp=09665637cf0ad9d1d19ab58a3ccc01375f10f052;hb=d7c8065be895b67dc453b0e11ad0f259f1ca6706;hpb=bc9dd75754da9a89194b6495a5992521050f2e7d diff --git a/app/assets/javascripts/views/panels/show.js.coffee b/app/assets/javascripts/views/panels/show.js.coffee index 09665637..e8af5f1b 100644 --- a/app/assets/javascripts/views/panels/show.js.coffee +++ b/app/assets/javascripts/views/panels/show.js.coffee @@ -1,127 +1,32 @@ -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 - tagName: 'div' +class Pettanr.Views.Panel.Show extends Pettanr.View.Show initialize: (options) -> - @panel = options.panel + @panel = @item @spot = options.spot - @header = new Pettanr.Views.Panel.ShowModule.Header({ - item: @panel, - caption: @panel.get('caption'), - icon_url: @panel.show_url(), - caption_url: @panel.show_url(), - prof_url: @panel.prof_url() - }) + @header = new Pettanr.View.Show.Header(@item, this, @default_header_options()) + @authored_by = @item.authored_by() @body = new Pettanr.Views.Panel.Body({ panel: @panel, spot: @spot }) - @footer = new Pettanr.Views.Panel.Footer({ - panel: @panel, - }) - @credits = new Pettanr.Views.Panel.ShowModule.Credits({ - pictures: @panel.licensed_pictures() - }) - @owner = new Pettanr.Views.Panel.ShowModule.Owner({item: @panel}) + @footer = new Pettanr.Views.Panel.Show.Footer(@panel, this, {}) + @owner = new Pettanr.View.Show.Footer(@item, this, @default_footer_options()) @listenTo(@header, 'click:pick', @click_pick) - @listenTo(@header, 'click:icon', @click_show) - @listenTo(@header, 'click:caption', @click_show) - @listenTo(@header, 'click:prof', @click_prof) - @listenTo(@footer, 'click:panel', @click_show) - @listenTo(@footer, 'click:author', @click_author) - @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) + @listenTo(@authored_by, 'click', @click_authored_by) render: () -> this.$el.html('') this.$el.append(@header.render().el) + this.$el.append(@authored_by.render().el) this.$el.append(@body.render().el) this.$el.append(@footer.render().el) - this.$el.append(@credits.render().el) - rb = new Tag.RowBreak() - this.$el.append(rb.render().el) - this.$el.append(@owner.render().el) + @add_credits() + this.$el.append(@owner.render().el) if @item.is_own() this - click_show: () -> - @trigger('http_get', @panel.show_url()) - - click_author: () -> - @trigger('http_get', @panel.author().show_url()) - - 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) - inspire.inspire() - - click_prof: () -> - @trigger('http_get', @panel.prof_url()) - - click_credit_icon: (item) -> - @trigger('http_get', item.show_url()) - click_pick: () -> @trigger('pick', @item) @@ -131,6 +36,36 @@ class Pettanr.Views.Panel.Show extends Backbone.View add_pick: (target_model) -> @header.add_pick(target_model) - inspire: (item) -> - @trigger('http_get', item.show_url()) +class Pettanr.Views.Panel.Show.Footer extends Pettanr.View + tagName: 'ul' + + constructor: (@panel, @context, options) -> + super(options) + + initialize: (options) -> + super(options) + + render: () -> + super() + this.$el.html('') + this.$el.append( + Pettanr.AppHelper.distance_of_time_in_words_to_now(@panel.get('updated_at')) + ) + if Pettanr.cache.operators.is_author() + inspire_button = Pettanr.View.mini_face_button( + @panel, + Pettanr.View.Image.icon_inspire_file(), { + context: @context, + click: () => + inspire = new Pettanr.Inspire(@panel) + inspire.go(@context, { + success: (item) -> + @trigger('http_get', item.show_url()) + fail: (response, opt) => + @open_error_dialog(response, opt) + }) + } + ) + this.$el.append(inspire_button.render().el) + this