OSDN Git Service

fix: show's destroy button
[pettanr/pettanr.git] / app / assets / javascripts / views / panels / show.js.coffee
1 class Pettanr.Views.Panel.ShowModule\r
2 class Pettanr.Views.Panel.ShowModule.Header extends Pettanr.Views.Show.Header\r
3   \r
4   initialize: (options) ->\r
5     super(options)\r
6   \r
7 class Pettanr.Views.Panel.ShowModule.Owner extends Pettanr.Views.Show.Owner\r
8   \r
9   initialize: (options) ->\r
10     super(options)\r
11   \r
12 class Pettanr.Views.Panel.ShowModule.Credits extends Backbone.View\r
13   tagName: 'div'\r
14   className: 'credits'\r
15   \r
16   initialize: (options) ->\r
17     @pictures = options.pictures\r
18     @credited = {}\r
19   \r
20   render: () ->\r
21     this.$el.html('')\r
22     _.each @pictures, (picture, pid) =>\r
23       @add_picture(picture)\r
24     this\r
25   \r
26   add_picture: (retriever) ->\r
27     @listenTo(retriever, 'retrieve', @retrieve_picture)\r
28     retriever.retrieve()\r
29   \r
30   retrieve_picture: (picture) ->\r
31     pid = picture.get('id')\r
32     if not @credited[pid]\r
33       @credited[pid] = picture\r
34       credit = picture.credit_view()\r
35       @listenTo(credit, 'click:icon', @click_credit_icon)\r
36       this.$el.append(credit.render().el)\r
37   \r
38   click_credit_icon: (item) ->\r
39     @trigger('click:credit:icon', item)\r
40   \r
41   click_pick: () ->\r
42     @trigger('pick', @item)\r
43   \r
44   is_pickable: () ->\r
45     true\r
46   \r
47   add_pick: (target_model) ->\r
48     @header.add_pick(target_model)\r
49   \r
50 # panel: panel item\r
51 # spot: no opacity element\r
52 class Pettanr.Views.Panel.Show extends Backbone.View\r
53   tagName: 'div'\r
54   \r
55   initialize: (options) ->\r
56     @panel = options.panel\r
57     @spot = options.spot\r
58     \r
59     @header = new Pettanr.Views.Panel.ShowModule.Header({\r
60       item: @panel, \r
61       caption: @panel.get('caption'), \r
62       icon_url: @panel.show_url(),\r
63       caption_url: @panel.show_url(),\r
64       prof_url: @panel.prof_url()\r
65     })\r
66     @body = new Pettanr.Views.Panel.Body({\r
67       panel: @panel,\r
68       spot: @spot\r
69     })\r
70     @footer = new Pettanr.Views.Panel.Footer({\r
71       panel: @panel,\r
72     })\r
73     @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
74       pictures: @panel.licensed_pictures()\r
75     })\r
76     @owner = new Pettanr.Views.Panel.ShowModule.Owner({item: @panel})\r
77     @listenTo(@header, 'click:pick', @click_pick)\r
78     @listenTo(@header, 'click:icon', @click_show)\r
79     @listenTo(@header, 'click:caption', @click_show)\r
80     @listenTo(@header, 'click:prof', @click_prof)\r
81     @listenTo(@footer, 'click:panel', @click_show)\r
82     @listenTo(@footer, 'click:author', @click_author)\r
83     @listenTo(@footer, 'click:edit', @click_edit)\r
84     @listenTo(@footer, 'click:inspire', @click_inspire)\r
85     @listenTo(@credits, 'click:credit:icon', @click_credit_icon)\r
86     @listenTo(@owner, 'click:edit', @click_edit)\r
87     @listenTo(@owner, 'click:destroy', @click_destroy)\r
88   \r
89   render: () ->\r
90     this.$el.html('')\r
91     this.$el.append(@header.render().el)\r
92     this.$el.append(@body.render().el)\r
93     this.$el.append(@footer.render().el)\r
94     this.$el.append(@credits.render().el)\r
95     rb = new Tag.RowBreak()\r
96     this.$el.append(rb.render().el)\r
97     this.$el.append(@owner.render().el)\r
98     this\r
99   \r
100   click_show: () ->\r
101     @trigger('http_get', @panel.show_url())\r
102   \r
103   click_author: () ->\r
104     @trigger('http_get', @panel.author().show_url())\r
105   \r
106   click_edit: () ->\r
107     @trigger('http_get', @panel.edit_url())\r
108   \r
109   click_destroy: () ->\r
110     redirect = (url) =>\r
111       @trigger('http_get', url)\r
112     Pettanr.Proxy.destroy(@panel, {redirect: redirect})\r
113   \r
114   click_inspire: () ->\r
115     inspire = new Pettanr.Inspire({item: @panel})\r
116     @listenTo(inspire, 'inspire', @inspire)\r
117     inspire.inspire()\r
118   \r
119   click_prof: () ->\r
120     @trigger('http_get', @panel.prof_url())\r
121   \r
122   click_credit_icon: (item) ->\r
123     @trigger('http_get', item.show_url())\r
124   \r
125   click_pick: () ->\r
126     @trigger('pick', @item)\r
127   \r
128   is_pickable: () ->\r
129     true\r
130   \r
131   add_pick: (target_model) ->\r
132     @header.add_pick(target_model)\r
133   \r
134   inspire: (item) ->\r
135     @trigger('http_get', item.show_url())\r
136   \r