From c46226dc7b62ca95dc7829d9ad0d0b098b5b4eaf Mon Sep 17 00:00:00 2001 From: Kerolles Fathy Date: Mon, 16 Feb 2026 12:16:46 +0200 Subject: [PATCH] fix: render fetched Text Editor value as plain text on read only field (#37014) * fix: render fetched Text Editor value as plain text on read only fields * fix(link): render Text Editor html value as plain text on search fields area * refactor: convert HTML to text only when value contains HTML * refactor: add check `is_val_html` instead of unescape value --- frappe/public/js/frappe/form/controls/base_input.js | 5 ++++- frappe/public/js/frappe/form/controls/link.js | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/frappe/public/js/frappe/form/controls/base_input.js b/frappe/public/js/frappe/form/controls/base_input.js index 745ab5f620..057caa1165 100644 --- a/frappe/public/js/frappe/form/controls/base_input.js +++ b/frappe/public/js/frappe/form/controls/base_input.js @@ -158,6 +158,7 @@ frappe.ui.form.ControlInput = class ControlInput extends frappe.ui.form.Control } set_disp_area(value) { + let is_val_html = frappe.utils.is_html(value); if ( ["Currency", "Int", "Float"].includes(this.df.fieldtype) && (this.value === 0 || value === 0) @@ -178,7 +179,9 @@ frappe.ui.form.ControlInput = class ControlInput extends frappe.ui.form.Control let display_value = frappe.format(value, this.df, { no_icon: true, inline: true }, doc); // This is used to display formatted output AND showing values in read only fields if (this.disp_area) { - $(this.disp_area).html(display_value); + $(this.disp_area).html( + is_val_html ? frappe.utils.html2text(display_value) : display_value + ); // Apply alignment only for supported fields if ( this.df.alignment && diff --git a/frappe/public/js/frappe/form/controls/link.js b/frappe/public/js/frappe/form/controls/link.js index 3bef4b1e42..4eb237f960 100644 --- a/frappe/public/js/frappe/form/controls/link.js +++ b/frappe/public/js/frappe/form/controls/link.js @@ -242,7 +242,7 @@ frappe.ui.form.ControlLink = class ControlLink extends frappe.ui.form.ControlDat ) { html += '
' + - __(frappe.utils.escape_html(d.description)) + + __(frappe.utils.escape_html(frappe.utils.html2text(d.description))) + ""; } return $(`
`)