refactor: Move "rename document title" code to separate function
This commit is contained in:
parent
5fa802c203
commit
cbcdc93fd6
1 changed files with 57 additions and 49 deletions
|
|
@ -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();
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue