From 023b62a39cef91bac4219ad03c6b80739db93b2f Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Thu, 11 Aug 2011 13:48:27 +0200 Subject: [PATCH] Highlight checked rows --- adminer/db.inc.php | 3 ++- adminer/include/connect.inc.php | 3 ++- adminer/processlist.inc.php | 3 ++- adminer/select.inc.php | 3 ++- adminer/static/default.css | 3 ++- adminer/static/functions.js | 40 +++++++++++++++++++++++++++++---- changes.txt | 1 + editor/db.inc.php | 3 ++- 8 files changed, 49 insertions(+), 10 deletions(-) diff --git a/adminer/db.inc.php b/adminer/db.inc.php index 815f92ce..e618bb90 100644 --- a/adminer/db.inc.php +++ b/adminer/db.inc.php @@ -48,7 +48,7 @@ if ($adminer->homepage()) { if ($_POST["search"] && $_POST["query"] != "") { search_tables(); } - echo "\n"; + echo "
\n"; echo '
'; echo '' . lang('Table'); echo '' . lang('Engine'); @@ -89,6 +89,7 @@ if ($adminer->homepage()) { echo " "; } echo "
\n"; + echo "\n"; if (!information_schema(DB)) { echo "

" . ($jush == "sql" ? " " : "") . " \n"; // 1 - eventStop $databases = (support("scheme") ? schemas() : get_databases()); diff --git a/adminer/include/connect.inc.php b/adminer/include/connect.inc.php index 1f354e14..fc11ecf2 100644 --- a/adminer/include/connect.inc.php +++ b/adminer/include/connect.inc.php @@ -31,7 +31,7 @@ function connect_error() { $scheme = support("scheme"); $collations = collations(); echo "

\n"; - echo "\n"; + echo "
\n"; echo "\n"; foreach ($databases as $db) { $root = h(ME) . "db=" . urlencode($db); @@ -42,6 +42,7 @@ function connect_error() { echo "\n"; } echo "
 " . lang('Database') . "" . lang('Collation') . "" . lang('Tables') . "
\n"; + echo "\n"; echo "

\n"; // 1 - eventStop echo "\n"; echo "" . lang('Refresh') . "\n"; diff --git a/adminer/processlist.inc.php b/adminer/processlist.inc.php index c71abaca..fd39cb5e 100644 --- a/adminer/processlist.inc.php +++ b/adminer/processlist.inc.php @@ -13,7 +13,7 @@ page_header(lang('Process list'), $error); ?> - +
$row) { } ?>
+

backwardKeys($TABLE, $table_name); - echo "\n"; + echo "
\n"; echo "" . (!$group && $select ? "" : "\n"; // close to allow white-space: pre } echo "
" . lang('edit') . ""); $names = array(); $functions = array(); @@ -368,6 +368,7 @@ if (!$columns) { echo "
\n"; + echo (!$group && $select ? "" : "\n"); } if ($rows || $page) { diff --git a/adminer/static/default.css b/adminer/static/default.css index fe3caa90..1d7b3707 100644 --- a/adminer/static/default.css +++ b/adminer/static/default.css @@ -17,7 +17,7 @@ p { margin: .8em 20px 0 0; } img { vertical-align: middle; border: 0; } td img { max-width: 200px; max-height: 200px; } code { background: #eee; } -tr:hover td, tr:hover th { background: #ddf; } +tbody tr:hover td, tbody tr:hover th { background: #eee; } pre { margin: 1em 0 0; } input[type=image] { vertical-align: middle; } .version { color: #777; font-size: 67%; } @@ -33,6 +33,7 @@ input[type=image] { vertical-align: middle; } .enum { color: #007F7F; } .binary { color: red; } .odd td { background: #F5F5F5; } +.js .checked td, .js .checked th { background: #ddf; } .time { color: silver; font-size: 70%; } .function { text-align: right; } .number { text-align: right; } diff --git a/adminer/static/functions.js b/adminer/static/functions.js index 182e803d..149cc132 100644 --- a/adminer/static/functions.js +++ b/adminer/static/functions.js @@ -38,6 +38,14 @@ function selectValue(select) { return ((selected.attributes.value || {}).specified ? selected.value : selected.text); } +/** Set checked class +* @param HTMLInputElement +*/ +function trCheck(el) { + var tr = el.parentNode.parentNode; + tr.className = tr.className.replace(/(^|\s)checked(\s|$)/, '$2') + (el.checked ? ' checked' : ''); +} + /** Check all elements matching given name * @param HTMLInputElement * @param RegExp @@ -47,6 +55,21 @@ function formCheck(el, name) { for (var i=0; i < elems.length; i++) { if (name.test(elems[i].name)) { elems[i].checked = el.checked; + trCheck(elems[i]); + } + } +} + +/** Check all rows in +*/ +function tableCheck() { + var tables = document.getElementsByTagName('table'); + for (var i=0; i < tables.length; i++) { + if (/(^|\s)checkable(\s|$)/.test(tables[i].className)) { + var trs = tables[i].getElementsByTagName('tr'); + for (var j=0; j < trs.length; j++) { + trCheck(trs[j].firstChild.firstChild); + } } } } @@ -55,7 +78,9 @@ function formCheck(el, name) { * @param string */ function formUncheck(id) { - document.getElementById(id).checked = false; + var el = document.getElementById(id); + el.checked = false; + trCheck(el); } /** Get number of checked elements matching given name @@ -78,16 +103,23 @@ function formChecked(el, name) { * @param MouseEvent */ function tableClick(event) { + var click = true; var el = event.target || event.srcElement; while (!/^tr$/i.test(el.tagName)) { - if (/^(table|a|input|textarea)$/i.test(el.tagName)) { + if (/^table$/i.test(el.tagName)) { return; } + if (/^(a|input|textarea)$/i.test(el.tagName)) { + click = false; + } el = el.parentNode; } el = el.firstChild.firstChild; - el.click && el.click(); - el.onclick && el.onclick(); + if (click) { + el.click && el.click(); + el.onclick && el.onclick(); + } + trCheck(el); } /** Set HTML code of an element diff --git a/changes.txt b/changes.txt index 5e58906a..b8c44e5c 100644 --- a/changes.txt +++ b/changes.txt @@ -1,4 +1,5 @@ Adminer 3.3.3-dev: +Highlight checked rows Titles of links in database overview and navigation Fix trigger export (SQLite) Default trigger statement (SQLite, PostgreSQL) diff --git a/editor/db.inc.php b/editor/db.inc.php index 9c8e7f66..3eaac332 100644 --- a/editor/db.inc.php +++ b/editor/db.inc.php @@ -7,7 +7,7 @@ if ($adminer->homepage()) { if ($_POST["query"] != "") { search_tables(); } - echo "
\n"; + echo "
\n"; echo '\n"; foreach (table_status() as $table => $row) { $name = $adminer->tableName($row); @@ -19,5 +19,6 @@ if ($adminer->homepage()) { } } echo "
' . lang('Table') . '' . lang('Rows') . "
\n"; + echo "\n"; echo "

\n"; }