refactor: Move "rename document title" code to separate function

This commit is contained in:
Suraj Shetty 2019-12-23 22:53:53 +05:30 committed by Gavin D'souza
parent 5fa802c203
commit cbcdc93fd6

View file

@ -69,23 +69,61 @@ frappe.ui.form.Toolbar = Class.extend({
can_rename: function() {
return this.frm.perm[0].write && this.frm.meta.allow_rename && !this.frm.doc.__islocal;
},
show_unchanged_document_alert: function() {
frappe.show_alert({
indicator: "yellow",
message: __("Unchanged")
});
},
rename_document_title(new_name, new_title, merge=false) {
const docname = this.frm.doc.name;
const title_field = this.frm.meta.title_field || '';
const doctype = this.frm.doctype;
const warning = __("This cannot be undone");
const message = __("Are you sure you want to merge {0} with {1}?", [docname.bold(), new_name.bold()]);
const confirm_message = message + "<br><b>" + warning + "<b>";
let rename_document = () => {
return frappe.xcall("frappe.model.rename_doc.update_document_title", {
doctype,
docname,
title_field,
old_title: this.frm.doc[title_field],
new_name: new_name,
new_title: new_title,
merge: merge
}).then(new_docname => {
if (new_name != docname) {
$(document).trigger("rename", [doctype, docname, new_docname || new_name]);
if (locals[doctype] && locals[doctype][docname]) delete locals[doctype][docname];
}
});
};
return new Promise((resolve, reject) => {
if (new_title === this.frm.doc[title_field] && new_name === docname) {
this.show_unchanged_document_alert();
resolve();
} else if (merge) {
frappe.confirm(confirm_message, () => {
rename_document().then(resolve).catch(reject);
}, reject);
} else {
rename_document().then(resolve).catch(reject);
}
});
},
setup_editable_title: function () {
let me = this;
function document_unchanged(){
frappe.show_alert({
indicator: "yellow",
message: __("Unchanged")
})
}
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
// check if title is updatable
if (me.is_title_editable()) {
let title_field_label = me.frm.get_docfield(title_field).label;
@ -98,7 +136,7 @@ frappe.ui.form.Toolbar = Class.extend({
});
}
// check if docname is updateable
// check if docname is updatable
if (me.can_rename()) {
fields.push(...[{
label: __("New Name"),
@ -121,45 +159,15 @@ frappe.ui.form.Toolbar = Class.extend({
fields: fields
});
d.show();
d.set_primary_action(__("Rename"), function () {
let args = d.get_values();
if (args.title != me.frm.doc[title_field] || args.name != docname) {
if (args.merge) {
let warning = __("This cannot be undone");
let message = __("Are you sure you want to merge {0} with {1}?", [docname.bold(), args.name.bold()])
let confirm_message = message + "<br><b>" + warning + "<b>";
frappe.confirm(
confirm_message,
function() {
frappe.call({
method: "frappe.model.rename_doc.update_document_title",
args: {
doctype,
docname,
title_field,
old_title: me.frm.doc[title_field],
new_title: args.title,
new_name: args.name,
merge: args.merge
},
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];
}
})
},
document_unchanged
);
}
} else {
document_unchanged()
}
d.hide();
d.set_primary_action(__("Rename"), (values) => {
d.disable_primary_action();
this.rename_document_title(values.name, values.title, values.merge)
.then(() => {
d.hide();
})
.catch(() => {
d.enable_primary_action();
});
});
}
});