OSDN Git Service

fix: show's destroy button
[pettanr/pettanr.git] / app / assets / javascripts / views / original_pictures / show.js.coffee
1 class Pettanr.Views.OriginalPicture.ShowModule\r
2 class Pettanr.Views.OriginalPicture.ShowModule.Header extends Pettanr.Views.Show.Header\r
3   \r
4   initialize: (options) ->\r
5     super(options)\r
6   \r
7 class Pettanr.Views.OriginalPicture.ShowModule.LinkedLicenseButton extends Tag.A\r
8   \r
9   initialize: (options) ->\r
10     item = options.item\r
11     super({\r
12       attr: {href: '/' + item.license_url()}, \r
13       content: I18n.t('original_pictures.show.select')\r
14     })\r
15   \r
16 class Pettanr.Views.OriginalPicture.ShowModule.LinkedReplaceButton extends Tag.A\r
17   \r
18   initialize: (options) ->\r
19     item = options.item\r
20     super({\r
21       attr: {href: '/' + item.edit_url()}, \r
22       content: I18n.t('original_pictures.show.replace')\r
23     })\r
24   \r
25 class Pettanr.Views.OriginalPicture.ShowModule.LinkedDropButton extends Tag.A\r
26   \r
27   initialize: (options) ->\r
28     item = options.item\r
29     super({\r
30       attr: {href: '/' + item.destroy_url()}, \r
31       content: I18n.t('link.destroy')\r
32     })\r
33   \r
34 class Pettanr.Views.OriginalPicture.ShowModule.OwnerFooter extends Backbone.View\r
35   tagName: 'div'\r
36   className: 'show-owner-footer'\r
37   \r
38   initialize: (options) ->\r
39     super(options)\r
40     @item = options.item\r
41     @license = new Pettanr.Views.OriginalPicture.ShowModule.LinkedLicenseButton({item: @item})\r
42     @edit = new Pettanr.Views.OriginalPicture.ShowModule.LinkedReplaceButton({item: @item})\r
43     @destroy = new Pettanr.Views.OriginalPicture.ShowModule.LinkedDropButton({item: @item})\r
44     @listenTo(@license, 'click', @click_license)\r
45     @listenTo(@edit, 'click', @click_edit)\r
46     @listenTo(@destroy, 'click', @click_destroy)\r
47   \r
48   render: () ->\r
49     super()\r
50     this.$el.append(@license.render().el)\r
51     this.$el.append(@edit.render().el)\r
52     dh = new Tag.H3({\r
53       content: 'expert only'\r
54     })\r
55     this.$el.append(dh.render().el)\r
56     this.$el.append(@destroy.render().el)\r
57     this\r
58   \r
59   click_license: () ->\r
60     @trigger('click:license')\r
61   \r
62   click_edit: () ->\r
63     @trigger('click:edit')\r
64   \r
65   click_destroy: () ->\r
66     @trigger('click:destroy')\r
67   \r
68 class Pettanr.Views.OriginalPicture.ShowModule.Owner extends Pettanr.Views.Show.Owner\r
69   \r
70   initialize: (options) ->\r
71     super(options)\r
72     @listenTo(@footer, 'click:license', @click_license)\r
73   \r
74   click_license: () ->\r
75     @trigger('click:footer:license')\r
76     @trigger('click:license')\r
77   \r
78   footer_class: () ->\r
79     Pettanr.Views.OriginalPicture.ShowModule.OwnerFooter\r
80   \r
81 class Pettanr.Views.OriginalPicture.ShowModule.History extends Backbone.View\r
82   \r
83   initialize: (options) ->\r
84     super(options)\r
85     @item = options.item\r
86     @list = @item.history()\r
87   \r
88   render: () ->\r
89     this.$el.html('')\r
90     h = new Tag.H2({\r
91       content: I18n.t('original_pictures.show.history')\r
92     })\r
93     this.$el.append(h.render().el)\r
94     @list.fetch().done =>\r
95       _.each @list.models, (picture) =>\r
96         view = picture.history_view()\r
97         @listenTo(view, 'http_get', @http_get)\r
98         this.$el.append(view.render().el)\r
99     this\r
100   \r
101   http_get: (url) ->\r
102     @trigger('http_get', url)\r
103   \r
104 class Pettanr.Views.OriginalPicture.Show extends Backbone.View\r
105   tagName: 'div'\r
106   \r
107   initialize: (options) ->\r
108     @item = options.item\r
109     @header = new Pettanr.Views.OriginalPicture.ShowModule.Header({\r
110       item: @item, \r
111       icon_url: @item.show_url(),\r
112       prof_url: @item.prof_url()\r
113     })\r
114     @artist = new Pettanr.Views.Show.HeaderArtist({item: @item})\r
115     @img = new Pettanr.Views.OriginalPicture.Img({item: @item})\r
116     @owner = new Pettanr.Views.OriginalPicture.ShowModule.Owner({item: @item})\r
117     @history = new Pettanr.Views.OriginalPicture.ShowModule.History({item: @item})\r
118     @listenTo(@header, 'click:icon', @click_show)\r
119     @listenTo(@header, 'click:prof', @click_prof)\r
120     @listenTo(@artist, 'click:artist', @click_artist)\r
121     @listenTo(@owner, 'click:license', @click_license)\r
122     @listenTo(@owner, 'click:edit', @click_edit)\r
123     @listenTo(@owner, 'click:destroy', @click_destroy)\r
124     @listenTo(@history, 'http_get', @http_get)\r
125   \r
126   render: () ->\r
127     this.$el.html('')\r
128     this.$el.append(@header.render().el)\r
129     this.$el.append(@artist.render().el)\r
130     this.$el.append(@img.render().el)\r
131     this.$el.append(@owner.render().el)\r
132     this.$el.append(@history.render().el)\r
133     this\r
134   \r
135   click_show: () ->\r
136     @trigger('http_get', @item.show_url())\r
137   \r
138   click_prof: () ->\r
139     @trigger('http_get', @item.prof_url())\r
140   \r
141   click_artist: () ->\r
142     @trigger('http_get', @item.artist().show_url())\r
143   \r
144   click_license: () ->\r
145     @create_dialog()\r
146     @trigger('click:license', @dialog)\r
147     #retriever = new Pettanr.Cache.Retriever(@item.my_class(), @item.get('id'))\r
148     #@listenTo(retriever, 'retrieve', @create_dialog)\r
149     #retriever.edit()\r
150   \r
151   click_edit: () ->\r
152     @trigger('http_get', @item.edit_url())\r
153   \r
154   click_destroy: () ->\r
155     redirect = (url) =>\r
156       @trigger('http_get', url)\r
157     Pettanr.Proxy.destroy(@item, {redirect: redirect})\r
158   \r
159   http_get: (url) ->\r
160     @trigger('http_get', url)\r
161   \r
162   create_dialog: () ->\r
163     @dialog = new Editor.PicturePublisher.Dialog({\r
164       parent: this\r
165     })\r
166     this.$el.append(@dialog.render().el)\r
167     _this = this\r
168     @dialog.$el.dialog({\r
169       autoOpen: false,\r
170       width: 500, \r
171       height: 500,\r
172       close: (ui, event) ->\r
173         _this.close_dialog()\r
174     })\r
175     params = {\r
176       controller: 'original_picture_license_groups', action: 'new', id: @item.get('id'), \r
177     }\r
178     @listenTo(@dialog, 'success', @success)\r
179     @dialog.start(params, null)\r
180     @dialog\r
181   \r
182   is_pickable: () ->\r
183     false\r
184   \r
185   success: (resource_picture) ->\r
186     #Pettanr.cache.fix(@item)\r
187     @trigger('success', @params, @dialog)\r
188     @trigger('http_get', resource_picture.show_url())\r
189     Pettanr.cache.refresh(@item)\r
190   \r
191   close_dialog: () ->\r
192     #Pettanr.cache.release(@item)\r
193     @trigger('click:close', @dialog)\r
194   \r