diff --git a/addons/website/static/src/js/widgets/ace.js b/addons/website/static/src/js/widgets/ace.js index f4fe74ddd38..449549264a8 100644 --- a/addons/website/static/src/js/widgets/ace.js +++ b/addons/website/static/src/js/widgets/ace.js @@ -40,23 +40,24 @@ var WebsiteAceEditor = AceEditor.extend({ return this._super.apply(this, arguments).then((function () { var defs = []; if (this.currentType === 'xml') { + // When saving a view, the view ID might change. Thus, the + // active ID in the URL will be incorrect. After the save + // reload, that URL ID won't be found and JS will crash. + // We need to find the new ID (either because the view became + // specific or because its parent was edited too and the view + // got copy/unlink). var selectedView = _.findWhere(this.views, {id: this._getSelectedResource()}); - if (!selectedView.website_id[0]) { - // When saving a generic view, the view will be COW'd and - // replace by the specific view after the reload. Thus the id in - // URL won't exist anymore. We need to find the specific ID. - var context = weContext.get(); - defs.push(this._rpc({ - model: 'ir.ui.view', - method: 'search_read', - fields: ['id'], - domain: [['key', '=', selectedView.key], ['website_id', '=', context.website_id]], - }).then((function (view) { - if (view[0]) { - this._updateHash(view[0].id); - } - }).bind(this))); - } + var context = weContext.get(); + defs.push(this._rpc({ + model: 'ir.ui.view', + method: 'search_read', + fields: ['id'], + domain: [['key', '=', selectedView.key], ['website_id', '=', context.website_id]], + }).then((function (view) { + if (view[0]) { + this._updateHash(view[0].id); + } + }).bind(this))); } return $.when.apply($, defs).then((function () { window.location.reload();