OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
[pettanr/pettanr.git] / app / assets / javascripts / views / panels / show.js.coffee
1 # panel: panel item\r
2 # operators: operators\r
3 # spot: no opacity element\r
4 class Pettanr.Views.Panel.Show extends Backbone.View\r
5   tagName: 'div'\r
6   \r
7   initialize: (options) ->\r
8     @panel = options.panel\r
9     @operators = options.operators\r
10     @spot = options.spot\r
11     \r
12     @header = new Pettanr.Views.Panel.ShowModule.Header({\r
13       item: @panel, \r
14       operators: @operators,\r
15       caption: @panel.get('caption'), \r
16       icon_url: @panel.show_url(),\r
17       caption_url: @panel.show_url(),\r
18       prof_url: @panel.prof_url()\r
19     })\r
20     @body = new Pettanr.Views.Panel.Body({\r
21       panel: @panel,\r
22       operators: @operators,\r
23       spot: @spot\r
24     })\r
25     @footer = new Pettanr.Views.Panel.Footer({\r
26       panel: @panel,\r
27       operators: @operators\r
28     })\r
29     @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
30       pictures: @panel.licensed_pictures()\r
31     })\r
32     @listenTo(@header, 'click:icon', @click_show)\r
33     @listenTo(@header, 'click:caption', @click_show)\r
34     @listenTo(@header, 'click:prof', @click_prof)\r
35     @listenTo(@footer, 'click:panel', @click_show)\r
36     @listenTo(@footer, 'click:author', @click_author)\r
37     @listenTo(@footer, 'click:edit', @click_edit)\r
38     @listenTo(@credits, 'click:credit:icon', @click_credit_icon)\r
39   \r
40   render: () ->\r
41     this.$el.html('')\r
42     this.$el.append(@header.render().el)\r
43     this.$el.append(@body.render().el)\r
44     this.$el.append(@footer.render().el)\r
45     this.$el.append(@credits.render().el)\r
46     rb = new Tag.RowBreak()\r
47     this.$el.append(rb.render().el)\r
48     this\r
49   \r
50   click_show: () ->\r
51     @trigger('navigate', @item.show_url())\r
52   \r
53   click_author: () ->\r
54     @trigger('navigate', @panel.author().show_url())\r
55   \r
56   click_edit: () ->\r
57     @trigger('navigate', @panel.edit_url())\r
58   \r
59   click_prof: () ->\r
60     @trigger('navigate', @item.prof_url())\r
61   \r
62   click_credit_icon: (item) ->\r
63     @trigger('navigate', item.show_url())\r
64   \r
65 class Pettanr.Views.Panel.ShowModule\r
66 class Pettanr.Views.Panel.ShowModule.Header extends Pettanr.Views.Show.Header\r
67   \r
68   initialize: (options) ->\r
69     super(options)\r
70   \r
71 class Pettanr.Views.Panel.ShowModule.Credits extends Backbone.View\r
72   tagName: 'div'\r
73   className: 'credits'\r
74   \r
75   initialize: (options) ->\r
76     @pictures = options.pictures\r
77     @credited = {}\r
78   \r
79   render: () ->\r
80     this.$el.html('')\r
81     _.each @pictures, (picture, pid) =>\r
82       @add_picture(picture)\r
83     this\r
84   \r
85   add_picture: (picture) ->\r
86   \r
87   add_picture: (picture) ->\r
88     pid = picture.get('id')\r
89     if not @credited[pid]\r
90       picture.fetch({cache: true}).done =>\r
91         @credited[pid] = picture\r
92         credit = picture.credit_view()\r
93         @listenTo(credit, 'click:icon', @click_credit_icon)\r
94         this.$el.append(credit.render().el)\r
95   \r
96   click_credit_icon: (item) ->\r
97     @trigger('click:credit:icon', item)\r
98   \r