From 3ae93ad30799083d9fadd7f4e079d3258b4b370e Mon Sep 17 00:00:00 2001 From: Piyush Vijay Date: Tue, 17 Jul 2018 20:27:41 +0530 Subject: [PATCH] Add modular Sql.js to table sql and database sql and SqlQueryForm modified accordingly Signed-Off-By: Piyush Vijay --- db_sql.php | 4 +-- js/src/consts/files.js | 4 ++- js/src/functions/Sql/ForeignKey.js | 49 ++++++++++++++++++++++++++++++ js/src/functions/Sql/SqlQuery.js | 46 ++++++++++++++++++++++++++++ js/src/sql.js | 18 ++++++++++- libraries/classes/SqlQueryForm.php | 7 ++--- tbl_sql.php | 4 +-- 7 files changed, 120 insertions(+), 12 deletions(-) create mode 100644 js/src/functions/Sql/ForeignKey.js diff --git a/db_sql.php b/db_sql.php index fb403d484d..7a2ff9134c 100644 --- a/db_sql.php +++ b/db_sql.php @@ -24,9 +24,7 @@ PageSettings::showGroup('Sql'); $response = Response::getInstance(); $header = $response->getHeader(); $scripts = $header->getScripts(); -$scripts->addFile('makegrid.js'); -$scripts->addFile('vendor/jquery/jquery.uitablefilter.js'); -$scripts->addFile('sql.js'); +$scripts->addFile('sql'); require 'libraries/db_common.inc.php'; diff --git a/js/src/consts/files.js b/js/src/consts/files.js index b48cafb556..b17d90b3e3 100644 --- a/js/src/consts/files.js +++ b/js/src/consts/files.js @@ -23,7 +23,9 @@ const files = { server_export: ['export'], server_import: ['import'], db_search: ['db_search', 'sql'], - server_sql: ['sql'] + server_sql: ['sql'], + tbl_sql: ['sql'], + db_sql: ['sql'] }; export default files; diff --git a/js/src/functions/Sql/ForeignKey.js b/js/src/functions/Sql/ForeignKey.js new file mode 100644 index 0000000000..946155511f --- /dev/null +++ b/js/src/functions/Sql/ForeignKey.js @@ -0,0 +1,49 @@ +import { PMA_getImage } from '../get_image'; +import PMA_commonParams from '../../variables/common_params'; +import { PMA_Messages as PMA_messages } from '../../variables/export_variables'; +/** + * Get checkbox for foreign key checks + * + * @return string + */ +export function getForeignKeyCheckboxLoader () { + var html = ''; + html += '
'; + html += '
'; + html += PMA_getImage('ajax_clock_small'); + html += '
'; + html += '
'; + return html; +} + +export function loadForeignKeyCheckbox () { + // Load default foreign key check value + var params = { + 'ajax_request': true, + 'server': PMA_commonParams.get('server'), + 'get_default_fk_check_value': true + }; + $.get('sql.php', params, function (data) { + var html = '' + + '' + + ''; + $('.load-default-fk-check-value').replaceWith(html); + }); +} + +function getJSConfirmCommonParam (elem, params) { + var $elem = $(elem); + var sep = PMA_commonParams.get('arg_separator'); + if (params) { + // Strip possible leading ? + if (params.substring(0,1) === '?') { + params = params.substr(1); + } + params += sep; + } else { + params = ''; + } + params += 'is_js_confirmed=1' + sep + 'ajax_request=true' + sep + 'fk_checks=' + ($elem.find('#fk_checks').is(':checked') ? 1 : 0); + return params; +} diff --git a/js/src/functions/Sql/SqlQuery.js b/js/src/functions/Sql/SqlQuery.js index ee27c3247e..219237129f 100644 --- a/js/src/functions/Sql/SqlQuery.js +++ b/js/src/functions/Sql/SqlQuery.js @@ -323,3 +323,49 @@ export function PMA_autosaveSQLSort (query) { } } } + +/** + * Inserts multiple fields. + * + */ +export function insertValueQuery () { + var myQuery = document.sqlform.sql_query; + var myListBox = document.sqlform.dummy; + + if (myListBox.options.length > 0) { + sql_box_locked = true; + var columnsList = ''; + var NbSelect = 0; + for (var i = 0; i < myListBox.options.length; i++) { + if (myListBox.options[i].selected) { + NbSelect++; + if (NbSelect > 1) { + columnsList += ', '; + } + columnsList += myListBox.options[i].value; + } + } + + /* CodeMirror support */ + if (sqlQueryOptions.codemirror_editor) { + sqlQueryOptions.codemirror_editor.replaceSelection(columnsList); + sqlQueryOptions.codemirror_editor.focus(); + // IE support + } else if (document.selection) { + myQuery.focus(); + var sel = document.selection.createRange(); + sel.text = columnsList; + // MOZILLA/NETSCAPE support + } else if (document.sqlform.sql_query.selectionStart || document.sqlform.sql_query.selectionStart === '0') { + var startPos = document.sqlform.sql_query.selectionStart; + var endPos = document.sqlform.sql_query.selectionEnd; + var SqlString = document.sqlform.sql_query.value; + + myQuery.value = SqlString.substring(0, startPos) + columnsList + SqlString.substring(endPos, SqlString.length); + myQuery.focus(); + } else { + myQuery.value += columnsList; + } + sql_box_locked = false; + } +} diff --git a/js/src/sql.js b/js/src/sql.js index 8ae7b158ba..d5175882dc 100644 --- a/js/src/sql.js +++ b/js/src/sql.js @@ -22,7 +22,7 @@ import { printPreview } from './functions/Print'; import { setShowThisQuery, PMA_autosaveSQL, PMA_autosaveSQLSort, PMA_showThisQuery, - checkSavedQuery, setQuery, checkSqlQuery, PMA_handleSimulateQueryButton + checkSavedQuery, setQuery, checkSqlQuery, PMA_handleSimulateQueryButton, insertValueQuery } from './functions/Sql/SqlQuery'; /** @@ -713,6 +713,22 @@ export function onload1 () { AJAX.source = $form; $.post($form.attr('action'), submitData, AJAX.responseHandler); }); + + /** + * Handles double click table fields to insert into query + */ + $('#tablefields') + .on('dblclick', function () { + insertValueQuery(); + }); + + /** + * Handle click on insert or arrow button to insert table fields in query + */ + $('#tablefieldsSubmitLinkMode,#tablefieldsSubmitNonLinkMode') + .on('click', function () { + insertValueQuery(); + }); } // end $() /** diff --git a/libraries/classes/SqlQueryForm.php b/libraries/classes/SqlQueryForm.php index 4aa9e4cd78..add65805a6 100644 --- a/libraries/classes/SqlQueryForm.php +++ b/libraries/classes/SqlQueryForm.php @@ -278,7 +278,7 @@ class SqlQueryForm . '' . ''; } else { $html .= ''; + . ' value="' . __('Insert') . '" id="tablefieldsSubmitNonLinkMode" />'; } $html .= '' . "\n" . '' . "\n"; diff --git a/tbl_sql.php b/tbl_sql.php index 19751db896..dab8f396fd 100644 --- a/tbl_sql.php +++ b/tbl_sql.php @@ -24,9 +24,7 @@ PageSettings::showGroup('Sql'); $response = Response::getInstance(); $header = $response->getHeader(); $scripts = $header->getScripts(); -$scripts->addFile('makegrid.js'); -$scripts->addFile('vendor/jquery/jquery.uitablefilter.js'); -$scripts->addFile('sql.js'); +$scripts->addFile('sql'); require 'libraries/tbl_common.inc.php'; $url_query .= '&goto=tbl_sql.php&back=tbl_sql.php';