diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php index 15f6ec3e..49d7444c 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -176,27 +176,26 @@ class Adminer { function selectLinks($tableStatus, $set = "") { global $jush, $driver; echo '
'; - $links = array("select" => lang('Select data')); + $actions = array("select" => lang('Select data')); if (support("table") || support("indexes")) { - $links["table"] = lang('Show structure'); + $actions["table"] = lang('Show structure'); } if (support("table")) { if (is_view($tableStatus)) { - $links["view"] = lang('Alter view'); + $actions["view"] = lang('Alter view'); } else { - $links["create"] = lang('Alter table'); + $actions["create"] = lang('Alter table'); } } if ($set !== null) { - $links["edit"] = lang('New item'); + $actions["edit"] = lang('New item'); } $name = $tableStatus["Name"]; - foreach ($links as $key => $val) { - if ($key !== array_key_first($links)) { - echo " | "; - } - echo " $val"; + $links = []; + foreach ($actions as $key => $val) { + $links[] = "$val"; } + echo generate_linksbar($links); echo doc_link(array($jush => $driver->tableHelp($name)), "?"); echo "\n"; } @@ -655,10 +654,15 @@ class Adminer { $id = "warnings-" . count($history[$_GET["db"]]); $return = "" . lang('Warnings') . ", $return
" . shorten_utf8($query, 1000) . ""
. ($time ? " ($time)" : '')
- . (support("sql") ? '' . lang('Edit') . ' | ' . lang('Copy to clipboard') . '' : '') + . generate_linksbar($links) . '
' . ($_GET["ns"] == "" && support("database") ? '' . lang('Alter database') . "\n" : ""); - echo (support("scheme") ? " | " . ($_GET["ns"] != "" ? lang('Alter schema') : lang('Create schema')) . "\n" : ""); - echo ($_GET["ns"] !== "" ? ' | ' . lang('Database schema') . "\n" : ""); - echo (support("privileges") ? " | " . lang('Privileges') . "\n" : ""); + $links = []; + if ($_GET["ns"] == "" && support("database")) { + $links[] = '' . lang('Alter database') . ''; + } + if (support("scheme")) { + $links[] = "" . ($_GET["ns"] != "" ? lang('Alter schema') : lang('Create schema')) . ""; + } + if ($_GET["ns"] !== "") { + $links[] = '' . lang('Database schema') . ''; + } + if (support("privileges")) { + $links[] = "" . lang('Privileges') . ""; + } + echo generate_linksbar($links); return true; } @@ -1028,7 +1042,7 @@ bodyLoad('
| "; hidden_fields_get(); $db_events = script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});"); echo "" . lang('DB') . ": | " . ($databases
@@ -1054,7 +1068,6 @@ bodyLoad('\n";
}
/** Prints table list in menu
@@ -1082,3 +1095,6 @@ bodyLoad('
+
+
diff --git a/adminer/include/functions.inc.php b/adminer/include/functions.inc.php
index f5f3f406..5e65ef05 100644
--- a/adminer/include/functions.inc.php
+++ b/adminer/include/functions.inc.php
@@ -272,14 +272,14 @@ function print_fieldset($id, $legend, $visible = false) {
}
function generate_linksbar($links) {
- $linksbar = " \n"; + $linksbar = " "; foreach ($links as $key => $link) { if ($key !== key(array_keys($links))) { - $linksbar .= " | "; + $linksbar .= "|"; } - $linksbar .= $link . "\n"; + $linksbar .= $link; } - $linksbar .= " \n"; + $linksbar .= ""; return $linksbar; } diff --git a/adminer/sql.inc.php b/adminer/sql.inc.php index ef7ef31a..ff089028 100644 --- a/adminer/sql.inc.php +++ b/adminer/sql.inc.php @@ -98,7 +98,7 @@ if (!$error && $_POST) { $q = substr($query, 0, $pos); $commands++; $print = "\n";
- $print .= " | " . lang('Copy to clipboard') . "";
+ $print .= generate_linksbar(["" . lang('Copy to clipboard') . ""]);
if ($jush == "sqlite" && preg_match("~^$space*+ATTACH\\b~i", $q, $match)) {
// PHP doesn't support setting SQLITE_LIMIT_ATTACHED
echo $print;
diff --git a/adminer/static/default.css b/adminer/static/default.css
index 28d93f22..c2254f90 100644
--- a/adminer/static/default.css
+++ b/adminer/static/default.css
@@ -33,6 +33,7 @@ input[type='submit'] { padding-left: 10px; padding-right: 10px; }
select { border-radius: 5px; padding: 2px; vertical-align: middle;; }
fieldset label input[type='checkbox'] { margin-bottom: 6px; }
fieldset a { line-height: 20px; }
+span.separator { margin-left: 5px; margin-right: 5px; }
.block { display: block; }
.version { color: #777; font-size: 50%; }
.js .hidden, .nojs .jsonly { display: none; }
@@ -78,6 +79,7 @@ fieldset a { line-height: 20px; }
#table tbody tr td a.edit { font-size: 0; padding: 12px 8px 5px 8px; background-size: 16px; background-repeat: no-repeat; background-position: 0 0; background-image: url('data:image/png;base64,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'); }
#table thead tr td a { font-size: 0; padding: 12px 8px 5px 8px; background-size: 16px; background-repeat: no-repeat; background-position: 0 0; background-image: url('data:image/png;base64,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'); }
#dbs { overflow: hidden; }
+#dbs table { width: 100%; margin-top: 0px; }
#logins, #tables { white-space: nowrap; overflow: auto; }
#logins a, #tables a, #tables span { background: #fff; }
#content { margin: 2em 0 0 21em; padding: 10px 20px 20px 0; }
|