@@ -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() | |||
@@ -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", | |||
@@ -2,7 +2,7 @@ | |||
padding: 15px; | |||
} | |||
.result-list { | |||
min-height: 200px; | |||
min-height: 400px; | |||
} | |||
.sort-selector .dropdown:hover { | |||
text-decoration: underline; | |||
@@ -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') | |||
@@ -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"}); | |||
} | |||
}); | |||
@@ -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() { | |||
@@ -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<l; i++) { | |||
var handler = frappe.ui.keys.handlers[key][i]; | |||
var _out = handler.apply(this, [e]); | |||
if(_out===false) { | |||
out = _out; | |||
} | |||
} | |||
return out; | |||
} | |||
}); | |||
} | |||
frappe.ui.keys.on = function(key, handler) { | |||
if(!frappe.ui.keys.handlers[key]) { | |||
frappe.ui.keys.handlers[key] = []; | |||
} | |||
frappe.ui.keys.handlers[key].push(handler); | |||
} | |||
frappe.ui.keys.on('ctrl+s', function(e) { | |||
frappe.app.trigger_primary_action(); | |||
e.preventDefault(); | |||
return false; | |||
}); | |||
frappe.ui.keys.on('ctrl+g', function(e) { | |||
$("#navbar-search").focus(); | |||
e.preventDefault(); | |||
return false; | |||
}); | |||
frappe.ui.keys.on('ctrl+b', function(e) { | |||
var route = frappe.get_route(); | |||
if(route[0]==='Form' || route[0]==='List') { | |||
frappe.new_doc(route[1], true); | |||
e.preventDefault(); | |||
return false; | |||
} | |||
}); | |||
frappe.ui.keys.on('Escape', 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; | |||
} | |||
}); | |||
frappe.ui.keys.on('Enter', function(e) { | |||
if(cur_dialog && cur_dialog.confirm_dialog) { | |||
cur_dialog.get_primary_btn().trigger('click'); | |||
} | |||
}); | |||
frappe.ui.keys.on('ctrl+down', function(e) { | |||
var grid_row = frappe.ui.form.get_open_grid_form(); | |||
grid_row && grid_row.toggle_view(false, function() { grid_row.open_next() }); | |||
}); | |||
frappe.ui.keys.on('ctrl+up', function(e) { | |||
var grid_row = frappe.ui.form.get_open_grid_form(); | |||
grid_row && grid_row.toggle_view(false, function() { grid_row.open_prev() }); | |||
}); | |||
frappe.ui.keys.on('shift+ctrl+r', function(e) { | |||
frappe.ui.toolbar.clear_cache(); | |||
}); |
@@ -5,7 +5,7 @@ | |||
} | |||
.result-list { | |||
min-height: 200px; | |||
min-height: 400px; | |||
} | |||
.sort-selector { | |||
@@ -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; | |||
@@ -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 | |||