OSDN Git Service

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