diff options
| author | Vincent Schippefilt <vsc@odoo.com> | 2019-03-06 14:02:33 +0100 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2019-03-06 20:07:17 +0100 |
| commit | 226a6a9e677b1ebded9240e181cc2ea83fa49d72 (patch) | |
| tree | db1caaa11b9905589031b10580db28a5486b2b20 /addons/website/static/src/js/menu/content.js | |
| parent | c39033bc1cff578626b6925ed542cfc8f709e15c (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.js | 170 |
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'); |
