diff options
Diffstat (limited to 'addons/website/static/src/js/widgets/ace.js')
| -rw-r--r-- | addons/website/static/src/js/widgets/ace.js | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/addons/website/static/src/js/widgets/ace.js b/addons/website/static/src/js/widgets/ace.js index 15df55e0c71..d9440be7b64 100644 --- a/addons/website/static/src/js/widgets/ace.js +++ b/addons/website/static/src/js/widgets/ace.js @@ -39,28 +39,29 @@ 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; - this.trigger_up('context_get', { - callback: function (ctx) { - context = ctx; - }, - }); - 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; + this.trigger_up('context_get', { + callback: function (ctx) { + context = ctx; + }, + }); + 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(); |
