@@ -24,12 +24,12 @@ def get_bootinfo(): | |||||
get_user(bootinfo) | get_user(bootinfo) | ||||
# system info | # 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': | 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.modules = {} | ||||
bootinfo.module_list = [] | bootinfo.module_list = [] | ||||
@@ -47,22 +47,23 @@ def get_bootinfo(): | |||||
bootinfo.home_folder = frappe.db.get_value("File", {"is_home_folder": 1}) | bootinfo.home_folder = frappe.db.get_value("File", {"is_home_folder": 1}) | ||||
# ipinfo | # 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 | # add docs | ||||
bootinfo['docs'] = doclist | |||||
bootinfo.docs = doclist | |||||
for method in hooks.boot_session or []: | for method in hooks.boot_session or []: | ||||
frappe.get_attr(method)(bootinfo) | frappe.get_attr(method)(bootinfo) | ||||
bootinfo.remember_selected = hooks.remember_selected | |||||
if bootinfo.lang: | if bootinfo.lang: | ||||
bootinfo.lang = unicode(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.error_report_email = frappe.get_hooks("error_report_email") | ||||
bootinfo.calendars = sorted(frappe.get_hooks("calendars")) | bootinfo.calendars = sorted(frappe.get_hooks("calendars")) | ||||
bootinfo["lang_dict"] = get_lang_dict() | |||||
bootinfo.lang_dict = get_lang_dict() | |||||
return bootinfo | return bootinfo | ||||
@@ -939,7 +939,7 @@ | |||||
"issingle": 0, | "issingle": 0, | ||||
"istable": 0, | "istable": 0, | ||||
"max_attachments": 0, | "max_attachments": 0, | ||||
"modified": "2016-04-29 08:35:56.180787", | |||||
"modified": "2016-05-02 11:00:53.679033", | |||||
"modified_by": "Administrator", | "modified_by": "Administrator", | ||||
"module": "Core", | "module": "Core", | ||||
"name": "Communication", | "name": "Communication", | ||||
@@ -19,7 +19,7 @@ frappe.defaults = { | |||||
// Use User Permission value when only when it has a single value | // Use User Permission value when only when it has a single value | ||||
d = d[0]; | d = d[0]; | ||||
} else { | } else { | ||||
d = defaults[frappe.model.scrub(key)]; | |||||
d = defaults[key] || defaults[frappe.model.scrub(key)]; | |||||
} | } | ||||
} | } | ||||
if(!$.isArray(d)) d = [d]; | if(!$.isArray(d)) d = [d]; | ||||
@@ -252,7 +252,10 @@ frappe.Application = Class.extend({ | |||||
}) | }) | ||||
.keydown("meta+s ctrl+s", function(e) { | .keydown("meta+s ctrl+s", function(e) { | ||||
e.preventDefault(); | 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(); | cur_frm.save_or_update(); | ||||
} else if(frappe.container.page.save_action) { | } else if(frappe.container.page.save_action) { | ||||
frappe.container.page.save_action(); | frappe.container.page.save_action(); | ||||
@@ -377,6 +377,8 @@ frappe.ui.form.ControlData = frappe.ui.form.ControlInput.extend({ | |||||
html_element: "input", | html_element: "input", | ||||
input_type: "text", | input_type: "text", | ||||
make_input: function() { | make_input: function() { | ||||
if(this.$input) return; | |||||
this.$input = $("<"+ this.html_element +">") | this.$input = $("<"+ this.html_element +">") | ||||
.attr("type", this.input_type) | .attr("type", this.input_type) | ||||
.attr("autocomplete", "off") | .attr("autocomplete", "off") | ||||
@@ -1258,6 +1260,13 @@ frappe.ui.form.ControlLink = frappe.ui.form.ControlData.extend({ | |||||
ui.item.action.apply(me); | 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) { | if(me.frm && me.frm.doc) { | ||||
me.selected = true; | me.selected = true; | ||||
me.parse_validate_and_set_in_model(ui.item.value); | me.parse_validate_and_set_in_model(ui.item.value); | ||||
@@ -66,7 +66,10 @@ frappe.ui.form.quick_entry = function(doctype, success) { | |||||
// delete the old doc | // delete the old doc | ||||
frappe.model.clear_doc(dialog.doc.doctype, dialog.doc.name); | frappe.model.clear_doc(dialog.doc.doctype, dialog.doc.name); | ||||
var doc = r.message; | var doc = r.message; | ||||
if(success) success(doc); | |||||
if(success) { | |||||
success(doc); | |||||
} | |||||
frappe.ui.form.update_calling_link(doc.name); | |||||
}, | }, | ||||
error: function() { | error: function() { | ||||
open_doc(); | open_doc(); | ||||
@@ -178,6 +178,7 @@ frappe.ui.form.save = function(frm, action, callback, btn) { | |||||
}, | }, | ||||
always: function() { | always: function() { | ||||
frappe.ui.form.is_saving = false; | 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(); | 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; | |||||
} | |||||
} | |||||
@@ -121,6 +121,9 @@ $.extend(frappe.model, { | |||||
// 2 - look in user defaults | // 2 - look in user defaults | ||||
var user_default = frappe.defaults.get_user_default(df.fieldname); | 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 && | var is_allowed_user_default = user_default && | ||||
(!has_user_permissions || user_permissions[df.options].indexOf(user_default)!==-1); | (!has_user_permissions || user_permissions[df.options].indexOf(user_default)!==-1); | ||||
@@ -404,9 +404,6 @@ _f.Frm.prototype.refresh = function(docname) { | |||||
// read only (workflow) | // read only (workflow) | ||||
this.read_only = frappe.workflow.is_read_only(this.doctype, this.docname); | 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 | // check if doctype is already open | ||||
if (!this.opendocs[this.docname]) { | if (!this.opendocs[this.docname]) { | ||||
this.check_doctype_conflict(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() { | _f.Frm.prototype.show_if_needs_refresh = function() { | ||||
if(this.doc.__needs_refresh) { | if(this.doc.__needs_refresh) { | ||||
if(this.doc.__unsaved) { | if(this.doc.__unsaved) { | ||||
@@ -715,16 +700,6 @@ _f.Frm.prototype._save = function(save_action, callback, btn, on_error) { | |||||
on_error(); | on_error(); | ||||
} | } | ||||
callback && callback(r); | 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") { | if(save_action != "Update") { | ||||