Skip to content
Snippets Groups Projects
Commit c1156915 authored by qsm-odoo's avatar qsm-odoo
Browse files

[FIX] website: load xml dependencies of website.prompt

The deprecated-but-still-used website.prompt requires some static XML
to be loaded to work. In the case of creating a new website page, this
XML was implicitely loaded by the "Content" menu... but when the user
is on a translated page, this menu is not there. Anyway, this static
XML loading should be done by the website.prompt function itself if
necessary.
parent 5823eb87
No related branches found
No related tags found
No related merge requests found
......@@ -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');
......
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;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment