diff --git a/frappe/__init__.py b/frappe/__init__.py index 14d238dc48..421595dff1 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -1230,3 +1230,6 @@ def logger(module=None, with_more_info=True): def get_desk_link(doctype, name): return '{2} {1}'.format(doctype, name, _(doctype)) + +def bold(text): + return '{0}'.format(text) \ No newline at end of file diff --git a/frappe/public/css/docs.css b/frappe/public/css/docs.css index d2adcb7bd6..b354818a3e 100644 --- a/frappe/public/css/docs.css +++ b/frappe/public/css/docs.css @@ -168,6 +168,19 @@ body { .dropdown-navbar-new-comments .dropdown-menu { margin-top: 0; } +@media (max-width: 767px) { + .dropdown-navbar-new-comments.open .dropdown-menu { + position: absolute; + border-top: 1px solid rgba(0, 0, 0, 0.14902); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + background-color: #fff; + right: 0; + left: auto; + } + .dropdown-navbar-new-comments.open .dropdown-menu > li > a { + padding: 12px; + } +} .navbar-new-comments { display: inline-block; min-width: 24px; diff --git a/frappe/public/js/frappe/form/dashboard.js b/frappe/public/js/frappe/form/dashboard.js index 8a5f7d07cd..bb611342b9 100644 --- a/frappe/public/js/frappe/form/dashboard.js +++ b/frappe/public/js/frappe/form/dashboard.js @@ -25,6 +25,7 @@ frappe.ui.form.Dashboard = Class.extend({ // clear links this.links_area.addClass('hidden'); + this.links_area.find('.count, .open-notification').addClass('hidden'); // clear stats this.stats_area.empty().addClass('hidden'); @@ -254,6 +255,7 @@ frappe.ui.form.Dashboard = Class.extend({ if(count) { $link.find('.count') + .removeClass('hidden') .html((count > 9) ? '9+' : count); } diff --git a/frappe/public/js/frappe/ui/filters/filters.js b/frappe/public/js/frappe/ui/filters/filters.js index 47246148dc..f0ee546070 100644 --- a/frappe/public/js/frappe/ui/filters/filters.js +++ b/frappe/public/js/frappe/ui/filters/filters.js @@ -30,6 +30,17 @@ frappe.ui.FilterList = Class.extend({ }, add_filter: function(doctype, fieldname, condition, value, hidden) { + if(!frappe.meta.has_field(doctype, fieldname) + && !in_list(frappe.model.std_fields_list, fieldname)) { + frappe.msgprint({ + message: __('Filter {0} missing', [fieldname.bold()]), + title: 'Invalid Filter', + indicator: 'red' + }); + return; + } + + this.$w.find('.show_filters').toggle(true); var is_new_filter = arguments.length===0; @@ -149,6 +160,7 @@ frappe.ui.Filter = Class.extend({ // add help for "in" codition me.$w.find('.condition').change(function() { + if(!me.field) return; var condition = $(this).val(); if(in_list(["in", "like", "not in", "not like"], condition)) { me.set_field(me.field.df.parent, me.field.df.fieldname, 'Data', condition); diff --git a/frappe/website/js/website.js b/frappe/website/js/website.js index 2556ea42e6..e1f37aac86 100644 --- a/frappe/website/js/website.js +++ b/frappe/website/js/website.js @@ -187,7 +187,7 @@ $.extend(frappe, { send_message: function(opts, btn) { return frappe.call({ type: "POST", - method: "frappe.templates.pages.contact.send_message", + method: "frappe.templates.www.contact.send_message", btn: btn, args: opts, callback: opts.callback