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 @tabs.splice(@tabs.indexOf(tab), 1)
\r
48 #@tabs = _.compact(@tabs)
\r
50 @sorted() # recalc t
\r
53 new_tab_z = @new_tab.label.z()
\r
54 _.each @tabs, (tab) ->
\r
56 tab.label.$el.attr('data-z', z + 1) if z >= new_tab_z # new tab too
\r
59 @boards.labels.reorder()
\r
62 @new_tab = new Editor.EditorModule.DockModule.NewElementBoard({
\r
63 parent: this, index: 0, name: 'new'
\r
65 bb = new Editor.EditorModule.DockModule.TabModule.NewElementBoardBody({parent: @new_tab})
\r
68 new Editor.EditorModule.DockModule.TabModule.NewElementBoardLabel({
\r
73 @listenTo(bb, 'pick', @pick)
\r
74 @listenTo(bb, 'dialog:open', @open_dialog)
\r
75 @listenTo(bb, 'dialog:close', @close_dialog)
\r
76 @boards.add_element_tab(@new_tab)
\r
80 @delegateEvents({'activate': 'activate'})
\r
81 this.$el.attr('id', @body.dom_id())
\r
82 this.$el.append(@boards.render().el)
\r
85 activate: (e, ui) ->
\r
86 ui.newPanel.trigger('activate')
\r
92 list = @root_item().zorderd_elements()
\r
93 _.each list, (element) =>
\r
94 @add_element(element)
\r
97 _.each @tabs, (tab) ->
\r
98 return if not tab.element # without new element tab
\r
99 if tab.body.$el.css('display') != 'none'
\r
103 # data-z copy to model
\r
104 new_tab_z = @new_tab.label.z()
\r
105 _.each @tabs, (tab) ->
\r
106 if tab.element # without new_tab
\r
108 z-- if z > new_tab_z # from 0, 1, new tab, 3... to 1, 2, 3...
\r
112 tab.element.trigger('sort')
\r
115 @dock().editor().body
\r
119 _.each @tabs, (tab) ->
\r
120 return if not tab.element # without new element tab
\r
121 form = tab.body.form
\r
122 name = form.item.table_name() + '_attributes'
\r
124 attrs[name].push(form.save_data())
\r
125 _.each @removed_elements, (element) ->
\r
126 name = element.table_name() + '_attributes'
\r
128 attrs[name].push({id: element.get('id'), _destroy: 1})
\r
131 pick: (new_item) ->
\r
132 @add_element(new_item)
\r
133 z = @new_tab.label.z()
\r
134 new_item.set({z: z}, {silent: true})
\r
135 @trigger('pick', new_item)
\r
137 open_dialog: (dialog) ->
\r
138 @trigger('dialog:open', dialog)
\r
140 close_dialog: (dialog) ->
\r
141 @trigger('dialog:close', dialog)
\r
143 destroy: (element) ->
\r
144 @remove_element(element)
\r
145 @trigger('destroy', element)
\r
147 class Editor.EditorModule.DockModule.TabModule.ElementBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel
\r
149 class Editor.EditorModule.DockModule.TabModule.ElementBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody
\r