diff --git a/addons/website/static/src/js/menu/content.js b/addons/website/static/src/js/menu/content.js index 4d2b430c867e2d0984ac4a47f7c15dea10cd744f..b2408c3b5715bcf939c382ec12c6bf6a99ce9395 100644 --- a/addons/website/static/src/js/menu/content.js +++ b/addons/website/static/src/js/menu/content.js @@ -602,8 +602,8 @@ var ContentMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({ }, }); - var PageManagement = Widget.extend({ + xmlDependencies: ['/website/static/src/xml/website.xml'], events: { 'click a.js_page_properties': '_onPagePropertiesButtonClick', 'click a.js_clone_page': '_onClonePageButtonClick', @@ -686,7 +686,6 @@ var PageManagement = Widget.extend({ }, }); - websiteNavbarData.websiteNavbarRegistry.add(ContentMenu, '#content-menu'); websiteRootData.websiteRootRegistry.add(PageManagement, '#edit_website_pages'); diff --git a/addons/website/static/src/js/utils.js b/addons/website/static/src/js/utils.js index b00192c87d902ebe7b51d16da2de56b4077cccdc..aabd54e174a42a9f4a5d1db6bf145424bf69c5d4 100644 --- a/addons/website/static/src/js/utils.js +++ b/addons/website/static/src/js/utils.js @@ -1,6 +1,7 @@ odoo.define('website.utils', function (require) { 'use strict'; +var ajax = require('web.ajax'); var core = require('web.core'); var weContext = require('web_editor.context'); @@ -70,8 +71,10 @@ function prompt(options, _qweb) { text: options }; } + var xmlDef; if (_.isUndefined(_qweb)) { _qweb = 'website.prompt'; + xmlDef = ajax.loadXML('/website/static/src/xml/website.xml', core.qweb); } options = _.extend({ window_title: '', @@ -86,48 +89,52 @@ function prompt(options, _qweb) { options.field_name = options.field_name || options[type]; var def = $.Deferred(); - var dialog = $(qweb.render(_qweb, options)).appendTo('body'); - options.$dialog = dialog; - var field = dialog.find(options.field_type).first(); - field.val(options['default']); // dict notation for IE<9 - field.fillWith = function (data) { - if (field.is('select')) { - var select = field[0]; - data.forEach(function (item) { - select.options[select.options.length] = new window.Option(item[1], item[0]); + + $.when(xmlDef).then(function () { + var dialog = $(qweb.render(_qweb, options)).appendTo('body'); + options.$dialog = dialog; + var field = dialog.find(options.field_type).first(); + field.val(options['default']); // dict notation for IE<9 + field.fillWith = function (data) { + if (field.is('select')) { + var select = field[0]; + data.forEach(function (item) { + select.options[select.options.length] = new window.Option(item[1], item[0]); + }); + } else { + field.val(data); + } + }; + var init = options.init(field, dialog); + $.when(init).then(function (fill) { + if (fill) { + field.fillWith(fill); + } + dialog.modal('show'); + field.focus(); + dialog.on('click', '.btn-primary', function () { + var backdrop = $('.modal-backdrop'); + def.resolve(field.val(), field, dialog); + dialog.modal('hide').remove(); + backdrop.remove(); }); - } else { - field.val(data); - } - }; - var init = options.init(field, dialog); - $.when(init).then(function (fill) { - if (fill) { - field.fillWith(fill); - } - dialog.modal('show'); - field.focus(); - dialog.on('click', '.btn-primary', function () { + }); + dialog.on('hidden.bs.modal', function () { var backdrop = $('.modal-backdrop'); - def.resolve(field.val(), field, dialog); - dialog.modal('hide').remove(); + def.reject(); + dialog.remove(); backdrop.remove(); }); + if (field.is('input[type="text"], select')) { + field.keypress(function (e) { + if (e.which === 13) { + e.preventDefault(); + dialog.find('.btn-primary').trigger('click'); + } + }); + } }); - dialog.on('hidden.bs.modal', function () { - var backdrop = $('.modal-backdrop'); - def.reject(); - dialog.remove(); - backdrop.remove(); - }); - if (field.is('input[type="text"], select')) { - field.keypress(function (e) { - if (e.which === 13) { - e.preventDefault(); - dialog.find('.btn-primary').trigger('click'); - } - }); - } + return def; }