summaryrefslogtreecommitdiff
path: root/addons/website/static/src/js/menu/content.js
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/content.js
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/content.js')
-rw-r--r--addons/website/static/src/js/menu/content.js170
1 files changed, 90 insertions, 80 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');