Skip to content
Snippets Groups Projects
Commit c984b1b1 authored by Jason Van Malder's avatar Jason Van Malder
Browse files

[FIX] web_editor: fix required html fields


Issue

    - Studio
    - Add an required html field
    - Create new record
    - Leave it empty

    It is saved

Cause

    The isSet function of FieldHtml widget, have a "/" in the <br> tag
    and summernote empty = <p><br></p>. If you add a space, the value
    becomes <p>&nbsp;&nbsp;   <p>.

Solution

    Remove the "/" and the spaces, check if value != <p></p> &&
    <p><br></p>

OPW-2183687

closes odoo/odoo#44250

Signed-off-by: default avatarAaron Bohy (aab) <aab@odoo.com>
parent a5ff42ce
No related branches found
No related tags found
No related merge requests found
......@@ -116,7 +116,8 @@ var FieldHtml = basic_fields.DebouncedField.extend(TranslatableFieldMixin, {
* @override
*/
isSet: function () {
return this.value && this.value !== "<p><br/></p>" && this.value.match(/\S/);
var value = this.value && this.value.split('&nbsp;').join('').replace(/\s/g, ''); // Removing spaces & html spaces
return value && value !== "<p></p>" && value !== "<p><br></p>" && value.match(/\S/);
},
/**
* @override
......
......@@ -22,6 +22,11 @@ QUnit.module('web_editor', {}, function () {
string: "Displayed name",
type: "char"
},
header: {
string: "Header",
type: "html",
required: true,
},
body: {
string: "Message",
type: "html"
......@@ -30,6 +35,7 @@ QUnit.module('web_editor', {}, function () {
records: [{
id: 1,
display_name: "first record",
header: "<p> &nbsp;&nbsp; <br> </p>",
body: "<p>toto toto toto</p><p>tata</p>",
}],
},
......@@ -126,6 +132,38 @@ QUnit.module('web_editor', {}, function () {
form.destroy();
});
QUnit.test('check if required field is set', async function (assert) {
assert.expect(1);
var form = await testUtils.createView({
View: FormView,
model: 'note.note',
data: this.data,
arch: '<form>' +
'<field name="header" widget="html" style="height: 100px" />' +
'</form>',
res_id: 1,
});
testUtils.mock.intercept(form, 'call_service', function (ev) {
if (ev.data.service === 'notification') {
assert.deepEqual(ev.data.args[0], {
"className": undefined,
"message": "<ul><li>Header</li></ul>",
"sticky": undefined,
"title": "The following fields are invalid:",
"type": "danger"
});
}
}, true);
await testUtils.form.clickEdit(form);
await testUtils.nextTick();
await testUtils.dom.click(form.$('.o_form_button_save'));
form.destroy();
});
QUnit.test('colorpicker', async function (assert) {
assert.expect(6);
......
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