1 class Editor.EditorModule.DockModule.ElementBay extends Editor.EditorModule.DockModule.BoardBay
\r
3 initialize: (options) ->
\r
5 @boards = new Editor.EditorModule.DockModule.ElementBay.Boards({
\r
8 @listenTo(@boards, 'sorted', @sorted)
\r
9 @removed_elements = []
\r
11 add_element: (element) ->
\r
12 index = @tabs.length
\r
14 tab = new Editor.EditorModule.DockModule.ElementBoard({
\r
15 parent: this, index: 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
29 remove_element: (element) ->
\r
31 element.set({_destroy: true}, {silent: true})
\r
32 @removed_elements.push element
\r
34 _.each @tabs, (tab) =>
\r
36 if tab.element.cid == element.cid
\r
40 # t.body.form.remove_elements()
\r
42 @remove_tab(t.index)
\r
46 new_tab_z = @new_tab.label.z()
\r
47 _.each @tabs, (tab) ->
\r
49 tab.label.$el.attr('data-z', z + 1) if z >= new_tab_z # new tab too
\r
52 @boards.labels.reorder()
\r
53 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
61 _.each @tabs, (tab) =>
\r
69 @new_tab = new Editor.EditorModule.DockModule.NewElementBoard({
\r
70 parent: this, index: 0, name: 'new'
\r
72 bb = new Editor.EditorModule.DockModule.TabModule.NewElementBoardBody({parent: @new_tab})
\r
75 new Editor.EditorModule.DockModule.TabModule.NewElementBoardLabel({
\r
80 @listenTo(bb, 'pick', @pick)
\r
81 @listenTo(bb, 'dialog:open', @open_dialog)
\r
82 @listenTo(bb, 'dialog:close', @close_dialog)
\r
83 @boards.add_element_tab(@new_tab)
\r
87 @delegateEvents({'activate': 'activate'})
\r
88 this.$el.attr('id', @body.dom_id())
\r
89 this.$el.append(@boards.render().el)
\r
92 activate: (e, ui) ->
\r
93 ui.newPanel.trigger('activate')
\r
99 list = @root_item().zorderd_elements()
\r
100 _.each list, (element) =>
\r
101 @add_element(element)
\r
104 _.each @tabs, (tab) ->
\r
105 return if not tab.element # without new element tab
\r
106 if tab.body.$el.css('display') != 'none'
\r
110 # data-z copy to model
\r
111 new_tab_z = @new_tab.label.z()
\r
112 _.each @tabs, (tab) ->
\r
113 if tab.element # without new_tab
\r
115 z-- if z > new_tab_z # from 0, 1, new tab, 3... to 1, 2, 3...
\r
119 tab.element.trigger('sort')
\r
122 @dock().editor().body
\r
126 _.each @tabs, (tab) ->
\r
127 return if not tab.element # without new element tab
\r
128 form = tab.body.form
\r
129 name = form.item.table_name() + '_attributes'
\r
131 attrs[name].push(form.save_data())
\r
132 _.each @removed_elements, (element) ->
\r
133 name = element.table_name() + '_attributes'
\r
135 attrs[name].push({id: element.get('id'), _destroy: true})
\r
138 pick: (new_item) ->
\r
139 @add_element(new_item)
\r
140 @trigger('pick', new_item)
\r
142 open_dialog: (dialog) ->
\r
143 @trigger('dialog:open', dialog)
\r
145 close_dialog: (dialog) ->
\r
146 @trigger('dialog:close', dialog)
\r
148 destroy: (element) ->
\r
149 @remove_element(element)
\r
150 @trigger('destroy', element)
\r
152 class Editor.EditorModule.DockModule.TabModule.ElementBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel
\r
154 class Editor.EditorModule.DockModule.TabModule.ElementBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody
\r