feat: toggle between read and edit mode

This commit is contained in:
barredterra 2023-04-24 16:33:34 +02:00
parent 3a35a22d5a
commit df22b98f0c

View file

@ -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);
},
});