diff --git a/frappe/desk/doctype/note/note.js b/frappe/desk/doctype/note/note.js new file mode 100644 index 0000000000..2cd64d8f15 --- /dev/null +++ b/frappe/desk/doctype/note/note.js @@ -0,0 +1,39 @@ +frappe.ui.form.on("Note", { + refresh: function(frm) { + if(frm.doc.__islocal) { + frm.events.set_editable(frm, true); + } else { + // toggle edit + frm.add_custom_button("Edit", function() { + frm.events.set_editable(frm, !frm.is_note_editable); + }) + frm.events.set_editable(frm, false); + } + }, + set_editable: function(frm, editable) { + // hide all fields other than content + + // no permission + if(editable && !frm.perm[0].write) return; + + // content read_only + frm.set_df_property("content", "read_only", editable ? 0: 1); + + // hide all other fields + $.each(frm.fields_dict, function(fieldname, field) { + + if(fieldname !== "content" + && !in_list(["Section Break", "Column Break"], field.df.fieldtype)) { + frm.set_df_property(fieldname, "hidden", editable ? 0: 1); + } + + }) + + // no label, description for content either + frm.get_field("content").toggle_label(editable); + frm.get_field("content").toggle_description(editable); + + // set flag for toggle + frm.is_note_editable = editable; + } +}); diff --git a/frappe/public/js/frappe/form/control.js b/frappe/public/js/frappe/form/control.js index 4b2e5cf7b7..1bf3f9e168 100644 --- a/frappe/public/js/frappe/form/control.js +++ b/frappe/public/js/frappe/form/control.js @@ -180,6 +180,12 @@ frappe.ui.form.ControlInput = frappe.ui.form.Control.extend({ ').appendTo(this.parent); } }, + toggle_label: function(show) { + this.$wrapper.find(".control-label").toggleClass("hide", !show); + }, + toggle_description: function(show) { + this.$wrapper.find(".help-box").toggleClass("hide", !show); + }, set_input_areas: function() { if(this.only_input) { this.input_area = this.wrapper; @@ -637,7 +643,7 @@ frappe.ui.form.ControlButton = frappe.ui.form.ControlData.extend({ this.input = this.$input.get(0); this.set_input_attributes(); this.has_input = true; - this.$wrapper.find(".control-label").addClass("hide"); + this.toggle_label(false); }, onclick: function() { if(this.frm && this.frm.doc) {