From 6c9adf95a3f81caefea7e3232ff3972fce22ff0e Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Mon, 7 Oct 2019 16:01:39 +0530 Subject: [PATCH 01/14] fix: rename docname and title --- frappe/model/rename_doc.py | 3 +- frappe/public/js/frappe/form/toolbar.js | 92 ++++++++++++++++++++----- 2 files changed, 76 insertions(+), 19 deletions(-) diff --git a/frappe/model/rename_doc.py b/frappe/model/rename_doc.py index 12c57f2780..f13290d856 100644 --- a/frappe/model/rename_doc.py +++ b/frappe/model/rename_doc.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals, print_function import frappe -from frappe import _ +from frappe import _, bold from frappe.utils import cint from frappe.model.naming import validate_name from frappe.model.dynamic_links import get_dynamic_link_map @@ -83,6 +83,7 @@ def rename_doc(doctype, old, new, force=False, merge=False, ignore_permissions=F frappe.clear_cache() frappe.enqueue('frappe.utils.global_search.rebuild_for_doctype', doctype=doctype) + frappe.msgprint(_('Document renamed from {0} to {1}').format(bold(old), bold(new)), alert=True, indicator='green') return new diff --git a/frappe/public/js/frappe/form/toolbar.js b/frappe/public/js/frappe/form/toolbar.js index 7f5882f517..4957845499 100644 --- a/frappe/public/js/frappe/form/toolbar.js +++ b/frappe/public/js/frappe/form/toolbar.js @@ -64,27 +64,83 @@ frappe.ui.form.Toolbar = Class.extend({ can_rename: function() { return this.frm.perm[0].write && this.frm.meta.allow_rename && !this.frm.doc.__islocal; }, - setup_editable_title: function() { - var me = this; - this.page.$title_area.find(".title-text").on("click", function() { - if(me.is_title_editable()) { - frappe.prompt({fieldname: "title", fieldtype:"Data", - label: __("Title"), reqd: 1, "default": me.frm.doc.title }, - function(data) { - if(data.title) { - me.frm.set_value("title", data.title); - if(!me.frm.doc.__islocal) { - me.frm.save_or_update(); - } else { - me.set_title(); - } - } - }, __("Edit Title"), __("Update")); + setup_editable_title: function () { + let me = this; + + this.page.$title_area.find(".title-text").on("click", () => { + let fields = [] + + // check if title is updateable + if (me.is_title_editable()) { + fields.push({ + label: __("New {0}", [__(me.frm.meta.title_field)]), + fieldname: "title", + fieldtype: "Data", + reqd: 1, + default: me.frm.doc.title + }); } - if(me.can_rename()) { - me.frm.rename_doc(); + + // check if docname is updateable + if (me.can_rename()) { + fields.push(... + [{ + label: __("New Docname"), + fieldname: "name", + fieldtype: "Data", + reqd: 1, + default: me.frm.doc.name + }, { + label: __("Merge with existing"), + fieldname: "merge", + fieldtype: "Check", + default: 0 + }] + ); } + + // create dialog + let d = new frappe.ui.Dialog({ + title: __("Rename Fields"), + fields: fields + }); + d.show(); + + d.set_primary_action(__("Rename"), function () { + let args = d.get_values(); + + if (args.title && me.frm.doc[me.frm.meta.title_field] != args.title) { + me.frm.set_value(me.frm.meta.title_field, args.title); + me.frm.save_or_update(); + } + if (args.name && me.frm.doc.name != args.name) { + rename_doc(d, me.frm.doctype, me.frm.doc.name, args); + } + + d.hide(); + }); }); + + function rename_doc(d, doctype, docname, args) { + frappe.call({ + method: "frappe.model.rename_doc.rename_doc", + args: { + doctype: doctype, + old: docname, + new: args.name, + merge: args.merge + }, + btn: d.get_primary_btn(), + callback: function(r,rt) { + if(!r.exc) { + $(document).trigger('rename', [doctype, docname, + r.message || args.new_name]); + if(locals[doctype] && locals[doctype][docname]) + delete locals[doctype][docname]; + } + } + }); + } }, get_dropdown_menu: function(label) { return this.page.add_dropdown(label); From 55d642f07c600ff00873fa0fa8fae7bbf2965a17 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Mon, 7 Oct 2019 16:38:10 +0530 Subject: [PATCH 02/14] fix: check for read_only fields in title --- frappe/public/js/frappe/form/toolbar.js | 42 ++++++++++++++----------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/frappe/public/js/frappe/form/toolbar.js b/frappe/public/js/frappe/form/toolbar.js index 4957845499..0aa27a09ff 100644 --- a/frappe/public/js/frappe/form/toolbar.js +++ b/frappe/public/js/frappe/form/toolbar.js @@ -52,10 +52,14 @@ frappe.ui.form.Toolbar = Class.extend({ this.set_indicator(); }, is_title_editable: function() { - if (this.frm.meta.title_field==="title" + let title_field = this.frm.meta.title_field; + let field = this.frm.get_field(title_field); + if (title_field==="title" && this.frm.perm[0].write && !this.frm.get_docfield("title").options - && !this.frm.doc.__islocal) { + && !this.frm.doc.__islocal + && field + && !field.df.read_only) { return true; } else { return false; @@ -100,25 +104,27 @@ frappe.ui.form.Toolbar = Class.extend({ } // create dialog - let d = new frappe.ui.Dialog({ - title: __("Rename Fields"), - fields: fields - }); - d.show(); + if (fields.length > 0) { + let d = new frappe.ui.Dialog({ + title: __("Rename Fields"), + fields: fields + }); + d.show(); - d.set_primary_action(__("Rename"), function () { - let args = d.get_values(); + d.set_primary_action(__("Rename"), function () { + let args = d.get_values(); - if (args.title && me.frm.doc[me.frm.meta.title_field] != args.title) { - me.frm.set_value(me.frm.meta.title_field, args.title); - me.frm.save_or_update(); - } - if (args.name && me.frm.doc.name != args.name) { - rename_doc(d, me.frm.doctype, me.frm.doc.name, args); - } + if (args.title && me.frm.doc[me.frm.meta.title_field] != args.title) { + me.frm.set_value(me.frm.meta.title_field, args.title); + me.frm.save_or_update(); + } + if (args.name && me.frm.doc.name != args.name) { + rename_doc(d, me.frm.doctype, me.frm.doc.name, args); + } - d.hide(); - }); + d.hide(); + }); + } }); function rename_doc(d, doctype, docname, args) { From 80a4ab48d322593b86bad58a5ab4a628fca07602 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Mon, 7 Oct 2019 16:57:19 +0530 Subject: [PATCH 03/14] fix: improved readability variable names in toolbar.js --- frappe/public/js/frappe/form/toolbar.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/frappe/public/js/frappe/form/toolbar.js b/frappe/public/js/frappe/form/toolbar.js index 0aa27a09ff..ff522ca2e3 100644 --- a/frappe/public/js/frappe/form/toolbar.js +++ b/frappe/public/js/frappe/form/toolbar.js @@ -73,11 +73,12 @@ frappe.ui.form.Toolbar = Class.extend({ this.page.$title_area.find(".title-text").on("click", () => { let fields = [] + let title_field = me.frm.meta.title_field; // check if title is updateable if (me.is_title_editable()) { fields.push({ - label: __("New {0}", [__(me.frm.meta.title_field)]), + label: __("New {0}", [__(title_field)]), fieldname: "title", fieldtype: "Data", reqd: 1, @@ -114,8 +115,8 @@ frappe.ui.form.Toolbar = Class.extend({ d.set_primary_action(__("Rename"), function () { let args = d.get_values(); - if (args.title && me.frm.doc[me.frm.meta.title_field] != args.title) { - me.frm.set_value(me.frm.meta.title_field, args.title); + if (args.title && me.frm.doc[title_field] != args.title) { + me.frm.set_value(title_field, args.title); me.frm.save_or_update(); } if (args.name && me.frm.doc.name != args.name) { From 4f7589d974e108e9c07a000ef51ab9587610a1dd Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Mon, 7 Oct 2019 22:30:31 +0530 Subject: [PATCH 04/14] style: fixed indent, semicolon and unused varaibles --- frappe/public/js/frappe/form/toolbar.js | 39 +++++++++++-------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/frappe/public/js/frappe/form/toolbar.js b/frappe/public/js/frappe/form/toolbar.js index ff522ca2e3..49cb0f087b 100644 --- a/frappe/public/js/frappe/form/toolbar.js +++ b/frappe/public/js/frappe/form/toolbar.js @@ -72,7 +72,7 @@ frappe.ui.form.Toolbar = Class.extend({ let me = this; this.page.$title_area.find(".title-text").on("click", () => { - let fields = [] + let fields = []; let title_field = me.frm.meta.title_field; // check if title is updateable @@ -88,22 +88,19 @@ frappe.ui.form.Toolbar = Class.extend({ // check if docname is updateable if (me.can_rename()) { - fields.push(... - [{ - label: __("New Docname"), - fieldname: "name", - fieldtype: "Data", - reqd: 1, - default: me.frm.doc.name - }, { - label: __("Merge with existing"), - fieldname: "merge", - fieldtype: "Check", - default: 0 - }] - ); + fields.push(...[{ + label: __("New Docname"), + fieldname: "name", + fieldtype: "Data", + reqd: 1, + default: me.frm.doc.name + }, { + label: __("Merge with existing"), + fieldname: "merge", + fieldtype: "Check", + default: 0 + }]); } - // create dialog if (fields.length > 0) { let d = new frappe.ui.Dialog({ @@ -138,12 +135,10 @@ frappe.ui.form.Toolbar = Class.extend({ merge: args.merge }, btn: d.get_primary_btn(), - callback: function(r,rt) { - if(!r.exc) { - $(document).trigger('rename', [doctype, docname, - r.message || args.new_name]); - if(locals[doctype] && locals[doctype][docname]) - delete locals[doctype][docname]; + callback: function (res) { + if (!res.exc) { + $(document).trigger('rename', [doctype, docname, res.message || args.name]); + if (locals[doctype] && locals[doctype][docname]) delete locals[doctype][docname]; } } }); From f9577535b7bd825f38c1fed00335efc4403eae49 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Tue, 8 Oct 2019 15:55:29 +0530 Subject: [PATCH 05/14] fix: renaming variables, titles --- frappe/public/js/frappe/form/toolbar.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/frappe/public/js/frappe/form/toolbar.js b/frappe/public/js/frappe/form/toolbar.js index 49cb0f087b..7e1363f739 100644 --- a/frappe/public/js/frappe/form/toolbar.js +++ b/frappe/public/js/frappe/form/toolbar.js @@ -53,13 +53,13 @@ frappe.ui.form.Toolbar = Class.extend({ }, is_title_editable: function() { let title_field = this.frm.meta.title_field; - let field = this.frm.get_field(title_field); - if (title_field==="title" + let field = this.frm.get_docfield(title_field); + + if (title_field && this.frm.perm[0].write && !this.frm.get_docfield("title").options && !this.frm.doc.__islocal - && field - && !field.df.read_only) { + && !field.read_only) { return true; } else { return false; @@ -78,18 +78,18 @@ frappe.ui.form.Toolbar = Class.extend({ // check if title is updateable if (me.is_title_editable()) { fields.push({ - label: __("New {0}", [__(title_field)]), + label: __("New {0}", [__(frappe.model.unscrub(title_field))]), fieldname: "title", fieldtype: "Data", reqd: 1, - default: me.frm.doc.title + default: me.frm.doc[title_field] }); } // check if docname is updateable if (me.can_rename()) { fields.push(...[{ - label: __("New Docname"), + label: __("New Name"), fieldname: "name", fieldtype: "Data", reqd: 1, @@ -104,7 +104,7 @@ frappe.ui.form.Toolbar = Class.extend({ // create dialog if (fields.length > 0) { let d = new frappe.ui.Dialog({ - title: __("Rename Fields"), + title: __("Rename"), fields: fields }); d.show(); From 9f5a71009e1f7e47147b0922e6b5046e5b329dd9 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Tue, 8 Oct 2019 16:35:25 +0530 Subject: [PATCH 06/14] fix: blank page on create new form --- frappe/public/js/frappe/form/toolbar.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/form/toolbar.js b/frappe/public/js/frappe/form/toolbar.js index 7e1363f739..53744afb5d 100644 --- a/frappe/public/js/frappe/form/toolbar.js +++ b/frappe/public/js/frappe/form/toolbar.js @@ -54,10 +54,11 @@ frappe.ui.form.Toolbar = Class.extend({ is_title_editable: function() { let title_field = this.frm.meta.title_field; let field = this.frm.get_docfield(title_field); + let title = this.frm.get_docfield("title"); if (title_field && this.frm.perm[0].write - && !this.frm.get_docfield("title").options + && (title ? !title.options : true) && !this.frm.doc.__islocal && !field.read_only) { return true; From 0cf099c5005e040221240afaa16c0ea153f5446a Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Wed, 9 Oct 2019 12:17:37 +0530 Subject: [PATCH 07/14] fix: change use of title to title_field --- frappe/public/js/frappe/form/toolbar.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/frappe/public/js/frappe/form/toolbar.js b/frappe/public/js/frappe/form/toolbar.js index 53744afb5d..8c53f042a0 100644 --- a/frappe/public/js/frappe/form/toolbar.js +++ b/frappe/public/js/frappe/form/toolbar.js @@ -53,14 +53,13 @@ frappe.ui.form.Toolbar = Class.extend({ }, is_title_editable: function() { let title_field = this.frm.meta.title_field; - let field = this.frm.get_docfield(title_field); - let title = this.frm.get_docfield("title"); + let doc_field = this.frm.get_docfield(title_field); if (title_field && this.frm.perm[0].write - && (title ? !title.options : true) && !this.frm.doc.__islocal - && !field.read_only) { + && !doc_field.options + && !doc_field.read_only) { return true; } else { return false; From a1c013b226e8dd17da45e462756aea7e2c15ced9 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Wed, 9 Oct 2019 12:24:20 +0530 Subject: [PATCH 08/14] fix: label of fieldname picked via meta --- frappe/public/js/frappe/form/toolbar.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/form/toolbar.js b/frappe/public/js/frappe/form/toolbar.js index 8c53f042a0..b3780cb177 100644 --- a/frappe/public/js/frappe/form/toolbar.js +++ b/frappe/public/js/frappe/form/toolbar.js @@ -74,11 +74,12 @@ frappe.ui.form.Toolbar = Class.extend({ this.page.$title_area.find(".title-text").on("click", () => { let fields = []; let title_field = me.frm.meta.title_field; + let title_field_label = me.frm.get_docfield(title_field).label // check if title is updateable if (me.is_title_editable()) { fields.push({ - label: __("New {0}", [__(frappe.model.unscrub(title_field))]), + label: __("New {0}", [__(title_field_label)]), fieldname: "title", fieldtype: "Data", reqd: 1, From 37a38c0a5650e03c7e5790fcadc2f342fd2c982d Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Sat, 12 Oct 2019 11:07:27 +0530 Subject: [PATCH 09/14] fix: code break on undefined/null/'' values --- frappe/public/js/frappe/form/toolbar.js | 59 ++++++++++++++----------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/frappe/public/js/frappe/form/toolbar.js b/frappe/public/js/frappe/form/toolbar.js index b3780cb177..ac593994d7 100644 --- a/frappe/public/js/frappe/form/toolbar.js +++ b/frappe/public/js/frappe/form/toolbar.js @@ -58,7 +58,7 @@ frappe.ui.form.Toolbar = Class.extend({ if (title_field && this.frm.perm[0].write && !this.frm.doc.__islocal - && !doc_field.options + && doc_field.fieldtype === "Data" && !doc_field.read_only) { return true; } else { @@ -73,11 +73,12 @@ frappe.ui.form.Toolbar = Class.extend({ this.page.$title_area.find(".title-text").on("click", () => { let fields = []; - let title_field = me.frm.meta.title_field; - let title_field_label = me.frm.get_docfield(title_field).label + let title_field = me.frm.meta.title_field || ''; // check if title is updateable if (me.is_title_editable()) { + let title_field_label = me.frm.get_docfield(title_field).label + fields.push({ label: __("New {0}", [__(title_field_label)]), fieldname: "title", @@ -113,36 +114,42 @@ frappe.ui.form.Toolbar = Class.extend({ d.set_primary_action(__("Rename"), function () { let args = d.get_values(); - if (args.title && me.frm.doc[title_field] != args.title) { - me.frm.set_value(title_field, args.title); - me.frm.save_or_update(); - } - if (args.name && me.frm.doc.name != args.name) { - rename_doc(d, me.frm.doctype, me.frm.doc.name, args); - } + frappe.run_serially([ + rename_doc(d, me.frm.doctype, me.frm.doc.name, args), + me.frm.reload_doc(), + update_title(me, title_field, args) + ]) d.hide(); }); } }); - + function update_title(me, title_field, args) { + if (args.title && me.frm.doc[title_field] != args.title) { + me.frm.set_value(title_field, args.title); + me.frm.save_or_update(); + } + } function rename_doc(d, doctype, docname, args) { - frappe.call({ - method: "frappe.model.rename_doc.rename_doc", - args: { - doctype: doctype, - old: docname, - new: args.name, - merge: args.merge - }, - btn: d.get_primary_btn(), - callback: function (res) { - if (!res.exc) { - $(document).trigger('rename', [doctype, docname, res.message || args.name]); - if (locals[doctype] && locals[doctype][docname]) delete locals[doctype][docname]; + if (args.name && docname != args.name) { + frappe.call({ + method: "frappe.model.rename_doc.rename_doc", + args: { + doctype: doctype, + old: docname, + new: args.name, + merge: args.merge + }, + btn: d.get_primary_btn(), + callback: function (res) { + if (!res.exc) { + $(document).trigger('rename', [doctype, docname, res.message || args.name]); + if (locals[doctype] && locals[doctype][docname]) delete locals[doctype][docname]; + } + return res } - } - }); + }); + } } }, get_dropdown_menu: function(label) { From 12d1d5a649f8696ab22fd6ebd033d030abec5606 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Tue, 15 Oct 2019 00:16:18 +0530 Subject: [PATCH 10/14] fix: shifted tasks to server-side via frappe.call --- frappe/model/rename_doc.py | 16 ++++++++ frappe/public/js/frappe/form/toolbar.js | 53 ++++++++++--------------- 2 files changed, 36 insertions(+), 33 deletions(-) diff --git a/frappe/model/rename_doc.py b/frappe/model/rename_doc.py index f13290d856..8c5a847ad5 100644 --- a/frappe/model/rename_doc.py +++ b/frappe/model/rename_doc.py @@ -10,6 +10,22 @@ from frappe.model.dynamic_links import get_dynamic_link_map from frappe.utils.password import rename_password from frappe.model.utils.user_settings import sync_user_settings, update_user_settings_data + +@frappe.whitelist() +def update_document_title(doctype, document, title_field, old_title, new_title, old_name, new_name): + """ + Update title from header in form view + """ + if new_title and old_title != new_title: + frappe.db.set_value(doctype, document, title_field, new_title) + frappe.msgprint(_('Saved'), alert=True, indicator='green') + + if new_name and old_name != new_name: + return rename_doc(doctype, old_name, new_name) + + return old_name + + @frappe.whitelist() def rename_doc(doctype, old, new, force=False, merge=False, ignore_permissions=False, ignore_if_exists=False): """ diff --git a/frappe/public/js/frappe/form/toolbar.js b/frappe/public/js/frappe/form/toolbar.js index ac593994d7..a3d28c0644 100644 --- a/frappe/public/js/frappe/form/toolbar.js +++ b/frappe/public/js/frappe/form/toolbar.js @@ -73,6 +73,8 @@ frappe.ui.form.Toolbar = Class.extend({ this.page.$title_area.find(".title-text").on("click", () => { let fields = []; + let doctype = me.frm.doctype; + let docname = me.frm.doc.name; let title_field = me.frm.meta.title_field || ''; // check if title is updateable @@ -95,7 +97,7 @@ frappe.ui.form.Toolbar = Class.extend({ fieldname: "name", fieldtype: "Data", reqd: 1, - default: me.frm.doc.name + default: docname }, { label: __("Merge with existing"), fieldname: "merge", @@ -103,6 +105,7 @@ frappe.ui.form.Toolbar = Class.extend({ default: 0 }]); } + // create dialog if (fields.length > 0) { let d = new frappe.ui.Dialog({ @@ -113,41 +116,25 @@ frappe.ui.form.Toolbar = Class.extend({ d.set_primary_action(__("Rename"), function () { let args = d.get_values(); - - frappe.run_serially([ - rename_doc(d, me.frm.doctype, me.frm.doc.name, args), - me.frm.reload_doc(), - update_title(me, title_field, args) - ]) - - d.hide(); - }); - } - }); - function update_title(me, title_field, args) { - if (args.title && me.frm.doc[title_field] != args.title) { - me.frm.set_value(title_field, args.title); - me.frm.save_or_update(); - } - } - function rename_doc(d, doctype, docname, args) { - if (args.name && docname != args.name) { - frappe.call({ - method: "frappe.model.rename_doc.rename_doc", - args: { - doctype: doctype, - old: docname, - new: args.name, - merge: args.merge - }, - btn: d.get_primary_btn(), - callback: function (res) { - if (!res.exc) { + frappe.call({ + method: "frappe.model.rename_doc.update_document_title", + args: { + doctype: doctype, + document: docname, + title_field: title_field || null, + old_title: me.frm.doc[title_field] || null, + new_title: args.title || null, + old_name: docname || null, + new_name: args.name || null + }, + btn: d.get_primary_btn() + }).then((res) => { + if (!res.exc && (args.name != docname)) { $(document).trigger('rename', [doctype, docname, res.message || args.name]); if (locals[doctype] && locals[doctype][docname]) delete locals[doctype][docname]; } - return res - } + }); + d.hide(); }); } } From 6966176e4100ec0f59819746268df0eddd879904 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Wed, 16 Oct 2019 09:40:09 +0530 Subject: [PATCH 11/14] fix: broken js syntax in toolbar.js --- frappe/public/js/frappe/form/toolbar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/form/toolbar.js b/frappe/public/js/frappe/form/toolbar.js index a3d28c0644..b3a961c679 100644 --- a/frappe/public/js/frappe/form/toolbar.js +++ b/frappe/public/js/frappe/form/toolbar.js @@ -137,7 +137,7 @@ frappe.ui.form.Toolbar = Class.extend({ d.hide(); }); } - } + }); }, get_dropdown_menu: function(label) { return this.page.add_dropdown(label); From c4e4247ae121a92ad8c8eae9d77fb0a2131b55a6 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Wed, 16 Oct 2019 23:57:05 +0530 Subject: [PATCH 12/14] fix: added alert to show unchanged status of document --- frappe/public/js/frappe/form/toolbar.js | 44 +++++++++++++++---------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/frappe/public/js/frappe/form/toolbar.js b/frappe/public/js/frappe/form/toolbar.js index b3a961c679..ddd9f0e22a 100644 --- a/frappe/public/js/frappe/form/toolbar.js +++ b/frappe/public/js/frappe/form/toolbar.js @@ -116,24 +116,32 @@ frappe.ui.form.Toolbar = Class.extend({ d.set_primary_action(__("Rename"), function () { let args = d.get_values(); - frappe.call({ - method: "frappe.model.rename_doc.update_document_title", - args: { - doctype: doctype, - document: docname, - title_field: title_field || null, - old_title: me.frm.doc[title_field] || null, - new_title: args.title || null, - old_name: docname || null, - new_name: args.name || null - }, - btn: d.get_primary_btn() - }).then((res) => { - if (!res.exc && (args.name != docname)) { - $(document).trigger('rename', [doctype, docname, res.message || args.name]); - if (locals[doctype] && locals[doctype][docname]) delete locals[doctype][docname]; - } - }); + if (args.title != me.frm.doc[title_field] || args.name != docname) { + frappe.call({ + method: "frappe.model.rename_doc.update_document_title", + args: { + doctype: doctype, + document: docname, + title_field: title_field || null, + old_title: me.frm.doc[title_field] || null, + new_title: args.title || null, + old_name: docname || null, + new_name: args.name || null + }, + btn: d.get_primary_btn() + }).then((res) => { + me.frm.reload_doc(); + if (!res.exc && (args.name != docname)) { + $(document).trigger("rename", [doctype, docname, res.message || args.name]); + if (locals[doctype] && locals[doctype][docname]) delete locals[doctype][docname]; + } + }); + } else { + frappe.show_alert({ + indicator: "yellow", + message: __("Unchanged") + }); + } d.hide(); }); } From 83225791d887a4919ffb43a6dee5a8ae295d4190 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Mon, 21 Oct 2019 16:15:39 +0530 Subject: [PATCH 13/14] fix: cleanup --- frappe/model/rename_doc.py | 4 ++-- frappe/public/js/frappe/form/toolbar.js | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/frappe/model/rename_doc.py b/frappe/model/rename_doc.py index 8c5a847ad5..9b1bf09c4c 100644 --- a/frappe/model/rename_doc.py +++ b/frappe/model/rename_doc.py @@ -12,12 +12,12 @@ from frappe.model.utils.user_settings import sync_user_settings, update_user_set @frappe.whitelist() -def update_document_title(doctype, document, title_field, old_title, new_title, old_name, new_name): +def update_document_title(doctype, docname, title_field, old_title, new_title, old_name, new_name): """ Update title from header in form view """ if new_title and old_title != new_title: - frappe.db.set_value(doctype, document, title_field, new_title) + frappe.db.set_value(doctype, docname, title_field, new_title) frappe.msgprint(_('Saved'), alert=True, indicator='green') if new_name and old_name != new_name: diff --git a/frappe/public/js/frappe/form/toolbar.js b/frappe/public/js/frappe/form/toolbar.js index ddd9f0e22a..fd4b40c3bc 100644 --- a/frappe/public/js/frappe/form/toolbar.js +++ b/frappe/public/js/frappe/form/toolbar.js @@ -120,13 +120,13 @@ frappe.ui.form.Toolbar = Class.extend({ frappe.call({ method: "frappe.model.rename_doc.update_document_title", args: { - doctype: doctype, - document: docname, - title_field: title_field || null, - old_title: me.frm.doc[title_field] || null, - new_title: args.title || null, - old_name: docname || null, - new_name: args.name || null + doctype, + docname, + title_field, + old_title: me.frm.doc[title_field], + new_title: args.title, + old_name: docname, + new_name: args.name }, btn: d.get_primary_btn() }).then((res) => { From 227e6b21a4d69aafcb02cc6f68c3766166eb827f Mon Sep 17 00:00:00 2001 From: gavin Date: Mon, 21 Oct 2019 16:34:23 +0530 Subject: [PATCH 14/14] chore: syntax cleanup --- frappe/public/js/frappe/form/toolbar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/form/toolbar.js b/frappe/public/js/frappe/form/toolbar.js index fd4b40c3bc..200640ee2b 100644 --- a/frappe/public/js/frappe/form/toolbar.js +++ b/frappe/public/js/frappe/form/toolbar.js @@ -79,7 +79,7 @@ frappe.ui.form.Toolbar = Class.extend({ // check if title is updateable if (me.is_title_editable()) { - let title_field_label = me.frm.get_docfield(title_field).label + let title_field_label = me.frm.get_docfield(title_field).label; fields.push({ label: __("New {0}", [__(title_field_label)]),