From a2e2c3652b2e7750124cedd45ae6fbd7693ed471 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 26 Aug 2016 15:46:26 +0530 Subject: [PATCH 1/3] [fix] ctrl+s and other keyboard fixes (#2012) --- frappe/public/build.json | 1 + frappe/public/css/list.css | 2 +- frappe/public/js/frappe/desk.js | 73 +------------------ frappe/public/js/frappe/form/control.js | 10 ++- frappe/public/js/frappe/form/grid.js | 2 +- frappe/public/js/frappe/ui/keyboard.js | 96 +++++++++++++++++++++++++ frappe/public/less/list.less | 2 +- 7 files changed, 105 insertions(+), 81 deletions(-) create mode 100644 frappe/public/js/frappe/ui/keyboard.js diff --git a/frappe/public/build.json b/frappe/public/build.json index 310f51abbb..92233cffbc 100755 --- a/frappe/public/build.json +++ b/frappe/public/build.json @@ -76,6 +76,7 @@ "public/js/frappe/ui/modal.html", "public/js/frappe/dom.js", "public/js/frappe/ui/messages.js", + "public/js/frappe/ui/keyboard.js", "public/js/frappe/request.js", "public/js/frappe/socketio_client.js", diff --git a/frappe/public/css/list.css b/frappe/public/css/list.css index d65c2d05fd..218abdcd26 100644 --- a/frappe/public/css/list.css +++ b/frappe/public/css/list.css @@ -2,7 +2,7 @@ padding: 15px; } .result-list { - min-height: 200px; + min-height: 400px; } .sort-selector .dropdown:hover { text-decoration: underline; diff --git a/frappe/public/js/frappe/desk.js b/frappe/public/js/frappe/desk.js index 9e29d91892..adf92ec60b 100644 --- a/frappe/public/js/frappe/desk.js +++ b/frappe/public/js/frappe/desk.js @@ -27,7 +27,7 @@ frappe.Application = Class.extend({ this.load_bootinfo(); this.make_nav_bar(); this.set_favicon(); - this.setup_keyboard_shortcuts(); + frappe.ui.keys.setup(); this.set_rtl(); if(frappe.boot) { @@ -253,77 +253,6 @@ frappe.Application = Class.extend({ } }, - setup_keyboard_shortcuts: function() { - var me = this; - - $(document) - .keydown("meta+g ctrl+g", function(e) { - $("#navbar-search").focus(); - return false; - }) - .keydown("meta+s ctrl+s", function(e) { - e.preventDefault(); - me.trigger_primary_action(); - return false; - }) - .keydown("meta+b ctrl+b", function(e) { - e.preventDefault(); - var route = frappe.get_route(); - if(route[0]==='Form' || route[0]==='List') { - frappe.new_doc(route[1], true); - } - return false; - }) - .keydown("esc", function(e) { - // close open grid row - var open_row = $(".grid-row-open"); - if(open_row.length) { - var grid_row = open_row.data("grid_row"); - grid_row.toggle_view(false); - return false; - } - - // close open dialog - if(cur_dialog && !cur_dialog.no_cancel_flag) { - cur_dialog.cancel(); - return false; - } - }) - .keydown("return", function() { - if(cur_dialog && cur_dialog.confirm_dialog) { - cur_dialog.get_primary_btn().trigger('click'); - } - }) - .keydown("ctrl+down meta+down", function(e) { - var open_row = $(".grid-row-open"); - if(open_row.length) { - var grid_row = open_row.data("grid_row"); - grid_row.toggle_view(false, function() { grid_row.open_next() }); - return false; - } - }) - .keydown("ctrl+up meta+up", function(e) { - var open_row = $(".grid-row-open"); - if(open_row.length) { - var grid_row = open_row.data("grid_row"); - grid_row.toggle_view(false, function() { grid_row.open_prev() }); - return false; - } - }) - .keydown("ctrl+n meta+n", function(e) { - var open_row = $(".grid-row-open"); - if(open_row.length) { - var grid_row = open_row.data("grid_row"); - grid_row.toggle_view(false, function() { grid_row.grid.add_new_row(grid_row.doc.idx, null, true); }); - return false; - } - }) - .keydown("ctrl+shift+r meta+shift+r", function(e) { - frappe.ui.toolbar.clear_cache(); - }); - - }, - set_rtl: function () { if (["ar", "he"].indexOf(frappe.boot.lang) >= 0) { $('body').addClass('frappe-rtl') diff --git a/frappe/public/js/frappe/form/control.js b/frappe/public/js/frappe/form/control.js index 7f29c23c4b..53321a2de2 100644 --- a/frappe/public/js/frappe/form/control.js +++ b/frappe/public/js/frappe/form/control.js @@ -424,10 +424,6 @@ frappe.ui.form.ControlData = frappe.ui.form.ControlInput.extend({ // somehow this event does not bubble up to document // after v7, if you can debug, remove this - this.$input.keydown("ctrl+s meta+s", function(e) { - e.preventDefault(); - frappe.app && frappe.app.trigger_primary_action(); - }); }, set_input_attributes: function() { this.$input @@ -1319,7 +1315,7 @@ frappe.ui.form.ControlLink = frappe.ui.form.ControlData.extend({ // 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 + if(frappe.boot.remember_selected && frappe.boot.remember_selected.indexOf(me.df.options)!==-1) { frappe.boot.user.last_selected_values[me.df.options] = ui.item.value; } @@ -1438,7 +1434,9 @@ frappe.ui.form.ControlDynamicLink = frappe.ui.form.ControlLink.extend({ frappe.ui.form.ControlCode = frappe.ui.form.ControlText.extend({ make_input: function() { this._super(); - $(this.input_area).find("textarea").css({"height":"400px", "font-family": "Monaco, \"Courier New\", monospace"}); + $(this.input_area).find("textarea") + .allowTabs() + .css({"height":"400px", "font-family": "Monaco, \"Courier New\", monospace"}); } }); diff --git a/frappe/public/js/frappe/form/grid.js b/frappe/public/js/frappe/form/grid.js index 50fdaa4841..1b37bad81c 100644 --- a/frappe/public/js/frappe/form/grid.js +++ b/frappe/public/js/frappe/form/grid.js @@ -1066,7 +1066,7 @@ frappe.ui.form.GridRowForm = Class.extend({ this.wrapper.find(".grid-append-row") .click(function() { me.row.toggle_view(false); - me.row.grid.add_new_row(me.doc.idx+1, null, true); + me.row.grid.add_new_row(me.row.doc.idx+1, null, true); return false; }) this.wrapper.find(".grid-form-heading, .grid-footer-toolbar").on("click", function() { diff --git a/frappe/public/js/frappe/ui/keyboard.js b/frappe/public/js/frappe/ui/keyboard.js new file mode 100644 index 0000000000..979b7c65fd --- /dev/null +++ b/frappe/public/js/frappe/ui/keyboard.js @@ -0,0 +1,96 @@ +frappe.provide('frappe.ui.keys.handlers'); + +frappe.ui.keys.setup = function() { + $(window).on('keydown', function(e) { + var key = e.key; + if(key.substr(0, 5)==='Arrow') { + // ArrowDown -> down + key = key.substr(5).toLowerCase(); + } + if(e.ctrlKey || e.metaKey) { + // add ctrl+ the key + key = 'ctrl+' + key; + } + if(e.shiftKey) { + // add ctrl+ the key + key = 'shift+' + key; + } + if(frappe.ui.keys.handlers[key]) { + var out = null; + for(var i=0, l = frappe.ui.keys.handlers[key].length; i Date: Mon, 29 Aug 2016 11:31:35 +0530 Subject: [PATCH 2/3] [minor] fix for pdf print --- frappe/templates/styles/standard.css | 4 ++-- frappe/utils/pdf.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frappe/templates/styles/standard.css b/frappe/templates/styles/standard.css index d09c1e1852..00fd813af7 100644 --- a/frappe/templates/styles/standard.css +++ b/frappe/templates/styles/standard.css @@ -67,8 +67,8 @@ width: 100%; height: 0; padding: 50% 0; - /*background-size: contain;*/ - background-size: cover; + background-size: contain; + /*background-size: cover;*/ background-repeat: no-repeat; background-position: center center; border-radius: 4px; diff --git a/frappe/utils/pdf.py b/frappe/utils/pdf.py index 8c33022191..07031864a7 100644 --- a/frappe/utils/pdf.py +++ b/frappe/utils/pdf.py @@ -49,7 +49,7 @@ def prepare_options(html, options): 'background': None, 'images': None, 'quiet': None, - 'no-outline': None, + # 'no-outline': None, 'encoding': "UTF-8", # defaults From bacd40be5fee4e5ab78108ad213b377cb1bc778f Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 29 Aug 2016 12:13:27 +0600 Subject: [PATCH 3/3] bumped to version 7.0.30 --- frappe/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index e4b77387d4..136886429f 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -13,7 +13,7 @@ import os, sys, importlib, inspect, json from .exceptions import * from .utils.jinja import get_jenv, get_template, render_template -__version__ = "7.0.29" +__version__ = "7.0.30" local = Local()