summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/chrome/web_client.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/chrome/web_client.js')
-rw-r--r--addons/web/static/src/js/chrome/web_client.js22
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');