summaryrefslogtreecommitdiff
path: root/addons/website/static/src/js/menu
diff options
context:
space:
mode:
authorVincent Schippefilt <vsc@odoo.com>2019-03-06 14:02:33 +0100
committerAaron Bohy <aab@odoo.com>2019-03-06 20:07:17 +0100
commit226a6a9e677b1ebded9240e181cc2ea83fa49d72 (patch)
treedb1caaa11b9905589031b10580db28a5486b2b20 /addons/website/static/src/js/menu
parentc39033bc1cff578626b6925ed542cfc8f709e15c (diff)
[REF] website: adapt code after jQuery update
Part of task 1896658 Co-authored-by: Aaron Bohy <aab@odoo.com> Co-authored-by: Christophe Matthieu <chm@odoo.com> Co-authored-by: Mathieu Duckerts-Antoine <dam@odoo.com> Co-authored-by: David Monjoie <dmo@odoo.com> Co-authored-by: Martin Geubelle <mge@odoo.com> Co-authored-by: svs-odoo <svs@odoo.com> Co-authored-by: Vincent Schippefilt <vsc@odoo.com>
Diffstat (limited to 'addons/website/static/src/js/menu')
-rw-r--r--addons/website/static/src/js/menu/content.js170
-rw-r--r--addons/website/static/src/js/menu/customize.js36
-rw-r--r--addons/website/static/src/js/menu/edit.js16
-rw-r--r--addons/website/static/src/js/menu/navbar.js29
-rw-r--r--addons/website/static/src/js/menu/new_content.js35
-rw-r--r--addons/website/static/src/js/menu/seo.js75
-rw-r--r--addons/website/static/src/js/menu/translate.js8
7 files changed, 195 insertions, 174 deletions
diff --git a/addons/website/static/src/js/menu/content.js b/addons/website/static/src/js/menu/content.js
index e18de94e084..d9f652cda3a 100644
--- a/addons/website/static/src/js/menu/content.js
+++ b/addons/website/static/src/js/menu/content.js
@@ -92,7 +92,7 @@ var PagePropertiesDialog = weWidgets.Dialog.extend({
self.fields = fields;
}));
- return $.when.apply($, defs);
+ return Promise.all(defs);
},
/**
* @override
@@ -175,7 +175,7 @@ var PagePropertiesDialog = weWidgets.Dialog.extend({
}
this.$('#date_publish_container').datetimepicker(datepickersOptions);
- return $.when.apply($, defs);
+ return Promise.all(defs);
},
/**
* @override
@@ -255,7 +255,7 @@ var PagePropertiesDialog = weWidgets.Dialog.extend({
*
* @private
* @param {integer} moID
- * @returns {Deferred<Array>}
+ * @returns {Promise<Array>}
*/
_getPageDependencies: function (moID) {
return this._rpc({
@@ -269,7 +269,7 @@ var PagePropertiesDialog = weWidgets.Dialog.extend({
*
* @private
* @param {integer} moID
- * @returns {Deferred<Array>}
+ * @returns {Promise<Array>}
*/
_getPageKeyDependencies: function (moID) {
return this._rpc({
@@ -282,7 +282,7 @@ var PagePropertiesDialog = weWidgets.Dialog.extend({
* Retrieves supported mimtype
*
* @private
- * @returns {Deferred<Array>}
+ * @returns {Promise<Array>}
*/
_getSupportedMimetype: function () {
return this._rpc({
@@ -488,7 +488,7 @@ var EditMenuDialog = weWidgets.Dialog.extend({
self.flat = self._flatenize(menu);
self.to_delete = [];
}));
- return $.when.apply($, defs);
+ return Promise.all(defs);
},
/**
* @override
@@ -735,63 +735,73 @@ var ContentMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
*
* @private
* @param {function} [beforeReloadCallback]
- * @returns {Deferred}
+ * @returns {Promise}
* Unresolved if the menu is edited and saved as the page will be
* reloaded.
* Resolved otherwise.
*/
_editMenu: function (beforeReloadCallback) {
var self = this;
- var def = $.Deferred();
-
- // If there is multiple menu on the page, ask the user which one he
- // wants to edit
- var selectDef = $.Deferred();
- if ($('[data-content_menu_id]').length) {
- var select = new SelectEditMenuDialog(this);
- select.on('save', selectDef, selectDef.resolve);
- select.on('cancel', def, def.resolve);
- select.open();
- } else {
- selectDef.resolve(null);
- }
- selectDef.then(function (rootID) {
- // Open the dialog to show the menu structure and allow its edition
- var editDef = $.Deferred();
- var dialog = new EditMenuDialog(self, {}, rootID).open();
- dialog.on('save', editDef, editDef.resolve);
- dialog.on('cancel', def, def.resolve);
- return editDef;
- }).then(function () {
- // Before reloading the page after menu modification, does the
- // given action to do.
- return beforeReloadCallback && beforeReloadCallback();
- }).then(function () {
- // Reload the page so that the menu modification are shown
- window.location.reload(true);
+ return new Promise(function (resolve) {
+ function resolveWhenEditMenuDialogIsCancelled(rootID) {
+ return self._openEditMenuDialog(rootID, beforeReloadCallback).then(resolve);
+ }
+ if ($('[data-content_menu_id]').length) {
+ var select = new SelectEditMenuDialog(self);
+ select.on('save', self, resolveWhenEditMenuDialogIsCancelled);
+ select.on('cancel', self, resolve);
+ select.open();
+ } else {
+ resolveWhenEditMenuDialogIsCancelled(null);
+ }
+ });
+ },
+ /**
+ *
+ * @param {*} rootID
+ * @param {function|undefied} beforeReloadCallback function that returns a promise
+ * @returns {Promise}
+ */
+ _openEditMenuDialog: function (rootID, beforeReloadCallback) {
+ var self = this;
+ return new Promise(function (resolve) {
+ var dialog = new EditMenuDialog(self, {}, rootID);
+ dialog.on('save', self, function () {
+ // Before reloading the page after menu modification, does the
+ // given action to do.
+ if (beforeReloadCallback) {
+ // Reload the page so that the menu modification are shown
+ beforeReloadCallback().then(function () {
+ window.location.reload(true);
+ });
+ } else {
+ window.location.reload(true);
+ }
+ });
+ dialog.on('cancel', self, resolve);
+ dialog.open();
});
-
- return def;
},
+
/**
* Retrieves the value of a page option.
*
* @private
* @param {string} name
- * @returns {Deferred<*>}
+ * @returns {Promise<*>}
*/
_getPageOption: function (name) {
var option = this.pageOptions[name];
if (!option) {
- return $.Deferred().reject();
+ return Promise.reject();
}
- return $.when(option.value);
+ return Promise.resolve(option.value);
},
/**
* On save, simulated page options have to be server-saved.
*
* @private
- * @returns {Deferred}
+ * @returns {Promise}
*/
_onSave: function () {
var self = this;
@@ -803,13 +813,13 @@ var ContentMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
}, true, true);
}
});
- return $.when.apply($, defs);
+ return Promise.all(defs);
},
/**
* Opens the page properties dialog.
*
* @private
- * @returns {Deferred}
+ * @returns {Promise}
*/
_pageProperties: function () {
var mo;
@@ -830,7 +840,7 @@ var ContentMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
* @param {*} [params.value] (change value by default true -> false -> true)
* @param {boolean} [forceSave=false]
* @param {boolean} [noReload=false]
- * @returns {Deferred}
+ * @returns {Promise}
*/
_togglePageOption: function (params, forceSave, noReload) {
// First check it is a website page
@@ -841,13 +851,13 @@ var ContentMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
},
});
if (mo.model !== 'website.page') {
- return $.Deferred().reject();
+ return Promise.reject();
}
// Check if this is a valid option
var option = this.pageOptions[params.name];
if (!option) {
- return $.Deferred().reject();
+ return Promise.reject();
}
// Toggle the value
@@ -856,23 +866,23 @@ var ContentMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
// If simulate is true, it means we want the option to be toggled but
// not saved on the server yet
if (!forceSave) {
- return $.when();
+ return Promise.resolve();
}
// If not, write on the server page and reload the current location
var vals = {};
vals[params.name] = option.value;
- var def = this._rpc({
+ var prom = this._rpc({
model: 'website.page',
method: 'write',
args: [[mo.id], vals],
});
if (noReload) {
- return def;
+ return prom;
}
- return def.then(function () {
+ return prom.then(function () {
window.location.reload();
- return $.Deferred();
+ return new Promise(function () {});
});
},
});
@@ -894,7 +904,7 @@ var PageManagement = Widget.extend({
*
* @private
* @param {integer} moID
- * @returns {Deferred<Array>}
+ * @returns {Promise<Array>}
*/
_getPageDependencies: function (moID) {
return this._rpc({
@@ -941,35 +951,35 @@ var PageManagement = Widget.extend({
// TODO: This function should be integrated in a widget in the future
function _deletePage(pageId, fromPageManagement) {
var self = this;
- var def = $.Deferred();
-
- // Search the page dependencies
- this._getPageDependencies(pageId)
- .then(function (dependencies) {
- // Inform the user about those dependencies and ask him confirmation
- var confirmDef = $.Deferred();
- Dialog.safeConfirm(self, "", {
- title: _t("Delete Page"),
- $content: $(qweb.render('website.delete_page', {dependencies: dependencies})),
- confirm_callback: confirmDef.resolve.bind(confirmDef),
- cancel_callback: def.resolve.bind(self),
- });
- return confirmDef;
- }).then(function () {
- // Delete the page if the user confirmed
- return self._rpc({
- model: 'website.page',
- method: 'unlink',
- args: [pageId],
- });
- }).then(function () {
- if (fromPageManagement) {
- window.location.reload(true);
- }
- else {
- window.location.href = '/';
- }
- }, def.reject.bind(def));
+ var prom = new Promise(function (resolve, reject) {
+ // Search the page dependencies
+ self._getPageDependencies(pageId)
+ .then(function (dependencies) {
+ // Inform the user about those dependencies and ask him confirmation
+ return new Promise(function (confirmResolve, confirmReject) {
+ Dialog.safeConfirm(self, "", {
+ title: _t("Delete Page"),
+ $content: $(qweb.render('website.delete_page', {dependencies: dependencies})),
+ confirm_callback: confirmResolve,
+ cancel_callback: resolve,
+ });
+ });
+ }).then(function () {
+ // Delete the page if the user confirmed
+ return self._rpc({
+ model: 'website.page',
+ method: 'unlink',
+ args: [pageId],
+ });
+ }).then(function () {
+ if (fromPageManagement) {
+ window.location.reload(true);
+ }
+ else {
+ window.location.href = '/';
+ }
+ }, reject);
+ });
}
websiteNavbarData.websiteNavbarRegistry.add(ContentMenu, '#content-menu');
diff --git a/addons/website/static/src/js/menu/customize.js b/addons/website/static/src/js/menu/customize.js
index aced336de2c..59c4e865242 100644
--- a/addons/website/static/src/js/menu/customize.js
+++ b/addons/website/static/src/js/menu/customize.js
@@ -45,7 +45,7 @@ var CustomizeMenu = Widget.extend({
*
* @private
* @param {integer} viewID
- * @returns {Deferred}
+ * @returns {Promise}
* Unresolved if the customization succeeded as the page will be
* reloaded.
* Rejected otherwise.
@@ -57,7 +57,7 @@ var CustomizeMenu = Widget.extend({
args: [[viewID]],
}).then(function () {
window.location.reload();
- return $.Deferred();
+ return new Promise(function () {});
});
},
/**
@@ -65,11 +65,11 @@ var CustomizeMenu = Widget.extend({
* the current page and shows them as switchable elements in the menu.
*
* @private
- * @return {Deferred}
+ * @return {Promise}
*/
_loadCustomizeOptions: function () {
if (this.__customizeOptionsLoaded) {
- return $.when();
+ return Promise.resolve();
}
this.__customizeOptionsLoaded = true;
@@ -169,18 +169,20 @@ var AceEditorMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
* which are used by the current page.
*
* @private
- * @returns {Deferred}
+ * @returns {Promise}
*/
_launchAce: function () {
- var def = $.Deferred();
- this.trigger_up('action_demand', {
- actionName: 'close_all_widgets',
- onSuccess: def.resolve.bind(def),
+ var self = this;
+ var prom = new Promise(function (resolve, reject) {
+ self.trigger_up('action_demand', {
+ actionName: 'close_all_widgets',
+ onSuccess: resolve,
+ });
});
- return def.then((function () {
- if (this.globalEditor) {
- this.globalEditor.do_show();
- return $.when();
+ prom.then(function () {
+ if (self.globalEditor) {
+ self.globalEditor.do_show();
+ return Promise.resolve();
} else {
var currentHash = window.location.hash;
var indexOfView = currentHash.indexOf("?res=");
@@ -193,16 +195,18 @@ var AceEditorMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
}
}
- this.globalEditor = new WebsiteAceEditor(this, $(document.documentElement).data('view-xmlid'), {
+ self.globalEditor = new WebsiteAceEditor(self, $(document.documentElement).data('view-xmlid'), {
initialResID: initialResID,
defaultBundlesRestriction: [
"web.assets_frontend",
"website.assets_frontend",
],
});
- return this.globalEditor.appendTo(document.body);
+ return self.globalEditor.appendTo(document.body);
}
- }).bind(this));
+ });
+
+ return prom;
},
});
diff --git a/addons/website/static/src/js/menu/edit.js b/addons/website/static/src/js/menu/edit.js
index a9712be72bb..a08ca136131 100644
--- a/addons/website/static/src/js/menu/edit.js
+++ b/addons/website/static/src/js/menu/edit.js
@@ -53,7 +53,7 @@ var EditPageMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
// If we auto start the editor, do not show a welcome message
if (this._editorAutoStart) {
- return $.when(def, this._startEditMode());
+ return Promise.all([def, this._startEditMode()]);
}
// Check that the page is empty
@@ -85,7 +85,7 @@ var EditPageMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
* welcome message if necessary.
*
* @private
- * @returns {Deferred}
+ * @returns {Promise}
*/
_startEditMode: function () {
var self = this;
@@ -111,13 +111,13 @@ var EditPageMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
.find('.oe_structure.oe_empty, [data-oe-type="html"]')
.not('[data-editor-message]')
.attr('data-editor-message', _t('DRAG BUILDING BLOCKS HERE'));
- var def = $.Deferred();
- self.trigger_up('widgets_start_request', {
- editableMode: true,
- onSuccess: def.resolve.bind(def),
- onFailure: def.reject.bind(def),
+ new Promise(function (resolve, reject) {
+ self.trigger_up('widgets_start_request', {
+ editableMode: true,
+ onSuccess: resolve,
+ onFailure: reject,
+ });
});
- return def;
});
},
/**
diff --git a/addons/website/static/src/js/menu/navbar.js b/addons/website/static/src/js/menu/navbar.js
index b132b0e2d51..1809f75a3d7 100644
--- a/addons/website/static/src/js/menu/navbar.js
+++ b/addons/website/static/src/js/menu/navbar.js
@@ -26,7 +26,11 @@ var WebsiteNavbar = publicWidget.RootWidget.extend({
*/
init: function () {
this._super.apply(this, arguments);
- this._widgetDefs = [$.Deferred()];
+ var self = this;
+ var initPromise = new Promise(function (resolve) {
+ self.resolveInit = resolve;
+ });
+ this._widgetDefs = [initPromise];
},
/**
* @override
@@ -34,7 +38,7 @@ var WebsiteNavbar = publicWidget.RootWidget.extend({
start: function () {
var self = this;
return this._super.apply(this, arguments).then(function () {
- self._widgetDefs[0].resolve();
+ self.resolveInit();
});
},
@@ -67,7 +71,7 @@ var WebsiteNavbar = publicWidget.RootWidget.extend({
* @private
* @param {string} actionName
* @param {Array} params
- * @returns {Deferred}
+ * @returns {Promise}
*/
_handleAction: function (actionName, params, _i) {
var self = this;
@@ -88,20 +92,20 @@ var WebsiteNavbar = publicWidget.RootWidget.extend({
// instantiated yet (rare) -> retry some times to eventually abort
if (_i > 50) {
console.warn(_.str.sprintf("Action '%s' was not able to be handled.", actionName));
- return $.Deferred().reject();
+ return Promise.reject();
}
return concurrency.delay(100).then(function () {
return self._handleAction(actionName, params, (_i || 0) + 1);
});
}
- return $.when.apply($, defs);
+ return Promise.all(defs);
});
},
/**
* @private
*/
_whenReadyForActions: function () {
- return $.when.apply($, this._widgetDefs);
+ return Promise.all(this._widgetDefs);
},
//--------------------------------------------------------------------------
@@ -118,9 +122,10 @@ var WebsiteNavbar = publicWidget.RootWidget.extend({
_onActionMenuClick: function (ev) {
var $button = $(ev.currentTarget);
$button.prop('disabled', true);
- this._handleAction($button.data('action')).always(function () {
+ var always = function () {
$button.prop('disabled', false);
- });
+ };
+ this._handleAction($button.data('action')).then(always).guardedCatch(always);
},
/**
* Called when an action is asked to be executed from a child widget ->
@@ -130,10 +135,10 @@ var WebsiteNavbar = publicWidget.RootWidget.extend({
_onActionDemand: function (ev) {
var def = this._handleAction(ev.data.actionName, ev.data.params);
if (ev.data.onSuccess) {
- def.done(ev.data.onSuccess);
+ def.then(ev.data.onSuccess);
}
if (ev.data.onFailure) {
- def.fail(ev.data.onFailure);
+ def.guardedCatch(ev.data.onFailure);
}
},
/**
@@ -210,12 +215,12 @@ var WebsiteNavbarActionWidget = Widget.extend({
*
* @param {string} actionName
* @param {Array} params
- * @returns {Deferred|null} action's deferred or null if no action was found
+ * @returns {Promise|null} action's promise or null if no action was found
*/
handleAction: function (actionName, params) {
var action = this[this.actions[actionName]];
if (action) {
- return $.when(action.apply(this, params || []));
+ return Promise.resolve(action.apply(this, params || []));
}
return null;
},
diff --git a/addons/website/static/src/js/menu/new_content.js b/addons/website/static/src/js/menu/new_content.js
index d414bc8a800..46a2ce7d7e2 100644
--- a/addons/website/static/src/js/menu/new_content.js
+++ b/addons/website/static/src/js/menu/new_content.js
@@ -70,7 +70,7 @@ var NewContentMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
* redirects the user to this new page.
*
* @private
- * @returns {Deferred} Unresolved if there is a redirection
+ * @returns {Promise} Unresolved if there is a redirection
*/
_createNewPage: function () {
return wUtils.prompt({
@@ -87,14 +87,16 @@ var NewContentMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
$add.find('input').prop('checked', true);
$group.after($add);
}
- }).then(function (val, field, $dialog) {
+ }).then(function (result) {
+ var val = result.val;
+ var $dialog = result.dialog;
if (!val) {
return;
}
var url = '/website/add/' + encodeURIComponent(val);
if ($dialog.find('input[type="checkbox"]').is(':checked')) url +='?add_menu=1';
document.location = url;
- return $.Deferred();
+ return new Promise(function () {});
});
},
/**
@@ -138,7 +140,7 @@ var NewContentMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
*
* @private
* @param {number} moduleId: the module to install
- * @return {Deferred}
+ * @return {Promise}
*/
_install: function (moduleId) {
this.pendingInstall = true;
@@ -147,7 +149,7 @@ var NewContentMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
model: 'ir.module.module',
method: 'button_immediate_install',
args: [[moduleId]],
- }).fail(function () {
+ }).guardedCatch(function () {
$('body').css('pointer-events', '');
});
},
@@ -155,20 +157,21 @@ var NewContentMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
* Show the menu
*
* @private
- * @returns Deferred
+ * @returns {Promise}
*/
_showMenu: function () {
- var def = $.Deferred();
- this.trigger_up('action_demand', {
- actionName: 'close_all_widgets',
- onSuccess: def.resolve.bind(def),
- });
- return def.then((function () {
- this.firstTab = true;
- this.$newContentMenuChoices.removeClass('o_hidden');
+ var self = this;
+ return new Promise(function (resolve, reject) {
+ self.trigger_up('action_demand', {
+ actionName: 'close_all_widgets',
+ onSuccess: resolve,
+ });
+ }).then(function () {
+ self.firstTab = true;
+ self.$newContentMenuChoices.removeClass('o_hidden');
$('body').addClass('o_new_content_open');
- this.$('> a').focus();
- }).bind(this));
+ self.$('> a').focus();
+ });
},
//--------------------------------------------------------------------------
diff --git a/addons/website/static/src/js/menu/seo.js b/addons/website/static/src/js/menu/seo.js
index 425024539ec..792934a8375 100644
--- a/addons/website/static/src/js/menu/seo.js
+++ b/addons/website/static/src/js/menu/seo.js
@@ -105,6 +105,7 @@ var Keyword = Widget.extend({
this._super(parent);
},
start: function () {
+ var self = this;
this.$('.js_seo_keyword_suggestion').empty();
this.suggestionList = new SuggestionList(this, {
root: this.keyword,
@@ -114,12 +115,12 @@ var Keyword = Widget.extend({
this.suggestionList.on('selected', this, function (word, language) {
this.trigger('selected', word, language);
});
- this.suggestionList.appendTo(this.$('.js_seo_keyword_suggestion'));
-
- this.htmlPage.on('title-changed', this, this._updateTitle);
- this.htmlPage.on('description-changed', this, this._updateDescription);
- this._updateTitle();
- this._updateDescription();
+ return this.suggestionList.appendTo(this.$('.js_seo_keyword_suggestion')).then(function() {
+ self.htmlPage.on('title-changed', self, self._updateTitle);
+ self.htmlPage.on('description-changed', self, self._updateDescription);
+ self._updateTitle();
+ self._updateDescription();
+ });
},
destroy: function () {
this.trigger('removed');
@@ -461,10 +462,10 @@ var MetaKeywords = Widget.extend({
this.keywordList.on('content-updated', this, function (removed) {
self._updateTable(removed);
});
- this.keywordList.insertAfter(this.$('.table thead'));
-
- this._getLanguages();
- this._updateTable();
+ return this.keywordList.insertAfter(this.$('.table thead')).then(function() {
+ self._getLanguages();
+ self._updateTable();
+ });
},
_addKeyword: function () {
var $language = this.$('select[name=seo_page_language]');
@@ -740,39 +741,37 @@ var SeoConfigurator = Dialog.extend({
},
loadMetaData: function () {
var obj = this.getMainObject();
- var def = $.Deferred();
- if (!obj) {
- // return $.Deferred().reject(new Error("No main_object was found."));
- def.resolve(null);
- } else {
- var fields = ['website_meta_title', 'website_meta_description', 'website_meta_keywords'
- ,'website_meta_og_img'];
- if (obj.model === 'website.page'){
- fields.push('website_indexed');
- fields.push('website_id');
- }
- rpc.query({
- model: obj.model,
- method: 'read',
- args: [[obj.id], fields],
- }).then(function (data) {
- if (data.length) {
- var meta = data[0];
- meta.model = obj.model;
- def.resolve(meta);
- } else {
- def.resolve(null);
+ return new Promise(function (resolve, reject) {
+ if (!obj) {
+ // return Promise.reject(new Error("No main_object was found."));
+ resolve(null);
+ } else {
+ var fields = ['website_meta_title', 'website_meta_description', 'website_meta_keywords'
+ ,'website_meta_og_img'];
+ if (obj.model === 'website.page'){
+ fields.push('website_indexed');
+ fields.push('website_id');
}
- }).fail(function () {
- def.reject();
- });
- }
- return def;
+ rpc.query({
+ model: obj.model,
+ method: 'read',
+ args: [[obj.id], fields],
+ }).then(function (data) {
+ if (data.length) {
+ var meta = data[0];
+ meta.model = obj.model;
+ resolve(meta);
+ } else {
+ resolve(null);
+ }
+ }).guardedCatch(reject);
+ }
+ });
},
saveMetaData: function (data) {
var obj = this.getMainObject();
if (!obj) {
- return $.Deferred().reject();
+ return Promise.reject();
} else {
return this._rpc({
model: obj.model,
diff --git a/addons/website/static/src/js/menu/translate.js b/addons/website/static/src/js/menu/translate.js
index 559f9ef3a25..043a900fff6 100644
--- a/addons/website/static/src/js/menu/translate.js
+++ b/addons/website/static/src/js/menu/translate.js
@@ -43,7 +43,7 @@ var TranslatePageMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
* edit mode.
*
* @private
- * @returns {Deferred}
+ * @returns {Promise}
*/
_goToMasterPage: function () {
var lang = '/' + utils.get_cookie('frontend_lang');
@@ -60,19 +60,19 @@ var TranslatePageMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
link.search += (link.search ? '&' : '?') + 'r=' + encodeURIComponent(current.pathname + current.search + current.hash);
window.location = link.href;
- return $.Deferred();
+ return new Promise(function () {});
},
/**
* Redirects the user to the same page in translation mode (or start the
* translator is translation mode is already enabled).
*
* @private
- * @returns {Deferred}
+ * @returns {Promise}
*/
_startTranslateMode: function () {
if (!this._mustEditTranslations) {
window.location.search += '&edit_translations';
- return $.Deferred();
+ return new Promise(function () {});
}
var translator = new TranslatorMenu(this);