]> git.joonet.de Git - adminer.git/commitdiff
Ctrl+Up and Down in edit and in-place edit
authorJakub Vrana <jakub@vrana.cz>
Tue, 25 Jan 2011 16:13:57 +0000 (17:13 +0100)
committerJakub Vrana <jakub@vrana.cz>
Tue, 25 Jan 2011 16:13:57 +0000 (17:13 +0100)
adminer/edit.inc.php
adminer/select.inc.php
adminer/static/editing.js
adminer/static/functions.js
changes.txt

index d88108be6475e6a0e942f7dd95d5440b7214af9f..9617cb843163b8c04884f8decdb28202caaeb03e 100644 (file)
@@ -67,7 +67,7 @@ if ($_POST["save"]) {
 <form action="" method="post" enctype="multipart/form-data">
 <?php
 if ($fields) {
-       echo "<table cellspacing='0'>\n";
+       echo "<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";
        foreach ($fields as $name => $field) {
                echo "<tr><th>" . $adminer->fieldName($field);
                $default = $_GET["set"][bracket_escape($name)];
index 0b4e40d0b646b3580861d48554df47164fbb95f5..143cfe55cd5ac8aa7676eb323eee77ff117f0df6 100644 (file)
@@ -251,7 +251,7 @@ if (!$columns) {
                } else {
                        $backward_keys = $adminer->backwardKeys($TABLE, $table_name);
                        
-                       echo "<table cellspacing='0' class='nowrap' onclick='tableClick(event);'>\n";
+                       echo "<table cellspacing='0' class='nowrap' onclick='tableClick(event);' onkeydown='return editingKeydown(event);'>\n";
                        echo "<thead><tr>" . (!$group && $select ? "" : "<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='" . h($_GET["modify"] ? remove_from_uri("modify") : $_SERVER["REQUEST_URI"] . "&modify=1") . "'>" . lang('edit') . "</a>");
                        $names = array();
                        $functions = array();
index 03006d1d77c1c02a07e4e1029ef575fc664a63b1..9d4b94463108a5efd65803ace8472d7dba35d698 100644 (file)
@@ -240,33 +240,6 @@ function editingLengthBlur(edit) {
        edit.style.display = 'none';
 }
 
-/** Find node position
-* @param Node
-* @return number
-*/
-function nodePosition(el) {
-       var pos = 0;
-       while (el = el.previousSibling) {
-               pos++;
-       }
-       return pos;
-}
-
-/** Change focus by Ctrl+Up or Down
-* @param KeyboardEvent
-* @return boolean
-*/
-function editingKeydown(event) {
-       var target = event.target || event.srcElement;
-       if ((event.keyCode == 40 || event.keyCode == 38) && event.ctrlKey && !event.altKey && !event.metaKey) { // shiftKey allowed
-               if ((el = target.parentNode.parentNode[(event.keyCode == 40 ? 'nextSibling' : 'previousSibling')]) && (el = el.childNodes[nodePosition(target.parentNode)]) && (el = el.childNodes[nodePosition(target)])) {
-                       el.focus();
-               }
-               return false;
-       }
-       return true;
-}
-
 /** Show or hide selected table column
 * @param boolean
 * @param number
index 8905713d27039678ea23658cf068ac410927804c..64a2ce2f349aa4f55329d8cdca91ec60ac1e262e 100644 (file)
@@ -107,6 +107,18 @@ function setHtml(id, html) {
        }
 }
 
+/** Find node position
+* @param Node
+* @return number
+*/
+function nodePosition(el) {
+       var pos = 0;
+       while (el = el.previousSibling) {
+               pos++;
+       }
+       return pos;
+}
+
 /** Go to the specified page
 * @param string
 * @param string
@@ -177,6 +189,25 @@ function textareaKeypress(target, event, tab, button) {
 
 
 
+/** Change focus by Ctrl+Up or Ctrl+Down
+* @param KeyboardEvent
+* @return boolean
+*/
+function editingKeydown(event) {
+       if ((event.keyCode == 40 || event.keyCode == 38) && event.ctrlKey && !event.altKey && !event.metaKey) { // shiftKey allowed
+               var target = event.target || event.srcElement;
+               var sibling = (event.keyCode == 40 ? 'nextSibling' : 'previousSibling');
+               var el = target.parentNode.parentNode[sibling];
+               if (el && (/^tr$/i.test(el.tagName) || (el = el[sibling])) && /^tr$/i.test(el.tagName) && (el = el.childNodes[nodePosition(target.parentNode)]) && (el = el.childNodes[nodePosition(target)])) {
+                       el.focus();
+               }
+               return false;
+       }
+       return true;
+}
+
+
+
 /** Create AJAX request
 * @param string
 * @param function (text)
index c1fbaa302dea71d5e2ee98aef2940a75c9632ec0..a29ec7e4bdf5acbbc57016f409df4e0ebbf00cff 100644 (file)
@@ -7,7 +7,7 @@ History: edit all
 MS SQL: auto primary and foreign key
 SQLite: display 0
 Create table default data type: int
-Create table keyboard shortcuts: Ctrl+Up, Ctrl+Down
+Focus upper/lower fields by Ctrl+Up/Ctrl+Down
 Homepage customization
 Use IN for search in numeric fields (Editor)
 Use password input for _md5 and _sha1 fields (Editor)