From fcdef0faaf4c3730c3e0ebe989a3c06c488d60af Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 30 Oct 2013 11:58:03 +0100 Subject: [PATCH] [ADD] delete menu bzr revid: fme@openerp.com-20131030105803-yq7r5lt9vtnd21p0 --- addons/website/models/website.py | 12 +++++++++--- addons/website/static/src/js/website.menu.js | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/addons/website/models/website.py b/addons/website/models/website.py index d6882fdeb68..0680862bfab 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -419,11 +419,17 @@ class website_menu(osv.osv): menu['id'] = new_id if menu['parent_id'] == old_id: menu['parent_id'] = new_id + to_delete = [] for menu in data: - old_id = menu['id'] - if isinstance(old_id, str): + mid = menu['id'] + if 'to_delete' in menu: + to_delete.append(mid) + data.remove(menu) + elif isinstance(mid, str): new_id = self.create(cr, uid, {'name': menu['name']}, context=context) - replace_id(old_id, new_id) + replace_id(mid, new_id) + if to_delete: + self.unlink(cr, uid, to_delete) for menu in data: self.write(cr, uid, [menu['id']], menu, context=context) return True diff --git a/addons/website/static/src/js/website.menu.js b/addons/website/static/src/js/website.menu.js index 1c863d0e085..ade1b75e881 100644 --- a/addons/website/static/src/js/website.menu.js +++ b/addons/website/static/src/js/website.menu.js @@ -9,6 +9,7 @@ template: 'website.menu.dialog.edit', events: _.extend({}, website.editor.Dialog.prototype.events, { 'click button.add-menu': 'add_menu', + 'click button.delete-menu': 'delete_menu', }), init: function (menu) { this.menu = menu; @@ -64,6 +65,19 @@ }); dialog.appendTo(document.body); }, + 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(); + }, save: function () { var self = this; var new_menu = this.$('.oe_menu_editor').nestedSortable('toArray', {startDepthCount: 0});