[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> <p>.
Solution
Remove the "/" and the spaces, check if value != <p></p> &&
<p><br></p>
OPW-2183687
closes odoo/odoo#44427
X-original-commit: c984b1b1210cea1e63f3bc66cec2120554c76c2a
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
This commit is contained in:
@@ -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(' ').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> <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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user