diff --git a/frappe/public/css/common.css b/frappe/public/css/common.css index 764860d825..e885c3969d 100644 --- a/frappe/public/css/common.css +++ b/frappe/public/css/common.css @@ -4,7 +4,8 @@ a { a, a:hover, a:active, -a:focus { +a:focus, +.btn { outline: 0; } img { diff --git a/frappe/public/js/frappe/form/script_manager.js b/frappe/public/js/frappe/form/script_manager.js index cd5f34a912..bd28ebe4fc 100644 --- a/frappe/public/js/frappe/form/script_manager.js +++ b/frappe/public/js/frappe/form/script_manager.js @@ -4,13 +4,27 @@ frappe.provide("frappe.ui.form.handlers"); frappe.ui.form.on = frappe.ui.form.on_change = function(doctype, fieldname, handler) { - if(!frappe.ui.form.handlers[doctype]) { - frappe.ui.form.handlers[doctype] = {}; + var add_handler = function(fieldname, handler) { + if(!frappe.ui.form.handlers[doctype]) { + frappe.ui.form.handlers[doctype] = {}; + } + if(!frappe.ui.form.handlers[doctype][fieldname]) { + frappe.ui.form.handlers[doctype][fieldname] = []; + } + frappe.ui.form.handlers[doctype][fieldname].push(handler); } - if(!frappe.ui.form.handlers[doctype][fieldname]) { - frappe.ui.form.handlers[doctype][fieldname] = []; + + if (!handler && $.isPlainObject(fieldname)) { + // a dict of handlers {fieldname: handler, ...} + for (var key in fieldname) { + var fn = fieldname[key]; + if (typeof fn === "function") { + add_handler(key, fn); + } + } + } else { + add_handler(fieldname, handler); } - frappe.ui.form.handlers[doctype][fieldname].push(handler) } frappe.ui.form.trigger = function(doctype, fieldname, callback) { @@ -70,6 +84,7 @@ frappe.ui.form.ScriptManager = Class.extend({ // css doctype.__css && frappe.dom.set_style(doctype.__css); + }, log_error: function(caller, e) { show_alert("Error in Client Script."); diff --git a/frappe/public/js/frappe/misc/utils.js b/frappe/public/js/frappe/misc/utils.js index dace2826ba..2d110f02b7 100644 --- a/frappe/public/js/frappe/misc/utils.js +++ b/frappe/public/js/frappe/misc/utils.js @@ -403,5 +403,9 @@ frappe.utils = { // Return the parsed data. return( arrData ); - } + }, + + warn_page_name_change: function(frm) { + frappe.msgprint("Note: Changing the Page Name will break previous URL to this page."); + }, }; diff --git a/frappe/public/less/common.less b/frappe/public/less/common.less index 10de35f02f..d57fc1631b 100644 --- a/frappe/public/less/common.less +++ b/frappe/public/less/common.less @@ -5,7 +5,7 @@ a { cursor: pointer; } -a, a:hover, a:active, a:focus { +a, a:hover, a:active, a:focus, .btn { outline: 0; } diff --git a/frappe/website/render.py b/frappe/website/render.py index 821c84b96c..a4deb4bc21 100644 --- a/frappe/website/render.py +++ b/frappe/website/render.py @@ -135,6 +135,9 @@ def build_json(path): return get_context(path).data def build_page(path): + if not hasattr(frappe.local, "path"): + frappe.local.path = path + context = get_context(path) html = frappe.get_template(context.base_template_path).render(context)