Version Description
- Update Adminer to v. .4.7.1
Download this release
Release Info
Developer | arisoft |
Plugin | ARI Adminer – WordPress Database Manager |
Version | 1.1.13 |
Comparing to | |
See all releases |
Code changes from version 1.11.2 to 1.1.13
- adminer/adminer/adminer/call.inc.php +1 -1
- adminer/adminer/adminer/create.inc.php +12 -17
- adminer/adminer/adminer/database.inc.php +1 -1
- adminer/adminer/adminer/db.inc.php +2 -0
- adminer/adminer/adminer/drivers/clickhouse.inc.php +354 -0
- adminer/adminer/adminer/drivers/mongo.inc.php +2 -2
- adminer/adminer/adminer/drivers/mssql.inc.php +8 -2
- adminer/adminer/adminer/drivers/mysql.inc.php +5 -8
- adminer/adminer/adminer/drivers/oracle.inc.php +1 -1
- adminer/adminer/adminer/drivers/pgsql.inc.php +14 -4
- adminer/adminer/adminer/drivers/sqlite.inc.php +1 -1
- adminer/adminer/adminer/dump.inc.php +1 -1
- adminer/adminer/adminer/event.inc.php +3 -3
- adminer/adminer/adminer/include/adminer.inc.php +10 -8
- adminer/adminer/adminer/include/auth.inc.php +3 -2
- adminer/adminer/adminer/include/bootstrap.inc.php +1 -0
- adminer/adminer/adminer/include/editing.inc.php +32 -7
- adminer/adminer/adminer/include/functions.inc.php +6 -6
- adminer/adminer/adminer/include/lang.inc.php +1 -0
- adminer/adminer/adminer/include/version.inc.php +1 -1
- adminer/adminer/adminer/indexes.inc.php +3 -1
- adminer/adminer/adminer/lang/cs.inc.php +2 -1
- adminer/adminer/adminer/lang/he.inc.php +1 -1
- adminer/adminer/adminer/lang/ja.inc.php +11 -1
- adminer/adminer/adminer/lang/ka.inc.php +303 -0
- adminer/adminer/adminer/lang/ms.inc.php +1 -1
- adminer/adminer/adminer/lang/pl.inc.php +1 -1
- adminer/adminer/adminer/lang/tr.inc.php +1 -1
- adminer/adminer/adminer/lang/vi.inc.php +5 -5
- adminer/adminer/adminer/lang/xx.inc.php +2 -1
- adminer/adminer/adminer/lang/zh-tw.inc.php +281 -200
- adminer/adminer/adminer/lang/zh.inc.php +280 -199
- adminer/adminer/adminer/procedure.inc.php +3 -1
- adminer/adminer/adminer/processlist.inc.php +2 -0
- adminer/adminer/adminer/select.inc.php +8 -6
- adminer/adminer/adminer/sql.inc.php +8 -5
- adminer/adminer/adminer/static/default.css +2 -2
- adminer/adminer/adminer/static/editing.js +42 -17
- adminer/adminer/adminer/static/functions.js +19 -14
- adminer/adminer/adminer/trigger.inc.php +2 -2
- adminer/adminer/adminer/user.inc.php +3 -3
- adminer/adminer/adminer/view.inc.php +1 -1
- adminer/adminer/editor/db.inc.php +2 -0
- adminer/adminer/editor/include/adminer.inc.php +7 -7
- adminer/adminer/editor/static/editing.js +1 -1
- adminer/adminer/plugins/slugify.php +1 -1
- adminer/adminer/plugins/tables-filter.php +2 -2
- ari-adminer.php +1 -1
- includes/defines.php +1 -1
- readme.txt +8 -2
adminer/adminer/adminer/call.inc.php
CHANGED
@@ -62,7 +62,7 @@ if (!$error && $_POST) {
|
|
62 |
<form action="" method="post">
|
63 |
<?php
|
64 |
if ($in) {
|
65 |
-
echo "<table cellspacing='0'>\n";
|
66 |
foreach ($in as $key) {
|
67 |
$field = $routine["fields"][$key];
|
68 |
$name = $field["field"];
|
62 |
<form action="" method="post">
|
63 |
<?php
|
64 |
if ($in) {
|
65 |
+
echo "<table cellspacing='0' class='layout'>\n";
|
66 |
foreach ($in as $key) {
|
67 |
$field = $routine["fields"][$key];
|
68 |
$name = $field["field"];
|
adminer/adminer/adminer/create.inc.php
CHANGED
@@ -27,6 +27,10 @@ if ($row["auto_increment_col"]) {
|
|
27 |
$row["fields"][$row["auto_increment_col"]]["auto_increment"] = true;
|
28 |
}
|
29 |
|
|
|
|
|
|
|
|
|
30 |
if ($_POST && !process_fields($row["fields"]) && !$error) {
|
31 |
if ($_POST["drop"]) {
|
32 |
queries_redirect(substr(ME, 0, -1), lang('Table has been dropped.'), drop_tables(array($TABLE)));
|
@@ -162,7 +166,7 @@ foreach ($engines as $engine) {
|
|
162 |
<form action="" method="post" id="form">
|
163 |
<p>
|
164 |
<?php if (support("columns") || $TABLE == "") { ?>
|
165 |
-
<?php echo lang('Table name'); ?>: <input name="name" maxlength="64" value="<?php echo h($row["name"]); ?>" autocapitalize="off">
|
166 |
<?php if ($TABLE == "" && !$_POST) { echo script("focus(qs('#form')['name']);"); } ?>
|
167 |
<?php echo ($engines ? "<select name='Engine'>" . optionlist(array("" => "(" . lang('engine') . ")") + $engines, $row["Engine"]) . "</select>" . on_help("getTarget(event).value", 1) . script("qsl('select').onchange = helpClose;") : ""); ?>
|
168 |
<?php echo ($collations && !preg_match("~sqlite|mssql~", $jush) ? html_select("Collation", array("" => "(" . lang('collation') . ")") + $collations, $row["Collation"]) : ""); ?>
|
@@ -170,28 +174,19 @@ foreach ($engines as $engine) {
|
|
170 |
<?php } ?>
|
171 |
|
172 |
<?php if (support("columns")) { ?>
|
|
|
173 |
<table cellspacing="0" id="edit-fields" class="nowrap">
|
174 |
<?php
|
175 |
-
|
176 |
-
if (!$_POST && !$comments) {
|
177 |
-
foreach ($row["fields"] as $field) {
|
178 |
-
if ($field["comment"] != "") {
|
179 |
-
$comments = true;
|
180 |
-
break;
|
181 |
-
}
|
182 |
-
}
|
183 |
-
}
|
184 |
-
edit_fields($row["fields"], $collations, "TABLE", $foreign_keys, $comments);
|
185 |
?>
|
186 |
</table>
|
|
|
187 |
<p>
|
188 |
<?php echo lang('Auto Increment'); ?>: <input type="number" name="Auto_increment" size="6" value="<?php echo h($row["Auto_increment"]); ?>">
|
189 |
-
<?php echo checkbox("defaults", 1,
|
190 |
-
<?php echo ($_POST ? "" : script("editingHideDefaults();")); ?>
|
191 |
<?php echo (support("comment")
|
192 |
-
? "
|
193 |
-
.
|
194 |
-
. ' <input name="Comment" value="' . h($row["Comment"]) . '" maxlength="' . (min_version(5.5) ? 2048 : 60) . '"' . ($comments ? '' : ' class="hidden"') . '>'
|
195 |
: '')
|
196 |
; ?>
|
197 |
<p>
|
@@ -225,4 +220,4 @@ foreach ($row["partition_names"] as $key => $val) {
|
|
225 |
?>
|
226 |
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
227 |
</form>
|
228 |
-
<?php echo script("qs('#form')['defaults'].onclick();" . (support("comment") ? " editingCommentsClick
|
27 |
$row["fields"][$row["auto_increment_col"]]["auto_increment"] = true;
|
28 |
}
|
29 |
|
30 |
+
if ($_POST) {
|
31 |
+
set_adminer_settings(array("comments" => $_POST["comments"], "defaults" => $_POST["defaults"]));
|
32 |
+
}
|
33 |
+
|
34 |
if ($_POST && !process_fields($row["fields"]) && !$error) {
|
35 |
if ($_POST["drop"]) {
|
36 |
queries_redirect(substr(ME, 0, -1), lang('Table has been dropped.'), drop_tables(array($TABLE)));
|
166 |
<form action="" method="post" id="form">
|
167 |
<p>
|
168 |
<?php if (support("columns") || $TABLE == "") { ?>
|
169 |
+
<?php echo lang('Table name'); ?>: <input name="name" data-maxlength="64" value="<?php echo h($row["name"]); ?>" autocapitalize="off">
|
170 |
<?php if ($TABLE == "" && !$_POST) { echo script("focus(qs('#form')['name']);"); } ?>
|
171 |
<?php echo ($engines ? "<select name='Engine'>" . optionlist(array("" => "(" . lang('engine') . ")") + $engines, $row["Engine"]) . "</select>" . on_help("getTarget(event).value", 1) . script("qsl('select').onchange = helpClose;") : ""); ?>
|
172 |
<?php echo ($collations && !preg_match("~sqlite|mssql~", $jush) ? html_select("Collation", array("" => "(" . lang('collation') . ")") + $collations, $row["Collation"]) : ""); ?>
|
174 |
<?php } ?>
|
175 |
|
176 |
<?php if (support("columns")) { ?>
|
177 |
+
<div class="scrollable">
|
178 |
<table cellspacing="0" id="edit-fields" class="nowrap">
|
179 |
<?php
|
180 |
+
edit_fields($row["fields"], $collations, "TABLE", $foreign_keys);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
181 |
?>
|
182 |
</table>
|
183 |
+
</div>
|
184 |
<p>
|
185 |
<?php echo lang('Auto Increment'); ?>: <input type="number" name="Auto_increment" size="6" value="<?php echo h($row["Auto_increment"]); ?>">
|
186 |
+
<?php echo checkbox("defaults", 1, ($_POST ? $_POST["defaults"] : adminer_setting("defaults")), lang('Default values'), "columnShow(this.checked, 5)", "jsonly"); ?>
|
|
|
187 |
<?php echo (support("comment")
|
188 |
+
? checkbox("comments", 1, ($_POST ? $_POST["comments"] : adminer_setting("comments")), lang('Comment'), "editingCommentsClick(this, true);", "jsonly")
|
189 |
+
. ' <input name="Comment" value="' . h($row["Comment"]) . '" data-maxlength="' . (min_version(5.5) ? 2048 : 60) . '">'
|
|
|
190 |
: '')
|
191 |
; ?>
|
192 |
<p>
|
220 |
?>
|
221 |
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
222 |
</form>
|
223 |
+
<?php echo script("qs('#form')['defaults'].onclick();" . (support("comment") ? " editingCommentsClick(qs('#form')['comments']);" : "")); ?>
|
adminer/adminer/adminer/database.inc.php
CHANGED
@@ -60,7 +60,7 @@ if ($_POST) {
|
|
60 |
<?php
|
61 |
echo ($_POST["add_x"] || strpos($name, "\n")
|
62 |
? '<textarea id="name" name="name" rows="10" cols="40">' . h($name) . '</textarea><br>'
|
63 |
-
: '<input name="name" id="name" value="' . h($name) . '" maxlength="64" autocapitalize="off">'
|
64 |
) . "\n" . ($collations ? html_select("collation", array("" => "(" . lang('collation') . ")") + $collations, $row["collation"]) . doc_link(array(
|
65 |
'sql' => "charset-charsets.html",
|
66 |
'mariadb' => "supported-character-sets-and-collations/",
|
60 |
<?php
|
61 |
echo ($_POST["add_x"] || strpos($name, "\n")
|
62 |
? '<textarea id="name" name="name" rows="10" cols="40">' . h($name) . '</textarea><br>'
|
63 |
+
: '<input name="name" id="name" value="' . h($name) . '" data-maxlength="64" autocapitalize="off">'
|
64 |
) . "\n" . ($collations ? html_select("collation", array("" => "(" . lang('collation') . ")") + $collations, $row["collation"]) . doc_link(array(
|
65 |
'sql' => "charset-charsets.html",
|
66 |
'mariadb' => "supported-character-sets-and-collations/",
|
adminer/adminer/adminer/db.inc.php
CHANGED
@@ -66,6 +66,7 @@ if ($adminer->homepage()) {
|
|
66 |
}
|
67 |
}
|
68 |
$doc_link = doc_link(array('sql' => 'show-table-status.html'));
|
|
|
69 |
echo "<table cellspacing='0' class='nowrap checkable'>\n";
|
70 |
echo script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");
|
71 |
echo '<thead><tr class="wrap">';
|
@@ -119,6 +120,7 @@ if ($adminer->homepage()) {
|
|
119 |
}
|
120 |
|
121 |
echo "</table>\n";
|
|
|
122 |
if (!information_schema(DB)) {
|
123 |
echo "<div class='footer'><div>\n";
|
124 |
$vacuum = "<input type='submit' value='" . lang('Vacuum') . "'> " . on_help("'VACUUM'");
|
66 |
}
|
67 |
}
|
68 |
$doc_link = doc_link(array('sql' => 'show-table-status.html'));
|
69 |
+
echo "<div class='scrollable'>\n";
|
70 |
echo "<table cellspacing='0' class='nowrap checkable'>\n";
|
71 |
echo script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");
|
72 |
echo '<thead><tr class="wrap">';
|
120 |
}
|
121 |
|
122 |
echo "</table>\n";
|
123 |
+
echo "</div>\n";
|
124 |
if (!information_schema(DB)) {
|
125 |
echo "<div class='footer'><div>\n";
|
126 |
$vacuum = "<input type='submit' value='" . lang('Vacuum') . "'> " . on_help("'VACUUM'");
|
adminer/adminer/adminer/drivers/clickhouse.inc.php
ADDED
@@ -0,0 +1,354 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$drivers["clickhouse"] = "ClickHouse (alpha)";
|
3 |
+
|
4 |
+
if (isset($_GET["clickhouse"])) {
|
5 |
+
define("DRIVER", "clickhouse");
|
6 |
+
|
7 |
+
class Min_DB {
|
8 |
+
var $extension = "JSON", $server_info, $errno, $_result, $error, $_url;
|
9 |
+
var $_db = 'default';
|
10 |
+
|
11 |
+
function rootQuery($db, $query) {
|
12 |
+
@ini_set('track_errors', 1); // @ - may be disabled
|
13 |
+
$file = @file_get_contents("$this->_url/?database=$db", false, stream_context_create(array('http' => array(
|
14 |
+
'method' => 'POST',
|
15 |
+
'content' => $this->isQuerySelectLike($query) ? "$query FORMAT JSONCompact" : $query,
|
16 |
+
'header' => 'Content-type: application/x-www-form-urlencoded',
|
17 |
+
'ignore_errors' => 1, // available since PHP 5.2.10
|
18 |
+
))));
|
19 |
+
|
20 |
+
if ($file === false) {
|
21 |
+
$this->error = $php_errormsg;
|
22 |
+
return $file;
|
23 |
+
}
|
24 |
+
if (!preg_match('~^HTTP/[0-9.]+ 2~i', $http_response_header[0])) {
|
25 |
+
$this->error = $file;
|
26 |
+
return false;
|
27 |
+
}
|
28 |
+
$return = json_decode($file, true);
|
29 |
+
if ($return === null) {
|
30 |
+
$this->errno = json_last_error();
|
31 |
+
if (function_exists('json_last_error_msg')) {
|
32 |
+
$this->error = json_last_error_msg();
|
33 |
+
} else {
|
34 |
+
$constants = get_defined_constants(true);
|
35 |
+
foreach ($constants['json'] as $name => $value) {
|
36 |
+
if ($value == $this->errno && preg_match('~^JSON_ERROR_~', $name)) {
|
37 |
+
$this->error = $name;
|
38 |
+
break;
|
39 |
+
}
|
40 |
+
}
|
41 |
+
}
|
42 |
+
}
|
43 |
+
return new Min_Result($return);
|
44 |
+
}
|
45 |
+
|
46 |
+
function isQuerySelectLike($query) {
|
47 |
+
return (bool) preg_match('~^(select|show)~i', $query);
|
48 |
+
}
|
49 |
+
|
50 |
+
function query($query) {
|
51 |
+
return $this->rootQuery($this->_db, $query);
|
52 |
+
}
|
53 |
+
|
54 |
+
function connect($server, $username, $password) {
|
55 |
+
preg_match('~^(https?://)?(.*)~', $server, $match);
|
56 |
+
$this->_url = ($match[1] ? $match[1] : "http://") . "$username:$password@$match[2]";
|
57 |
+
$return = $this->query('SELECT 1');
|
58 |
+
return (bool) $return;
|
59 |
+
}
|
60 |
+
|
61 |
+
function select_db($database) {
|
62 |
+
$this->_db = $database;
|
63 |
+
return true;
|
64 |
+
}
|
65 |
+
|
66 |
+
function quote($string) {
|
67 |
+
return "'" . addcslashes($string, "\\'") . "'";
|
68 |
+
}
|
69 |
+
|
70 |
+
function multi_query($query) {
|
71 |
+
return $this->_result = $this->query($query);
|
72 |
+
}
|
73 |
+
|
74 |
+
function store_result() {
|
75 |
+
return $this->_result;
|
76 |
+
}
|
77 |
+
|
78 |
+
function next_result() {
|
79 |
+
return false;
|
80 |
+
}
|
81 |
+
|
82 |
+
function result($query, $field = 0) {
|
83 |
+
$result = $this->query($query);
|
84 |
+
return $result['data'];
|
85 |
+
}
|
86 |
+
}
|
87 |
+
|
88 |
+
class Min_Result {
|
89 |
+
var $num_rows, $_rows, $columns, $meta, $_offset = 0;
|
90 |
+
|
91 |
+
function __construct($result) {
|
92 |
+
$this->num_rows = $result['rows'];
|
93 |
+
$this->_rows = $result['data'];
|
94 |
+
$this->meta = $result['meta'];
|
95 |
+
$this->columns = array_column($this->meta, 'name');
|
96 |
+
reset($this->_rows);
|
97 |
+
}
|
98 |
+
|
99 |
+
function fetch_assoc() {
|
100 |
+
$row = current($this->_rows);
|
101 |
+
next($this->_rows);
|
102 |
+
return $row === false ? false : array_combine($this->columns, $row);
|
103 |
+
}
|
104 |
+
|
105 |
+
function fetch_row() {
|
106 |
+
$row = current($this->_rows);
|
107 |
+
next($this->_rows);
|
108 |
+
return $row;
|
109 |
+
}
|
110 |
+
|
111 |
+
function fetch_field() {
|
112 |
+
$column = $this->_offset++;
|
113 |
+
$return = new stdClass;
|
114 |
+
if ($column < count($this->columns)) {
|
115 |
+
$return->name = $this->meta[$column]['name'];
|
116 |
+
$return->orgname = $return->name;
|
117 |
+
$return->type = $this->meta[$column]['type'];
|
118 |
+
}
|
119 |
+
return $return;
|
120 |
+
}
|
121 |
+
}
|
122 |
+
|
123 |
+
|
124 |
+
class Min_Driver extends Min_SQL {
|
125 |
+
function delete($table, $queryWhere, $limit = 0) {
|
126 |
+
return queries("ALTER TABLE " . table($table) . " DELETE $queryWhere");
|
127 |
+
}
|
128 |
+
|
129 |
+
function update($table, $set, $queryWhere, $limit = 0, $separator = "\n") {
|
130 |
+
$values = array();
|
131 |
+
foreach ($set as $key => $val) {
|
132 |
+
$values[] = "$key = $val";
|
133 |
+
}
|
134 |
+
$query = $separator . implode(",$separator", $values);
|
135 |
+
return queries("ALTER TABLE " . table($table) . " UPDATE $query$queryWhere");
|
136 |
+
}
|
137 |
+
}
|
138 |
+
|
139 |
+
function idf_escape($idf) {
|
140 |
+
return "`" . str_replace("`", "``", $idf) . "`";
|
141 |
+
}
|
142 |
+
|
143 |
+
function table($idf) {
|
144 |
+
return idf_escape($idf);
|
145 |
+
}
|
146 |
+
|
147 |
+
function explain($connection, $query) {
|
148 |
+
return '';
|
149 |
+
}
|
150 |
+
|
151 |
+
function found_rows($table_status, $where) {
|
152 |
+
$rows = get_vals("SELECT COUNT(*) FROM " . idf_escape($table_status["Name"]) . ($where ? " WHERE " . implode(" AND ", $where) : ""));
|
153 |
+
return empty($rows) ? false : $rows[0];
|
154 |
+
}
|
155 |
+
|
156 |
+
function alter_table($table, $name, $fields, $foreign, $comment, $engine, $collation, $auto_increment, $partitioning) {
|
157 |
+
foreach ($fields as $field) {
|
158 |
+
if ($field[1][2] === " NULL") {
|
159 |
+
$field[1][1] = " Nullable({$field[1][1]})";
|
160 |
+
}
|
161 |
+
unset($field[1][2]);
|
162 |
+
}
|
163 |
+
}
|
164 |
+
|
165 |
+
function truncate_tables($tables) {
|
166 |
+
return apply_queries("TRUNCATE TABLE", $tables);
|
167 |
+
}
|
168 |
+
|
169 |
+
function drop_views($views) {
|
170 |
+
return drop_tables($views);
|
171 |
+
}
|
172 |
+
|
173 |
+
function drop_tables($tables) {
|
174 |
+
return apply_queries("DROP TABLE", $tables);
|
175 |
+
}
|
176 |
+
|
177 |
+
function connect() {
|
178 |
+
global $adminer;
|
179 |
+
$connection = new Min_DB;
|
180 |
+
$credentials = $adminer->credentials();
|
181 |
+
if ($connection->connect($credentials[0], $credentials[1], $credentials[2])) {
|
182 |
+
return $connection;
|
183 |
+
}
|
184 |
+
return $connection->error;
|
185 |
+
}
|
186 |
+
|
187 |
+
function get_databases($flush) {
|
188 |
+
global $connection;
|
189 |
+
$result = get_rows('SHOW DATABASES');
|
190 |
+
|
191 |
+
$return = array();
|
192 |
+
foreach ($result as $row) {
|
193 |
+
$return[] = $row['name'];
|
194 |
+
}
|
195 |
+
sort($return);
|
196 |
+
return $return;
|
197 |
+
}
|
198 |
+
|
199 |
+
function limit($query, $where, $limit, $offset = 0, $separator = " ") {
|
200 |
+
return " $query$where" . ($limit !== null ? $separator . "LIMIT $limit" . ($offset ? ", $offset" : "") : "");
|
201 |
+
}
|
202 |
+
|
203 |
+
function limit1($table, $query, $where, $separator = "\n") {
|
204 |
+
return limit($query, $where, 1, 0, $separator);
|
205 |
+
}
|
206 |
+
|
207 |
+
function db_collation($db, $collations) {
|
208 |
+
}
|
209 |
+
|
210 |
+
function engines() {
|
211 |
+
return array('MergeTree');
|
212 |
+
}
|
213 |
+
|
214 |
+
function logged_user() {
|
215 |
+
global $adminer;
|
216 |
+
$credentials = $adminer->credentials();
|
217 |
+
return $credentials[1];
|
218 |
+
}
|
219 |
+
|
220 |
+
function tables_list() {
|
221 |
+
$result = get_rows('SHOW TABLES');
|
222 |
+
$return = array();
|
223 |
+
foreach ($result as $row) {
|
224 |
+
$return[$row['name']] = 'table';
|
225 |
+
}
|
226 |
+
ksort($return);
|
227 |
+
return $return;
|
228 |
+
}
|
229 |
+
|
230 |
+
function count_tables($databases) {
|
231 |
+
return array();
|
232 |
+
}
|
233 |
+
|
234 |
+
function table_status($name = "", $fast = false) {
|
235 |
+
global $connection;
|
236 |
+
$return = array();
|
237 |
+
$tables = get_rows("SELECT name, engine FROM system.tables WHERE database = " . q($connection->_db));
|
238 |
+
foreach ($tables as $table) {
|
239 |
+
$return[$table['name']] = array(
|
240 |
+
'Name' => $table['name'],
|
241 |
+
'Engine' => $table['engine'],
|
242 |
+
);
|
243 |
+
if ($name === $table['name']) {
|
244 |
+
return $return[$table['name']];
|
245 |
+
}
|
246 |
+
}
|
247 |
+
return $return;
|
248 |
+
}
|
249 |
+
|
250 |
+
function is_view($table_status) {
|
251 |
+
return false;
|
252 |
+
}
|
253 |
+
|
254 |
+
function fk_support($table_status) {
|
255 |
+
return false;
|
256 |
+
}
|
257 |
+
|
258 |
+
function convert_field($field) {
|
259 |
+
}
|
260 |
+
|
261 |
+
function unconvert_field($field, $return) {
|
262 |
+
if (in_array($field['type'], array("Int8", "Int16", "Int32", "Int64", "UInt8", "UInt16", "UInt32", "UInt64", "Float32", "Float64"))) {
|
263 |
+
return "to$field[type]($return)";
|
264 |
+
}
|
265 |
+
return $return;
|
266 |
+
}
|
267 |
+
|
268 |
+
function fields($table) {
|
269 |
+
$return = array();
|
270 |
+
$result = get_rows("SELECT name, type, default_expression FROM system.columns WHERE " . idf_escape('table') . " = " . q($table));
|
271 |
+
foreach($result as $row) {
|
272 |
+
$type = trim($row['type']);
|
273 |
+
$nullable = strpos($type, 'Nullable(') === 0;
|
274 |
+
$return[trim($row['name'])] = array(
|
275 |
+
"field" => trim($row['name']),
|
276 |
+
"full_type" => $type,
|
277 |
+
"type" => $type,
|
278 |
+
"default" => trim($row['default_expression']),
|
279 |
+
"null" => $nullable,
|
280 |
+
"auto_increment" => '0',
|
281 |
+
"privileges" => array("insert" => 1, "select" => 1, "update" => 0),
|
282 |
+
);
|
283 |
+
}
|
284 |
+
|
285 |
+
return $return;
|
286 |
+
}
|
287 |
+
|
288 |
+
function indexes($table, $connection2 = null) {
|
289 |
+
return array();
|
290 |
+
}
|
291 |
+
|
292 |
+
function foreign_keys($table) {
|
293 |
+
return array();
|
294 |
+
}
|
295 |
+
|
296 |
+
function collations() {
|
297 |
+
return array();
|
298 |
+
}
|
299 |
+
|
300 |
+
function information_schema($db) {
|
301 |
+
return false;
|
302 |
+
}
|
303 |
+
|
304 |
+
function error() {
|
305 |
+
global $connection;
|
306 |
+
return h($connection->error);
|
307 |
+
}
|
308 |
+
|
309 |
+
function types() {
|
310 |
+
return array();
|
311 |
+
}
|
312 |
+
|
313 |
+
function schemas() {
|
314 |
+
return array();
|
315 |
+
}
|
316 |
+
|
317 |
+
function get_schema() {
|
318 |
+
return "";
|
319 |
+
}
|
320 |
+
|
321 |
+
function set_schema($schema) {
|
322 |
+
return true;
|
323 |
+
}
|
324 |
+
|
325 |
+
function auto_increment() {
|
326 |
+
return '';
|
327 |
+
}
|
328 |
+
|
329 |
+
function last_id() {
|
330 |
+
return 0; // ClickHouse doesn't have it
|
331 |
+
}
|
332 |
+
|
333 |
+
function support($feature) {
|
334 |
+
return preg_match("~^(columns|sql|status|table)$~", $feature);
|
335 |
+
}
|
336 |
+
|
337 |
+
$jush = "clickhouse";
|
338 |
+
$types = array();
|
339 |
+
$structured_types = array();
|
340 |
+
foreach (array( //! arrays
|
341 |
+
lang('Numbers') => array("Int8" => 3, "Int16" => 5, "Int32" => 10, "Int64" => 19, "UInt8" => 3, "UInt16" => 5, "UInt32" => 10, "UInt64" => 20, "Float32" => 7, "Float64" => 16, 'Decimal' => 38, 'Decimal32' => 9, 'Decimal64' => 18, 'Decimal128' => 38),
|
342 |
+
lang('Date and time') => array("Date" => 13, "DateTime" => 20),
|
343 |
+
lang('Strings') => array("String" => 0),
|
344 |
+
lang('Binary') => array("FixedString" => 0),
|
345 |
+
) as $key => $val) {
|
346 |
+
$types += $val;
|
347 |
+
$structured_types[$key] = array_keys($val);
|
348 |
+
}
|
349 |
+
$unsigned = array();
|
350 |
+
$operators = array("=", "<", ">", "<=", ">=", "!=", "~", "!~", "LIKE", "LIKE %%", "IN", "IS NULL", "NOT LIKE", "NOT IN", "IS NOT NULL", "SQL");
|
351 |
+
$functions = array();
|
352 |
+
$grouping = array("avg", "count", "count distinct", "max", "min", "sum");
|
353 |
+
$edit_functions = array();
|
354 |
+
}
|
adminer/adminer/adminer/drivers/mongo.inc.php
CHANGED
@@ -526,7 +526,7 @@ if (isset($_GET["mongo"])) {
|
|
526 |
$op = '$regex';
|
527 |
break;
|
528 |
default:
|
529 |
-
continue;
|
530 |
}
|
531 |
if ($type == 'and') {
|
532 |
$data['$and'][] = array($col => array($op => $val));
|
@@ -662,7 +662,7 @@ if (isset($_GET["mongo"])) {
|
|
662 |
}
|
663 |
|
664 |
function support($feature) {
|
665 |
-
return preg_match("~database|indexes~", $feature);
|
666 |
}
|
667 |
|
668 |
function db_collation($db, $collations) {
|
526 |
$op = '$regex';
|
527 |
break;
|
528 |
default:
|
529 |
+
continue 2;
|
530 |
}
|
531 |
if ($type == 'and') {
|
532 |
$data['$and'][] = array($col => array($op => $val));
|
662 |
}
|
663 |
|
664 |
function support($feature) {
|
665 |
+
return preg_match("~database|indexes|descidx~", $feature);
|
666 |
}
|
667 |
|
668 |
function db_collation($db, $collations) {
|
adminer/adminer/adminer/drivers/mssql.inc.php
CHANGED
@@ -24,7 +24,13 @@ if (isset($_GET["mssql"])) {
|
|
24 |
}
|
25 |
|
26 |
function connect($server, $username, $password) {
|
27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
if ($this->_link) {
|
29 |
$info = sqlsrv_server_info($this->_link);
|
30 |
$this->server_info = $info['SQLServerVersion'];
|
@@ -626,7 +632,7 @@ WHERE sys1.xtype = 'TR' AND sys2.name = " . q($table)
|
|
626 |
}
|
627 |
|
628 |
function support($feature) {
|
629 |
-
return preg_match('~^(columns|database|drop_col|indexes|scheme|sql|table|trigger|view|view_trigger)$~', $feature); //! routine|
|
630 |
}
|
631 |
|
632 |
$jush = "mssql";
|
24 |
}
|
25 |
|
26 |
function connect($server, $username, $password) {
|
27 |
+
global $adminer;
|
28 |
+
$db = $adminer->database();
|
29 |
+
$connection_info = array("UID" => $username, "PWD" => $password, "CharacterSet" => "UTF-8");
|
30 |
+
if ($db != "") {
|
31 |
+
$connection_info["Database"] = $db;
|
32 |
+
}
|
33 |
+
$this->_link = @sqlsrv_connect(preg_replace('~:~', ',', $server), $connection_info);
|
34 |
if ($this->_link) {
|
35 |
$info = sqlsrv_server_info($this->_link);
|
36 |
$this->server_info = $info['SQLServerVersion'];
|
632 |
}
|
633 |
|
634 |
function support($feature) {
|
635 |
+
return preg_match('~^(columns|database|drop_col|indexes|descidx|scheme|sql|table|trigger|view|view_trigger)$~', $feature); //! routine|
|
636 |
}
|
637 |
|
638 |
$jush = "mssql";
|
adminer/adminer/adminer/drivers/mysql.inc.php
CHANGED
@@ -579,7 +579,7 @@ if (!defined("DRIVER")) {
|
|
579 |
*/
|
580 |
function foreign_keys($table) {
|
581 |
global $connection, $on_actions;
|
582 |
-
static $pattern = '
|
583 |
$return = array();
|
584 |
$create_table = $connection->result("SHOW CREATE TABLE " . table($table), 1);
|
585 |
if ($create_table) {
|
@@ -810,8 +810,7 @@ if (!defined("DRIVER")) {
|
|
810 |
queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");
|
811 |
foreach ($tables as $table) {
|
812 |
$name = ($target == DB ? table("copy_$table") : idf_escape($target) . "." . table($table));
|
813 |
-
if (!queries("
|
814 |
-
|| !queries("CREATE TABLE $name LIKE " . table($table))
|
815 |
|| !queries("INSERT INTO $name SELECT * FROM " . table($table))
|
816 |
) {
|
817 |
return false;
|
@@ -826,9 +825,7 @@ if (!defined("DRIVER")) {
|
|
826 |
foreach ($views as $table) {
|
827 |
$name = ($target == DB ? table("copy_$table") : idf_escape($target) . "." . table($table));
|
828 |
$view = view($table);
|
829 |
-
if (!queries("
|
830 |
-
|| !queries("CREATE VIEW $name AS $view[select]") //! USE to avoid db.table
|
831 |
-
) {
|
832 |
return false;
|
833 |
}
|
834 |
}
|
@@ -1086,11 +1083,11 @@ if (!defined("DRIVER")) {
|
|
1086 |
}
|
1087 |
|
1088 |
/** Check whether a feature is supported
|
1089 |
-
* @param string "comment", "copy", "database", "drop_col", "dump", "event", "kill", "materializedview", "partitioning", "privileges", "procedure", "processlist", "routine", "scheme", "sequence", "status", "table", "trigger", "type", "variables", "view", "view_trigger"
|
1090 |
* @return bool
|
1091 |
*/
|
1092 |
function support($feature) {
|
1093 |
-
return !preg_match("~scheme|sequence|type|view_trigger|materializedview" . (min_version(5.1) ? "" : "|event|partitioning" . (min_version(5) ? "" : "|routine|trigger|view")) . "~", $feature);
|
1094 |
}
|
1095 |
|
1096 |
function kill_process($val) {
|
579 |
*/
|
580 |
function foreign_keys($table) {
|
581 |
global $connection, $on_actions;
|
582 |
+
static $pattern = '(?:`(?:[^`]|``)+`)|(?:"(?:[^"]|"")+")';
|
583 |
$return = array();
|
584 |
$create_table = $connection->result("SHOW CREATE TABLE " . table($table), 1);
|
585 |
if ($create_table) {
|
810 |
queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");
|
811 |
foreach ($tables as $table) {
|
812 |
$name = ($target == DB ? table("copy_$table") : idf_escape($target) . "." . table($table));
|
813 |
+
if (!queries("CREATE TABLE $name LIKE " . table($table))
|
|
|
814 |
|| !queries("INSERT INTO $name SELECT * FROM " . table($table))
|
815 |
) {
|
816 |
return false;
|
825 |
foreach ($views as $table) {
|
826 |
$name = ($target == DB ? table("copy_$table") : idf_escape($target) . "." . table($table));
|
827 |
$view = view($table);
|
828 |
+
if (!queries("CREATE VIEW $name AS $view[select]")) { //! USE to avoid db.table
|
|
|
|
|
829 |
return false;
|
830 |
}
|
831 |
}
|
1083 |
}
|
1084 |
|
1085 |
/** Check whether a feature is supported
|
1086 |
+
* @param string "comment", "copy", "database", "descidx", "drop_col", "dump", "event", "indexes", "kill", "materializedview", "partitioning", "privileges", "procedure", "processlist", "routine", "scheme", "sequence", "status", "table", "trigger", "type", "variables", "view", "view_trigger"
|
1087 |
* @return bool
|
1088 |
*/
|
1089 |
function support($feature) {
|
1090 |
+
return !preg_match("~scheme|sequence|type|view_trigger|materializedview" . (min_version(8) ? "" : "|descidx" . (min_version(5.1) ? "" : "|event|partitioning" . (min_version(5) ? "" : "|routine|trigger|view"))) . "~", $feature);
|
1091 |
}
|
1092 |
|
1093 |
function kill_process($val) {
|
adminer/adminer/adminer/drivers/oracle.inc.php
CHANGED
@@ -398,7 +398,7 @@ ORDER BY PROCESS
|
|
398 |
}
|
399 |
|
400 |
function support($feature) {
|
401 |
-
return preg_match('~^(columns|database|drop_col|indexes|processlist|scheme|sql|status|table|variables|view|view_trigger)$~', $feature); //!
|
402 |
}
|
403 |
|
404 |
$jush = "oracle";
|
398 |
}
|
399 |
|
400 |
function support($feature) {
|
401 |
+
return preg_match('~^(columns|database|drop_col|indexes|descidx|processlist|scheme|sql|status|table|variables|view|view_trigger)$~', $feature); //!
|
402 |
}
|
403 |
|
404 |
$jush = "oracle";
|
adminer/adminer/adminer/drivers/pgsql.inc.php
CHANGED
@@ -349,7 +349,10 @@ WHERE relkind IN ('r', 'm', 'v', 'f')
|
|
349 |
'timestamp without time zone' => 'timestamp',
|
350 |
'timestamp with time zone' => 'timestamptz',
|
351 |
);
|
352 |
-
|
|
|
|
|
|
|
353 |
FROM pg_class c
|
354 |
JOIN pg_namespace n ON c.relnamespace = n.oid
|
355 |
JOIN pg_attribute a ON c.oid = a.attrelid
|
@@ -372,8 +375,11 @@ ORDER BY a.attnum"
|
|
372 |
$row["type"] = $type;
|
373 |
$row["full_type"] = $row["type"] . $length . $addon . $array;
|
374 |
}
|
|
|
|
|
|
|
375 |
$row["null"] = !$row["attnotnull"];
|
376 |
-
$row["auto_increment"] = preg_match('~^nextval\(~i', $row["default"]);
|
377 |
$row["privileges"] = array("insert" => 1, "select" => 1, "update" => 1);
|
378 |
if (preg_match('~(.+)::[^)]+(.*)~', $row["default"], $match)) {
|
379 |
$row["default"] = ($match[1] == "NULL" ? null : (($match[1][0] == "'" ? idf_unescape($match[1]) : $match[1]) . $match[2]));
|
@@ -758,7 +764,11 @@ AND typelem = 0"
|
|
758 |
// "basic" indexes after table definition
|
759 |
foreach ($indexes as $index_name => $index) {
|
760 |
if ($index['type'] == 'INDEX') {
|
761 |
-
$
|
|
|
|
|
|
|
|
|
762 |
}
|
763 |
}
|
764 |
|
@@ -814,7 +824,7 @@ AND typelem = 0"
|
|
814 |
}
|
815 |
|
816 |
function support($feature) {
|
817 |
-
return preg_match('~^(database|table|columns|sql|indexes|comment|view|' . (min_version(9.3) ? 'materializedview|' : '') . 'scheme|routine|processlist|sequence|trigger|type|variables|drop_col|kill|dump)$~', $feature);
|
818 |
}
|
819 |
|
820 |
function kill_process($val) {
|
349 |
'timestamp without time zone' => 'timestamp',
|
350 |
'timestamp with time zone' => 'timestamptz',
|
351 |
);
|
352 |
+
|
353 |
+
$identity_column = min_version(10) ? "(a.attidentity = 'd')::int" : '0';
|
354 |
+
|
355 |
+
foreach (get_rows("SELECT a.attname AS field, format_type(a.atttypid, a.atttypmod) AS full_type, d.adsrc AS default, a.attnotnull::int, col_description(c.oid, a.attnum) AS comment, $identity_column AS identity
|
356 |
FROM pg_class c
|
357 |
JOIN pg_namespace n ON c.relnamespace = n.oid
|
358 |
JOIN pg_attribute a ON c.oid = a.attrelid
|
375 |
$row["type"] = $type;
|
376 |
$row["full_type"] = $row["type"] . $length . $addon . $array;
|
377 |
}
|
378 |
+
if ($row['identity']) {
|
379 |
+
$row['default'] = 'GENERATED BY DEFAULT AS IDENTITY';
|
380 |
+
}
|
381 |
$row["null"] = !$row["attnotnull"];
|
382 |
+
$row["auto_increment"] = $row['identity'] || preg_match('~^nextval\(~i', $row["default"]);
|
383 |
$row["privileges"] = array("insert" => 1, "select" => 1, "update" => 1);
|
384 |
if (preg_match('~(.+)::[^)]+(.*)~', $row["default"], $match)) {
|
385 |
$row["default"] = ($match[1] == "NULL" ? null : (($match[1][0] == "'" ? idf_unescape($match[1]) : $match[1]) . $match[2]));
|
764 |
// "basic" indexes after table definition
|
765 |
foreach ($indexes as $index_name => $index) {
|
766 |
if ($index['type'] == 'INDEX') {
|
767 |
+
$columns = array();
|
768 |
+
foreach ($index['columns'] as $key => $val) {
|
769 |
+
$columns[] = idf_escape($val) . ($index['descs'][$key] ? " DESC" : "");
|
770 |
+
}
|
771 |
+
$return .= "\n\nCREATE INDEX " . idf_escape($index_name) . " ON " . idf_escape($status['nspname']) . "." . idf_escape($status['Name']) . " USING btree (" . implode(', ', $columns) . ");";
|
772 |
}
|
773 |
}
|
774 |
|
824 |
}
|
825 |
|
826 |
function support($feature) {
|
827 |
+
return preg_match('~^(database|table|columns|sql|indexes|descidx|comment|view|' . (min_version(9.3) ? 'materializedview|' : '') . 'scheme|routine|processlist|sequence|trigger|type|variables|drop_col|kill|dump)$~', $feature);
|
828 |
}
|
829 |
|
830 |
function kill_process($val) {
|
adminer/adminer/adminer/drivers/sqlite.inc.php
CHANGED
@@ -770,7 +770,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|
770 |
}
|
771 |
|
772 |
function support($feature) {
|
773 |
-
return preg_match('~^(columns|database|drop_col|dump|indexes|move_col|sql|status|table|trigger|variables|view|view_trigger)$~', $feature);
|
774 |
}
|
775 |
|
776 |
$jush = "sqlite";
|
770 |
}
|
771 |
|
772 |
function support($feature) {
|
773 |
+
return preg_match('~^(columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|trigger|variables|view|view_trigger)$~', $feature);
|
774 |
}
|
775 |
|
776 |
$jush = "sqlite";
|
adminer/adminer/adminer/dump.inc.php
CHANGED
@@ -126,7 +126,7 @@ page_header(lang('Export'), $error, ($_GET["export"] != "" ? array("table" => $_
|
|
126 |
?>
|
127 |
|
128 |
<form action="" method="post">
|
129 |
-
<table cellspacing="0">
|
130 |
<?php
|
131 |
$db_style = array('', 'USE', 'DROP+CREATE', 'CREATE');
|
132 |
$table_style = array('', 'DROP+CREATE', 'CREATE');
|
126 |
?>
|
127 |
|
128 |
<form action="" method="post">
|
129 |
+
<table cellspacing="0" class="layout">
|
130 |
<?php
|
131 |
$db_style = array('', 'USE', 'DROP+CREATE', 'CREATE');
|
132 |
$table_style = array('', 'DROP+CREATE', 'CREATE');
|
adminer/adminer/adminer/event.inc.php
CHANGED
@@ -35,13 +35,13 @@ if (!$row && $EVENT != "") {
|
|
35 |
?>
|
36 |
|
37 |
<form action="" method="post">
|
38 |
-
<table cellspacing="0">
|
39 |
-
<tr><th><?php echo lang('Name'); ?><td><input name="EVENT_NAME" value="<?php echo h($row["EVENT_NAME"]); ?>" maxlength="64" autocapitalize="off">
|
40 |
<tr><th title="datetime"><?php echo lang('Start'); ?><td><input name="STARTS" value="<?php echo h("$row[EXECUTE_AT]$row[STARTS]"); ?>">
|
41 |
<tr><th title="datetime"><?php echo lang('End'); ?><td><input name="ENDS" value="<?php echo h($row["ENDS"]); ?>">
|
42 |
<tr><th><?php echo lang('Every'); ?><td><input type="number" name="INTERVAL_VALUE" value="<?php echo h($row["INTERVAL_VALUE"]); ?>" class="size"> <?php echo html_select("INTERVAL_FIELD", $intervals, $row["INTERVAL_FIELD"]); ?>
|
43 |
<tr><th><?php echo lang('Status'); ?><td><?php echo html_select("STATUS", $statuses, $row["STATUS"]); ?>
|
44 |
-
<tr><th><?php echo lang('Comment'); ?><td><input name="EVENT_COMMENT" value="<?php echo h($row["EVENT_COMMENT"]); ?>" maxlength="64">
|
45 |
<tr><th><td><?php echo checkbox("ON_COMPLETION", "PRESERVE", $row["ON_COMPLETION"] == "PRESERVE", lang('On completion preserve')); ?>
|
46 |
</table>
|
47 |
<p><?php textarea("EVENT_DEFINITION", $row["EVENT_DEFINITION"]); ?>
|
35 |
?>
|
36 |
|
37 |
<form action="" method="post">
|
38 |
+
<table cellspacing="0" class="layout">
|
39 |
+
<tr><th><?php echo lang('Name'); ?><td><input name="EVENT_NAME" value="<?php echo h($row["EVENT_NAME"]); ?>" data-maxlength="64" autocapitalize="off">
|
40 |
<tr><th title="datetime"><?php echo lang('Start'); ?><td><input name="STARTS" value="<?php echo h("$row[EXECUTE_AT]$row[STARTS]"); ?>">
|
41 |
<tr><th title="datetime"><?php echo lang('End'); ?><td><input name="ENDS" value="<?php echo h($row["ENDS"]); ?>">
|
42 |
<tr><th><?php echo lang('Every'); ?><td><input type="number" name="INTERVAL_VALUE" value="<?php echo h($row["INTERVAL_VALUE"]); ?>" class="size"> <?php echo html_select("INTERVAL_FIELD", $intervals, $row["INTERVAL_FIELD"]); ?>
|
43 |
<tr><th><?php echo lang('Status'); ?><td><?php echo html_select("STATUS", $statuses, $row["STATUS"]); ?>
|
44 |
+
<tr><th><?php echo lang('Comment'); ?><td><input name="EVENT_COMMENT" value="<?php echo h($row["EVENT_COMMENT"]); ?>" data-maxlength="64">
|
45 |
<tr><th><td><?php echo checkbox("ON_COMPLETION", "PRESERVE", $row["ON_COMPLETION"] == "PRESERVE", lang('On completion preserve')); ?>
|
46 |
</table>
|
47 |
<p><?php textarea("EVENT_DEFINITION", $row["EVENT_DEFINITION"]); ?>
|
adminer/adminer/adminer/include/adminer.inc.php
CHANGED
@@ -118,11 +118,11 @@ class Adminer {
|
|
118 |
*/
|
119 |
function loginForm() {
|
120 |
global $drivers;
|
121 |
-
echo "<table cellspacing='0'>\n";
|
122 |
-
echo $this->loginFormField('driver', '<tr><th>' . lang('System') . '<td>', html_select("auth[driver]", $drivers, DRIVER) . "\n");
|
123 |
echo $this->loginFormField('server', '<tr><th>' . lang('Server') . '<td>', '<input name="auth[server]" value="' . h(SERVER) . '" title="hostname[:port]" placeholder="localhost" autocapitalize="off">' . "\n");
|
124 |
-
echo $this->loginFormField('username', '<tr><th>' . lang('Username') . '<td>', '<input name="auth[username]" id="username" value="' . h($_GET["username"]) . '" autocapitalize="off">' . script("focus(qs('#username'));"));
|
125 |
-
echo $this->loginFormField('password', '<tr><th>' . lang('Password') . '<td>', '<input type="password" name="auth[password]">' . "\n");
|
126 |
echo $this->loginFormField('db', '<tr><th>' . lang('Database') . '<td>', '<input name="auth[db]" value="' . h($_GET["db"]) . '" autocapitalize="off">' . "\n");
|
127 |
echo "</table>\n";
|
128 |
echo "<p><input type='submit' value='" . lang('Login') . "'>\n";
|
@@ -310,6 +310,7 @@ class Adminer {
|
|
310 |
* @return null
|
311 |
*/
|
312 |
function tableStructurePrint($fields) {
|
|
|
313 |
echo "<table cellspacing='0' class='nowrap'>\n";
|
314 |
echo "<thead><tr><th>" . lang('Column') . "<td>" . lang('Type') . (support("comment") ? "<td>" . lang('Comment') : "") . "</thead>\n";
|
315 |
foreach ($fields as $field) {
|
@@ -322,6 +323,7 @@ class Adminer {
|
|
322 |
echo "\n";
|
323 |
}
|
324 |
echo "</table>\n";
|
|
|
325 |
}
|
326 |
|
327 |
/** Print list of indexes on table in tabular format
|
@@ -639,7 +641,7 @@ class Adminer {
|
|
639 |
$history[$_GET["db"]] = array();
|
640 |
}
|
641 |
if (strlen($query) > 1e6) {
|
642 |
-
$query = preg_replace('~[\x80-\xFF]+$~', '', substr($query, 0, 1e6)) . "\n
|
643 |
}
|
644 |
$history[$_GET["db"]][] = array($query, time(), $time); // not DB - $_GET["db"] is changed in database.inc.php //! respect $_GET["ns"]
|
645 |
$sql_id = "sql-" . count($history[$_GET["db"]]);
|
@@ -843,7 +845,7 @@ class Adminer {
|
|
843 |
foreach ($row as $key => $val) {
|
844 |
$field = $fields[$key];
|
845 |
$row[$key] = ($val !== null
|
846 |
-
? unconvert_field($field, preg_match(number_type(), $field["type"]) && $val != '' ? $val : q(($val === false ? 0 : $val)))
|
847 |
: "NULL"
|
848 |
);
|
849 |
}
|
@@ -931,12 +933,12 @@ class Adminer {
|
|
931 |
foreach ($usernames as $username => $password) {
|
932 |
if ($password !== null) {
|
933 |
if ($first) {
|
934 |
-
echo "<
|
935 |
$first = false;
|
936 |
}
|
937 |
$dbs = $_SESSION["db"][$vendor][$server][$username];
|
938 |
foreach (($dbs ? array_keys($dbs) : array("")) as $db) {
|
939 |
-
echo "<a href='" . h(auth_url($vendor, $server, $username, $db)) . "'>($drivers[$vendor]) " . h($username . ($server != "" ? "@" . $this->serverName($server) : "") . ($db != "" ? " - $db" : "")) . "</a
|
940 |
}
|
941 |
}
|
942 |
}
|
118 |
*/
|
119 |
function loginForm() {
|
120 |
global $drivers;
|
121 |
+
echo "<table cellspacing='0' class='layout'>\n";
|
122 |
+
echo $this->loginFormField('driver', '<tr><th>' . lang('System') . '<td>', html_select("auth[driver]", $drivers, DRIVER, "loginDriver(this);") . "\n");
|
123 |
echo $this->loginFormField('server', '<tr><th>' . lang('Server') . '<td>', '<input name="auth[server]" value="' . h(SERVER) . '" title="hostname[:port]" placeholder="localhost" autocapitalize="off">' . "\n");
|
124 |
+
echo $this->loginFormField('username', '<tr><th>' . lang('Username') . '<td>', '<input name="auth[username]" id="username" value="' . h($_GET["username"]) . '" autocomplete="username" autocapitalize="off">' . script("focus(qs('#username')); qs('#username').form['auth[driver]'].onchange();"));
|
125 |
+
echo $this->loginFormField('password', '<tr><th>' . lang('Password') . '<td>', '<input type="password" name="auth[password]" autocomplete="current-password">' . "\n");
|
126 |
echo $this->loginFormField('db', '<tr><th>' . lang('Database') . '<td>', '<input name="auth[db]" value="' . h($_GET["db"]) . '" autocapitalize="off">' . "\n");
|
127 |
echo "</table>\n";
|
128 |
echo "<p><input type='submit' value='" . lang('Login') . "'>\n";
|
310 |
* @return null
|
311 |
*/
|
312 |
function tableStructurePrint($fields) {
|
313 |
+
echo "<div class='scrollable'>\n";
|
314 |
echo "<table cellspacing='0' class='nowrap'>\n";
|
315 |
echo "<thead><tr><th>" . lang('Column') . "<td>" . lang('Type') . (support("comment") ? "<td>" . lang('Comment') : "") . "</thead>\n";
|
316 |
foreach ($fields as $field) {
|
323 |
echo "\n";
|
324 |
}
|
325 |
echo "</table>\n";
|
326 |
+
echo "</div>\n";
|
327 |
}
|
328 |
|
329 |
/** Print list of indexes on table in tabular format
|
641 |
$history[$_GET["db"]] = array();
|
642 |
}
|
643 |
if (strlen($query) > 1e6) {
|
644 |
+
$query = preg_replace('~[\x80-\xFF]+$~', '', substr($query, 0, 1e6)) . "\n…"; // [\x80-\xFF] - valid UTF-8, \n - can end by one-line comment
|
645 |
}
|
646 |
$history[$_GET["db"]][] = array($query, time(), $time); // not DB - $_GET["db"] is changed in database.inc.php //! respect $_GET["ns"]
|
647 |
$sql_id = "sql-" . count($history[$_GET["db"]]);
|
845 |
foreach ($row as $key => $val) {
|
846 |
$field = $fields[$key];
|
847 |
$row[$key] = ($val !== null
|
848 |
+
? unconvert_field($field, preg_match(number_type(), $field["type"]) && $val != '' && !preg_match('~\[~', $field["full_type"]) ? $val : q(($val === false ? 0 : $val)))
|
849 |
: "NULL"
|
850 |
);
|
851 |
}
|
933 |
foreach ($usernames as $username => $password) {
|
934 |
if ($password !== null) {
|
935 |
if ($first) {
|
936 |
+
echo "<ul id='logins'>" . script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");
|
937 |
$first = false;
|
938 |
}
|
939 |
$dbs = $_SESSION["db"][$vendor][$server][$username];
|
940 |
foreach (($dbs ? array_keys($dbs) : array("")) as $db) {
|
941 |
+
echo "<li><a href='" . h(auth_url($vendor, $server, $username, $db)) . "'>($drivers[$vendor]) " . h($username . ($server != "" ? "@" . $this->serverName($server) : "") . ($db != "" ? " - $db" : "")) . "</a>\n";
|
942 |
}
|
943 |
}
|
944 |
}
|
adminer/adminer/adminer/include/auth.inc.php
CHANGED
@@ -83,7 +83,7 @@ if ($auth) {
|
|
83 |
set_session($key, null);
|
84 |
}
|
85 |
unset_permanent();
|
86 |
-
redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1), lang('Logout successful.') . ' ' . lang('Thanks for using Adminer, consider <a href="
|
87 |
}
|
88 |
|
89 |
} elseif ($permanent && !$_SESSION["pwds"]) {
|
@@ -172,7 +172,8 @@ if (isset($_GET["username"])) {
|
|
172 |
|
173 |
$login = null;
|
174 |
if (!is_object($connection) || ($login = $adminer->login($_GET["username"], get_password())) !== true) {
|
175 |
-
|
|
|
176 |
}
|
177 |
|
178 |
if ($auth && $_POST["token"]) {
|
83 |
set_session($key, null);
|
84 |
}
|
85 |
unset_permanent();
|
86 |
+
redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1), lang('Logout successful.') . ' ' . lang('Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.'));
|
87 |
}
|
88 |
|
89 |
} elseif ($permanent && !$_SESSION["pwds"]) {
|
172 |
|
173 |
$login = null;
|
174 |
if (!is_object($connection) || ($login = $adminer->login($_GET["username"], get_password())) !== true) {
|
175 |
+
$error = (is_string($connection) ? h($connection) : (is_string($login) ? $login : lang('Invalid credentials.')));
|
176 |
+
auth_error($error . (preg_match('~^ | $~', get_password()) ? '<br>' . lang('There is a space in the input password which might be the cause.') : ''));
|
177 |
}
|
178 |
|
179 |
if ($auth && $_POST["token"]) {
|
adminer/adminer/adminer/include/bootstrap.inc.php
CHANGED
@@ -79,6 +79,7 @@ include "../adminer/drivers/firebird.inc.php";
|
|
79 |
include "../adminer/drivers/simpledb.inc.php";
|
80 |
include "../adminer/drivers/mongo.inc.php";
|
81 |
include "../adminer/drivers/elastic.inc.php";
|
|
|
82 |
include "../adminer/drivers/mysql.inc.php"; // must be included as last driver
|
83 |
|
84 |
define("SERVER", $_GET[DRIVER]); // read from pgsql=localhost
|
79 |
include "../adminer/drivers/simpledb.inc.php";
|
80 |
include "../adminer/drivers/mongo.inc.php";
|
81 |
include "../adminer/drivers/elastic.inc.php";
|
82 |
+
include "../adminer/drivers/clickhouse.inc.php";
|
83 |
include "../adminer/drivers/mysql.inc.php"; // must be included as last driver
|
84 |
|
85 |
define("SERVER", $_GET[DRIVER]); // read from pgsql=localhost
|
adminer/adminer/adminer/include/editing.inc.php
CHANGED
@@ -17,6 +17,7 @@ function select($result, $connection2 = null, $orgtables = array(), $limit = 0)
|
|
17 |
odd(''); // reset odd for each result
|
18 |
for ($i=0; (!$limit || $i < $limit) && ($row = $result->fetch_row()); $i++) {
|
19 |
if (!$i) {
|
|
|
20 |
echo "<table cellspacing='0' class='nowrap'>\n";
|
21 |
echo "<thead><tr>";
|
22 |
for ($j=0; $j < count($row); $j++) {
|
@@ -85,7 +86,7 @@ function select($result, $connection2 = null, $orgtables = array(), $limit = 0)
|
|
85 |
echo "<td>$val";
|
86 |
}
|
87 |
}
|
88 |
-
echo ($i ? "</table>" : "<p class='message'>" . lang('No rows.')) . "\n";
|
89 |
return $return;
|
90 |
}
|
91 |
|
@@ -111,6 +112,31 @@ function referencable_primary($self) {
|
|
111 |
return $return;
|
112 |
}
|
113 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
114 |
/** Print SQL <textarea> tag
|
115 |
* @param string
|
116 |
* @param string or array in which case [0] of every element is used
|
@@ -157,7 +183,7 @@ echo optionlist(array_merge($extra_types, $structured_types), $type);
|
|
157 |
<td><input name="<?php echo h($key); ?>[length]" value="<?php echo h($field["length"]); ?>" size="3"<?php echo (!$field["length"] && preg_match('~var(char|binary)$~', $type) ? " class='required'" : ""); //! type="number" with enabled JavaScript ?> aria-labelledby="label-length"><?php echo script("mixin(qsl('input'), {onfocus: editingLengthFocus, oninput: editingLengthChange});", ""); ?><td class="options"><?php
|
158 |
echo "<select name='" . h($key) . "[collation]'" . (preg_match('~(char|text|enum|set)$~', $type) ? "" : " class='hidden'") . '><option value="">(' . lang('collation') . ')' . optionlist($collations, $field["collation"]) . '</select>';
|
159 |
echo ($unsigned ? "<select name='" . h($key) . "[unsigned]'" . (!$type || preg_match(number_type(), $type) ? "" : " class='hidden'") . '><option>' . optionlist($unsigned, $field["unsigned"]) . '</select>' : '');
|
160 |
-
echo (isset($field['on_update']) ? "<select name='" . h($key) . "[on_update]'" . (preg_match('~timestamp|datetime~', $type) ? "" : " class='hidden'") . '>' . optionlist(array("" => "(" . lang('ON UPDATE') . ")", "CURRENT_TIMESTAMP"), $field["on_update"]) . '</select>' : '');
|
161 |
echo ($foreign_keys ? "<select name='" . h($key) . "[on_delete]'" . (preg_match("~`~", $type) ? "" : " class='hidden'") . "><option value=''>(" . lang('ON DELETE') . ")" . optionlist(explode("|", $on_actions), $field["on_delete"]) . "</select> " : " "); // space for IE
|
162 |
}
|
163 |
|
@@ -235,10 +261,9 @@ function type_class($type) {
|
|
235 |
* @param array
|
236 |
* @param string TABLE or PROCEDURE
|
237 |
* @param array returned by referencable_primary()
|
238 |
-
* @param bool display comments column
|
239 |
* @return null
|
240 |
*/
|
241 |
-
function edit_fields($fields, $collations, $type = "TABLE", $foreign_keys = array()
|
242 |
global $inout;
|
243 |
$fields = array_values($fields);
|
244 |
?>
|
@@ -258,7 +283,7 @@ function edit_fields($fields, $collations, $type = "TABLE", $foreign_keys = arra
|
|
258 |
'mssql' => "ms186775.aspx",
|
259 |
)); ?>
|
260 |
<td id="label-default"><?php echo lang('Default value'); ?>
|
261 |
-
<?php echo (support("comment") ? "<td id='label-comment'
|
262 |
<?php } ?>
|
263 |
<td><?php echo "<input type='image' class='icon' name='add[" . (support("move_col") ? 0 : count($fields)) . "]' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "'>" . script("row_count = " . count($fields) . ";"); ?>
|
264 |
</thead>
|
@@ -272,14 +297,14 @@ function edit_fields($fields, $collations, $type = "TABLE", $foreign_keys = arra
|
|
272 |
?>
|
273 |
<tr<?php echo ($display ? "" : " style='display: none;'"); ?>>
|
274 |
<?php echo ($type == "PROCEDURE" ? "<td>" . html_select("fields[$i][inout]", explode("|", $inout), $field["inout"]) : ""); ?>
|
275 |
-
<th><?php if ($display) { ?><input name="fields[<?php echo $i; ?>][field]" value="<?php echo h($field["field"]); ?>" maxlength="64" autocapitalize="off" aria-labelledby="label-name"><?php echo script("qsl('input').oninput = function () { editingNameChange.call(this);" . ($field["field"] != "" || count($fields) > 1 ? "" : " editingAddRow.call(this);") . " };", ""); ?><?php } ?>
|
276 |
<input type="hidden" name="fields[<?php echo $i; ?>][orig]" value="<?php echo h($orig); ?>">
|
277 |
<?php edit_type("fields[$i]", $field, $collations, $foreign_keys); ?>
|
278 |
<?php if ($type == "TABLE") { ?>
|
279 |
<td><?php echo checkbox("fields[$i][null]", 1, $field["null"], "", "", "block", "label-null"); ?>
|
280 |
<td><label class="block"><input type="radio" name="auto_increment_col" value="<?php echo $i; ?>"<?php if ($field["auto_increment"]) { ?> checked<?php } ?> aria-labelledby="label-ai"></label><td><?php
|
281 |
echo checkbox("fields[$i][has_default]", 1, $field["has_default"], "", "", "", "label-default"); ?><input name="fields[<?php echo $i; ?>][default]" value="<?php echo h($field["default"]); ?>" aria-labelledby="label-default"><?php
|
282 |
-
echo (support("comment") ? "<td
|
283 |
}
|
284 |
echo "<td>";
|
285 |
echo (support("move_col") ?
|
17 |
odd(''); // reset odd for each result
|
18 |
for ($i=0; (!$limit || $i < $limit) && ($row = $result->fetch_row()); $i++) {
|
19 |
if (!$i) {
|
20 |
+
echo "<div class='scrollable'>\n";
|
21 |
echo "<table cellspacing='0' class='nowrap'>\n";
|
22 |
echo "<thead><tr>";
|
23 |
for ($j=0; $j < count($row); $j++) {
|
86 |
echo "<td>$val";
|
87 |
}
|
88 |
}
|
89 |
+
echo ($i ? "</table>\n</div>" : "<p class='message'>" . lang('No rows.')) . "\n";
|
90 |
return $return;
|
91 |
}
|
92 |
|
112 |
return $return;
|
113 |
}
|
114 |
|
115 |
+
/** Get settings stored in a cookie
|
116 |
+
* @return array
|
117 |
+
*/
|
118 |
+
function adminer_settings() {
|
119 |
+
parse_str($_COOKIE["adminer_settings"], $settings);
|
120 |
+
return $settings;
|
121 |
+
}
|
122 |
+
|
123 |
+
/** Get setting stored in a cookie
|
124 |
+
* @param string
|
125 |
+
* @return array
|
126 |
+
*/
|
127 |
+
function adminer_setting($key) {
|
128 |
+
$settings = adminer_settings();
|
129 |
+
return $settings[$key];
|
130 |
+
}
|
131 |
+
|
132 |
+
/** Store settings to a cookie
|
133 |
+
* @param array
|
134 |
+
* @return bool
|
135 |
+
*/
|
136 |
+
function set_adminer_settings($settings) {
|
137 |
+
return cookie("adminer_settings", http_build_query($settings + adminer_settings()));
|
138 |
+
}
|
139 |
+
|
140 |
/** Print SQL <textarea> tag
|
141 |
* @param string
|
142 |
* @param string or array in which case [0] of every element is used
|
183 |
<td><input name="<?php echo h($key); ?>[length]" value="<?php echo h($field["length"]); ?>" size="3"<?php echo (!$field["length"] && preg_match('~var(char|binary)$~', $type) ? " class='required'" : ""); //! type="number" with enabled JavaScript ?> aria-labelledby="label-length"><?php echo script("mixin(qsl('input'), {onfocus: editingLengthFocus, oninput: editingLengthChange});", ""); ?><td class="options"><?php
|
184 |
echo "<select name='" . h($key) . "[collation]'" . (preg_match('~(char|text|enum|set)$~', $type) ? "" : " class='hidden'") . '><option value="">(' . lang('collation') . ')' . optionlist($collations, $field["collation"]) . '</select>';
|
185 |
echo ($unsigned ? "<select name='" . h($key) . "[unsigned]'" . (!$type || preg_match(number_type(), $type) ? "" : " class='hidden'") . '><option>' . optionlist($unsigned, $field["unsigned"]) . '</select>' : '');
|
186 |
+
echo (isset($field['on_update']) ? "<select name='" . h($key) . "[on_update]'" . (preg_match('~timestamp|datetime~', $type) ? "" : " class='hidden'") . '>' . optionlist(array("" => "(" . lang('ON UPDATE') . ")", "CURRENT_TIMESTAMP"), (preg_match('~^CURRENT_TIMESTAMP~i', $field["on_update"]) ? "CURRENT_TIMESTAMP" : $field["on_update"])) . '</select>' : '');
|
187 |
echo ($foreign_keys ? "<select name='" . h($key) . "[on_delete]'" . (preg_match("~`~", $type) ? "" : " class='hidden'") . "><option value=''>(" . lang('ON DELETE') . ")" . optionlist(explode("|", $on_actions), $field["on_delete"]) . "</select> " : " "); // space for IE
|
188 |
}
|
189 |
|
261 |
* @param array
|
262 |
* @param string TABLE or PROCEDURE
|
263 |
* @param array returned by referencable_primary()
|
|
|
264 |
* @return null
|
265 |
*/
|
266 |
+
function edit_fields($fields, $collations, $type = "TABLE", $foreign_keys = array()) {
|
267 |
global $inout;
|
268 |
$fields = array_values($fields);
|
269 |
?>
|
283 |
'mssql' => "ms186775.aspx",
|
284 |
)); ?>
|
285 |
<td id="label-default"><?php echo lang('Default value'); ?>
|
286 |
+
<?php echo (support("comment") ? "<td id='label-comment'>" . lang('Comment') : ""); ?>
|
287 |
<?php } ?>
|
288 |
<td><?php echo "<input type='image' class='icon' name='add[" . (support("move_col") ? 0 : count($fields)) . "]' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "'>" . script("row_count = " . count($fields) . ";"); ?>
|
289 |
</thead>
|
297 |
?>
|
298 |
<tr<?php echo ($display ? "" : " style='display: none;'"); ?>>
|
299 |
<?php echo ($type == "PROCEDURE" ? "<td>" . html_select("fields[$i][inout]", explode("|", $inout), $field["inout"]) : ""); ?>
|
300 |
+
<th><?php if ($display) { ?><input name="fields[<?php echo $i; ?>][field]" value="<?php echo h($field["field"]); ?>" data-maxlength="64" autocapitalize="off" aria-labelledby="label-name"><?php echo script("qsl('input').oninput = function () { editingNameChange.call(this);" . ($field["field"] != "" || count($fields) > 1 ? "" : " editingAddRow.call(this);") . " };", ""); ?><?php } ?>
|
301 |
<input type="hidden" name="fields[<?php echo $i; ?>][orig]" value="<?php echo h($orig); ?>">
|
302 |
<?php edit_type("fields[$i]", $field, $collations, $foreign_keys); ?>
|
303 |
<?php if ($type == "TABLE") { ?>
|
304 |
<td><?php echo checkbox("fields[$i][null]", 1, $field["null"], "", "", "block", "label-null"); ?>
|
305 |
<td><label class="block"><input type="radio" name="auto_increment_col" value="<?php echo $i; ?>"<?php if ($field["auto_increment"]) { ?> checked<?php } ?> aria-labelledby="label-ai"></label><td><?php
|
306 |
echo checkbox("fields[$i][has_default]", 1, $field["has_default"], "", "", "", "label-default"); ?><input name="fields[<?php echo $i; ?>][default]" value="<?php echo h($field["default"]); ?>" aria-labelledby="label-default"><?php
|
307 |
+
echo (support("comment") ? "<td><input name='fields[$i][comment]' value='" . h($field["comment"]) . "' data-maxlength='" . (min_version(5.5) ? 1024 : 255) . "' aria-labelledby='label-comment'>" : "");
|
308 |
}
|
309 |
echo "<td>";
|
310 |
echo (support("move_col") ?
|
adminer/adminer/adminer/include/functions.inc.php
CHANGED
@@ -815,7 +815,7 @@ function shorten_utf8($string, $length = 80, $suffix = "") {
|
|
815 |
if (!preg_match("(^(" . repeat_pattern("[\t\r\n -\x{10FFFF}]", $length) . ")($)?)u", $string, $match)) { // ~s causes trash in $match[2] under some PHP versions, (.|\n) is slow
|
816 |
preg_match("(^(" . repeat_pattern("[\t\r\n -~]", $length) . ")($)?)", $string, $match);
|
817 |
}
|
818 |
-
return h($match[1]) . $suffix . (isset($match[2]) ? "" : "<i
|
819 |
}
|
820 |
|
821 |
/** Format decimal number
|
@@ -1021,7 +1021,7 @@ function process_input($field) {
|
|
1021 |
return null;
|
1022 |
}
|
1023 |
if ($function == "orig") {
|
1024 |
-
return ($field["on_update"]
|
1025 |
}
|
1026 |
if ($function == "NULL") {
|
1027 |
return "NULL";
|
@@ -1419,7 +1419,7 @@ function edit_form($TABLE, $fields, $row, $update) {
|
|
1419 |
if (!$fields) {
|
1420 |
echo "<p class='error'>" . lang('You have no privileges to update this table.') . "\n";
|
1421 |
} else {
|
1422 |
-
echo "<table cellspacing='0'>" . script("qsl('table').onkeydown = editingKeydown;");
|
1423 |
|
1424 |
foreach ($fields as $name => $field) {
|
1425 |
echo "<tr><th>" . $adminer->fieldName($field);
|
@@ -1445,12 +1445,12 @@ function edit_form($TABLE, $fields, $row, $update) {
|
|
1445 |
}
|
1446 |
$function = ($_POST["save"]
|
1447 |
? (string) $_POST["function"][$name]
|
1448 |
-
: ($update && $field["on_update"]
|
1449 |
? "now"
|
1450 |
: ($value === false ? null : ($value !== null ? '' : 'NULL'))
|
1451 |
)
|
1452 |
);
|
1453 |
-
if (preg_match("~time~", $field["type"]) && $value
|
1454 |
$value = "";
|
1455 |
$function = "now";
|
1456 |
}
|
@@ -1476,7 +1476,7 @@ function edit_form($TABLE, $fields, $row, $update) {
|
|
1476 |
? lang('Save and continue edit')
|
1477 |
: lang('Save and insert next')
|
1478 |
) . "' title='Ctrl+Shift+Enter'>\n";
|
1479 |
-
echo ($update ? script("qsl('input').onclick = function () { return !ajaxForm(this.form, '" . lang('Saving') . "
|
1480 |
}
|
1481 |
}
|
1482 |
echo ($update ? "<input type='submit' name='delete' value='" . lang('Delete') . "'>" . confirm() . "\n"
|
815 |
if (!preg_match("(^(" . repeat_pattern("[\t\r\n -\x{10FFFF}]", $length) . ")($)?)u", $string, $match)) { // ~s causes trash in $match[2] under some PHP versions, (.|\n) is slow
|
816 |
preg_match("(^(" . repeat_pattern("[\t\r\n -~]", $length) . ")($)?)", $string, $match);
|
817 |
}
|
818 |
+
return h($match[1]) . $suffix . (isset($match[2]) ? "" : "<i>…</i>");
|
819 |
}
|
820 |
|
821 |
/** Format decimal number
|
1021 |
return null;
|
1022 |
}
|
1023 |
if ($function == "orig") {
|
1024 |
+
return (preg_match('~^CURRENT_TIMESTAMP~i', $field["on_update"]) ? idf_escape($field["field"]) : false);
|
1025 |
}
|
1026 |
if ($function == "NULL") {
|
1027 |
return "NULL";
|
1419 |
if (!$fields) {
|
1420 |
echo "<p class='error'>" . lang('You have no privileges to update this table.') . "\n";
|
1421 |
} else {
|
1422 |
+
echo "<table cellspacing='0' class='layout'>" . script("qsl('table').onkeydown = editingKeydown;");
|
1423 |
|
1424 |
foreach ($fields as $name => $field) {
|
1425 |
echo "<tr><th>" . $adminer->fieldName($field);
|
1445 |
}
|
1446 |
$function = ($_POST["save"]
|
1447 |
? (string) $_POST["function"][$name]
|
1448 |
+
: ($update && preg_match('~^CURRENT_TIMESTAMP~i', $field["on_update"])
|
1449 |
? "now"
|
1450 |
: ($value === false ? null : ($value !== null ? '' : 'NULL'))
|
1451 |
)
|
1452 |
);
|
1453 |
+
if (preg_match("~time~", $field["type"]) && preg_match('~^CURRENT_TIMESTAMP~i', $value)) {
|
1454 |
$value = "";
|
1455 |
$function = "now";
|
1456 |
}
|
1476 |
? lang('Save and continue edit')
|
1477 |
: lang('Save and insert next')
|
1478 |
) . "' title='Ctrl+Shift+Enter'>\n";
|
1479 |
+
echo ($update ? script("qsl('input').onclick = function () { return !ajaxForm(this.form, '" . lang('Saving') . "…', this); };") : "");
|
1480 |
}
|
1481 |
}
|
1482 |
echo ($update ? "<input type='submit' name='delete' value='" . lang('Delete') . "'>" . confirm() . "\n"
|
adminer/adminer/adminer/include/lang.inc.php
CHANGED
@@ -23,6 +23,7 @@ $langs = array(
|
|
23 |
'id' => 'Bahasa Indonesia', // Ivan Lanin - http://ivan.lanin.org
|
24 |
'it' => 'Italiano', // Alessandro Fiorotto, Paolo Asperti
|
25 |
'ja' => '日本語', // Hitoshi Ozawa - http://sourceforge.jp/projects/oss-ja-jpn/releases/
|
|
|
26 |
'ko' => '한국어', // dalli - skcha67@gmail.com
|
27 |
'lt' => 'Lietuvių', // Paulius Leščinskas - http://www.lescinskas.lt
|
28 |
'ms' => 'Bahasa Melayu', // Pisyek
|
23 |
'id' => 'Bahasa Indonesia', // Ivan Lanin - http://ivan.lanin.org
|
24 |
'it' => 'Italiano', // Alessandro Fiorotto, Paolo Asperti
|
25 |
'ja' => '日本語', // Hitoshi Ozawa - http://sourceforge.jp/projects/oss-ja-jpn/releases/
|
26 |
+
'ka' => 'ქართული', // Saba Khmaladze skhmaladze@uglt.org
|
27 |
'ko' => '한국어', // dalli - skcha67@gmail.com
|
28 |
'lt' => 'Lietuvių', // Paulius Leščinskas - http://www.lescinskas.lt
|
29 |
'ms' => 'Bahasa Melayu', // Pisyek
|
adminer/adminer/adminer/include/version.inc.php
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
<?php
|
2 |
-
$VERSION = "4.
|
1 |
<?php
|
2 |
+
$VERSION = "4.7.1";
|
adminer/adminer/adminer/indexes.inc.php
CHANGED
@@ -94,6 +94,7 @@ if (!$row) {
|
|
94 |
?>
|
95 |
|
96 |
<form action="" method="post">
|
|
|
97 |
<table cellspacing="0" class="nowrap">
|
98 |
<thead><tr>
|
99 |
<th id="label-type"><?php echo lang('Index Type'); ?>
|
@@ -126,7 +127,7 @@ foreach ($row["indexes"] as $index) {
|
|
126 |
"partial(" . ($i == count($index["columns"]) ? "indexesAddColumn" : "indexesChangeColumn") . ", '" . js_escape($jush == "sql" ? "" : $_GET["indexes"] . "_") . "')"
|
127 |
);
|
128 |
echo ($jush == "sql" || $jush == "mssql" ? "<input type='number' name='indexes[$j][lengths][$i]' class='size' value='" . h($index["lengths"][$key]) . "' title='" . lang('Length') . "'>" : "");
|
129 |
-
echo (
|
130 |
echo " </span>";
|
131 |
$i++;
|
132 |
}
|
@@ -138,6 +139,7 @@ foreach ($row["indexes"] as $index) {
|
|
138 |
}
|
139 |
?>
|
140 |
</table>
|
|
|
141 |
<p>
|
142 |
<input type="submit" value="<?php echo lang('Save'); ?>">
|
143 |
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
94 |
?>
|
95 |
|
96 |
<form action="" method="post">
|
97 |
+
<div class="scrollable">
|
98 |
<table cellspacing="0" class="nowrap">
|
99 |
<thead><tr>
|
100 |
<th id="label-type"><?php echo lang('Index Type'); ?>
|
127 |
"partial(" . ($i == count($index["columns"]) ? "indexesAddColumn" : "indexesChangeColumn") . ", '" . js_escape($jush == "sql" ? "" : $_GET["indexes"] . "_") . "')"
|
128 |
);
|
129 |
echo ($jush == "sql" || $jush == "mssql" ? "<input type='number' name='indexes[$j][lengths][$i]' class='size' value='" . h($index["lengths"][$key]) . "' title='" . lang('Length') . "'>" : "");
|
130 |
+
echo (support("descidx") ? checkbox("indexes[$j][descs][$i]", 1, $index["descs"][$key], lang('descending')) : "");
|
131 |
echo " </span>";
|
132 |
$i++;
|
133 |
}
|
139 |
}
|
140 |
?>
|
141 |
</table>
|
142 |
+
</div>
|
143 |
<p>
|
144 |
<input type="submit" value="<?php echo lang('Save'); ?>">
|
145 |
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
adminer/adminer/adminer/lang/cs.inc.php
CHANGED
@@ -10,8 +10,9 @@ $translations = array(
|
|
10 |
'Logout' => 'Odhlásit',
|
11 |
'Logged as: %s' => 'Přihlášen jako: %s',
|
12 |
'Logout successful.' => 'Odhlášení proběhlo v pořádku.',
|
13 |
-
'Thanks for using Adminer, consider <a href="
|
14 |
'Invalid credentials.' => 'Neplatné přihlašovací údaje.',
|
|
|
15 |
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer nepodporuje přístup k databázi bez hesla, <a href="https://www.adminer.org/cs/password/"%s>více informací</a>.',
|
16 |
'Database does not support password.' => 'Databáze nepodporuje heslo.',
|
17 |
'Too many unsuccessful logins, try again in %d minute(s).' => array('Příliš mnoho pokusů o přihlášení, zkuste to znovu za %d minutu.', 'Příliš mnoho pokusů o přihlášení, zkuste to znovu za %d minuty.', 'Příliš mnoho pokusů o přihlášení, zkuste to znovu za %d minut.'),
|
10 |
'Logout' => 'Odhlásit',
|
11 |
'Logged as: %s' => 'Přihlášen jako: %s',
|
12 |
'Logout successful.' => 'Odhlášení proběhlo v pořádku.',
|
13 |
+
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Díky za použití Admineru, <a href="https://www.adminer.org/cs/donation/">přispějte</a> na vývoj.',
|
14 |
'Invalid credentials.' => 'Neplatné přihlašovací údaje.',
|
15 |
+
'There is a space in the input password which might be the cause.' => 'Problém může být, že je v zadaném hesle mezera.',
|
16 |
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer nepodporuje přístup k databázi bez hesla, <a href="https://www.adminer.org/cs/password/"%s>více informací</a>.',
|
17 |
'Database does not support password.' => 'Databáze nepodporuje heslo.',
|
18 |
'Too many unsuccessful logins, try again in %d minute(s).' => array('Příliš mnoho pokusů o přihlášení, zkuste to znovu za %d minutu.', 'Příliš mnoho pokusů o přihlášení, zkuste to znovu za %d minuty.', 'Příliš mnoho pokusů o přihlášení, zkuste to znovu za %d minut.'),
|
adminer/adminer/adminer/lang/he.inc.php
CHANGED
@@ -279,7 +279,7 @@ $translations = array(
|
|
279 |
'Default value' => 'ערך ברירת מחדל',
|
280 |
'Full table scan' => 'סריקה טבלה מלאה',
|
281 |
'Too many unsuccessful logins, try again in %d minute(s).' => 'יותר מידי נסיונות כניסה נכשלו, אנא נסה עוד %d דקות',
|
282 |
-
'Thanks for using Adminer, consider <a href="
|
283 |
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'סיסמת המאסטר פגה <a href="https://www.adminer.org/en/extension/"%s>התקן תוסף</a> על מנת להפוך את זה לתמידי',
|
284 |
'If you did not send this request from Adminer then close this page.' => 'אם לא אתה שלחת בקשה ל-Adminer הינך יכול לסגור חלון זה',
|
285 |
'You can upload a big SQL file via FTP and import it from server.' => 'ניתן לעלות קבצים ב-FTP ואז למשוך אותם מהשרת',
|
279 |
'Default value' => 'ערך ברירת מחדל',
|
280 |
'Full table scan' => 'סריקה טבלה מלאה',
|
281 |
'Too many unsuccessful logins, try again in %d minute(s).' => 'יותר מידי נסיונות כניסה נכשלו, אנא נסה עוד %d דקות',
|
282 |
+
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'תודה שהשתמש ב-adminer אנא שקול <a href="https://www.adminer.org/en/donation/">לתרום</a>.',
|
283 |
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'סיסמת המאסטר פגה <a href="https://www.adminer.org/en/extension/"%s>התקן תוסף</a> על מנת להפוך את זה לתמידי',
|
284 |
'If you did not send this request from Adminer then close this page.' => 'אם לא אתה שלחת בקשה ל-Adminer הינך יכול לסגור חלון זה',
|
285 |
'You can upload a big SQL file via FTP and import it from server.' => 'ניתן לעלות קבצים ב-FTP ואז למשוך אותם מהשרת',
|
adminer/adminer/adminer/lang/ja.inc.php
CHANGED
@@ -178,7 +178,7 @@ $translations = array(
|
|
178 |
'Optimize' => '最適化',
|
179 |
'Check' => 'チェック',
|
180 |
'Repair' => '修復',
|
181 |
-
'Truncate' => '
|
182 |
'Move to other database' => '別のデータベースへ移動',
|
183 |
'Move' => '移動',
|
184 |
'Save and continue edit' => '保存して継続',
|
@@ -264,4 +264,14 @@ $translations = array(
|
|
264 |
'Permanent link' => 'パーマネントリンク',
|
265 |
'Edit all' => 'すべて編集',
|
266 |
'HH:MM:SS' => '時:分:秒',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
267 |
);
|
178 |
'Optimize' => '最適化',
|
179 |
'Check' => 'チェック',
|
180 |
'Repair' => '修復',
|
181 |
+
'Truncate' => '空にする',
|
182 |
'Move to other database' => '別のデータベースへ移動',
|
183 |
'Move' => '移動',
|
184 |
'Save and continue edit' => '保存して継続',
|
264 |
'Permanent link' => 'パーマネントリンク',
|
265 |
'Edit all' => 'すべて編集',
|
266 |
'HH:MM:SS' => '時:分:秒',
|
267 |
+
'Selected' => '選択済',
|
268 |
+
'Modify' => '修正',
|
269 |
+
'Load more data' => '続きを読み込み',
|
270 |
+
'Loading' => '読み込み中',
|
271 |
+
'Size' => 'サイズ',
|
272 |
+
'Compute' => '算出',
|
273 |
+
'Saving' => '保存中',
|
274 |
+
'yes' => 'はい',
|
275 |
+
'no' => 'いいえ',
|
276 |
+
'Default value' => '既定値',
|
277 |
);
|
adminer/adminer/adminer/lang/ka.inc.php
ADDED
@@ -0,0 +1,303 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$translations = array(
|
3 |
+
'Login' => 'შესვლა',
|
4 |
+
'Logout successful.' => 'გამოხვედით სისტემიდან.',
|
5 |
+
'Invalid credentials.' => 'არასწორი მომხმარებელი ან პაროლი.',
|
6 |
+
'Server' => 'სერვერი',
|
7 |
+
'Username' => 'მომხმარებელი',
|
8 |
+
'Password' => 'პაროლი',
|
9 |
+
'Select database' => 'ბაზა',
|
10 |
+
'Invalid database.' => 'არასწორი ბაზა.',
|
11 |
+
'Table has been dropped.' => 'ცხრილი წაიშალა.',
|
12 |
+
'Table has been altered.' => 'ცხრილი შეიცვალა.',
|
13 |
+
'Table has been created.' => 'ცხრილი შეიქმნა.',
|
14 |
+
'Alter table' => 'ცხრილის შეცვლა',
|
15 |
+
'Create table' => 'ცხრილის შექმნა',
|
16 |
+
'Table name' => 'სახელი',
|
17 |
+
'engine' => 'სახეობა',
|
18 |
+
'collation' => 'კოდირება',
|
19 |
+
'Column name' => 'ველი',
|
20 |
+
'Type' => 'სახეობა',
|
21 |
+
'Length' => 'სიგრძე',
|
22 |
+
'Auto Increment' => 'ავტომატურად გაზრდა',
|
23 |
+
'Options' => 'მოქმედება',
|
24 |
+
'Save' => 'შენახვა',
|
25 |
+
'Drop' => 'წაშლა',
|
26 |
+
'Database has been dropped.' => 'ბაზა წაიშალა.',
|
27 |
+
'Database has been created.' => 'ბაზა შეიქმნა.',
|
28 |
+
'Database has been renamed.' => 'ბაზას გადაერქვა.',
|
29 |
+
'Database has been altered.' => 'ბაზა შეიცვალა.',
|
30 |
+
'Alter database' => 'ბაზის შეცვლა',
|
31 |
+
'Create database' => 'ბაზის შექმნა',
|
32 |
+
'SQL command' => 'SQL-ბრძანება',
|
33 |
+
'Logout' => 'გასვლა',
|
34 |
+
'database' => 'ბაზა',
|
35 |
+
'Use' => 'არჩევა',
|
36 |
+
'No tables.' => 'ბაზაში ცხრილი არაა.',
|
37 |
+
'select' => 'არჩევა',
|
38 |
+
'Item has been deleted.' => 'ჩანაწერი წაიშალა.',
|
39 |
+
'Item has been updated.' => 'ჩანაწერი განახლდა.',
|
40 |
+
'Item%s has been inserted.' => 'ჩანაწერი%s ჩაჯდა.',
|
41 |
+
'Edit' => 'შეცვლა',
|
42 |
+
'Insert' => 'ჩასმა',
|
43 |
+
'Save and insert next' => 'შენახვა და სხვის ჩასმა',
|
44 |
+
'Delete' => 'წაშლა',
|
45 |
+
'Database' => 'ბაზა',
|
46 |
+
'Indexes have been altered.' => 'შეიცვალა ინდექსები.',
|
47 |
+
'Indexes' => 'ინდექსები',
|
48 |
+
'Alter indexes' => 'ინდექსის შეცვლა',
|
49 |
+
'Add next' => 'კიდევ დამატება',
|
50 |
+
'Language' => 'ენა',
|
51 |
+
'Select' => 'არჩევა',
|
52 |
+
'New item' => 'ახალი ჩანაწერი',
|
53 |
+
'Search' => 'ძებნა',
|
54 |
+
'Sort' => 'დალაგება',
|
55 |
+
'descending' => 'კლებადობით',
|
56 |
+
'Limit' => 'ზღვარი',
|
57 |
+
'No rows.' => 'ჩანაწერი არაა.',
|
58 |
+
'Action' => 'მოქმედება',
|
59 |
+
'edit' => 'რედაქტირება',
|
60 |
+
'Page' => 'გვერდი',
|
61 |
+
'Query executed OK, %d row(s) affected.' => 'მოთხოვდა შესრულდა, შეიცვალა %d ჩანაწერი.',
|
62 |
+
'Error in query' => 'შეცდომა მოთხოვნაში',
|
63 |
+
'Execute' => 'შესრულება',
|
64 |
+
'Table' => 'ცხრილი',
|
65 |
+
'Foreign keys' => 'გარე გასაღები',
|
66 |
+
'Triggers' => 'ტრიგერები',
|
67 |
+
'View' => 'ნახვა',
|
68 |
+
'Unable to select the table' => 'ცხრილიდან ინფორმაცია ვერ მოვიპოვე',
|
69 |
+
'Invalid CSRF token. Send the form again.' => 'უმოქმედო CSRF-ტოკენი. ფორმის კიდევ ერთხელ გაგზავნა.',
|
70 |
+
'Comment' => 'კომენტარები',
|
71 |
+
'Default values' => 'სტანდარტული მნიშვნელობა',
|
72 |
+
'%d byte(s)' => '%d ბაიტი',
|
73 |
+
'No commands to execute.' => 'შესასრულებელი ბრძანება არაა.',
|
74 |
+
'Unable to upload a file.' => 'ფაილი არ აიტვირთა სერვერზე.',
|
75 |
+
'File upload' => 'ფაილის ატვირთვა სერვერზე',
|
76 |
+
'File uploads are disabled.' => 'ფაილის სერვერზე ატვირთვა გათიშულია.',
|
77 |
+
'Routine has been called, %d row(s) affected.' => 'გამოძახებულია პროცედურა, შეიცვალა %d ჩანაწერი.',
|
78 |
+
'Call' => 'გამოძახეება',
|
79 |
+
'No extension' => 'გაფართოება არაა',
|
80 |
+
'None of the supported PHP extensions (%s) are available.' => 'არც ერთი მხარდაჭერილი გაფართოება არ მოიძებნა (%s).',
|
81 |
+
'Session support must be enabled.' => 'ჩართული უნდა იყოს სესია.',
|
82 |
+
'Session expired, please login again.' => 'სესიის მოქმედების დრო ამოიწურა, გაიარეთ ხელახალი ავტორიზაცია.',
|
83 |
+
'Text length' => 'ტექსტის სიგრძე',
|
84 |
+
'Foreign key has been dropped.' => 'გარე გასაღები წაიშალა.',
|
85 |
+
'Foreign key has been altered.' => 'გარე გასაღები შეიცვალა.',
|
86 |
+
'Foreign key has been created.' => 'გარე გასაღები შეიქმნა.',
|
87 |
+
'Foreign key' => 'გარე გასაღები',
|
88 |
+
'Change' => 'შეცვლა',
|
89 |
+
'Source' => 'წყარო',
|
90 |
+
'Target' => 'სამიზნე',
|
91 |
+
'Add column' => 'ველის დამატება',
|
92 |
+
'Alter' => 'შეცვლა',
|
93 |
+
'Add foreign key' => 'გარე გასაღები დამატება',
|
94 |
+
'ON DELETE' => 'წაშლისას',
|
95 |
+
'ON UPDATE' => 'განახლებისას',
|
96 |
+
'Index Type' => 'ინდექსის სახეობა',
|
97 |
+
'Column (length)' => 'ველი (სიგრძე)',
|
98 |
+
'View has been dropped.' => 'წარმოდგენა წაიშალა.',
|
99 |
+
'View has been altered.' => 'წარმოდგენა შეიცვალა.',
|
100 |
+
'View has been created.' => 'წარმოდგენა შეიქმნა.',
|
101 |
+
'Alter view' => 'წარმოდგენის შეცვლა',
|
102 |
+
'Create view' => 'წარმოდგენის შექმნა',
|
103 |
+
'Name' => 'სახელი',
|
104 |
+
'Process list' => 'პროცესების სია',
|
105 |
+
'%d process(es) have been killed.' => 'გაითიშა %d პროცესი.',
|
106 |
+
'Kill' => 'დასრულება',
|
107 |
+
'Parameter name' => 'პარამეტრი',
|
108 |
+
'Database schema' => 'ბაზის სქემა',
|
109 |
+
'Create procedure' => 'პროცედურის შექმნა',
|
110 |
+
'Create function' => 'ფუნქციის შექმნა',
|
111 |
+
'Routine has been dropped.' => 'პროცედურა წაიშალა.',
|
112 |
+
'Routine has been altered.' => 'პროცედურა შეიცვალა.',
|
113 |
+
'Routine has been created.' => 'პროცედურა შეიქმნა.',
|
114 |
+
'Alter function' => 'ფუნქციის შეცვლა',
|
115 |
+
'Alter procedure' => 'პროცედურის შეცვლა',
|
116 |
+
'Return type' => 'დაბრუნების სახეობა',
|
117 |
+
'Add trigger' => 'ტრიგერის დამატება',
|
118 |
+
'Trigger has been dropped.' => 'ტრიგერი წაიშალა.',
|
119 |
+
'Trigger has been altered.' => 'ტრიგერი შეიცვალა.',
|
120 |
+
'Trigger has been created.' => 'ტრიგერი შეიქმნა.',
|
121 |
+
'Alter trigger' => 'ტრიგერის შეცვლა',
|
122 |
+
'Create trigger' => 'ტრიგერის შექმნა',
|
123 |
+
'Time' => 'დრო',
|
124 |
+
'Event' => 'ღონისძიება',
|
125 |
+
'%s version: %s through PHP extension %s' => 'ვერსია %s: %s PHP-გაფართოება %s',
|
126 |
+
'%d row(s)' => '%d რიგი',
|
127 |
+
'Remove' => 'წაშლა',
|
128 |
+
'Are you sure?' => 'ნამდვილად?',
|
129 |
+
'Privileges' => 'უფლებამოსილება',
|
130 |
+
'Create user' => 'მომხმარებლის შექმან',
|
131 |
+
'User has been dropped.' => 'მომხმარებელი წაიშალა.',
|
132 |
+
'User has been altered.' => 'მომხმარებელი შეიცვალა.',
|
133 |
+
'User has been created.' => 'მომხმარებელი შეიქმნა.',
|
134 |
+
'Hashed' => 'ჰეშირებული',
|
135 |
+
'Column' => 'ველი',
|
136 |
+
'Routine' => 'პროცედურა',
|
137 |
+
'Grant' => 'დაშვება',
|
138 |
+
'Revoke' => 'შეზღუდვა',
|
139 |
+
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'POST ინფორმაცია ძალიან დიდია. შეამცირეთ ზომა ან გაზარდეს POST ინფორმაციის ზომა პარამეტრებიდან %s.',
|
140 |
+
'Logged as: %s' => 'შესული ხართ როგორც: %s',
|
141 |
+
'Move up' => 'ზემოთ ატანა',
|
142 |
+
'Move down' => 'ქვემოთ ჩატანა',
|
143 |
+
'Functions' => 'ფუნქციები',
|
144 |
+
'Aggregation' => 'აგრეგაცია',
|
145 |
+
'Export' => 'ექსპორტი',
|
146 |
+
'Output' => 'გამომავალი ინფორმაცია',
|
147 |
+
'open' => 'გახსნა',
|
148 |
+
'save' => 'შენახვა',
|
149 |
+
'Format' => 'ფორმატი',
|
150 |
+
'Tables' => 'ცხრილები',
|
151 |
+
'Data' => 'ინფორმაცია',
|
152 |
+
'Event has been dropped.' => 'ღონისძიება წაიშალა.',
|
153 |
+
'Event has been altered.' => 'ღონისძიება შეიცვალა.',
|
154 |
+
'Event has been created.' => 'ღონისძიება შეიქმნა.',
|
155 |
+
'Alter event' => 'ღონისძიების შეცვლა',
|
156 |
+
'Create event' => 'ღონისძიების შექმნა',
|
157 |
+
'At given time' => 'მოცემულ დროში',
|
158 |
+
'Every' => 'ყოველ',
|
159 |
+
'Events' => 'ღონისძიება',
|
160 |
+
'Schedule' => 'განრიგი',
|
161 |
+
'Start' => 'დასაწყისი',
|
162 |
+
'End' => 'დასასრული',
|
163 |
+
'Status' => 'მდგომარეობა',
|
164 |
+
'On completion preserve' => 'შენახვა დასრულებისას',
|
165 |
+
'Tables and views' => 'ცხრილები და წარმოდგენები',
|
166 |
+
'Data Length' => 'ინფორმაციის მოცულობა',
|
167 |
+
'Index Length' => 'ინდექსების მოცულობა',
|
168 |
+
'Data Free' => 'თავისუფალი სივრცე',
|
169 |
+
'Collation' => 'კოდირება',
|
170 |
+
'Analyze' => 'ანალიზი',
|
171 |
+
'Optimize' => 'ოპტიმიზაცია',
|
172 |
+
'Check' => 'შემოწმება',
|
173 |
+
'Repair' => 'გასწორება',
|
174 |
+
'Truncate' => 'გასუფთავება',
|
175 |
+
'Tables have been truncated.' => 'ცხრილი გასუფთავდა.',
|
176 |
+
'Rows' => 'რიგი',
|
177 |
+
',' => ' ',
|
178 |
+
'0123456789' => '0123456789',
|
179 |
+
'Tables have been moved.' => 'ცხრილი გადაადგილდა.',
|
180 |
+
'Move to other database' => 'გადატანა სხვა ბაზაში',
|
181 |
+
'Move' => 'გადატანა',
|
182 |
+
'Engine' => 'ძრავი',
|
183 |
+
'Save and continue edit' => 'შენახვა და ცვლილების გაგრძელება',
|
184 |
+
'original' => 'საწყისი',
|
185 |
+
'%d item(s) have been affected.' => 'შეიცვალა %d ჩანაწერი.',
|
186 |
+
'Whole result' => 'სრული შედეგი',
|
187 |
+
'Tables have been dropped.' => 'ცხრილები წაიშალა.',
|
188 |
+
'Clone' => 'კლონირება',
|
189 |
+
'Partition by' => 'დაყოფა',
|
190 |
+
'Partitions' => 'დანაყოფები',
|
191 |
+
'Partition name' => 'დანაყოფის სახელი',
|
192 |
+
'Values' => 'პარამეტრები',
|
193 |
+
'%d row(s) have been imported.' => 'დაიმპორტდა %d რიგი.',
|
194 |
+
'Import' => 'იმპორტი',
|
195 |
+
'Stop on error' => 'გაჩერება შეცდომისას',
|
196 |
+
'Maximum number of allowed fields exceeded. Please increase %s.' => 'მიღწეულია დაშვებული ველების მაქსიმალური რაოდენობა, გაზარდეთ %s.',
|
197 |
+
'anywhere' => 'ნებისმიერ ადგილას',
|
198 |
+
'%.3f s' => '%.3f s',
|
199 |
+
'$1-$3-$5' => '$5.$3.$1',
|
200 |
+
'[yyyy]-mm-dd' => 'დდ.თთ.[წწწწ]',
|
201 |
+
'History' => 'ისტორია',
|
202 |
+
'Variables' => 'ცვლადები',
|
203 |
+
'Relations' => 'ურთიერთობა',
|
204 |
+
'Run file' => 'ფაილის გაშვება',
|
205 |
+
'Clear' => 'გასუფთავება',
|
206 |
+
'Maximum allowed file size is %sB.' => 'ფაილის მაქსიმალური ზომა - %sB.',
|
207 |
+
'Numbers' => 'ციფრები',
|
208 |
+
'Date and time' => 'დრო და თარიღი',
|
209 |
+
'Binary' => 'ორობითი',
|
210 |
+
'Lists' => 'სია',
|
211 |
+
'Editor' => 'რედაქტორი',
|
212 |
+
'E-mail' => 'ელ. ფოსტა',
|
213 |
+
'From' => 'ავტორი:',
|
214 |
+
'Subject' => 'თემა',
|
215 |
+
'Send' => 'გაგზავნა',
|
216 |
+
'%d e-mail(s) have been sent.' => 'გაიგზავნა %d წერილი.',
|
217 |
+
'Webserver file %s' => 'ფაილი %s ვებსერვერზე',
|
218 |
+
'File does not exist.' => 'ასეთი ფაილი არ არსებობს.',
|
219 |
+
'%d in total' => 'სულ %d',
|
220 |
+
'Permanent login' => 'სისტემაში დარჩენა',
|
221 |
+
'Databases have been dropped.' => 'ბაზა წაიშალა.',
|
222 |
+
'Search data in tables' => 'ცხრილებში ძებნა',
|
223 |
+
'Schema' => 'სქემა',
|
224 |
+
'Alter schema' => 'სქემის შეცვლა',
|
225 |
+
'Create schema' => 'ახალი სქემა',
|
226 |
+
'Schema has been dropped.' => 'სქემა წაიშალა.',
|
227 |
+
'Schema has been created.' => 'შეიქმნა ახალი სქემა.',
|
228 |
+
'Schema has been altered.' => 'სქემა შეიცვალა.',
|
229 |
+
'Sequences' => 'მიმდევრობა',
|
230 |
+
'Create sequence' => 'მიმდევრობის შექმნა',
|
231 |
+
'Alter sequence' => 'მიმდევრობის შეცვლა',
|
232 |
+
'Sequence has been dropped.' => 'მიმდევრობა წაიშალა.',
|
233 |
+
'Sequence has been created.' => 'მიმდევრობა შეიქმნა.',
|
234 |
+
'Sequence has been altered.' => 'მიმდევრობა შეიცვალა.',
|
235 |
+
'User types' => 'მომხმარებლის სახეობა',
|
236 |
+
'Create type' => 'სახეობის შექმნა',
|
237 |
+
'Alter type' => 'სახეობის შეცვლა',
|
238 |
+
'Type has been dropped.' => 'სახეობა წაიშალა.',
|
239 |
+
'Type has been created.' => 'სახეობა შეიქმნა.',
|
240 |
+
'Ctrl+click on a value to modify it.' => 'შესაცვლელად გამოიყენეთ Ctrl+თაგვის ღილაკი.',
|
241 |
+
'Use edit link to modify this value.' => 'ამ მნიშვნელობის შესაცვლელად გამოიყენეთ ბმული «შეცვლა».',
|
242 |
+
'last' => 'ბოლო',
|
243 |
+
'From server' => 'სერვერიდან',
|
244 |
+
'System' => 'სისტემა',
|
245 |
+
'Select data' => 'არჩევა',
|
246 |
+
'Show structure' => 'სტრუქტურის ჩვენება',
|
247 |
+
'empty' => 'ცარიელი',
|
248 |
+
'Network' => 'ქსელი',
|
249 |
+
'Geometry' => 'გეომეტრია',
|
250 |
+
'File exists.' => 'ფაილი უკვე არსებობს.',
|
251 |
+
'Attachments' => 'მიმაგრებული ფაილები',
|
252 |
+
'%d query(s) executed OK.' => '%d მოთხოვნა შესრულდა.',
|
253 |
+
'Show only errors' => 'მხოლოდ შეცდომები',
|
254 |
+
'Refresh' => 'განახლება',
|
255 |
+
'Invalid schema.' => 'არასწორი სქემა.',
|
256 |
+
'Please use one of the extensions %s.' => 'გამოიყენეთ ერთ-ერთი გაფართოება %s.',
|
257 |
+
'now' => 'ახლა',
|
258 |
+
'ltr' => 'ltr',
|
259 |
+
'Tables have been copied.' => 'ცხრილი დაკოპირდა.',
|
260 |
+
'Copy' => 'კოპირება',
|
261 |
+
'Permanent link' => 'მუდმივი ბმული',
|
262 |
+
'Edit all' => 'ყველას შეცვლა',
|
263 |
+
'HH:MM:SS' => 'სთ:წთ:წმ',
|
264 |
+
'Tables have been optimized.' => 'ცხრილებს გაუკეთდა ოპტიმიზაცია.',
|
265 |
+
'Materialized view' => 'მატერიალური ხედი',
|
266 |
+
'Vacuum' => 'ვაკუუმი',
|
267 |
+
'Selected' => 'არჩეული',
|
268 |
+
'File must be in UTF-8 encoding.' => 'ფაილი უნდა იყოს კოდირებაში UTF-8.',
|
269 |
+
'Modify' => 'შეცვლა',
|
270 |
+
'Loading' => 'ჩატვირთვა',
|
271 |
+
'Load more data' => 'მეტი ინფორმაციის ჩატვირთვა',
|
272 |
+
'ATTACH queries are not supported.' => 'ATTACH-მოთხოვნები არაა მხარდაჭერილი.',
|
273 |
+
'%d / ' => '%d / ',
|
274 |
+
'Limit rows' => 'რიგების შეზღუდვა',
|
275 |
+
'Default value' => 'სტანდარტული მნიშვნელობა',
|
276 |
+
'Full table scan' => 'სრული ცხრილის ანალიზი',
|
277 |
+
'Too many unsuccessful logins, try again in %d minute(s).' => 'ძალიან ბევრჯერ შეგეშალათ მომხმარებელი და პაროლი. სცადეთ %d წუთში.',
|
278 |
+
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'ძირითად პაროლს ვადა გაუვიდა. <a href="https://www.adminer.org/en/extension/"%s>გამოიყენეთ</a> მეთოდი %s, რათა ის მუდმივი გახადოთ.',
|
279 |
+
'If you did not send this request from Adminer then close this page.' => 'ეს მოთხოვნა თქვენ თუ არ გაგიგზავნაით Adminer-იდან, დახურეთ ეს ფანჯარა..',
|
280 |
+
'You can upload a big SQL file via FTP and import it from server.' => 'დიდი ფაილი უნდა ატვირტოთ FTP-თი და შემდეგ გაუკეთოთ იმპორტი სერვერიდან.',
|
281 |
+
'Size' => 'ზომა',
|
282 |
+
'Compute' => 'გამოთვლა',
|
283 |
+
'You are offline.' => 'არ გაგივლიათ ავტორიზაცია.',
|
284 |
+
'You have no privileges to update this table.' => 'ამ ცხრილის განახლების უფლება არ გაქვთ.',
|
285 |
+
'Saving' => 'შენახვა',
|
286 |
+
'yes' => 'კი',
|
287 |
+
'no' => 'არა',
|
288 |
+
'Routines' => 'რუტინები',
|
289 |
+
'Target table' => 'მიზნობრივი ცხრილი',
|
290 |
+
'Strings' => 'ველები',
|
291 |
+
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'საწყისი და მიზნობრივი ველები უნდა იყოს ერთიდაიგივე სახეობის, მიზნობრივ ველზე უნდა იყოს ინდექსი და უნდა არსებობდეს შესაბამისი ინფორმაცია.',
|
292 |
+
'Drop %s?' => 'წაიშალოს %s?',
|
293 |
+
'Warnings' => 'გაფრთხილება',
|
294 |
+
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'უპაროლო წვდომა ბაზასთან არაა დაშვებული Adminer-ში, მეტი ინფორმაციისთვის ეწვიეთ <a href="https://www.adminer.org/en/password/"%s>ბმულს</a>.',
|
295 |
+
'DB' => 'ბაზა',
|
296 |
+
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'მადლობას გიხდით Adminer-ით სარგებლობისთვის, გადახედეთ ბმულს <a href="https://www.adminer.org/en/donation/">შემოწირულობა</a>.',
|
297 |
+
'The action will be performed after successful login with the same credentials.' => 'მოქმედება შესრულდება იგივე მომხმარებლით წარმატებული ავტორიზაციის შემდეგ.',
|
298 |
+
'Connecting to privileged ports is not allowed.' => 'პრივილეგირებულ პორტთან წვდომა დაუშვებელია.',
|
299 |
+
'There is a space in the input password which might be the cause.' => 'პაროლში არის გამოტოვება, შეიძლება ეს ქმნის პრობლემას.',
|
300 |
+
'Unknown error.' => 'უცნობი შეცდომა.',
|
301 |
+
'Database does not support password.' => 'ბაზაში არაა მხარდაჭერილი პაროლი.',
|
302 |
+
'Disable %s or enable %s or %s extensions.' => 'გათიშეთ %s ან ჩართეთ %s ან %s გაფართოება.',
|
303 |
+
);
|
adminer/adminer/adminer/lang/ms.inc.php
CHANGED
@@ -10,7 +10,7 @@ $translations = array(
|
|
10 |
'Logout' => 'Log keluar',
|
11 |
'Logged as: %s' => 'Log masuk sebagai: %s',
|
12 |
'Logout successful.' => 'Log keluar berjaya.',
|
13 |
-
'Thanks for using Adminer, consider <a href="
|
14 |
'Invalid credentials.' => 'Akses tidak sah.',
|
15 |
'Too many unsuccessful logins, try again in %d minute(s).' => 'Terlalu banyak percubaan log masuk yang gagal, sila cuba lagi dalam masa %d minit.',
|
16 |
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Kata laluan utama telah luput. <a href="https://www.adminer.org/en/extension/"%s>Gunakan</a> cara %s untuk mengekalkannya.',
|
10 |
'Logout' => 'Log keluar',
|
11 |
'Logged as: %s' => 'Log masuk sebagai: %s',
|
12 |
'Logout successful.' => 'Log keluar berjaya.',
|
13 |
+
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Terima kasih kerana menggunakan Adminer, pertimbangkan untuk <a href="https://www.adminer.org/en/donation/">menderma</a>.',
|
14 |
'Invalid credentials.' => 'Akses tidak sah.',
|
15 |
'Too many unsuccessful logins, try again in %d minute(s).' => 'Terlalu banyak percubaan log masuk yang gagal, sila cuba lagi dalam masa %d minit.',
|
16 |
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Kata laluan utama telah luput. <a href="https://www.adminer.org/en/extension/"%s>Gunakan</a> cara %s untuk mengekalkannya.',
|
adminer/adminer/adminer/lang/pl.inc.php
CHANGED
@@ -10,7 +10,7 @@ $translations = array(
|
|
10 |
'Logout' => 'Wyloguj',
|
11 |
'Logged as: %s' => 'Zalogowany jako: %s',
|
12 |
'Logout successful.' => 'Wylogowano pomyślnie.',
|
13 |
-
'Thanks for using Adminer, consider <a href="
|
14 |
'Invalid credentials.' => 'Nieprawidłowe dane logowania.',
|
15 |
'Too many unsuccessful logins, try again in %d minute(s).' => array('Za dużo nieudanych prób logowania, spróbuj ponownie za %d minutę.', 'Za dużo nieudanych prób logowania, spróbuj ponownie za %d minuty.', 'Za dużo nieudanych prób logowania, spróbuj ponownie za %d minut.'),
|
16 |
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Ważność hasła głównego wygasła. <a href="https://www.adminer.org/pl/extension/"%s>Zaimplementuj</a> własną metodę %s, aby ustawić je na stałe.',
|
10 |
'Logout' => 'Wyloguj',
|
11 |
'Logged as: %s' => 'Zalogowany jako: %s',
|
12 |
'Logout successful.' => 'Wylogowano pomyślnie.',
|
13 |
+
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Dziękujemy za używanie Adminera, rozważ proszę <a href="https://www.adminer.org/pl/donation/">dotację</a>.',
|
14 |
'Invalid credentials.' => 'Nieprawidłowe dane logowania.',
|
15 |
'Too many unsuccessful logins, try again in %d minute(s).' => array('Za dużo nieudanych prób logowania, spróbuj ponownie za %d minutę.', 'Za dużo nieudanych prób logowania, spróbuj ponownie za %d minuty.', 'Za dużo nieudanych prób logowania, spróbuj ponownie za %d minut.'),
|
16 |
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Ważność hasła głównego wygasła. <a href="https://www.adminer.org/pl/extension/"%s>Zaimplementuj</a> własną metodę %s, aby ustawić je na stałe.',
|
adminer/adminer/adminer/lang/tr.inc.php
CHANGED
@@ -10,7 +10,7 @@ $translations = array(
|
|
10 |
'Logout' => 'Çıkış',
|
11 |
'Logged as: %s' => '%s olarak giriş yapıldı.',
|
12 |
'Logout successful.' => 'Oturum başarıyla sonlandı.',
|
13 |
-
'Thanks for using Adminer, consider <a href="
|
14 |
'Invalid credentials.' => 'Geçersiz kimlik bilgileri.',
|
15 |
'Too many unsuccessful logins, try again in %d minute(s).' => array('Çok fazla oturum açma denemesi yapıldı.', '%d Dakika sonra tekrar deneyiniz.'),
|
16 |
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Ana şifrenin süresi doldu. Kalıcı olması için <a href="https://www.adminer.org/en/extension/"%s>%s medodunu</a> kullanın.',
|
10 |
'Logout' => 'Çıkış',
|
11 |
'Logged as: %s' => '%s olarak giriş yapıldı.',
|
12 |
'Logout successful.' => 'Oturum başarıyla sonlandı.',
|
13 |
+
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Adminer kullandığınız için teşekkür ederiz <a href="https://www.adminer.org/en/donation/">bağış yapmayı düşünün</a>.',
|
14 |
'Invalid credentials.' => 'Geçersiz kimlik bilgileri.',
|
15 |
'Too many unsuccessful logins, try again in %d minute(s).' => array('Çok fazla oturum açma denemesi yapıldı.', '%d Dakika sonra tekrar deneyiniz.'),
|
16 |
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Ana şifrenin süresi doldu. Kalıcı olması için <a href="https://www.adminer.org/en/extension/"%s>%s medodunu</a> kullanın.',
|
adminer/adminer/adminer/lang/vi.inc.php
CHANGED
@@ -206,8 +206,8 @@ $translations = array(
|
|
206 |
'ON UPDATE' => 'Khi cập nhật',
|
207 |
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Cột gốc và cột đích phải cùng kiểu, phải đặt chỉ mục trong cột đích và dữ liệu tham chiếu phải tồn tại.',
|
208 |
|
209 |
-
'Triggers' => '
|
210 |
-
'Add trigger' => '
|
211 |
'Trigger has been dropped.' => 'Đã xoá phản xạ.',
|
212 |
'Trigger has been altered.' => 'Đã sửa phản xạ.',
|
213 |
'Trigger has been created.' => 'Đã tạo phản xạ.',
|
@@ -308,12 +308,12 @@ $translations = array(
|
|
308 |
'Schema has been dropped.' => 'Đã xoá schema.',
|
309 |
'Schema has been created.' => 'Đã tạo schema.',
|
310 |
'Schema has been altered.' => 'Đã thay đổi schema.',
|
311 |
-
'Schema' => '
|
312 |
-
'Invalid schema.' => 'Schema
|
313 |
|
314 |
// PostgreSQL sequences support
|
315 |
'Sequences' => 'Dãy số',
|
316 |
-
'Create sequence' => 'Tạo
|
317 |
'Sequence has been dropped.' => 'Dãy số đã bị xoá.',
|
318 |
'Sequence has been created.' => 'Đã tạo dãy số.',
|
319 |
'Sequence has been altered.' => 'Đã sửa dãy số.',
|
206 |
'ON UPDATE' => 'Khi cập nhật',
|
207 |
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Cột gốc và cột đích phải cùng kiểu, phải đặt chỉ mục trong cột đích và dữ liệu tham chiếu phải tồn tại.',
|
208 |
|
209 |
+
'Triggers' => 'Phản xạ',
|
210 |
+
'Add trigger' => 'Thêm phản xạ',
|
211 |
'Trigger has been dropped.' => 'Đã xoá phản xạ.',
|
212 |
'Trigger has been altered.' => 'Đã sửa phản xạ.',
|
213 |
'Trigger has been created.' => 'Đã tạo phản xạ.',
|
308 |
'Schema has been dropped.' => 'Đã xoá schema.',
|
309 |
'Schema has been created.' => 'Đã tạo schema.',
|
310 |
'Schema has been altered.' => 'Đã thay đổi schema.',
|
311 |
+
'Schema' => 'Schema',
|
312 |
+
'Invalid schema.' => 'Schema không hợp lệ.',
|
313 |
|
314 |
// PostgreSQL sequences support
|
315 |
'Sequences' => 'Dãy số',
|
316 |
+
'Create sequence' => 'Tạo dãy số',
|
317 |
'Sequence has been dropped.' => 'Dãy số đã bị xoá.',
|
318 |
'Sequence has been created.' => 'Đã tạo dãy số.',
|
319 |
'Sequence has been altered.' => 'Đã sửa dãy số.',
|
adminer/adminer/adminer/lang/xx.inc.php
CHANGED
@@ -10,8 +10,9 @@ $translations = array(
|
|
10 |
'Logout' => 'Xx',
|
11 |
'Logged as: %s' => 'Xx: %s',
|
12 |
'Logout successful.' => 'Xx.',
|
13 |
-
'Thanks for using Adminer, consider <a href="
|
14 |
'Invalid credentials.' => 'Xx.',
|
|
|
15 |
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Xx, <a href="https://www.adminer.org/en/password/"%s>xx</a>.',
|
16 |
'Database does not support password.' => 'Xx.',
|
17 |
'Too many unsuccessful logins, try again in %d minute(s).' => array('Xx %d.', 'Xx %d.'),
|
10 |
'Logout' => 'Xx',
|
11 |
'Logged as: %s' => 'Xx: %s',
|
12 |
'Logout successful.' => 'Xx.',
|
13 |
+
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Xx <a href="https://www.adminer.org/en/donation/">xx</a>.',
|
14 |
'Invalid credentials.' => 'Xx.',
|
15 |
+
'There is a space in the input password which might be the cause.' => 'Xx.',
|
16 |
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Xx, <a href="https://www.adminer.org/en/password/"%s>xx</a>.',
|
17 |
'Database does not support password.' => 'Xx.',
|
18 |
'Too many unsuccessful logins, try again in %d minute(s).' => array('Xx %d.', 'Xx %d.'),
|
adminer/adminer/adminer/lang/zh-tw.inc.php
CHANGED
@@ -1,267 +1,348 @@
|
|
1 |
<?php
|
2 |
$translations = array(
|
3 |
-
|
4 |
-
'
|
5 |
-
'Invalid credentials.' => '無效的憑證。',
|
6 |
'Server' => '伺服器',
|
7 |
'Username' => '帳號',
|
8 |
'Password' => '密碼',
|
9 |
-
'
|
10 |
-
'
|
11 |
-
'Table has been altered.' => '資料表已修改。',
|
12 |
-
'Table has been created.' => '資料表已修改。',
|
13 |
-
'Alter table' => '修改資料表',
|
14 |
-
'Create table' => '建立資料表',
|
15 |
-
'Table name' => '資料表名稱',
|
16 |
-
'engine' => '引擎',
|
17 |
-
'collation' => '校對',
|
18 |
-
'Column name' => '列名',
|
19 |
-
'Type' => '類型',
|
20 |
-
'Length' => '長度',
|
21 |
-
'Auto Increment' => '自動遞增',
|
22 |
-
'Options' => '選項',
|
23 |
-
'Save' => '儲存',
|
24 |
-
'Drop' => '刪除',
|
25 |
-
'Database has been dropped.' => '資料庫已刪除。',
|
26 |
-
'Database has been created.' => '已建立資料庫。',
|
27 |
-
'Database has been renamed.' => '已重新命名資料庫。',
|
28 |
-
'Database has been altered.' => '已修改資料庫。',
|
29 |
-
'Alter database' => '修改資料庫',
|
30 |
-
'Create database' => '建立資料庫',
|
31 |
-
'SQL command' => 'SQL命令',
|
32 |
'Logout' => '登出',
|
33 |
-
'
|
34 |
-
'
|
35 |
-
'
|
36 |
-
'
|
37 |
-
'
|
38 |
-
'
|
39 |
-
'
|
40 |
-
'
|
41 |
-
'
|
42 |
-
'Delete' => '刪除',
|
43 |
-
'Database' => '資料庫',
|
44 |
-
'Routines' => '程序',
|
45 |
-
'Indexes have been altered.' => '已修改索引。',
|
46 |
-
'Indexes' => '索引',
|
47 |
-
'Alter indexes' => '修改索引',
|
48 |
-
'Add next' => '新增下一筆',
|
49 |
'Language' => '語言',
|
50 |
-
'Select' => '選擇',
|
51 |
-
'New item' => '新增項目',
|
52 |
-
'Search' => '搜尋',
|
53 |
-
'Sort' => '排序',
|
54 |
-
'descending' => '降冪(遞減)',
|
55 |
-
'Limit' => '限定',
|
56 |
-
'No rows.' => '沒有行。',
|
57 |
-
'Action' => '動作',
|
58 |
-
'edit' => '編輯',
|
59 |
-
'Page' => '頁',
|
60 |
-
'Query executed OK, %d row(s) affected.' => '執行查詢OK,%d行受影響',
|
61 |
-
'Error in query' => '查詢發生錯誤',
|
62 |
-
'Execute' => '執行',
|
63 |
-
'Table' => '資料表',
|
64 |
-
'Foreign keys' => '外來鍵',
|
65 |
-
'Triggers' => '觸發器',
|
66 |
-
'View' => '檢視表',
|
67 |
-
'Unable to select the table' => '無法選擇該資料表',
|
68 |
'Invalid CSRF token. Send the form again.' => '無效的 CSRF token。請重新發送表單。',
|
69 |
-
'
|
70 |
-
'Default values' => '預設值',
|
71 |
-
'%d byte(s)' => '%d byte(s)',
|
72 |
-
'No commands to execute.' => '沒有命令可執行。',
|
73 |
-
'Unable to upload a file.' => '無法上傳檔案。',
|
74 |
-
'File upload' => '檔案上傳',
|
75 |
-
'File uploads are disabled.' => '檔案上傳已經被停用。',
|
76 |
-
'Routine has been called, %d row(s) affected.' => '程序已被執行,%d行被影響',
|
77 |
-
'Call' => '呼叫',
|
78 |
'No extension' => '無擴充模組',
|
79 |
-
'None of the supported PHP extensions (%s) are available.' => '沒有任何支援的PHP擴充模組(%s)。',
|
|
|
|
|
80 |
'Session support must be enabled.' => 'Session 必須被啟用。',
|
81 |
'Session expired, please login again.' => 'Session 已過期,請重新登入。',
|
82 |
-
'
|
83 |
-
'
|
84 |
-
'
|
85 |
-
|
86 |
-
|
87 |
-
'
|
88 |
-
|
89 |
-
'Source' => '來源',
|
90 |
-
'Target' => '目標',
|
91 |
-
'Add column' => '新增資料列',
|
92 |
-
'Alter' => '修改',
|
93 |
-
'Add foreign key' => '新增外來鍵',
|
94 |
-
'ON DELETE' => 'ON DELETE',
|
95 |
-
'ON UPDATE' => 'ON UPDATE',
|
96 |
-
'Index Type' => '索引類型',
|
97 |
-
'Column (length)' => '列(長度)',
|
98 |
-
'View has been dropped.' => '已刪除檢視表。',
|
99 |
-
'View has been altered.' => '已修改檢視表。',
|
100 |
-
'View has been created.' => '已建立檢視表。',
|
101 |
-
'Alter view' => '修改檢視表',
|
102 |
-
'Create view' => '建立檢視表',
|
103 |
-
'Name' => '名稱',
|
104 |
-
'Process list' => '處理程序列表',
|
105 |
-
'%d process(es) have been killed.' => '%d 個 Process(es) 被終止',
|
106 |
-
'Kill' => '終止',
|
107 |
-
'Parameter name' => '參數名稱',
|
108 |
-
'Database schema' => '資料庫架構',
|
109 |
-
'Create procedure' => '建立預存程序',
|
110 |
-
'Create function' => '建立函數',
|
111 |
-
'Routine has been dropped.' => '已刪除程序。',
|
112 |
-
'Routine has been altered.' => '已修改子程序。',
|
113 |
-
'Routine has been created.' => '已建立子程序。',
|
114 |
-
'Alter function' => '修改函數',
|
115 |
-
'Alter procedure' => '修改過程',
|
116 |
-
'Return type' => '回傳類型',
|
117 |
-
'Add trigger' => '建立觸發器',
|
118 |
-
'Trigger has been dropped.' => '已刪除觸發器。',
|
119 |
-
'Trigger has been altered.' => '已修改觸發器。',
|
120 |
-
'Trigger has been created.' => '已建立觸發器。',
|
121 |
-
'Alter trigger' => '修改觸發器',
|
122 |
-
'Create trigger' => '建立觸發器',
|
123 |
-
'Time' => '時間',
|
124 |
-
'Event' => '事件',
|
125 |
-
'%s version: %s through PHP extension %s' => '%s版本:%s 透過PHP擴充模組 %s',
|
126 |
-
'%d row(s)' => '%d行',
|
127 |
-
'Remove' => '移除',
|
128 |
-
'Are you sure?' => '你確定嗎?',
|
129 |
'Privileges' => '權限',
|
130 |
'Create user' => '建立使用者',
|
131 |
'User has been dropped.' => '已刪除使用者。',
|
132 |
'User has been altered.' => '已修改使用者。',
|
133 |
'User has been created.' => '已建立使用者。',
|
134 |
'Hashed' => 'Hashed',
|
135 |
-
'Column' => '
|
136 |
'Routine' => '程序',
|
137 |
'Grant' => '授權',
|
138 |
'Revoke' => '廢除',
|
139 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'POST 資料太大。減少資料或者增加 %s 的設定值。',
|
141 |
-
'
|
142 |
-
'
|
|
|
143 |
'Export' => '匯出',
|
144 |
-
'Tables' => '資料表',
|
145 |
-
'Data' => '資料',
|
146 |
'Output' => '輸出',
|
147 |
'open' => '打開',
|
148 |
'save' => '儲存',
|
|
|
149 |
'Format' => '格式',
|
150 |
-
'
|
151 |
-
|
152 |
-
'
|
153 |
-
'
|
154 |
-
'
|
155 |
-
'
|
156 |
-
'
|
157 |
-
'
|
158 |
-
'
|
159 |
-
'
|
160 |
-
'
|
161 |
-
'
|
162 |
-
'
|
163 |
-
'
|
164 |
-
'
|
165 |
-
'
|
166 |
-
|
167 |
-
|
|
|
|
|
|
|
|
|
|
|
168 |
'Engine' => '引擎',
|
169 |
'Collation' => '校對',
|
170 |
'Data Length' => '資料長度',
|
171 |
'Index Length' => '索引長度',
|
172 |
'Data Free' => '資料空閒',
|
173 |
'Rows' => '行數',
|
174 |
-
'
|
175 |
-
'0123456789' => '0123456789',
|
176 |
'Analyze' => '分析',
|
177 |
'Optimize' => '最佳化',
|
|
|
178 |
'Check' => '檢查',
|
179 |
'Repair' => '修復',
|
180 |
'Truncate' => '清空',
|
|
|
181 |
'Move to other database' => '轉移到其它資料庫',
|
182 |
'Move' => '轉移',
|
183 |
-
'
|
184 |
-
'
|
185 |
-
'
|
186 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
187 |
'Tables have been dropped.' => '已經將資料表刪除。',
|
188 |
-
'
|
189 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
190 |
'Partition by' => '分區類型',
|
191 |
'Partitions' => '分區',
|
192 |
'Partition name' => '分區名稱',
|
193 |
'Values' => '值',
|
194 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
195 |
'anywhere' => '任意位置',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
196 |
'Import' => '匯入',
|
197 |
-
'
|
198 |
-
'
|
199 |
-
|
200 |
-
|
201 |
-
'
|
202 |
-
'
|
203 |
-
'
|
204 |
-
|
205 |
-
|
206 |
-
'
|
207 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
208 |
'Numbers' => '數字',
|
209 |
'Date and time' => '日期時間',
|
210 |
'Strings' => '字串',
|
211 |
'Binary' => '二進位',
|
212 |
'Lists' => '列表',
|
|
|
|
|
|
|
|
|
213 |
'Editor' => '編輯器',
|
214 |
-
|
215 |
-
'
|
216 |
-
|
217 |
-
'
|
218 |
-
|
219 |
-
'
|
220 |
-
'
|
221 |
-
'
|
222 |
-
'
|
223 |
-
|
224 |
-
|
225 |
-
'
|
226 |
-
'
|
227 |
-
|
|
|
228 |
'Alter schema' => '修改資料表結構',
|
229 |
'Create schema' => '建立資料表結構',
|
230 |
'Schema has been dropped.' => '已刪除資料表結構。',
|
231 |
'Schema has been created.' => '已建立資料表結構。',
|
232 |
'Schema has been altered.' => '已修改資料表結構。',
|
|
|
|
|
|
|
|
|
233 |
'Sequences' => '序列',
|
234 |
'Create sequence' => '建立序列',
|
235 |
-
'Alter sequence' => '修改序列',
|
236 |
'Sequence has been dropped.' => '已刪除序列。',
|
237 |
'Sequence has been created.' => '已建立序列。',
|
238 |
'Sequence has been altered.' => '已修改序列。',
|
|
|
|
|
|
|
239 |
'User types' => '使用者類型',
|
240 |
'Create type' => '建立類型',
|
241 |
-
'Alter type' => '修改類型',
|
242 |
'Type has been dropped.' => '已刪除類型。',
|
243 |
'Type has been created.' => '已建立類型。',
|
244 |
-
'
|
245 |
-
'last' => '最後一頁',
|
246 |
-
'From server' => '從伺服器',
|
247 |
-
'System' => '資料庫系統',
|
248 |
-
'Select data' => '選擇資料',
|
249 |
-
'Show structure' => '顯示結構',
|
250 |
-
'empty' => '空值',
|
251 |
-
'Network' => '網路',
|
252 |
-
'Geometry' => '幾何',
|
253 |
-
'File exists.' => '檔案已存在。',
|
254 |
-
'Attachments' => '附件',
|
255 |
-
'%d query(s) executed OK.' => '已順利執行 %d 個查詢。',
|
256 |
-
'Show only errors' => '僅顯示錯誤訊息',
|
257 |
-
'Refresh' => '重新載入',
|
258 |
-
'Invalid schema.' => '無效的資料表結構。',
|
259 |
-
'Please use one of the extensions %s.' => '請使用下列其中一個擴充模組 %s。',
|
260 |
-
'now' => '現在',
|
261 |
-
'ltr' => 'ltr',
|
262 |
-
'Tables have been copied.' => '資料表已經複製',
|
263 |
-
'Copy' => '複製',
|
264 |
-
'Permanent link' => '永久連結',
|
265 |
-
'Edit all' => '編輯全部',
|
266 |
-
'HH:MM:SS' => 'HH:MM:SS',
|
267 |
);
|
1 |
<?php
|
2 |
$translations = array(
|
3 |
+
// label for database system selection (MySQL, SQLite, ...)
|
4 |
+
'System' => '資料庫系統',
|
|
|
5 |
'Server' => '伺服器',
|
6 |
'Username' => '帳號',
|
7 |
'Password' => '密碼',
|
8 |
+
'Permanent login' => '永久登入',
|
9 |
+
'Login' => '登入',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
'Logout' => '登出',
|
11 |
+
'Logged as: %s' => '登錄為: %s',
|
12 |
+
'Logout successful.' => '成功登出。',
|
13 |
+
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => '感謝使用Adminer,請考慮為我們<a href="https://www.adminer.org/en/donation/">捐款(英文網頁)</a>.',
|
14 |
+
'Invalid credentials.' => '無效的憑證。',
|
15 |
+
'There is a space in the input password which might be the cause.' => '您輸入的密碼中有一個空格,這可能是導致問題的原因。',
|
16 |
+
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer預設不支援訪問沒有密碼的資料庫,<a href="https://www.adminer.org/en/password/"%s>詳情見這裡</a>.',
|
17 |
+
'Database does not support password.' => '資料庫不支援密碼。',
|
18 |
+
'Too many unsuccessful logins, try again in %d minute(s).' => '登錄失敗次數過多,請 %d 分鐘後重試。',
|
19 |
+
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => '主密碼已過期。<a href="https://www.adminer.org/en/extension/"%s>請擴展</a> %s 方法讓它永久化。',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
'Language' => '語言',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
'Invalid CSRF token. Send the form again.' => '無效的 CSRF token。請重新發送表單。',
|
22 |
+
'If you did not send this request from Adminer then close this page.' => '如果您並沒有從Adminer發送請求,請關閉此頁面。',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
'No extension' => '無擴充模組',
|
24 |
+
'None of the supported PHP extensions (%s) are available.' => '沒有任何支援的 PHP 擴充模組(%s)。',
|
25 |
+
'Connecting to privileged ports is not allowed.' => '不允許連接到特權埠。',
|
26 |
+
'Disable %s or enable %s or %s extensions.' => '禁用 %s 或啟用 %s 或 %s 擴充模組。',
|
27 |
'Session support must be enabled.' => 'Session 必須被啟用。',
|
28 |
'Session expired, please login again.' => 'Session 已過期,請重新登入。',
|
29 |
+
'The action will be performed after successful login with the same credentials.' => '此操作將在成功使用相同的憑據登錄後執行。',
|
30 |
+
'%s version: %s through PHP extension %s' => '%s 版本:%s 透過 PHP 擴充模組 %s',
|
31 |
+
'Refresh' => '重新載入',
|
32 |
+
|
33 |
+
// text direction - 'ltr' or 'rtl'
|
34 |
+
'ltr' => 'ltr',
|
35 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
'Privileges' => '權限',
|
37 |
'Create user' => '建立使用者',
|
38 |
'User has been dropped.' => '已刪除使用者。',
|
39 |
'User has been altered.' => '已修改使用者。',
|
40 |
'User has been created.' => '已建立使用者。',
|
41 |
'Hashed' => 'Hashed',
|
42 |
+
'Column' => '欄位',
|
43 |
'Routine' => '程序',
|
44 |
'Grant' => '授權',
|
45 |
'Revoke' => '廢除',
|
46 |
+
|
47 |
+
'Process list' => '處理程序列表',
|
48 |
+
'%d process(es) have been killed.' => '%d 個 Process(es) 被終止',
|
49 |
+
'Kill' => '終止',
|
50 |
+
|
51 |
+
'Variables' => '變數',
|
52 |
+
'Status' => '狀態',
|
53 |
+
|
54 |
+
'SQL command' => 'SQL 命令',
|
55 |
+
'%d query(s) executed OK.' => '已順利執行 %d 個查詢。',
|
56 |
+
'Query executed OK, %d row(s) affected.' => '執行查詢 OK,%d 行受影響。',
|
57 |
+
'No commands to execute.' => '沒有命令可執行。',
|
58 |
+
'Error in query' => '查詢發生錯誤',
|
59 |
+
'Unknown error.' => '未知錯誤。',
|
60 |
+
'Warnings' => '警告',
|
61 |
+
'ATTACH queries are not supported.' => '不支援ATTACH查詢。',
|
62 |
+
'Execute' => '執行',
|
63 |
+
'Stop on error' => '出錯時停止',
|
64 |
+
'Show only errors' => '僅顯示錯誤訊息',
|
65 |
+
// sprintf() format for time of the command
|
66 |
+
'%.3f s' => '%.3f 秒',
|
67 |
+
'History' => '紀錄',
|
68 |
+
'Clear' => '清除',
|
69 |
+
'Edit all' => '編輯全部',
|
70 |
+
|
71 |
+
'File upload' => '檔案上傳',
|
72 |
+
'From server' => '從伺服器',
|
73 |
+
'Webserver file %s' => '網頁伺服器檔案 %s',
|
74 |
+
'Run file' => '執行檔案',
|
75 |
+
'File does not exist.' => '檔案不存在',
|
76 |
+
'File uploads are disabled.' => '檔案上傳已經被停用。',
|
77 |
+
'Unable to upload a file.' => '無法上傳檔案。',
|
78 |
+
'Maximum allowed file size is %sB.' => '允許的檔案上限大小為 %sB',
|
79 |
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'POST 資料太大。減少資料或者增加 %s 的設定值。',
|
80 |
+
'You can upload a big SQL file via FTP and import it from server.' => '您可以通過FTP上傳大型SQL檔並從伺服器導入。',
|
81 |
+
'You are offline.' => '您離線了。',
|
82 |
+
|
83 |
'Export' => '匯出',
|
|
|
|
|
84 |
'Output' => '輸出',
|
85 |
'open' => '打開',
|
86 |
'save' => '儲存',
|
87 |
+
'Saving' => '保存中',
|
88 |
'Format' => '格式',
|
89 |
+
'Data' => '資料',
|
90 |
+
|
91 |
+
'Database' => '資料庫',
|
92 |
+
'database' => '資料庫',
|
93 |
+
'DB' => '資料庫',
|
94 |
+
'Use' => '使用',
|
95 |
+
'Select database' => '選擇資料庫',
|
96 |
+
'Invalid database.' => '無效的資料庫。',
|
97 |
+
'Database has been dropped.' => '資料庫已刪除。',
|
98 |
+
'Databases have been dropped.' => '資料庫已刪除。',
|
99 |
+
'Database has been created.' => '已建立資料庫。',
|
100 |
+
'Database has been renamed.' => '已重新命名資料庫。',
|
101 |
+
'Database has been altered.' => '已修改資料庫。',
|
102 |
+
'Alter database' => '修改資料庫',
|
103 |
+
'Create database' => '建立資料庫',
|
104 |
+
'Database schema' => '資料庫結構',
|
105 |
+
|
106 |
+
// link to current database schema layout
|
107 |
+
'Permanent link' => '永久連結',
|
108 |
+
|
109 |
+
// thousands separator - must contain single byte
|
110 |
+
',' => ',',
|
111 |
+
'0123456789' => '0123456789',
|
112 |
'Engine' => '引擎',
|
113 |
'Collation' => '校對',
|
114 |
'Data Length' => '資料長度',
|
115 |
'Index Length' => '索引長度',
|
116 |
'Data Free' => '資料空閒',
|
117 |
'Rows' => '行數',
|
118 |
+
'%d in total' => '總共 %d 個',
|
|
|
119 |
'Analyze' => '分析',
|
120 |
'Optimize' => '最佳化',
|
121 |
+
'Vacuum' => '整理(Vacuum)',
|
122 |
'Check' => '檢查',
|
123 |
'Repair' => '修復',
|
124 |
'Truncate' => '清空',
|
125 |
+
'Tables have been truncated.' => '已清空資料表。',
|
126 |
'Move to other database' => '轉移到其它資料庫',
|
127 |
'Move' => '轉移',
|
128 |
+
'Tables have been moved.' => '已轉移資料表。',
|
129 |
+
'Copy' => '複製',
|
130 |
+
'Tables have been copied.' => '資料表已經複製',
|
131 |
+
|
132 |
+
'Routines' => '程序',
|
133 |
+
'Routine has been called, %d row(s) affected.' => '程序已被執行,%d 行被影響',
|
134 |
+
'Call' => '呼叫',
|
135 |
+
'Parameter name' => '參數名稱',
|
136 |
+
'Create procedure' => '建立預存程序',
|
137 |
+
'Create function' => '建立函式',
|
138 |
+
'Routine has been dropped.' => '已刪除程序。',
|
139 |
+
'Routine has been altered.' => '已修改子程序。',
|
140 |
+
'Routine has been created.' => '已建立子程序。',
|
141 |
+
'Alter function' => '修改函式',
|
142 |
+
'Alter procedure' => '修改預存程序',
|
143 |
+
'Return type' => '回傳類型',
|
144 |
+
|
145 |
+
'Events' => '事件',
|
146 |
+
'Event has been dropped.' => '已刪除事件。',
|
147 |
+
'Event has been altered.' => '已修改事件。',
|
148 |
+
'Event has been created.' => '已建立事件。',
|
149 |
+
'Alter event' => '修改事件',
|
150 |
+
'Create event' => '建立事件',
|
151 |
+
'At given time' => '在指定時間',
|
152 |
+
'Every' => '每',
|
153 |
+
'Schedule' => '排程',
|
154 |
+
'Start' => '開始',
|
155 |
+
'End' => '結束',
|
156 |
+
'On completion preserve' => '在完成後儲存',
|
157 |
+
|
158 |
+
'Tables' => '資料表',
|
159 |
+
'Tables and views' => '資料表和檢視表',
|
160 |
+
'Table' => '資料表',
|
161 |
+
'No tables.' => '沒有資料表。',
|
162 |
+
'Alter table' => '修改資料表',
|
163 |
+
'Create table' => '建立資料表',
|
164 |
+
'Table has been dropped.' => '已經刪除資料表。',
|
165 |
'Tables have been dropped.' => '已經將資料表刪除。',
|
166 |
+
'Tables have been optimized.' => '已優化資料表。',
|
167 |
+
'Table has been altered.' => '資料表已修改。',
|
168 |
+
'Table has been created.' => '資料表已建立。',
|
169 |
+
'Table name' => '資料表名稱',
|
170 |
+
'Show structure' => '顯示結構',
|
171 |
+
'engine' => '引擎',
|
172 |
+
'collation' => '校對',
|
173 |
+
'Column name' => '欄位名稱',
|
174 |
+
'Type' => '類型',
|
175 |
+
'Length' => '長度',
|
176 |
+
'Auto Increment' => '自動遞增',
|
177 |
+
'Options' => '選項',
|
178 |
+
'Comment' => '註解',
|
179 |
+
'Default value' => '預設值',
|
180 |
+
'Default values' => '預設值',
|
181 |
+
'Drop' => '刪除',
|
182 |
+
'Drop %s?' => '刪除 %s?',
|
183 |
+
'Are you sure?' => '你確定嗎?',
|
184 |
+
'Size' => '大小',
|
185 |
+
'Compute' => '計算',
|
186 |
+
'Move up' => '上移',
|
187 |
+
'Move down' => '下移',
|
188 |
+
'Remove' => '移除',
|
189 |
+
'Maximum number of allowed fields exceeded. Please increase %s.' => '超過允許的字段數量的最大值。請增加 %s。',
|
190 |
+
|
191 |
'Partition by' => '分區類型',
|
192 |
'Partitions' => '分區',
|
193 |
'Partition name' => '分區名稱',
|
194 |
'Values' => '值',
|
195 |
+
|
196 |
+
'View' => '檢視表',
|
197 |
+
'Materialized view' => '物化視圖',
|
198 |
+
'View has been dropped.' => '已刪除檢視表。',
|
199 |
+
'View has been altered.' => '已修改檢視表。',
|
200 |
+
'View has been created.' => '已建立檢視表。',
|
201 |
+
'Alter view' => '修改檢視表',
|
202 |
+
'Create view' => '建立檢視表',
|
203 |
+
|
204 |
+
'Indexes' => '索引',
|
205 |
+
'Indexes have been altered.' => '已修改索引。',
|
206 |
+
'Alter indexes' => '修改索引',
|
207 |
+
'Add next' => '新增下一筆',
|
208 |
+
'Index Type' => '索引類型',
|
209 |
+
'Column (length)' => '欄位(長度)',
|
210 |
+
|
211 |
+
'Foreign keys' => '外來鍵',
|
212 |
+
'Foreign key' => '外來鍵',
|
213 |
+
'Foreign key has been dropped.' => '已刪除外來鍵。',
|
214 |
+
'Foreign key has been altered.' => '已修改外來鍵。',
|
215 |
+
'Foreign key has been created.' => '已建立外來鍵。',
|
216 |
+
'Target table' => '目標資料表',
|
217 |
+
'Change' => '變更',
|
218 |
+
'Source' => '來源',
|
219 |
+
'Target' => '目標',
|
220 |
+
'Add column' => '新增欄位',
|
221 |
+
'Alter' => '修改',
|
222 |
+
'Add foreign key' => '新增外來鍵',
|
223 |
+
'ON DELETE' => 'ON DELETE',
|
224 |
+
'ON UPDATE' => 'ON UPDATE',
|
225 |
+
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => '來源列和目標列必須具有相同的資料類型,在目標列上必須有一個索引並且引用的資料必須存在。',
|
226 |
+
|
227 |
+
'Triggers' => '觸發器',
|
228 |
+
'Add trigger' => '建立觸發器',
|
229 |
+
'Trigger has been dropped.' => '已刪除觸發器。',
|
230 |
+
'Trigger has been altered.' => '已修改觸發器。',
|
231 |
+
'Trigger has been created.' => '已建立觸發器。',
|
232 |
+
'Alter trigger' => '修改觸發器',
|
233 |
+
'Create trigger' => '建立觸發器',
|
234 |
+
'Time' => '時間',
|
235 |
+
'Event' => '事件',
|
236 |
+
'Name' => '名稱',
|
237 |
+
|
238 |
+
'select' => '選擇',
|
239 |
+
'Select' => '選擇',
|
240 |
+
'Select data' => '選擇資料',
|
241 |
+
'Functions' => '函式',
|
242 |
+
'Aggregation' => '集合',
|
243 |
+
'Search' => '搜尋',
|
244 |
'anywhere' => '任意位置',
|
245 |
+
'Search data in tables' => '在資料庫搜尋',
|
246 |
+
'Sort' => '排序',
|
247 |
+
'descending' => '降冪 (遞減)',
|
248 |
+
'Limit' => '限定',
|
249 |
+
'Limit rows' => '限制行數',
|
250 |
+
'Text length' => 'Text 長度',
|
251 |
+
'Action' => '動作',
|
252 |
+
'Full table scan' => '全資料表掃描',
|
253 |
+
'Unable to select the table' => '無法選擇該資料表',
|
254 |
+
'No rows.' => '沒有資料行。',
|
255 |
+
'%d / ' => '%d / ',
|
256 |
+
'%d row(s)' => '%d 行',
|
257 |
+
'Page' => '頁',
|
258 |
+
'last' => '最後一頁',
|
259 |
+
'Load more data' => '載入更多資料',
|
260 |
+
'Loading' => '載入中',
|
261 |
+
'Whole result' => '所有結果',
|
262 |
+
'%d byte(s)' => '%d byte(s)',
|
263 |
+
|
264 |
'Import' => '匯入',
|
265 |
+
'%d row(s) have been imported.' => '已匯入 %d 行。',
|
266 |
+
'File must be in UTF-8 encoding.' => '檔必須使用UTF-8編碼。',
|
267 |
+
|
268 |
+
// in-place editing in select
|
269 |
+
'Modify' => '修改',
|
270 |
+
'Ctrl+click on a value to modify it.' => '按住Ctrl並按一下某個值進行修改。',
|
271 |
+
'Use edit link to modify this value.' => '使用編輯連結來修改。',
|
272 |
+
|
273 |
+
// %s can contain auto-increment value
|
274 |
+
'Item%s has been inserted.' => '已新增項目 %s。',
|
275 |
+
'Item has been deleted.' => '該項目已被刪除',
|
276 |
+
'Item has been updated.' => '已更新項目。',
|
277 |
+
'%d item(s) have been affected.' => '%d 個項目受到影響。',
|
278 |
+
'New item' => '新增項目',
|
279 |
+
'original' => '原始',
|
280 |
+
// label for value '' in enum data type
|
281 |
+
'empty' => '空值',
|
282 |
+
'edit' => '編輯',
|
283 |
+
'Edit' => '編輯',
|
284 |
+
'Insert' => '新增',
|
285 |
+
'Save' => '儲存',
|
286 |
+
'Save and continue edit' => '儲存並繼續編輯',
|
287 |
+
'Save and insert next' => '儲存並新增下一筆',
|
288 |
+
'Selected' => '已選中',
|
289 |
+
'Clone' => '複製',
|
290 |
+
'Delete' => '刪除',
|
291 |
+
'You have no privileges to update this table.' => '您沒有許可權更新這個資料表。',
|
292 |
+
|
293 |
+
'E-mail' => '電子郵件',
|
294 |
+
'From' => '來自',
|
295 |
+
'Subject' => '主旨',
|
296 |
+
'Attachments' => '附件',
|
297 |
+
'Send' => '寄出',
|
298 |
+
'%d e-mail(s) have been sent.' => '已寄出 %d 封郵件。',
|
299 |
+
|
300 |
+
// data type descriptions
|
301 |
'Numbers' => '數字',
|
302 |
'Date and time' => '日期時間',
|
303 |
'Strings' => '字串',
|
304 |
'Binary' => '二進位',
|
305 |
'Lists' => '列表',
|
306 |
+
'Network' => '網路',
|
307 |
+
'Geometry' => '幾何',
|
308 |
+
'Relations' => '關聯',
|
309 |
+
|
310 |
'Editor' => '編輯器',
|
311 |
+
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
|
312 |
+
'$1-$3-$5' => '$1.$3.$5',
|
313 |
+
// hint for date format - use language equivalents for day, month and year shortcuts
|
314 |
+
'[yyyy]-mm-dd' => '[yyyy].mm.dd',
|
315 |
+
// hint for time format - use language equivalents for hour, minute and second shortcuts
|
316 |
+
'HH:MM:SS' => 'HH:MM:SS',
|
317 |
+
'now' => '現在',
|
318 |
+
'yes' => '是',
|
319 |
+
'no' => '否',
|
320 |
+
|
321 |
+
// general SQLite error in create, drop or rename database
|
322 |
+
'File exists.' => '檔案已存在。',
|
323 |
+
'Please use one of the extensions %s.' => '請使用下列其中一個擴充模組 %s。',
|
324 |
+
|
325 |
+
// PostgreSQL and MS SQL schema support
|
326 |
'Alter schema' => '修改資料表結構',
|
327 |
'Create schema' => '建立資料表結構',
|
328 |
'Schema has been dropped.' => '已刪除資料表結構。',
|
329 |
'Schema has been created.' => '已建立資料表結構。',
|
330 |
'Schema has been altered.' => '已修改資料表結構。',
|
331 |
+
'Schema' => '資料表結構',
|
332 |
+
'Invalid schema.' => '無效的資料表結構。',
|
333 |
+
|
334 |
+
// PostgreSQL sequences support
|
335 |
'Sequences' => '序列',
|
336 |
'Create sequence' => '建立序列',
|
|
|
337 |
'Sequence has been dropped.' => '已刪除序列。',
|
338 |
'Sequence has been created.' => '已建立序列。',
|
339 |
'Sequence has been altered.' => '已修改序列。',
|
340 |
+
'Alter sequence' => '修改序列',
|
341 |
+
|
342 |
+
// PostgreSQL user types support
|
343 |
'User types' => '使用者類型',
|
344 |
'Create type' => '建立類型',
|
|
|
345 |
'Type has been dropped.' => '已刪除類型。',
|
346 |
'Type has been created.' => '已建立類型。',
|
347 |
+
'Alter type' => '修改類型',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
348 |
);
|
adminer/adminer/adminer/lang/zh.inc.php
CHANGED
@@ -1,19 +1,173 @@
|
|
1 |
<?php
|
2 |
$translations = array(
|
3 |
-
|
4 |
-
'
|
5 |
-
'Invalid credentials.' => '无效凭据。',
|
6 |
'Server' => '服务器',
|
7 |
'Username' => '用户名',
|
8 |
'Password' => '密码',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
'Select database' => '选择数据库',
|
10 |
'Invalid database.' => '无效数据库。',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
'Table has been dropped.' => '已删除表。',
|
|
|
|
|
12 |
'Table has been altered.' => '已修改表。',
|
13 |
'Table has been created.' => '已创建表。',
|
14 |
-
'Alter table' => '修改表',
|
15 |
-
'Create table' => '创建表',
|
16 |
'Table name' => '表名',
|
|
|
17 |
'engine' => '引擎',
|
18 |
'collation' => '校对',
|
19 |
'Column name' => '字段名',
|
@@ -21,71 +175,44 @@ $translations = array(
|
|
21 |
'Length' => '长度',
|
22 |
'Auto Increment' => '自动增量',
|
23 |
'Options' => '选项',
|
24 |
-
'
|
|
|
|
|
25 |
'Drop' => '删除',
|
26 |
-
'
|
27 |
-
'
|
28 |
-
'
|
29 |
-
'
|
30 |
-
'
|
31 |
-
'
|
32 |
-
'
|
33 |
-
'
|
34 |
-
|
35 |
-
'
|
36 |
-
'
|
37 |
-
'
|
38 |
-
'
|
39 |
-
|
40 |
-
'
|
41 |
-
'
|
42 |
-
'
|
43 |
-
'
|
44 |
-
'
|
45 |
-
'
|
46 |
-
'
|
47 |
-
|
48 |
'Indexes' => '索引',
|
|
|
49 |
'Alter indexes' => '修改索引',
|
50 |
'Add next' => '下一行插入',
|
51 |
-
'
|
52 |
-
'
|
53 |
-
|
54 |
-
'Search' => '搜索',
|
55 |
-
'Sort' => '排序',
|
56 |
-
'descending' => '降序',
|
57 |
-
'Limit' => '范围',
|
58 |
-
'No rows.' => '无数据。',
|
59 |
-
'Action' => '动作',
|
60 |
-
'edit' => '编辑',
|
61 |
-
'Page' => '页面',
|
62 |
-
'Query executed OK, %d row(s) affected.' => '查询执行完毕,%d 行受影响。',
|
63 |
-
'Error in query' => '查询出错',
|
64 |
-
'Execute' => '执行',
|
65 |
-
'Table' => '表',
|
66 |
'Foreign keys' => '外键',
|
67 |
-
'
|
68 |
-
'View' => '视图',
|
69 |
-
'Unable to select the table' => '不能选择该表',
|
70 |
-
'Invalid CSRF token. Send the form again.' => '无效 CSRF 令牌。重新发送表单。',
|
71 |
-
'Comment' => '注释',
|
72 |
-
'Default values' => '默认值',
|
73 |
-
'%d byte(s)' => '%d 字节',
|
74 |
-
'No commands to execute.' => '没有命令被执行。',
|
75 |
-
'Unable to upload a file.' => '不能上传文件。',
|
76 |
-
'File upload' => '文件上传',
|
77 |
-
'File uploads are disabled.' => '文件上传被禁用。',
|
78 |
-
'Routine has been called, %d row(s) affected.' => '子程序被调用,%d 行被影响。',
|
79 |
-
'Call' => '调用',
|
80 |
-
'No extension' => '没有扩展',
|
81 |
-
'None of the supported PHP extensions (%s) are available.' => '没有支持的 PHP 扩展可用(%s)。',
|
82 |
-
'Session support must be enabled.' => 'Session 必须被启用。',
|
83 |
-
'Session expired, please login again.' => 'Session 已过期,请重新登录。',
|
84 |
-
'Text length' => '文本显示限制',
|
85 |
'Foreign key has been dropped.' => '已删除外键。',
|
86 |
'Foreign key has been altered.' => '已修改外键。',
|
87 |
'Foreign key has been created.' => '已创建外键。',
|
88 |
-
'Foreign key' => '外键',
|
89 |
'Target table' => '目标表',
|
90 |
'Change' => '修改',
|
91 |
'Source' => '源',
|
@@ -95,27 +222,9 @@ $translations = array(
|
|
95 |
'Add foreign key' => '添加外键',
|
96 |
'ON DELETE' => 'ON DELETE',
|
97 |
'ON UPDATE' => 'ON UPDATE',
|
98 |
-
'
|
99 |
-
|
100 |
-
'
|
101 |
-
'View has been altered.' => '已修改视图。',
|
102 |
-
'View has been created.' => '已创建视图。',
|
103 |
-
'Alter view' => '修改视图',
|
104 |
-
'Create view' => '创建视图',
|
105 |
-
'Name' => '名称',
|
106 |
-
'Process list' => '进程列表',
|
107 |
-
'%d process(es) have been killed.' => '%d 个进程被终止',
|
108 |
-
'Kill' => '终止',
|
109 |
-
'Parameter name' => '参数名',
|
110 |
-
'Database schema' => '数据库概要',
|
111 |
-
'Create procedure' => '创建过程',
|
112 |
-
'Create function' => '创建函数',
|
113 |
-
'Routine has been dropped.' => '已删除子程序。',
|
114 |
-
'Routine has been altered.' => '已修改子程序。',
|
115 |
-
'Routine has been created.' => '已创建子程序。',
|
116 |
-
'Alter function' => '修改函数',
|
117 |
-
'Alter procedure' => '修改过程',
|
118 |
-
'Return type' => '返回类型',
|
119 |
'Add trigger' => '创建触发器',
|
120 |
'Trigger has been dropped.' => '已删除触发器。',
|
121 |
'Trigger has been altered.' => '已修改触发器。',
|
@@ -124,144 +233,116 @@ $translations = array(
|
|
124 |
'Create trigger' => '创建触发器',
|
125 |
'Time' => '时间',
|
126 |
'Event' => '事件',
|
127 |
-
'
|
128 |
-
|
129 |
-
'
|
130 |
-
'
|
131 |
-
'
|
132 |
-
'Create user' => '创建用户',
|
133 |
-
'User has been dropped.' => '已删除用户。',
|
134 |
-
'User has been altered.' => '已修改用户。',
|
135 |
-
'User has been created.' => '已创建用户。',
|
136 |
-
'Hashed' => 'Hashed',
|
137 |
-
'Column' => '列',
|
138 |
-
'Routine' => '子程序',
|
139 |
-
'Grant' => '授权',
|
140 |
-
'Revoke' => '废除',
|
141 |
-
'Logged as: %s' => '登录用户:%s',
|
142 |
-
'Too big POST data. Reduce the data or increase the %s configuration directive.' => '太大的 POST 数据。减少数据或者增加 %s 配置命令。',
|
143 |
-
'Move up' => '上移',
|
144 |
-
'Move down' => '下移',
|
145 |
-
'Export' => '导出',
|
146 |
-
'Tables' => '表',
|
147 |
-
'Data' => '数据',
|
148 |
-
'Output' => '输出',
|
149 |
-
'open' => '打开',
|
150 |
-
'save' => '保存',
|
151 |
-
'Format' => '格式',
|
152 |
'Functions' => '函数',
|
153 |
'Aggregation' => '集合',
|
154 |
-
'
|
155 |
-
'Event has been altered.' => '已修改事件。',
|
156 |
-
'Event has been created.' => '已创建事件。',
|
157 |
-
'Alter event' => '修改事件',
|
158 |
-
'Create event' => '创建事件',
|
159 |
-
'Start' => '开始',
|
160 |
-
'End' => '结束',
|
161 |
-
'Every' => '每',
|
162 |
-
'Status' => '状态',
|
163 |
-
'On completion preserve' => '完成后保存',
|
164 |
-
'Events' => '事件',
|
165 |
-
'Schedule' => '调度',
|
166 |
-
'At given time' => '在指定时间',
|
167 |
-
'Tables have been truncated.' => '已清空表。',
|
168 |
-
'Tables have been moved.' => '已转移表。',
|
169 |
-
'Tables and views' => '表和视图',
|
170 |
-
'Engine' => '引擎',
|
171 |
-
'Collation' => '校对',
|
172 |
-
'Data Length' => '数据长度',
|
173 |
-
'Index Length' => '索引长度',
|
174 |
-
'Data Free' => '数据空闲',
|
175 |
-
'Rows' => '行数',
|
176 |
-
',' => ',',
|
177 |
-
'0123456789' => '0123456789',
|
178 |
-
'Analyze' => '分析',
|
179 |
-
'Optimize' => '优化',
|
180 |
-
'Check' => '检查',
|
181 |
-
'Repair' => '修复',
|
182 |
-
'Truncate' => '清空',
|
183 |
-
'Move to other database' => '转移到其它数据库',
|
184 |
-
'Move' => '转移',
|
185 |
-
'Save and continue edit' => '保存并继续编辑',
|
186 |
-
'original' => '原始',
|
187 |
-
'%d item(s) have been affected.' => '%d 个项目受到影响。',
|
188 |
-
'Whole result' => '所有结果',
|
189 |
-
'Tables have been dropped.' => '已删除表。',
|
190 |
-
'Clone' => '复制',
|
191 |
-
'Maximum number of allowed fields exceeded. Please increase %s.' => '超过最多允许的字段数量。请增加 %s。',
|
192 |
-
'Partition by' => '分区类型',
|
193 |
-
'Partitions' => '分区',
|
194 |
-
'Partition name' => '分区名',
|
195 |
-
'Values' => '值',
|
196 |
-
'%d row(s) have been imported.' => '%d 行已导入。',
|
197 |
'anywhere' => '任意位置',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
198 |
'Import' => '导入',
|
199 |
-
'
|
200 |
-
'
|
201 |
-
|
202 |
-
|
203 |
-
'
|
204 |
-
'
|
205 |
-
'
|
206 |
-
|
207 |
-
|
208 |
-
'
|
209 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
210 |
'Numbers' => '数字',
|
211 |
'Date and time' => '日期时间',
|
212 |
'Strings' => '字符串',
|
213 |
'Binary' => '二进制',
|
214 |
'Lists' => '列表',
|
|
|
|
|
|
|
|
|
215 |
'Editor' => '编辑器',
|
216 |
-
|
217 |
-
'
|
218 |
-
|
219 |
-
'
|
220 |
-
|
221 |
-
'
|
222 |
-
'
|
223 |
-
'
|
224 |
-
'
|
225 |
-
|
226 |
-
|
227 |
-
'
|
|
|
|
|
|
|
228 |
'Alter schema' => '修改模式',
|
229 |
'Create schema' => '创建模式',
|
230 |
'Schema has been dropped.' => '已删除模式。',
|
231 |
'Schema has been created.' => '已创建模式。',
|
232 |
'Schema has been altered.' => '已修改模式。',
|
|
|
|
|
|
|
|
|
233 |
'Sequences' => '序列',
|
234 |
'Create sequence' => '创建序列',
|
235 |
-
'Alter sequence' => '修改序列',
|
236 |
'Sequence has been dropped.' => '已删除序列。',
|
237 |
'Sequence has been created.' => '已创建序列。',
|
238 |
'Sequence has been altered.' => '已修改序列。',
|
|
|
|
|
|
|
239 |
'User types' => '用户类型',
|
240 |
'Create type' => '创建类型',
|
241 |
-
'Alter type' => '修改类型',
|
242 |
'Type has been dropped.' => '已删除类型。',
|
243 |
'Type has been created.' => '已创建类型。',
|
244 |
-
'
|
245 |
-
'last' => '最后',
|
246 |
-
'From server' => '来自服务器',
|
247 |
-
'System' => '系统',
|
248 |
-
'Select data' => '选择数据',
|
249 |
-
'Show structure' => '显示结构',
|
250 |
-
'empty' => '空',
|
251 |
-
'Network' => '网络',
|
252 |
-
'Geometry' => '几何图形',
|
253 |
-
'File exists.' => '文件已存在。',
|
254 |
-
'Attachments' => '附件',
|
255 |
-
'%d query(s) executed OK.' => '%d 条查询已成功执行。',
|
256 |
-
'Show only errors' => '仅显示错误',
|
257 |
-
'Refresh' => '刷新',
|
258 |
-
'Invalid schema.' => '非法模式。',
|
259 |
-
'Please use one of the extensions %s.' => '请使用这些扩展中的一个:%s。',
|
260 |
-
'now' => '现在',
|
261 |
-
'ltr' => 'ltr',
|
262 |
-
'Tables have been copied.' => '表已复制。',
|
263 |
-
'Copy' => '复制',
|
264 |
-
'Permanent link' => '固定链接',
|
265 |
-
'Edit all' => '编辑全部',
|
266 |
-
'HH:MM:SS' => 'HH:MM:SS',
|
267 |
);
|
1 |
<?php
|
2 |
$translations = array(
|
3 |
+
// label for database system selection (MySQL, SQLite, ...)
|
4 |
+
'System' => '系统',
|
|
|
5 |
'Server' => '服务器',
|
6 |
'Username' => '用户名',
|
7 |
'Password' => '密码',
|
8 |
+
'Permanent login' => '保持登录',
|
9 |
+
'Login' => '登录',
|
10 |
+
'Logout' => '登出',
|
11 |
+
'Logged as: %s' => '登录用户:%s',
|
12 |
+
'Logout successful.' => '成功登出。',
|
13 |
+
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => '感谢使用Adminer,请考虑为我们<a href="https://www.adminer.org/en/donation/">捐款(英文页面)</a>.',
|
14 |
+
'Invalid credentials.' => '无效凭据。',
|
15 |
+
'There is a space in the input password which might be the cause.' => '您输入的密码中有一个空格,这可能是导致问题的原因。',
|
16 |
+
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer默认不支持访问没有密码的数据库,<a href="https://www.adminer.org/en/password/"%s>详情见这里</a>.',
|
17 |
+
'Database does not support password.' => '数据库不支持密码。',
|
18 |
+
'Too many unsuccessful logins, try again in %d minute(s).' => '登录失败次数过多,请 %d 分钟后重试。',
|
19 |
+
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => '主密码已过期。<a href="https://www.adminer.org/en/extension/"%s>请扩展</a> %s 方法让它永久化。',
|
20 |
+
'Language' => '语言',
|
21 |
+
'Invalid CSRF token. Send the form again.' => '无效 CSRF 令牌。请重新发送表单。',
|
22 |
+
'If you did not send this request from Adminer then close this page.' => '如果您并没有从Adminer发送请求,请关闭此页面。',
|
23 |
+
'No extension' => '没有扩展',
|
24 |
+
'None of the supported PHP extensions (%s) are available.' => '没有支持的 PHP 扩展可用(%s)。',
|
25 |
+
'Connecting to privileged ports is not allowed.' => '不允许连接到特权端口。',
|
26 |
+
'Disable %s or enable %s or %s extensions.' => '禁用 %s 或启用 %s 或 %s 扩展。',
|
27 |
+
'Session support must be enabled.' => '必须启用会话支持。',
|
28 |
+
'Session expired, please login again.' => '会话已过期,请重新登录。',
|
29 |
+
'The action will be performed after successful login with the same credentials.' => '此操作将在成功使用相同的凭据登录后执行。',
|
30 |
+
'%s version: %s through PHP extension %s' => '%s 版本:%s, 使用PHP扩展 %s',
|
31 |
+
'Refresh' => '刷新',
|
32 |
+
|
33 |
+
// text direction - 'ltr' or 'rtl'
|
34 |
+
'ltr' => 'ltr',
|
35 |
+
|
36 |
+
'Privileges' => '权限',
|
37 |
+
'Create user' => '创建用户',
|
38 |
+
'User has been dropped.' => '已删除用户。',
|
39 |
+
'User has been altered.' => '已修改用户。',
|
40 |
+
'User has been created.' => '已创建用户。',
|
41 |
+
'Hashed' => 'Hashed',
|
42 |
+
'Column' => '列',
|
43 |
+
'Routine' => '子程序',
|
44 |
+
'Grant' => '授权',
|
45 |
+
'Revoke' => '废除',
|
46 |
+
|
47 |
+
'Process list' => '进程列表',
|
48 |
+
'%d process(es) have been killed.' => '%d 个进程被终止',
|
49 |
+
'Kill' => '终止',
|
50 |
+
|
51 |
+
'Variables' => '变量',
|
52 |
+
'Status' => '状态',
|
53 |
+
|
54 |
+
'SQL command' => 'SQL命令',
|
55 |
+
'%d query(s) executed OK.' => '%d 条查询已成功执行。',
|
56 |
+
'Query executed OK, %d row(s) affected.' => '查询执行完毕,%d 行受影响。',
|
57 |
+
'No commands to execute.' => '没有命令被执行。',
|
58 |
+
'Error in query' => '查询出错',
|
59 |
+
'Unknown error.' => '未知错误。',
|
60 |
+
'Warnings' => '警告',
|
61 |
+
'ATTACH queries are not supported.' => '不支持ATTACH查询。',
|
62 |
+
'Execute' => '执行',
|
63 |
+
'Stop on error' => '出错时停止',
|
64 |
+
'Show only errors' => '仅显示错误',
|
65 |
+
// sprintf() format for time of the command
|
66 |
+
'%.3f s' => '%.3f 秒',
|
67 |
+
'History' => '历史',
|
68 |
+
'Clear' => '清除',
|
69 |
+
'Edit all' => '编辑全部',
|
70 |
+
|
71 |
+
'File upload' => '文件上传',
|
72 |
+
'From server' => '来自服务器',
|
73 |
+
'Webserver file %s' => 'Web服务器文件 %s',
|
74 |
+
'Run file' => '运行文件',
|
75 |
+
'File does not exist.' => '文件不存在。',
|
76 |
+
'File uploads are disabled.' => '文件上传被禁用。',
|
77 |
+
'Unable to upload a file.' => '不能上传文件。',
|
78 |
+
'Maximum allowed file size is %sB.' => '最多允许的文件大小为 %sB。',
|
79 |
+
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'POST 数据太大。请减少数据或者增加 %s 配置命令。',
|
80 |
+
'You can upload a big SQL file via FTP and import it from server.' => '您可以通过FTP上传大型SQL文件并从服务器导入。',
|
81 |
+
'You are offline.' => '您离线了。',
|
82 |
+
|
83 |
+
'Export' => '导出',
|
84 |
+
'Output' => '输出',
|
85 |
+
'open' => '打开',
|
86 |
+
'save' => '保存',
|
87 |
+
'Saving' => '保存中',
|
88 |
+
'Format' => '格式',
|
89 |
+
'Data' => '数据',
|
90 |
+
|
91 |
+
'Database' => '数据库',
|
92 |
+
'database' => '数据库',
|
93 |
+
'DB' => '数据库',
|
94 |
+
'Use' => '使用',
|
95 |
'Select database' => '选择数据库',
|
96 |
'Invalid database.' => '无效数据库。',
|
97 |
+
'Database has been dropped.' => '已删除数据库。',
|
98 |
+
'Databases have been dropped.' => '已删除数据库。',
|
99 |
+
'Database has been created.' => '已创建数据库。',
|
100 |
+
'Database has been renamed.' => '已重命名数据库。',
|
101 |
+
'Database has been altered.' => '已修改数据库。',
|
102 |
+
'Alter database' => '修改数据库',
|
103 |
+
'Create database' => '创建数据库',
|
104 |
+
'Database schema' => '数据库概要',
|
105 |
+
|
106 |
+
// link to current database schema layout
|
107 |
+
'Permanent link' => '固定链接',
|
108 |
+
|
109 |
+
// thousands separator - must contain single byte
|
110 |
+
',' => ',',
|
111 |
+
'0123456789' => '0123456789',
|
112 |
+
'Engine' => '引擎',
|
113 |
+
'Collation' => '校对',
|
114 |
+
'Data Length' => '数据长度',
|
115 |
+
'Index Length' => '索引长度',
|
116 |
+
'Data Free' => '数据空闲',
|
117 |
+
'Rows' => '行数',
|
118 |
+
'%d in total' => '共计 %d',
|
119 |
+
'Analyze' => '分析',
|
120 |
+
'Optimize' => '优化',
|
121 |
+
'Vacuum' => '整理(Vacuum)',
|
122 |
+
'Check' => '检查',
|
123 |
+
'Repair' => '修复',
|
124 |
+
'Truncate' => '清空',
|
125 |
+
'Tables have been truncated.' => '已清空表。',
|
126 |
+
'Move to other database' => '转移到其它数据库',
|
127 |
+
'Move' => '转移',
|
128 |
+
'Tables have been moved.' => '已转移表。',
|
129 |
+
'Copy' => '复制',
|
130 |
+
'Tables have been copied.' => '已复制表。',
|
131 |
+
|
132 |
+
'Routines' => '子程序',
|
133 |
+
'Routine has been called, %d row(s) affected.' => '子程序被调用,%d 行被影响。',
|
134 |
+
'Call' => '调用',
|
135 |
+
'Parameter name' => '参数名',
|
136 |
+
'Create procedure' => '创建过程',
|
137 |
+
'Create function' => '创建函数',
|
138 |
+
'Routine has been dropped.' => '已删除子程序。',
|
139 |
+
'Routine has been altered.' => '已修改子程序。',
|
140 |
+
'Routine has been created.' => '已创建子程序。',
|
141 |
+
'Alter function' => '修改函数',
|
142 |
+
'Alter procedure' => '修改过程',
|
143 |
+
'Return type' => '返回类型',
|
144 |
+
|
145 |
+
'Events' => '事件',
|
146 |
+
'Event has been dropped.' => '已删除事件。',
|
147 |
+
'Event has been altered.' => '已修改事件。',
|
148 |
+
'Event has been created.' => '已创建事件。',
|
149 |
+
'Alter event' => '修改事件',
|
150 |
+
'Create event' => '创建事件',
|
151 |
+
'At given time' => '在指定时间',
|
152 |
+
'Every' => '每',
|
153 |
+
'Schedule' => '调度',
|
154 |
+
'Start' => '开始',
|
155 |
+
'End' => '结束',
|
156 |
+
'On completion preserve' => '完成后仍保留',
|
157 |
+
|
158 |
+
'Tables' => '表',
|
159 |
+
'Tables and views' => '表和视图',
|
160 |
+
'Table' => '表',
|
161 |
+
'No tables.' => '没有表。',
|
162 |
+
'Alter table' => '修改表',
|
163 |
+
'Create table' => '创建表',
|
164 |
'Table has been dropped.' => '已删除表。',
|
165 |
+
'Tables have been dropped.' => '已删除表。',
|
166 |
+
'Tables have been optimized.' => '已优化表。',
|
167 |
'Table has been altered.' => '已修改表。',
|
168 |
'Table has been created.' => '已创建表。',
|
|
|
|
|
169 |
'Table name' => '表名',
|
170 |
+
'Show structure' => '显示结构',
|
171 |
'engine' => '引擎',
|
172 |
'collation' => '校对',
|
173 |
'Column name' => '字段名',
|
175 |
'Length' => '长度',
|
176 |
'Auto Increment' => '自动增量',
|
177 |
'Options' => '选项',
|
178 |
+
'Comment' => '注释',
|
179 |
+
'Default value' => '默认值',
|
180 |
+
'Default values' => '默认值',
|
181 |
'Drop' => '删除',
|
182 |
+
'Drop %s?' => '删除 %s?',
|
183 |
+
'Are you sure?' => '您确定吗?',
|
184 |
+
'Size' => '大小',
|
185 |
+
'Compute' => '计算',
|
186 |
+
'Move up' => '上移',
|
187 |
+
'Move down' => '下移',
|
188 |
+
'Remove' => '移除',
|
189 |
+
'Maximum number of allowed fields exceeded. Please increase %s.' => '超过最多允许的字段数量。请增加 %s。',
|
190 |
+
|
191 |
+
'Partition by' => '分区类型',
|
192 |
+
'Partitions' => '分区',
|
193 |
+
'Partition name' => '分区名',
|
194 |
+
'Values' => '值',
|
195 |
+
|
196 |
+
'View' => '视图',
|
197 |
+
'Materialized view' => '物化视图',
|
198 |
+
'View has been dropped.' => '已删除视图。',
|
199 |
+
'View has been altered.' => '已修改视图。',
|
200 |
+
'View has been created.' => '已创建视图。',
|
201 |
+
'Alter view' => '修改视图',
|
202 |
+
'Create view' => '创建视图',
|
203 |
+
|
204 |
'Indexes' => '索引',
|
205 |
+
'Indexes have been altered.' => '已修改索引。',
|
206 |
'Alter indexes' => '修改索引',
|
207 |
'Add next' => '下一行插入',
|
208 |
+
'Index Type' => '索引类型',
|
209 |
+
'Column (length)' => '列(长度)',
|
210 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
211 |
'Foreign keys' => '外键',
|
212 |
+
'Foreign key' => '外键',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
213 |
'Foreign key has been dropped.' => '已删除外键。',
|
214 |
'Foreign key has been altered.' => '已修改外键。',
|
215 |
'Foreign key has been created.' => '已创建外键。',
|
|
|
216 |
'Target table' => '目标表',
|
217 |
'Change' => '修改',
|
218 |
'Source' => '源',
|
222 |
'Add foreign key' => '添加外键',
|
223 |
'ON DELETE' => 'ON DELETE',
|
224 |
'ON UPDATE' => 'ON UPDATE',
|
225 |
+
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => '源列和目标列必须具有相同的数据类型,在目标列上必须有一个索引并且引用的数据必须存在。',
|
226 |
+
|
227 |
+
'Triggers' => '触发器',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
228 |
'Add trigger' => '创建触发器',
|
229 |
'Trigger has been dropped.' => '已删除触发器。',
|
230 |
'Trigger has been altered.' => '已修改触发器。',
|
233 |
'Create trigger' => '创建触发器',
|
234 |
'Time' => '时间',
|
235 |
'Event' => '事件',
|
236 |
+
'Name' => '名称',
|
237 |
+
|
238 |
+
'select' => '选择',
|
239 |
+
'Select' => '选择',
|
240 |
+
'Select data' => '选择数据',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
241 |
'Functions' => '函数',
|
242 |
'Aggregation' => '集合',
|
243 |
+
'Search' => '搜索',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
244 |
'anywhere' => '任意位置',
|
245 |
+
'Search data in tables' => '在表中搜索数据',
|
246 |
+
'Sort' => '排序',
|
247 |
+
'descending' => '降序',
|
248 |
+
'Limit' => '范围',
|
249 |
+
'Limit rows' => '限制行数',
|
250 |
+
'Text length' => '文本显示限制',
|
251 |
+
'Action' => '动作',
|
252 |
+
'Full table scan' => '全表扫描',
|
253 |
+
'Unable to select the table' => '不能选择该表',
|
254 |
+
'No rows.' => '无数据。',
|
255 |
+
'%d / ' => '%d / ',
|
256 |
+
'%d row(s)' => '%d 行',
|
257 |
+
'Page' => '页面',
|
258 |
+
'last' => '最后',
|
259 |
+
'Load more data' => '加载更多数据',
|
260 |
+
'Loading' => '加载中',
|
261 |
+
'Whole result' => '所有结果',
|
262 |
+
'%d byte(s)' => '%d 字节',
|
263 |
+
|
264 |
'Import' => '导入',
|
265 |
+
'%d row(s) have been imported.' => '%d 行已导入。',
|
266 |
+
'File must be in UTF-8 encoding.' => '文件必须使用UTF-8编码。',
|
267 |
+
|
268 |
+
// in-place editing in select
|
269 |
+
'Modify' => '修改',
|
270 |
+
'Ctrl+click on a value to modify it.' => '按住Ctrl并单击某个值进行修改。',
|
271 |
+
'Use edit link to modify this value.' => '使用编辑链接修改该值。',
|
272 |
+
|
273 |
+
// %s can contain auto-increment value
|
274 |
+
'Item%s has been inserted.' => '已插入项目%s。',
|
275 |
+
'Item has been deleted.' => '已删除项目。',
|
276 |
+
'Item has been updated.' => '已更新项目。',
|
277 |
+
'%d item(s) have been affected.' => '%d 个项目受到影响。',
|
278 |
+
'New item' => '新建数据',
|
279 |
+
'original' => '原始',
|
280 |
+
// label for value '' in enum data type
|
281 |
+
'empty' => '空',
|
282 |
+
'edit' => '编辑',
|
283 |
+
'Edit' => '编辑',
|
284 |
+
'Insert' => '插入',
|
285 |
+
'Save' => '保存',
|
286 |
+
'Save and continue edit' => '保存并继续编辑',
|
287 |
+
'Save and insert next' => '保存并插入下一个',
|
288 |
+
'Selected' => '已选中',
|
289 |
+
'Clone' => '复制',
|
290 |
+
'Delete' => '删除',
|
291 |
+
'You have no privileges to update this table.' => '您没有权限更新这个表。',
|
292 |
+
|
293 |
+
'E-mail' => '电子邮件',
|
294 |
+
'From' => '来自',
|
295 |
+
'Subject' => '主题',
|
296 |
+
'Attachments' => '附件',
|
297 |
+
'Send' => '发送',
|
298 |
+
'%d e-mail(s) have been sent.' => '%d 封邮件已发送。',
|
299 |
+
|
300 |
+
// data type descriptions
|
301 |
'Numbers' => '数字',
|
302 |
'Date and time' => '日期时间',
|
303 |
'Strings' => '字符串',
|
304 |
'Binary' => '二进制',
|
305 |
'Lists' => '列表',
|
306 |
+
'Network' => '网络',
|
307 |
+
'Geometry' => '几何图形',
|
308 |
+
'Relations' => '关联信息',
|
309 |
+
|
310 |
'Editor' => '编辑器',
|
311 |
+
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
|
312 |
+
'$1-$3-$5' => '$1.$3.$5',
|
313 |
+
// hint for date format - use language equivalents for day, month and year shortcuts
|
314 |
+
'[yyyy]-mm-dd' => '[yyyy].mm.dd',
|
315 |
+
// hint for time format - use language equivalents for hour, minute and second shortcuts
|
316 |
+
'HH:MM:SS' => 'HH:MM:SS',
|
317 |
+
'now' => '现在',
|
318 |
+
'yes' => '是',
|
319 |
+
'no' => '否',
|
320 |
+
|
321 |
+
// general SQLite error in create, drop or rename database
|
322 |
+
'File exists.' => '文件已存在。',
|
323 |
+
'Please use one of the extensions %s.' => '请使用其中一个扩展:%s。',
|
324 |
+
|
325 |
+
// PostgreSQL and MS SQL schema support
|
326 |
'Alter schema' => '修改模式',
|
327 |
'Create schema' => '创建模式',
|
328 |
'Schema has been dropped.' => '已删除模式。',
|
329 |
'Schema has been created.' => '已创建模式。',
|
330 |
'Schema has been altered.' => '已修改模式。',
|
331 |
+
'Schema' => '模式',
|
332 |
+
'Invalid schema.' => '非法模式。',
|
333 |
+
|
334 |
+
// PostgreSQL sequences support
|
335 |
'Sequences' => '序列',
|
336 |
'Create sequence' => '创建序列',
|
|
|
337 |
'Sequence has been dropped.' => '已删除序列。',
|
338 |
'Sequence has been created.' => '已创建序列。',
|
339 |
'Sequence has been altered.' => '已修改序列。',
|
340 |
+
'Alter sequence' => '修改序列',
|
341 |
+
|
342 |
+
// PostgreSQL user types support
|
343 |
'User types' => '用户类型',
|
344 |
'Create type' => '创建类型',
|
|
|
345 |
'Type has been dropped.' => '已删除类型。',
|
346 |
'Type has been created.' => '已创建类型。',
|
347 |
+
'Alter type' => '修改类型',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
348 |
);
|
adminer/adminer/adminer/procedure.inc.php
CHANGED
@@ -35,9 +35,10 @@ $routine_languages = routine_languages();
|
|
35 |
?>
|
36 |
|
37 |
<form action="" method="post" id="form">
|
38 |
-
<p><?php echo lang('Name'); ?>: <input name="name" value="<?php echo h($row["name"]); ?>" maxlength="64" autocapitalize="off">
|
39 |
<?php echo ($routine_languages ? lang('Language') . ": " . html_select("language", $routine_languages, $row["language"]) . "\n" : ""); ?>
|
40 |
<input type="submit" value="<?php echo lang('Save'); ?>">
|
|
|
41 |
<table cellspacing="0" class="nowrap">
|
42 |
<?php
|
43 |
edit_fields($row["fields"], $collations, $routine);
|
@@ -47,6 +48,7 @@ if (isset($_GET["function"])) {
|
|
47 |
}
|
48 |
?>
|
49 |
</table>
|
|
|
50 |
<p><?php textarea("definition", $row["definition"]); ?>
|
51 |
<p>
|
52 |
<input type="submit" value="<?php echo lang('Save'); ?>">
|
35 |
?>
|
36 |
|
37 |
<form action="" method="post" id="form">
|
38 |
+
<p><?php echo lang('Name'); ?>: <input name="name" value="<?php echo h($row["name"]); ?>" data-maxlength="64" autocapitalize="off">
|
39 |
<?php echo ($routine_languages ? lang('Language') . ": " . html_select("language", $routine_languages, $row["language"]) . "\n" : ""); ?>
|
40 |
<input type="submit" value="<?php echo lang('Save'); ?>">
|
41 |
+
<div class="scrollable">
|
42 |
<table cellspacing="0" class="nowrap">
|
43 |
<?php
|
44 |
edit_fields($row["fields"], $collations, $routine);
|
48 |
}
|
49 |
?>
|
50 |
</table>
|
51 |
+
</div>
|
52 |
<p><?php textarea("definition", $row["definition"]); ?>
|
53 |
<p>
|
54 |
<input type="submit" value="<?php echo lang('Save'); ?>">
|
adminer/adminer/adminer/processlist.inc.php
CHANGED
@@ -13,6 +13,7 @@ page_header(lang('Process list'), $error);
|
|
13 |
?>
|
14 |
|
15 |
<form action="" method="post">
|
|
|
16 |
<table cellspacing="0" class="nowrap checkable">
|
17 |
<?php
|
18 |
echo script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");
|
@@ -45,6 +46,7 @@ foreach (process_list() as $i => $row) {
|
|
45 |
}
|
46 |
?>
|
47 |
</table>
|
|
|
48 |
<p>
|
49 |
<?php
|
50 |
if (support("kill")) {
|
13 |
?>
|
14 |
|
15 |
<form action="" method="post">
|
16 |
+
<div class="scrollable">
|
17 |
<table cellspacing="0" class="nowrap checkable">
|
18 |
<?php
|
19 |
echo script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");
|
46 |
}
|
47 |
?>
|
48 |
</table>
|
49 |
+
</div>
|
50 |
<p>
|
51 |
<?php
|
52 |
if (support("kill")) {
|
adminer/adminer/adminer/select.inc.php
CHANGED
@@ -309,6 +309,7 @@ if (!$columns && support("table")) {
|
|
309 |
} else {
|
310 |
$backward_keys = $adminer->backwardKeys($TABLE, $table_name);
|
311 |
|
|
|
312 |
echo "<table id='table' cellspacing='0' class='nowrap checkable'>";
|
313 |
echo script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});");
|
314 |
echo "<thead><tr>" . (!$group && $select
|
@@ -439,7 +440,7 @@ if (!$columns && support("table")) {
|
|
439 |
$h_value = h($value !== null ? $value : $row[$key]);
|
440 |
echo "<td>" . ($text ? "<textarea name='$id' cols='30' rows='" . (substr_count($row[$key], "\n") + 1) . "'>$h_value</textarea>" : "<input name='$id' value='$h_value' size='$lengths[$key]'>");
|
441 |
} else {
|
442 |
-
$long = strpos($val, "<i
|
443 |
echo "<td id='$id' data-text='" . ($long ? 2 : ($text ? 1 : 0)) . "'"
|
444 |
. ($editable ? "" : " data-warning='" . h(lang('Use edit link to modify this value.')) . "'")
|
445 |
. ">$val</td>"
|
@@ -459,6 +460,7 @@ if (!$columns && support("table")) {
|
|
459 |
exit;
|
460 |
}
|
461 |
echo "</table>\n";
|
|
|
462 |
}
|
463 |
|
464 |
if (!is_ajax()) {
|
@@ -482,7 +484,7 @@ if (!$columns && support("table")) {
|
|
482 |
if ($pagination) {
|
483 |
echo (($found_rows === false ? count($rows) + 1 : $found_rows - $page * $limit) > $limit
|
484 |
? '<p><a href="' . h(remove_from_uri("page") . "&page=" . ($page + 1)) . '" class="loadmore">' . lang('Load more data') . '</a>'
|
485 |
-
. script("qsl('a').onclick = partial(selectLoadMore, " . (+$limit) . ", '" . lang('Loading') . "
|
486 |
: ''
|
487 |
);
|
488 |
echo "\n";
|
@@ -501,12 +503,12 @@ if (!$columns && support("table")) {
|
|
501 |
if ($jush != "simpledb") {
|
502 |
echo "<legend><a href='" . h(remove_from_uri("page")) . "'>" . lang('Page') . "</a></legend>";
|
503 |
echo script("qsl('a').onclick = function () { pageClick(this.href, +prompt('" . lang('Page') . "', '" . ($page + 1) . "')); return false; };");
|
504 |
-
echo pagination(0, $page) . ($page > 5 ? "
|
505 |
for ($i = max(1, $page - 4); $i < min($max_page, $page + 5); $i++) {
|
506 |
echo pagination($i, $page);
|
507 |
}
|
508 |
if ($max_page > 0) {
|
509 |
-
echo ($page + 5 < $max_page ? "
|
510 |
echo ($exact_count && $found_rows !== false
|
511 |
? pagination($max_page, $page)
|
512 |
: " <a href='" . h(remove_from_uri("page") . "&page=last") . "' title='~$max_page'>" . lang('last') . "</a>"
|
@@ -514,9 +516,9 @@ if (!$columns && support("table")) {
|
|
514 |
}
|
515 |
} else {
|
516 |
echo "<legend>" . lang('Page') . "</legend>";
|
517 |
-
echo pagination(0, $page) . ($page > 1 ? "
|
518 |
echo ($page ? pagination($page, $page) : "");
|
519 |
-
echo ($max_page > $page ? pagination($page + 1, $page) . ($max_page > $page + 1 ? "
|
520 |
}
|
521 |
echo "</fieldset>\n";
|
522 |
}
|
309 |
} else {
|
310 |
$backward_keys = $adminer->backwardKeys($TABLE, $table_name);
|
311 |
|
312 |
+
echo "<div class='scrollable'>";
|
313 |
echo "<table id='table' cellspacing='0' class='nowrap checkable'>";
|
314 |
echo script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});");
|
315 |
echo "<thead><tr>" . (!$group && $select
|
440 |
$h_value = h($value !== null ? $value : $row[$key]);
|
441 |
echo "<td>" . ($text ? "<textarea name='$id' cols='30' rows='" . (substr_count($row[$key], "\n") + 1) . "'>$h_value</textarea>" : "<input name='$id' value='$h_value' size='$lengths[$key]'>");
|
442 |
} else {
|
443 |
+
$long = strpos($val, "<i>…</i>");
|
444 |
echo "<td id='$id' data-text='" . ($long ? 2 : ($text ? 1 : 0)) . "'"
|
445 |
. ($editable ? "" : " data-warning='" . h(lang('Use edit link to modify this value.')) . "'")
|
446 |
. ">$val</td>"
|
460 |
exit;
|
461 |
}
|
462 |
echo "</table>\n";
|
463 |
+
echo "</div>\n";
|
464 |
}
|
465 |
|
466 |
if (!is_ajax()) {
|
484 |
if ($pagination) {
|
485 |
echo (($found_rows === false ? count($rows) + 1 : $found_rows - $page * $limit) > $limit
|
486 |
? '<p><a href="' . h(remove_from_uri("page") . "&page=" . ($page + 1)) . '" class="loadmore">' . lang('Load more data') . '</a>'
|
487 |
+
. script("qsl('a').onclick = partial(selectLoadMore, " . (+$limit) . ", '" . lang('Loading') . "…');", "")
|
488 |
: ''
|
489 |
);
|
490 |
echo "\n";
|
503 |
if ($jush != "simpledb") {
|
504 |
echo "<legend><a href='" . h(remove_from_uri("page")) . "'>" . lang('Page') . "</a></legend>";
|
505 |
echo script("qsl('a').onclick = function () { pageClick(this.href, +prompt('" . lang('Page') . "', '" . ($page + 1) . "')); return false; };");
|
506 |
+
echo pagination(0, $page) . ($page > 5 ? " …" : "");
|
507 |
for ($i = max(1, $page - 4); $i < min($max_page, $page + 5); $i++) {
|
508 |
echo pagination($i, $page);
|
509 |
}
|
510 |
if ($max_page > 0) {
|
511 |
+
echo ($page + 5 < $max_page ? " …" : "");
|
512 |
echo ($exact_count && $found_rows !== false
|
513 |
? pagination($max_page, $page)
|
514 |
: " <a href='" . h(remove_from_uri("page") . "&page=last") . "' title='~$max_page'>" . lang('last') . "</a>"
|
516 |
}
|
517 |
} else {
|
518 |
echo "<legend>" . lang('Page') . "</legend>";
|
519 |
+
echo pagination(0, $page) . ($page > 1 ? " …" : "");
|
520 |
echo ($page ? pagination($page, $page) : "");
|
521 |
+
echo ($max_page > $page ? pagination($page + 1, $page) . ($max_page > $page + 1 ? " …" : "") : "");
|
522 |
}
|
523 |
echo "</fieldset>\n";
|
524 |
}
|
adminer/adminer/adminer/sql.inc.php
CHANGED
@@ -219,7 +219,7 @@ if (!isset($_GET["import"])) {
|
|
219 |
}
|
220 |
echo "<p>";
|
221 |
textarea("query", $q, 20);
|
222 |
-
echo ($_POST ? "" :
|
223 |
echo "<p>$execute\n";
|
224 |
echo lang('Limit rows') . ": <input type='number' name='limit' class='size' value='" . h($_POST ? $_POST["limit"] : $_GET["limit"]) . "'>\n";
|
225 |
|
@@ -231,10 +231,13 @@ if (!isset($_GET["import"])) {
|
|
231 |
: lang('File uploads are disabled.')
|
232 |
);
|
233 |
echo "</div></fieldset>\n";
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
|
|
|
|
|
|
238 |
echo "<p>";
|
239 |
}
|
240 |
|
219 |
}
|
220 |
echo "<p>";
|
221 |
textarea("query", $q, 20);
|
222 |
+
echo script(($_POST ? "" : "qs('textarea').focus();\n") . "qs('#form').onsubmit = partial(sqlSubmit, qs('#form'), '" . remove_from_uri("sql|limit|error_stops|only_errors") . "');");
|
223 |
echo "<p>$execute\n";
|
224 |
echo lang('Limit rows') . ": <input type='number' name='limit' class='size' value='" . h($_POST ? $_POST["limit"] : $_GET["limit"]) . "'>\n";
|
225 |
|
231 |
: lang('File uploads are disabled.')
|
232 |
);
|
233 |
echo "</div></fieldset>\n";
|
234 |
+
$importServerPath = $adminer->importServerPath();
|
235 |
+
if ($importServerPath) {
|
236 |
+
echo "<fieldset><legend>" . lang('From server') . "</legend><div>";
|
237 |
+
echo lang('Webserver file %s', "<code>" . h($importServerPath) . "$gz</code>");
|
238 |
+
echo ' <input type="submit" name="webfile" value="' . lang('Run file') . '">';
|
239 |
+
echo "</div></fieldset>\n";
|
240 |
+
}
|
241 |
echo "<p>";
|
242 |
}
|
243 |
|
adminer/adminer/adminer/static/default.css
CHANGED
@@ -66,8 +66,8 @@ input.wayoff { left: -1000px; position: absolute; }
|
|
66 |
.loadmore { margin-left: 1ex; }
|
67 |
/* .edit used in designs */
|
68 |
#menu { position: absolute; margin: 10px 0 0; padding: 0 0 30px 0; top: 2em; left: 0; width: 19em; }
|
69 |
-
#menu p, #tables { padding: .8em 1em; margin: 0; border-bottom: 1px solid #ccc; }
|
70 |
-
#tables li{ list-style: none; }
|
71 |
#dbs { overflow: hidden; }
|
72 |
#logins, #tables { white-space: nowrap; overflow: auto; }
|
73 |
#logins a, #tables a, #tables span { background: #fff; }
|
66 |
.loadmore { margin-left: 1ex; }
|
67 |
/* .edit used in designs */
|
68 |
#menu { position: absolute; margin: 10px 0 0; padding: 0 0 30px 0; top: 2em; left: 0; width: 19em; }
|
69 |
+
#menu p, #logins, #tables { padding: .8em 1em; margin: 0; border-bottom: 1px solid #ccc; }
|
70 |
+
#logins li, #tables li { list-style: none; }
|
71 |
#dbs { overflow: hidden; }
|
72 |
#logins, #tables { white-space: nowrap; overflow: auto; }
|
73 |
#logins a, #tables a, #tables span { background: #fff; }
|
adminer/adminer/adminer/static/editing.js
CHANGED
@@ -15,7 +15,11 @@ function bodyLoad(version, maria) {
|
|
15 |
key = 0;
|
16 |
if (maria) {
|
17 |
for (var i = 1; i < obj.length; i++) {
|
18 |
-
obj[i] = obj[i]
|
|
|
|
|
|
|
|
|
19 |
}
|
20 |
}
|
21 |
}
|
@@ -78,6 +82,18 @@ function messagesPrint() {
|
|
78 |
|
79 |
|
80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
var dbCtrl;
|
82 |
var dbPrevious = {};
|
83 |
|
@@ -444,14 +460,6 @@ function columnShow(checked, column) {
|
|
444 |
}
|
445 |
}
|
446 |
|
447 |
-
/** Hide column with default values in narrow window
|
448 |
-
*/
|
449 |
-
function editingHideDefaults() {
|
450 |
-
if (innerWidth < document.documentElement.scrollWidth) {
|
451 |
-
qs('#form')['defaults'].checked = false;
|
452 |
-
}
|
453 |
-
}
|
454 |
-
|
455 |
/** Display partition options
|
456 |
* @this HTMLSelectElement
|
457 |
*/
|
@@ -473,14 +481,14 @@ function partitionNameChange() {
|
|
473 |
}
|
474 |
|
475 |
/** Show or hide comment fields
|
|
|
476 |
* @param [boolean] whether to focus Comment if checked
|
477 |
-
* @this HTMLInputElement
|
478 |
*/
|
479 |
-
function editingCommentsClick(focus) {
|
480 |
-
var comment =
|
481 |
-
columnShow(
|
482 |
-
alterClass(comment, 'hidden', !
|
483 |
-
if (focus &&
|
484 |
comment.focus();
|
485 |
}
|
486 |
}
|
@@ -509,8 +517,8 @@ function dumpClick(event) {
|
|
509 |
* @this HTMLSelectElement
|
510 |
*/
|
511 |
function foreignAddRow() {
|
512 |
-
this.onchange = function () { };
|
513 |
var row = cloneNode(parentTag(this, 'tr'));
|
|
|
514 |
var selects = qsa('select', row);
|
515 |
for (var i=0; i < selects.length; i++) {
|
516 |
selects[i].name = selects[i].name.replace(/\]/, '1$&');
|
@@ -525,8 +533,8 @@ function foreignAddRow() {
|
|
525 |
* @this HTMLSelectElement
|
526 |
*/
|
527 |
function indexesAddRow() {
|
528 |
-
this.onchange = function () { };
|
529 |
var row = cloneNode(parentTag(this, 'tr'));
|
|
|
530 |
var selects = qsa('select', row);
|
531 |
for (var i=0; i < selects.length; i++) {
|
532 |
selects[i].name = selects[i].name.replace(/indexes\[\d+/, '$&1');
|
@@ -595,6 +603,23 @@ function indexesAddColumn(prefix) {
|
|
595 |
|
596 |
|
597 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
598 |
/** Handle changing trigger time or event
|
599 |
* @param RegExp
|
600 |
* @param string
|
15 |
key = 0;
|
16 |
if (maria) {
|
17 |
for (var i = 1; i < obj.length; i++) {
|
18 |
+
obj[i] = obj[i]
|
19 |
+
.replace(/\.html/, '/')
|
20 |
+
.replace(/(numeric)(-type-overview)/, '$1-data$2')
|
21 |
+
.replace(/#statvar_.*/, '#$$1')
|
22 |
+
;
|
23 |
}
|
24 |
}
|
25 |
}
|
82 |
|
83 |
|
84 |
|
85 |
+
/** Hide or show some login rows for selected driver
|
86 |
+
* @param HTMLSelectElement
|
87 |
+
*/
|
88 |
+
function loginDriver(driver) {
|
89 |
+
var trs = parentTag(driver, 'table').rows;
|
90 |
+
var disabled = /sqlite/.test(selectValue(driver));
|
91 |
+
alterClass(trs[1], 'hidden', disabled); // 1 - row with server
|
92 |
+
trs[1].getElementsByTagName('input')[0].disabled = disabled;
|
93 |
+
}
|
94 |
+
|
95 |
+
|
96 |
+
|
97 |
var dbCtrl;
|
98 |
var dbPrevious = {};
|
99 |
|
460 |
}
|
461 |
}
|
462 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
463 |
/** Display partition options
|
464 |
* @this HTMLSelectElement
|
465 |
*/
|
481 |
}
|
482 |
|
483 |
/** Show or hide comment fields
|
484 |
+
* @param HTMLInputElement
|
485 |
* @param [boolean] whether to focus Comment if checked
|
|
|
486 |
*/
|
487 |
+
function editingCommentsClick(el, focus) {
|
488 |
+
var comment = el.form['Comment'];
|
489 |
+
columnShow(el.checked, 6);
|
490 |
+
alterClass(comment, 'hidden', !el.checked);
|
491 |
+
if (focus && el.checked) {
|
492 |
comment.focus();
|
493 |
}
|
494 |
}
|
517 |
* @this HTMLSelectElement
|
518 |
*/
|
519 |
function foreignAddRow() {
|
|
|
520 |
var row = cloneNode(parentTag(this, 'tr'));
|
521 |
+
this.onchange = function () { };
|
522 |
var selects = qsa('select', row);
|
523 |
for (var i=0; i < selects.length; i++) {
|
524 |
selects[i].name = selects[i].name.replace(/\]/, '1$&');
|
533 |
* @this HTMLSelectElement
|
534 |
*/
|
535 |
function indexesAddRow() {
|
|
|
536 |
var row = cloneNode(parentTag(this, 'tr'));
|
537 |
+
this.onchange = function () { };
|
538 |
var selects = qsa('select', row);
|
539 |
for (var i=0; i < selects.length; i++) {
|
540 |
selects[i].name = selects[i].name.replace(/indexes\[\d+/, '$&1');
|
603 |
|
604 |
|
605 |
|
606 |
+
/** Updates the form action
|
607 |
+
* @param HTMLFormElement
|
608 |
+
* @param string
|
609 |
+
*/
|
610 |
+
function sqlSubmit(form, root) {
|
611 |
+
if (encodeURIComponent(form['query'].value).length < 2e3) {
|
612 |
+
form.action = root
|
613 |
+
+ '&sql=' + encodeURIComponent(form['query'].value)
|
614 |
+
+ (form['limit'].value ? '&limit=' + +form['limit'].value : '')
|
615 |
+
+ (form['error_stops'].checked ? '&error_stops=1' : '')
|
616 |
+
+ (form['only_errors'].checked ? '&only_errors=1' : '')
|
617 |
+
;
|
618 |
+
}
|
619 |
+
}
|
620 |
+
|
621 |
+
|
622 |
+
|
623 |
/** Handle changing trigger time or event
|
624 |
* @param RegExp
|
625 |
* @param string
|
adminer/adminer/adminer/static/functions.js
CHANGED
@@ -143,7 +143,7 @@ function selectValue(select) {
|
|
143 |
*/
|
144 |
function isTag(el, tag) {
|
145 |
var re = new RegExp('^(' + tag + ')$', 'i');
|
146 |
-
return re.test(el.tagName);
|
147 |
}
|
148 |
|
149 |
/** Get parent node with specified tag name
|
@@ -491,6 +491,9 @@ function bodyKeydown(event, button) {
|
|
491 |
if (button) {
|
492 |
target.form[button].click();
|
493 |
} else {
|
|
|
|
|
|
|
494 |
target.form.submit();
|
495 |
}
|
496 |
target.focus();
|
@@ -540,20 +543,22 @@ function editingKeydown(event) {
|
|
540 |
*/
|
541 |
function functionChange() {
|
542 |
var input = this.form[this.name.replace(/^function/, 'fields')];
|
543 |
-
if (
|
544 |
-
if (
|
545 |
-
input.origType
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
|
|
|
|
554 |
}
|
|
|
555 |
}
|
556 |
-
oninput({target: input});
|
557 |
helpClose();
|
558 |
}
|
559 |
|
@@ -702,7 +707,7 @@ function selectClick(event, text, warning) {
|
|
702 |
}
|
703 |
};
|
704 |
var pos = event.rangeOffset;
|
705 |
-
var value = td.firstChild.alt || td.textContent || td.innerText;
|
706 |
input.style.width = Math.max(td.clientWidth - 14, 20) + 'px'; // 14 = 2 * (td.border + td.padding + input.border)
|
707 |
if (text) {
|
708 |
var rows = 1;
|
143 |
*/
|
144 |
function isTag(el, tag) {
|
145 |
var re = new RegExp('^(' + tag + ')$', 'i');
|
146 |
+
return el && re.test(el.tagName);
|
147 |
}
|
148 |
|
149 |
/** Get parent node with specified tag name
|
491 |
if (button) {
|
492 |
target.form[button].click();
|
493 |
} else {
|
494 |
+
if (target.form.onsubmit) {
|
495 |
+
target.form.onsubmit();
|
496 |
+
}
|
497 |
target.form.submit();
|
498 |
}
|
499 |
target.focus();
|
543 |
*/
|
544 |
function functionChange() {
|
545 |
var input = this.form[this.name.replace(/^function/, 'fields')];
|
546 |
+
if (input) { // undefined with the set data type
|
547 |
+
if (selectValue(this)) {
|
548 |
+
if (input.origType === undefined) {
|
549 |
+
input.origType = input.type;
|
550 |
+
input.origMaxLength = input.getAttribute('data-maxlength');
|
551 |
+
}
|
552 |
+
input.removeAttribute('data-maxlength');
|
553 |
+
input.type = 'text';
|
554 |
+
} else if (input.origType) {
|
555 |
+
input.type = input.origType;
|
556 |
+
if (input.origMaxLength >= 0) {
|
557 |
+
input.setAttribute('data-maxlength', input.origMaxLength);
|
558 |
+
}
|
559 |
}
|
560 |
+
oninput({target: input});
|
561 |
}
|
|
|
562 |
helpClose();
|
563 |
}
|
564 |
|
707 |
}
|
708 |
};
|
709 |
var pos = event.rangeOffset;
|
710 |
+
var value = (td.firstChild && td.firstChild.alt) || td.textContent || td.innerText;
|
711 |
input.style.width = Math.max(td.clientWidth - 14, 20) + 'px'; // 14 = 2 * (td.border + td.padding + input.border)
|
712 |
if (text) {
|
713 |
var rows = 1;
|
adminer/adminer/adminer/trigger.inc.php
CHANGED
@@ -33,13 +33,13 @@ page_header(($name != "" ? lang('Alter trigger') . ": " . h($name) : lang('Creat
|
|
33 |
?>
|
34 |
|
35 |
<form action="" method="post" id="form">
|
36 |
-
<table cellspacing="0">
|
37 |
<tr><th><?php echo lang('Time'); ?><td><?php echo html_select("Timing", $trigger_options["Timing"], $row["Timing"], "triggerChange(/^" . preg_quote($TABLE, "/") . "_[ba][iud]$/, '" . js_escape($TABLE) . "', this.form);"); ?>
|
38 |
<tr><th><?php echo lang('Event'); ?><td><?php echo html_select("Event", $trigger_options["Event"], $row["Event"], "this.form['Timing'].onchange();"); ?>
|
39 |
<?php echo (in_array("UPDATE OF", $trigger_options["Event"]) ? " <input name='Of' value='" . h($row["Of"]) . "' class='hidden'>": ""); ?>
|
40 |
<tr><th><?php echo lang('Type'); ?><td><?php echo html_select("Type", $trigger_options["Type"], $row["Type"]); ?>
|
41 |
</table>
|
42 |
-
<p><?php echo lang('Name'); ?>: <input name="Trigger" value="<?php echo h($row["Trigger"]); ?>" maxlength="64" autocapitalize="off">
|
43 |
<?php echo script("qs('#form')['Timing'].onchange();"); ?>
|
44 |
<p><?php textarea("Statement", $row["Statement"]); ?>
|
45 |
<p>
|
33 |
?>
|
34 |
|
35 |
<form action="" method="post" id="form">
|
36 |
+
<table cellspacing="0" class="layout">
|
37 |
<tr><th><?php echo lang('Time'); ?><td><?php echo html_select("Timing", $trigger_options["Timing"], $row["Timing"], "triggerChange(/^" . preg_quote($TABLE, "/") . "_[ba][iud]$/, '" . js_escape($TABLE) . "', this.form);"); ?>
|
38 |
<tr><th><?php echo lang('Event'); ?><td><?php echo html_select("Event", $trigger_options["Event"], $row["Event"], "this.form['Timing'].onchange();"); ?>
|
39 |
<?php echo (in_array("UPDATE OF", $trigger_options["Event"]) ? " <input name='Of' value='" . h($row["Of"]) . "' class='hidden'>": ""); ?>
|
40 |
<tr><th><?php echo lang('Type'); ?><td><?php echo html_select("Type", $trigger_options["Type"], $row["Type"]); ?>
|
41 |
</table>
|
42 |
+
<p><?php echo lang('Name'); ?>: <input name="Trigger" value="<?php echo h($row["Trigger"]); ?>" data-maxlength="64" autocapitalize="off">
|
43 |
<?php echo script("qs('#form')['Timing'].onchange();"); ?>
|
44 |
<p><?php textarea("Statement", $row["Statement"]); ?>
|
45 |
<p>
|
adminer/adminer/adminer/user.inc.php
CHANGED
@@ -131,9 +131,9 @@ if ($_POST) {
|
|
131 |
|
132 |
?>
|
133 |
<form action="" method="post">
|
134 |
-
<table cellspacing="0">
|
135 |
-
<tr><th><?php echo lang('Server'); ?><td><input name="host" maxlength="60" value="<?php echo h($row["host"]); ?>" autocapitalize="off">
|
136 |
-
<tr><th><?php echo lang('Username'); ?><td><input name="user" maxlength="
|
137 |
<tr><th><?php echo lang('Password'); ?><td><input name="pass" id="pass" value="<?php echo h($row["pass"]); ?>" autocomplete="new-password">
|
138 |
<?php if (!$row["hashed"]) { echo script("typePassword(qs('#pass'));"); } ?>
|
139 |
<?php echo checkbox("hashed", 1, $row["hashed"], lang('Hashed'), "typePassword(this.form['pass'], this.checked);"); ?>
|
131 |
|
132 |
?>
|
133 |
<form action="" method="post">
|
134 |
+
<table cellspacing="0" class="layout">
|
135 |
+
<tr><th><?php echo lang('Server'); ?><td><input name="host" data-maxlength="60" value="<?php echo h($row["host"]); ?>" autocapitalize="off">
|
136 |
+
<tr><th><?php echo lang('Username'); ?><td><input name="user" data-maxlength="80" value="<?php echo h($row["user"]); ?>" autocapitalize="off">
|
137 |
<tr><th><?php echo lang('Password'); ?><td><input name="pass" id="pass" value="<?php echo h($row["pass"]); ?>" autocomplete="new-password">
|
138 |
<?php if (!$row["hashed"]) { echo script("typePassword(qs('#pass'));"); } ?>
|
139 |
<?php echo checkbox("hashed", 1, $row["hashed"], lang('Hashed'), "typePassword(this.form['pass'], this.checked);"); ?>
|
adminer/adminer/adminer/view.inc.php
CHANGED
@@ -48,7 +48,7 @@ page_header(($TABLE != "" ? lang('Alter view') : lang('Create view')), $error, a
|
|
48 |
?>
|
49 |
|
50 |
<form action="" method="post">
|
51 |
-
<p><?php echo lang('Name'); ?>: <input name="name" value="<?php echo h($row["name"]); ?>" maxlength="64" autocapitalize="off">
|
52 |
<?php echo (support("materializedview") ? " " . checkbox("materialized", 1, $row["materialized"], lang('Materialized view')) : ""); ?>
|
53 |
<p><?php textarea("select", $row["select"]); ?>
|
54 |
<p>
|
48 |
?>
|
49 |
|
50 |
<form action="" method="post">
|
51 |
+
<p><?php echo lang('Name'); ?>: <input name="name" value="<?php echo h($row["name"]); ?>" data-maxlength="64" autocapitalize="off">
|
52 |
<?php echo (support("materializedview") ? " " . checkbox("materialized", 1, $row["materialized"], lang('Materialized view')) : ""); ?>
|
53 |
<p><?php textarea("select", $row["select"]); ?>
|
54 |
<p>
|
adminer/adminer/editor/db.inc.php
CHANGED
@@ -7,6 +7,7 @@ if ($adminer->homepage()) {
|
|
7 |
if ($_POST["query"] != "") {
|
8 |
search_tables();
|
9 |
}
|
|
|
10 |
echo "<table cellspacing='0' class='nowrap checkable'>\n";
|
11 |
echo script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");
|
12 |
echo '<thead><tr class="wrap">';
|
@@ -26,6 +27,7 @@ if ($adminer->homepage()) {
|
|
26 |
}
|
27 |
|
28 |
echo "</table>\n";
|
|
|
29 |
echo "</form>\n";
|
30 |
echo script("tableCheck();");
|
31 |
}
|
7 |
if ($_POST["query"] != "") {
|
8 |
search_tables();
|
9 |
}
|
10 |
+
echo "<div class='scrollable'>\n";
|
11 |
echo "<table cellspacing='0' class='nowrap checkable'>\n";
|
12 |
echo script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");
|
13 |
echo '<thead><tr class="wrap">';
|
27 |
}
|
28 |
|
29 |
echo "</table>\n";
|
30 |
+
echo "</div>\n";
|
31 |
echo "</form>\n";
|
32 |
echo script("tableCheck();");
|
33 |
}
|
adminer/adminer/editor/include/adminer.inc.php
CHANGED
@@ -71,9 +71,9 @@ class Adminer {
|
|
71 |
}
|
72 |
|
73 |
function loginForm() {
|
74 |
-
echo "<table cellspacing='0'>\n";
|
75 |
-
echo $this->loginFormField('username', '<tr><th>' . lang('Username') . '<td>', '<input type="hidden" name="auth[driver]" value="server"><input name="auth[username]" id="username" value="' . h($_GET["username"]) . '" autocapitalize="off">' . script("focus(qs('#username'));"));
|
76 |
-
echo $this->loginFormField('password', '<tr><th>' . lang('Password') . '<td>', '<input type="password" name="auth[password]">' . "\n");
|
77 |
echo "</table>\n";
|
78 |
echo "<p><input type='submit' value='" . lang('Login') . "'>\n";
|
79 |
echo checkbox("auth[permanent]", 1, $_COOKIE["adminer_permanent"], lang('Permanent login')) . "\n";
|
@@ -485,7 +485,7 @@ qsl('div').onclick = whisperClick;", "")
|
|
485 |
);
|
486 |
}
|
487 |
if (like_bool($field)) {
|
488 |
-
return '<input type="checkbox" value="
|
489 |
}
|
490 |
$hint = "";
|
491 |
if (preg_match('~time~', $field["type"])) {
|
@@ -517,7 +517,7 @@ qsl('div').onclick = whisperClick;", "")
|
|
517 |
}
|
518 |
$return = ($field["type"] == "bit" && preg_match('~^[0-9]+$~', $value) ? $return : q($return));
|
519 |
if ($value == "" && like_bool($field)) {
|
520 |
-
$return = "0";
|
521 |
} elseif ($value == "" && ($field["null"] || !preg_match('~char|text~', $field["type"]))) {
|
522 |
$return = "NULL";
|
523 |
} elseif (preg_match('~^(md5|sha1)$~', $function)) {
|
@@ -586,11 +586,11 @@ qsl('div').onclick = whisperClick;", "")
|
|
586 |
foreach ($servers[""] as $username => $password) {
|
587 |
if ($password !== null) {
|
588 |
if ($first) {
|
589 |
-
echo "<
|
590 |
echo script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");
|
591 |
$first = false;
|
592 |
}
|
593 |
-
echo "<a href='" . h(auth_url($vendor, "", $username)) . "'>" . ($username != "" ? h($username) : "<i>" . lang('empty') . "</i>") . "</a
|
594 |
}
|
595 |
}
|
596 |
}
|
71 |
}
|
72 |
|
73 |
function loginForm() {
|
74 |
+
echo "<table cellspacing='0' class='layout'>\n";
|
75 |
+
echo $this->loginFormField('username', '<tr><th>' . lang('Username') . '<td>', '<input type="hidden" name="auth[driver]" value="server"><input name="auth[username]" id="username" value="' . h($_GET["username"]) . '" autocomplete="username" autocapitalize="off">' . script("focus(qs('#username'));"));
|
76 |
+
echo $this->loginFormField('password', '<tr><th>' . lang('Password') . '<td>', '<input type="password" name="auth[password]" autocomplete="current-password">' . "\n");
|
77 |
echo "</table>\n";
|
78 |
echo "<p><input type='submit' value='" . lang('Login') . "'>\n";
|
79 |
echo checkbox("auth[permanent]", 1, $_COOKIE["adminer_permanent"], lang('Permanent login')) . "\n";
|
485 |
);
|
486 |
}
|
487 |
if (like_bool($field)) {
|
488 |
+
return '<input type="checkbox" value="1"' . (preg_match('~^(1|t|true|y|yes|on)$~i', $value) ? ' checked' : '') . "$attrs>";
|
489 |
}
|
490 |
$hint = "";
|
491 |
if (preg_match('~time~', $field["type"])) {
|
517 |
}
|
518 |
$return = ($field["type"] == "bit" && preg_match('~^[0-9]+$~', $value) ? $return : q($return));
|
519 |
if ($value == "" && like_bool($field)) {
|
520 |
+
$return = "'0'";
|
521 |
} elseif ($value == "" && ($field["null"] || !preg_match('~char|text~', $field["type"]))) {
|
522 |
$return = "NULL";
|
523 |
} elseif (preg_match('~^(md5|sha1)$~', $function)) {
|
586 |
foreach ($servers[""] as $username => $password) {
|
587 |
if ($password !== null) {
|
588 |
if ($first) {
|
589 |
+
echo "<ul id='logins'>";
|
590 |
echo script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");
|
591 |
$first = false;
|
592 |
}
|
593 |
+
echo "<li><a href='" . h(auth_url($vendor, "", $username)) . "'>" . ($username != "" ? h($username) : "<i>" . lang('empty') . "</i>") . "</a>\n";
|
594 |
}
|
595 |
}
|
596 |
}
|
adminer/adminer/editor/static/editing.js
CHANGED
@@ -55,8 +55,8 @@ function whisperClick(event) {
|
|
55 |
* @this HTMLInputElement
|
56 |
*/
|
57 |
function emailFileChange() {
|
58 |
-
this.onchange = function () { };
|
59 |
var el = this.cloneNode(true);
|
|
|
60 |
el.value = '';
|
61 |
this.parentNode.appendChild(el);
|
62 |
}
|
55 |
* @this HTMLInputElement
|
56 |
*/
|
57 |
function emailFileChange() {
|
|
|
58 |
var el = this.cloneNode(true);
|
59 |
+
this.onchange = function () { };
|
60 |
el.value = '';
|
61 |
this.parentNode.appendChild(el);
|
62 |
}
|
adminer/adminer/plugins/slugify.php
CHANGED
@@ -34,7 +34,7 @@ class AdminerSlugify {
|
|
34 |
}
|
35 |
$slug = $slugify[$field["field"]];
|
36 |
if ($slug !== null) {
|
37 |
-
return "<input value='" . h($value) . "' maxlength='$field[length]' size='40'$attrs>"
|
38 |
. script("qsl('input').onchange = function () {
|
39 |
var find = '$this->from';
|
40 |
var repl = '$this->to';
|
34 |
}
|
35 |
$slug = $slugify[$field["field"]];
|
36 |
if ($slug !== null) {
|
37 |
+
return "<input value='" . h($value) . "' data-maxlength='$field[length]' size='40'$attrs>"
|
38 |
. script("qsl('input').onchange = function () {
|
39 |
var find = '$this->from';
|
40 |
var repl = '$this->to';
|
adminer/adminer/plugins/tables-filter.php
CHANGED
@@ -53,7 +53,7 @@ function tablesFilterInput() {
|
|
53 |
tablesFilterTimeout = window.setTimeout(tablesFilter, 200);
|
54 |
}
|
55 |
|
56 |
-
|
57 |
var db = qs('#dbs').querySelector('select');
|
58 |
db = db.options[db.selectedIndex].text;
|
59 |
if (db == sessionStorage.getItem('adminer_tables_filter_db') && sessionStorage.getItem('adminer_tables_filter')){
|
@@ -61,7 +61,7 @@ if (sessionStorage){
|
|
61 |
tablesFilter();
|
62 |
}
|
63 |
sessionStorage.setItem('adminer_tables_filter_db', db);
|
64 |
-
}
|
65 |
</script>
|
66 |
<p class="jsonly"><input id="filter-field" autocomplete="off"><?php echo script("qs('#filter-field').oninput = tablesFilterInput;"); ?>
|
67 |
<?php
|
53 |
tablesFilterTimeout = window.setTimeout(tablesFilter, 200);
|
54 |
}
|
55 |
|
56 |
+
sessionStorage && document.addEventListener('DOMContentLoaded', function () {
|
57 |
var db = qs('#dbs').querySelector('select');
|
58 |
db = db.options[db.selectedIndex].text;
|
59 |
if (db == sessionStorage.getItem('adminer_tables_filter_db') && sessionStorage.getItem('adminer_tables_filter')){
|
61 |
tablesFilter();
|
62 |
}
|
63 |
sessionStorage.setItem('adminer_tables_filter_db', db);
|
64 |
+
});
|
65 |
</script>
|
66 |
<p class="jsonly"><input id="filter-field" autocomplete="off"><?php echo script("qs('#filter-field').oninput = tablesFilterInput;"); ?>
|
67 |
<?php
|
ari-adminer.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: ARI Adminer
|
4 |
Plugin URI: http://wp-quiz.ari-soft.com/plugins/wordpress-adminer.html
|
5 |
Description: Powerful, compact and easy to use database manager plugin for WordPress.
|
6 |
-
Version: 1.1.
|
7 |
Author: ARI Soft
|
8 |
Author URI: http://www.ari-soft.com
|
9 |
Text Domain: ari-adminer
|
3 |
Plugin Name: ARI Adminer
|
4 |
Plugin URI: http://wp-quiz.ari-soft.com/plugins/wordpress-adminer.html
|
5 |
Description: Powerful, compact and easy to use database manager plugin for WordPress.
|
6 |
+
Version: 1.1.13
|
7 |
Author: ARI Soft
|
8 |
Author URI: http://www.ari-soft.com
|
9 |
Text Domain: ari-adminer
|
includes/defines.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
define( 'ARIADMINER_VERSION', '1.1.
|
3 |
define( 'ARIADMINER_SLUG', 'ari-adminer' );
|
4 |
define( 'ARIADMINER_ASSETS_URL', ARIADMINER_URL . 'assets/' );
|
5 |
define( 'ARIADMINER_VERSION_OPTION', 'ari_adminer' );
|
1 |
<?php
|
2 |
+
define( 'ARIADMINER_VERSION', '1.1.13' );
|
3 |
define( 'ARIADMINER_SLUG', 'ari-adminer' );
|
4 |
define( 'ARIADMINER_ASSETS_URL', ARIADMINER_URL . 'assets/' );
|
5 |
define( 'ARIADMINER_VERSION_OPTION', 'ari_adminer' );
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: arisoft
|
|
3 |
Donate link: http://wp-quiz.ari-soft.com/plugins/wordpress-adminer.html
|
4 |
Tags: adminer, sql, database, mysql, report, sqlite, table, postgresql, dump, backup, import, export, phpmyadmin
|
5 |
Requires at least: 3.4
|
6 |
-
Tested up to:
|
7 |
-
Stable tag: 1.1.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -74,6 +74,9 @@ Sure, it is available [here](http://www.ari-soft.com/docs/wordpress/ari-adminer/
|
|
74 |
|
75 |
== Changelog ==
|
76 |
|
|
|
|
|
|
|
77 |
= 1.1.12 =
|
78 |
* Update Adminer to v. 4.6.3
|
79 |
|
@@ -145,6 +148,9 @@ Sure, it is available [here](http://www.ari-soft.com/docs/wordpress/ari-adminer/
|
|
145 |
|
146 |
== Upgrade Notice ==
|
147 |
|
|
|
|
|
|
|
148 |
= 1.1.12 =
|
149 |
* Update Adminer to v. 4.6.3
|
150 |
|
3 |
Donate link: http://wp-quiz.ari-soft.com/plugins/wordpress-adminer.html
|
4 |
Tags: adminer, sql, database, mysql, report, sqlite, table, postgresql, dump, backup, import, export, phpmyadmin
|
5 |
Requires at least: 3.4
|
6 |
+
Tested up to: 5.1.1
|
7 |
+
Stable tag: 1.1.13
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
74 |
|
75 |
== Changelog ==
|
76 |
|
77 |
+
= 1.1.13 =
|
78 |
+
* Update Adminer to v. .4.7.1
|
79 |
+
|
80 |
= 1.1.12 =
|
81 |
* Update Adminer to v. 4.6.3
|
82 |
|
148 |
|
149 |
== Upgrade Notice ==
|
150 |
|
151 |
+
= 1.1.13 =
|
152 |
+
* Update Adminer to v. .4.7.1
|
153 |
+
|
154 |
= 1.1.12 =
|
155 |
* Update Adminer to v. 4.6.3
|
156 |
|