[IMP] Misc menu improvements

bzr revid: fme@openerp.com-20131030140216-f2fz7p3waur3l8j7
This commit is contained in:
Fabien Meghazi
2013-10-30 15:02:16 +01:00
parent fcdef0faaf
commit 418e10c382
6 changed files with 42 additions and 31 deletions
+6
View File
@@ -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>
+9 -12
View File
@@ -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
+5
View File
@@ -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
+9 -12
View File
@@ -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
},
+10 -7
View File
@@ -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>