1 class Editor.EditorModule.DockModule.ElementBay extends Editor.EditorModule.DockModule.BoardBay
\r
3 initialize: (options) ->
\r
6 @boards = new Editor.EditorModule.DockModule.ElementBay.Boards({
\r
9 @listenTo(@boards, 'sorted', @sorted)
\r
10 @removed_elements = []
\r
12 add_element: (element) ->
\r
14 tab = new Editor.EditorModule.DockModule.ElementBoard({
\r
15 parent: this, index: @current_index, name: element.item_name(), element: element
\r
17 bl = new Editor.EditorModule.DockModule.TabModule.ElementBoardLabel({
\r
19 name: element.item_name()
\r
21 bb = new Editor.EditorModule.DockModule.TabModule.ElementBoardBody({parent: tab})
\r
22 @listenTo(bl, 'destroy', @destroy)
\r
23 @add_tab(tab, bl, bb)
\r
24 @boards.add_element_tab(tab)
\r
25 @boards.$el.tabs('refresh')
\r
26 if element.constructor.has_picture()
\r
27 @trigger('add:credit', element)
\r
28 @sorted() # recalc z
\r
31 find_tab: (element) ->
\r
33 _.each @tabs, (tab) =>
\r
35 if tab.element.cid == element.cid
\r
40 remove_element: (element) ->
\r
42 element.set({_destroy: true}, {silent: true})
\r
43 @removed_elements.push element
\r
44 tab = @find_tab(element)
\r
47 console.log @tabs.indexOf(tab)
\r
48 @tabs.splice(@tabs.indexOf(tab), 1)
\r
49 #@tabs = _.compact(@tabs)
\r
51 @sorted() # recalc t
\r
54 new_tab_z = @new_tab.label.z()
\r
55 _.each @tabs, (tab) ->
\r
57 tab.label.$el.attr('data-z', z + 1) if z >= new_tab_z # new tab too
\r
60 @boards.labels.reorder()
\r
63 @new_tab = new Editor.EditorModule.DockModule.NewElementBoard({
\r
64 parent: this, index: 0, name: 'new'
\r
66 bb = new Editor.EditorModule.DockModule.TabModule.NewElementBoardBody({parent: @new_tab})
\r
69 new Editor.EditorModule.DockModule.TabModule.NewElementBoardLabel({
\r
74 @listenTo(bb, 'pick', @pick)
\r
75 @listenTo(bb, 'dialog:open', @open_dialog)
\r
76 @listenTo(bb, 'dialog:close', @close_dialog)
\r
77 @boards.add_element_tab(@new_tab)
\r
81 @delegateEvents({'activate': 'activate'})
\r
82 this.$el.attr('id', @body.dom_id())
\r
83 this.$el.append(@boards.render().el)
\r
86 activate: (e, ui) ->
\r
87 ui.newPanel.trigger('activate')
\r
93 list = @root_item().zorderd_elements()
\r
94 _.each list, (element) =>
\r
95 @add_element(element)
\r
98 _.each @tabs, (tab) ->
\r
99 return if not tab.element # without new element tab
\r
100 if tab.body.$el.css('display') != 'none'
\r
104 # data-z copy to model
\r
105 new_tab_z = @new_tab.label.z()
\r
106 _.each @tabs, (tab) ->
\r
107 if tab.element # without new_tab
\r
109 z-- if z > new_tab_z # from 0, 1, new tab, 3... to 1, 2, 3...
\r
113 tab.element.trigger('sort')
\r
116 @dock().editor().body
\r
120 _.each @tabs, (tab) ->
\r
121 return if not tab.element # without new element tab
\r
122 form = tab.body.form
\r
123 name = form.item.table_name() + '_attributes'
\r
125 attrs[name].push(form.save_data())
\r
126 _.each @removed_elements, (element) ->
\r
127 name = element.table_name() + '_attributes'
\r
129 attrs[name].push({id: element.get('id'), _destroy: true})
\r
132 pick: (new_item) ->
\r
133 @add_element(new_item)
\r
134 z = @new_tab.label.z()
\r
135 new_item.set({z: z}, {silent: true})
\r
136 @trigger('pick', new_item)
\r
138 open_dialog: (dialog) ->
\r
139 @trigger('dialog:open', dialog)
\r
141 close_dialog: (dialog) ->
\r
142 @trigger('dialog:close', dialog)
\r
144 destroy: (element) ->
\r
145 @remove_element(element)
\r
146 @trigger('destroy', element)
\r
148 class Editor.EditorModule.DockModule.TabModule.ElementBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel
\r
150 class Editor.EditorModule.DockModule.TabModule.ElementBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody
\r