From a67c90a0d86907a2ac5c2b79a7933f6708ba720b Mon Sep 17 00:00:00 2001 From: jous Date: Wed, 9 Jan 2013 01:23:38 +0200 Subject: [PATCH 1/8] first fix for sql query autofocus and submitting the query with ctrl-enter --- js/functions.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/js/functions.js b/js/functions.js index c76b4d6881..e8041ec07c 100644 --- a/js/functions.js +++ b/js/functions.js @@ -1423,12 +1423,6 @@ AJAX.registerOnload('functions.js', function() { } }); - $('#sqlquery').focus().keydown(function (e) { - if (e.ctrlKey && e.keyCode == 13) { - $("#sqlqueryform").submit(); - } - }); - if ($('#input_username')) { if ($('#input_username').val() == '') { $('#input_username').focus(); @@ -3385,8 +3379,15 @@ AJAX.registerOnload('functions.js', function() { matchBrackets: true, indentUnit: 4, mode: "text/x-mysql", - lineWrapping: true + lineWrapping: true, + onKeyEvent: function (inst, e) { + if (e.type == 'keydown' && e.ctrlKey && (e.keyCode == 13 || e.keyCode == 10)) { + $("#button_submit_query").submit(); + return false; + } + } }); + codemirror_editor.focus(); } }); AJAX.registerTeardown('functions.js', function() { From bd4aedd4558b57583f6518f9803f1b5b24f602bc Mon Sep 17 00:00:00 2001 From: jous Date: Wed, 9 Jan 2013 01:24:37 +0200 Subject: [PATCH 2/8] a bit more flexible fix for sql query autofocus and submitting it with ctrl-enter --- js/functions.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/js/functions.js b/js/functions.js index e8041ec07c..81953275f1 100644 --- a/js/functions.js +++ b/js/functions.js @@ -3379,12 +3379,13 @@ AJAX.registerOnload('functions.js', function() { matchBrackets: true, indentUnit: 4, mode: "text/x-mysql", - lineWrapping: true, - onKeyEvent: function (inst, e) { - if (e.type == 'keydown' && e.ctrlKey && (e.keyCode == 13 || e.keyCode == 10)) { - $("#button_submit_query").submit(); - return false; - } + lineWrapping: true + }); + codemirror_wrapper_element = codemirror_editor.getWrapperElement(); + $(codemirror_wrapper_element).bind('keypress', function (e) { + if (e.ctrlKey && (e.keyCode == 13 || e.keyCode == 10)) { // ctrl-enter is 10 in chrome and ie, but 13 in ff + $("#button_submit_query").submit(); + return false; } }); codemirror_editor.focus(); From 916d44d3f450b336f7af8817704dab3966e993ce Mon Sep 17 00:00:00 2001 From: jous Date: Wed, 9 Jan 2013 01:36:06 +0200 Subject: [PATCH 3/8] moved a comment to previous line --- js/functions.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/js/functions.js b/js/functions.js index 81953275f1..f1d5588b74 100644 --- a/js/functions.js +++ b/js/functions.js @@ -3383,7 +3383,8 @@ AJAX.registerOnload('functions.js', function() { }); codemirror_wrapper_element = codemirror_editor.getWrapperElement(); $(codemirror_wrapper_element).bind('keypress', function (e) { - if (e.ctrlKey && (e.keyCode == 13 || e.keyCode == 10)) { // ctrl-enter is 10 in chrome and ie, but 13 in ff + // ctrl-enter is 10 in chrome and ie, but 13 in ff + if (e.ctrlKey && (e.keyCode == 13 || e.keyCode == 10)) { $("#button_submit_query").submit(); return false; } From aa2d687a15ed7f2e9bc5e09a350bf93993f4a4fe Mon Sep 17 00:00:00 2001 From: jous Date: Wed, 9 Jan 2013 01:47:30 +0200 Subject: [PATCH 4/8] removed unnecessary line --- js/functions.js | 1 - 1 file changed, 1 deletion(-) diff --git a/js/functions.js b/js/functions.js index f1d5588b74..f386cbc434 100644 --- a/js/functions.js +++ b/js/functions.js @@ -3386,7 +3386,6 @@ AJAX.registerOnload('functions.js', function() { // ctrl-enter is 10 in chrome and ie, but 13 in ff if (e.ctrlKey && (e.keyCode == 13 || e.keyCode == 10)) { $("#button_submit_query").submit(); - return false; } }); codemirror_editor.focus(); From 943824f31e11e9adc311f4de07864e3194c86bee Mon Sep 17 00:00:00 2001 From: jous Date: Wed, 9 Jan 2013 04:09:45 +0200 Subject: [PATCH 5/8] added support for autofocus & ctrl-enter in - main sql textarea when codemirror is disabled - inline sql editor --- js/functions.js | 79 +++++++++++++++++++++++++++++++------------------ 1 file changed, 51 insertions(+), 28 deletions(-) diff --git a/js/functions.js b/js/functions.js index f386cbc434..a0bc1d4bb7 100644 --- a/js/functions.js +++ b/js/functions.js @@ -1436,18 +1436,36 @@ AJAX.registerOnload('functions.js', function() { * Binds the CodeMirror to the text area used to inline edit a query. */ function bindCodeMirrorToInlineEditor() { - var $inline_editor = $('textarea[name="sql_query_edit"]'); - if ($inline_editor.length > 0 && typeof CodeMirror !== 'undefined') { - var height = $('#sql_query_edit').css('height'); - codemirror_inline_editor = CodeMirror.fromTextArea($inline_editor[0], { - lineNumbers: true, - matchBrackets: true, - indentUnit: 4, - mode: "text/x-mysql", - lineWrapping: true - }); - codemirror_inline_editor.getScrollerElement().style.height = height; - codemirror_inline_editor.refresh(); + var $inline_editor = $('#sql_query_edit'); + if ($inline_editor.length > 0) { + if (typeof CodeMirror !== 'undefined') { + var height = $('#sql_query_edit').css('height'); + codemirror_inline_editor = CodeMirror.fromTextArea($inline_editor[0], { + lineNumbers: true, + matchBrackets: true, + indentUnit: 4, + mode: "text/x-mysql", + lineWrapping: true + }); + codemirror_inline_editor.getScrollerElement().style.height = height; + codemirror_inline_editor.refresh(); + codemirror_inline_editor.focus(); + $(codemirror_inline_editor.getWrapperElement()).bind('keypress', catch_keypresses_from_sql_textboxes); + } else { + $($inline_editor).bind('keypress', catch_keypresses_from_sql_textboxes); + } + $inline_editor.focus(); + } +} + +function catch_keypresses_from_sql_textboxes(event) { + // ctrl-enter is 10 in chrome and ie, but 13 in ff + if (event.ctrlKey && (event.keyCode == 13 || event.keyCode == 10)) { + if ($('#sql_query_edit').length > 0) { + $("#sql_query_edit_save").trigger('click'); + } else if ($('#sqlquery').length > 0) { + $("#button_submit_query").trigger('click'); + } } } @@ -3373,24 +3391,29 @@ AJAX.registerOnload('functions.js', function() { */ AJAX.registerOnload('functions.js', function() { var $elm = $('#sqlquery'); - if ($elm.length > 0 && typeof CodeMirror != 'undefined') { - codemirror_editor = CodeMirror.fromTextArea($elm[0], { - lineNumbers: true, - matchBrackets: true, - indentUnit: 4, - mode: "text/x-mysql", - lineWrapping: true - }); - codemirror_wrapper_element = codemirror_editor.getWrapperElement(); - $(codemirror_wrapper_element).bind('keypress', function (e) { - // ctrl-enter is 10 in chrome and ie, but 13 in ff - if (e.ctrlKey && (e.keyCode == 13 || e.keyCode == 10)) { - $("#button_submit_query").submit(); - } - }); - codemirror_editor.focus(); + if ($elm.length > 0) { + // for codemirror + if (typeof CodeMirror != 'undefined') { + codemirror_editor = CodeMirror.fromTextArea($elm[0], { + lineNumbers: true, + matchBrackets: true, + indentUnit: 4, + mode: "text/x-mysql", + lineWrapping: true + }); + codemirror_editor.focus(); + $(codemirror_editor.getWrapperElement()).bind('keypress', catch_keypresses_from_sql_textboxes); + return false; + // without codemirror + } else { + $elm.focus(); + $($elm).bind('keypress', catch_keypresses_from_sql_textboxes); + } } }); + + + AJAX.registerTeardown('functions.js', function() { if (codemirror_editor) { $('#sqlquery').text(codemirror_editor.getValue()); From 5e8ec57c34d2b280f9a7991f0b418dbeb51c87a6 Mon Sep 17 00:00:00 2001 From: jous Date: Wed, 9 Jan 2013 05:33:52 +0200 Subject: [PATCH 6/8] moved $inline_editor.focus() to a better place. changed function name catch_keypresses_from_sql_textboxes -> catchKeypressesFromSqlTextboxes. lots of tab to spaces conversions. --- js/functions.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/js/functions.js b/js/functions.js index a0bc1d4bb7..a54d1aec5d 100644 --- a/js/functions.js +++ b/js/functions.js @@ -1438,7 +1438,7 @@ AJAX.registerOnload('functions.js', function() { function bindCodeMirrorToInlineEditor() { var $inline_editor = $('#sql_query_edit'); if ($inline_editor.length > 0) { - if (typeof CodeMirror !== 'undefined') { + if (typeof CodeMirror !== 'undefined') { var height = $('#sql_query_edit').css('height'); codemirror_inline_editor = CodeMirror.fromTextArea($inline_editor[0], { lineNumbers: true, @@ -1450,20 +1450,20 @@ function bindCodeMirrorToInlineEditor() { codemirror_inline_editor.getScrollerElement().style.height = height; codemirror_inline_editor.refresh(); codemirror_inline_editor.focus(); - $(codemirror_inline_editor.getWrapperElement()).bind('keypress', catch_keypresses_from_sql_textboxes); + $(codemirror_inline_editor.getWrapperElement()).bind('keypress', catchKeypressesFromSqlTextboxes); } else { - $($inline_editor).bind('keypress', catch_keypresses_from_sql_textboxes); + $inline_editor.focus(); + $inline_editor.bind('keypress', catchKeypressesFromSqlTextboxes); } - $inline_editor.focus(); } } -function catch_keypresses_from_sql_textboxes(event) { +function catchKeypressesFromSqlTextboxes(event) { // ctrl-enter is 10 in chrome and ie, but 13 in ff if (event.ctrlKey && (event.keyCode == 13 || event.keyCode == 10)) { if ($('#sql_query_edit').length > 0) { $("#sql_query_edit_save").trigger('click'); - } else if ($('#sqlquery').length > 0) { + } else if ($('#sqlquery').length > 0) { $("#button_submit_query").trigger('click'); } } @@ -3402,12 +3402,12 @@ AJAX.registerOnload('functions.js', function() { lineWrapping: true }); codemirror_editor.focus(); - $(codemirror_editor.getWrapperElement()).bind('keypress', catch_keypresses_from_sql_textboxes); - return false; + $(codemirror_editor.getWrapperElement()).bind('keypress', catchKeypressesFromSqlTextboxes); + return false; // without codemirror } else { $elm.focus(); - $($elm).bind('keypress', catch_keypresses_from_sql_textboxes); + $($elm).bind('keypress', catchKeypressesFromSqlTextboxes); } } }); From 31154ea5018cf62912b732610f4b1b712ff902fa Mon Sep 17 00:00:00 2001 From: jous Date: Wed, 9 Jan 2013 15:11:15 +0200 Subject: [PATCH 7/8] Added unbindings to ctrl-enter event listeners Changed keypress events to keydown. --- js/functions.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/js/functions.js b/js/functions.js index a54d1aec5d..2058d6467b 100644 --- a/js/functions.js +++ b/js/functions.js @@ -1315,12 +1315,17 @@ AJAX.registerTeardown('functions.js', function() { $('input.sqlbutton').unbind('click'); $("#export_type").unbind('change'); $('#sqlquery').unbind('keydown'); + $('#sql_query_edit').unbind('keydown'); if (codemirror_inline_editor) { // Copy the sql query to the text area to preserve it. $('#sql_query_edit').text(codemirror_inline_editor.getValue()); codemirror_inline_editor.toTextArea(); codemirror_inline_editor = false; + $(codemirror_inline_editor.getWrapperElement()).unbind('keydown'); + } + if (codemirror_editor) { + $(codemirror_editor.getWrapperElement()).unbind('keydown'); } }); @@ -1450,10 +1455,10 @@ function bindCodeMirrorToInlineEditor() { codemirror_inline_editor.getScrollerElement().style.height = height; codemirror_inline_editor.refresh(); codemirror_inline_editor.focus(); - $(codemirror_inline_editor.getWrapperElement()).bind('keypress', catchKeypressesFromSqlTextboxes); + $(codemirror_inline_editor.getWrapperElement()).bind('keydown', catchKeypressesFromSqlTextboxes); } else { $inline_editor.focus(); - $inline_editor.bind('keypress', catchKeypressesFromSqlTextboxes); + $inline_editor.bind('keydown', catchKeypressesFromSqlTextboxes); } } } @@ -3402,18 +3407,15 @@ AJAX.registerOnload('functions.js', function() { lineWrapping: true }); codemirror_editor.focus(); - $(codemirror_editor.getWrapperElement()).bind('keypress', catchKeypressesFromSqlTextboxes); + $(codemirror_editor.getWrapperElement()).bind('keydown', catchKeypressesFromSqlTextboxes); return false; // without codemirror } else { $elm.focus(); - $($elm).bind('keypress', catchKeypressesFromSqlTextboxes); + $($elm).bind('keydown', catchKeypressesFromSqlTextboxes); } } }); - - - AJAX.registerTeardown('functions.js', function() { if (codemirror_editor) { $('#sqlquery').text(codemirror_editor.getValue()); From 5a698bc2b4e477bdb2f9994891352fec4fa511f1 Mon Sep 17 00:00:00 2001 From: jous Date: Wed, 9 Jan 2013 15:44:46 +0200 Subject: [PATCH 8/8] moved unbinding to an existing element --- js/functions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/functions.js b/js/functions.js index 2058d6467b..fd43b6b76b 100644 --- a/js/functions.js +++ b/js/functions.js @@ -1320,9 +1320,9 @@ AJAX.registerTeardown('functions.js', function() { if (codemirror_inline_editor) { // Copy the sql query to the text area to preserve it. $('#sql_query_edit').text(codemirror_inline_editor.getValue()); + $(codemirror_inline_editor.getWrapperElement()).unbind('keydown'); codemirror_inline_editor.toTextArea(); codemirror_inline_editor = false; - $(codemirror_inline_editor.getWrapperElement()).unbind('keydown'); } if (codemirror_editor) { $(codemirror_editor.getWrapperElement()).unbind('keydown');