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
. ''
. '