]> git.joonet.de Git - adminer.git/commitdiff
Autocomplete SQL commands
authorJakub Vrana <jakub@vrana.cz>
Thu, 3 Apr 2025 13:07:27 +0000 (15:07 +0200)
committerJakub Vrana <jakub@vrana.cz>
Thu, 3 Apr 2025 13:10:22 +0000 (15:10 +0200)
CHANGELOG.md
adminer/include/adminer.inc.php
adminer/static/editing.js
externals/jush

index 9e4c836b757a580aef13557805e9d5cfdf0b0d8b..70b494986ca34cf37748e6e683e02e66cb112795 100644 (file)
@@ -1,4 +1,5 @@
 ## Adminer dev
+- Autocomplete SQL commands
 - Do not edit NULL values by Modify (bug #967)
 - PostgreSQL: Support COPY FROM stdin in SQL query (bug #942)
 - MySQL: Display number of found rows in group queries (regression from 5.1.1)
index 9efbfe7a21d5707b85815f8248049687a06e0d6f..e32065ba3a7a660e04cbb8b3d144aee7654c482d 100644 (file)
@@ -994,6 +994,7 @@ class Adminer {
        function syntaxHighlighting(array $tables): void {
                // this is matched by compile.php
                echo script_src("../externals/jush/modules/jush.js");
+               echo script_src("../externals/jush/modules/jush-autocomplete-sql.js");
                echo script_src("../externals/jush/modules/jush-textarea.js");
                echo script_src("../externals/jush/modules/jush-txt.js");
                echo script_src("../externals/jush/modules/jush-js.js");
@@ -1009,6 +1010,13 @@ class Adminer {
                                foreach (array("bac", "bra", "sqlite_quo", "mssql_bra") as $val) {
                                        echo "jushLinks.$val = jushLinks." . JUSH . ";\n";
                                }
+                               $tablesColumns = array_fill_keys(array_keys($tables), array());
+                               foreach (driver()->allFields() as $table => $fields) {
+                                       foreach ($fields as $field) {
+                                               $tablesColumns[$table][] = $field["field"];
+                                       }
+                               }
+                               echo "autocompleter = jush.autocompleteSql('" . idf_escape("") . "', " . json_encode($tablesColumns) . ");\n";
                        }
                        echo "</script>\n";
                }
index a356c4969de95bfbc275f0e10a5160400756e888..61bd71edb3b8851728eedd0a5a60aef4eb5cd1ba 100644 (file)
@@ -1,5 +1,7 @@
 'use strict'; // Adminer specific functions
 
+let autocompleter; // set in adminer.inc.php
+
 /** Load syntax highlighting
 * @param string first three characters of database system version
 * @param [string]
@@ -44,7 +46,7 @@ function syntaxHighlighting(version, vendor) {
                adminerHighlighter = els => jush.highlight_tag(els, 0);
                for (const tag of qsa('textarea')) {
                        if (/(^|\s)jush-/.test(tag.className)) {
-                               const pre = jush.textarea(tag);
+                               const pre = jush.textarea(tag, autocompleter);
                                if (pre) {
                                        setupSubmitHighlightInput(pre);
                                        tag.onchange = () => {
index d599d559101f6c2ea42ef1f512166692a73781d0..182e95066ca8d2a4561fe3336952b3ae1c2cabaa 160000 (submodule)
@@ -1 +1 @@
-Subproject commit d599d559101f6c2ea42ef1f512166692a73781d0
+Subproject commit 182e95066ca8d2a4561fe3336952b3ae1c2cabaa