1
0
mirror of https://github.com/vrana/adminer.git synced 2025-09-05 20:02:54 +02:00

Compare commits

..

45 Commits

Author SHA1 Message Date
Jakub Vrana
8bf02f2ce1 Release 3.6.2 2012-12-20 21:16:39 -08:00
Jakub Vrana
00b9e2c010 Fix switching language in test 2012-12-20 21:13:47 -08:00
Jakub Vrana
cdec2c9292 Avoid double escaping of links 2012-12-20 21:09:12 -08:00
Jakub Vrana
ce83605174 Display warning for missing UPDATE privilege (bug #3466883) 2012-12-15 23:14:11 -08:00
Jakub Vrana
0069d9f13e Use database name in creating new users 2012-12-15 22:33:18 -08:00
Jakub Vrana
ab20c18c2e Fix hitting backtrack limit in import (thanks to Tomas Votruba) 2012-12-15 22:07:42 -08:00
Jakub Vrana
0ac5a666b4 Support NULL in routine calls (bug #3541326) 2012-12-12 10:58:13 -08:00
Jakub Vrana
ed71d4a1f5 Update design 2012-12-12 10:56:01 -08:00
Jakub Vrana
2703eb960a Allow editing values with significant binary column (bug #3572781) 2012-12-11 21:25:56 -08:00
Halil Ozgur
8c91fd5966 Turkish translation - fixed translations and added missing ones, according to TDK (Turkish authority for language), community common sense and ease of use. 2012-12-11 21:00:20 -08:00
Jakub Vrana
f7f553a947 Escape links 2012-12-05 15:29:57 -08:00
Jakub Vrana
2fb1ebc7f1 HTML5 input fields 2012-12-05 13:17:42 -08:00
Jakub Vrana
ef723fb348 Update changes.txt 2012-12-01 16:00:38 -08:00
Jakub Vrana
ebdecd288b Work with mbstring.func_overload (#3572361) 2012-12-01 15:57:04 -08:00
Jakub Vrana
998ef45b08 Update design 2012-12-01 15:14:14 -08:00
Jakub Vrana
d5d8a6c8bc Quote MS SQL database name (bug #3576248) 2012-12-01 15:11:01 -08:00
Jakub Vrana
ee8ffa575f Prolong comment length (thanks to Martin Dzubak) 2012-12-01 15:00:37 -08:00
Jakub Vrana
d2ee9d85b1 Print CSRF token without import (bug #3582462) 2012-12-01 12:13:55 -08:00
Jakub Vrana
a5548ce823 Display date in SQL history (thanks to trestna smradlavice) 2012-12-01 10:01:09 -08:00
Jakub Vrana
697034f329 Don't edit for Ctrl+click on link 2012-11-01 13:42:08 -07:00
Jakub Vrana
cb1d7d459b Don't display edit warning without Ctrl 2012-11-01 13:33:13 -07:00
Jan Dolecek
fa4026bdbd removed CodeMirror dependancy
It's not used anyway.
And also, URL of the repo has changed so it only breaks stuff.
2012-10-20 10:37:39 -07:00
Jakub Vrana
0408c21d07 Fix process list in PostgreSQL 9.2 2012-10-20 09:58:56 -07:00
Jakub Vrana
7015fd9706 Don't select row on double click 2012-10-04 00:42:56 -07:00
Jakub Vrana
7865695a86 Support xx in lang.php 2012-10-04 00:25:22 -07:00
Jakub Vrana
dad8996c01 Add missing translations to xx 2012-10-04 00:24:37 -07:00
Jakub Vrana
0614260544 Edit values by Ctrl+click instead of double click 2012-10-04 00:24:25 -07:00
Jakub Vrana
da08af5eb9 Changes 2012-09-26 21:45:54 -07:00
Jakub Vrana
75c430a986 Revert "Unuse binary characters"
This reverts commit f3c59bb3a5.
2012-09-26 21:45:04 -07:00
Jakub Vrana
7ce485bc78 Comment 2012-09-22 12:26:08 -07:00
Jakub Vrana
8ec3e5fcda Display table default values on wide screens 2012-09-22 12:24:16 -07:00
Nik Nyby
6705fb2993 Add timestamptz to PostgreSQL 2012-09-22 11:07:15 -07:00
Jakub Vrana
29e65523d3 Compile only one project at a time 2012-09-22 07:59:40 -07:00
Jakub Vrana
b684569f7c Shorten varchar fields 2012-09-22 07:34:51 -07:00
Jakub Vrana
996bfc396b Fix switching language on first load 2012-09-22 06:22:44 -07:00
Jakub Vrana
f3c59bb3a5 Unuse binary characters 2012-09-22 06:12:56 -07:00
Jakub Vrana
906345ad81 Compress favicon 2012-09-22 05:32:06 -07:00
Jakub Vrana
4024f34d79 Increase <th> padding to simplify selecting text 2012-09-19 16:28:58 -07:00
Jakub Vrana
2264e09021 Shorten NUL byte 2012-09-19 15:43:02 -07:00
Jakub Vrana
9a30f14797 Update design 2012-09-17 21:12:32 -07:00
Jakub Vrana
189895ad0f Develop 2012-09-17 15:45:33 -07:00
Jakub Vrana
86b0fbf529 Release 3.6.1 2012-09-17 15:33:09 -07:00
Jakub Vrana
a89ab34a8e Fix compiled version on PHP with multibyte support 2012-09-17 15:32:28 -07:00
Jakub Vrana
534f4ee5cc Fix doc comments 2012-09-16 06:43:55 -07:00
Jakub Vrana
55c757a59a Develop 2012-09-16 06:43:16 -07:00
62 changed files with 427 additions and 323 deletions

3
.gitmodules vendored
View File

@@ -16,6 +16,3 @@
[submodule "JsShrink"] [submodule "JsShrink"]
path = externals/JsShrink path = externals/JsShrink
url = git://github.com/vrana/JsShrink.git url = git://github.com/vrana/JsShrink.git
[submodule "CodeMirror2"]
path = externals/CodeMirror2
url = git://github.com/marijnh/CodeMirror2.git

View File

@@ -183,8 +183,9 @@ edit_fields($row["fields"], $collations, "TABLE", $suhosin, $foreign_keys, $comm
</table> </table>
<p> <p>
<?php echo lang('Auto Increment'); ?>: <input name="Auto_increment" size="6" value="<?php echo h($row["Auto_increment"]); ?>"> <?php echo lang('Auto Increment'); ?>: <input name="Auto_increment" size="6" value="<?php echo h($row["Auto_increment"]); ?>">
<label class="jsonly"><input type="checkbox" name="defaults" value="1"<?php echo ($_POST["defaults"] ? " checked" : ""); ?> onclick="columnShow(this.checked, 5);"><?php echo lang('Default values'); ?></label> <label class="jsonly"><input type="checkbox" id="defaults" name="defaults" value="1" checked onclick="columnShow(this.checked, 5);"><?php echo lang('Default values'); ?></label>
<?php echo (support("comment") ? checkbox("comments", 1, $comments, lang('Comment'), "columnShow(this.checked, 6); toggle('Comment'); if (this.checked) this.form['Comment'].focus();", true) . ' <input id="Comment" name="Comment" value="' . h($row["Comment"]) . '" maxlength="60"' . ($comments ? '' : ' class="hidden"') . '>' : ''); ?> <?php if (!$_POST["defaults"]) { ?><script type="text/javascript">editingHideDefaults()</script><?php } ?>
<?php echo (support("comment") ? checkbox("comments", 1, $comments, lang('Comment'), "columnShow(this.checked, 6); toggle('Comment'); if (this.checked) this.form['Comment'].focus();", true) . ' <input id="Comment" name="Comment" value="' . h($row["Comment"]) . '" maxlength="' . ($connection->server_info >= 5.5 ? 2048 : 60) . '"' . ($comments ? '' : ' class="hidden"') . '>' : ''); ?>
<p> <p>
<input type="submit" value="<?php echo lang('Save'); ?>"> <input type="submit" value="<?php echo lang('Save'); ?>">
<?php if ($_GET["create"] != "") { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo confirm(); ?>><?php } ?> <?php if ($_GET["create"] != "") { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo confirm(); ?>><?php } ?>
@@ -197,7 +198,7 @@ if (support("partitioning")) {
<p> <p>
<?php echo html_select("partition_by", array(-1 => "") + $partition_by, $row["partition_by"], "partitionByChange(this);"); ?> <?php echo html_select("partition_by", array(-1 => "") + $partition_by, $row["partition_by"], "partitionByChange(this);"); ?>
(<input name="partition" value="<?php echo h($row["partition"]); ?>">) (<input name="partition" value="<?php echo h($row["partition"]); ?>">)
<?php echo lang('Partitions'); ?>: <input name="partitions" size="2" value="<?php echo h($row["partitions"]); ?>"<?php echo ($partition_table || !$row["partition_by"] ? " class='hidden'" : ""); ?>> <?php echo lang('Partitions'); ?>: <input type="number" name="partitions" class="size" value="<?php echo h($row["partitions"]); ?>"<?php echo ($partition_table || !$row["partition_by"] ? " class='hidden'" : ""); ?>>
<table cellspacing="0" id="partition-table"<?php echo ($partition_table ? "" : " class='hidden'"); ?>> <table cellspacing="0" id="partition-table"<?php echo ($partition_table ? "" : " class='hidden'"); ?>>
<thead><tr><th><?php echo lang('Partition name'); ?><th><?php echo lang('Values'); ?></thead> <thead><tr><th><?php echo lang('Partition name'); ?><th><?php echo lang('Values'); ?></thead>
<?php <?php

View File

@@ -50,11 +50,11 @@ if ($adminer->homepage()) {
echo "<p class='message'>" . lang('No tables.') . "\n"; echo "<p class='message'>" . lang('No tables.') . "\n";
} else { } else {
echo "<form action='' method='post'>\n"; echo "<form action='' method='post'>\n";
echo "<p>" . lang('Search data in tables') . ": <input name='query' value='" . h($_POST["query"]) . "'> <input type='submit' name='search' value='" . lang('Search') . "'>\n"; echo "<p>" . lang('Search data in tables') . ": <input type='search' name='query' value='" . h($_POST["query"]) . "'> <input type='submit' name='search' value='" . lang('Search') . "'>\n";
if ($_POST["search"] && $_POST["query"] != "") { if ($_POST["search"] && $_POST["query"] != "") {
search_tables(); search_tables();
} }
echo "<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);'>\n"; echo "<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n";
echo '<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);">'; echo '<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);">';
echo '<th>' . lang('Table'); echo '<th>' . lang('Table');
echo '<td>' . lang('Engine'); echo '<td>' . lang('Engine');

View File

@@ -1,6 +1,7 @@
<?php <?php
$TABLE = $_GET["download"]; $TABLE = $_GET["download"];
$fields = fields($TABLE);
header("Content-Type: application/octet-stream"); header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=" . friendly_url("$TABLE-" . implode("_", $_GET["where"])) . "." . friendly_url($_GET["field"])); header("Content-Disposition: attachment; filename=" . friendly_url("$TABLE-" . implode("_", $_GET["where"])) . "." . friendly_url($_GET["field"]));
echo $connection->result("SELECT" . limit(idf_escape($_GET["field"]) . " FROM " . table($TABLE), " WHERE " . where($_GET), 1)); echo $connection->result("SELECT" . limit(idf_escape($_GET["field"]) . " FROM " . table($TABLE), " WHERE " . where($_GET, $fields), 1));
exit; // don't output footer exit; // don't output footer

View File

@@ -38,7 +38,7 @@ if (isset($_GET["mssql"])) {
} }
function select_db($database) { function select_db($database) {
return $this->query("USE $database"); return $this->query("USE " . idf_escape($database));
} }
function query($query, $unbuffered = false) { function query($query, $unbuffered = false) {

View File

@@ -296,6 +296,7 @@ if (!defined("DRIVER")) {
/** Formulate SQL modification query with limit 1 /** Formulate SQL modification query with limit 1
* @param string everything after UPDATE or DELETE * @param string everything after UPDATE or DELETE
* @param string
* @return string * @return string
*/ */
function limit1($query, $where) { function limit1($query, $where) {
@@ -534,6 +535,7 @@ if (!defined("DRIVER")) {
/** Create database /** Create database
* @param string * @param string
* @param string
* @return string * @return string
*/ */
function create_database($db, $collation) { function create_database($db, $collation) {
@@ -552,7 +554,7 @@ if (!defined("DRIVER")) {
/** Rename database from DB /** Rename database from DB
* @param string new name * @param string new name
* @return string * @param string
* @return bool * @return bool
*/ */
function rename_database($name, $collation) { function rename_database($name, $collation) {
@@ -766,6 +768,7 @@ if (!defined("DRIVER")) {
"type" => strtolower($param[5]), "type" => strtolower($param[5]),
"length" => preg_replace_callback("~$enum_length~s", 'normalize_enum', $param[6]), "length" => preg_replace_callback("~$enum_length~s", 'normalize_enum', $param[6]),
"unsigned" => strtolower(preg_replace('~\\s+~', ' ', trim("$param[8] $param[7]"))), "unsigned" => strtolower(preg_replace('~\\s+~', ' ', trim("$param[8] $param[7]"))),
"null" => 1,
"full_type" => $param[4], "full_type" => $param[4],
"inout" => strtoupper($param[1]), "inout" => strtoupper($param[1]),
"collation" => strtolower($param[9]), "collation" => strtolower($param[9]),
@@ -966,7 +969,7 @@ if (!defined("DRIVER")) {
*/ */
function unconvert_field($field, $return) { function unconvert_field($field, $return) {
if (ereg("binary", $field["type"])) { if (ereg("binary", $field["type"])) {
$return = "unhex($return)"; $return = "UNHEX($return)";
} }
if (ereg("geometry|point|linestring|polygon", $field["type"])) { if (ereg("geometry|point|linestring|polygon", $field["type"])) {
$return = "GeomFromText($return)"; $return = "GeomFromText($return)";

View File

@@ -574,7 +574,8 @@ AND typelem = 0"
} }
function process_list() { function process_list() {
return get_rows("SELECT * FROM pg_stat_activity ORDER BY procpid"); global $connection;
return get_rows("SELECT * FROM pg_stat_activity ORDER BY " . ($connection->server_info < 9.2 ? "procpid" : "pid"));
} }
function show_status() { function show_status() {
@@ -596,7 +597,7 @@ AND typelem = 0"
$structured_types = array(); $structured_types = array();
foreach (array( //! arrays foreach (array( //! arrays
lang('Numbers') => array("smallint" => 5, "integer" => 10, "bigint" => 19, "boolean" => 1, "numeric" => 0, "real" => 7, "double precision" => 16, "money" => 20), lang('Numbers') => array("smallint" => 5, "integer" => 10, "bigint" => 19, "boolean" => 1, "numeric" => 0, "real" => 7, "double precision" => 16, "money" => 20),
lang('Date and time') => array("date" => 13, "time" => 17, "timestamp" => 20, "interval" => 0), lang('Date and time') => array("date" => 13, "time" => 17, "timestamp" => 20, "timestamptz" => 21, "interval" => 0),
lang('Strings') => array("character" => 0, "character varying" => 0, "text" => 0, "tsquery" => 0, "tsvector" => 0, "uuid" => 0, "xml" => 0), lang('Strings') => array("character" => 0, "character varying" => 0, "text" => 0, "tsquery" => 0, "tsvector" => 0, "uuid" => 0, "xml" => 0),
lang('Binary') => array("bit" => 0, "bit varying" => 0, "bytea" => 0), lang('Binary') => array("bit" => 0, "bit varying" => 0, "bytea" => 0),
lang('Network') => array("cidr" => 43, "inet" => 43, "macaddr" => 17, "txid_snapshot" => 0), lang('Network') => array("cidr" => 43, "inet" => 43, "macaddr" => 17, "txid_snapshot" => 0),

View File

@@ -1,8 +1,8 @@
<?php <?php
$TABLE = $_GET["edit"]; $TABLE = $_GET["edit"];
$where = (isset($_GET["select"]) ? (count($_POST["check"]) == 1 ? where_check($_POST["check"][0]) : "") : where($_GET));
$update = (isset($_GET["select"]) ? $_POST["edit"] : $where);
$fields = fields($TABLE); $fields = fields($TABLE);
$where = (isset($_GET["select"]) ? (count($_POST["check"]) == 1 ? where_check($_POST["check"][0], $fields) : "") : where($_GET, $fields));
$update = (isset($_GET["select"]) ? $_POST["edit"] : $where);
foreach ($fields as $name => $field) { foreach ($fields as $name => $field) {
if (!isset($field["privileges"][$update ? "update" : "insert"]) || $adminer->fieldName($field) == "") { if (!isset($field["privileges"][$update ? "update" : "insert"]) || $adminer->fieldName($field) == "") {
unset($fields[$name]); unset($fields[$name]);
@@ -77,7 +77,9 @@ if ($row === false) {
<form action="" method="post" enctype="multipart/form-data" id="form"> <form action="" method="post" enctype="multipart/form-data" id="form">
<?php <?php
if ($fields) { if (!$fields) {
echo "<p class='error'>" . lang('You have no privileges to update this table.') . "\n";
} else {
echo "<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n"; echo "<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";
foreach ($fields as $name => $field) { foreach ($fields as $name => $field) {
echo "<tr><th>" . $adminer->fieldName($field); echo "<tr><th>" . $adminer->fieldName($field);

View File

@@ -38,7 +38,7 @@ if (!$row && $EVENT != "") {
<tr><th><?php echo lang('Name'); ?><td><input name="EVENT_NAME" value="<?php echo h($row["EVENT_NAME"]); ?>" maxlength="64"> <tr><th><?php echo lang('Name'); ?><td><input name="EVENT_NAME" value="<?php echo h($row["EVENT_NAME"]); ?>" maxlength="64">
<tr><th><?php echo lang('Start'); ?><td><input name="STARTS" value="<?php echo h("$row[EXECUTE_AT]$row[STARTS]"); ?>"> <tr><th><?php echo lang('Start'); ?><td><input name="STARTS" value="<?php echo h("$row[EXECUTE_AT]$row[STARTS]"); ?>">
<tr><th><?php echo lang('End'); ?><td><input name="ENDS" value="<?php echo h($row["ENDS"]); ?>"> <tr><th><?php echo lang('End'); ?><td><input name="ENDS" value="<?php echo h($row["ENDS"]); ?>">
<tr><th><?php echo lang('Every'); ?><td><input name="INTERVAL_VALUE" value="<?php echo h($row["INTERVAL_VALUE"]); ?>" size="6"> <?php echo html_select("INTERVAL_FIELD", $intervals, $row["INTERVAL_FIELD"]); ?> <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"]); ?>
<tr><th><?php echo lang('Status'); ?><td><?php echo html_select("STATUS", $statuses, $row["STATUS"]); ?> <tr><th><?php echo lang('Status'); ?><td><?php echo html_select("STATUS", $statuses, $row["STATUS"]); ?>
<tr><th><?php echo lang('Comment'); ?><td><input name="EVENT_COMMENT" value="<?php echo h($row["EVENT_COMMENT"]); ?>" maxlength="64"> <tr><th><?php echo lang('Comment'); ?><td><input name="EVENT_COMMENT" value="<?php echo h($row["EVENT_COMMENT"]); ?>" maxlength="64">
<tr><th>&nbsp;<td><?php echo checkbox("ON_COMPLETION", "PRESERVE", $row["ON_COMPLETION"] == "PRESERVE", lang('On completion preserve')); ?> <tr><th>&nbsp;<td><?php echo checkbox("ON_COMPLETION", "PRESERVE", $row["ON_COMPLETION"] == "PRESERVE", lang('On completion preserve')); ?>

View File

@@ -9,7 +9,7 @@ header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
if ($_GET["file"] == "favicon.ico") { if ($_GET["file"] == "favicon.ico") {
header("Content-Type: image/x-icon"); header("Content-Type: image/x-icon");
echo compile_file('../adminer/static/favicon.ico'); echo lzw_decompress(compile_file('../adminer/static/favicon.ico', 'lzw_compress'));
} elseif ($_GET["file"] == "default.css") { } elseif ($_GET["file"] == "default.css") {
header("Content-Type: text/css; charset=utf-8"); header("Content-Type: text/css; charset=utf-8");
echo lzw_decompress(compile_file('../adminer/static/default.css', 'minify_css')); echo lzw_decompress(compile_file('../adminer/static/default.css', 'minify_css'));

View File

@@ -196,7 +196,7 @@ username.form['auth[driver]'].onchange();
if (ereg('blob|bytea|raw|file', $field["type"]) && !is_utf8($val)) { if (ereg('blob|bytea|raw|file', $field["type"]) && !is_utf8($val)) {
$return = lang('%d byte(s)', strlen($val)); $return = lang('%d byte(s)', strlen($val));
} }
return ($link ? "<a href='$link'>$return</a>" : $return); return ($link ? "<a href='" . h($link) . "'>$return</a>" : $return);
} }
/** Value conversion used in select and edit /** Value conversion used in select and edit
@@ -240,7 +240,7 @@ username.form['auth[driver]'].onchange();
foreach ($indexes as $i => $index) { foreach ($indexes as $i => $index) {
if ($index["type"] == "FULLTEXT") { if ($index["type"] == "FULLTEXT") {
echo "(<i>" . implode("</i>, <i>", array_map('h', $index["columns"])) . "</i>) AGAINST"; echo "(<i>" . implode("</i>, <i>", array_map('h', $index["columns"])) . "</i>) AGAINST";
echo " <input name='fulltext[$i]' value='" . h($_GET["fulltext"][$i]) . "' onchange='selectFieldChange(this.form);'>"; echo " <input type='search' name='fulltext[$i]' value='" . h($_GET["fulltext"][$i]) . "' onchange='selectFieldChange(this.form);'>";
echo checkbox("boolean[$i]", 1, isset($_GET["boolean"][$i]), "BOOL"); echo checkbox("boolean[$i]", 1, isset($_GET["boolean"][$i]), "BOOL");
echo "<br>\n"; echo "<br>\n";
} }
@@ -253,7 +253,7 @@ username.form['auth[driver]'].onchange();
if (!$val || ("$val[col]$val[val]" != "" && in_array($val["op"], $this->operators))) { if (!$val || ("$val[col]$val[val]" != "" && in_array($val["op"], $this->operators))) {
echo "<div><select name='where[$i][col]' onchange='$change_next'><option value=''>(" . lang('anywhere') . ")" . optionlist($columns, $val["col"], true) . "</select>"; echo "<div><select name='where[$i][col]' onchange='$change_next'><option value=''>(" . lang('anywhere') . ")" . optionlist($columns, $val["col"], true) . "</select>";
echo html_select("where[$i][op]", $this->operators, $val["op"], $change_next); echo html_select("where[$i][op]", $this->operators, $val["op"], $change_next);
echo "<input name='where[$i][val]' value='" . h($val["val"]) . "' onchange='" . ($val ? "selectFieldChange(this.form)" : "selectAddRow(this)") . ";'></div>\n"; echo "<input type='search' name='where[$i][val]' value='" . h($val["val"]) . "' onchange='" . ($val ? "selectFieldChange(this.form)" : "selectAddRow(this)") . ";'></div>\n";
} }
} }
echo "</div></fieldset>\n"; echo "</div></fieldset>\n";
@@ -286,7 +286,7 @@ username.form['auth[driver]'].onchange();
*/ */
function selectLimitPrint($limit) { function selectLimitPrint($limit) {
echo "<fieldset><legend>" . lang('Limit') . "</legend><div>"; // <div> for easy styling echo "<fieldset><legend>" . lang('Limit') . "</legend><div>"; // <div> for easy styling
echo "<input name='limit' size='3' value='" . h($limit) . "' onchange='selectFieldChange(this.form);'>"; echo "<input type='number' name='limit' class='size' value='" . h($limit) . "' onchange='selectFieldChange(this.form);'>";
echo "</div></fieldset>\n"; echo "</div></fieldset>\n";
} }
@@ -297,7 +297,7 @@ username.form['auth[driver]'].onchange();
function selectLengthPrint($text_length) { function selectLengthPrint($text_length) {
if ($text_length !== null) { if ($text_length !== null) {
echo "<fieldset><legend>" . lang('Text length') . "</legend><div>"; echo "<fieldset><legend>" . lang('Text length') . "</legend><div>";
echo '<input name="text_length" size="3" value="' . h($text_length) . '">'; echo "<input type='number' name='text_length' class='size' value='" . h($text_length) . "'>";
echo "</div></fieldset>\n"; echo "</div></fieldset>\n";
} }
} }

View File

@@ -14,6 +14,8 @@ if ($filter || ini_get("filter.default_flags")) {
} }
} }
@ini_set("mbstring.internal_encoding", "8bit"); // @ - can be disabled
// used only in compiled file // used only in compiled file
if (isset($_GET["file"])) { if (isset($_GET["file"])) {
include "../adminer/file.inc.php"; include "../adminer/file.inc.php";

View File

@@ -29,7 +29,7 @@ function connect_error() {
$scheme = support("scheme"); $scheme = support("scheme");
$collations = collations(); $collations = collations();
echo "<form action='' method='post'>\n"; echo "<form action='' method='post'>\n";
echo "<table cellspacing='0' class='checkable' onclick='tableClick(event);'>\n"; echo "<table cellspacing='0' class='checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n";
echo "<thead><tr><td>&nbsp;<th>" . lang('Database') . "<td>" . lang('Collation') . "<td>" . lang('Tables') . "</thead>\n"; echo "<thead><tr><td>&nbsp;<th>" . lang('Database') . "<td>" . lang('Collation') . "<td>" . lang('Tables') . "</thead>\n";
foreach ($databases as $db) { foreach ($databases as $db) {
$root = h(ME) . "db=" . urlencode($db); $root = h(ME) . "db=" . urlencode($db);

View File

@@ -16,7 +16,7 @@ function page_header($title, $error = "", $breadcrumb = array(), $title2 = "") {
$title_all = $title . ($title2 != "" ? ": " . h($title2) : ""); $title_all = $title . ($title2 != "" ? ": " . h($title2) : "");
$title_page = strip_tags($title_all . (SERVER != "" && SERVER != "localhost" ? h(" - " . SERVER) : "") . " - " . $adminer->name()); $title_page = strip_tags($title_all . (SERVER != "" && SERVER != "localhost" ? h(" - " . SERVER) : "") . " - " . $adminer->name());
?> ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <!DOCTYPE html>
<html lang="<?php echo $LANG; ?>" dir="<?php echo lang('ltr'); ?>"> <html lang="<?php echo $LANG; ?>" dir="<?php echo lang('ltr'); ?>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="Content-Script-Type" content="text/javascript">

View File

@@ -147,7 +147,7 @@ function edit_type($key, $field, $collations, $foreign_keys = array()) {
global $structured_types, $types, $unsigned, $on_actions; global $structured_types, $types, $unsigned, $on_actions;
?> ?>
<td><select name="<?php echo $key; ?>[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"><?php echo optionlist((!$field["type"] || isset($types[$field["type"]]) ? array() : array($field["type"])) + $structured_types + ($foreign_keys ? array(lang('Foreign keys') => $foreign_keys) : array()), $field["type"]); ?></select> <td><select name="<?php echo $key; ?>[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"><?php echo optionlist((!$field["type"] || isset($types[$field["type"]]) ? array() : array($field["type"])) + $structured_types + ($foreign_keys ? array(lang('Foreign keys') => $foreign_keys) : array()), $field["type"]); ?></select>
<td><input name="<?php echo $key; ?>[length]" value="<?php echo h($field["length"]); ?>" size="3" onfocus="editingLengthFocus(this);"><td class="options"><?php <td><input name="<?php echo $key; ?>[length]" value="<?php echo h($field["length"]); ?>" size="3" onfocus="editingLengthFocus(this);"><td class="options"><?php //! type="number" with enabled JavaScript
echo "<select name='$key" . "[collation]'" . (ereg('(char|text|enum|set)$', $field["type"]) ? "" : " class='hidden'") . '><option value="">(' . lang('collation') . ')' . optionlist($collations, $field["collation"]) . '</select>'; echo "<select name='$key" . "[collation]'" . (ereg('(char|text|enum|set)$', $field["type"]) ? "" : " class='hidden'") . '><option value="">(' . lang('collation') . ')' . optionlist($collations, $field["collation"]) . '</select>';
echo ($unsigned ? "<select name='$key" . "[unsigned]'" . (!$field["type"] || ereg('(int|float|double|decimal)$', $field["type"]) ? "" : " class='hidden'") . '><option>' . optionlist($unsigned, $field["unsigned"]) . '</select>' : ''); echo ($unsigned ? "<select name='$key" . "[unsigned]'" . (!$field["type"] || ereg('(int|float|double|decimal)$', $field["type"]) ? "" : " class='hidden'") . '><option>' . optionlist($unsigned, $field["unsigned"]) . '</select>' : '');
echo ($foreign_keys ? "<select name='$key" . "[on_delete]'" . (ereg("`", $field["type"]) ? "" : " class='hidden'") . "><option value=''>(" . lang('ON DELETE') . ")" . optionlist(explode("|", $on_actions), $field["on_delete"]) . "</select> " : " "); // space for IE echo ($foreign_keys ? "<select name='$key" . "[on_delete]'" . (ereg("`", $field["type"]) ? "" : " class='hidden'") . "><option value=''>(" . lang('ON DELETE') . ")" . optionlist(explode("|", $on_actions), $field["on_delete"]) . "</select> " : " "); // space for IE
@@ -220,7 +220,7 @@ function type_class($type) {
* @return null * @return null
*/ */
function edit_fields($fields, $collations, $type = "TABLE", $allowed = 0, $foreign_keys = array(), $comments = false) { function edit_fields($fields, $collations, $type = "TABLE", $allowed = 0, $foreign_keys = array(), $comments = false) {
global $inout; global $connection, $inout;
?> ?>
<thead><tr class="wrap"> <thead><tr class="wrap">
<?php if ($type == "PROCEDURE") { ?><td>&nbsp;<?php } ?> <?php if ($type == "PROCEDURE") { ?><td>&nbsp;<?php } ?>
@@ -231,7 +231,7 @@ function edit_fields($fields, $collations, $type = "TABLE", $allowed = 0, $forei
<?php if ($type == "TABLE") { ?> <?php if ($type == "TABLE") { ?>
<td>NULL <td>NULL
<td><input type="radio" name="auto_increment_col" value=""><acronym title="<?php echo lang('Auto Increment'); ?>">AI</acronym> <td><input type="radio" name="auto_increment_col" value=""><acronym title="<?php echo lang('Auto Increment'); ?>">AI</acronym>
<td<?php echo ($_POST["defaults"] ? "" : " class='hidden'"); ?>><?php echo lang('Default values'); ?> <td><?php echo lang('Default values'); ?>
<?php echo (support("comment") ? "<td" . ($comments ? "" : " class='hidden'") . ">" . lang('Comment') : ""); ?> <?php echo (support("comment") ? "<td" . ($comments ? "" : " class='hidden'") . ">" . lang('Comment') : ""); ?>
<?php } ?> <?php } ?>
<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 type="text/javascript">row_count = <?php echo count($fields); ?>;</script> <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 type="text/javascript">row_count = <?php echo count($fields); ?>;</script>
@@ -250,8 +250,8 @@ function edit_fields($fields, $collations, $type = "TABLE", $allowed = 0, $forei
<?php if ($type == "TABLE") { ?> <?php if ($type == "TABLE") { ?>
<td><?php echo checkbox("fields[$i][null]", 1, $field["null"]); ?> <td><?php echo checkbox("fields[$i][null]", 1, $field["null"]); ?>
<td><input type="radio" name="auto_increment_col" value="<?php echo $i; ?>"<?php if ($field["auto_increment"]) { ?> checked<?php } ?> onclick="var field = this.form['fields[' + this.value + '][field]']; if (!field.value) { field.value = 'id'; field.onchange(); }"> <td><input type="radio" name="auto_increment_col" value="<?php echo $i; ?>"<?php if ($field["auto_increment"]) { ?> checked<?php } ?> onclick="var field = this.form['fields[' + this.value + '][field]']; if (!field.value) { field.value = 'id'; field.onchange(); }">
<td<?php echo ($_POST["defaults"] ? "" : " class='hidden'"); ?>><?php echo checkbox("fields[$i][has_default]", 1, $field["has_default"]); ?><input name="fields[<?php echo $i; ?>][default]" value="<?php echo h($field["default"]); ?>" onchange="this.previousSibling.checked = true;"> <td><?php echo checkbox("fields[$i][has_default]", 1, $field["has_default"]); ?><input name="fields[<?php echo $i; ?>][default]" value="<?php echo h($field["default"]); ?>" onchange="this.previousSibling.checked = true;">
<?php echo (support("comment") ? "<td" . ($comments ? "" : " class='hidden'") . "><input name='fields[$i][comment]' value='" . h($field["comment"]) . "' maxlength='255'>" : ""); ?> <?php echo (support("comment") ? "<td" . ($comments ? "" : " class='hidden'") . "><input name='fields[$i][comment]' value='" . h($field["comment"]) . "' maxlength='" . ($connection->server_info >= 5.5 ? 1024 : 255) . "'>" : ""); ?>
<?php } ?> <?php } ?>
<?php <?php
echo "<td>"; echo "<td>";

View File

@@ -329,14 +329,15 @@ function unique_array($row, $indexes) {
/** Create SQL condition from parsed query string /** Create SQL condition from parsed query string
* @param array parsed query string * @param array parsed query string
* @param array
* @return string * @return string
*/ */
function where($where) { function where($where, $fields = array()) {
global $jush; global $jush;
$return = array(); $return = array();
foreach ((array) $where["where"] as $key => $val) { foreach ((array) $where["where"] as $key => $val) {
$return[] = idf_escape(bracket_escape($key, 1)) // 1 - back $return[] = idf_escape(bracket_escape($key, 1)) // 1 - back
. (($jush == "sql" && ereg('\\.', $val)) || $jush == "mssql" ? " LIKE " . exact_value(addcslashes($val, "%_\\")) : " = " . exact_value($val)) // LIKE because of floats, but slow with ints, in MS SQL because of text . (($jush == "sql" && ereg('\\.', $val)) || $jush == "mssql" ? " LIKE " . exact_value(addcslashes($val, "%_\\")) : " = " . unconvert_field($fields[$key], exact_value($val))) // LIKE because of floats, but slow with ints, in MS SQL because of text
; //! enum and set ; //! enum and set
} }
foreach ((array) $where["null"] as $key) { foreach ((array) $where["null"] as $key) {
@@ -347,19 +348,20 @@ function where($where) {
/** Create SQL condition from query string /** Create SQL condition from query string
* @param string * @param string
* @param array
* @return string * @return string
*/ */
function where_check($val) { function where_check($val, $fields = array()) {
parse_str($val, $check); parse_str($val, $check);
remove_slashes(array(&$check)); remove_slashes(array(&$check));
return where($check); return where($check, $fields);
} }
/** Create query string where condition from value /** Create query string where condition from value
* @param int condition order * @param int condition order
* @param string column identifier * @param string column identifier
* @param string * @param string
* @return string * @param string
* @return string * @return string
*/ */
function where_link($i, $column, $value, $operator = "=") { function where_link($i, $column, $value, $operator = "=") {
@@ -545,6 +547,7 @@ function remove_from_uri($param = "") {
/** Generate page number for pagination /** Generate page number for pagination
* @param int * @param int
* @param int
* @return string * @return string
*/ */
function pagination($page, $current) { function pagination($page, $current) {
@@ -739,7 +742,8 @@ function input($field, $value, $function) {
} else { } else {
// int(3) is only a display hint // int(3) is only a display hint
$maxlength = (!ereg('int', $field["type"]) && preg_match('~^(\\d+)(,(\\d+))?$~', $field["length"], $match) ? ((ereg("binary", $field["type"]) ? 2 : 1) * $match[1] + ($match[3] ? 1 : 0) + ($match[2] && !$field["unsigned"] ? 1 : 0)) : ($types[$field["type"]] ? $types[$field["type"]] + ($field["unsigned"] ? 0 : 1) : 0)); $maxlength = (!ereg('int', $field["type"]) && preg_match('~^(\\d+)(,(\\d+))?$~', $field["length"], $match) ? ((ereg("binary", $field["type"]) ? 2 : 1) * $match[1] + ($match[3] ? 1 : 0) + ($match[2] && !$field["unsigned"] ? 1 : 0)) : ($types[$field["type"]] ? $types[$field["type"]] + ($field["unsigned"] ? 0 : 1) : 0));
echo "<input value='" . h($value) . "'" . ($maxlength ? " maxlength='$maxlength'" : "") . (ereg('char|binary', $field["type"]) && $maxlength > 20 ? " size='40'" : "") . "$attrs>"; // type='date' and type='time' display localized value which may be confusing, type='datetime' uses 'T' as date and time separator
echo "<input" . (ereg('int|float|double|decimal', $field["type"]) ? " type='number'" : "") . " value='" . h($value) . "'" . ($maxlength ? " maxlength='$maxlength'" : "") . (ereg('char|binary', $field["type"]) && $maxlength > 20 ? " size='40'" : "") . "$attrs>";
} }
} }
} }
@@ -901,6 +905,14 @@ function is_url($string) {
return (preg_match("~^(https?)://($domain?\\.)+$domain(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i", $string, $match) ? strtolower($match[1]) : ""); //! restrict path, query and fragment characters return (preg_match("~^(https?)://($domain?\\.)+$domain(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i", $string, $match) ? strtolower($match[1]) : ""); //! restrict path, query and fragment characters
} }
/** Check if field should be shortened
* @param array
* @return bool
*/
function is_shortable($field) {
return ereg('char|text|lob|geometry|point|linestring|polygon', $field["type"]);
}
/** Run query which can be killed by AJAX call after timing out /** Run query which can be killed by AJAX call after timing out
* @param string * @param string
* @return Min_Result * @return Min_Result

View File

@@ -70,11 +70,11 @@ function lang($idf, $number = null) {
} }
function switch_lang() { function switch_lang() {
global $LANG, $langs, $token; global $LANG, $langs;
echo "<form action='' method='post'>\n<div id='lang'>"; echo "<form action='' method='post'>\n<div id='lang'>";
echo lang('Language') . ": " . html_select("lang", $langs, $LANG, "this.form.submit();"); echo lang('Language') . ": " . html_select("lang", $langs, $LANG, "this.form.submit();");
echo " <input type='submit' value='" . lang('Use') . "' class='hidden'>\n"; echo " <input type='submit' value='" . lang('Use') . "' class='hidden'>\n";
echo "<input type='hidden' name='token' value='$token'>\n"; echo "<input type='hidden' name='token' value='$_SESSION[token]'>\n"; // $token may be empty in auth.inc.php
echo "</div>\n</form>\n"; echo "</div>\n</form>\n";
} }

View File

@@ -1,2 +1,2 @@
<?php <?php
$VERSION = "3.6.0"; $VERSION = "3.6.2";

View File

@@ -89,7 +89,7 @@ foreach ($row["indexes"] as $index) {
$i = 1; $i = 1;
foreach ($index["columns"] as $key => $column) { foreach ($index["columns"] as $key => $column) {
echo "<span>" . html_select("indexes[$j][columns][$i]", array(-1 => "") + $fields, $column, ($i == count($index["columns"]) ? "indexesAddColumn" : "indexesChangeColumn") . "(this, '" . js_escape($jush == "sql" ? "" : $_GET["indexes"] . "_") . "');"); echo "<span>" . html_select("indexes[$j][columns][$i]", array(-1 => "") + $fields, $column, ($i == count($index["columns"]) ? "indexesAddColumn" : "indexesChangeColumn") . "(this, '" . js_escape($jush == "sql" ? "" : $_GET["indexes"] . "_") . "');");
echo "<input name='indexes[$j][lengths][$i]' size='2' value='" . h($index["lengths"][$key]) . "'> </span>"; //! hide for non-MySQL drivers, add ASC|DESC echo "<input type='number' name='indexes[$j][lengths][$i]' class='size' value='" . h($index["lengths"][$key]) . "'> </span>"; //! hide for non-MySQL drivers, add ASC|DESC
$i++; $i++;
} }
echo "<td><input name='indexes[$j][name]' value='" . h($index["name"]) . "'>\n"; echo "<td><input name='indexes[$j][name]' value='" . h($index["name"]) . "'>\n";

View File

@@ -243,7 +243,6 @@ $translations = array(
'Alter type' => 'تعديل نوع', 'Alter type' => 'تعديل نوع',
'Type has been dropped.' => 'تم حذف النوع.', 'Type has been dropped.' => 'تم حذف النوع.',
'Type has been created.' => 'تم إنشاء النوع.', 'Type has been created.' => 'تم إنشاء النوع.',
'Double click on a value to modify it.' => 'أنقر نقرا مزدوجا على قيمة لتعديلها.',
'Use edit link to modify this value.' => 'إستعمل الرابط "تعديل" لتعديل هذه القيمة.', 'Use edit link to modify this value.' => 'إستعمل الرابط "تعديل" لتعديل هذه القيمة.',
'last' => 'الأخيرة', 'last' => 'الأخيرة',
'From server' => 'من الخادم', 'From server' => 'من الخادم',

View File

@@ -244,7 +244,6 @@ $translations = array(
'Alter type' => 'টাইপ পরিবর্তন করো', 'Alter type' => 'টাইপ পরিবর্তন করো',
'Type has been dropped.' => 'টাইপ মুছে ফেলা হয়েছে।', 'Type has been dropped.' => 'টাইপ মুছে ফেলা হয়েছে।',
'Type has been created.' => 'টাইপ তৈরি করা হয়েছে।', 'Type has been created.' => 'টাইপ তৈরি করা হয়েছে।',
'Double click on a value to modify it.' => 'কোন মানকে পরিবর্তন করতে এতে ডবল ক্লিক করো।',
'Use edit link to modify this value.' => 'এই মান পরিবর্তনের জন্য সম্পাদনা লিঙ্ক ব্যবহার করো।', 'Use edit link to modify this value.' => 'এই মান পরিবর্তনের জন্য সম্পাদনা লিঙ্ক ব্যবহার করো।',
'last' => 'সর্বশেষ', 'last' => 'সর্বশেষ',
'From server' => 'সার্ভার থেকে', 'From server' => 'সার্ভার থেকে',

View File

@@ -233,7 +233,7 @@ $translations = array(
'Geometry' => 'Geometria', 'Geometry' => 'Geometria',
'Databases have been dropped.' => 'S\'han suprimit les bases de dades.', 'Databases have been dropped.' => 'S\'han suprimit les bases de dades.',
'File exists.' => 'El fitxer ja existeix.', 'File exists.' => 'El fitxer ja existeix.',
'Double click on a value to modify it.' => 'Fes un doble clic a un valor per modificar-lo.', 'Ctrl+click on a value to modify it.' => 'Fes un Ctrl+clic a un valor per modificar-lo.',
'Use edit link to modify this value.' => 'Utilitza l\'enllaç d\'edició per modificar aquest valor.', 'Use edit link to modify this value.' => 'Utilitza l\'enllaç d\'edició per modificar aquest valor.',
'Alter schema' => 'Modifica l\'esquema', 'Alter schema' => 'Modifica l\'esquema',
'Create schema' => 'Crea un esquema', 'Create schema' => 'Crea un esquema',

View File

@@ -243,7 +243,7 @@ $translations = array(
'%d row(s) have been imported.' => array('Byl importován %d záznam.', 'Byly importovány %d záznamy.', 'Bylo importováno %d záznamů.'), '%d row(s) have been imported.' => array('Byl importován %d záznam.', 'Byly importovány %d záznamy.', 'Bylo importováno %d záznamů.'),
// in-place editing in select // in-place editing in select
'Double click on a value to modify it.' => 'Dvojklikněte na políčko, které chcete změnit.', 'Ctrl+click on a value to modify it.' => 'Ctrl+klikněte na políčko, které chcete změnit.',
'Use edit link to modify this value.' => 'Ke změně této hodnoty použijte odkaz upravit.', 'Use edit link to modify this value.' => 'Ke změně této hodnoty použijte odkaz upravit.',
// %s can contain auto-increment value // %s can contain auto-increment value
@@ -263,6 +263,7 @@ $translations = array(
'Save and insert next' => 'Uložit a vložit další', 'Save and insert next' => 'Uložit a vložit další',
'Clone' => 'Klonovat', 'Clone' => 'Klonovat',
'Delete' => 'Smazat', 'Delete' => 'Smazat',
'You have no privileges to update this table.' => 'Nemáte oprávnění editovat tuto tabulku.',
'E-mail' => 'E-mail', 'E-mail' => 'E-mail',
'From' => 'Odesílatel', 'From' => 'Odesílatel',

View File

@@ -244,7 +244,7 @@ $translations = array(
'Alter type' => 'Typ ändern', 'Alter type' => 'Typ ändern',
'Type has been dropped.' => 'Typ gelöscht.', 'Type has been dropped.' => 'Typ gelöscht.',
'Type has been created.' => 'Typ erstellt.', 'Type has been created.' => 'Typ erstellt.',
'Double click on a value to modify it.' => 'Doppelklick zum Bearbeiten des Wertes.', 'Ctrl+click on a value to modify it.' => 'Ctrl+klick zum Bearbeiten des Wertes.',
'Use edit link to modify this value.' => 'Benutzen Sie den Link zum editieren dieses Wertes.', 'Use edit link to modify this value.' => 'Benutzen Sie den Link zum editieren dieses Wertes.',
'last' => 'letzte', 'last' => 'letzte',
'From server' => 'Im Server', 'From server' => 'Im Server',

View File

@@ -244,7 +244,7 @@ $translations = array(
'Alter type' => 'Modificar tipo', 'Alter type' => 'Modificar tipo',
'Type has been dropped.' => 'Tipo eliminado.', 'Type has been dropped.' => 'Tipo eliminado.',
'Type has been created.' => 'Tipo creado.', 'Type has been created.' => 'Tipo creado.',
'Double click on a value to modify it.' => 'Doble-clic sobre el valor para editarlo.', 'Ctrl+click on a value to modify it.' => 'Ctrl+clic sobre el valor para editarlo.',
'Use edit link to modify this value.' => 'Utilice el enlace de modificar para realizar los cambios.', 'Use edit link to modify this value.' => 'Utilice el enlace de modificar para realizar los cambios.',
'last' => 'último', 'last' => 'último',
'From server' => 'Desde servidor', 'From server' => 'Desde servidor',

View File

@@ -244,7 +244,7 @@ $translations = array(
'Alter type' => 'Muuda tüüpi', 'Alter type' => 'Muuda tüüpi',
'Type has been dropped.' => 'Tüüp on edukalt kustutatud.', 'Type has been dropped.' => 'Tüüp on edukalt kustutatud.',
'Type has been created.' => 'Tüüp on edukalt loodud.', 'Type has been created.' => 'Tüüp on edukalt loodud.',
'Double click on a value to modify it.' => 'Väärtuse muutmiseks topelt-kliki sellel.', 'Ctrl+click on a value to modify it.' => 'Väärtuse muutmiseks Ctrl+kliki sellel.',
'Use edit link to modify this value.' => 'Väärtuse muutmiseks kasuta muutmislinki.', 'Use edit link to modify this value.' => 'Väärtuse muutmiseks kasuta muutmislinki.',
'last' => 'viimane', 'last' => 'viimane',
'From server' => 'Serverist', 'From server' => 'Serverist',

View File

@@ -239,7 +239,6 @@ $translations = array(
'%d row(s) have been imported.' => array('%d سطر وارد شد', '%d سطر وارد شد'), '%d row(s) have been imported.' => array('%d سطر وارد شد', '%d سطر وارد شد'),
// in-place editing in select // in-place editing in select
'Double click on a value to modify it.' => 'روی مقدار دوبار کلیک کنید تا آنرا ویرایش کنید',
'Use edit link to modify this value.' => 'از لینک ویرایش برای ویرایش این مقدار استفاده کنید', 'Use edit link to modify this value.' => 'از لینک ویرایش برای ویرایش این مقدار استفاده کنید',
// %s can contain auto-increment value // %s can contain auto-increment value

View File

@@ -243,7 +243,7 @@ $translations = array(
'Alter type' => 'Modifier le type', 'Alter type' => 'Modifier le type',
'Type has been dropped.' => 'Le type a été supprimé.', 'Type has been dropped.' => 'Le type a été supprimé.',
'Type has been created.' => 'Le type a été créé.', 'Type has been created.' => 'Le type a été créé.',
'Double click on a value to modify it.' => 'Double-cliquez sur une valeur pour la modifier.', 'Ctrl+click on a value to modify it.' => 'Ctrl+cliquez sur une valeur pour la modifier.',
'Use edit link to modify this value.' => 'Utilisez le lien "modifier" pour modifier cette valeur.', 'Use edit link to modify this value.' => 'Utilisez le lien "modifier" pour modifier cette valeur.',
'last' => 'dernière', 'last' => 'dernière',
'From server' => 'Depuis le serveur', 'From server' => 'Depuis le serveur',

View File

@@ -233,7 +233,6 @@ $translations = array(
'Geometry' => 'Geometria', 'Geometry' => 'Geometria',
'Databases have been dropped.' => 'Adatbázis eldobva.', 'Databases have been dropped.' => 'Adatbázis eldobva.',
'File exists.' => 'A fájl létezik.', 'File exists.' => 'A fájl létezik.',
'Double click on a value to modify it.' => 'Kattints kétszer az értékre a szerkesztéshez.',
'Use edit link to modify this value.' => 'Használd a szerkesztés hivatkozást ezen érték módosításához.', 'Use edit link to modify this value.' => 'Használd a szerkesztés hivatkozást ezen érték módosításához.',
'Alter schema' => 'Séma módosítása', 'Alter schema' => 'Séma módosítása',
'Create schema' => 'Séma létrehozása', 'Create schema' => 'Séma létrehozása',

View File

@@ -241,7 +241,6 @@ $translations = array(
'%d row(s) have been imported.' => '%d baris berhasil diimpor.', '%d row(s) have been imported.' => '%d baris berhasil diimpor.',
// in-place editing in select // in-place editing in select
'Double click on a value to modify it.' => 'Klik ganda suatu nilai untuk mengubahnya.',
'Use edit link to modify this value.' => 'Gunakan tautan edit untuk mengubah nilai ini.', 'Use edit link to modify this value.' => 'Gunakan tautan edit untuk mengubah nilai ini.',
// %s can contain auto-increment value // %s can contain auto-increment value

View File

@@ -244,7 +244,7 @@ $translations = array(
'Alter type' => 'Modifica tipo definito dall\'utente', 'Alter type' => 'Modifica tipo definito dall\'utente',
'Type has been dropped.' => 'Tipo definito dall\'utente eliminato.', 'Type has been dropped.' => 'Tipo definito dall\'utente eliminato.',
'Type has been created.' => 'Tipo definito dall\'utente creato.', 'Type has been created.' => 'Tipo definito dall\'utente creato.',
'Double click on a value to modify it.' => 'Fai doppio click su un valore per modificarlo.', 'Ctrl+click on a value to modify it.' => 'Fai Ctrl+click su un valore per modificarlo.',
'Use edit link to modify this value.' => 'Usa il link modifica per modificare questo valore.', 'Use edit link to modify this value.' => 'Usa il link modifica per modificare questo valore.',
'last' => 'ultima', 'last' => 'ultima',
'From server' => 'Dal server', 'From server' => 'Dal server',

View File

@@ -245,7 +245,6 @@ $translations = array(
'Alter type' => 'ユーザー定義型変更', 'Alter type' => 'ユーザー定義型変更',
'Type has been dropped.' => 'ユーザー定義型を削除しました', 'Type has been dropped.' => 'ユーザー定義型を削除しました',
'Type has been created.' => 'ユーザー定義型を追加しました', 'Type has been created.' => 'ユーザー定義型を追加しました',
'Double click on a value to modify it.' => 'ダブルクリックして編集',
'Use edit link to modify this value.' => 'リンクを編集する', 'Use edit link to modify this value.' => 'リンクを編集する',
'last' => '最終', 'last' => '最終',
'From server' => 'サーバーから実行', 'From server' => 'サーバーから実行',

View File

@@ -239,7 +239,6 @@ $translations = array(
'%d row(s) have been imported.' => array('%d įrašas įkelta.', '%d įrašai įkelti.', '%d įrašų įkelta.'), '%d row(s) have been imported.' => array('%d įrašas įkelta.', '%d įrašai įkelti.', '%d įrašų įkelta.'),
// in-place editing in select // in-place editing in select
'Double click on a value to modify it.' => 'Du kartus spragtelėkite pelyte norėdami redaguoti.',
'Use edit link to modify this value.' => 'Norėdami redaguoti reikšmę naudokite redagavimo nuorodą.', 'Use edit link to modify this value.' => 'Norėdami redaguoti reikšmę naudokite redagavimo nuorodą.',
// %s can contain auto-increment value // %s can contain auto-increment value

View File

@@ -244,7 +244,7 @@ $translations = array(
'Alter type' => 'Type wijzigen', 'Alter type' => 'Type wijzigen',
'Type has been dropped.' => 'Type verwijderd.', 'Type has been dropped.' => 'Type verwijderd.',
'Type has been created.' => 'Type aangemaakt.', 'Type has been created.' => 'Type aangemaakt.',
'Double click on a value to modify it.' => 'Dubbelklik op een waarde om deze te bewerken.', 'Ctrl+click on a value to modify it.' => 'Ctrl+klik op een waarde om deze te bewerken.',
'Use edit link to modify this value.' => 'Gebruik de link "bewerk" om deze waarde te wijzigen.', 'Use edit link to modify this value.' => 'Gebruik de link "bewerk" om deze waarde te wijzigen.',
'last' => 'laatste', 'last' => 'laatste',
'From server' => 'Van server', 'From server' => 'Van server',

View File

@@ -240,7 +240,7 @@ $translations = array(
'%d row(s) have been imported.' => array('%d rekord został zaimportowany.', '%d rekordy zostały zaimportowane.', '%d rekordów zostało zaimportowanych.'), '%d row(s) have been imported.' => array('%d rekord został zaimportowany.', '%d rekordy zostały zaimportowane.', '%d rekordów zostało zaimportowanych.'),
// in-place editing in select // in-place editing in select
'Double click on a value to modify it.' => 'Kliknij podwójnie wartość, aby ją edytować.', 'Ctrl+click on a value to modify it.' => 'Ctrl+kliknij wartość, aby ją edytować.',
'Use edit link to modify this value.' => 'Użyj linku edycji aby zmienić tę wartość.', 'Use edit link to modify this value.' => 'Użyj linku edycji aby zmienić tę wartość.',
// %s can contain auto-increment value // %s can contain auto-increment value

View File

@@ -244,7 +244,7 @@ $translations = array(
'Alter type' => 'Modificar tipo', 'Alter type' => 'Modificar tipo',
'Type has been dropped.' => 'Tipo eliminado.', 'Type has been dropped.' => 'Tipo eliminado.',
'Type has been created.' => 'Tipo criado.', 'Type has been created.' => 'Tipo criado.',
'Double click on a value to modify it.' => 'Clique duas vezes sobre o valor para edita-lo.', 'Ctrl+click on a value to modify it.' => 'Ctrl+clique vezes sobre o valor para edita-lo.',
'Use edit link to modify this value.' => 'Utilize o link modificar para alterar.', 'Use edit link to modify this value.' => 'Utilize o link modificar para alterar.',
'last' => 'último', 'last' => 'último',
'From server' => 'Desde servidor', 'From server' => 'Desde servidor',

View File

@@ -244,7 +244,7 @@ $translations = array(
'Alter type' => 'Modifică tip', 'Alter type' => 'Modifică tip',
'Type has been dropped.' => 'Tiipul a fost șters.', 'Type has been dropped.' => 'Tiipul a fost șters.',
'Type has been created.' => 'Crează tip nou.', 'Type has been created.' => 'Crează tip nou.',
'Double click on a value to modify it.' => 'Dublu click pe o valoare pentru a o modifica.', 'Ctrl+click on a value to modify it.' => 'Ctrl+click pe o valoare pentru a o modifica.',
'Use edit link to modify this value.' => 'Valoare poate fi modificată cu ajutorul butonului «modifică».', 'Use edit link to modify this value.' => 'Valoare poate fi modificată cu ajutorul butonului «modifică».',
'last' => 'ultima', 'last' => 'ultima',
'From server' => 'De pe server', 'From server' => 'De pe server',

View File

@@ -244,7 +244,7 @@ $translations = array(
'Alter type' => 'Изменить тип', 'Alter type' => 'Изменить тип',
'Type has been dropped.' => 'Тип удален.', 'Type has been dropped.' => 'Тип удален.',
'Type has been created.' => 'Создан новый тип.', 'Type has been created.' => 'Создан новый тип.',
'Double click on a value to modify it.' => 'Кликни два раза по значению, чтобы его изменить.', 'Ctrl+click on a value to modify it.' => 'Ctrl+кликни по значению, чтобы его изменить.',
'Use edit link to modify this value.' => 'Изменить это значение можно с помощью ссылки «изменить».', 'Use edit link to modify this value.' => 'Изменить это значение можно с помощью ссылки «изменить».',
'last' => 'последняя', 'last' => 'последняя',
'From server' => 'С сервера', 'From server' => 'С сервера',

View File

@@ -244,7 +244,7 @@ $translations = array(
'Type has been dropped.' => 'Typ bol odstránený.', 'Type has been dropped.' => 'Typ bol odstránený.',
'Type has been created.' => 'Typ bol vytvorený.', 'Type has been created.' => 'Typ bol vytvorený.',
'Alter type' => 'Pozmeniť typ', 'Alter type' => 'Pozmeniť typ',
'Double click on a value to modify it.' => 'Dvojkliknite na políčko, ktoré chcete zmeniť.', 'Ctrl+click on a value to modify it.' => 'Ctrl+kliknite na políčko, ktoré chcete zmeniť.',
'Use edit link to modify this value.' => 'Pre zmenu tejto hodnoty použite odkaz upraviť.', 'Use edit link to modify this value.' => 'Pre zmenu tejto hodnoty použite odkaz upraviť.',
'last' => 'posledný', 'last' => 'posledný',
'From server' => 'Zo serveru', 'From server' => 'Zo serveru',

View File

@@ -235,7 +235,7 @@ $translations = array(
'%d row(s) have been imported.' => array('Uvožena je %d vrstica.', 'Uvoženi sta %d vrstici.', 'Uvožene so %d vrstice.', 'Uvoženih je %d vrstic.'), '%d row(s) have been imported.' => array('Uvožena je %d vrstica.', 'Uvoženi sta %d vrstici.', 'Uvožene so %d vrstice.', 'Uvoženih je %d vrstic.'),
// in-place editing in select // in-place editing in select
'Double click on a value to modify it.' => 'Dvojni klik na vrednost za urejanje.', 'Ctrl+click on a value to modify it.' => 'Ctrl+klik na vrednost za urejanje.',
'Use edit link to modify this value.' => 'Uporabite urejanje povezave za spreminjanje te vrednosti.', 'Use edit link to modify this value.' => 'Uporabite urejanje povezave za spreminjanje te vrednosti.',
// %s can contain auto-increment value // %s can contain auto-increment value

View File

@@ -243,7 +243,7 @@ $translations = array(
'%d row(s) have been imported.' => array('%d ред је увежен.', '%d реда су увежена.', '%d редова је увежено.'), '%d row(s) have been imported.' => array('%d ред је увежен.', '%d реда су увежена.', '%d редова је увежено.'),
// in-place editing in select // in-place editing in select
'Double click on a value to modify it.' => 'Дупли клик на вредност за измену.', 'Ctrl+click on a value to modify it.' => 'Ctrl+клик на вредност за измену.',
'Use edit link to modify this value.' => 'Користи везу за измену ове вредности.', 'Use edit link to modify this value.' => 'Користи везу за измену ове вредности.',
// %s can contain auto-increment value // %s can contain auto-increment value

View File

@@ -234,7 +234,6 @@ $translations = array(
'Schema has been dropped.' => 'அமைப்புமுறை நீக்க‌ப்ப‌ட்ட‌து.', 'Schema has been dropped.' => 'அமைப்புமுறை நீக்க‌ப்ப‌ட்ட‌து.',
'Schema has been created.' => 'அமைப்புமுறை உருவாக்க‌ப்ப‌ட்ட‌து.', 'Schema has been created.' => 'அமைப்புமுறை உருவாக்க‌ப்ப‌ட்ட‌து.',
'Schema has been altered.' => 'அமைப்புமுறை மாற்ற‌ப்ப‌ட்ட‌து.', 'Schema has been altered.' => 'அமைப்புமுறை மாற்ற‌ப்ப‌ட்ட‌து.',
'Double click on a value to modify it.' => 'ம‌திப்பினை மாற்ற அத‌ன் மீது இருமுறை சொடுக்க‌வும் (Double click).',
'Use edit link to modify this value.' => 'இந்த‌ ம‌திப்பினை மாற்ற‌, தொகுப்பு இணைப்பினை உப‌யோகிக்க‌வும்.', 'Use edit link to modify this value.' => 'இந்த‌ ம‌திப்பினை மாற்ற‌, தொகுப்பு இணைப்பினை உப‌யோகிக்க‌வும்.',
'last' => 'க‌டைசி', 'last' => 'க‌டைசி',
'Sequence has been dropped.' => 'வ‌ரிசைமுறை நீக்க‌ப்ப‌ட்ட‌து.', 'Sequence has been dropped.' => 'வ‌ரிசைமுறை நீக்க‌ப்ப‌ட்ட‌து.',

View File

@@ -5,146 +5,151 @@ $translations = array(
'Server' => 'Sunucu', 'Server' => 'Sunucu',
'Username' => 'Kullanıcı', 'Username' => 'Kullanıcı',
'Password' => 'Parola', 'Password' => 'Parola',
'Permanent login' => 'Kalıcı giriş', 'Permanent login' => 'Beni hatırla',
'Login' => 'Giriş', 'Login' => 'Giriş',
'Logout' => ıkış', 'Logout' => ıkış',
'Logged as: %s' => '%s olarak giriş yapıldı.', 'Logged as: %s' => '%s olarak giriş yapıldı.',
'Logout successful.' => 'Başarıyla çıkıldı.', 'Logout successful.' => 'Başarıyla çıkış yapıldı.',
'Invalid credentials.' => 'Geçersiz kimlik.', 'Invalid credentials.' => 'Geçersiz kimlik.',
'Language' => 'Dil', 'Language' => 'Dil',
'Invalid CSRF token. Send the form again.' => 'Geçersiz Cross-site request forgery (CSRF) jetonu. Forumu tekrar yolla.', 'Invalid CSRF token. Send the form again.' => 'Geçersiz (CSRF) jetonu. Formu tekrar yolla.',
'No extension' => 'Uzantı yok', 'No extension' => 'Uzantı yok',
'None of the supported PHP extensions (%s) are available.' => 'Desteklenen PHP uzantılarından (%s) hiçbiri mevcut değil.', 'None of the supported PHP extensions (%s) are available.' => 'Desteklenen PHP eklentilerinden (%s) hiçbiri mevcut değil.',
'Session support must be enabled.' => 'Oturum desteği etkin olmalıdır.', 'Session support must be enabled.' => 'Oturum desteği etkin olmalıdır.',
'Session expired, please login again.' => 'Oturum süresi doldu, lütfen tekrar giriş yapın.', 'Session expired, please login again.' => 'Oturum süresi doldu, lütfen tekrar giriş yapın.',
'%s version: %s through PHP extension %s' => '%s sürüm: %s PHP uzantısı ile %s', '%s version: %s through PHP extension %s' => '%s sürüm: %s, %s PHP eklentisi ile',
'Refresh' => 'Tazele', 'Refresh' => 'Tazele',
// text direction // text direction
'ltr' => 'ltr', 'ltr' => 'ltr',
'Privileges' => 'İzinler', 'Privileges' => 'İzinler',
'Create user' => 'Kullanıcı yarat', 'Create user' => 'Kullanıcı oluştur',
'User has been dropped.' => 'Kullanıcı düşürüldü.', 'User has been dropped.' => 'Kullanıcı silindi.',
'User has been altered.' => 'Kullanıcı değiştirildi.', 'User has been altered.' => 'Kullanıcı değiştirildi.',
'User has been created.' => 'Kullanıcı yaratıldı.', 'User has been created.' => 'Kullanıcı oluşturuldu.',
'Hashed' => 'Harmanlandı.', 'Hashed' => 'Harmanlandı',
'Column' => 'Kolon', 'Column' => 'Kolon',
'Routine' => 'Yordam', 'Routine' => 'Yordam',
'Grant' => 'İmtiyaz', 'Grant' => 'Yetki Ver',
'Revoke' => 'Geri al', 'Revoke' => 'Yetki Kaldır',
'Process list' => 'İşlem listesi', 'Process list' => 'İşlem listesi',
'%d process(es) have been killed.' => array('%d süreç öldürüldü.', '%d adet süreç öldürüldü.'), '%d process(es) have been killed.' => array('%d işlem sonlandırıldı.', '%d adet işlem sonlandırıldı.'),
'Kill' => 'Öldür', 'Kill' => 'Sonlandır',
'Variables' => 'Değişkenler', 'Variables' => 'Değişkenler',
'Status' => 'Durum', 'Status' => 'Durum',
'SQL command' => 'SQL komutu', 'SQL command' => 'SQL komutu',
'%d query(s) executed OK.' => array('%d sorgunun işletilmesi tamamlandı.', '%d kadar sorgunun işletilmesi tamamlandı.'), '%d query(s) executed OK.' => array('%d sorgu başarıyla çalıştırıldı.', '%d adet sorgu başarıyla çalıştırıldı.'),
'Query executed OK, %d row(s) affected.' => array('Sorgu işletilmesi tamamlandı. %d sıra(row) etkilendi.', 'Sorgu işletilmesi tamamlandı. Bundan %d kadar sıra etkilendi.'), 'Query executed OK, %d row(s) affected.' => array('Sorgu başarıyla çalıştırıldı, %d adet kayıt etkilendi.', 'Sorgu başarıyla çalıştırıldı, %d adet kayıt etkilendi.'),
'No commands to execute.' => 'İşletilmek için komut yok.', 'No commands to execute.' => 'Çalıştırılacak komut yok.',
'Error in query' => 'Sorguda hata', 'Error in query' => 'Sorguda hata',
'Execute' => 'İşlet', 'Execute' => 'Çalıştır',
'Stop on error' => 'Dur hata', 'Stop on error' => 'Hata oluşursa dur',
'Show only errors' => 'Sadece hataları göster.', 'Show only errors' => 'Sadece hataları göster.',
// sprintf() format for time of the command // sprintf() format for time of the command
'%.3f s' => '%.3f s', '%.3f s' => '%.3f s',
'History' => 'Tarih', 'History' => 'Geçmiş',
'Clear' => 'Boşluk', 'Clear' => 'Temizle',
'Edit all' => 'Tümünü düzenle',
'File upload' => 'Dosya gönder', 'File upload' => 'Dosya gönder',
'From server' => 'Sunucudan', 'From server' => 'Sunucudan',
'Webserver file %s' => '%s web sunucusu dosyası', 'Webserver file %s' => '%s web sunucusu dosyası',
'Run file' => 'Dosya çalıştır', 'Run file' => 'Dosyayı çalıştır',
'File does not exist.' => 'Dosya mevcut değil.', 'File does not exist.' => 'Dosya mevcut değil.',
'File uploads are disabled.' => 'Dosya gönderimi etkin değil.', 'File uploads are disabled.' => 'Dosya gönderimi etkin değil.',
'Unable to upload a file.' => 'Dosya gönderilemiyor.', 'Unable to upload a file.' => 'Dosya gönderilemiyor.',
'Maximum allowed file size is %sB.' => 'Bir dosya için izin verilen dosya sınırı %sB.', 'Maximum allowed file size is %sB.' => 'İzin verilen dosya boyutu sınırı %sB.',
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Çok büyük POST verisi, veriyi azaltın ya da ayar yönergesini uygun olarak yapılandırın.', 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Çok büyük POST verisi, veriyi azaltın ya da %s ayar yönergesini uygun olarak yapılandırın.',
'Export' => 'İhraç', 'Export' => 'Dışarı Aktar',
'Dump' => 'Döküm', 'Dump' => 'Döküm',
'Output' => ıktı', 'Output' => ıktı',
'open' => 'aç', 'open' => 'aç',
'save' => 'kaydet', 'save' => 'kaydet',
'Format' => 'Biçim', 'Format' => 'Biçim',
'Data' => 'Veri', 'Data' => 'Veri',
'Database' => 'Veritabanı', 'Database' => 'Veri Tabanı',
'database' => 'veritabanı', 'database' => 'veri tabanı',
'Use' => 'Kullan', 'Use' => 'Kullan',
'Select database' => 'Veritabanı seç', 'Select database' => 'Veri tabanı seç',
'Invalid database.' => 'Geçersiz veritabanı.', 'Invalid database.' => 'Geçersiz veri tabanı.',
'Create new database' => 'Yeni veritabanı yarat', 'Create new database' => 'Yeni veri tabanı oluştur',
'Database has been dropped.' => 'Veritabanı düşürüldü.', 'Database has been dropped.' => 'Veri tabanı silindi.',
'Databases have been dropped.' => 'Veritabanları düşüüldü.', 'Databases have been dropped.' => 'Veritabanları silindi.',
'Database has been created.' => 'Veritabanı yaratıldı.', 'Database has been created.' => 'Veri tabanı oluşturuldu.',
'Database has been renamed.' => 'Veritabanının ismi değiştirildi.', 'Database has been renamed.' => 'Veri tabanının ismi değiştirildi.',
'Database has been altered.' => 'Veritabanı değiştirildi.', 'Database has been altered.' => 'Veri tabanı değiştirildi.',
'Alter database' => 'Veritabanı değiştir', 'Alter database' => 'Veri tabanını değiştir',
'Create database' => 'Veritabanı yarat', 'Create database' => 'Veri tabanı oluştur',
'Database schema' => 'Veritabanı şeması', 'Database schema' => 'Veri tabanı şeması',
// link to current database schema layout
'Permanent link' => 'Kalıcı bağlantı',
// thousands separator - must contain single byte // thousands separator - must contain single byte
',' => ' ', ',' => ' ',
'Engine' => 'Motor', 'Engine' => 'Motor',
'Collation' => 'Karşılaştırma', 'Collation' => 'Karşılaştırma',
'Data Length' => 'Veri uzunluğu', 'Data Length' => 'Veri Uzunluğu',
'Index Length' => 'Dizin uzunluğu', 'Index Length' => 'Dizin Uzunluğu',
'Data Free' => 'Serbest veri', 'Data Free' => 'Boş Veri',
'Rows' => 'Sıralar (Rows)', 'Rows' => 'Kayıtlar',
'%d in total' => '%d toplamda', '%d in total' => 'toplam %d',
'Analyze' => 'Çözümleme', 'Analyze' => 'Çözümle',
'Optimize' => 'En uygun hale getirme', 'Optimize' => 'En uygun hale getir',
'Check' => 'Denetleme', 'Check' => 'Denetle',
'Repair' => 'Tamir', 'Repair' => 'Tamir Et',
'Truncate' => 'Buda', 'Truncate' => 'Boşalt',
'Tables have been truncated.' => 'Tablolar budandı.', 'Tables have been truncated.' => 'Tablolar boşaltıldı.',
'Move to other database' => 'Diğer veritabanına taşı', 'Move to other database' => 'Başka veri tabanına taşı',
'Move' => 'Taşı', 'Move' => 'Taşı',
'Tables have been moved.' => 'Tablolar taşındı.', 'Tables have been moved.' => 'Tablolar taşındı.',
'Copy' => 'Kopyala', 'Copy' => 'Kopyala',
'Tables have been copied.' => 'Tablolar kopyalandı.', 'Tables have been copied.' => 'Tablolar kopyalandı.',
'Routines' => 'Yordamlar', 'Routines' => 'Yordamlar',
'Routine has been called, %d row(s) affected.' => array('Yordam çağrıldı, %d sıra(row) etkilendi.', 'Yordam çağrıldı, %d sıralar(rows) etkilendi.'), 'Routine has been called, %d row(s) affected.' => array('Yordam çağrıldı, %d adet kayıt etkilendi.', 'Yordam çağrıldı, %d kayıt etkilendi.'),
'Call' => 'Çağrı', 'Call' => 'Çağır',
'Parameter name' => 'Parametre adı', 'Parameter name' => 'Parametre adı',
'Create procedure' => 'Yöntem yarat', 'Create procedure' => 'Yöntem oluştur',
'Create function' => 'Fonksiyon yarat', 'Create function' => 'Fonksiyon oluştur',
'Routine has been dropped.' => 'Yordam düşürüldü.', 'Routine has been dropped.' => 'Yordam silindi.',
'Routine has been altered.' => 'Yordam değiştirildi.', 'Routine has been altered.' => 'Yordam değiştirildi.',
'Routine has been created.' => 'Yordam yaratıldı.', 'Routine has been created.' => 'Yordam oluşturuldu.',
'Alter function' => 'Değiştirme fonksyionu', 'Alter function' => 'Fonksyionu değiştir',
'Alter procedure' => 'Değiştirme yöntemi', 'Alter procedure' => 'Yöntemi değiştir',
'Return type' => 'Geri dönüş türü', 'Return type' => 'Geri dönüş türü',
'Events' => 'Olaylar', 'Events' => 'Olaylar',
'Event has been dropped.' => 'Olay düşüdüldü.', 'Event has been dropped.' => 'Olay silindi.',
'Event has been altered.' => 'Olay değiştirildi.', 'Event has been altered.' => 'Olay değiştirildi.',
'Event has been created.' => 'Olay yaratıldı.', 'Event has been created.' => 'Olay oluşturuldu.',
'Alter event' => 'Değiştirme olayı', 'Alter event' => 'Olayı değiştir',
'Create event' => 'Yaratma olayı', 'Create event' => 'Olay oluştur',
'At given time' => 'Bir anda', 'At given time' => 'Verilen zamanda',
'Every' => 'Herzaman', 'Every' => 'Her zaman',
'Schedule' => 'Takvimli', 'Schedule' => 'Takvimli',
'Start' => 'Başla', 'Start' => 'Başla',
'End' => 'Son', 'End' => 'Son',
'On completion preserve' => 'Tamamlama koruması AÇIK', 'On completion preserve' => 'Tamamlama koruması',
'Tables' => 'Tablolar', 'Tables' => 'Tablolar',
'Tables and views' => 'Tablolar ve görünümler', 'Tables and views' => 'Tablolar ve görünümler',
'Table' => 'Tablo', 'Table' => 'Tablo',
'No tables.' => 'Tablo yok.', 'No tables.' => 'Tablo yok.',
'Alter table' => 'Tablo değiştir', 'Alter table' => 'Tabloyu değiştir',
'Create table' => 'Tablo yarat', 'Create table' => 'Tablo oluştur',
'Create new table' => 'Yeni tablo yarat', 'Create new table' => 'Yeni tablo oluştur',
'Table has been dropped.' => 'Tablo düşürüldü.', 'Table has been dropped.' => 'Tablo silindi.',
'Tables have been dropped.' => 'Tablolar düşürüldü.', 'Tables have been dropped.' => 'Tablolar silindi.',
'Tables have been optimized.' => 'Tablolar en uygun hale getirildi.',
'Table has been altered.' => 'Tablo değiştirildi.', 'Table has been altered.' => 'Tablo değiştirildi.',
'Table has been created.' => 'Tablo yaratıldı.', 'Table has been created.' => 'Tablo oluşturuldu.',
'Table name' => 'Tablo adı', 'Table name' => 'Tablo adı',
'Show structure' => 'Yapıyı göster', 'Show structure' => 'Yapıyı göster',
'engine' => 'motor', 'engine' => 'motor',
@@ -152,160 +157,167 @@ $translations = array(
'Column name' => 'Kolon adı', 'Column name' => 'Kolon adı',
'Type' => 'Tür', 'Type' => 'Tür',
'Length' => 'Uzunluk', 'Length' => 'Uzunluk',
'Auto Increment' => 'Otomatik yükselt', 'Auto Increment' => 'Otomatik Artır',
'Options' => 'Seçenekler', 'Options' => 'Seçenekler',
'Comment' => 'Yorum', 'Comment' => 'Yorum',
'Default values' => 'Varsayılan değerler', 'Default values' => 'Varsayılan değerler',
'Drop' => 'Düşür', 'Drop' => 'Sil',
'Are you sure?' => 'Emin misin?', 'Are you sure?' => 'Emin misiniz?',
'Move up' => 'Yukarı taşı', 'Move up' => 'Yukarı taşı',
'Move down' => 'AŞı taş', 'Move down' => 'Aşı taşı',
'Remove' => 'Kaldır', 'Remove' => 'Sil',
'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'kabul edilebilir alan sayısııldı. Lütfen %s ve %s düşürün.', 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => 'İzin verilen en fazla alan sayısııldı. Lütfen %s ve %s değerlerini artırın.',
'Partition by' => 'Bölümü tarafından', 'Partition by' => 'Bununla bölümle',
'Partitions' => 'Bölümler', 'Partitions' => 'Bölümler',
'Partition name' => 'BÖlüm adı', 'Partition name' => 'Bölüm adı',
'Values' => 'Değerler', 'Values' => 'Değerler',
'View' => 'Görünüm', 'View' => 'Görünüm',
'View has been dropped.' => 'Görünüm düşürüldü.', 'View has been dropped.' => 'Görünüm silindi.',
'View has been altered.' => 'Görünüm değiştirildi.', 'View has been altered.' => 'Görünüm değiştirildi.',
'View has been created.' => 'Görünüm yaratıldı.', 'View has been created.' => 'Görünüm oluşturuldu.',
'Alter view' => 'Değişim görünüm', 'Alter view' => 'Görünümü değiştir',
'Create view' => 'Görünüm yarat', 'Create view' => 'Görünüm oluştur',
'Indexes' => 'Dizinler', 'Indexes' => 'Dizinler',
'Indexes have been altered.' => 'Dizinler değiştirilidi.', 'Indexes have been altered.' => 'Dizinler değiştirildi.',
'Alter indexes' => 'Dizinleri değiştir', 'Alter indexes' => 'Dizinleri değiştir',
'Add next' => 'Sonraya ekle', 'Add next' => 'Bundan sonra ekle',
'Index Type' => 'Dizin Türü', 'Index Type' => 'Dizin Türü',
'Column (length)' => 'Kolon (uzunluğu)', 'Column (length)' => 'Kolon (uzunluğu)',
'Foreign keys' => 'Dış anahtarlar', 'Foreign keys' => 'Dış anahtarlar',
'Foreign key' => 'Dış anahtar', 'Foreign key' => 'Dış anahtar',
'Foreign key has been dropped.' => 'Dış anahtar düşürüldü.', 'Foreign key has been dropped.' => 'Dış anahtar silindi.',
'Foreign key has been altered.' => 'Dış anahtar değiştir.', 'Foreign key has been altered.' => 'Dış anahtar değiştirildi.',
'Foreign key has been created.' => 'Dış anahtar yarat.', 'Foreign key has been created.' => 'Dış anahtar oluşturuldu.',
'Target table' => 'Hedef tablo', 'Target table' => 'Hedef tablo',
'Change' => 'Değiş', 'Change' => 'Değiştir',
'Source' => 'Kaynak', 'Source' => 'Kaynak',
'Target' => 'Hedef', 'Target' => 'Hedef',
'Add column' => 'Kolon eklde', 'Add column' => 'Kolon ekle',
'Alter' => 'Değiştir', 'Alter' => 'Değiştir',
'Add foreign key' => 'Dış anahtar ekle', 'Add foreign key' => 'Dış anahtar ekle',
'ON DELETE' => 'Silinmek üzere', 'ON DELETE' => 'ON DELETE (Hedefteki Kayıt Silinirse)',
'ON UPDATE' => 'Yükseltilmek üzere', 'ON UPDATE' => 'ON UPDATE (Hedefteki Kayıt Değiştirilirse)',
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Kaynak ve hedef kolonlar aynı veri türü olmak zorunda, hedef kolonda bir dizin ve başvurulan veri bulunmalı.', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Kaynak ve hedef kolonlar aynı veri türünde olmalı, hedef kolonlarda dizin bulunmalı ve başvurulan veri mevcut olmalı.',
'Triggers' => 'Tetikler', 'Triggers' => 'Tetikler',
'Add trigger' => 'Tetik ekle', 'Add trigger' => 'Tetik ekle',
'Trigger has been dropped.' => 'Tetik düşürüldü.', 'Trigger has been dropped.' => 'Tetik silindi.',
'Trigger has been altered.' => 'Tetik değiştirildi.', 'Trigger has been altered.' => 'Tetik değiştirildi.',
'Trigger has been created.' => 'Tetik yaratıldı.', 'Trigger has been created.' => 'Tetik oluşturuldu.',
'Alter trigger' => 'Tetik değiştir.', 'Alter trigger' => 'Tetiği değiştir.',
'Create trigger' => 'Tetik yarat', 'Create trigger' => 'Tetik oluştur',
'Time' => 'Zaman', 'Time' => 'Zaman',
'Event' => 'Olay', 'Event' => 'Olay',
'Name' => 'Ad', 'Name' => 'Ad',
'select' => 'seç', 'select' => 'seç',
'Select' => 'Seç', 'Select' => 'Seç',
'Select data' => 'Veri seç', 'Select data' => 'Veri seç',
'Functions' => 'Fonksiyonlar', 'Functions' => 'Fonksiyonlar',
'Aggregation' => 'Kümeleme', 'Aggregation' => 'Kümeleme',
'Search' => 'Arama', 'Search' => 'Ara',
'anywhere' => 'herhangi bir yer', 'anywhere' => 'hbir yerde',
'Search data in tables' => 'Tablolarda veri ara.', 'Search data in tables' => 'Tablolarda veri ara',
'Sort' => 'Sırala', 'Sort' => 'Sırala',
'descending' => 'azalan', 'descending' => 'azalan',
'Limit' => 'sınır', 'Limit' => 'sınır',
'Text length' => 'Yazı uzunluğu', 'Text length' => 'Yazı uzunluğu',
'Action' => 'Eylem', 'Action' => 'Eylem',
'Full table scan' => 'Tam tablo tarama',
'Unable to select the table' => 'Tablo seçilemedi', 'Unable to select the table' => 'Tablo seçilemedi',
'No rows.' => 'Sıra yok.', 'No rows.' => 'Kayıt yok.',
'%d row(s)' => array('%d sıra)', '%d kadar sıra'), '%d row(s)' => array('%d kayıt', '%d adet kayıt'),
'Page' => 'Sayfa', 'Page' => 'Sayfa',
'last' => 'son', 'last' => 'son',
'Last page' => 'Son sayfa', 'Last page' => 'Son sayfa',
'Load more data' => 'Daha fazla veri yükle',
'Loading' => 'Yükleniyor',
'whole result' => 'tüm sonuç', 'whole result' => 'tüm sonuç',
'%d byte(s)' => array('%d bayt', '%d kadar bayt'), '%d byte(s)' => array('%d bayt', '%d bayt'),
'Import' => thal', 'Import' => çeri Aktar',
'%d row(s) have been imported.' => array('%d sıra ithal edildi.', '%d kadar sıra ithal edildi.'), '%d row(s) have been imported.' => array('%d kayıt içeri aktarıldı.', '%d adet kayıt içeri aktarıldı.'),
// in-place editing in select // in-place editing in select
'Double click on a value to modify it.' => 'Değerin üzerine çift tıklayın ve değiştirin.', 'Ctrl+click on a value to modify it.' => 'Bir değeri değiştirmek için üzerine Ctrl+tıklayın.',
'Use edit link to modify this value.' => 'Değeri değiştirmek için düzenleme bağlantısını kullanın.', 'Use edit link to modify this value.' => 'Değeri değiştirmek için düzenleme bağlantısını kullanın.',
// %s can contain auto-increment value // %s can contain auto-increment value
'Item%s has been inserted.' => 'Öğeler eklendi.', 'Item%s has been inserted.' => 'Kayıt%s eklendi.',
'Item has been deleted.' => 'Öğe silindi.', 'Item has been deleted.' => 'Kayıt silindi.',
'Item has been updated.' => 'Öğe güncellendi.', 'Item has been updated.' => 'Kayıt güncellendi.',
'%d item(s) have been affected.' => array('%d öğe etkilendi.', '%d kadar öğe etkilendi.'), '%d item(s) have been affected.' => array('%d kayıt etkilendi.', '%d adet kayıt etkilendi.'),
'New item' => 'Yeni öğe', 'New item' => 'Yeni kayıt',
'original' => 'orijinal', 'original' => 'orijinal',
// label for value '' in enum data type // label for value '' in enum data type
'empty' => 'boş', 'empty' => 'boş',
'edit' => 'düzen', 'edit' => 'düzenle',
'Edit' => 'Düzen', 'Edit' => 'Düzenle',
'Insert' => 'Ekle', 'Insert' => 'Ekle',
'Save' => 'Kaydet', 'Save' => 'Kaydet',
'Save and continue edit' => 'Kaydet ve düzenlemeye devam et', 'Save and continue edit' => 'Kaydet ve düzenlemeye devam et',
'Save and insert next' => 'Kaydet ve sonrakin ekle', 'Save and insert next' => 'Kaydet ve sonrakini ekle',
'Clone' => 'Klonla', 'Clone' => 'Kopyala',
'Delete' => 'Sil', 'Delete' => 'Sil',
'E-mail' => 'E-posta', 'E-mail' => 'E-posta',
'From' => 'Gönderen', 'From' => 'Gönderen',
'Subject' => 'Konu', 'Subject' => 'Konu',
'Attachments' => 'Ekler', 'Attachments' => 'Ekler',
'Send' => 'Gönder', 'Send' => 'Gönder',
'%d e-mail(s) have been sent.' => array('%d e-posta dönderildi.', '%d kadar e-posta gönderildi.'), '%d e-mail(s) have been sent.' => array('%d e-posta gönderildi.', '%d adet e-posta gönderildi.'),
// data type descriptions // data type descriptions
'Numbers' => 'Sayılar', 'Numbers' => 'Sayılar',
'Date and time' => 'Tarih ve zaman', 'Date and time' => 'Tarih ve zaman',
'Strings' => 'Sözcükler', 'Strings' => 'Dizge',
'Binary' => 'İkili', 'Binary' => 'İkili',
'Lists' => 'Listeler', 'Lists' => 'Listeler',
'Network' => 'Ağ', 'Network' => 'Ağ',
'Geometry' => 'Geometri', 'Geometry' => 'Geometri',
'Relations' => 'İlişkiler', 'Relations' => 'İlişkiler',
'Editor' => 'Düzenleyici', 'Editor' => 'Düzenleyici',
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d // date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
'$1-$3-$5' => '$6.$4.$1', '$1-$3-$5' => '$6.$4.$1',
// hint for date format - use language equivalents for day, month and year shortcuts // hint for date format - use language equivalents for day, month and year shortcuts
'[yyyy]-mm-dd' => 'd.m.[rrrr]', '[yyyy]-mm-dd' => '[yyyy]-aa-gg',
// hint for time format - use language equivalents for hour, minute and second shortcuts
'HH:MM:SS' => 'SS:DD:ss',
'now' => 'şimdi', 'now' => 'şimdi',
'yes' => 'evet',
'no' => 'hayır',
// general SQLite error in create, drop or rename database // general SQLite error in create, drop or rename database
'File exists.' => 'Dosya mevcut.', 'File exists.' => 'Dosya zaten mevcut.',
'Please use one of the extensions %s.' => '%s uzantılarından birini kullanın.', 'Please use one of the extensions %s.' => '%s uzantılarından birini kullanın.',
// PostgreSQL and MS SQL schema support // PostgreSQL and MS SQL schema support
'Alter schema' => 'Değişim şeması', 'Alter schema' => 'Şemayı değiştir',
'Create schema' => 'Yaratım şeması', 'Create schema' => 'Şema oluştur',
'Schema has been dropped.' => 'Şema düşürüldü.', 'Schema has been dropped.' => 'Şema silindi.',
'Schema has been created.' => 'Şema yaratıldı.', 'Schema has been created.' => 'Şema oluşturuldu.',
'Schema has been altered.' => 'Şema değiştirildi.', 'Schema has been altered.' => 'Şema değiştirildi.',
'schema' => 'şema', 'schema' => 'şema',
'Schema' => 'Şema', 'Schema' => 'Şema',
'Invalid schema.' => 'Geçersiz şema.', 'Invalid schema.' => 'Geçersiz şema.',
// PostgreSQL sequences support // PostgreSQL sequences support
'Sequences' => 'Diziler', 'Sequences' => 'Diziler',
'Create sequence' => 'Dizi yarat', 'Create sequence' => 'Dizi oluştur',
'Sequence has been dropped.' => 'Dizi düşürüldü.', 'Sequence has been dropped.' => 'Dizi silindi.',
'Sequence has been created.' => 'Dizi yaratıldı.', 'Sequence has been created.' => 'Dizi oluşturuldu.',
'Sequence has been altered.' => 'Dizi değiştirildi.', 'Sequence has been altered.' => 'Dizi değiştirildi.',
'Alter sequence' => 'Dizi değiştir', 'Alter sequence' => 'Diziyi değiştir',
// PostgreSQL user types support // PostgreSQL user types support
'User types' => 'Kullanıcı türleri', 'User types' => 'Kullanıcı türleri',
'Create type' => 'Tür yarat', 'Create type' => 'Tür oluştur',
'Type has been dropped.' => 'Tür düşürüldü.', 'Type has been dropped.' => 'Tür silindi.',
'Type has been created.' => 'Tür yaratıldı.', 'Type has been created.' => 'Tür oluşturuldu.',
'Alter type' => 'Tür değiştir', 'Alter type' => 'Türü değiştir',
); );

View File

@@ -240,7 +240,7 @@ $translations = array(
'%d row(s) have been imported.' => array('%d рядок було імпортовано.', '%d рядки було імпортовано.', '%d рядків було імпортовано.'), '%d row(s) have been imported.' => array('%d рядок було імпортовано.', '%d рядки було імпортовано.', '%d рядків було імпортовано.'),
// in-place editing in select // in-place editing in select
'Double click on a value to modify it.' => 'Двічі клікніть на значенні щоб змінити його.', 'Ctrl+click on a value to modify it.' => 'Ctrl+клікніть на значенні щоб змінити його.',
'Use edit link to modify this value.' => 'Використовуйте посилання щоб змінити це значення.', 'Use edit link to modify this value.' => 'Використовуйте посилання щоб змінити це значення.',
// %s can contain auto-increment value // %s can contain auto-increment value

View File

@@ -234,6 +234,8 @@ $translations = array(
'Page' => 'xx', 'Page' => 'xx',
'last' => 'xx', 'last' => 'xx',
'Last page' => 'xx', 'Last page' => 'xx',
'Load more data' => 'xx',
'Loading' => 'xx',
'whole result' => 'xx', 'whole result' => 'xx',
'%d byte(s)' => array('xx', 'xx'), '%d byte(s)' => array('xx', 'xx'),
@@ -241,7 +243,7 @@ $translations = array(
'%d row(s) have been imported.' => array('xx', 'xx'), '%d row(s) have been imported.' => array('xx', 'xx'),
// in-place editing in select // in-place editing in select
'Double click on a value to modify it.' => 'xx', 'Ctrl+click on a value to modify it.' => 'xx',
'Use edit link to modify this value.' => 'xx', 'Use edit link to modify this value.' => 'xx',
// %s can contain auto-increment value // %s can contain auto-increment value
@@ -261,6 +263,7 @@ $translations = array(
'Save and insert next' => 'xx', 'Save and insert next' => 'xx',
'Clone' => 'xx', 'Clone' => 'xx',
'Delete' => 'xx', 'Delete' => 'xx',
'You have no privileges to update this table.' => 'xx',
'E-mail' => 'xx', 'E-mail' => 'xx',
'From' => 'xx', 'From' => 'xx',

View File

@@ -244,7 +244,6 @@ $translations = array(
'Alter type' => '更改類型', 'Alter type' => '更改類型',
'Type has been dropped.' => '已刪除類型。', 'Type has been dropped.' => '已刪除類型。',
'Type has been created.' => '已建立類型。', 'Type has been created.' => '已建立類型。',
'Double click on a value to modify it.' => '雙擊以進行修改。',
'Use edit link to modify this value.' => '使用編輯連結來修改。', 'Use edit link to modify this value.' => '使用編輯連結來修改。',
'last' => '最後一頁', 'last' => '最後一頁',
'From server' => '從伺服器', 'From server' => '從伺服器',

View File

@@ -244,7 +244,6 @@ $translations = array(
'Alter type' => '更改类型', 'Alter type' => '更改类型',
'Type has been dropped.' => '已丢弃类型。', 'Type has been dropped.' => '已丢弃类型。',
'Type has been created.' => '已创建类型。', 'Type has been created.' => '已创建类型。',
'Double click on a value to modify it.' => '在值上双击类修改它。',
'Use edit link to modify this value.' => '使用编辑链接来修改该值。', 'Use edit link to modify this value.' => '使用编辑链接来修改该值。',
'last' => '最后', 'last' => '最后',
'From server' => '来自服务器', 'From server' => '来自服务器',

View File

@@ -13,7 +13,7 @@ page_header(lang('Process list'), $error);
?> ?>
<form action="" method="post"> <form action="" method="post">
<table cellspacing="0" onclick="tableClick(event);" class="nowrap checkable"> <table cellspacing="0" onclick="tableClick(event);" ondblclick="tableClick(event, true);" class="nowrap checkable">
<?php <?php
// HTML valid because there is always at least one process // HTML valid because there is always at least one process
$i = -1; $i = -1;

View File

@@ -18,7 +18,7 @@ foreach ($fields as $key => $field) {
$name = $adminer->fieldName($field); $name = $adminer->fieldName($field);
if (isset($field["privileges"]["select"]) && $name != "") { if (isset($field["privileges"]["select"]) && $name != "") {
$columns[$key] = html_entity_decode(strip_tags($name)); $columns[$key] = html_entity_decode(strip_tags($name));
if (ereg('text|lob|geometry|point|linestring|polygon', $field["type"])) { if (is_shortable($field)) {
$text_length = $adminer->selectLengthProcess(); $text_length = $adminer->selectLengthProcess();
} }
} }
@@ -46,7 +46,7 @@ if ($_GET["val"] && is_ajax()) {
header("Content-Type: text/plain; charset=utf-8"); header("Content-Type: text/plain; charset=utf-8");
foreach ($_GET["val"] as $unique_idf => $row) { foreach ($_GET["val"] as $unique_idf => $row) {
$as = convert_field($fields[key($row)]); $as = convert_field($fields[key($row)]);
echo $connection->result("SELECT" . limit(($as ? $as : idf_escape(key($row))) . " FROM " . table($TABLE), " WHERE " . where_check($unique_idf) . ($where ? " AND " . implode(" AND ", $where) : "") . ($order ? " ORDER BY " . implode(", ", $order) : ""), 1)); echo $connection->result("SELECT" . limit(($as ? $as : idf_escape(key($row))) . " FROM " . table($TABLE), " WHERE " . where_check($unique_idf, $fields) . ($where ? " AND " . implode(" AND ", $where) : "") . ($order ? " ORDER BY " . implode(", ", $order) : ""), 1));
} }
exit; exit;
} }
@@ -80,7 +80,7 @@ if ($_POST && !$error) {
$union = array(); $union = array();
foreach ($_POST["check"] as $val) { foreach ($_POST["check"] as $val) {
// where is not unique so OR can't be used // where is not unique so OR can't be used
$union[] = "(SELECT" . limit($from, "\nWHERE " . ($where ? implode(" AND ", $where) . " AND " : "") . where_check($val) . $group_by, 1) . ")"; $union[] = "(SELECT" . limit($from, "\nWHERE " . ($where ? implode(" AND ", $where) . " AND " : "") . where_check($val, $fields) . $group_by, 1) . ")";
} }
$query = implode(" UNION ALL ", $union); $query = implode(" UNION ALL ", $union);
} }
@@ -122,7 +122,7 @@ if ($_POST && !$error) {
} else { } else {
foreach ((array) $_POST["check"] as $val) { foreach ((array) $_POST["check"] as $val) {
// where is not unique so OR can't be used // where is not unique so OR can't be used
$result = queries($command . limit1($query, "\nWHERE " . where_check($val))); $result = queries($command . limit1($query, "\nWHERE " . where_check($val, $fields)));
if (!$result) { if (!$result) {
break; break;
} }
@@ -141,7 +141,7 @@ if ($_POST && !$error) {
//! display edit page in case of an error //! display edit page in case of an error
} elseif (!$_POST["import"]) { // modify } elseif (!$_POST["import"]) { // modify
if (!$_POST["val"]) { if (!$_POST["val"]) {
$error = lang('Double click on a value to modify it.'); $error = lang('Ctrl+click on a value to modify it.');
} else { } else {
$result = true; $result = true;
$affected = 0; $affected = 0;
@@ -152,7 +152,7 @@ if ($_POST && !$error) {
$set[] = idf_escape($key) . " = " . (ereg('char|text', $fields[$key]["type"]) || $val != "" ? $adminer->processInput($fields[$key], $val) : "NULL"); $set[] = idf_escape($key) . " = " . (ereg('char|text', $fields[$key]["type"]) || $val != "" ? $adminer->processInput($fields[$key], $val) : "NULL");
} }
$query = table($TABLE) . " SET " . implode(", ", $set); $query = table($TABLE) . " SET " . implode(", ", $set);
$where2 = " WHERE " . where_check($unique_idf) . ($where ? " AND " . implode(" AND ", $where) : ""); $where2 = " WHERE " . where_check($unique_idf, $fields) . ($where ? " AND " . implode(" AND ", $where) : "");
$result = queries("UPDATE" . ($is_group ? " $query$where2" : limit1($query, $where2))); // can change row on a different page without unique key $result = queries("UPDATE" . ($is_group ? " $query$where2" : limit1($query, $where2))); // can change row on a different page without unique key
if (!$result) { if (!$result) {
break; break;
@@ -171,7 +171,7 @@ if ($_POST && !$error) {
begin(); begin();
$separator = ($_POST["separator"] == "csv" ? "," : ($_POST["separator"] == "tsv" ? "\t" : ";")); $separator = ($_POST["separator"] == "csv" ? "," : ($_POST["separator"] == "tsv" ? "\t" : ";"));
foreach ($matches[0] as $key => $val) { foreach ($matches[0] as $key => $val) {
preg_match_all("~((\"[^\"]*\")+|[^$separator]*)$separator~", $val . $separator, $matches2); preg_match_all("~((?>\"[^\"]*\")+|[^$separator]*)$separator~", $val . $separator, $matches2);
if (!$key && !array_diff($matches2[1], $cols)) { //! doesn't work with column names containing ",\n if (!$key && !array_diff($matches2[1], $cols)) { //! doesn't work with column names containing ",\n
// first row corresponds to column names - use it for table structure // first row corresponds to column names - use it for table structure
$cols = $matches2[1]; $cols = $matches2[1];
@@ -282,7 +282,7 @@ if (!$columns) {
} else { } else {
$backward_keys = $adminer->backwardKeys($TABLE, $table_name); $backward_keys = $adminer->backwardKeys($TABLE, $table_name);
echo "<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' onkeydown='return editingKeydown(event);'>\n"; echo "<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n";
echo "<thead><tr>" . (!$group && $select ? "" : "<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='" . h($_GET["modify"] ? remove_from_uri("modify") : $_SERVER["REQUEST_URI"] . "&modify=1") . "'>" . lang('edit') . "</a>"); echo "<thead><tr>" . (!$group && $select ? "" : "<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='" . h($_GET["modify"] ? remove_from_uri("modify") : $_SERVER["REQUEST_URI"] . "&modify=1") . "'>" . lang('edit') . "</a>");
$names = array(); $names = array();
$functions = array(); $functions = array();
@@ -345,12 +345,12 @@ if (!$columns) {
$val = $adminer->editVal($val, $field); $val = $adminer->editVal($val, $field);
if ($val !== null) { if ($val !== null) {
if (ereg('blob|bytea|raw|file', $field["type"]) && $val != "") { if (ereg('blob|bytea|raw|file', $field["type"]) && $val != "") {
$link = h(ME . 'download=' . urlencode($TABLE) . '&field=' . urlencode($key) . $unique_idf); $link = ME . 'download=' . urlencode($TABLE) . '&field=' . urlencode($key) . $unique_idf;
} }
if ($val === "") { // === - may be int if ($val === "") { // === - may be int
$val = "&nbsp;"; $val = "&nbsp;";
} elseif (is_utf8($val)) { } elseif (is_utf8($val)) {
if ($text_length != "" && ereg('text|lob|geometry|point|linestring|polygon', $field["type"])) { if ($text_length != "" && is_shortable($field)) {
$val = shorten_utf8($val, max(0, +$text_length)); // usage of LEFT() would reduce traffic but complicate query - expected average speedup: .001 s VS .01 s on local network $val = shorten_utf8($val, max(0, +$text_length)); // usage of LEFT() would reduce traffic but complicate query - expected average speedup: .001 s VS .01 s on local network
} else { } else {
$val = h($val); $val = h($val);
@@ -364,7 +364,7 @@ if (!$columns) {
foreach ($foreign_key["source"] as $i => $source) { foreach ($foreign_key["source"] as $i => $source) {
$link .= where_link($i, $foreign_key["target"][$i], $rows[$n][$source]); $link .= where_link($i, $foreign_key["target"][$i], $rows[$n][$source]);
} }
$link = h(($foreign_key["db"] != "" ? preg_replace('~([?&]db=)[^&]+~', '\\1' . urlencode($foreign_key["db"]), ME) : ME) . 'select=' . urlencode($foreign_key["table"]) . $link); // InnoDB supports non-UNIQUE keys $link = ($foreign_key["db"] != "" ? preg_replace('~([?&]db=)[^&]+~', '\\1' . urlencode($foreign_key["db"]), ME) : ME) . 'select=' . urlencode($foreign_key["table"]) . $link; // InnoDB supports non-UNIQUE keys
if (count($foreign_key["source"]) == 1) { if (count($foreign_key["source"]) == 1) {
break; break;
} }
@@ -372,15 +372,15 @@ if (!$columns) {
} }
} }
if ($key == "COUNT(*)") { //! columns looking like functions if ($key == "COUNT(*)") { //! columns looking like functions
$link = h(ME . "select=" . urlencode($TABLE)); $link = ME . "select=" . urlencode($TABLE);
$i = 0; $i = 0;
foreach ((array) $_GET["where"] as $v) { foreach ((array) $_GET["where"] as $v) {
if (!array_key_exists($v["col"], $unique_array)) { if (!array_key_exists($v["col"], $unique_array)) {
$link .= h(where_link($i++, $v["col"], $v["val"], $v["op"])); $link .= where_link($i++, $v["col"], $v["val"], $v["op"]);
} }
} }
foreach ($unique_array as $k => $v) { foreach ($unique_array as $k => $v) {
$link .= h(where_link($i++, $k, $v)); $link .= where_link($i++, $k, $v);
} }
} }
} }
@@ -403,7 +403,7 @@ if (!$columns) {
$text = ereg('text|lob', $field["type"]); $text = ereg('text|lob', $field["type"]);
echo (($_GET["modify"] && $editable) || $value !== null echo (($_GET["modify"] && $editable) || $value !== null
? "<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]'>") ? "<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]'>")
: "<td id='$id' ondblclick=\"" . ($editable ? "selectDblClick(this, event" . ($long ? ", 2" : ($text ? ", 1" : "")) . ")" : "alert('" . h(lang('Use edit link to modify this value.')) . "')") . ";\">" . $adminer->selectVal($val, $link, $field) : "<td id='$id' onclick=\"selectClick(this, event, " . ($long ? 2 : ($text ? 1 : 0)) . ($editable ? "" : ", '" . h(lang('Use edit link to modify this value.')) . "'") . ");\">" . $adminer->selectVal($val, $link, $field)
); );
} }
} }
@@ -452,7 +452,7 @@ if (!$columns) {
if ($adminer->selectCommandPrint()) { if ($adminer->selectCommandPrint()) {
?> ?>
<fieldset><legend><?php echo lang('Edit'); ?></legend><div> <fieldset><legend><?php echo lang('Edit'); ?></legend><div>
<input type="submit" value="<?php echo lang('Save'); ?>"<?php echo ($_GET["modify"] ? '' : ' title="' . lang('Double click on a value to modify it.') . '" class="jsonly"'); ?>> <input type="submit" value="<?php echo lang('Save'); ?>"<?php echo ($_GET["modify"] ? '' : ' title="' . lang('Ctrl+click on a value to modify it.') . '" class="jsonly"'); ?>>
<input type="submit" name="edit" value="<?php echo lang('Edit'); ?>"> <input type="submit" name="edit" value="<?php echo lang('Edit'); ?>">
<input type="submit" name="clone" value="<?php echo lang('Clone'); ?>"> <input type="submit" name="clone" value="<?php echo lang('Clone'); ?>">
<input type="submit" name="delete" value="<?php echo lang('Delete'); ?>" onclick="return confirm('<?php echo lang('Are you sure?'); ?> (' + (this.form['all'].checked ? <?php echo $found_rows; ?> : formChecked(this, /check/)) + ')');"> <input type="submit" name="delete" value="<?php echo lang('Delete'); ?>" onclick="return confirm('<?php echo lang('Are you sure?'); ?> (' + (this.form['all'].checked ? <?php echo $found_rows; ?> : formChecked(this, /check/)) + ')');">
@@ -474,12 +474,12 @@ if (!$columns) {
echo "<input type='file' name='csv_file'> "; echo "<input type='file' name='csv_file'> ";
echo html_select("separator", array("csv" => "CSV,", "csv;" => "CSV;", "tsv" => "TSV"), $adminer_import["format"], 1); // 1 - select echo html_select("separator", array("csv" => "CSV,", "csv;" => "CSV;", "tsv" => "TSV"), $adminer_import["format"], 1); // 1 - select
echo " <input type='submit' name='import' value='" . lang('Import') . "'>"; echo " <input type='submit' name='import' value='" . lang('Import') . "'>";
echo "<input type='hidden' name='token' value='$token'>\n";
echo "</div></fieldset>\n"; echo "</div></fieldset>\n";
} }
$adminer->selectEmailPrint(array_filter($email_fields, 'strlen'), $columns); $adminer->selectEmailPrint(array_filter($email_fields, 'strlen'), $columns);
echo "<p><input type='hidden' name='token' value='$token'></p>\n";
echo "</form>\n"; echo "</form>\n";
} }
} }

View File

@@ -205,7 +205,7 @@ if ($history) {
print_fieldset("history", lang('History'), $_GET["history"] != ""); print_fieldset("history", lang('History'), $_GET["history"] != "");
foreach ($history as $key => $val) { foreach ($history as $key => $val) {
list($q, $time) = $val; list($q, $time) = $val;
echo '<a href="' . h(ME . "sql=&history=$key") . '">' . lang('Edit') . "</a> <span class='time'>" . @date("H:i:s", $time) . "</span> <code class='jush-$jush'>" . shorten_utf8(ltrim(str_replace("\n", " ", str_replace("\r", "", preg_replace('~^(#|-- ).*~m', '', $q)))), 80, "</code>") . "<br>\n"; // @ - time zone may be not set echo '<a href="' . h(ME . "sql=&history=$key") . '">' . lang('Edit') . "</a> <span class='time' title='" . @date('Y-m-d', $time) . "'>" . @date("H:i:s", $time) . "</span> <code class='jush-$jush'>" . shorten_utf8(ltrim(str_replace("\n", " ", str_replace("\r", "", preg_replace('~^(#|-- ).*~m', '', $q)))), 80, "</code>") . "<br>\n"; // @ - time zone may be not set
} }
echo "<input type='submit' name='clear' value='" . lang('Clear') . "'>\n"; echo "<input type='submit' name='clear' value='" . lang('Clear') . "'>\n";
echo "<a href='" . h(ME . "sql=&history=all") . "'>" . lang('Edit all') . "</a>\n"; echo "<a href='" . h(ME . "sql=&history=all") . "'>" . lang('Edit all') . "</a>\n";

View File

@@ -11,7 +11,7 @@ form { margin: 0; }
table { margin: 1em 20px 0 0; border: 0; border-top: 1px solid #999; border-left: 1px solid #999; font-size: 90%; } table { margin: 1em 20px 0 0; border: 0; border-top: 1px solid #999; border-left: 1px solid #999; font-size: 90%; }
td, th { border: 0; border-right: 1px solid #999; border-bottom: 1px solid #999; padding: .2em .3em; } td, th { border: 0; border-right: 1px solid #999; border-bottom: 1px solid #999; padding: .2em .3em; }
th { background: #eee; text-align: left; } th { background: #eee; text-align: left; }
thead th { text-align: center; } thead th { text-align: center; padding: .2em .5em; }
thead td, thead th { background: #ddf; } thead td, thead th { background: #ddf; }
fieldset { display: inline; vertical-align: top; padding: .5em .8em; margin: .8em .5em 0 0; border: 1px solid #999; } fieldset { display: inline; vertical-align: top; padding: .5em .8em; margin: .8em .5em 0 0; border: 1px solid #999; }
p { margin: .8em 20px 0 0; } p { margin: .8em 20px 0 0; }
@@ -45,6 +45,7 @@ input[type=image] { vertical-align: middle; }
.active { font-weight: bold; } .active { font-weight: bold; }
.sqlarea { width: 98%; } .sqlarea { width: 98%; }
.icon { width: 18px; height: 18px; } .icon { width: 18px; height: 18px; }
.size { width: 6ex; }
#menu { position: absolute; margin: 10px 0 0; padding: 0 0 30px 0; top: 2em; left: 0; width: 19em; } #menu { position: absolute; margin: 10px 0 0; padding: 0 0 30px 0; top: 2em; left: 0; width: 19em; }
#menu p { padding: .8em 1em; margin: 0; border-bottom: 1px solid #ccc; } #menu p { padding: .8em 1em; margin: 0; border-bottom: 1px solid #ccc; }
#dbs { overflow: hidden; } #dbs { overflow: hidden; }

View File

@@ -63,6 +63,9 @@ function typePassword(el, disable) {
} }
} }
/** Hide or show some login rows for selected driver
* @param HTMLSelectElement
*/
function loginDriver(driver) { function loginDriver(driver) {
var trs = parentTag(driver, 'table').rows; var trs = parentTag(driver, 'table').rows;
for (var i=1; i < trs.length - 1; i++) { for (var i=1; i < trs.length - 1; i++) {
@@ -355,6 +358,15 @@ function columnShow(checked, column) {
} }
} }
/** Hide column with default values in narrow window
*/
function editingHideDefaults() {
if (innerWidth < document.documentElement.scrollWidth) {
document.getElementById('defaults').checked = false;
columnShow(false, 5);
}
}
/** Display partition options /** Display partition options
* @param HTMLSelectElement * @param HTMLSelectElement
*/ */

View File

@@ -114,9 +114,10 @@ function formChecked(el, name) {
/** Select clicked row /** Select clicked row
* @param MouseEvent * @param MouseEvent
* @param [boolean] force click
*/ */
function tableClick(event) { function tableClick(event, click) {
var click = (!window.getSelection || getSelection().isCollapsed); click = (click || !window.getSelection || getSelection().isCollapsed);
var el = event.target || event.srcElement; var el = event.target || event.srcElement;
while (!/^tr$/i.test(el.tagName)) { while (!/^tr$/i.test(el.tagName)) {
if (/^(table|a|input|textarea)$/i.test(el.tagName)) { if (/^(table|a|input|textarea)$/i.test(el.tagName)) {
@@ -130,7 +131,7 @@ function tableClick(event) {
} }
el = el.firstChild.firstChild; el = el.firstChild.firstChild;
if (click) { if (click) {
el.click && el.click(); el.checked = !el.checked;
el.onclick && el.onclick(); el.onclick && el.onclick();
} }
trCheck(el); trCheck(el);
@@ -411,11 +412,16 @@ function ajaxSetHtml(url) {
* @param HTMLElement * @param HTMLElement
* @param MouseEvent * @param MouseEvent
* @param number display textarea instead of input, 2 - load long text * @param number display textarea instead of input, 2 - load long text
* @param string warning to display
*/ */
function selectDblClick(td, event, text) { function selectClick(td, event, text, warning) {
if (/input|textarea/i.test(td.firstChild.tagName)) { var target = event.target || event.srcElement;
if (!event.ctrlKey || /input|textarea/i.test(td.firstChild.tagName) || /^a$/i.test(target.tagName)) {
return; return;
} }
if (warning) {
return alert(warning);
}
var original = td.innerHTML; var original = td.innerHTML;
text = text || /\n/.test(original); text = text || /\n/.test(original);
var input = document.createElement(text ? 'textarea' : 'input'); var input = document.createElement(text ? 'textarea' : 'input');

View File

@@ -113,7 +113,7 @@ if ($_POST) {
if ($old_pass != "") { if ($old_pass != "") {
$row["hashed"] = true; $row["hashed"] = true;
} }
$grants[(DB != "" && !isset($_GET["host"]) ? idf_escape(addcslashes(DB, "%_")) : "") . ".*"] = array(); $grants[(DB == "" || $grants ? "" : idf_escape(addcslashes(DB, "%_"))) . ".*"] = array();
} }
?> ?>

View File

@@ -1,3 +1,21 @@
Adminer 3.6.2 (released 2012-12-21):
Edit values by Ctrl+click instead of double click
Don't select row on double click
Support NULL in routine calls
Shorten printed values in varchar fields
Display table default values on wide screens
Display date in SQL history
HTML5 input fields
Display warning for missing UPDATE privilege
Fix switching language on first load
Support enabled mbstring.func_overload
MySQL: Prolong comment length since MySQL 5.5
PostgreSQL: Fix process list in version 9.2
MS SQL: Support databases starting with number
Adminer 3.6.1 (released 2012-09-17):
Fix compiled version on PHP with multibyte support
Adminer 3.6.0 (released 2012-09-16): Adminer 3.6.0 (released 2012-09-16):
Load more data in select Load more data in select
Edit strings with \n in textarea Edit strings with \n in textarea

View File

@@ -9,7 +9,11 @@ function add_apo_slashes($s) {
} }
function add_quo_slashes($s) { function add_quo_slashes($s) {
return addcslashes($s, "\n\r\$\"\\"); $return = $s;
$return = addcslashes($return, "\n\r\$\"\\");
$return = preg_replace('~\0(?![0-7])~', '\\\\0', $return);
$return = addcslashes($return, "\0");
return $return;
} }
function remove_lang($match) { function remove_lang($match) {
@@ -271,6 +275,12 @@ function compile_file($match) {
return '"' . add_quo_slashes($file) . '"'; return '"' . add_quo_slashes($file) . '"';
} }
$project = "adminer";
if ($_SERVER["argv"][1] == "editor") {
$project = "editor";
array_shift($_SERVER["argv"]);
}
$driver = ""; $driver = "";
if (file_exists(dirname(__FILE__) . "/adminer/drivers/" . $_SERVER["argv"][1] . ".inc.php")) { if (file_exists(dirname(__FILE__) . "/adminer/drivers/" . $_SERVER["argv"][1] . ".inc.php")) {
$driver = $_SERVER["argv"][1]; $driver = $_SERVER["argv"][1];
@@ -280,12 +290,15 @@ if (file_exists(dirname(__FILE__) . "/adminer/drivers/" . $_SERVER["argv"][1] .
unset($_COOKIE["adminer_lang"]); unset($_COOKIE["adminer_lang"]);
$_SESSION["lang"] = $_SERVER["argv"][1]; // Adminer functions read language from session $_SESSION["lang"] = $_SERVER["argv"][1]; // Adminer functions read language from session
include dirname(__FILE__) . "/adminer/include/lang.inc.php"; include dirname(__FILE__) . "/adminer/include/lang.inc.php";
if (isset($_SESSION["lang"])) { if (isset($langs[$_SESSION["lang"]])) {
if (isset($_SERVER["argv"][2]) || !isset($langs[$_SESSION["lang"]])) {
echo "Usage: php compile.php [driver] [lang]\nPurpose: Compile adminer[-driver][-lang].php and editor[-driver][-lang].php.\n";
exit(1);
}
include dirname(__FILE__) . "/adminer/lang/$_SESSION[lang].inc.php"; include dirname(__FILE__) . "/adminer/lang/$_SESSION[lang].inc.php";
array_shift($_SERVER["argv"]);
}
if ($_SERVER["argv"][1]) {
echo "Usage: php compile.php [editor] [driver] [lang]\n";
echo "Purpose: Compile adminer[-driver][-lang].php or editor[-driver][-lang].php.\n";
exit(1);
} }
// check function definition in drivers // check function definition in drivers
@@ -306,59 +319,57 @@ foreach (glob(dirname(__FILE__) . "/adminer/drivers/" . ($driver ? $driver : "*"
include dirname(__FILE__) . "/adminer/include/pdo.inc.php"; include dirname(__FILE__) . "/adminer/include/pdo.inc.php";
$features = array("call" => "routine", "dump", "event", "privileges", "procedure" => "routine", "processlist", "routine", "scheme", "sequence", "status", "trigger", "type", "user" => "privileges", "variables", "view"); $features = array("call" => "routine", "dump", "event", "privileges", "procedure" => "routine", "processlist", "routine", "scheme", "sequence", "status", "trigger", "type", "user" => "privileges", "variables", "view");
foreach (array("adminer", "editor") as $project) { $lang_ids = array(); // global variable simplifies usage in a callback function
$lang_ids = array(); // global variable simplifies usage in a callback function $file = file_get_contents(dirname(__FILE__) . "/$project/index.php");
$file = file_get_contents(dirname(__FILE__) . "/$project/index.php"); if ($driver) {
if ($driver) { $connection = (object) array("server_info" => 5.1); // MySQL support is version specific
$connection = (object) array("server_info" => 5.1); // MySQL support is version specific $_GET[$driver] = true; // to load the driver
$_GET[$driver] = true; // to load the driver include_once dirname(__FILE__) . "/adminer/drivers/$driver.inc.php";
include_once dirname(__FILE__) . "/adminer/drivers/$driver.inc.php"; foreach ($features as $key => $feature) {
foreach ($features as $key => $feature) { if (!support($feature)) {
if (!support($feature)) { if (!is_int($key)) {
if (!is_int($key)) { $feature = $key;
$feature = $key;
}
$file = str_replace("} elseif (isset(\$_GET[\"$feature\"])) {\n\tinclude \"./$feature.inc.php\";\n", "", $file);
} }
} $file = str_replace("} elseif (isset(\$_GET[\"$feature\"])) {\n\tinclude \"./$feature.inc.php\";\n", "", $file);
if (!support("routine")) {
$file = str_replace("if (isset(\$_GET[\"callf\"])) {\n\t\$_GET[\"call\"] = \$_GET[\"callf\"];\n}\nif (isset(\$_GET[\"function\"])) {\n\t\$_GET[\"procedure\"] = \$_GET[\"function\"];\n}\n", "", $file);
} }
} }
$file = preg_replace_callback('~\\b(include|require) "([^"]*)";~', 'put_file', $file); if (!support("routine")) {
$file = str_replace('include "../adminer/include/coverage.inc.php";', '', $file); $file = str_replace("if (isset(\$_GET[\"callf\"])) {\n\t\$_GET[\"call\"] = \$_GET[\"callf\"];\n}\nif (isset(\$_GET[\"function\"])) {\n\t\$_GET[\"procedure\"] = \$_GET[\"function\"];\n}\n", "", $file);
if ($driver) {
$file = preg_replace('(include "../adminer/drivers/(?!' . preg_quote($driver) . ').*\\s*)', '', $file);
} }
$file = preg_replace_callback('~\\b(include|require) "([^"]*)";~', 'put_file', $file); // bootstrap.inc.php
if ($driver) {
foreach ($features as $feature) {
if (!support($feature)) {
$file = preg_replace("((\t*)" . preg_quote('if (support("' . $feature . '")') . ".*\n\\1\\})sU", '', $file);
}
}
if (count($drivers) == 1) {
$file = str_replace('<?php echo html_select("driver", $drivers, DRIVER); ?>', "<input type='hidden' name='driver' value='" . ($driver == "mysql" ? "server" : $driver) . "'>" . reset($drivers), $file);
}
}
$file = preg_replace_callback("~lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])~s", 'lang_ids', $file);
$file = preg_replace_callback('~\\b(include|require) "([^"]*\\$LANG.inc.php)";~', 'put_file_lang', $file);
$file = str_replace("\r", "", $file);
if ($_SESSION["lang"]) {
// single language version
$file = preg_replace_callback("~(<\\?php\\s*echo )?lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])(;\\s*\\?>)?~s", 'remove_lang', $file);
$file = str_replace("<?php switch_lang(); ?>\n", "", $file);
$file = str_replace('<?php echo $LANG; ?>', $_SESSION["lang"], $file);
}
$file = str_replace('<script type="text/javascript" src="static/editing.js"></script>' . "\n", "", $file);
$file = preg_replace_callback("~compile_file\\('([^']+)'(?:, '([^']*)')?\\)~", 'compile_file', $file); // integrate static files
$replace = 'h(preg_replace("~\\\\\\\\?.*~", "", ME)) . "?file=\\1&amp;version=' . $VERSION;
$file = preg_replace('~\\.\\./adminer/static/(default\\.css|functions\\.js|favicon\\.ico)~', '<?php echo ' . $replace . '"; ?>', $file);
$file = preg_replace('~\\.\\./adminer/static/([^\'"]*)~', '" . ' . $replace, $file);
$file = preg_replace("~<\\?php\\s*\\?>\n?|\\?>\n?<\\?php~", '', $file);
$file = php_shrink($file);
$filename = $project . (preg_match('~-dev$~', $VERSION) ? "" : "-$VERSION") . ($driver ? "-$driver" : "") . ($_SESSION["lang"] ? "-$_SESSION[lang]" : "") . ".php";
fwrite(fopen($filename, "w"), $file); // file_put_contents() since PHP 5
echo "$filename created (" . strlen($file) . " B).\n";
} }
$file = preg_replace_callback('~\\b(include|require) "([^"]*)";~', 'put_file', $file);
$file = str_replace('include "../adminer/include/coverage.inc.php";', '', $file);
if ($driver) {
$file = preg_replace('(include "../adminer/drivers/(?!' . preg_quote($driver) . ').*\\s*)', '', $file);
}
$file = preg_replace_callback('~\\b(include|require) "([^"]*)";~', 'put_file', $file); // bootstrap.inc.php
if ($driver) {
foreach ($features as $feature) {
if (!support($feature)) {
$file = preg_replace("((\t*)" . preg_quote('if (support("' . $feature . '")') . ".*\n\\1\\})sU", '', $file);
}
}
if (count($drivers) == 1) {
$file = str_replace('<?php echo html_select("driver", $drivers, DRIVER); ?>', "<input type='hidden' name='driver' value='" . ($driver == "mysql" ? "server" : $driver) . "'>" . reset($drivers), $file);
}
}
$file = preg_replace_callback("~lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])~s", 'lang_ids', $file);
$file = preg_replace_callback('~\\b(include|require) "([^"]*\\$LANG.inc.php)";~', 'put_file_lang', $file);
$file = str_replace("\r", "", $file);
if ($_SESSION["lang"]) {
// single language version
$file = preg_replace_callback("~(<\\?php\\s*echo )?lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])(;\\s*\\?>)?~s", 'remove_lang', $file);
$file = str_replace("<?php switch_lang(); ?>\n", "", $file);
$file = str_replace('<?php echo $LANG; ?>', $_SESSION["lang"], $file);
}
$file = str_replace('<script type="text/javascript" src="static/editing.js"></script>' . "\n", "", $file);
$file = preg_replace_callback("~compile_file\\('([^']+)'(?:, '([^']*)')?\\)~", 'compile_file', $file); // integrate static files
$replace = 'h(preg_replace("~\\\\\\\\?.*~", "", ME)) . "?file=\\1&amp;version=' . $VERSION;
$file = preg_replace('~\\.\\./adminer/static/(default\\.css|functions\\.js|favicon\\.ico)~', '<?php echo ' . $replace . '"; ?>', $file);
$file = preg_replace('~\\.\\./adminer/static/([^\'"]*)~', '" . ' . $replace, $file);
$file = preg_replace("~<\\?php\\s*\\?>\n?|\\?>\n?<\\?php~", '', $file);
$file = php_shrink($file);
$filename = $project . (preg_match('~-dev$~', $VERSION) ? "" : "-$VERSION") . ($driver ? "-$driver" : "") . ($_SESSION["lang"] ? "-$_SESSION[lang]" : "") . ".php";
fwrite(fopen($filename, "w"), $file); // file_put_contents() since PHP 5
echo "$filename created (" . strlen($file) . " B).\n";

View File

@@ -51,7 +51,10 @@ html/*\*/>/*/*/body table thead input {margin-right: 5px;}
html/*\*/>/*/*/body input[name="delete"], html/*\*/>/*/*/body input[name="drop"] {background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHSSURBVHjapFM5bsJQEB2zSIDFJrHYpEtyAyoKJAp6CrqIkBPkNDlBAKXjBEgUpKOBCyQNijFiEZvZl8z7wsjESYpkpNFfPO/Nmz9j6Xg80n/M9fWi3W7fMOnd4XAo8qogAbvO5xKvL6lU6s0aL1kVMDjP5ye/36+Gw2FyOp3EQFqtVtTr9WixWHT5/JhOp6s2ghP4ORaLyaFQiGazGa3Xa0HgdrvJ6/WSpmk0Go0MjnvIZDLVM0Gr1brm/WskEkkA3O/3abvdQjq5XC6xgoiVka7rNB6PNT6ns9nsu+OkpODxeBLBYJAGgwHt9/uzQ8Vms6Hdbie+KYqC+ASTFrARBMx2HwgEaDKZiHqn0yktl0uxtzrMMAyKx+MCc+4Cs13hwQCC1GQy+W3Lms2mUIUygbEqEBLNun8z8zswVgUfLO0WD4Z6kekn8/l8okNM8GFVUMYDoVWQ6HA4bEAzoyzL1O12kbRsJajwhYZhiUajJEnShWSAQaqqKnU6HahEGysXg9RoNPJ8+cwZZLSKp47m8/k5Kxzg4XBocNxDLper2ka5Xq+LUeatilahJLN1mEJ+ZDHKJthGAKvVauJnYi9ysHIqQee1xOsLg3/+mf5inwIMAJMhb74NwG5wAAAAAElFTkSuQmCC") no-repeat scroll left center; padding:1px 5px 1px 18px; border:0; cursor:pointer; font-size:.9em;} html/*\*/>/*/*/body input[name="delete"], html/*\*/>/*/*/body input[name="drop"] {background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHSSURBVHjapFM5bsJQEB2zSIDFJrHYpEtyAyoKJAp6CrqIkBPkNDlBAKXjBEgUpKOBCyQNijFiEZvZl8z7wsjESYpkpNFfPO/Nmz9j6Xg80n/M9fWi3W7fMOnd4XAo8qogAbvO5xKvL6lU6s0aL1kVMDjP5ye/36+Gw2FyOp3EQFqtVtTr9WixWHT5/JhOp6s2ghP4ORaLyaFQiGazGa3Xa0HgdrvJ6/WSpmk0Go0MjnvIZDLVM0Gr1brm/WskEkkA3O/3abvdQjq5XC6xgoiVka7rNB6PNT6ns9nsu+OkpODxeBLBYJAGgwHt9/uzQ8Vms6Hdbie+KYqC+ASTFrARBMx2HwgEaDKZiHqn0yktl0uxtzrMMAyKx+MCc+4Cs13hwQCC1GQy+W3Lms2mUIUygbEqEBLNun8z8zswVgUfLO0WD4Z6kekn8/l8okNM8GFVUMYDoVWQ6HA4bEAzoyzL1O12kbRsJajwhYZhiUajJEnShWSAQaqqKnU6HahEGysXg9RoNPJ8+cwZZLSKp47m8/k5Kxzg4XBocNxDLper2ka5Xq+LUeatilahJLN1mEJ+ZDHKJthGAKvVauJnYi9ysHIqQee1xOsLg3/+mf5inwIMAJMhb74NwG5wAAAAAElFTkSuQmCC") no-repeat scroll left center; padding:1px 5px 1px 18px; border:0; cursor:pointer; font-size:.9em;}
html/*\*/>/*/*/body input[name="delete"]:hover, html/*\*/>/*/*/body input[name="drop"]:hover {color:red; background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJdSURBVDjLpZP7S1NhGMf9W7YfogSJboSEUVCY8zJ31trcps6zTI9bLGJpjp1hmkGNxVz4Q6ildtXKXzJNbJRaRmrXoeWx8tJOTWptnrNryre5YCYuI3rh+8vL+/m8PA/PkwIg5X+y5mJWrxfOUBXm91QZM6UluUmthntHqplxUml2lciF6wrmdHriI0Wx3xw2hAediLwZRWRkCPzdDswaSvGqkGCfq8VEUsEyPF1O8Qu3O7A09RbRvjuIttsRbT6HHzebsDjcB4/JgFFlNv9MnkmsEszodIIY7Oaut2OJcSF68Qx8dgv8tmqEL1gQaaARtp5A+N4NzB0lMXxon/uxbI8gIYjB9HytGYuusfiPIQcN71kjgnW6VeFOkgh3XcHLvAwMSDPohOADdYQJdF1FtLMZPmslvhZJk2ahkgRvq4HHUoWHRDqTEDDl2mDkfheiDgt8pw340/EocuClCuFvboQzb0cwIZgki4KhzlaE6w0InipbVzBfqoK/qRH94i0rgokSFeO11iBkp8EdV8cfJo0yD75aE2ZNRvSJ0lZKcBXLaUYmQrCzDT6tDN5SyRqYlWeDLZAg0H4JQ+Jt6M3atNLE10VSwQsN4Z6r0CBwqzXesHmV+BeoyAUri8EyMfi2FowXS5dhd7doo2DVII0V5BAjigP89GEVAtda8b2ehodU4rNaAW+dGfzlFkyo89GTlcrHYCLpKD+V7yeeHNzLjkp24Uu1Ed6G8/F8qjqGRzlbl2H2dzjpMg1KdwsHxOlmJ7GTeZC/nesXbeZ6c9OYnuxUc3fmBuFft/Ff8xMd0s65SXIb/gAAAABJRU5ErkJggg==")} html/*\*/>/*/*/body input[name="delete"]:hover, html/*\*/>/*/*/body input[name="drop"]:hover {color:red; background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJdSURBVDjLpZP7S1NhGMf9W7YfogSJboSEUVCY8zJ31trcps6zTI9bLGJpjp1hmkGNxVz4Q6ildtXKXzJNbJRaRmrXoeWx8tJOTWptnrNryre5YCYuI3rh+8vL+/m8PA/PkwIg5X+y5mJWrxfOUBXm91QZM6UluUmthntHqplxUml2lciF6wrmdHriI0Wx3xw2hAediLwZRWRkCPzdDswaSvGqkGCfq8VEUsEyPF1O8Qu3O7A09RbRvjuIttsRbT6HHzebsDjcB4/JgFFlNv9MnkmsEszodIIY7Oaut2OJcSF68Qx8dgv8tmqEL1gQaaARtp5A+N4NzB0lMXxon/uxbI8gIYjB9HytGYuusfiPIQcN71kjgnW6VeFOkgh3XcHLvAwMSDPohOADdYQJdF1FtLMZPmslvhZJk2ahkgRvq4HHUoWHRDqTEDDl2mDkfheiDgt8pw340/EocuClCuFvboQzb0cwIZgki4KhzlaE6w0InipbVzBfqoK/qRH94i0rgokSFeO11iBkp8EdV8cfJo0yD75aE2ZNRvSJ0lZKcBXLaUYmQrCzDT6tDN5SyRqYlWeDLZAg0H4JQ+Jt6M3atNLE10VSwQsN4Z6r0CBwqzXesHmV+BeoyAUri8EyMfi2FowXS5dhd7doo2DVII0V5BAjigP89GEVAtda8b2ehodU4rNaAW+dGfzlFkyo89GTlcrHYCLpKD+V7yeeHNzLjkp24Uu1Ed6G8/F8qjqGRzlbl2H2dzjpMg1KdwsHxOlmJ7GTeZC/nesXbeZ6c9OYnuxUc3fmBuFft/Ff8xMd0s65SXIb/gAAAABJRU5ErkJggg==")}
html/*\*/>/*/*/body input[name="logout"], #logout{ height:16px; border: none; position: absolute; top: 0; left: 140px; margin-top: 8px; background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJHSURBVDjLlZPNi81hFMc/z7137p1mTCFvNZfGSzLIWNjZKRvFRoqNhRCSYm8xS3+AxRRZ2JAFJWJHSQqTQkbEzYwIM+6Yid/znJfH4prLXShOnb6r8/nWOd8Tcs78bz0/f+KMu50y05nK/wy+uHDylbutqS5extvGcxaWqtoGDA8PZ3dnrs2srQc2Zko41UXLmLdyDW5OfvsUkUgbYGbU63UAQggdmvMzFmzZCgTi7CQmkZwdEaX0JwDgTnGbTCaE0G4zw80omhPI92lcEtkNkdgJCCHwJX7mZvNaB0A14SaYJlwTrpHsTkoFlV1nt2c3x5YYo1/vM9A/gKpxdfwyu/v3teCayKq4JEwT5EB2R6WgYmrs2bYbcUNNUVfEhIfFYy69uci+1fuRX84mkawFSxd/4nVWUopUVIykwlQxRTJBTIDA4Pp1jBZPuNW4wUAPmCqWIn29X1k4f5Ku8g9mpKCkakRLVEs1auVuauVuyqHMo8ejNCe+sWPVTkQKXCMmkeZUmUZjETF1tc6ooly+fgUVw9So1/tRN6YnZji46QghBFKKuAouERNhMlbAHZFE6e7pB+He8MMw+GGI4xtOMf1+lsl3TQ4NHf19BSlaO1DB9BfMHdX0O0iqSgiBbJkjm491hClJbA1LxCURgpPzXwAHhg63necAIi3XngXLcRU0fof8ETMljIyM5LGxMcbHxzvy/6fuXdWgt6+PWncv1e4euqo1ZmabvHs5+jn8yzufO7hiiZmuNpNBM13rbvVSpbrXJE7/BMkHtU9jFIC/AAAAAElFTkSuQmCC") no-repeat center left; text-indent: 16px; color: #21759B; } html/*\*/>/*/*/body input[name="logout"], #logout{ height:16px; width:20px; border: none; position: fixed; top: 0; left: 160px; margin-top: 10px; background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJHSURBVDjLlZPNi81hFMc/z7137p1mTCFvNZfGSzLIWNjZKRvFRoqNhRCSYm8xS3+AxRRZ2JAFJWJHSQqTQkbEzYwIM+6Yid/znJfH4prLXShOnb6r8/nWOd8Tcs78bz0/f+KMu50y05nK/wy+uHDylbutqS5extvGcxaWqtoGDA8PZ3dnrs2srQc2Zko41UXLmLdyDW5OfvsUkUgbYGbU63UAQggdmvMzFmzZCgTi7CQmkZwdEaX0JwDgTnGbTCaE0G4zw80omhPI92lcEtkNkdgJCCHwJX7mZvNaB0A14SaYJlwTrpHsTkoFlV1nt2c3x5YYo1/vM9A/gKpxdfwyu/v3teCayKq4JEwT5EB2R6WgYmrs2bYbcUNNUVfEhIfFYy69uci+1fuRX84mkawFSxd/4nVWUopUVIykwlQxRTJBTIDA4Pp1jBZPuNW4wUAPmCqWIn29X1k4f5Ku8g9mpKCkakRLVEs1auVuauVuyqHMo8ejNCe+sWPVTkQKXCMmkeZUmUZjETF1tc6ooly+fgUVw9So1/tRN6YnZji46QghBFKKuAouERNhMlbAHZFE6e7pB+He8MMw+GGI4xtOMf1+lsl3TQ4NHf19BSlaO1DB9BfMHdX0O0iqSgiBbJkjm491hClJbA1LxCURgpPzXwAHhg63necAIi3XngXLcRU0fof8ETMljIyM5LGxMcbHxzvy/6fuXdWgt6+PWncv1e4euqo1ZmabvHs5+jn8yzufO7hiiZmuNpNBM13rbvVSpbrXJE7/BMkHtU9jFIC/AAAAAElFTkSuQmCC") no-repeat center left; text-indent: 22px; overflow: hidden; color: #21759B; margin-left:14px; }
#logout:hover { color: #D54E21; text-decoration: none; } #logout:hover { color: #D54E21; text-decoration: none; }
body {margin: 0; line-height: 1.25em; font-size: 13px; background: #F9F9F9;} body {margin: 0; line-height: 1.25em; font-size: 13px; background: #F9F9F9;}
@@ -98,21 +101,32 @@ img {vertical-align: middle; margin: 0; padding: 0;}
.binary {color: red;} .binary {color: red;}
.jush-sql {padding: 2px 4px; margin-right: 4px; outline: 1px #BBB dashed; font-size: 9pt;} .jush-sql {padding: 2px 4px; margin-right: 4px; outline: 1px #BBB dashed; font-size: 9pt;}
#content {margin: 2px 0 0 260px; padding: 10px 20px 20px 0;} #content {margin: 2px 0 0 260px; padding: 10px 20px 20px 0;}
#breadcrumb, #lang {margin: 0; height: 21px; display: block; position: absolute; top: 0; left: 260px; background-color: #f1f1f1; border: 1px solid #E3E3E3; padding: 2px 12px; line-height: 1.25em } #breadcrumb, #lang {margin-top: 4px; height: 22px; display: block; position: fixed; top: 0; left: 260px; padding: 2px 12px; line-height: 1.25em }
#breadcrumb {z-index: 100; background-color: #DFDFDF; }
#lang {right: 20px; left: auto; z-index: 10; } #lang {right: 20px; left: auto; z-index: 10; }
#lang select {font-size: 8pt;} #lang select {font-size: 8pt;}
#menu {position: absolute; padding: 10px; margin: 0; top: 0; left: 0; width: 220px; background-color: #f1f1f1; border: 1px solid #E3E3E3;} #menu {position: absolute; padding: 10px; margin: 0; top: 0; left: 0; width: 220px; background-color: #f1f1f1; border: 1px solid #E3E3E3;}
#menu form {margin: 0;} #menu form {margin: 0;}
#menu p {padding-left: 8px; font-size: 10pt; border-bottom: none;} #menu p {padding-left: 8px; font-size: 10pt; border-bottom: none;}
#menu form p {padding-left: 0; text-align: left;} #menu form p {padding-left: 0; margin-top: 5px; text-align: left;}
#menu form p.logout {margin-top: 25px; }
h1 .h1:hover {text-decoration: underline;} h1 .h1:hover {text-decoration: underline;}
h1, h2 {font: italic normal normal 24px/29px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; margin: 0; padding: 14px 15px 3px 10px; line-height: 35px; text-shadow: rgba(255,255,255,1) 0 1px 0px; background: none;} h1, h2 {font: italic normal normal 24px/29px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; margin: 0; padding: 14px 15px 3px 10px; line-height: 35px; text-shadow: rgba(255,255,255,1) 0 1px 0px; background: none;}
h1 {font-size: 12px;} h1 {font-size: 12px;}
h1 .h1 {font-size: 12px;} h1 .h1 {font-size: 12px;}
h2 {padding: 22px 0 0 10px; font-size: 0; height: 2px;} h2 {padding: 22px 0 0 10px; font-size: 0; height: 2px; border-bottom: none;}
h3 {margin: 40px 0 0; font-weight: 400; font-size: 130%;} h3 {margin: 40px 0 0; font-weight: 400; font-size: 130%;}
#menu h1 {height: 25px; padding: 0 10px; margin: 0; line-height: 20px; display: block; } #menu h1 {position:fixed; height: 22px; width: 100%; padding: 8px 10px 4px 20px; top: 0; left: 0; margin: 0; line-height: 20px; display: block; background-color: #DFDFDF; border-bottom: 1px solid #004000;}
/* border-bottom: none; */
#menu h1 a { font-size: 13px; } #menu h1 a { font-size: 13px; }
/*#dbs {position: absolute; top: 70px; }
* #dbs {margin: 0; }
p.logout {margin-top: 30px;}
#dbs {position: relative; top: -20px; height: 0;}
* */
#schema {margin: 1.5em 0 0 220px; position: relative;} #schema {margin: 1.5em 0 0 220px; position: relative;}
#schema .table {border: 1px solid #E3E3E3; background-color: #F1F1F1; padding: 0 2px; cursor: move; position: absolute;} #schema .table {border: 1px solid #E3E3E3; background-color: #F1F1F1; padding: 0 2px; cursor: move; position: absolute;}
#schema .references {position: absolute;} #schema .references {position: absolute;}
@@ -123,7 +137,9 @@ legend a {color: #333; text-decoration: none; cursor: default;}
legend a:hover {color: #333;} legend a:hover {color: #333;}
code {background: transparent;} code {background: transparent;}
fieldset, legend, table, .error, .message {-moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px;border-radius: 5px;} fieldset, legend, table, .error, .message {-moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px;border-radius: 5px;}
#breadcrumb, #lang, #menu {-moz-border-radius-bottomright: 5px; -khtml-border-bottom-right-radius: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px;} /* #breadcrumb, #lang,
#breadcrumb, #lang {-moz-border-radius-bottomleft: 5px; -khtml-border-bottom-left-radius: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px;} #breadcrumb, #lang {-moz-border-radius-bottomleft: 5px; -khtml-border-bottom-left-radius: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px;}
* */
#menu {-moz-border-radius-bottomright: 5px; -khtml-border-bottom-right-radius: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px;}
#menu {-moz-border-radius-topright: 5px; -khtml-border-top-right-radius: 5px; -webkit-border-top-right-radius: 5px; border-bottom-top-radius: 5px;} #menu {-moz-border-radius-topright: 5px; -khtml-border-top-right-radius: 5px; -webkit-border-top-right-radius: 5px; border-bottom-top-radius: 5px;}
#logins a, #tables a {background: #F1F1F1;} #logins a, #tables a {background: #F1F1F1;}

View File

@@ -52,8 +52,10 @@ html/*\*/>/*/*/body table thead input {margin-right: 5px;}
html/*\*/>/*/*/body input[name="delete"], html/*\*/>/*/*/body input[name="drop"] {background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHSSURBVHjapFM5bsJQEB2zSIDFJrHYpEtyAyoKJAp6CrqIkBPkNDlBAKXjBEgUpKOBCyQNijFiEZvZl8z7wsjESYpkpNFfPO/Nmz9j6Xg80n/M9fWi3W7fMOnd4XAo8qogAbvO5xKvL6lU6s0aL1kVMDjP5ye/36+Gw2FyOp3EQFqtVtTr9WixWHT5/JhOp6s2ghP4ORaLyaFQiGazGa3Xa0HgdrvJ6/WSpmk0Go0MjnvIZDLVM0Gr1brm/WskEkkA3O/3abvdQjq5XC6xgoiVka7rNB6PNT6ns9nsu+OkpODxeBLBYJAGgwHt9/uzQ8Vms6Hdbie+KYqC+ASTFrARBMx2HwgEaDKZiHqn0yktl0uxtzrMMAyKx+MCc+4Cs13hwQCC1GQy+W3Lms2mUIUygbEqEBLNun8z8zswVgUfLO0WD4Z6kekn8/l8okNM8GFVUMYDoVWQ6HA4bEAzoyzL1O12kbRsJajwhYZhiUajJEnShWSAQaqqKnU6HahEGysXg9RoNPJ8+cwZZLSKp47m8/k5Kxzg4XBocNxDLper2ka5Xq+LUeatilahJLN1mEJ+ZDHKJthGAKvVauJnYi9ysHIqQee1xOsLg3/+mf5inwIMAJMhb74NwG5wAAAAAElFTkSuQmCC") no-repeat scroll left center; padding:1px 5px 1px 18px; border:0; cursor:pointer; font-size:.9em;} html/*\*/>/*/*/body input[name="delete"], html/*\*/>/*/*/body input[name="drop"] {background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHSSURBVHjapFM5bsJQEB2zSIDFJrHYpEtyAyoKJAp6CrqIkBPkNDlBAKXjBEgUpKOBCyQNijFiEZvZl8z7wsjESYpkpNFfPO/Nmz9j6Xg80n/M9fWi3W7fMOnd4XAo8qogAbvO5xKvL6lU6s0aL1kVMDjP5ye/36+Gw2FyOp3EQFqtVtTr9WixWHT5/JhOp6s2ghP4ORaLyaFQiGazGa3Xa0HgdrvJ6/WSpmk0Go0MjnvIZDLVM0Gr1brm/WskEkkA3O/3abvdQjq5XC6xgoiVka7rNB6PNT6ns9nsu+OkpODxeBLBYJAGgwHt9/uzQ8Vms6Hdbie+KYqC+ASTFrARBMx2HwgEaDKZiHqn0yktl0uxtzrMMAyKx+MCc+4Cs13hwQCC1GQy+W3Lms2mUIUygbEqEBLNun8z8zswVgUfLO0WD4Z6kekn8/l8okNM8GFVUMYDoVWQ6HA4bEAzoyzL1O12kbRsJajwhYZhiUajJEnShWSAQaqqKnU6HahEGysXg9RoNPJ8+cwZZLSKp47m8/k5Kxzg4XBocNxDLper2ka5Xq+LUeatilahJLN1mEJ+ZDHKJthGAKvVauJnYi9ysHIqQee1xOsLg3/+mf5inwIMAJMhb74NwG5wAAAAAElFTkSuQmCC") no-repeat scroll left center; padding:1px 5px 1px 18px; border:0; cursor:pointer; font-size:.9em;}
html/*\*/>/*/*/body input[name="delete"]:hover, html/*\*/>/*/*/body input[name="drop"]:hover {color:red; background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJdSURBVDjLpZP7S1NhGMf9W7YfogSJboSEUVCY8zJ31trcps6zTI9bLGJpjp1hmkGNxVz4Q6ildtXKXzJNbJRaRmrXoeWx8tJOTWptnrNryre5YCYuI3rh+8vL+/m8PA/PkwIg5X+y5mJWrxfOUBXm91QZM6UluUmthntHqplxUml2lciF6wrmdHriI0Wx3xw2hAediLwZRWRkCPzdDswaSvGqkGCfq8VEUsEyPF1O8Qu3O7A09RbRvjuIttsRbT6HHzebsDjcB4/JgFFlNv9MnkmsEszodIIY7Oaut2OJcSF68Qx8dgv8tmqEL1gQaaARtp5A+N4NzB0lMXxon/uxbI8gIYjB9HytGYuusfiPIQcN71kjgnW6VeFOkgh3XcHLvAwMSDPohOADdYQJdF1FtLMZPmslvhZJk2ahkgRvq4HHUoWHRDqTEDDl2mDkfheiDgt8pw340/EocuClCuFvboQzb0cwIZgki4KhzlaE6w0InipbVzBfqoK/qRH94i0rgokSFeO11iBkp8EdV8cfJo0yD75aE2ZNRvSJ0lZKcBXLaUYmQrCzDT6tDN5SyRqYlWeDLZAg0H4JQ+Jt6M3atNLE10VSwQsN4Z6r0CBwqzXesHmV+BeoyAUri8EyMfi2FowXS5dhd7doo2DVII0V5BAjigP89GEVAtda8b2ehodU4rNaAW+dGfzlFkyo89GTlcrHYCLpKD+V7yeeHNzLjkp24Uu1Ed6G8/F8qjqGRzlbl2H2dzjpMg1KdwsHxOlmJ7GTeZC/nesXbeZ6c9OYnuxUc3fmBuFft/Ff8xMd0s65SXIb/gAAAABJRU5ErkJggg==")} html/*\*/>/*/*/body input[name="delete"]:hover, html/*\*/>/*/*/body input[name="drop"]:hover {color:red; background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJdSURBVDjLpZP7S1NhGMf9W7YfogSJboSEUVCY8zJ31trcps6zTI9bLGJpjp1hmkGNxVz4Q6ildtXKXzJNbJRaRmrXoeWx8tJOTWptnrNryre5YCYuI3rh+8vL+/m8PA/PkwIg5X+y5mJWrxfOUBXm91QZM6UluUmthntHqplxUml2lciF6wrmdHriI0Wx3xw2hAediLwZRWRkCPzdDswaSvGqkGCfq8VEUsEyPF1O8Qu3O7A09RbRvjuIttsRbT6HHzebsDjcB4/JgFFlNv9MnkmsEszodIIY7Oaut2OJcSF68Qx8dgv8tmqEL1gQaaARtp5A+N4NzB0lMXxon/uxbI8gIYjB9HytGYuusfiPIQcN71kjgnW6VeFOkgh3XcHLvAwMSDPohOADdYQJdF1FtLMZPmslvhZJk2ahkgRvq4HHUoWHRDqTEDDl2mDkfheiDgt8pw340/EocuClCuFvboQzb0cwIZgki4KhzlaE6w0InipbVzBfqoK/qRH94i0rgokSFeO11iBkp8EdV8cfJo0yD75aE2ZNRvSJ0lZKcBXLaUYmQrCzDT6tDN5SyRqYlWeDLZAg0H4JQ+Jt6M3atNLE10VSwQsN4Z6r0CBwqzXesHmV+BeoyAUri8EyMfi2FowXS5dhd7doo2DVII0V5BAjigP89GEVAtda8b2ehodU4rNaAW+dGfzlFkyo89GTlcrHYCLpKD+V7yeeHNzLjkp24Uu1Ed6G8/F8qjqGRzlbl2H2dzjpMg1KdwsHxOlmJ7GTeZC/nesXbeZ6c9OYnuxUc3fmBuFft/Ff8xMd0s65SXIb/gAAAABJRU5ErkJggg==")}
html/*\*/>/*/*/body input[name="logout"]{ width:45px; height:16px; border: none; background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJHSURBVDjLlZPNi81hFMc/z7137p1mTCFvNZfGSzLIWNjZKRvFRoqNhRCSYm8xS3+AxRRZ2JAFJWJHSQqTQkbEzYwIM+6Yid/znJfH4prLXShOnb6r8/nWOd8Tcs78bz0/f+KMu50y05nK/wy+uHDylbutqS5extvGcxaWqtoGDA8PZ3dnrs2srQc2Zko41UXLmLdyDW5OfvsUkUgbYGbU63UAQggdmvMzFmzZCgTi7CQmkZwdEaX0JwDgTnGbTCaE0G4zw80omhPI92lcEtkNkdgJCCHwJX7mZvNaB0A14SaYJlwTrpHsTkoFlV1nt2c3x5YYo1/vM9A/gKpxdfwyu/v3teCayKq4JEwT5EB2R6WgYmrs2bYbcUNNUVfEhIfFYy69uci+1fuRX84mkawFSxd/4nVWUopUVIykwlQxRTJBTIDA4Pp1jBZPuNW4wUAPmCqWIn29X1k4f5Ku8g9mpKCkakRLVEs1auVuauVuyqHMo8ejNCe+sWPVTkQKXCMmkeZUmUZjETF1tc6ooly+fgUVw9So1/tRN6YnZji46QghBFKKuAouERNhMlbAHZFE6e7pB+He8MMw+GGI4xtOMf1+lsl3TQ4NHf19BSlaO1DB9BfMHdX0O0iqSgiBbJkjm491hClJbA1LxCURgpPzXwAHhg63necAIi3XngXLcRU0fof8ETMljIyM5LGxMcbHxzvy/6fuXdWgt6+PWncv1e4euqo1ZmabvHs5+jn8yzufO7hiiZmuNpNBM13rbvVSpbrXJE7/BMkHtU9jFIC/AAAAAElFTkSuQmCC") no-repeat center left; overflow: hidden; text-indent: 18px; line-height: 0px; cursor:pointer; margin-left:6px;} .logout {font-size: 8pt !important;}
#logout{ height:17px; border: none; background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJHSURBVDjLlZPNi81hFMc/z7137p1mTCFvNZfGSzLIWNjZKRvFRoqNhRCSYm8xS3+AxRRZ2JAFJWJHSQqTQkbEzYwIM+6Yid/znJfH4prLXShOnb6r8/nWOd8Tcs78bz0/f+KMu50y05nK/wy+uHDylbutqS5extvGcxaWqtoGDA8PZ3dnrs2srQc2Zko41UXLmLdyDW5OfvsUkUgbYGbU63UAQggdmvMzFmzZCgTi7CQmkZwdEaX0JwDgTnGbTCaE0G4zw80omhPI92lcEtkNkdgJCCHwJX7mZvNaB0A14SaYJlwTrpHsTkoFlV1nt2c3x5YYo1/vM9A/gKpxdfwyu/v3teCayKq4JEwT5EB2R6WgYmrs2bYbcUNNUVfEhIfFYy69uci+1fuRX84mkawFSxd/4nVWUopUVIykwlQxRTJBTIDA4Pp1jBZPuNW4wUAPmCqWIn29X1k4f5Ku8g9mpKCkakRLVEs1auVuauVuyqHMo8ejNCe+sWPVTkQKXCMmkeZUmUZjETF1tc6ooly+fgUVw9So1/tRN6YnZji46QghBFKKuAouERNhMlbAHZFE6e7pB+He8MMw+GGI4xtOMf1+lsl3TQ4NHf19BSlaO1DB9BfMHdX0O0iqSgiBbJkjm491hClJbA1LxCURgpPzXwAHhg63necAIi3XngXLcRU0fof8ETMljIyM5LGxMcbHxzvy/6fuXdWgt6+PWncv1e4euqo1ZmabvHs5+jn8yzufO7hiiZmuNpNBM13rbvVSpbrXJE7/BMkHtU9jFIC/AAAAAElFTkSuQmCC") no-repeat center left; overflow: hidden; text-indent: 18px; line-height: 0px; cursor:pointer; margin-left:6px; color: #21759B; text-decoration: underline;}
#logout:hover {text-decoration: none; color: #D54E21;}
#logins a, #tables a {background: none repeat scroll 0 0 transparent;}
body {margin: 0; line-height: 1.25em; font-size: 13px; background: #F9F9F9;} body {margin: 0; line-height: 1.25em; font-size: 13px; background: #F9F9F9;}
body, select, option, optgroup, button {font-family: "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;} /* IE6 */ body, select, option, optgroup, button {font-family: "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;} /* IE6 */
input[type='submit'], input[type='reset'], input[type='button'], input[type='file'] {font-family: "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;} input[type='submit'], input[type='reset'], input[type='button'], input[type='file'] {font-family: "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;}
@@ -66,6 +68,7 @@ table {margin: 10px 12px 12px 0; border: 1px #BBB solid; font-size: 90%;}
th {text-align: left;} th {text-align: left;}
td, th {background-color: #fff; padding: 4px 6px; border: 1px #DfDfDf solid; border-width: 1px 0 0 1px;} td, th {background-color: #fff; padding: 4px 6px; border: 1px #DfDfDf solid; border-width: 1px 0 0 1px;}
tr:first-child td, tr:first-child th {border-top-width: 0;} tr:first-child td, tr:first-child th {border-top-width: 0;}
tr:first-child th {padding-right: 30px;}
td:first-child, th:first-child {border-left-width: 0;} td:first-child, th:first-child {border-left-width: 0;}
thead td, thead th {background-color: #DFDFDF; border: none; border-bottom: 1px #BBB solid;} thead td, thead th {background-color: #DFDFDF; border: none; border-bottom: 1px #BBB solid;}
thead tr:hover td, thead tr:hover th {background-color: #DDD !important;} thead tr:hover td, thead tr:hover th {background-color: #DDD !important;}
@@ -98,7 +101,7 @@ img {vertical-align: middle; margin: 0; padding: 0;}
.binary {color: red;} .binary {color: red;}
.jush-sql {padding: 2px 4px; margin-right: 4px; outline: 1px #BBB dashed; font-size: 9pt;} .jush-sql {padding: 2px 4px; margin-right: 4px; outline: 1px #BBB dashed; font-size: 9pt;}
#content {margin: 2px 0 0 300px; padding: 10px 20px 20px 0;} #content {margin: 2px 0 0 300px; padding: 10px 20px 20px 0;}
#lang {height: 23px; width: 250px; display: block; padding: 1px 0; position: absolute; top: 0; left: 0; text-align: center; background-color: #f1f1f1; border: 1px solid #E3E3E3; line-height: 1.25em;} #lang {height: 23px; width: 250px; display: block; padding: 1px 10px; position: absolute; top: 0; left: 0; text-align: center; background-color: #f1f1f1; border: 1px solid #E3E3E3; line-height: 1.25em;}
#lang select {font-size: 8pt;} #lang select {font-size: 8pt;}
#breadcrumb {margin: 0; height: 21px; display: block; position: absolute; top: 0; left: 300px; background-color: #f1f1f1; border: 1px solid #E3E3E3; padding: 2px 12px; line-height: 1.25em } #breadcrumb {margin: 0; height: 21px; display: block; position: absolute; top: 0; left: 300px; background-color: #f1f1f1; border: 1px solid #E3E3E3; padding: 2px 12px; line-height: 1.25em }
#menu {position: absolute; padding: 10px; margin: 0; top: 28px; left: 0; width: 250px; background-color: #f1f1f1; border: 1px solid #E3E3E3;} #menu {position: absolute; padding: 10px; margin: 0; top: 28px; left: 0; width: 250px; background-color: #f1f1f1; border: 1px solid #E3E3E3;}
@@ -123,3 +126,4 @@ fieldset, legend, h2, table, .error, .message {-moz-border-radius: 5px; -khtml-b
#breadcrumb, #lang, #menu {-moz-border-radius-bottomright: 5px; -khtml-border-bottom-right-radius: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px;} #breadcrumb, #lang, #menu {-moz-border-radius-bottomright: 5px; -khtml-border-bottom-right-radius: 5px; -webkit-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px;}
#breadcrumb {-moz-border-radius-bottomleft: 5px; -khtml-border-bottom-left-radius: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px;} #breadcrumb {-moz-border-radius-bottomleft: 5px; -khtml-border-bottom-left-radius: 5px; -webkit-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px;}
#menu {-moz-border-radius-topright: 5px; -khtml-border-top-right-radius: 5px; -webkit-border-top-right-radius: 5px; border-bottom-top-radius: 5px;} #menu {-moz-border-radius-topright: 5px; -khtml-border-top-right-radius: 5px; -webkit-border-top-right-radius: 5px; border-bottom-top-radius: 5px;}
#loader {margin-left: 35px;}

View File

@@ -42,7 +42,7 @@ html>/**/body h1 {
padding: 6px 6px 5px 35px; padding: 6px 6px 5px 35px;
} }
/* Logout */ /* Logout */
html>/**/body input[name="logout"] { html>/**/body input[name="logout"], #logout {
background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAkVJREFUeNqMU01rE1EUPZkMaGI+JEMkXyaNiKINzSJLBSEEaRbRVf6Ai1Jw68K9O3dCN3ZR/AUxC0UCwW4k4KKoGKVioGATg4kNY2aSTDqZifdOmmmKFr1weG/e3HPeue++59i4BTgceAogg3/H6+kUm+YUDdMEaIRICyBkvPeeZVwul5XlIEVBEGyMXz7C8vJ1HHz/ttT49C4/UPqvKG2T0BANcybNZEmSTpCdTqeFPcqp1Wr8X1q5eVtSep3w14/v8yoJCSwwF/kbmedsN5lMotlsol6vo6eMpBurd1OmgawwMQDGnCzLMkajkU3mkTeYUp2hUAjRaBStVgu6rmNC6yKTOex6x2MLPA8EAhBF0RIwyQaL8Oj1emEYBoF4X4SLIOwwiS3yj2KxiG63i06nYzngTRYFZmWZMwcfxgE2sLNRKNi9GgwGKNB3uVxGIpGwHbC4oihQVdWas7AY1/aZkymVSrZALpdDtVpFPB7/w8H+Txnp+1uYvHkyK+EqeiBkgsEgUqmUpVypVBCLxRCJRGaHuCDAF+fFwzvHDvSjQ+REPjCPx2PdBxbgNe7O5KgEjnjkAiT/udkZsMBYPxZgsIv5nMkM6pjVWo65EDvgzYXnbUBWcKLvi2SO/hDw+/3QNM3CXECldfHHIc7vKdh9vJo97QEJ7rP4PD1wp69cuxT2+XxSu922nPQHJEAJ2lsdDzjx1Dd4iNG6PJS2t+trZ1zu/Ep6KUxuJZWqcuA/Yz0O/KIdlSEuazrWqIIsNWT3twADAMZTN2W0KIqPAAAAAElFTkSuQmCC") no-repeat 2px bottom; background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAkVJREFUeNqMU01rE1EUPZkMaGI+JEMkXyaNiKINzSJLBSEEaRbRVf6Ai1Jw68K9O3dCN3ZR/AUxC0UCwW4k4KKoGKVioGATg4kNY2aSTDqZifdOmmmKFr1weG/e3HPeue++59i4BTgceAogg3/H6+kUm+YUDdMEaIRICyBkvPeeZVwul5XlIEVBEGyMXz7C8vJ1HHz/ttT49C4/UPqvKG2T0BANcybNZEmSTpCdTqeFPcqp1Wr8X1q5eVtSep3w14/v8yoJCSwwF/kbmedsN5lMotlsol6vo6eMpBurd1OmgawwMQDGnCzLMkajkU3mkTeYUp2hUAjRaBStVgu6rmNC6yKTOex6x2MLPA8EAhBF0RIwyQaL8Oj1emEYBoF4X4SLIOwwiS3yj2KxiG63i06nYzngTRYFZmWZMwcfxgE2sLNRKNi9GgwGKNB3uVxGIpGwHbC4oihQVdWas7AY1/aZkymVSrZALpdDtVpFPB7/w8H+Txnp+1uYvHkyK+EqeiBkgsEgUqmUpVypVBCLxRCJRGaHuCDAF+fFwzvHDvSjQ+REPjCPx2PdBxbgNe7O5KgEjnjkAiT/udkZsMBYPxZgsIv5nMkM6pjVWo65EDvgzYXnbUBWcKLvi2SO/hDw+/3QNM3CXECldfHHIc7vKdh9vJo97QEJ7rP4PD1wp69cuxT2+XxSu922nPQHJEAJ2lsdDzjx1Dd4iNG6PJS2t+trZ1zu/Ep6KUxuJZWqcuA/Yz0O/KIdlSEuazrWqIIsNWT3twADAMZTN2W0KIqPAAAAAElFTkSuQmCC") no-repeat 2px bottom;
border: none; border: none;
cursor: pointer; cursor: pointer;

View File

@@ -164,6 +164,7 @@ ORDER BY ORDINAL_POSITION", null, "") as $row) { //! requires MySQL 5
function selectVal($val, $link, $field) { function selectVal($val, $link, $field) {
$return = ($val === null ? "&nbsp;" : $val); $return = ($val === null ? "&nbsp;" : $val);
$link = h($link);
if (ereg('blob|bytea', $field["type"]) && !is_utf8($val)) { if (ereg('blob|bytea', $field["type"]) && !is_utf8($val)) {
$return = lang('%d byte(s)', strlen($val)); $return = lang('%d byte(s)', strlen($val));
if (ereg("^(GIF|\xFF\xD8\xFF|\x89PNG\x0D\x0A\x1A\x0A)", $val)) { // GIF|JPG|PNG, getimagetype() works with filename if (ereg("^(GIF|\xFF\xD8\xFF|\x89PNG\x0D\x0A\x1A\x0A)", $val)) { // GIF|JPG|PNG, getimagetype() works with filename
@@ -231,13 +232,13 @@ ORDER BY ORDINAL_POSITION", null, "") as $row) { //! requires MySQL 5
if (($val["col"] == "" || $columns[$val["col"]]) && "$val[col]$val[val]" != "") { if (($val["col"] == "" || $columns[$val["col"]]) && "$val[col]$val[val]" != "") {
echo "<div><select name='where[$i][col]'><option value=''>(" . lang('anywhere') . ")" . optionlist($columns, $val["col"], true) . "</select>"; echo "<div><select name='where[$i][col]'><option value=''>(" . lang('anywhere') . ")" . optionlist($columns, $val["col"], true) . "</select>";
echo html_select("where[$i][op]", array(-1 => "") + $this->operators, $val["op"]); echo html_select("where[$i][op]", array(-1 => "") + $this->operators, $val["op"]);
echo "<input name='where[$i][val]' value='" . h($val["val"]) . "'></div>\n"; echo "<input type='search' name='where[$i][val]' value='" . h($val["val"]) . "'></div>\n";
$i++; $i++;
} }
} }
echo "<div><select name='where[$i][col]' onchange='this.nextSibling.nextSibling.onchange();'><option value=''>(" . lang('anywhere') . ")" . optionlist($columns, null, true) . "</select>"; echo "<div><select name='where[$i][col]' onchange='this.nextSibling.nextSibling.onchange();'><option value=''>(" . lang('anywhere') . ")" . optionlist($columns, null, true) . "</select>";
echo html_select("where[$i][op]", array(-1 => "") + $this->operators); echo html_select("where[$i][op]", array(-1 => "") + $this->operators);
echo "<input name='where[$i][val]' onchange='selectAddRow(this);'></div>\n"; echo "<input type='search' name='where[$i][val]' onchange='selectAddRow(this);'></div>\n";
echo "</div></fieldset>\n"; echo "</div></fieldset>\n";
} }

View File

@@ -5,7 +5,7 @@ unset($_COOKIE["adminer_lang"]);
$_SESSION["lang"] = $_SERVER["argv"][1]; // Adminer functions read language from session $_SESSION["lang"] = $_SERVER["argv"][1]; // Adminer functions read language from session
if (isset($_SESSION["lang"])) { if (isset($_SESSION["lang"])) {
include dirname(__FILE__) . "/adminer/include/lang.inc.php"; include dirname(__FILE__) . "/adminer/include/lang.inc.php";
if (isset($_SERVER["argv"][2]) || !isset($langs[$_SESSION["lang"]])) { if (isset($_SERVER["argv"][2]) || (!isset($langs[$_SESSION["lang"]]) && $_SESSION["lang"] != "xx")) {
echo "Usage: php lang.php [lang]\nPurpose: Update adminer/lang/*.inc.php from source code messages.\n"; echo "Usage: php lang.php [lang]\nPurpose: Update adminer/lang/*.inc.php from source code messages.\n";
exit(1); exit(1);
} }

View File

@@ -13,7 +13,17 @@
</thead><tbody> </thead><tbody>
<tr> <tr>
<td>open</td> <td>open</td>
<td>editor/example.php?lang=en&amp;username=admin</td> <td>editor/example.php?username=admin</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>name=lang</td>
<td>label=English</td>
</tr>
<tr>
<td>clickAndWait</td>
<td>css=#lang &gt; input[type=&quot;submit&quot;]</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr>