[IMP] Misc menu improvements
bzr revid: fme@openerp.com-20131030140216-f2fz7p3waur3l8j7
This commit is contained in:
@@ -12,6 +12,12 @@
|
||||
<field name="name">Main Menu</field>
|
||||
</record>
|
||||
|
||||
<record id="menu_homepage" model="website.menu">
|
||||
<field name="name">Homepage</field>
|
||||
<field name="url">/</field>
|
||||
<field name="parent_id" ref="website.main_menu"/>
|
||||
</record>
|
||||
|
||||
<record id="menu_contactus" model="website.menu">
|
||||
<field name="name">Contact us</field>
|
||||
<field name="url">/page/website.contactus</field>
|
||||
|
||||
@@ -375,7 +375,7 @@ class website_menu(osv.osv):
|
||||
'sequence': fields.integer('Sequence'),
|
||||
# TODO: support multiwebsite once done for ir.ui.views
|
||||
'website_id': fields.many2one('website', 'Website'),
|
||||
'parent_id': fields.many2one('website.menu', 'Parent Menu', select=True, ondelete="restrict"),
|
||||
'parent_id': fields.many2one('website.menu', 'Parent Menu', select=True, ondelete="cascade"),
|
||||
'parent_left': fields.integer('Parent Left', select=True),
|
||||
'parent_right': fields.integer('Parent Right', select=True),
|
||||
}
|
||||
@@ -412,25 +412,22 @@ class website_menu(osv.osv):
|
||||
|
||||
return menu_items[0]
|
||||
|
||||
def save(self, cr, uid, website_id, data=[], context=None):
|
||||
def save(self, cr, uid, website_id, data, context=None):
|
||||
def replace_id(old_id, new_id):
|
||||
for menu in data:
|
||||
for menu in data['data']:
|
||||
if menu['id'] == old_id:
|
||||
menu['id'] = new_id
|
||||
if menu['parent_id'] == old_id:
|
||||
menu['parent_id'] = new_id
|
||||
to_delete = []
|
||||
for menu in data:
|
||||
to_delete = data['to_delete']
|
||||
if to_delete:
|
||||
self.unlink(cr, uid, to_delete, context=context)
|
||||
for menu in data['data']:
|
||||
mid = menu['id']
|
||||
if 'to_delete' in menu:
|
||||
to_delete.append(mid)
|
||||
data.remove(menu)
|
||||
elif isinstance(mid, str):
|
||||
if isinstance(mid, str):
|
||||
new_id = self.create(cr, uid, {'name': menu['name']}, context=context)
|
||||
replace_id(mid, new_id)
|
||||
if to_delete:
|
||||
self.unlink(cr, uid, to_delete)
|
||||
for menu in data:
|
||||
for menu in data['data']:
|
||||
self.write(cr, uid, [menu['id']], menu, context=context)
|
||||
return True
|
||||
|
||||
|
||||
@@ -142,6 +142,11 @@ table.editorbar-panel td.selected {
|
||||
background: #ffffb6;
|
||||
}
|
||||
|
||||
div.oe_menu_buttons {
|
||||
top: -8px;
|
||||
right: -8px;
|
||||
}
|
||||
|
||||
ul.oe_menu_editor, ul.oe_menu_editor ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
|
||||
@@ -125,6 +125,9 @@ table.editorbar-panel
|
||||
// }}}
|
||||
|
||||
// -------- MENU -------- {{{
|
||||
div.oe_menu_buttons
|
||||
top: -8px
|
||||
right: -8px
|
||||
ul.oe_menu_editor
|
||||
&, & ul
|
||||
list-style-type: none
|
||||
|
||||
@@ -8,13 +8,14 @@
|
||||
website.menu.EditMenuDialog = website.editor.Dialog.extend({
|
||||
template: 'website.menu.dialog.edit',
|
||||
events: _.extend({}, website.editor.Dialog.prototype.events, {
|
||||
'click button.add-menu': 'add_menu',
|
||||
'click button.delete-menu': 'delete_menu',
|
||||
'click button.js_add_menu': 'add_menu',
|
||||
'click button.js_delete_menu': 'delete_menu',
|
||||
}),
|
||||
init: function (menu) {
|
||||
this.menu = menu;
|
||||
this.root_menu_id = menu.id;
|
||||
this.flat = this.flatenize(menu);
|
||||
this.to_delete = [];
|
||||
this._super();
|
||||
},
|
||||
start: function () {
|
||||
@@ -68,15 +69,11 @@
|
||||
delete_menu: function (ev) {
|
||||
var self = this;
|
||||
var $menu = $(ev.currentTarget).parents('[data-menu-id]').first();
|
||||
$menu.find('[data-menu-id]').add($menu).each(function() {
|
||||
var mid = $(this).attr('data-menu-id');
|
||||
if (~mid.indexOf('new-')) {
|
||||
delete(self.flat[mid]);
|
||||
} else {
|
||||
self.flat[mid].to_delete = true;
|
||||
}
|
||||
});
|
||||
$menu.hide();
|
||||
var mid = $menu.data('menu-id')|0;
|
||||
if (mid) {
|
||||
this.to_delete.push(mid);
|
||||
}
|
||||
$menu.remove();
|
||||
},
|
||||
save: function () {
|
||||
var self = this;
|
||||
@@ -99,7 +96,7 @@
|
||||
openerp.jsonRpc('/web/dataset/call_kw', 'call', {
|
||||
model: 'website.menu',
|
||||
method: 'save',
|
||||
args: [[context.website_id], data],
|
||||
args: [[context.website_id], { data: data, to_delete: self.to_delete }],
|
||||
kwargs: {
|
||||
context: context
|
||||
},
|
||||
|
||||
@@ -2,13 +2,16 @@
|
||||
<t t-name="website.menu.dialog.submenu">
|
||||
<li t-att-data-menu-id="submenu.id">
|
||||
<div>
|
||||
<i class="icon-reorder"/>
|
||||
<t t-esc="submenu.name"/>
|
||||
<button type="button" class="btn-xs pull-right delete-menu btn-danger">
|
||||
<i class="icon-trash"/>
|
||||
</button>
|
||||
<button type="button" class="btn-xs pull-right edit-menu btn-primary">
|
||||
<i class="icon-edit"/>
|
||||
</button>
|
||||
<div class="btn-group btn-group-xs pull-right oe_menu_buttons">
|
||||
<button type="button" class="btn js_edit_menu">
|
||||
<i class="icon-edit"/>
|
||||
</button>
|
||||
<button type="button" class="btn js_delete_menu">
|
||||
<i class="icon-trash"/>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<t t-set="children" t-value="submenu.children"/>
|
||||
<ul t-if="children">
|
||||
@@ -19,7 +22,7 @@
|
||||
</li>
|
||||
</t>
|
||||
<t t-name="website.menu.dialog.footer-button">
|
||||
<button type="button" class="btn pull-left add-menu btn-success">
|
||||
<button type="button" class="btn pull-left js_add_menu btn-success">
|
||||
<i class="icon-plus-sign"/> Add Menu Item
|
||||
</button>
|
||||
</t>
|
||||
|
||||
Reference in New Issue
Block a user