diff options
Diffstat (limited to 'addons/web/static/src/js/chrome/web_client.js')
| -rw-r--r-- | addons/web/static/src/js/chrome/web_client.js | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/addons/web/static/src/js/chrome/web_client.js b/addons/web/static/src/js/chrome/web_client.js index 19ce0a92d41..e79f7d84289 100644 --- a/addons/web/static/src/js/chrome/web_client.js +++ b/addons/web/static/src/js/chrome/web_client.js @@ -55,12 +55,7 @@ return AbstractWebClient.extend({ }); }, load_menus: function () { - return this._rpc({ - model: 'ir.ui.menu', - method: 'load_menus', - args: [config.debug], - context: session.user_context, - }) + return (odoo.loadMenusPromise || odoo.reloadMenus()) .then(function (menuData) { // Compute action_id if not defined on a top menu item for (var i = 0; i < menuData.children.length; i++) { @@ -75,6 +70,7 @@ return AbstractWebClient.extend({ } } } + odoo.loadMenusPromise = null; return menuData; }); }, @@ -82,18 +78,18 @@ return AbstractWebClient.extend({ var self = this; this.set_title(); - return this.instanciate_menu_widgets().then(function () { + return this.menu_dp.add(this.instanciate_menu_widgets()).then(function () { $(window).bind('hashchange', self.on_hashchange); // If the url's state is empty, we execute the user's home action if there is one (we // show the first app if not) var state = $.bbq.getState(true); if (_.keys(state).length === 1 && _.keys(state)[0] === "cids") { - return self._rpc({ + return self.menu_dp.add(self._rpc({ model: 'res.users', method: 'read', args: [session.uid, ["action_id"]], - }) + })) .then(function (result) { var data = result[0]; if (data.action_id) { @@ -143,7 +139,7 @@ return AbstractWebClient.extend({ if (!_.isEqual(self._current_state, stringstate)) { var state = $.bbq.getState(true); if (state.action || (state.model && (state.view_type || state.id))) { - return self.action_manager.loadState(state, !!self._current_state).then(function () { + return self.menu_dp.add(self.action_manager.loadState(state, !!self._current_state)).then(function () { if (state.menu_id) { if (state.menu_id !== self.menu.current_primary_menu) { core.bus.trigger('change_menu_section', state.menu_id); @@ -158,7 +154,7 @@ return AbstractWebClient.extend({ }); } else if (state.menu_id) { var action_id = self.menu.menu_id_to_action_id(state.menu_id); - return self.do_action(action_id, {clear_breadcrumbs: true}).then(function () { + return self.menu_dp.add(self.do_action(action_id, {clear_breadcrumbs: true})).then(function () { core.bus.trigger('change_menu_section', state.menu_id); }); } else { @@ -179,7 +175,7 @@ return AbstractWebClient.extend({ // -------------------------------------------------------------- on_app_clicked: function (ev) { var self = this; - return this.menu_dm.add(data_manager.load_action(ev.data.action_id)) + return this.menu_dp.add(data_manager.load_action(ev.data.action_id)) .then(function (result) { return self.action_mutex.exec(function () { var completed = new Promise(function (resolve, reject) { @@ -210,7 +206,7 @@ return AbstractWebClient.extend({ }, on_menu_clicked: function (ev) { var self = this; - return this.menu_dm.add(data_manager.load_action(ev.data.action_id)) + return this.menu_dp.add(data_manager.load_action(ev.data.action_id)) .then(function (result) { self.$el.removeClass('o_mobile_menu_opened'); |
