diff --git a/frappe/desk/doctype/note/note.js b/frappe/desk/doctype/note/note.js index e55a1ec724..567e7534ba 100644 --- a/frappe/desk/doctype/note/note.js +++ b/frappe/desk/doctype/note/note.js @@ -2,21 +2,23 @@ frappe.ui.form.on("Note", { refresh: function (frm) { if (!frm.is_new()) { frm.is_note_editable = false; - frm.events.set_editable(frm, frm.is_note_editable); - - if (frm.has_perm("write")) { - frm.add_custom_button(__("Editing mode"), function () { - frm.is_note_editable = !frm.is_note_editable; - frm.events.set_editable(frm, frm.is_note_editable); - }); - } + frm.events.set_editable(frm); } }, - set_editable: function (frm, editable) { + set_editable: function (frm) { + if (frm.has_perm("write")) { + const read_label = __("Read mode"); + const edit_label = __("Edit mode"); + frm.remove_custom_button(frm.is_note_editable ? edit_label : read_label); + frm.add_custom_button(frm.is_note_editable ? read_label : edit_label, function () { + frm.is_note_editable = !frm.is_note_editable; + frm.events.set_editable(frm); + }); + } // toggle "read_only" for content and "hidden" of all other fields // content read_only - frm.set_df_property("content", "read_only", editable ? 0 : 1); + frm.set_df_property("content", "read_only", frm.is_note_editable ? 0 : 1); // hide all other fields for (const field of frm.meta.fields) { @@ -24,14 +26,16 @@ frappe.ui.form.on("Note", { frm.set_df_property( field.fieldname, "hidden", - editable && !field.hidden && frm.get_perm(field.permlevel, "write") ? 0 : 1 + frm.is_note_editable && !field.hidden && frm.get_perm(field.permlevel, "write") + ? 0 + : 1 ); } } // no label, description for content either - frm.get_field("content").toggle_label(editable); - frm.get_field("content").toggle_description(editable); + frm.get_field("content").toggle_label(frm.is_note_editable); + frm.get_field("content").toggle_description(frm.is_note_editable); }, });