]> git.joonet.de Git - adminer.git/commitdiff
Revert "Highlight SQL code in textarea"
authorJakub Vrana <jakub@vrana.cz>
Fri, 3 Jun 2011 12:55:09 +0000 (14:55 +0200)
committerJakub Vrana <jakub@vrana.cz>
Fri, 3 Jun 2011 12:55:09 +0000 (14:55 +0200)
This reverts commit 2a1c4096816b6cfc18ec286647ad769bc3243d5e.

.gitmodules
adminer/include/editing.inc.php
adminer/static/default.css
adminer/static/editing.js
adminer/static/functions.js
changes.txt
compile.php
externals/codemirror [deleted submodule]
todo.txt

index dfc215dc387fc859dccd54274faaefb17131a6ad..127b40b9944fe98ff00d1e81c5860f230cc5fe98 100644 (file)
@@ -13,6 +13,3 @@
 [submodule "jquery-timepicker"]
        path = externals/jquery-timepicker
        url = git://github.com/trentrichardson/jQuery-Timepicker-Addon.git
-[submodule "codemirror"]
-       path = externals/codemirror
-       url = http://marijnhaverbeke.nl/git/codemirror2
index 00c61a2c40b829a8cfe58581809c5d3d63f2f14f..bb603b69afb2fcb2ed25b580fd96348634cbbc22 100644 (file)
@@ -106,7 +106,7 @@ function referencable_primary($self) {
 * @return null
 */
 function textarea($name, $value, $rows = 10, $cols = 80) {
-       echo "<textarea name='$name' rows='$rows' cols='$cols' class='sqlarea' spellcheck='false' wrap='off'>"; // spellcheck, wrap - not valid before HTML5
+       echo "<textarea name='$name' rows='$rows' cols='$cols' class='sqlarea' spellcheck='false' wrap='off' onkeydown='return textareaKeydown(this, event);'>"; // spellcheck, wrap - not valid before HTML5
        if (is_array($value)) {
                foreach ($value as $val) { // not implode() to save memory
                        echo h($val) . "\n\n\n";
index 9144c23f99f429de3aeecd5a3b5e823c9e9dc997..fe3caa9057d3fe8917021ce2d942a70d49cad3ee 100644 (file)
@@ -41,7 +41,6 @@ input[type=image] { vertical-align: middle; }
 .options select { width: 20ex; width: auto\9; }
 .active { font-weight: bold; }
 .sqlarea { width: 98%; }
-.CodeMirror { border: 1px solid #777; }
 #menu { position: absolute; margin: 10px 0 0; padding: 0 0 30px 0; top: 2em; left: 0; width: 19em; overflow: auto; overflow-y: hidden; white-space: nowrap; }
 #menu p { padding: .8em 1em; margin: 0; border-bottom: 1px solid #ccc; }
 #content { margin: 2em 0 0 21em; padding: 10px 20px 20px 0; }
index cef7d44a591fcacebb5b411242c0bf08407fac53..59bab92e0939cb94d13c0730e4c01d393444c0ae 100644 (file)
@@ -1,37 +1,6 @@
 // Adminer specific functions
 
-// global variables to allow simple customization
-var jushRoot = '../externals/jush/';
-var codemirrorRoot = '../externals/codemirror/';
-
-function appendScript(src, onload) {
-       var script = document.createElement('script');
-       script.src = src;
-       script.onload = onload;
-       script.onreadystatechange = function () {
-               if (/^(loaded|complete)$/.test(script.readyState)) {
-                       onload();
-               }
-       };
-       document.body.appendChild(script);
-}
-
-function appendStyle(href) {
-       var link = document.createElement('link');
-       link.rel = 'stylesheet';
-       link.type = 'text/css';
-       link.href = href;
-       document.getElementsByTagName('head')[0].appendChild(link);
-}
-
-function codemirrorRun() {
-       var textareas = document.getElementsByTagName('textarea');
-       for (var i=0; i < textareas.length; i++) {
-               if (textareas[i].className == 'sqlarea') {
-                       CodeMirror.fromTextArea(textareas[i], { mode: 'text/x-plsql' });
-               }
-       }
-}
+var jushRoot = '../externals/jush/'; // global variable to allow simple customization
 
 /** Load syntax highlighting
 * @param string first three characters of database system version
@@ -41,7 +10,9 @@ function bodyLoad(version) {
                onpopstate(history);
        }
        if (jushRoot) {
-               appendScript(jushRoot + 'jush.js', function () {
+               var script = document.createElement('script');
+               script.src = jushRoot + 'jush.js';
+               script.onload = function () {
                        if (window.jush) { // IE runs in case of an error too
                                jush.create_links = ' target="_blank" rel="noreferrer"';
                                jush.urls.sql_sqlset = jush.urls.sql[0] = jush.urls.sqlset[0] = jush.urls.sqlstatus[0] = 'http://dev.mysql.com/doc/refman/' + version + '/en/$key';
@@ -54,16 +25,13 @@ function bodyLoad(version) {
                                }
                                jush.highlight_tag('code', 0);
                        }
-               });
-       }
-       if (codemirrorRoot) {
-               appendStyle(codemirrorRoot + 'lib/codemirror.css');
-               appendStyle(codemirrorRoot + 'mode/plsql/plsql.css');
-               appendScript(codemirrorRoot + 'lib/codemirror.js', function () {
-                       if (window.CodeMirror) {
-                               appendScript(codemirrorRoot + 'mode/plsql/plsql.js', codemirrorRun);
+               };
+               script.onreadystatechange = function () {
+                       if (/^(loaded|complete)$/.test(script.readyState)) {
+                               script.onload();
                        }
-               });
+               };
+               document.body.appendChild(script);
        }
 }
 
index f27c363076f59f7d65ae10f474849c16a0352bce..12c6307b6facc7c5621880fecbeb15c723cf6d64 100644 (file)
@@ -155,6 +155,41 @@ function selectAddRow(field) {
 
 
 
+/** Handle Tab and Esc in textarea
+* @param HTMLTextAreaElement
+* @param KeyboardEvent
+* @return boolean
+*/
+function textareaKeydown(target, event) {
+       if (!event.shiftKey && !event.altKey && !event.ctrlKey && !event.metaKey) {
+               if (event.keyCode == 9) { // 9 - Tab
+                       // inspired by http://pallieter.org/Projects/insertTab/
+                       if (target.setSelectionRange) {
+                               var start = target.selectionStart;
+                               var scrolled = target.scrollTop;
+                               target.value = target.value.substr(0, start) + '\t' + target.value.substr(target.selectionEnd);
+                               target.setSelectionRange(start + 1, start + 1);
+                               target.scrollTop = scrolled;
+                               return false; //! still loses focus in Opera, can be solved by handling onblur
+                       } else if (target.createTextRange) {
+                               document.selection.createRange().text = '\t';
+                               return false;
+                       }
+               }
+               if (event.keyCode == 27) { // 27 - Esc
+                       var els = target.form.elements;
+                       for (var i=1; i < els.length; i++) {
+                               if (els[i-1] == target) {
+                                       els[i].focus();
+                                       break;
+                               }
+                       }
+                       return false;
+               }
+       }
+       return true;
+}
+
 /** Send form by Ctrl+Enter on <select> and <textarea>
 * @param KeyboardEvent
 * @param [string]
@@ -326,9 +361,6 @@ function ajaxSend(url, data, popState) {
                                if (window.jush) {
                                        jush.highlight_tag('code', 0);
                                }
-                               if (window.CodeMirror) {
-                                       codemirrorRun();
-                               }
                        }
                }
        }, data);
index a0dfd62cbf67ca9d83bddd1a1755e0f964eeec32..79e9fde86486c169ed14650103da33b4ca589c89 100644 (file)
@@ -1,6 +1,5 @@
 Adminer 3.3.0-dev:
 Use Esc to disable in-place edit
-Highlight SQL code in textarea
 Shortcut for database privileges
 Append new index with auto index selection (bug #3282127)
 Bit type default value
index 17a2e9b64179c8e43e9ab0ea383bff2f97829d21..9a20f7fc2b58b611cf779958948188fbba40af6a 100644 (file)
@@ -269,7 +269,6 @@ foreach (array("adminer", "editor") as $project) {
        $file = preg_replace('~\\.\\./adminer/static/(default\\.css|functions\\.js|favicon\\.ico)~', '<?php echo ' . $replace . '"; ?>', $file);
        $file = preg_replace('~\\.\\./adminer/static/([^\'"]*)~', '" . ' . $replace, $file);
        $file = str_replace("'../externals/jush/'", "location.protocol + '//www.adminer.org/static/'", $file);
-       $file = str_replace("'../externals/codemirror/'", "location.protocol + '//www.adminer.org/static/codemirror/'", $file);
        $file = preg_replace("~<\\?php\\s*\\?>\n?|\\?>\n?<\\?php~", '', $file);
        $file = php_shrink($file);
 
diff --git a/externals/codemirror b/externals/codemirror
deleted file mode 160000 (submodule)
index 68d004c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 68d004c93a391c805fdbb737a9c54296ef9dcdb9
index 10f90860d6a2da143b1895a5a6f0ed8966f9140f..cd13bf5d0d3a13d7acd997b168157772a2cbad6d 100644 (file)
--- a/todo.txt
+++ b/todo.txt
@@ -1,6 +1,7 @@
 Transactions in export
 Create view and routine options
 Variables editation
+Highlight SQL textarea - may use external CodeMirror
 Blob download and image display in edit form (important for Editor with hidden fields in select and SQL command)
 Add title to Logout, edit (in select) and select (in menu) for style "hever"
 Shift-click in checkboxes to select range