[ux] fixes and rememeber_selected in hooks to set default link values

This commit is contained in:
Rushabh Mehta 2016-05-02 13:28:01 +05:30
parent d0d1c9094e
commit 5fb331f8e5
9 changed files with 53 additions and 38 deletions

View file

@ -24,12 +24,12 @@ def get_bootinfo():
get_user(bootinfo)
# system info
bootinfo['sysdefaults'] = frappe.defaults.get_defaults()
bootinfo['server_date'] = frappe.utils.nowdate()
bootinfo.sysdefaults = frappe.defaults.get_defaults()
bootinfo.server_date = frappe.utils.nowdate()
if frappe.session['user'] != 'Guest':
bootinfo['user_info'] = get_fullnames()
bootinfo['sid'] = frappe.session['sid'];
bootinfo.user_info = get_fullnames()
bootinfo.sid = frappe.session['sid'];
bootinfo.modules = {}
bootinfo.module_list = []
@ -47,22 +47,23 @@ def get_bootinfo():
bootinfo.home_folder = frappe.db.get_value("File", {"is_home_folder": 1})
# ipinfo
if frappe.session['data'].get('ipinfo'):
bootinfo['ipinfo'] = frappe.session['data']['ipinfo']
if frappe.session.data.get('ipinfo'):
bootinfo.ipinfo = frappe.session['data']['ipinfo']
# add docs
bootinfo['docs'] = doclist
bootinfo.docs = doclist
for method in hooks.boot_session or []:
frappe.get_attr(method)(bootinfo)
bootinfo.remember_selected = hooks.remember_selected
if bootinfo.lang:
bootinfo.lang = unicode(bootinfo.lang)
bootinfo['versions'] = {k: v['version'] for k, v in get_versions().items()}
bootinfo.versions = {k: v['version'] for k, v in get_versions().items()}
bootinfo.error_report_email = frappe.get_hooks("error_report_email")
bootinfo.calendars = sorted(frappe.get_hooks("calendars"))
bootinfo["lang_dict"] = get_lang_dict()
bootinfo.lang_dict = get_lang_dict()
return bootinfo

View file

@ -939,7 +939,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2016-04-29 08:35:56.180787",
"modified": "2016-05-02 11:00:53.679033",
"modified_by": "Administrator",
"module": "Core",
"name": "Communication",

View file

@ -19,7 +19,7 @@ frappe.defaults = {
// Use User Permission value when only when it has a single value
d = d[0];
} else {
d = defaults[frappe.model.scrub(key)];
d = defaults[key] || defaults[frappe.model.scrub(key)];
}
}
if(!$.isArray(d)) d = [d];

View file

@ -252,7 +252,10 @@ frappe.Application = Class.extend({
})
.keydown("meta+s ctrl+s", function(e) {
e.preventDefault();
if(cur_frm) {
if(cur_dialog) {
// trigger primary
cur_dialog.get_primary_btn().trigger("click");
} else if(cur_frm) {
cur_frm.save_or_update();
} else if(frappe.container.page.save_action) {
frappe.container.page.save_action();

View file

@ -377,6 +377,8 @@ frappe.ui.form.ControlData = frappe.ui.form.ControlInput.extend({
html_element: "input",
input_type: "text",
make_input: function() {
if(this.$input) return;
this.$input = $("<"+ this.html_element +">")
.attr("type", this.input_type)
.attr("autocomplete", "off")
@ -1258,6 +1260,13 @@ frappe.ui.form.ControlLink = frappe.ui.form.ControlData.extend({
ui.item.action.apply(me);
}
// if remember_selected hook is set, add this value
// to defaults so you do not need to set it again
// unless it is changed.
if(frappe.boot.remember_selected && frappe.boot.remember_selected.indexOf(me.df.options)!==-1) {
frappe.boot.user.defaults[me.df.options] = ui.item.value;
}
if(me.frm && me.frm.doc) {
me.selected = true;
me.parse_validate_and_set_in_model(ui.item.value);

View file

@ -66,7 +66,10 @@ frappe.ui.form.quick_entry = function(doctype, success) {
// delete the old doc
frappe.model.clear_doc(dialog.doc.doctype, dialog.doc.name);
var doc = r.message;
if(success) success(doc);
if(success) {
success(doc);
}
frappe.ui.form.update_calling_link(doc.name);
},
error: function() {
open_doc();

View file

@ -178,6 +178,7 @@ frappe.ui.form.save = function(frm, action, callback, btn) {
},
always: function() {
frappe.ui.form.is_saving = false;
frappe.ui.form.update_calling_link(opts.args.doc.name);
}
})
};
@ -188,3 +189,23 @@ frappe.ui.form.save = function(frm, action, callback, btn) {
save();
}
}
frappe.ui.form.update_calling_link = function(name) {
if(frappe._from_link) {
// set value
frappe.model.set_value(frappe._from_link.doctype,
frappe._from_link.docname, frappe._from_link.df.fieldname, name);
// refresh field
frappe._from_link.refresh();
// if from form, switch
if(frappe._from_link.frm) {
frappe.set_route("Form", frappe._from_link.frm.doctype, frappe._from_link.frm.docname);
setTimeout(function() { frappe.utils.scroll_to(frappe._from_link_scrollY); }, 100);
}
frappe._from_link = null;
}
}

View file

@ -121,6 +121,9 @@ $.extend(frappe.model, {
// 2 - look in user defaults
var user_default = frappe.defaults.get_user_default(df.fieldname);
if(!user_default && df.fieldtype==='Link') {
user_default = frappe.defaults.get_user_default(df.options);
}
var is_allowed_user_default = user_default &&
(!has_user_permissions || user_permissions[df.options].indexOf(user_default)!==-1);

View file

@ -404,9 +404,6 @@ _f.Frm.prototype.refresh = function(docname) {
// read only (workflow)
this.read_only = frappe.workflow.is_read_only(this.doctype, this.docname);
// set new doc name if created via link field
this.set_new_docname_from_link();
// check if doctype is already open
if (!this.opendocs[this.docname]) {
this.check_doctype_conflict(this.docname);
@ -464,18 +461,6 @@ _f.Frm.prototype.refresh = function(docname) {
}
}
_f.Frm.prototype.set_new_docname_from_link = function() {
if(frappe._from_link && frappe._new_docname_from_link) {
frappe.model.set_value(frappe._from_link.doctype,
frappe._from_link.docname, frappe._from_link.df.fieldname, frappe._new_docname_from_link);
frappe._from_link.refresh();
frappe._from_link = null;
frappe._new_docname_from_link = null;
}
}
_f.Frm.prototype.show_if_needs_refresh = function() {
if(this.doc.__needs_refresh) {
if(this.doc.__unsaved) {
@ -715,16 +700,6 @@ _f.Frm.prototype._save = function(save_action, callback, btn, on_error) {
on_error();
}
callback && callback(r);
if(frappe._from_link) {
if(me.doctype===frappe._from_link.df.options) {
frappe.set_route("Form", frappe._from_link.frm.doctype, frappe._from_link.frm.docname);
frappe._new_docname_from_link = me.docname;
setTimeout(function() { frappe.utils.scroll_to(frappe._from_link_scrollY); }, 100);
}
}
}
if(save_action != "Update") {