From 418e10c382cb0354c85fa62b41ce2cee7f3c0b54 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 30 Oct 2013 15:02:16 +0100 Subject: [PATCH] [IMP] Misc menu improvements bzr revid: fme@openerp.com-20131030140216-f2fz7p3waur3l8j7 --- addons/website/data/website_data.xml | 6 ++++++ addons/website/models/website.py | 21 ++++++++----------- addons/website/static/src/css/editor.css | 5 +++++ addons/website/static/src/css/editor.sass | 3 +++ addons/website/static/src/js/website.menu.js | 21 ++++++++----------- .../website/static/src/xml/website.menu.xml | 17 ++++++++------- 6 files changed, 42 insertions(+), 31 deletions(-) diff --git a/addons/website/data/website_data.xml b/addons/website/data/website_data.xml index da1ba324030..d246b3e6fc1 100644 --- a/addons/website/data/website_data.xml +++ b/addons/website/data/website_data.xml @@ -12,6 +12,12 @@ Main Menu + + Homepage + / + + + Contact us /page/website.contactus diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 0680862bfab..4ac81ead93a 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -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 diff --git a/addons/website/static/src/css/editor.css b/addons/website/static/src/css/editor.css index 43aba049050..0a8e18fa727 100644 --- a/addons/website/static/src/css/editor.css +++ b/addons/website/static/src/css/editor.css @@ -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; diff --git a/addons/website/static/src/css/editor.sass b/addons/website/static/src/css/editor.sass index 91fcc25cfe4..052e473d484 100644 --- a/addons/website/static/src/css/editor.sass +++ b/addons/website/static/src/css/editor.sass @@ -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 diff --git a/addons/website/static/src/js/website.menu.js b/addons/website/static/src/js/website.menu.js index ade1b75e881..e042869b034 100644 --- a/addons/website/static/src/js/website.menu.js +++ b/addons/website/static/src/js/website.menu.js @@ -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 }, diff --git a/addons/website/static/src/xml/website.menu.xml b/addons/website/static/src/xml/website.menu.xml index f4f5e1948a9..8b2580e89bd 100644 --- a/addons/website/static/src/xml/website.menu.xml +++ b/addons/website/static/src/xml/website.menu.xml @@ -2,13 +2,16 @@
  • + - - +
    + + +
      @@ -19,7 +22,7 @@ -