1 class Pettanr.Views.Scroll.PlayModule
\r
2 class Pettanr.Views.Scroll.PlayModule.Header extends Pettanr.Views.Show.Header
\r
4 initialize: (options) ->
\r
7 class Pettanr.Views.Scroll.PlayModule.Owner extends Pettanr.Views.Show.Owner
\r
9 initialize: (options) ->
\r
12 class Pettanr.Views.Scroll.PlayModule.FooterSwitch extends Backbone.View
\r
14 className: 'player-item-switch'
\r
19 initialize: (options) ->
\r
20 @scroll_panel = options.scroll_panel
\r
21 @panel = options.panel
\r
27 style: Pettanr.to_style({height: Pettanr.to_s(@panel.get('height')) + 'px'})
\r
34 caption = new Tag.Span({content: face})
\r
35 this.$el.append(@scroll_panel.get('t') + 1)
\r
36 this.$el.append(caption.render().el)
\r
40 @visible = !@visible
\r
42 @trigger('click', @visible)
\r
44 class Pettanr.Views.Scroll.PlayModule.Footer extends Backbone.View
\r
46 className: 'player-item-footer'
\r
48 initialize: (options) ->
\r
49 @scroll = options.scroll
\r
50 @scroll_panel = options.scroll_panel
\r
51 @panel = options.panel
\r
56 retriever = @panel.author()
\r
57 @listenTo(retriever, 'retrieve', @retrieve_author)
\r
58 retriever.retrieve()
\r
61 retrieve_author: (@author) ->
\r
62 @panel_icon = new Pettanr.Views.Panel.Icon({item: @panel, half: true})
\r
63 @author_icon = new Pettanr.Views.Author.Icon({item: @author, half: true})
\r
64 @new_scroll_panel = new Pettanr.ScrollPanel()
\r
65 @insert_button = new Pettanr.Views.Show.LinkedNewButton({item: @new_scroll_panel, dic_name: 'scroll_panels.player.before_insert'})
\r
66 @move_button = new Pettanr.Views.Show.LinkedEditButton({item: @scroll_panel, dic_name: 'scroll_panels.player.move'})
\r
67 @destroy_button = new Pettanr.Views.Show.LinkedDestroyButton({item: @scroll_panel, dic_name: 'scroll_panels.player.destroy'})
\r
68 @listenTo(@panel_icon, 'click', @click_panel)
\r
69 @listenTo(@author_icon, 'click', @click_author)
\r
70 @listenTo(@insert_button, 'click', @click_insert)
\r
71 @listenTo(@move_button, 'click', @click_move)
\r
72 @listenTo(@destroy_button, 'click', @click_destroy)
\r
74 content: Pettanr.AppHelper.t_m('Panel')
\r
77 content: Pettanr.AppHelper.t_m('ScrollPanel')
\r
79 this.$el.append(l1.render().el)
\r
80 this.$el.append(@panel_icon.render().el)
\r
81 this.$el.append(@author_icon.render().el)
\r
83 Pettanr.AppHelper.distance_of_time_in_words_to_now(@panel.get('updated_at'))
\r
85 this.$el.append(l2.render().el)
\r
87 this.$el.append(@insert_button.render().el)
\r
88 rb = new Tag.RowBreak()
\r
89 this.$el.append(rb.render().el)
\r
90 this.$el.append(@move_button.render().el)
\r
91 rb = new Tag.RowBreak()
\r
92 this.$el.append(rb.render().el)
\r
93 this.$el.append(@destroy_button.render().el)
\r
97 style: Pettanr.to_style({display: 'none'})
\r
103 style: Pettanr.to_style({display: 'inline'})
\r
105 this.$el.attr(attr)
\r
108 @trigger('click:panel')
\r
110 click_author: () ->
\r
111 @trigger('click:author')
\r
113 click_insert: () ->
\r
114 @trigger('click:insert')
\r
117 @trigger('click:move')
\r
119 click_destroy: () ->
\r
120 @trigger('click:destroy')
\r
122 class Pettanr.Views.Scroll.PlayModule.Credits extends Backbone.View
\r
124 className: 'credits'
\r
126 initialize: (options) ->
\r
127 @parent = options.parent
\r
128 @licensed_pictures = {}
\r
134 push: (retrievers) ->
\r
135 _.each retrievers, (retriever) =>
\r
136 @listenTo(retriever, 'retrieve', @retrieve_picture)
\r
137 retriever.retrieve()
\r
139 retrieve_picture: (picture) ->
\r
140 pid = picture.get('id')
\r
141 return if @licensed_pictures[pid]
\r
142 @licensed_pictures[pid] = picture
\r
143 credit = picture.credit_view()
\r
144 this.$el.append(credit.render().el)
\r
146 class Pettanr.Views.Scroll.PlayModule.PanelBody extends Backbone.View
\r
148 className: 'player-item-panel'
\r
150 initialize: (options) ->
\r
151 @panel = options.panel
\r
155 body = new Pettanr.Views.Panel.Body({
\r
159 this.$el.append(body.render().el)
\r
162 class Pettanr.Views.Scroll.PlayModule.Panel extends Backbone.View
\r
164 className: 'player-item'
\r
166 initialize: (options) ->
\r
167 @scroll = options.scroll
\r
168 @scroll_panel = options.scroll_panel
\r
172 retriever = @scroll_panel.panel()
\r
173 @listenTo(retriever, 'retrieve', @retrieve_panel)
\r
174 retriever.retrieve()
\r
177 retrieve_panel: (@panel) ->
\r
182 @panel = @panel.with_elements() # retake panel for 'with_elements' mode
\r
183 @panel.fetch({cache: true}).done =>
\r
184 @panel.attributes = @panel.replaced_attributes()
\r
185 body = new Pettanr.Views.Scroll.PlayModule.PanelBody({
\r
188 btn = new Pettanr.Views.Scroll.PlayModule.FooterSwitch({
\r
189 scroll_panel: @scroll_panel,
\r
192 @listenTo(btn, 'click', @click_footer_switch)
\r
193 @footer = new Pettanr.Views.Scroll.PlayModule.Footer({
\r
195 scroll_panel: @scroll_panel,
\r
198 @listenTo(@footer, 'click:panel', @click_show)
\r
199 @listenTo(@footer, 'click:author', @click_author)
\r
200 @listenTo(@footer, 'click:insert', @click_insert)
\r
201 @listenTo(@footer, 'click:move', @click_move)
\r
202 @listenTo(@footer, 'click:edit', @click_edit)
\r
203 this.$el.append(body.render().el)
\r
204 this.$el.append(btn.render().el)
\r
205 this.$el.append(@footer.render().el)
\r
206 @trigger('ready', @panel)
\r
210 @set_style({display: 'none'})
\r
213 @set_style({display: 'inline'})
\r
215 set_style: (style) ->
\r
216 attr = {style: Pettanr.to_style(style)}
\r
217 this.$el.attr(attr)
\r
219 click_footer_switch: (visible) ->
\r
226 @trigger('http_get', @panel.show_url())
\r
228 click_author: () ->
\r
229 @trigger('http_get', @panel.author().show_url())
\r
231 click_insert: () ->
\r
232 @trigger('click:insert', this)
\r
235 @trigger('click:move', this)
\r
237 click_destroy: () ->
\r
238 @trigger('click:destroy', this)
\r
240 class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View
\r
242 className: 'player'
\r
244 initialize: (options) ->
\r
245 @parent = options.parent
\r
246 @binder = options.binder
\r
247 @items = options.items
\r
248 @credits = options.credits
\r
253 _.each @items, (scroll_panel) =>
\r
254 return if not scroll_panel.has_panel()
\r
255 panel_view = new Pettanr.Views.Scroll.PlayModule.Panel({
\r
256 scroll: @binder,scroll_panel: scroll_panel,
\r
258 @listenTo(panel_view, 'ready', @ready)
\r
259 @listenTo(panel_view, 'click:insert', @click_insert)
\r
260 @listenTo(panel_view, 'click:move', @click_move)
\r
261 @listenTo(panel_view, 'click:destroy', @click_destroy)
\r
262 this.$el.append(panel_view.clear().el)
\r
263 @views.push(panel_view)
\r
264 rb = new Tag.RowBreak()
\r
265 this.$el.append(rb.render().el)
\r
269 this.credits.push(panel.licensed_pictures())
\r
271 click_insert: (panel_view) ->
\r
272 @trigger('click:insert')
\r
273 @dialog = new Editor.Player.PanelInsertDialog({
\r
276 this.$el.append(@dialog.render().el)
\r
278 @dialog.$el.dialog({
\r
282 close: (ui, event) ->
\r
285 @listenTo(@dialog, 'success', @success)
\r
286 @dialog.start(panel_view.panel)
\r
288 click_move: (panel_view) ->
\r
289 @trigger('click:move')
\r
290 @dialog = new Editor.Player.PanelMoveDialog({
\r
293 this.$el.append(@dialog.render().el)
\r
295 @dialog.$el.dialog({
\r
299 close: (ui, event) ->
\r
302 @listenTo(@dialog, 'success', @success)
\r
303 @dialog.start(panel_view.panel)
\r
306 show_insert_point: () ->
\r
307 _.each @views, (panel_view) =>
\r
308 panel_view.show_insert_point
\r
310 click_destroy: (panel_view) ->
\r
311 @trigger('click:destroy')
\r
313 class Pettanr.Views.Scroll.PlayModule.Body extends Backbone.View
\r
316 initialize: (options) ->
\r
317 @parent = options.parent
\r
318 @binder = options.binder
\r
319 @list = options.list
\r
320 @items = @list.items()
\r
321 if @items.length < 1
\r
326 render_empty: () ->
\r
328 this.$el.append((new Tag.H2({content: I18n.t('scrolls.play.empty')})).render().el)
\r
334 credits = new Pettanr.Views.Scroll.PlayModule.Credits({parent: this})
\r
335 panels = new Pettanr.Views.Scroll.PlayModule.Panels({
\r
341 @listenTo(credits, 'click:credit:icon', @click_credit_icon)
\r
342 this.$el.append(panels.render().el)
\r
343 this.$el.append(credits.render().el)
\r
344 rb = new Tag.RowBreak()
\r
345 this.$el.append(rb.render().el)
\r
349 click_credit_icon: (item) ->
\r
350 @trigger('http_get', item.show_url())
\r
352 class Pettanr.Views.Scroll.Play extends Backbone.View
\r
356 initialize: (options) ->
\r
357 @item = options.item
\r
358 @list = options.list
\r
359 icon_url = Pettanr.url(@item.table_name(), 'show', {id: @item.get('id')})
\r
360 caption_url = Pettanr.url(@item.table_name(), 'play', {id: @item.get('id')})
\r
361 prof_url = Pettanr.url(@item.table_name(), 'show', {id: @item.get('id'), format: 'prof'})
\r
362 @header = new Pettanr.Views.Scroll.PlayModule.Header({
\r
364 caption: @item.get('title'),
\r
365 icon_url: icon_url,
\r
366 caption_url: caption_url,
\r
369 @author = new Pettanr.Views.Show.HeaderAuthor({item: @item})
\r
370 @body = new Pettanr.Views.Scroll.PlayModule.Body({
\r
375 @owner = new Pettanr.Views.Scroll.PlayModule.Owner({item: @item})
\r
376 @listenTo(@header, 'click:pick', @click_pick)
\r
377 @listenTo(@header, 'click:icon', @click_show)
\r
378 @listenTo(@header, 'click:caption', @click_show)
\r
379 @listenTo(@header, 'click:prof', @click_prof)
\r
383 this.$el.append(@header.render().el)
\r
384 this.$el.append(@author.render().el)
\r
385 this.$el.append(@body.render().el)
\r
386 this.$el.append(@owner.render().el) if @item.is_own()
\r