Thread: [Adminer-svn] SF.net SVN: adminer:[970] trunk
Database management in a single PHP file
Brought to you by:
jakubvrana
From: <jak...@us...> - 2009-08-07 08:26:17
|
Revision: 970 http://adminer.svn.sourceforge.net/adminer/?rev=970&view=rev Author: jakubvrana Date: 2009-08-07 08:26:10 +0000 (Fri, 07 Aug 2009) Log Message: ----------- Release Modified Paths: -------------- trunk/adminer/include/version.inc.php trunk/changes.txt trunk/version.js Modified: trunk/adminer/include/version.inc.php =================================================================== --- trunk/adminer/include/version.inc.php 2009-08-06 10:42:47 UTC (rev 969) +++ trunk/adminer/include/version.inc.php 2009-08-07 08:26:10 UTC (rev 970) @@ -1,2 +1,2 @@ <?php -$VERSION = "2.0.0-dev"; +$VERSION = "2.0.0"; Modified: trunk/changes.txt =================================================================== --- trunk/changes.txt 2009-08-06 10:42:47 UTC (rev 969) +++ trunk/changes.txt 2009-08-07 08:26:10 UTC (rev 970) @@ -1,4 +1,4 @@ -Adminer 2.0.0: +Adminer 2.0.0 (released 2009-08-06): Editor: User friendly data editor Customization: Adminer class Create single column foreign key in table structure Modified: trunk/version.js =================================================================== --- trunk/version.js 2009-08-06 10:42:47 UTC (rev 969) +++ trunk/version.js 2009-08-07 08:26:10 UTC (rev 970) @@ -1,2 +1,2 @@ // downloaded from repository by version_checker() -document.cookie = 'adminer_version=1.11.1'; // last released version +document.cookie = 'adminer_version=2.0.0'; // last released version This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-08-07 08:29:56
|
Revision: 972 http://adminer.svn.sourceforge.net/adminer/?rev=972&view=rev Author: jakubvrana Date: 2009-08-07 08:29:50 +0000 (Fri, 07 Aug 2009) Log Message: ----------- Add id attribute to tables Modified Paths: -------------- trunk/adminer/include/adminer.inc.php trunk/adminer/include/version.inc.php trunk/editor/include/adminer.inc.php Modified: trunk/adminer/include/adminer.inc.php =================================================================== --- trunk/adminer/include/adminer.inc.php 2009-08-07 08:27:11 UTC (rev 971) +++ trunk/adminer/include/adminer.inc.php 2009-08-07 08:29:50 UTC (rev 972) @@ -444,7 +444,7 @@ if (!$result->num_rows) { echo "<p class='message'>" . lang('No tables.') . "\n"; } else { - echo "<p>\n"; + echo "<p id='tables'>\n"; while ($row = $result->fetch_row()) { echo '<a href="' . h(ME) . 'select=' . urlencode($row[0]) . '">' . lang('select') . '</a> '; echo '<a href="' . h(ME) . 'table=' . urlencode($row[0]) . '">' . $this->tableName(array("Name" => $row[0])) . "</a><br>\n"; //! Adminer::tableName may work with full table status Modified: trunk/adminer/include/version.inc.php =================================================================== --- trunk/adminer/include/version.inc.php 2009-08-07 08:27:11 UTC (rev 971) +++ trunk/adminer/include/version.inc.php 2009-08-07 08:29:50 UTC (rev 972) @@ -1,2 +1,2 @@ <?php -$VERSION = "2.0.0"; +$VERSION = "2.0.1-dev"; Modified: trunk/editor/include/adminer.inc.php =================================================================== --- trunk/editor/include/adminer.inc.php 2009-08-07 08:27:11 UTC (rev 971) +++ trunk/editor/include/adminer.inc.php 2009-08-07 08:29:50 UTC (rev 972) @@ -350,7 +350,7 @@ if (!$table_status) { echo "<p class='message'>" . lang('No tables.') . "\n"; } else { - echo "<p>\n"; + echo "<p id='tables'>\n"; foreach ($table_status as $row) { $name = $this->tableName($row); if (isset($row["Engine"]) && strlen($name)) { // ignore views and tables without name This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-08-18 09:36:48
|
Revision: 977 http://adminer.svn.sourceforge.net/adminer/?rev=977&view=rev Author: jakubvrana Date: 2009-08-18 09:36:32 +0000 (Tue, 18 Aug 2009) Log Message: ----------- Date format hint Modified Paths: -------------- trunk/adminer/lang/cs.inc.php trunk/adminer/lang/de.inc.php trunk/adminer/lang/es.inc.php trunk/adminer/lang/et.inc.php trunk/adminer/lang/fr.inc.php trunk/adminer/lang/it.inc.php trunk/adminer/lang/nl.inc.php trunk/adminer/lang/ru.inc.php trunk/adminer/lang/sk.inc.php trunk/adminer/lang/zh.inc.php trunk/changes.txt trunk/editor/include/adminer.inc.php Modified: trunk/adminer/lang/cs.inc.php =================================================================== --- trunk/adminer/lang/cs.inc.php 2009-08-18 09:19:54 UTC (rev 976) +++ trunk/adminer/lang/cs.inc.php 2009-08-18 09:36:32 UTC (rev 977) @@ -212,6 +212,7 @@ '(anywhere)' => '(kdekoliv)', '%.3f s' => '%.3f s', '$1-$3-$5' => '$6.$4.$1', + 'yyyy-mm-dd' => 'd.m.yyyy', 'History' => 'Historie', 'Variables' => 'Proměnné', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Zdrojové a cílové sloupce musí mít stejný datový typ, nad cílovými sloupci musí být definován index a odkazovaná data musí existovat.', Modified: trunk/adminer/lang/de.inc.php =================================================================== --- trunk/adminer/lang/de.inc.php 2009-08-18 09:19:54 UTC (rev 976) +++ trunk/adminer/lang/de.inc.php 2009-08-18 09:36:32 UTC (rev 977) @@ -212,6 +212,7 @@ 'Select table' => 'Tabelle auswählen', '%.3f s' => '%.3f s', '$1-$3-$5' => '$6.$4.$1', + 'yyyy-mm-dd' => 'd.m.yyyy', 'History' => 'History', 'Variables' => 'Variablen', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Spalten des Ursprungs und des Zieles müssen vom gleichen Datentyp sein, es muss unter den Zielspalten ein Index existieren und die referenzierten Daten müssen existieren.', Modified: trunk/adminer/lang/es.inc.php =================================================================== --- trunk/adminer/lang/es.inc.php 2009-08-18 09:19:54 UTC (rev 976) +++ trunk/adminer/lang/es.inc.php 2009-08-18 09:36:32 UTC (rev 977) @@ -212,6 +212,7 @@ 'Select table' => 'Seleccionar tabla', '%.3f s' => '%.3f s', '$1-$3-$5' => '$5/$3/$1', + 'yyyy-mm-dd' => 'dd/mm/yyyy', 'History' => 'History', 'Variables' => 'Variables', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Las columnas de origen y destino deben ser del mismo tipo, debe existir un índice entre las columnas del destino y el registro referenciado debe existir.', Modified: trunk/adminer/lang/et.inc.php =================================================================== --- trunk/adminer/lang/et.inc.php 2009-08-18 09:19:54 UTC (rev 976) +++ trunk/adminer/lang/et.inc.php 2009-08-18 09:36:32 UTC (rev 977) @@ -212,6 +212,7 @@ 'Select table' => 'Vali tabel', '%.3f s' => '%.3f s', '$1-$3-$5' => '$6.$4.$1', + 'yyyy-mm-dd' => 'd.m.yyyy', 'History' => 'Ajalugu', 'Variables' => 'Muutujad', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Lähte- ja sihtveerud peavad eksisteerima ja omama sama andmetüüpi, sihtveergudel peab olema määratud indeks ning viidatud andmed peavad eksisteerima.', Modified: trunk/adminer/lang/fr.inc.php =================================================================== --- trunk/adminer/lang/fr.inc.php 2009-08-18 09:19:54 UTC (rev 976) +++ trunk/adminer/lang/fr.inc.php 2009-08-18 09:36:32 UTC (rev 977) @@ -212,6 +212,7 @@ 'Select table' => 'Selectionner la table', '%.3f s' => '%.3f s', '$1-$3-$5' => '$5/$3/$1', + 'yyyy-mm-dd' => 'dd/mm/yyyy', 'History' => 'Historique', 'Variables' => 'Variables', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Les colonnes selectionnées et les colonnes de destination doivent être du même type, il doit y avoir un index sur les colonnes de destination et les données de référence doivent exister.', Modified: trunk/adminer/lang/it.inc.php =================================================================== --- trunk/adminer/lang/it.inc.php 2009-08-18 09:19:54 UTC (rev 976) +++ trunk/adminer/lang/it.inc.php 2009-08-18 09:36:32 UTC (rev 977) @@ -212,6 +212,7 @@ 'Select table' => 'Scegli tabella', '%.3f s' => '%.3f s', '$1-$3-$5' => '$5/$3/$1', + 'yyyy-mm-dd' => 'dd/mm/yyyy', 'History' => 'Storico', 'Variables' => 'Variabili', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Le colonne sorgente e destinazione devono essere dello stesso tipo e ci deve essere un indice sulla colonna di destinazione e sui dati referenziati.', Modified: trunk/adminer/lang/nl.inc.php =================================================================== --- trunk/adminer/lang/nl.inc.php 2009-08-18 09:19:54 UTC (rev 976) +++ trunk/adminer/lang/nl.inc.php 2009-08-18 09:36:32 UTC (rev 977) @@ -212,6 +212,7 @@ 'Select table' => 'Selecteer tabel', '%.3f s' => '%.3f s', '$1-$3-$5' => '$5-$3-$1', + 'yyyy-mm-dd' => 'dd-mm-yyyy', 'History' => 'Geschiedenis', 'Variables' => 'Variabelen', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Bron- en doelkolommen moeten van hetzelfde data type zijn, er moet een index bestaan op de gekozen kolommen en er moet gerelateerde data bestaan.', Modified: trunk/adminer/lang/ru.inc.php =================================================================== --- trunk/adminer/lang/ru.inc.php 2009-08-18 09:19:54 UTC (rev 976) +++ trunk/adminer/lang/ru.inc.php 2009-08-18 09:36:32 UTC (rev 977) @@ -212,6 +212,7 @@ '(anywhere)' => '(в любом месте)', '%.3f s' => '%.3f s', '$1-$3-$5' => '$5.$3.$1', + 'yyyy-mm-dd' => 'dd.mm.yyyy', 'History' => 'История', 'Variables' => 'Переменные', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Колонки должны иметь одинаковые типы данных, в результирующей колонке должен быть индекс, данные для импорта должны существовать.', Modified: trunk/adminer/lang/sk.inc.php =================================================================== --- trunk/adminer/lang/sk.inc.php 2009-08-18 09:19:54 UTC (rev 976) +++ trunk/adminer/lang/sk.inc.php 2009-08-18 09:36:32 UTC (rev 977) @@ -212,6 +212,7 @@ '(anywhere)' => '(kdekoľvek)', '%.3f s' => '%.3f s', '$1-$3-$5' => '$6.$4.$1', + 'yyyy-mm-dd' => 'd.m.yyyy', 'History' => 'História', 'Variables' => 'Premenné', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Zdrojové a cieľové stĺpce musia mať rovnaký datový typ, nad cieľovými stĺpcami musí byť definovaný index a odkazované dáta musia existovať.', Modified: trunk/adminer/lang/zh.inc.php =================================================================== --- trunk/adminer/lang/zh.inc.php 2009-08-18 09:19:54 UTC (rev 976) +++ trunk/adminer/lang/zh.inc.php 2009-08-18 09:36:32 UTC (rev 977) @@ -212,6 +212,7 @@ 'Select table' => '选择表', '%.3f s' => '%.3f 秒', '$1-$3-$5' => '$1.$3.$5', + 'yyyy-mm-dd' => 'dd.mm.yyyy', 'History' => '历史', 'Variables' => '变量', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => '源列和目标列必须具有相同的数据类型,在目标列上必须有一个索引并且引用的数据必须存在。', Modified: trunk/changes.txt =================================================================== --- trunk/changes.txt 2009-08-18 09:19:54 UTC (rev 976) +++ trunk/changes.txt 2009-08-18 09:36:32 UTC (rev 977) @@ -1,3 +1,6 @@ +Adminer 2.0.1: +Fix Editor date format + Adminer 2.0.0 (released 2009-08-06): Editor: User friendly data editor Customization: Adminer class Modified: trunk/editor/include/adminer.inc.php =================================================================== --- trunk/editor/include/adminer.inc.php 2009-08-18 09:19:54 UTC (rev 976) +++ trunk/editor/include/adminer.inc.php 2009-08-18 09:36:32 UTC (rev 977) @@ -315,6 +315,9 @@ if ($field["full_type"] == "tinyint(1)") { // bool return '<input type="checkbox" value="' . h($value ? $value : 1) . '"' . ($value ? ' checked' : '') . "$attrs>"; } + if (ereg('date|timestamp', $field["type"])) { + return "<input value='" . h($value) . "'$attrs> (" . lang('yyyy-mm-dd') . ")"; //! maxlength + } return ''; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-08-19 17:10:18
|
Revision: 982 http://adminer.svn.sourceforge.net/adminer/?rev=982&view=rev Author: jakubvrana Date: 2009-08-19 17:10:06 +0000 (Wed, 19 Aug 2009) Log Message: ----------- Fix long SQL query crash (bug #2839231) Remove regular expression double repetition Modified Paths: -------------- trunk/adminer/database.inc.php trunk/adminer/include/adminer.inc.php trunk/adminer/include/editing.inc.php trunk/adminer/include/functions.inc.php trunk/adminer/include/mysql.inc.php trunk/adminer/index.php trunk/adminer/select.inc.php trunk/adminer/sql.inc.php trunk/changes.txt Modified: trunk/adminer/database.inc.php =================================================================== --- trunk/adminer/database.inc.php 2009-08-19 15:50:58 UTC (rev 981) +++ trunk/adminer/database.inc.php 2009-08-19 17:10:06 UTC (rev 982) @@ -51,7 +51,7 @@ // propose database name with limited privileges $result = $dbh->query("SHOW GRANTS"); while ($row = $result->fetch_row()) { - if (preg_match('~ ON (`(([^\\\\`]+|``|\\\\.)*)%`\\.\\*)?~', $row[0], $match) && $match[1]) { + if (preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~', $row[0], $match) && $match[1]) { $name = stripcslashes(idf_unescape($match[2])); break; } Modified: trunk/adminer/include/adminer.inc.php =================================================================== --- trunk/adminer/include/adminer.inc.php 2009-08-19 15:50:58 UTC (rev 981) +++ trunk/adminer/include/adminer.inc.php 2009-08-19 17:10:06 UTC (rev 982) @@ -301,7 +301,7 @@ function selectOrderProcess($fields, $indexes) { $return = array(); foreach ((array) $_GET["order"] as $key => $val) { - if (isset($fields[$val]) || preg_match('~^[A-Z0-9_]+\\(`(?:[^`]+|``)+`\\)$~', $val)) { + if (isset($fields[$val]) || preg_match('~^[A-Z0-9_]+\\(`(?:[^`]|``)+`\\)$~', $val)) { $return[] = idf_escape($val) . (isset($_GET["desc"][$key]) ? " DESC" : ""); } } Modified: trunk/adminer/include/editing.inc.php =================================================================== --- trunk/adminer/include/editing.inc.php 2009-08-19 15:50:58 UTC (rev 981) +++ trunk/adminer/include/editing.inc.php 2009-08-19 17:10:06 UTC (rev 982) @@ -146,7 +146,7 @@ global $dbh, $enum_length, $inout; $aliases = array("bit" => "tinyint", "bool" => "tinyint", "boolean" => "tinyint", "integer" => "int", "double precision" => "float", "real" => "float", "dec" => "decimal", "numeric" => "decimal", "fixed" => "decimal", "national char" => "char", "national varchar" => "varchar"); $type_pattern = "([a-z]+)(?:\\s*\\(((?:[^'\")]*|$enum_length)+)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s]+)['\"]?)?"; - $pattern = "\\s*(" . ($type == "FUNCTION" ? "" : implode("|", $inout)) . ")?\\s*(?:`((?:[^`]+|``)*)`\\s*|\\b(\\S+)\\s+)$type_pattern"; + $pattern = "\\s*(" . ($type == "FUNCTION" ? "" : implode("|", $inout)) . ")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$type_pattern"; $create = $dbh->result($dbh->query("SHOW CREATE $type " . idf_escape($name)), 2); preg_match("~\\(((?:$pattern\\s*,?)*)\\)" . ($type == "FUNCTION" ? "\\s*RETURNS\\s+$type_pattern" : "") . "\\s*(.*)~is", $create, $match); $fields = array(); Modified: trunk/adminer/include/functions.inc.php =================================================================== --- trunk/adminer/include/functions.inc.php 2009-08-19 15:50:58 UTC (rev 981) +++ trunk/adminer/include/functions.inc.php 2009-08-19 17:10:06 UTC (rev 982) @@ -67,7 +67,7 @@ } $return = array(); foreach ($row as $key => $val) { - if (!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]+|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]+|``)+`\\))$~', $key)) { //! columns looking like functions + if (!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~', $key)) { //! columns looking like functions $return[] = (isset($val) ? urlencode("where[" . bracket_escape($key) . "]") . "=" . urlencode($val) : "null%5B%5D=" . urlencode($key)); } } @@ -79,11 +79,11 @@ $return = array(); foreach ((array) $where["where"] as $key => $val) { $key = bracket_escape($key, "back"); - $return[] = (preg_match('~^[A-Z0-9_]+\\(`(?:[^`]+|``)+`\\)$~', $key) ? $key : idf_escape($key)) . " = BINARY " . $dbh->quote($val); //! enum and set, columns looking like functions + $return[] = (preg_match('~^[A-Z0-9_]+\\(`(?:[^`]|``)+`\\)$~', $key) ? $key : idf_escape($key)) . " = BINARY " . $dbh->quote($val); //! enum and set, columns looking like functions } foreach ((array) $where["null"] as $key) { $key = bracket_escape($key, "back"); - $return[] = (preg_match('~^[A-Z0-9_]+\\(`(?:[^`]+|``)+`\\)$~', $key) ? $key : idf_escape($key)) . " IS NULL"; + $return[] = (preg_match('~^[A-Z0-9_]+\\(`(?:[^`]|``)+`\\)$~', $key) ? $key : idf_escape($key)) . " IS NULL"; } return implode(" AND ", $return); } @@ -293,7 +293,7 @@ if (!isset($_GET["default"])) { echo "<input type='radio' name='fields[$name]' value='0'" . ($value === 0 ? ' checked' : '') . '>'; } - preg_match_all("~'((?:[^']+|'')*)'~", $field["length"], $matches); + preg_match_all("~'((?:[^']|'')*)'~", $field["length"], $matches); foreach ($matches[1] as $i => $val) { $val = stripcslashes(str_replace("''", "'", $val)); $checked = (is_int($value) ? $value == $i+1 : $value === $val); @@ -308,7 +308,7 @@ if (strlen($input)) { echo $input; } elseif ($field["type"] == "set") { //! 64 bits - preg_match_all("~'((?:[^']+|'')*)'~", $field["length"], $matches); + preg_match_all("~'((?:[^']|'')*)'~", $field["length"], $matches); foreach ($matches[1] as $i => $val) { $val = stripcslashes(str_replace("''", "'", $val)); $checked = (is_int($value) ? ($value >> $i) & 1 : in_array($val, explode(",", $value), true)); Modified: trunk/adminer/include/mysql.inc.php =================================================================== --- trunk/adminer/include/mysql.inc.php 2009-08-19 15:50:58 UTC (rev 981) +++ trunk/adminer/include/mysql.inc.php 2009-08-19 17:10:06 UTC (rev 982) @@ -234,7 +234,7 @@ function foreign_keys($table) { global $dbh, $on_actions; - static $pattern = '(?:[^`]+|``)+'; + static $pattern = '(?:[^`]|``)+'; $return = array(); $result = $dbh->query("SHOW CREATE TABLE " . idf_escape($table)); if ($result) { @@ -259,7 +259,7 @@ function view($name) { global $dbh; - return array("select" => preg_replace('~^(?:[^`]+|`[^`]*`)* AS ~U', '', $dbh->result($dbh->query("SHOW CREATE VIEW " . idf_escape($name)), 1))); + return array("select" => preg_replace('~^(?:[^`]|`[^`]*`)* AS ~U', '', $dbh->result($dbh->query("SHOW CREATE VIEW " . idf_escape($name)), 1))); } function collations() { Modified: trunk/adminer/index.php =================================================================== --- trunk/adminer/index.php 2009-08-19 15:50:58 UTC (rev 981) +++ trunk/adminer/index.php 2009-08-19 17:10:06 UTC (rev 982) @@ -8,7 +8,7 @@ include "./include/bootstrap.inc.php"; -$enum_length = '\'(?:\'\'|[^\'\\\\]+|\\\\.)*\'|"(?:""|[^"\\\\]+|\\\\.)*"'; +$enum_length = '\'(?:\'\'|[^\'\\\\]|\\\\.)*\'|"(?:""|[^"\\\\]|\\\\.)*"'; $inout = array("IN", "OUT", "INOUT"); if (isset($_GET["download"])) { Modified: trunk/adminer/select.inc.php =================================================================== --- trunk/adminer/select.inc.php 2009-08-19 15:50:58 UTC (rev 981) +++ trunk/adminer/select.inc.php 2009-08-19 17:10:06 UTC (rev 982) @@ -85,7 +85,7 @@ $file = preg_replace("~^\xEF\xBB\xBF~", '', $file); //! character set $cols = ""; $rows = array(); //! packet size - preg_match_all('~("[^"]*"|[^"\\n]+)+~', $file, $matches); + preg_match_all('~("[^"]*"|[^"\\n])+~', $file, $matches); foreach ($matches[0] as $key => $val) { $row = array(); preg_match_all('~(("[^"]*")+|[^,]*),~', "$val,", $matches2); Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-08-19 15:50:58 UTC (rev 981) +++ trunk/adminer/sql.inc.php 2009-08-19 17:10:06 UTC (rev 982) @@ -19,7 +19,7 @@ $delimiter = ";"; $offset = 0; $empty = true; - $space = "(\\s+|/\\*.*\\*/|(#|-- )[^\n]*\n|--\n)"; + $space = "(\\s|/\\*.*\\*/|(#|-- )[^\n]*\n|--\n)"; $dbh2 = (strlen($_GET["db"]) ? connect() : null); // connection for exploring indexes (to not replace FOUND_ROWS()) //! PDO - silent error if (is_object($dbh2)) { $dbh2->select_db($_GET["db"]); @@ -31,7 +31,7 @@ } elseif (preg_match('(' . preg_quote($delimiter) . '|[\'`"]|/\\*|-- |#|$)', $query, $match, PREG_OFFSET_CAPTURE, $offset)) { if ($match[0][0] && $match[0][0] != $delimiter) { // is not end of a query - find closing part - $pattern = ($match[0][0] == "-- " || $match[0][0] == "#" ? '~.*~' : ($match[0][0] == "/*" ? '~.*\\*/~sU' : '~\\G([^\\\\' . $match[0][0] . ']+|\\\\.)*(' . $match[0][0] . '|$)~s')); + $pattern = ($match[0][0] == "-- " || $match[0][0] == "#" ? '~.*~' : ($match[0][0] == "/*" ? '~.*\\*/~sU' : '~\\G([^\\\\' . $match[0][0] . ']|\\\\.)*(' . $match[0][0] . '|$)~s')); //! respect sql_mode NO_BACKSLASH_ESCAPES preg_match($pattern, $query, $match, PREG_OFFSET_CAPTURE, $match[0][1] + 1); $offset = $match[0][1] + strlen($match[0][0]); } else { Modified: trunk/changes.txt =================================================================== --- trunk/changes.txt 2009-08-19 15:50:58 UTC (rev 981) +++ trunk/changes.txt 2009-08-19 17:10:06 UTC (rev 982) @@ -1,5 +1,7 @@ Adminer 2.0.1: +Display column comments in table overview Fix Editor date format +Fix long SQL query crash (bug #2839231) Adminer 2.0.0 (released 2009-08-06): Editor: User friendly data editor This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-08-20 14:43:07
|
Revision: 985 http://adminer.svn.sourceforge.net/adminer/?rev=985&view=rev Author: jakubvrana Date: 2009-08-20 14:43:01 +0000 (Thu, 20 Aug 2009) Log Message: ----------- Fix long SQL query crash (bug #2839231) Use ungreedy regular expressions Modified Paths: -------------- trunk/adminer/select.inc.php trunk/adminer/sql.inc.php trunk/editor/include/adminer.inc.php Modified: trunk/adminer/select.inc.php =================================================================== --- trunk/adminer/select.inc.php 2009-08-20 14:04:24 UTC (rev 984) +++ trunk/adminer/select.inc.php 2009-08-20 14:43:01 UTC (rev 985) @@ -85,10 +85,10 @@ $file = preg_replace("~^\xEF\xBB\xBF~", '', $file); //! character set $cols = ""; $rows = array(); //! packet size - preg_match_all('~("[^"]*"|[^"\\n])+~', $file, $matches); + preg_match_all('~("[^"]*"|[^"\\n])+~U', $file, $matches); foreach ($matches[0] as $key => $val) { $row = array(); - preg_match_all('~(("[^"]*")+|[^,]*),~', "$val,", $matches2); + preg_match_all('~(("[^"]*")+|[^,]*),~U', "$val,", $matches2); if (!$key && !array_diff($matches2[1], array_keys($fields))) { //! doesn't work with column names containing ",\n // first row corresponds to column names - use it for table structure $cols = " (" . implode(", ", array_map('idf_escape', $matches2[1])) . ")"; Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-08-20 14:04:24 UTC (rev 984) +++ trunk/adminer/sql.inc.php 2009-08-20 14:43:01 UTC (rev 985) @@ -31,7 +31,7 @@ } elseif (preg_match('(' . preg_quote($delimiter) . '|[\'`"]|/\\*|-- |#|$)', $query, $match, PREG_OFFSET_CAPTURE, $offset)) { if ($match[0][0] && $match[0][0] != $delimiter) { // is not end of a query - find closing part - $pattern = ($match[0][0] == "-- " || $match[0][0] == "#" ? '~.*~' : ($match[0][0] == "/*" ? '~.*\\*/~sU' : '~\\G([^\\\\' . $match[0][0] . ']|\\\\.)*(' . $match[0][0] . '|$)~s')); //! respect sql_mode NO_BACKSLASH_ESCAPES + $pattern = ($match[0][0] == "-- " || $match[0][0] == "#" ? '~.*~' : ($match[0][0] == "/*" ? '~.*\\*/~sU' : '~\\G([^\\\\' . $match[0][0] . ']|\\\\.)*(' . $match[0][0] . '|$)~sU')); //! respect sql_mode NO_BACKSLASH_ESCAPES preg_match($pattern, $query, $match, PREG_OFFSET_CAPTURE, $match[0][1] + 1); $offset = $match[0][1] + strlen($match[0][0]); } else { Modified: trunk/editor/include/adminer.inc.php =================================================================== --- trunk/editor/include/adminer.inc.php 2009-08-20 14:04:24 UTC (rev 984) +++ trunk/editor/include/adminer.inc.php 2009-08-20 14:43:01 UTC (rev 985) @@ -326,7 +326,7 @@ if ($function == "now") { return "$function()"; } - $return = $dbh->quote(ereg('date|timestamp', $field["type"]) && preg_match('(^' . preg_replace('~(\\\\\\$([0-9]))~', '(?P<p\\2>[0-9]+)', preg_quote(lang('$1-$3-$5'))) . '(.*))', $value, $match) + $return = $dbh->quote(ereg('date|timestamp', $field["type"]) && preg_match('(^' . preg_replace('~(\\\\\\$([0-9]))~', '(?P<p\\2>[0-9]+)', preg_quote(lang('$1-$3-$5'))) . '(.*))', $value, $match) //! {1,2} instead of + except year ? ($match["p1"] ? $match["p1"] : ($match["p2"] < 70 ? 20 : 19) . $match["p2"]) . "-$match[p3]$match[p4]-$match[p5]$match[p6]" . end($match) : $value ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-08-20 15:05:40
|
Revision: 986 http://adminer.svn.sourceforge.net/adminer/?rev=986&view=rev Author: jakubvrana Date: 2009-08-20 15:05:35 +0000 (Thu, 20 Aug 2009) Log Message: ----------- Respect max_allowed_packet in CSV import Modified Paths: -------------- trunk/adminer/select.inc.php trunk/changes.txt Modified: trunk/adminer/select.inc.php =================================================================== --- trunk/adminer/select.inc.php 2009-08-20 14:43:01 UTC (rev 985) +++ trunk/adminer/select.inc.php 2009-08-20 15:05:35 UTC (rev 986) @@ -83,24 +83,46 @@ //! display edit page in case of an error } elseif (is_string($file = get_file("csv_file"))) { $file = preg_replace("~^\xEF\xBB\xBF~", '', $file); //! character set - $cols = ""; - $rows = array(); //! packet size - preg_match_all('~("[^"]*"|[^"\\n])+~U', $file, $matches); + $affected = 0; + $length = 0; + $result = true; + $query = "INSERT INTO " . idf_escape($_GET["select"]); + $packet_size = $dbh->result($dbh->query("SELECT @@max_allowed_packet")); + $rows = array(); + preg_match_all('~("[^"]*"|[^"\\n])+~', $file, $matches); foreach ($matches[0] as $key => $val) { $row = array(); - preg_match_all('~(("[^"]*")+|[^,]*),~U', "$val,", $matches2); + preg_match_all('~(("[^"]*")+|[^,]*),~', "$val,", $matches2); if (!$key && !array_diff($matches2[1], array_keys($fields))) { //! doesn't work with column names containing ",\n // first row corresponds to column names - use it for table structure - $cols = " (" . implode(", ", array_map('idf_escape', $matches2[1])) . ")"; + $query .= " (" . implode(", ", array_map('idf_escape', $matches2[1])) . ")"; } else { foreach ($matches2[1] as $col) { $row[] = (!strlen($col) ? "NULL" : $dbh->quote(str_replace('""', '"', preg_replace('~^"|"$~', '', $col)))); } - $rows[] = "\n(" . implode(", ", $row) . ")"; + $s = "\n(" . implode(", ", $row) . ")"; + $length += 1 + strlen($s); // 1 - separator length + if ($rows && $length > $packet_size) { + $result = queries($query . implode(",", $rows)); + if (!$result) { + break; + } + $affected += $dbh->affected_rows; + $length = strlen($query); + $rows = array(); + } + $rows[] = $s; } + if (!$key) { + $query .= " VALUES"; + $length += strlen($query); + } } - $result = queries("INSERT INTO " . idf_escape($_GET["select"]) . "$cols VALUES" . implode(",", $rows)); - query_redirect(queries(), remove_from_uri("page"), lang('%d row(s) have been imported.', $dbh->affected_rows), $result, false, !$result); + if ($result) { + $result = queries($query . implode(",", $rows)); + $affected += $dbh->affected_rows; + } + query_redirect(queries(), remove_from_uri("page"), lang('%d row(s) have been imported.', $affected), $result, false, !$result); } else { $error = upload_error($file); } Modified: trunk/changes.txt =================================================================== --- trunk/changes.txt 2009-08-20 14:43:01 UTC (rev 985) +++ trunk/changes.txt 2009-08-20 15:05:35 UTC (rev 986) @@ -1,5 +1,6 @@ Adminer 2.0.1: Display column comments in table overview +Respect max_allowed_packet in CSV import Fix Editor date format Fix long SQL query crash (bug #2839231) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-08-21 10:38:59
|
Revision: 989 http://adminer.svn.sourceforge.net/adminer/?rev=989&view=rev Author: jakubvrana Date: 2009-08-21 10:38:49 +0000 (Fri, 21 Aug 2009) Log Message: ----------- Traditional Chinese translation Modified Paths: -------------- trunk/adminer/include/lang.inc.php trunk/changes.txt Added Paths: ----------- trunk/adminer/lang/zh-tw.php Modified: trunk/adminer/include/lang.inc.php =================================================================== --- trunk/adminer/include/lang.inc.php 2009-08-20 15:37:39 UTC (rev 988) +++ trunk/adminer/include/lang.inc.php 2009-08-21 10:38:49 UTC (rev 989) @@ -8,11 +8,12 @@ 'nl' => 'Nederlands', // Maarten Balliauw - http://blog.maartenballiauw.be 'es' => 'Español', // Klemens Häckel - http://clickdimension.wordpress.com 'de' => 'Deutsch', // Klemens Häckel - http://clickdimension.wordpress.com - 'zh' => '简体中文', // Mr. Lodar 'fr' => 'Français', // Francis Gagné 'it' => 'Italiano', // Alessandro Fiorotto, Paolo Asperti 'et' => 'Eesti', // Priit Kallas 'ru' => 'Русский язык', // Maksim Izmaylov + 'zh' => '简体中文', // Mr. Lodar + 'zh-tw' => '繁體中文', // http://tzangms.com ); function lang($idf, $number = null) { @@ -32,9 +33,7 @@ echo "<form action=''>\n<div id='lang'>"; hidden_fields($_GET, array('lang')); echo lang('Language') . ": <select name='lang' onchange='this.form.submit();'>"; - foreach ($langs as $lang => $val) { - echo "<option value='$lang'" . ($LANG == $lang ? " selected" : "") . ">$val"; - } + echo optionlist($langs, $LANG); echo "</select>\n<noscript><div style='display: inline;'><input type='submit' value='" . lang('Use') . "'></div></noscript>\n</div>\n</form>\n"; } Added: trunk/adminer/lang/zh-tw.php =================================================================== --- trunk/adminer/lang/zh-tw.php (rev 0) +++ trunk/adminer/lang/zh-tw.php 2009-08-21 10:38:49 UTC (rev 989) @@ -0,0 +1,234 @@ +<?php +$translations = array( + 'Login' => '登入', + 'Adminer' => 'Adminer', + 'Logout successful.' => '登出成功。', + 'Invalid credentials.' => '無效的憑證。', + 'Server' => '伺服器', + 'Username' => '帳號', + 'Password' => '密碼', + 'Select database' => '選擇資料庫', + 'Invalid database.' => '無效的資料庫。', + 'Create new database' => '建立新資料庫', + 'Table has been altered.' => '資料表已更改。', + 'Table has been created.' => '資料表已更改。', + 'Alter table' => '更改資料表', + 'Create table' => '建立資料表表', + 'Table name' => '資料表名稱', + 'engine' => '引擎', + 'collation' => '校對', + 'Column name' => '列名', + 'Type' => '類型', + 'Length' => '長度', + 'NULL' => 'NULL', + 'Auto Increment' => '自動增加', + 'Options' => '選項', + 'Save' => '儲存', + 'Drop' => '丟棄', + 'Database has been dropped.' => '已丟棄資料庫。', + 'Database has been created.' => '已建立資料庫。', + 'Database has been renamed.' => '已重新命名資料庫。', + 'Database has been altered.' => '已更改資料庫。', + 'Alter database' => '更改資料庫', + 'Create database' => '建立資料庫', + 'SQL command' => 'SQL命令', + 'Dump' => '導入/導出', + 'Logout' => '登出', + 'database' => '資料庫', + 'Use' => '使用', + 'No tables.' => '沒有資料表。', + 'select' => '選擇', + 'Create new table' => '建立新資料表', + 'Item has been updated.' => '已更新項目。', + 'Item has been inserted.' => '已插入項目。', + 'Edit' => '編輯', + 'Insert' => '插入', + 'Save and insert next' => '儲存並插入下一個', + 'Delete' => '刪除', + 'Database' => '資料庫', + 'Routines' => '程序', + 'Indexes have been altered.' => '已更改索引。', + 'Indexes' => '索引', + 'Alter indexes' => '更改索引', + 'Add next' => '新增下一個', + 'Language' => '語言', + 'Select' => '選擇', + 'New item' => '新建項', + 'Search' => '搜尋', + 'Sort' => '排序', + 'descending' => '降冪', + 'Limit' => '限定', + 'No rows.' => '沒有行。', + 'Action' => '動作', + 'edit' => '編輯', + 'Page' => '頁', + 'Query executed OK, %d row(s) affected.' => '執行查詢OK,%d行受影響', + 'Error in query' => '查詢出錯', + 'Execute' => '執行', + 'Table' => '資料表', + 'Foreign keys' => '外鍵', + 'Triggers' => '觸發器', + 'View' => '檢視表', + 'Unable to select the table' => '無法選擇該資料表', + 'Invalid CSRF token. Send the form again.' => '無效的 CSRF token。請重新發送表單。', + 'Comment' => '註解', + 'Default values have been set.' => '預設值已設置。', + 'Default values' => '預設值', + 'BOOL' => 'BOOL', + 'Show column comments' => '顯示列註解', + '%d byte(s)' => '%d byte(s)', + 'No commands to execute.' => '沒有命令可執行。', + 'Unable to upload a file.' => '無法上傳檔案。', + 'File upload' => '檔案上傳', + 'File uploads are disabled.' => '檔案上傳被禁用。', + 'Routine has been called, %d row(s) affected.' => '程序已被執行,%d行被影響', + 'Call' => '呼叫', + 'No MySQL extension' => '沒有 MySQL 擴充模組', + 'None of the supported PHP extensions (%s) are available.' => '沒有任何支援的PHP擴充模組(%s)。', + 'Session support must be enabled.' => 'Session 必須被啟用。', + 'Session expired, please login again.' => 'Session 已過期,請重新登入。', + 'Text length' => 'Text 長度', + 'Foreign key has been dropped.' => '已刪除外鍵。', + 'Foreign key has been altered.' => '已更改外鍵。', + 'Foreign key has been created.' => '已建立外鍵。', + 'Foreign key' => '外鍵', + 'Target table' => '目標資料表', + 'Change' => '更改', + 'Source' => '來源', + 'Target' => '目標', + 'Add column' => '新增資料列', + 'Alter' => '更改', + 'Add foreign key' => '新增外鍵', + 'ON DELETE' => 'ON DELETE', + 'ON UPDATE' => 'ON UPDATE', + 'Index Type' => '索引類型', + 'Column (length)' => '列(長度)', + 'View has been dropped.' => '已丟棄檢視表。', + 'View has been altered.' => '已更改檢視表。', + 'View has been created.' => '已建立檢視表。', + 'Alter view' => '更改檢視表', + 'Create view' => '建立檢視表', + 'Name' => '名稱', + 'Process list' => '進程列表', + '%d process(es) have been killed.' => '%d 個 Process(es) 被終止', + 'Kill' => '終止', + 'IN-OUT' => 'IN-OUT', + 'Parameter name' => '參數名稱', + 'Database schema' => '資料庫架構', + 'Create procedure' => '建立預存程序', + 'Create function' => '建立函數', + 'Routine has been dropped.' => '已丟棄程序。', + 'Routine has been altered.' => '已更改子程序。', + 'Routine has been created.' => '已建立子程序。', + 'Alter function' => '更改函數', + 'Alter procedure' => '更改過程', + 'Return type' => '返回類型', + 'Add trigger' => '建立觸發器', + 'Trigger has been dropped.' => '已丟棄觸發器。', + 'Trigger has been altered.' => '已更改觸發器。', + 'Trigger has been created.' => '已建立觸發器。', + 'Alter trigger' => '更改觸發器', + 'Create trigger' => '建立觸發器', + 'Time' => '時間', + 'Event' => '事件', + 'MySQL version: %s through PHP extension %s' => 'MySQL版本:%s 透過PHP擴充模組 %s', + '%d row(s)' => '%d行', + '~ %s' => '~ %s', + 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP', + 'Remove' => '移除', + 'Are you sure?' => '你確定嗎?', + 'Privileges' => '權限', + 'Create user' => '建立使用者', + 'User has been dropped.' => '已丟棄使用者。', + 'User has been altered.' => '已更改使用者。', + 'User has been created.' => '已建立使用者。', + 'Hashed' => 'Hashed', + 'Column' => '列', + 'Routine' => '程序', + 'Grant' => '授權', + 'Revoke' => '廢除', + 'Logged as: %s' => '登錄為:%s', + 'Too big POST data. Reduce the data or increase the "post_max_size" configuration directive.' => 'POST 資料太大。減少資料或者增加 “post_max_size” 的設定值。', + 'Move up' => '上移', + 'Move down' => '下移', + 'Export' => '匯出', + 'Tables' => '資料表', + 'Data' => '資料', + 'Output' => '輸出', + 'open' => '打開', + 'save' => '儲存', + 'Format' => '格式', + 'SQL' => 'SQL', + 'CSV' => 'CVS', + 'Functions' => '函數', + 'Aggregation' => '集合', + 'Event has been dropped.' => '已丟棄事件。', + 'Event has been altered.' => '已更改事件。', + 'Event has been created.' => '已建立事件。', + 'Alter event' => '更改事件', + 'Create event' => '建立事件', + 'Start' => '開始', + 'End' => '結束', + 'Every' => '每', + 'Status' => '狀態', + 'On completion preserve' => '在完成後保存', + 'Events' => '事件', + 'Schedule' => '調度', + 'At given time' => '在指定時間', + 'Tables have been truncated.' => '已清空資料表。', + 'Tables have been moved.' => '已轉移資料表。', + 'Tables and views' => '資料表和檢視表', + 'Engine' => '引擎', + 'Collation' => '校對', + 'Data Length' => '資料長度', + 'Index Length' => '索引長度', + 'Data Free' => '資料空閒', + 'Rows' => '行數', + ',' => ',', + 'Analyze' => '分析', + 'Optimize' => '優化', + 'Check' => '檢查', + 'Repair' => '修復', + 'Truncate' => '清空', + 'Move to other database' => '轉移到其它資料庫', + 'Move' => '轉移', + 'Save and continue edit' => '保存並繼續編輯', + 'original' => '原始', + '%d item(s) have been affected.' => '%d個項目受到影響。', + 'whole result' => '所有結果', + 'Tables have been dropped.' => '已丟棄表。', + 'Clone' => '複製', + 'Maximum number of allowed fields exceeded. Please increase %s and %s.' => '超過最多允許的字段數量。請增加%s和%s 。', + 'Partition by' => '分區類型', + 'Partitions' => '分區', + 'Partition name' => '分區名', + 'Values' => '值', + '%d row(s) have been imported.' => '%d行已導入。', + 'Table structure' => '資料表結構', + '(anywhere)' => '(任意位置)', + 'CSV Import' => '匯入 CSV', + 'Import' => '匯入', + 'Stop on error' => '出錯時停止', + 'Select table' => '選擇資料表', + '%.3f s' => '%.3f秒', + '$1-$3-$5' => '$1.$3.$5', + 'yyyy-mm-dd' => 'dd.mm.yyyy', + 'History' => '歷史', + 'Variables' => '變數', + 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => '源列和目標列必須具有相同的數據類型,在目標列上必須有一個索引並且引用的數據必須存在。', + 'Relations' => '關聯', + 'Run file' => '執行檔案', + 'Clear' => '清除', + 'Maximum allowed file size is %sB.' => '允許的檔案上限大小為%sB', + 'Numbers' => '數字', + 'Date and time' => '日期時間', + 'Strings' => '字符串', + 'Binary' => '二進制', + 'Lists' => '列表', + 'Editor' => '編輯器', + 'E-mail' => '電子郵件', + 'From' => '來自', + 'Subject' => '主題', + 'Send' => '發送', + '%d e-mail(s) have been sent.' => '已發送 %d 封郵件。', +); Modified: trunk/changes.txt =================================================================== --- trunk/changes.txt 2009-08-20 15:37:39 UTC (rev 988) +++ trunk/changes.txt 2009-08-21 10:38:49 UTC (rev 989) @@ -3,6 +3,7 @@ Respect max_allowed_packet in CSV import Fix Editor date format Fix long SQL query crash (bug #2839231) +Traditional Chinese translation Adminer 2.0.0 (released 2009-08-06): Editor: User friendly data editor This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-08-21 16:54:20
|
Revision: 993 http://adminer.svn.sourceforge.net/adminer/?rev=993&view=rev Author: jakubvrana Date: 2009-08-21 16:54:10 +0000 (Fri, 21 Aug 2009) Log Message: ----------- Edit default values directly in table creation Modified Paths: -------------- trunk/adminer/create.inc.php trunk/adminer/edit.inc.php trunk/adminer/editing.js trunk/adminer/include/adminer.inc.php trunk/adminer/include/editing.inc.php trunk/adminer/include/functions.inc.php trunk/adminer/index.php trunk/adminer/lang/cs.inc.php trunk/adminer/lang/de.inc.php trunk/adminer/lang/es.inc.php trunk/adminer/lang/et.inc.php trunk/adminer/lang/fr.inc.php trunk/adminer/lang/it.inc.php trunk/adminer/lang/nl.inc.php trunk/adminer/lang/ru.inc.php trunk/adminer/lang/sk.inc.php trunk/adminer/lang/zh-tw.inc.php trunk/adminer/lang/zh.inc.php trunk/adminer/table.inc.php trunk/changes.txt trunk/todo.txt Modified: trunk/adminer/create.inc.php =================================================================== --- trunk/adminer/create.inc.php 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/create.inc.php 2009-08-21 16:54:10 UTC (rev 993) @@ -36,7 +36,7 @@ $fields[] = "\n" . (strlen($_GET["create"]) ? (strlen($field["orig"]) ? "CHANGE " . idf_escape($field["orig"]) . " " : "ADD ") : " ") . idf_escape($field["field"]) . process_type($type_field) . ($field["null"] ? " NULL" : " NOT NULL") // NULL for timestamp - . (strlen($_GET["create"]) && strlen($field["orig"]) && isset($orig_fields[$field["orig"]]["default"]) && $field["type"] != "timestamp" ? " DEFAULT " . $dbh->quote($orig_fields[$field["orig"]]["default"]) : "") //! timestamp + . (!$field["has_default"] || $field["auto_increment"] || ereg('text|blob', $field["type"]) ? "" : " DEFAULT " . ($field["type"] == "timestamp" && eregi("^CURRENT_TIMESTAMP( on update CURRENT_TIMESTAMP)?$", $field["default"]) ? $field["default"] : $dbh->quote($field["default"]))) . ($key == $_POST["auto_increment_col"] ? " AUTO_INCREMENT$auto_increment_index" : "") . " COMMENT " . $dbh->quote($field["comment"]) . (strlen($_GET["create"]) ? " $after" : "") @@ -105,7 +105,14 @@ $row = table_status($_GET["create"]); table_comment($row); $row["name"] = $_GET["create"]; - $row["fields"] = array_values($orig_fields); + $row["fields"] = array(); + foreach ($orig_fields as $field) { + $field["has_default"] = isset($field["default"]); + if ($field["on_update"]) { + $field["default"] .= " ON UPDATE $field[on_update]"; // CURRENT_TIMESTAMP + } + $row["fields"][] = $field; + } if ($dbh->server_info >= 5.1) { $from = "FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = " . $dbh->quote($_GET["db"]) . " AND TABLE_NAME = " . $dbh->quote($_GET["create"]); $result = $dbh->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $from ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1"); @@ -124,7 +131,7 @@ } $collations = collations(); -$suhosin = floor(extension_loaded("suhosin") ? (min(ini_get("suhosin.request.max_vars"), ini_get("suhosin.post.max_vars")) - 13) / 8 : 0); +$suhosin = floor(extension_loaded("suhosin") ? (min(ini_get("suhosin.request.max_vars"), ini_get("suhosin.post.max_vars")) - 13) / 10 : 0); // 10 - number of fields per row, 13 - number of other fields if ($suhosin && count($row["fields"]) > $suhosin) { echo "<p class='error'>" . h(lang('Maximum number of allowed fields exceeded. Please increase %s and %s.', 'suhosin.post.max_vars', 'suhosin.request.max_vars')) . "\n"; } @@ -143,7 +150,8 @@ <?php echo lang('Auto Increment'); ?>: <input name="Auto_increment" size="6" value="<?php echo intval($row["Auto_increment"]); ?>"> <?php echo lang('Comment'); ?>: <input name="Comment" value="<?php echo h($row["Comment"]); ?>" maxlength="60"> <script type="text/javascript"> -document.write('<label><input type="checkbox"<?php if ($column_comments) { ?> checked<?php } ?> onclick="column_comments_click(this.checked);"><?php echo lang('Show column comments'); ?><\/label>'); +document.write('<label><input type="checkbox" onclick="column_show(this.checked, 5);"><?php echo lang('Default values'); ?><\/label>'); +document.write('<label><input type="checkbox"<?php if ($column_comments) { ?> checked<?php } ?> onclick="column_show(this.checked, 6);"><?php echo lang('Show column comments'); ?><\/label>'); </script> <p> <input type="hidden" name="token" value="<?php echo $token; ?>"> Modified: trunk/adminer/edit.inc.php =================================================================== --- trunk/adminer/edit.inc.php 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/edit.inc.php 2009-08-21 16:54:10 UTC (rev 993) @@ -3,14 +3,14 @@ $update = ($where || $_POST["edit"]); $fields = fields($_GET["edit"]); foreach ($fields as $name => $field) { - if ((isset($_GET["default"]) ? $field["auto_increment"] || ereg('text|blob', $field["type"]) : !isset($field["privileges"][$update ? "update" : "insert"])) || !strlen($adminer->fieldName($field))) { + if (!isset($field["privileges"][$update ? "update" : "insert"]) || !strlen($adminer->fieldName($field))) { unset($fields[$name]); } } if ($_POST && !$error && !isset($_GET["select"])) { $location = $_SERVER["REQUEST_URI"]; // continue edit or insert if (!$_POST["insert"]) { - $location = ME . (isset($_GET["default"]) ? "table=" : "select=") . urlencode($_GET["edit"]); + $location = ME . "select=" . urlencode($_GET["edit"]); $i = 0; // append &set converted to &where foreach ((array) $_GET["set"] as $key => $val) { if ($val == $_POST["fields"][$key]) { @@ -21,24 +21,14 @@ $set = array(); foreach ($fields as $name => $field) { $val = process_input($field); - if (!isset($_GET["default"])) { - if ($val !== false || !$update) { - $set[] = "\n" . idf_escape($name) . " = " . ($val !== false ? $val : "''"); - } - } elseif ($val !== false) { - if ($field["type"] == "timestamp" && $val != "NULL") { //! doesn't allow DEFAULT NULL and no ON UPDATE - $set[] = "\nMODIFY " . idf_escape($name) . " timestamp" . ($field["null"] ? " NULL" : "") . " DEFAULT $val" . ($_POST["on_update"][bracket_escape($name)] ? " ON UPDATE CURRENT_TIMESTAMP" : ""); - } else { - $set[] = "\nALTER " . idf_escape($name) . ($val == "NULL" ? " DROP DEFAULT" : " SET DEFAULT $val"); - } + if ($val !== false || !$update) { + $set[] = "\n" . idf_escape($name) . " = " . ($val !== false ? $val : "''"); } } if (!$set) { redirect($location); } - if (isset($_GET["default"])) { - query_redirect("ALTER TABLE " . idf_escape($_GET["edit"]) . implode(",", $set), $location, lang('Default values have been set.')); - } elseif ($update) { + if ($update) { query_redirect("UPDATE " . idf_escape($_GET["edit"]) . " SET" . implode(",", $set) . "\nWHERE $where\nLIMIT 1", $location, lang('Item has been updated.')); } else { query_redirect("INSERT INTO " . idf_escape($_GET["edit"]) . " SET" . implode(",", $set), $location, lang('Item has been inserted.')); @@ -47,9 +37,9 @@ $table_name = $adminer->tableName(table_status($_GET["edit"])); page_header( - (isset($_GET["default"]) ? lang('Default values') : ($update ? lang('Edit') : lang('Insert'))), + ($update ? lang('Edit') : lang('Insert')), $error, - array((isset($_GET["default"]) ? "table" : "select") => array($_GET["edit"], $table_name)), + array("select" => array($_GET["edit"], $table_name)), $table_name ); @@ -89,14 +79,6 @@ } $function = ($_POST["save"] ? (string) $_POST["function"][$name] : ($where && $field["on_update"] == "CURRENT_TIMESTAMP" ? "now" : ($value === false ? null : (isset($value) ? '' : 'NULL')))); input($field, $value, $function); - if (isset($_GET["default"]) && $field["type"] == "timestamp") { - if (!isset($create) && !$_POST) { - //! disable sql_mode NO_FIELD_OPTIONS - $create = $dbh->result($dbh->query("SHOW CREATE TABLE " . idf_escape($_GET["edit"])), 1); - } - $checked = ($_POST ? $_POST["on_update"][bracket_escape($name)] : preg_match("~\n\\s*" . preg_quote(idf_escape($name), '~') . " timestamp.* on update CURRENT_TIMESTAMP~i", $create)); - echo '<label><input type="checkbox" name="on_update[' . h(bracket_escape($name)) . ']" value="1"' . ($checked ? ' checked' : '') . '>' . lang('ON UPDATE CURRENT_TIMESTAMP') . '</label>'; - } echo "\n"; } echo "</table>\n"; @@ -111,7 +93,7 @@ } if ($fields) { echo "<input type='submit' value='" . lang('Save') . "'>\n"; - if (!isset($_GET["default"]) && !isset($_GET["select"])) { + if (!isset($_GET["select"])) { echo "<input type='submit' name='insert' value='" . ($update ? lang('Save and continue edit') : lang('Save and insert next')) . "'>\n"; } } Modified: trunk/adminer/editing.js =================================================================== --- trunk/adminer/editing.js 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/editing.js 2009-08-21 16:54:10 UTC (rev 993) @@ -125,10 +125,10 @@ } } -function column_comments_click(checked) { +function column_show(checked, column) { var trs = document.getElementById('edit-fields').getElementsByTagName('tr'); for (var i=0; i < trs.length; i++) { - trs[i].getElementsByTagName('td')[5].className = (checked ? '' : 'hidden'); + trs[i].getElementsByTagName('td')[column].className = (checked ? 'nowrap' : 'hidden'); } } Modified: trunk/adminer/include/adminer.inc.php =================================================================== --- trunk/adminer/include/adminer.inc.php 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/include/adminer.inc.php 2009-08-21 16:54:10 UTC (rev 993) @@ -346,26 +346,24 @@ */ function editFunctions($field) { $return = array(""); - if (!isset($_GET["default"])) { - if (ereg('char|date|time', $field["type"])) { - $return = (ereg('char', $field["type"]) ? array("", "md5", "sha1", "password", "uuid") : array("", "now")); //! JavaScript for disabling maxlength + if (ereg('char|date|time', $field["type"])) { + $return = (ereg('char', $field["type"]) ? array("", "md5", "sha1", "password", "uuid") : array("", "now")); //! JavaScript for disabling maxlength + } + if (!isset($_GET["call"]) && (isset($_GET["select"]) || where($_GET))) { + // relative functions + if (ereg('int|float|double|decimal', $field["type"])) { + $return = array("", "+", "-"); } - if (!isset($_GET["call"]) && (isset($_GET["select"]) || where($_GET))) { - // relative functions - if (ereg('int|float|double|decimal', $field["type"])) { - $return = array("", "+", "-"); - } - if (ereg('date', $field["type"])) { - $return[] = "+ interval"; - $return[] = "- interval"; - } - if (ereg('time', $field["type"])) { - $return[] = "addtime"; - $return[] = "subtime"; - } + if (ereg('date', $field["type"])) { + $return[] = "+ interval"; + $return[] = "- interval"; } + if (ereg('time', $field["type"])) { + $return[] = "addtime"; + $return[] = "subtime"; + } } - if ($field["null"] || isset($_GET["default"])) { + if ($field["null"]) { array_unshift($return, "NULL"); } return $return; Modified: trunk/adminer/include/editing.inc.php =================================================================== --- trunk/adminer/include/editing.inc.php 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/include/editing.inc.php 2009-08-21 16:54:10 UTC (rev 993) @@ -73,6 +73,7 @@ <?php if ($type == "TABLE") { ?> <td><?php echo lang('NULL'); ?> <td><input type="radio" name="auto_increment_col" value=""><?php echo lang('Auto Increment'); ?> +<td class="hidden"><?php echo lang('Default values'); ?> <td<?php echo ($column_comments ? "" : " class='hidden'"); ?>><?php echo lang('Comment'); ?> <?php } ?> <td><?php echo "<input type='image' name='add[0]' src='../adminer/plus.gif' alt='+' title='" . lang('Add next') . "'>"; ?><script type="text/javascript">row_count = <?php echo count($fields); ?>;</script> @@ -89,6 +90,7 @@ <?php if ($type == "TABLE") { ?> <td><input type="checkbox" name="fields[<?php echo $i; ?>][null]" value="1"<?php if ($field["null"]) { ?> checked<?php } ?>> <td><input type="radio" name="auto_increment_col" value="<?php echo $i; ?>"<?php if ($field["auto_increment"]) { ?> checked<?php } ?>> +<td class="nowrap hidden"><input type="checkbox" name="fields[<?php echo $i; ?>][has_default]" value="1"<?php echo ($field["has_default"] ? " checked" : ""); ?>><input name="fields[<?php echo $i; ?>][default]" value="<?php echo h($field["default"]); ?>" onchange="this.previousSibling.checked = true;"> <td<?php echo ($column_comments ? "" : " class='hidden'"); ?>><input name="fields[<?php echo $i; ?>][comment]" value="<?php echo h($field["comment"]); ?>" maxlength="255"> <?php } ?> <?php Modified: trunk/adminer/include/functions.inc.php =================================================================== --- trunk/adminer/include/functions.inc.php 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/include/functions.inc.php 2009-08-21 16:54:10 UTC (rev 993) @@ -287,17 +287,15 @@ echo "<td class='function'>"; if ($field["type"] == "enum") { echo " <td>" . (isset($_GET["select"]) ? " <label><input type='radio' name='fields[$name]' value='-1' checked><em>" . lang('original') . "</em></label>" : ""); - if ($field["null"] || isset($_GET["default"])) { + if ($field["null"]) { echo " <label><input type='radio' name='fields[$name]' value=''" . (($field["null"] ? isset($value) : strlen($value)) || isset($_GET["select"]) ? '' : ' checked') . '>' . ($field["null"] ? '<em>NULL</em>' : '') . '</label>'; } - if (!isset($_GET["default"])) { - echo "<input type='radio' name='fields[$name]' value='0'" . ($value === 0 ? ' checked' : '') . '>'; - } + echo "<input type='radio' name='fields[$name]' value='0'" . ($value === 0 ? ' checked' : '') . '>'; preg_match_all("~'((?:[^']|'')*)'~", $field["length"], $matches); foreach ($matches[1] as $i => $val) { $val = stripcslashes(str_replace("''", "'", $val)); $checked = (is_int($value) ? $value == $i+1 : $value === $val); - echo " <label><input type='radio' name='fields[$name]' value='" . (isset($_GET["default"]) ? (strlen($val) ? h($val) : " ") : $i+1) . "'" . ($checked ? ' checked' : '') . '>' . h($val) . '</label>'; + echo " <label><input type='radio' name='fields[$name]' value='" . ($i+1) . "'" . ($checked ? ' checked' : '') . '>' . h($val) . '</label>'; } } else { $functions = (isset($_GET["select"]) ? array("orig" => lang('original')) : array()) + $adminer->editFunctions($field); @@ -312,7 +310,7 @@ foreach ($matches[1] as $i => $val) { $val = stripcslashes(str_replace("''", "'", $val)); $checked = (is_int($value) ? ($value >> $i) & 1 : in_array($val, explode(",", $value), true)); - echo " <label><input type='checkbox' name='fields[$name][$i]' value='" . (isset($_GET["default"]) ? h($val) : 1 << $i) . "'" . ($checked ? ' checked' : '') . "$onchange>" . h($val) . '</label>'; + echo " <label><input type='checkbox' name='fields[$name][$i]' value='" . (1 << $i) . "'" . ($checked ? ' checked' : '') . "$onchange>" . h($val) . '</label>'; } } elseif (strpos($field["type"], "text") !== false) { echo "<textarea name='fields[$name]' cols='50' rows='12'$onchange>" . h($value) . '</textarea>'; @@ -336,9 +334,9 @@ } elseif ($field["type"] == "enum" || $field["auto_increment"] ? !strlen($value) : $function == "NULL") { return "NULL"; } elseif ($field["type"] == "enum") { - return (isset($_GET["default"]) ? $dbh->quote($value) : intval($value)); + return intval($value); } elseif ($field["type"] == "set") { - return (isset($_GET["default"]) ? $dbh->quote(implode(",", (array) $value)) : array_sum((array) $value)); + return array_sum((array) $value); } elseif (ereg('binary|blob', $field["type"])) { $file = get_file($idf); if (!is_string($file)) { Modified: trunk/adminer/index.php =================================================================== --- trunk/adminer/index.php 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/index.php 2009-08-21 16:54:10 UTC (rev 993) @@ -22,10 +22,6 @@ } elseif (isset($_GET["privileges"])) { include "./privileges.inc.php"; } else { - if (isset($_GET["default"])) { - // edit form is used for default values and distinguished by checking isset($_GET["default"]) in edit.inc.php - $_GET["edit"] = $_GET["default"]; - } if (isset($_GET["select"]) && ($_POST["edit"] || $_POST["clone"]) && !$_POST["save"]) { $_GET["edit"] = $_GET["select"]; } Modified: trunk/adminer/lang/cs.inc.php =================================================================== --- trunk/adminer/lang/cs.inc.php 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/lang/cs.inc.php 2009-08-21 16:54:10 UTC (rev 993) @@ -72,7 +72,6 @@ 'Unable to select the table' => 'Nepodařilo se vypsat tabulku', 'Invalid CSRF token. Send the form again.' => 'Neplatný token CSRF. Odešlete formulář znovu.', 'Comment' => 'Komentář', - 'Default values have been set.' => 'Výchozí hodnoty byly nastaveny.', 'Default values' => 'Výchozí hodnoty', 'BOOL' => 'BOOL', 'Show column comments' => 'Zobrazit komentáře sloupců', @@ -134,7 +133,6 @@ 'MySQL version: %s through PHP extension %s' => 'Verze MySQL: %s přes PHP extenzi %s', '%d row(s)' => array('%d řádek', '%d řádky', '%d řádků'), '~ %s' => '~ %s', - 'ON UPDATE CURRENT_TIMESTAMP' => 'Při změně aktuální čas', 'Remove' => 'Odebrat', 'Are you sure?' => 'Opravdu?', 'Privileges' => 'Oprávnění', Modified: trunk/adminer/lang/de.inc.php =================================================================== --- trunk/adminer/lang/de.inc.php 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/lang/de.inc.php 2009-08-21 16:54:10 UTC (rev 993) @@ -72,7 +72,6 @@ 'Unable to select the table' => 'Auswahl der Tabelle fehlgeschlagen', 'Invalid CSRF token. Send the form again.' => 'CSRF Token ungültig. Bitte die Formulardaten erneut abschicken.', 'Comment' => 'Kommentar', - 'Default values have been set.' => 'Standard Vorgabewerte sind erstellt worden.', 'Default values' => 'Vorgabewerte festlegen', 'BOOL' => 'BOOL', 'Show column comments' => 'Spaltenkommentare zeigen', @@ -134,7 +133,6 @@ 'MySQL version: %s through PHP extension %s' => 'Version MySQL: %s, mit PHP-Erweiterung %s', '%d row(s)' => array('%d Datensatz', '%d Datensätze'), '~ %s' => '~ %s', - 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP', 'Remove' => 'Entfernen', 'Are you sure?' => 'Sind Sie sicher ?', 'Privileges' => 'Rechte', Modified: trunk/adminer/lang/es.inc.php =================================================================== --- trunk/adminer/lang/es.inc.php 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/lang/es.inc.php 2009-08-21 16:54:10 UTC (rev 993) @@ -72,7 +72,6 @@ 'Unable to select the table' => 'No posible seleccionar la tabla', 'Invalid CSRF token. Send the form again.' => 'Token CSRF inválido. Vuelva a enviar los datos del formulario.', 'Comment' => 'Comentario', - 'Default values have been set.' => 'Valores predeterminados establecidos.', 'Default values' => 'Valores predeterminados', 'BOOL' => 'BOOL', 'Show column comments' => 'Mostrar comentario de columnas', @@ -134,7 +133,6 @@ 'MySQL version: %s through PHP extension %s' => 'Versión MySQL: %s a través de extensión PHP %s', '%d row(s)' => array('%d registro', '%d registros'), '~ %s' => '~ %s', - 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP', 'Remove' => 'Eliminar', 'Are you sure?' => 'Está seguro?', 'Privileges' => 'Privilegios', Modified: trunk/adminer/lang/et.inc.php =================================================================== --- trunk/adminer/lang/et.inc.php 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/lang/et.inc.php 2009-08-21 16:54:10 UTC (rev 993) @@ -72,7 +72,6 @@ 'Unable to select the table' => 'Tabeli valimine ebaõnnestus', 'Invalid CSRF token. Send the form again.' => 'Sobimatu CSRF, palun postitage vorm uuesti.', 'Comment' => 'Kommentaar', - 'Default values have been set.' => 'Vaimimisi väärtused on edukalt määratud.', 'Default values' => 'Vaikimisi väärtused', 'BOOL' => 'Jah/Ei (BOOL)', 'Show column comments' => 'Kuva veeru kommentaarid', @@ -133,7 +132,6 @@ 'Event' => 'Sündmus', '%d row(s)' => array('%d rida', '%d rida'), '~ %s' => '~ %s', - 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP', 'Remove' => 'Eemalda', 'Are you sure?' => 'Kas oled kindel?', 'Privileges' => 'Õigused', Modified: trunk/adminer/lang/fr.inc.php =================================================================== --- trunk/adminer/lang/fr.inc.php 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/lang/fr.inc.php 2009-08-21 16:54:10 UTC (rev 993) @@ -72,7 +72,6 @@ 'Unable to select the table' => 'Impossible de sélectionner la table', 'Invalid CSRF token. Send the form again.' => 'Token CSRF invalide. Veuillez réenvoyer le formulaire.', 'Comment' => 'Commentaire', - 'Default values have been set.' => 'Valeur par défaut établie .', 'Default values' => 'Valeurs par défaut', 'BOOL' => 'BOOL', 'Show column comments' => 'Voir les commentaires sur les colonnes', @@ -133,7 +132,6 @@ 'Event' => 'Évènement', '%d row(s)' => array('%d ligne', '%d lignes'), '~ %s' => '~ %s', - 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP', 'Remove' => 'Effacer', 'Are you sure?' => 'Êtes-vous certain?', 'Privileges' => 'Privilège', Modified: trunk/adminer/lang/it.inc.php =================================================================== --- trunk/adminer/lang/it.inc.php 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/lang/it.inc.php 2009-08-21 16:54:10 UTC (rev 993) @@ -72,7 +72,6 @@ 'Unable to select the table' => 'Selezione della tabella non riuscita', 'Invalid CSRF token. Send the form again.' => 'Token CSRF non valido. Reinvia la richiesta.', 'Comment' => 'Commento', - 'Default values have been set.' => 'Valore predefinito impostato.', 'Default values' => 'Valori predefiniti', 'BOOL' => 'BOOL', 'Show column comments' => 'Mostra i commenti delle colonne', @@ -134,7 +133,6 @@ 'MySQL version: %s through PHP extension %s' => 'Versione MySQL: %s via estensione PHP %s', '%d row(s)' => array('%d riga', '%d righe'), '~ %s' => '~ %s', - 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP', 'Remove' => 'Rimuovi', 'Are you sure?' => 'Sicuro?', 'Privileges' => 'Privilegi', Modified: trunk/adminer/lang/nl.inc.php =================================================================== --- trunk/adminer/lang/nl.inc.php 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/lang/nl.inc.php 2009-08-21 16:54:10 UTC (rev 993) @@ -72,7 +72,6 @@ 'Unable to select the table' => 'Onmogelijk tabel te selecteren', 'Invalid CSRF token. Send the form again.' => 'Ongeldig CSRF token. Verstuur het formulier opnieuw.', 'Comment' => 'Commentaar', - 'Default values have been set.' => 'Standaard waarde ingesteld.', 'Default values' => 'Standaard waarden', 'BOOL' => 'BOOL', 'Show column comments' => 'Kolomcommentaar weergeven', @@ -134,7 +133,6 @@ 'MySQL version: %s through PHP extension %s' => 'MySQL versie: %s met PHP extensie %s', '%d row(s)' => array('%d rij', '%d rijen'), '~ %s' => '~ %s', - 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP', 'Remove' => 'Verwijderen', 'Are you sure?' => 'Weet u het zeker?', 'Privileges' => 'Rechten', Modified: trunk/adminer/lang/ru.inc.php =================================================================== --- trunk/adminer/lang/ru.inc.php 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/lang/ru.inc.php 2009-08-21 16:54:10 UTC (rev 993) @@ -72,7 +72,6 @@ 'Unable to select the table' => 'Не удалось получить данные из таблицы', 'Invalid CSRF token. Send the form again.' => 'Недействительный CSRF токен. Отправите форму ещё раз.', 'Comment' => 'Комментарий', - 'Default values have been set.' => 'Были установлены значения по умолчанию.', 'Default values' => 'Значения по умолчанию', 'BOOL' => 'Булев тип', 'Show column comments' => 'Показать комментарии к колонке', @@ -134,7 +133,6 @@ 'MySQL version: %s through PHP extension %s' => 'Версия MySQL: %s с PHP-расширением %s', '%d row(s)' => array('%d строка', '%d строки', '%d строк'), '~ %s' => '~ %s', - 'ON UPDATE CURRENT_TIMESTAMP' => 'ПРИ ИЗМЕНЕНИИ ТЕКУЩЕГО TIMESTAMP', 'Remove' => 'Удалить', 'Are you sure?' => 'Вы уверены?', 'Privileges' => 'Полномочия', Modified: trunk/adminer/lang/sk.inc.php =================================================================== --- trunk/adminer/lang/sk.inc.php 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/lang/sk.inc.php 2009-08-21 16:54:10 UTC (rev 993) @@ -72,7 +72,6 @@ 'Unable to select the table' => 'Tabuľku sa nepodarilo vypísať', 'Invalid CSRF token. Send the form again.' => 'Neplatný token CSRF. Odošlite formulár znova.', 'Comment' => 'Komentár', - 'Default values have been set.' => 'Východzie hodnoty boli nastavené.', 'Default values' => 'Východzie hodnoty', 'BOOL' => 'BOOL', 'Show column comments' => 'Zobraziť komentáre stĺpcov', @@ -134,7 +133,6 @@ 'MySQL version: %s through PHP extension %s' => 'Verzia MySQL: %s cez PHP rozšírenie %s', '%d row(s)' => array('%d riadok', '%d riadky', '%d riadkov'), '~ %s' => '~ %s', - 'ON UPDATE CURRENT_TIMESTAMP' => 'Pri zmene aktuálny čas', 'Remove' => 'Odobrať', 'Are you sure?' => 'Naozaj?', 'Privileges' => 'Oprávnenia', Modified: trunk/adminer/lang/zh-tw.inc.php =================================================================== --- trunk/adminer/lang/zh-tw.inc.php 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/lang/zh-tw.inc.php 2009-08-21 16:54:10 UTC (rev 993) @@ -72,7 +72,6 @@ 'Unable to select the table' => '無法選擇該資料表', 'Invalid CSRF token. Send the form again.' => '無效的 CSRF token。請重新發送表單。', 'Comment' => '註解', - 'Default values have been set.' => '預設值已設置。', 'Default values' => '預設值', 'BOOL' => 'BOOL', 'Show column comments' => '顯示列註解', @@ -134,7 +133,6 @@ 'MySQL version: %s through PHP extension %s' => 'MySQL版本:%s 透過PHP擴充模組 %s', '%d row(s)' => '%d行', '~ %s' => '~ %s', - 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP', 'Remove' => '移除', 'Are you sure?' => '你確定嗎?', 'Privileges' => '權限', Modified: trunk/adminer/lang/zh.inc.php =================================================================== --- trunk/adminer/lang/zh.inc.php 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/lang/zh.inc.php 2009-08-21 16:54:10 UTC (rev 993) @@ -72,7 +72,6 @@ 'Unable to select the table' => '不能选择该表', 'Invalid CSRF token. Send the form again.' => '无效 CSRF 令牌。重新发送表单。', 'Comment' => '注释', - 'Default values have been set.' => '默认值已设置。', 'Default values' => '默认值', 'BOOL' => 'BOOL', 'Show column comments' => '显示列注释', @@ -134,7 +133,6 @@ 'MySQL version: %s through PHP extension %s' => 'MySQL 版本:%s 通过 PHP 扩展 %s', '%d row(s)' => '%d 行', '~ %s' => '~ %s', - 'ON UPDATE CURRENT_TIMESTAMP' => 'ON UPDATE CURRENT_TIMESTAMP', 'Remove' => '移除', 'Are you sure?' => '你确定吗?', 'Privileges' => '权限', Modified: trunk/adminer/table.inc.php =================================================================== --- trunk/adminer/table.inc.php 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/adminer/table.inc.php 2009-08-21 16:54:10 UTC (rev 993) @@ -9,13 +9,9 @@ page_header(($result && $is_view ? lang('View') : lang('Table')) . ": " . h($_GET["table"]), $error); if ($result) { - $auto_increment_only = true; echo "<table cellspacing='0'>\n"; echo "<thead><tr><th>" . lang('Column') . "<td>" . lang('Type') . "<td>" . lang('Comment') . "</thead>\n"; while ($row = $result->fetch_assoc()) { - if (!$row["auto_increment"]) { - $auto_increment_only = false; - } echo "<tr><th>" . h($row["Field"]); echo "<td>" . h($row["Type"]) . ($row["Null"] == "YES" ? " <i>NULL</i>" : ""); echo "<td>" . (strlen(trim($row["Comment"])) ? h($row["Comment"]) : " "); @@ -29,7 +25,6 @@ echo '<a href="' . h(ME) . 'view=' . urlencode($_GET["table"]) . '">' . lang('Alter view') . '</a>'; } else { echo '<a href="' . h(ME) . 'create=' . urlencode($_GET["table"]) . '">' . lang('Alter table') . '</a>'; - echo ($auto_increment_only ? '' : ' <a href="' . h(ME) . 'default=' . urlencode($_GET["table"]) . '">' . lang('Default values') . '</a>'); } echo ' <a href="' . h(ME) . 'select=' . urlencode($_GET["table"]) . '">' . lang('Select table') . '</a>'; echo ' <a href="' . h(ME) . 'edit=' . urlencode($_GET["table"]) . '">' . lang('New item') . '</a>'; Modified: trunk/changes.txt =================================================================== --- trunk/changes.txt 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/changes.txt 2009-08-21 16:54:10 UTC (rev 993) @@ -1,4 +1,5 @@ -Adminer 2.0.1: +Adminer 2.1.0: +Edit default values directly in table creation Display column comments in table overview Respect max_allowed_packet in CSV import Fix Editor date format Modified: trunk/todo.txt =================================================================== --- trunk/todo.txt 2009-08-21 16:16:12 UTC (rev 992) +++ trunk/todo.txt 2009-08-21 16:54:10 UTC (rev 993) @@ -9,7 +9,6 @@ Highlight SQL textarea - may use external CodePress Mass editation of individual rows IE6 - <label for> -Edit default values directly in table creation Offer enum and set items in search - whisperer Use event $intervals + microseconds in relative date functions Table status cache - SHOW TABLE STATUS is slow with big InnoDB tables This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-08-26 11:55:53
|
Revision: 1018 http://adminer.svn.sourceforge.net/adminer/?rev=1018&view=rev Author: jakubvrana Date: 2009-08-26 11:55:45 +0000 (Wed, 26 Aug 2009) Log Message: ----------- Save memory Modified Paths: -------------- trunk/adminer/sql.inc.php trunk/todo.txt Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-08-26 11:23:31 UTC (rev 1017) +++ trunk/adminer/sql.inc.php 2009-08-26 11:55:45 UTC (rev 1018) @@ -8,9 +8,13 @@ page_header(lang('SQL command'), $error); if (!$error && $_POST) { - $query = ($_POST["webfile"] ? @file_get_contents("adminer.sql") : ($_POST["file"] ? get_file("sql_file") : $_POST["query"])); + $query = $_POST["query"]; + if ($_POST["webfile"]) { + $query = @file_get_contents("adminer.sql"); + } elseif ($_POST["file"]) { + $query = get_file("sql_file"); + } if (is_string($query)) { // get_file() returns error as number, file_get_contents as false - $query = rtrim($query); if (strlen($query) && (!$history || end($history) != $query)) { // don't add repeated $history[] = $query; } @@ -30,24 +34,10 @@ preg_match('(' . preg_quote($delimiter) . '|[\'`"]|/\\*|-- |#|$)', $query, $match, PREG_OFFSET_CAPTURE, $offset); // should always match $found = $match[0][0]; $offset = $match[0][1] + strlen($found); - if ($found && $found != $delimiter) { - // is not end of a query - find closing part - if (ereg('/\\*|-- |#', $found)) { - $offset = strpos($query, ($found == "/*" ? "*/" : "\n"), $offset); - if (!$offset) { - $offset = strlen($query); - } - } else { - // find matching quote - while (preg_match("~$found|\\\\.|\$~s", $query, $match, PREG_OFFSET_CAPTURE, $offset)) { - $s = $match[0][0]; - $offset = $match[0][1] + strlen($s); - if (!$s || $s == $found) { - break; - } - } - } - } else { + if (!$found && !strlen(rtrim($query))) { + break; + } + if (!$found || $found == $delimiter) { // end of a query $empty = false; echo "<pre class='jush-sql'>" . shorten_utf8(trim(substr($query, 0, $match[0][1]))) . "</pre>\n"; ob_flush(); @@ -80,6 +70,19 @@ } $query = substr($query, $offset); $offset = 0; + } elseif (ereg('/\\*|-- |#', $found)) { // find closing part + $offset = strpos($query, ($found == "/*" ? "*/" : "\n"), $offset); + if (!$offset) { + $offset = strlen($query); + } + } else { // find matching quote + while (preg_match("~$found|\\\\.|\$~s", $query, $match, PREG_OFFSET_CAPTURE, $offset)) { + $s = $match[0][0]; + $offset = $match[0][1] + strlen($s); + if (!$s || $s == $found) { + break; + } + } } } } @@ -115,7 +118,7 @@ echo "<fieldset><legend>" . lang('History') . "</legend>\n"; foreach ($history as $key => $val) { //! save and display timestamp - echo '<a href="' . h(ME . "sql=&history=$key") . '">' . lang('Edit') . '</a> <code class="jush-sql">' . shorten_utf8(ltrim(str_replace("\n", " ", preg_replace('~^(#|-- ).*~m', '', $val))), 80, "</code>") . "<br>\n"; + echo '<a href="' . h(ME . "sql=&history=$key") . '">' . lang('Edit') . '</a> <code class="jush-sql">' . shorten_utf8(ltrim(str_replace("\n", " ", str_replace("\r", "", preg_replace('~^(#|-- ).*~m', '', $val)))), 80, "</code>") . "<br>\n"; } echo "<input type='submit' name='clear' value='" . lang('Clear') . "'>\n"; echo "</fieldset>\n"; Modified: trunk/todo.txt =================================================================== --- trunk/todo.txt 2009-08-26 11:23:31 UTC (rev 1017) +++ trunk/todo.txt 2009-08-26 11:55:45 UTC (rev 1018) @@ -5,6 +5,7 @@ MySQL 5 BIT data type Transactions in export Compress export and import +SQL query and CSV import - read file progressively to save memory Create view and routine options Function to fix database encoding - http://php.vrana.cz/prevod-kodovani-mysql.php Highlight SQL textarea - may use external CodePress This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-08-27 18:11:40
|
Revision: 1030 http://adminer.svn.sourceforge.net/adminer/?rev=1030&view=rev Author: jakubvrana Date: 2009-08-27 18:11:32 +0000 (Thu, 27 Aug 2009) Log Message: ----------- Move unused function Modified Paths: -------------- trunk/adminer/include/functions.inc.php trunk/editor/include/editing.inc.php Modified: trunk/adminer/include/functions.inc.php =================================================================== --- trunk/adminer/include/functions.inc.php 2009-08-27 14:14:19 UTC (rev 1029) +++ trunk/adminer/include/functions.inc.php 2009-08-27 18:11:32 UTC (rev 1030) @@ -370,8 +370,3 @@ $domain = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; // one domain component return eregi("^$atom+(\\.$atom+)*@($domain?\\.)+$domain\$", $email); } - -function email_header($header) { - // iconv_mime_encode requires PHP 5, imap_8bit requires IMAP extension - return "=?UTF-8?B?" . base64_encode($header) . "?="; //! split long lines -} Modified: trunk/editor/include/editing.inc.php =================================================================== --- trunk/editor/include/editing.inc.php 2009-08-27 14:14:19 UTC (rev 1029) +++ trunk/editor/include/editing.inc.php 2009-08-27 18:11:32 UTC (rev 1030) @@ -1,2 +1,5 @@ <?php - +function email_header($header) { + // iconv_mime_encode requires PHP 5, imap_8bit requires IMAP extension + return "=?UTF-8?B?" . base64_encode($header) . "?="; //! split long lines +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-08-29 13:51:46
|
Revision: 1042 http://adminer.svn.sourceforge.net/adminer/?rev=1042&view=rev Author: jakubvrana Date: 2009-08-29 13:51:32 +0000 (Sat, 29 Aug 2009) Log Message: ----------- Print ALTER command instead of running it in export Modified Paths: -------------- trunk/adminer/dump.inc.php trunk/adminer/include/export.inc.php trunk/changes.txt trunk/todo.txt Modified: trunk/adminer/dump.inc.php =================================================================== --- trunk/adminer/dump.inc.php 2009-08-29 13:50:28 UTC (rev 1041) +++ trunk/adminer/dump.inc.php 2009-08-29 13:51:32 UTC (rev 1042) @@ -46,7 +46,7 @@ dump(($style == "CREATE+ALTER" ? preg_replace('~^CREATE DATABASE ~', '\\0IF NOT EXISTS ', $create) : $create) . ";\n"); } if ($style && $_POST["format"] == "sql") { - dump("USE " . idf_escape($db) . ";\n\n"); + dump(($style == "CREATE+ALTER" ? "SET @adminer_alter = '';\n" : "") . "USE " . idf_escape($db) . ";\n\n"); $out = ""; if ($dbh->server_info >= 5) { foreach (array("FUNCTION", "PROCEDURE") as $routine) { @@ -108,7 +108,7 @@ // drop old tables $query = "SELECT TABLE_NAME, ENGINE, TABLE_COLLATION, TABLE_COMMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE()"; dump("DELIMITER ;; -CREATE PROCEDURE adminer_drop () BEGIN +CREATE PROCEDURE adminer_alter (INOUT alter_command text) BEGIN DECLARE _table_name, _engine, _table_collation varchar(64); DECLARE _table_comment varchar(64); DECLARE done bool DEFAULT 0; @@ -130,20 +130,20 @@ } dump(" ELSE - SET @alter_table = CONCAT('DROP TABLE `', REPLACE(_table_name, '`', '``'), '`'); - PREPARE alter_command FROM @alter_table; - EXECUTE alter_command; -- returns can't return a result set in the given context with MySQL extension - DROP PREPARE alter_command; + SET alter_command = CONCAT(alter_command, 'DROP TABLE `', REPLACE(_table_name, '`', '``'), '`;\\n'); END CASE; END IF; UNTIL done END REPEAT; CLOSE tables; END;; DELIMITER ; -CALL adminer_drop; -DROP PROCEDURE adminer_drop; +CALL adminer_alter(@adminer_alter); +DROP PROCEDURE adminer_alter; "); } + if (in_array("CREATE+ALTER", array($style, $_POST["table_style"])) && $_POST["format"] == "sql") { + dump("SELECT @adminer_alter;\n"); + } } } dump(); Modified: trunk/adminer/include/export.inc.php =================================================================== --- trunk/adminer/include/export.inc.php 2009-08-29 13:50:28 UTC (rev 1041) +++ trunk/adminer/include/export.inc.php 2009-08-29 13:51:32 UTC (rev 1042) @@ -19,7 +19,7 @@ // create procedure which iterates over original columns and adds new and removes old $query = "SELECT COLUMN_NAME, COLUMN_DEFAULT, IS_NULLABLE, COLLATION_NAME, COLUMN_TYPE, EXTRA, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = " . $dbh->quote($table) . " ORDER BY ORDINAL_POSITION"; dump("DELIMITER ;; -CREATE PROCEDURE adminer_alter () BEGIN +CREATE PROCEDURE adminer_alter (INOUT alter_command text) BEGIN DECLARE _column_name, _collation_name, _column_type, after varchar(64) DEFAULT ''; DECLARE _column_default longtext; DECLARE _is_nullable char(3); @@ -76,14 +76,11 @@ UNTIL done END REPEAT; CLOSE columns; IF @alter_table != '' OR add_columns != '' THEN - SET @alter_table = CONCAT('ALTER TABLE " . idf_escape($table) . "', SUBSTR(CONCAT(add_columns, @alter_table), 2)); - PREPARE alter_command FROM @alter_table; - EXECUTE alter_command; - DROP PREPARE alter_command; + SET alter_command = CONCAT(alter_command, 'ALTER TABLE " . idf_escape($table) . "', SUBSTR(CONCAT(add_columns, @alter_table), 2), ';\\n'); END IF; END;; DELIMITER ; -CALL adminer_alter; +CALL adminer_alter(@adminer_alter); DROP PROCEDURE adminer_alter; "); Modified: trunk/changes.txt =================================================================== --- trunk/changes.txt 2009-08-29 13:50:28 UTC (rev 1041) +++ trunk/changes.txt 2009-08-29 13:51:32 UTC (rev 1042) @@ -4,6 +4,7 @@ Compress export and import Display column comments in table overview Respect max_allowed_packet in CSV import +Print ALTER command instead of running it in export Click on row selects it Fix Editor date format Fix long SQL query crash (bug #2839231) Modified: trunk/todo.txt =================================================================== --- trunk/todo.txt 2009-08-29 13:50:28 UTC (rev 1041) +++ trunk/todo.txt 2009-08-29 13:51:32 UTC (rev 1042) @@ -1,5 +1,4 @@ Bulk database drop -Print CREATE+ALTER export instead of running it Add whisperer to fields with foreign key Highlight found fields MySQL 5 BIT data type This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-09-01 13:09:11
|
Revision: 1054 http://adminer.svn.sourceforge.net/adminer/?rev=1054&view=rev Author: jakubvrana Date: 2009-09-01 13:09:00 +0000 (Tue, 01 Sep 2009) Log Message: ----------- Read adminer.sql progressively to save memory Modified Paths: -------------- trunk/adminer/sql.inc.php trunk/todo.txt Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-09-01 13:05:50 UTC (rev 1053) +++ trunk/adminer/sql.inc.php 2009-09-01 13:09:00 UTC (rev 1054) @@ -8,23 +8,26 @@ page_header(lang('SQL command'), $error); if (!$error && $_POST) { + $fp = false; $query = $_POST["query"]; if ($_POST["webfile"]) { - $query = @file_get_contents(file_exists("adminer.sql") ? "adminer.sql" + $fp = @fopen((file_exists("adminer.sql") ? "adminer.sql" : (file_exists("adminer.sql.gz") ? "compress.zlib://adminer.sql.gz" : "compress.bzip2://adminer.sql.bz2" - )); + )), "rb"); + $query = ($fp ? fread($fp, 1e6) : false); } elseif ($_POST["file"]) { $query = get_file("sql_file", true); } - if (is_string($query)) { // get_file() returns error as number, file_get_contents as false + if (is_string($query)) { // get_file() returns error as number, fread() as false $space = "(\\s|/\\*.*\\*/|(#|-- )[^\n]*\n|--\n)"; $alter_database = "(CREATE|DROP)$space+(DATABASE|SCHEMA)\\b~isU"; $databases = &$_SESSION["databases"][$_GET["server"]]; if (isset($databases) && !preg_match("~\\b$alter_database", $query)) { // quick check - may be inside string + //! false positive with $fp session_write_close(); } - if (strlen($query) && (!$history || end($history) != $query)) { // don't add repeated + if (!$fp && strlen($query) && (!$history || end($history) != $query)) { // don't add repeated $history[] = $query; } $delimiter = ";"; @@ -42,54 +45,55 @@ preg_match('(' . preg_quote($delimiter) . '|[\'`"]|/\\*|-- |#|$)', $query, $match, PREG_OFFSET_CAPTURE, $offset); // should always match $found = $match[0][0]; $offset = $match[0][1] + strlen($found); - if (!$found && !strlen(rtrim($query))) { - break; - } - if (!$found || $found == $delimiter) { // end of a query - $empty = false; - echo "<pre class='jush-sql'>" . shorten_utf8(trim(substr($query, 0, $match[0][1]))) . "</pre>\n"; - ob_flush(); - flush(); // can take a long time - show the running query - $start = explode(" ", microtime()); // microtime(true) is available since PHP 5 - //! don't allow changing of character_set_results, convert encoding of displayed query - if (!$dbh->multi_query(substr($query, 0, $match[0][1]))) { - echo "<p class='error'>" . lang('Error in query') . ": " . h($dbh->error) . "\n"; - if ($_POST["error_stops"]) { - break; - } - } else { - $end = explode(" ", microtime()); - $i = 0; - do { - $result = $dbh->store_result(); - if (!$i) { - echo "<p class='time'>" . (is_object($result) ? lang('%d row(s)', $result->num_rows) . ", ": "") . lang('%.3f s', max(0, $end[0] - $start[0] + $end[1] - $start[1])) . "\n"; - $i++; + if (!$found && $fp && !feof($fp)) { + $query .= fread($fp, 1e6); + } else { + if (!$found && !strlen(rtrim($query))) { + break; + } + if (!$found || $found == $delimiter) { // end of a query + $empty = false; + echo "<pre class='jush-sql'>" . shorten_utf8(trim(substr($query, 0, $match[0][1]))) . "</pre>\n"; + ob_flush(); + flush(); // can take a long time - show the running query + $start = explode(" ", microtime()); // microtime(true) is available since PHP 5 + //! don't allow changing of character_set_results, convert encoding of displayed query + if (!$dbh->multi_query(substr($query, 0, $match[0][1]))) { + echo "<p class='error'>" . lang('Error in query') . ": " . h($dbh->error) . "\n"; + if ($_POST["error_stops"]) { + break; } - if (is_object($result)) { - select($result, $dbh2); - } else { - if (preg_match("~^$space*$alter_database", $query)) { - $databases = null; // clear cache + } else { + $end = explode(" ", microtime()); + $i = 0; + do { + $result = $dbh->store_result(); + if (!$i) { + echo "<p class='time'>" . (is_object($result) ? lang('%d row(s)', $result->num_rows) . ", ": "") . lang('%.3f s', max(0, $end[0] - $start[0] + $end[1] - $start[1])) . "\n"; + $i++; } - echo "<p class='message'>" . lang('Query executed OK, %d row(s) affected.', $dbh->affected_rows) . "\n"; + if (is_object($result)) { + select($result, $dbh2); + } else { + if (preg_match("~^$space*$alter_database", $query)) { + $databases = null; // clear cache + } + echo "<p class='message'>" . lang('Query executed OK, %d row(s) affected.', $dbh->affected_rows) . "\n"; + } + unset($result); // free resultset + } while ($dbh->next_result()); + } + $query = substr($query, $offset); + $offset = 0; + } else { // find matching quote or comment end + while (preg_match('~' . ($found == '/*' ? '\\*/' : (ereg('-- |#', $found) ? "\n" : "$found|\\\\.")) . '|$~s', $query, $match, PREG_OFFSET_CAPTURE, $offset)) { //! respect sql_mode NO_BACKSLASH_ESCAPES + $s = $match[0][0]; + $offset = $match[0][1] + strlen($s); + if (!$s && $fp && !feof($fp)) { + $query .= fread($fp, 1e6); + } elseif ($s[0] != "\\") { + break; } - unset($result); // free resultset - } while ($dbh->next_result()); - } - $query = substr($query, $offset); - $offset = 0; - } elseif (ereg('/\\*|-- |#', $found)) { // find closing part - $offset = strpos($query, ($found == "/*" ? "*/" : "\n"), $offset); - if (!$offset) { - $offset = strlen($query); - } - } else { // find matching quote - while (preg_match("~$found|\\\\.|\$~s", $query, $match, PREG_OFFSET_CAPTURE, $offset)) { //! respect sql_mode NO_BACKSLASH_ESCAPES - $s = $match[0][0]; - $offset = $match[0][1] + strlen($s); - if (!$s || $s == $found) { - break; } } } Modified: trunk/todo.txt =================================================================== --- trunk/todo.txt 2009-09-01 13:05:50 UTC (rev 1053) +++ trunk/todo.txt 2009-09-01 13:09:00 UTC (rev 1054) @@ -3,7 +3,6 @@ Highlight found fields MySQL 5 BIT data type Transactions in export -SQL query and CSV import - read file progressively to save memory Create view and routine options Function to fix database encoding - http://php.vrana.cz/prevod-kodovani-mysql.php Highlight SQL textarea - may use external CodePress This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-09-09 20:19:34
|
Revision: 1079 http://adminer.svn.sourceforge.net/adminer/?rev=1079&view=rev Author: jakubvrana Date: 2009-09-09 20:19:27 +0000 (Wed, 09 Sep 2009) Log Message: ----------- Substitute foreign keys in e-mail fields Modified Paths: -------------- trunk/adminer/include/adminer.inc.php trunk/adminer/select.inc.php trunk/editor/include/adminer.inc.php Modified: trunk/adminer/include/adminer.inc.php =================================================================== --- trunk/adminer/include/adminer.inc.php 2009-09-09 19:47:15 UTC (rev 1078) +++ trunk/adminer/include/adminer.inc.php 2009-09-09 20:19:27 UTC (rev 1079) @@ -324,9 +324,10 @@ /** Process extras in select form * @param array AND conditions + * @param array * @return bool true if processed, false to process other parts of form */ - function selectEmailProcess($where) { + function selectEmailProcess($where, $foreignKeys) { return false; } Modified: trunk/adminer/select.inc.php =================================================================== --- trunk/adminer/select.inc.php 2009-09-09 19:47:15 UTC (rev 1078) +++ trunk/adminer/select.inc.php 2009-09-09 20:19:27 UTC (rev 1079) @@ -3,6 +3,8 @@ $table_status = table_status($TABLE); $indexes = indexes($TABLE); $fields = fields($TABLE); +$foreign_keys = column_foreign_keys($TABLE); + $rights = array(); // privilege => 0 $columns = array(); // selectable columns unset($text_length); @@ -52,7 +54,7 @@ dump(); exit; } - if (!$adminer->selectEmailProcess($where)) { + if (!$adminer->selectEmailProcess($where, $foreign_keys)) { if (!$_POST["import"]) { // edit $result = true; $affected = 0; @@ -120,7 +122,6 @@ $table_name = $adminer->tableName($table_status); page_header(lang('Select') . ": $table_name", $error); -$foreign_keys = column_foreign_keys($TABLE); echo "<p>"; if (isset($rights["insert"])) { $set = ""; @@ -174,8 +175,6 @@ : count($rows) ); - $descriptions = $adminer->rowDescriptions($rows, $foreign_keys); - $backward_keys = $adminer->backwardKeys($TABLE); $table_names = array(); if ($backward_keys) { @@ -204,7 +203,7 @@ next($select); } echo ($table_names ? "<th>" . lang('Relations') : "") . "</thead>\n"; - foreach ($descriptions as $n => $row) { + foreach ($adminer->rowDescriptions($rows, $foreign_keys) as $n => $row) { $unique_idf = implode('&', unique_idf($rows[$n], $indexes)); echo "<tr" . odd() . "><td><input type='checkbox' name='check[]' value='$unique_idf' onclick=\"this.form['all'].checked = false; form_uncheck('all-page');\">" . (count($select) != count($group) || information_schema(DB) ? '' : " <a href='" . h(ME) . "edit=" . urlencode($TABLE) . "&$unique_idf'>" . lang('edit') . "</a>"); foreach ($row as $key => $val) { Modified: trunk/editor/include/adminer.inc.php =================================================================== --- trunk/editor/include/adminer.inc.php 2009-09-09 19:47:15 UTC (rev 1078) +++ trunk/editor/include/adminer.inc.php 2009-09-09 20:19:27 UTC (rev 1079) @@ -188,6 +188,7 @@ echo "<p>" . lang('From') . ": <input name='email_from'>\n"; echo lang('Subject') . ": <input name='email_subject'>\n"; echo "<p><textarea name='email_message' rows='15' cols='60'></textarea>\n"; + //! add UI for {$name} fields echo "<p>" . (count($emailFields) == 1 ? '<input type="hidden" name="email_field" value="' . h(key($emailFields)) . '">' : '<select name="email_field">' . optionlist($emailFields) . '</select> '); echo "<input type='submit' name='email' value='" . lang('Send') . "'$confirm>\n"; echo "</div></fieldset>\n"; @@ -249,7 +250,7 @@ return "100"; } - function selectEmailProcess($where) { + function selectEmailProcess($where, $foreignKeys) { global $dbh; if ($_POST["email"]) { $sent = 0; @@ -263,10 +264,14 @@ . ($where ? " AND " . implode(" AND ", $where) : "") . ($_POST["all"] ? "" : " AND ((" . implode(") OR (", array_map('where_check', (array) $_POST["check"])) . "))") ); + $rows = array(); while ($row = $result->fetch_assoc()) { + $rows[] = $row; + } + foreach ($this->rowDescriptions($rows, $foreignKeys) as $row) { $replace = array(); foreach ($matches[1] as $val) { - $replace['{$' . "$val}"] = $row[$val]; //! substitute foreign keys + $replace['{$' . "$val}"] = $row[$val]; } $email = $row[$_POST["email_field"]]; if (is_email($email) && mail($email, email_header(strtr($subject, $replace)), strtr($message, $replace), This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-09-09 20:49:36
|
Revision: 1082 http://adminer.svn.sourceforge.net/adminer/?rev=1082&view=rev Author: jakubvrana Date: 2009-09-09 20:49:30 +0000 (Wed, 09 Sep 2009) Log Message: ----------- Save e-mail from to cookie Modified Paths: -------------- trunk/adminer/create.inc.php trunk/adminer/include/functions.inc.php trunk/adminer/include/lang.inc.php trunk/editor/include/adminer.inc.php Modified: trunk/adminer/create.inc.php =================================================================== --- trunk/adminer/create.inc.php 2009-09-09 20:47:42 UTC (rev 1081) +++ trunk/adminer/create.inc.php 2009-09-09 20:49:30 UTC (rev 1082) @@ -82,8 +82,7 @@ if (strlen($TABLE)) { query_redirect("ALTER TABLE " . idf_escape($TABLE) . "$fields\nRENAME TO " . idf_escape($_POST["name"]) . ",\n$status", $location, lang('Table has been altered.')); } else { - $path = preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]); - setcookie("adminer_engine", $_POST["Engine"], gmmktime(0, 0, 0, gmdate("n") + 1), $path); + cookie("adminer_engine", $_POST["Engine"]); query_redirect("CREATE TABLE " . idf_escape($_POST["name"]) . " (" . substr($fields, 0, -1) . "\n) $status", $location, lang('Table has been created.')); } } Modified: trunk/adminer/include/functions.inc.php =================================================================== --- trunk/adminer/include/functions.inc.php 2009-09-09 20:47:42 UTC (rev 1081) +++ trunk/adminer/include/functions.inc.php 2009-09-09 20:49:30 UTC (rev 1082) @@ -154,6 +154,15 @@ return "&where%5B$i%5D%5Bcol%5D=" . urlencode($column) . "&where%5B$i%5D%5Bop%5D=%3D&where%5B$i%5D%5Bval%5D=" . urlencode($value); } +/** Set cookie valid for 1 month +* @param string +* @param string +* @return bool +*/ +function cookie($name, $value) { + return setcookie($name, $value, gmmktime(0, 0, 0, gmdate("n") + 1), preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"])); +} + /** Send Location header and exit * @param string * @param string Modified: trunk/adminer/include/lang.inc.php =================================================================== --- trunk/adminer/include/lang.inc.php 2009-09-09 20:47:42 UTC (rev 1081) +++ trunk/adminer/include/lang.inc.php 2009-09-09 20:49:30 UTC (rev 1082) @@ -44,7 +44,7 @@ $LANG = "en"; if (isset($langs[$_COOKIE["adminer_lang"]])) { - setcookie("adminer_lang", $_COOKIE["adminer_lang"], gmmktime(0, 0, 0, gmdate("n") + 1), preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"])); + cookie("adminer_lang", $_COOKIE["adminer_lang"]); $LANG = $_COOKIE["adminer_lang"]; } elseif (isset($langs[$_SESSION["lang"]])) { $LANG = $_SESSION["lang"]; Modified: trunk/editor/include/adminer.inc.php =================================================================== --- trunk/editor/include/adminer.inc.php 2009-09-09 20:47:42 UTC (rev 1081) +++ trunk/editor/include/adminer.inc.php 2009-09-09 20:49:30 UTC (rev 1082) @@ -185,7 +185,7 @@ global $confirm; if ($emailFields) { echo '<fieldset><legend><a href="#fieldset-email" onclick="return !toggle(\'fieldset-email\');">' . lang('E-mail') . "</a></legend><div id='fieldset-email'" . ($_POST["email_append"] ? "" : " class='hidden'") . ">\n"; - echo "<p>" . lang('From') . ": <input name='email_from' value='" . h($_POST["email_from"]) . "'>\n"; + echo "<p>" . lang('From') . ": <input name='email_from' value='" . h($_POST ? $_POST["email_from"] : $_COOKIE["adminer_email"]) . "'>\n"; echo lang('Subject') . ": <input name='email_subject' value='" . h($_POST["email_subject"]) . "'>\n"; echo "<p><textarea name='email_message' rows='15' cols='60'>" . h($_POST["email_message"] . ($_POST["email_append"] ? '{$' . "$_POST[email_addition]}" : "")) . "</textarea><br>\n"; echo "<select name='email_addition'>" . optionlist($columns, $_POST["email_addition"]) . "</select> <input type='submit' name='email_append' value='" . lang('Insert') . "'>\n"; //! JavaScript @@ -274,7 +274,7 @@ foreach ($this->rowDescriptions($rows, $foreignKeys) as $row) { $replace = array(); foreach ($matches[1] as $val) { - $replace['{$' . "$val}"] = $row[$val]; + $replace['{$' . "$val}"] = $row[$val]; //! allow literal {$name} } $email = $row[$_POST["email_field"]]; if (is_email($email) && mail($email, email_header(strtr($subject, $replace)), strtr($message, $replace), @@ -285,6 +285,7 @@ } } } + cookie("adminer_email", $_POST["email_from"]); redirect(remove_from_uri(), lang('%d e-mail(s) have been sent.', $sent)); } return false; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-09-12 20:16:33
|
Revision: 1103 http://adminer.svn.sourceforge.net/adminer/?rev=1103&view=rev Author: jakubvrana Date: 2009-09-12 20:16:26 +0000 (Sat, 12 Sep 2009) Log Message: ----------- Release 2.1.0 Modified Paths: -------------- trunk/adminer/include/version.inc.php trunk/changes.txt trunk/version.js Modified: trunk/adminer/include/version.inc.php =================================================================== --- trunk/adminer/include/version.inc.php 2009-09-12 12:57:02 UTC (rev 1102) +++ trunk/adminer/include/version.inc.php 2009-09-12 20:16:26 UTC (rev 1103) @@ -1,2 +1,2 @@ <?php -$VERSION = "2.1.0-dev"; +$VERSION = "2.1.1-dev"; Modified: trunk/changes.txt =================================================================== --- trunk/changes.txt 2009-09-12 12:57:02 UTC (rev 1102) +++ trunk/changes.txt 2009-09-12 20:16:26 UTC (rev 1103) @@ -1,4 +1,4 @@ -Adminer 2.1.0-dev: +Adminer 2.1.0 (released 2009-09-12): Edit default values directly in table creation Execute SQL file stored on server disk Display EXPLAIN in SQL query Modified: trunk/version.js =================================================================== --- trunk/version.js 2009-09-12 12:57:02 UTC (rev 1102) +++ trunk/version.js 2009-09-12 20:16:26 UTC (rev 1103) @@ -1,2 +1,2 @@ // downloaded from repository by version_checker() -document.cookie = 'adminer_version=2.0.0'; // last released version +document.cookie = 'adminer_version=2.1.0'; // last released version This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-09-20 07:31:52
|
Revision: 1119 http://adminer.svn.sourceforge.net/adminer/?rev=1119&view=rev Author: jakubvrana Date: 2009-09-20 07:31:46 +0000 (Sun, 20 Sep 2009) Log Message: ----------- Display table links above table structure Move body_load back to <body onload> Modified Paths: -------------- trunk/adminer/include/adminer.inc.php trunk/adminer/include/design.inc.php trunk/adminer/select.inc.php trunk/adminer/table.inc.php trunk/editor/editing.js trunk/editor/include/adminer.inc.php Modified: trunk/adminer/include/adminer.inc.php =================================================================== --- trunk/adminer/include/adminer.inc.php 2009-09-19 20:16:15 UTC (rev 1118) +++ trunk/adminer/include/adminer.inc.php 2009-09-20 07:31:46 UTC (rev 1119) @@ -66,12 +66,24 @@ return '<span title="' . h($field["full_type"]) . '">' . h($field["field"]) . '</span>'; } - /** Links after select heading + /** Print links after select heading * @param array result of SHOW TABLE STATUS - * @return string + * @param strin new item options, NULL for no new item + * @return null */ - function selectLinks($tableStatus) { - return '<a href="' . h(ME) . 'table=' . urlencode($_GET['select']) . '">' . lang('Table structure') . '</a>'; + function selectLinks($tableStatus, $set = "") { + $TABLE = $tableStatus["Name"]; + echo '<p><a href="' . h(ME) . 'select=' . urlencode($TABLE) . '">' . lang('Select table') . '</a>'; + echo ' <a href="' . h(ME) . 'table=' . urlencode($TABLE) . '">' . lang('Table structure') . '</a>'; + if (isset($tableStatus["Rows"])) { + echo ' <a href="' . h(ME) . 'create=' . urlencode($TABLE) . '">' . lang('Alter table') . '</a>'; + } else { + echo ' <a href="' . h(ME) . 'view=' . urlencode($TABLE) . '">' . lang('Alter view') . '</a>'; + } + if (isset($set)) { + echo ' <a href="' . h(ME . 'edit=' . urlencode($TABLE) . $set) . '">' . lang('New item') . '</a>'; + } + echo "\n"; } /** Find backward keys for table @@ -421,10 +433,6 @@ <span class="version"><?php echo $VERSION; ?></span> <a href="http://www.adminer.org/#download" id="version"><?php echo (version_compare($VERSION, $_COOKIE["adminer_version"]) < 0 ? h($_COOKIE["adminer_version"]) : ""); ?></a> </h1> -<script type="text/javascript"> -body_load(); -<?php echo (isset($_COOKIE["adminer_version"]) ? "" : "verify_version();"); ?> -</script> <?php if ($missing != "auth") { $databases = get_databases(); Modified: trunk/adminer/include/design.inc.php =================================================================== --- trunk/adminer/include/design.inc.php 2009-09-19 20:16:15 UTC (rev 1118) +++ trunk/adminer/include/design.inc.php 2009-09-20 07:31:46 UTC (rev 1119) @@ -15,7 +15,7 @@ <link rel="stylesheet" type="text/css" href="adminer.css"> <?php } ?> -<body> +<body onload="body_load();<?php echo (isset($_COOKIE["adminer_version"]) ? "" : " verify_version();"); ?>"> <script type="text/javascript" src="../adminer/functions.js"></script> <script type="text/javascript" src="editing.js"></script> Modified: trunk/adminer/select.inc.php =================================================================== --- trunk/adminer/select.inc.php 2009-09-19 20:16:15 UTC (rev 1118) +++ trunk/adminer/select.inc.php 2009-09-20 07:31:46 UTC (rev 1119) @@ -122,7 +122,7 @@ $table_name = $adminer->tableName($table_status); page_header(lang('Select') . ": $table_name", $error); -echo "<p>"; +$set = null; if (isset($rights["insert"])) { $set = ""; foreach ((array) $_GET["where"] as $val) { @@ -132,9 +132,8 @@ $set .= "&set" . urlencode("[" . bracket_escape($val["col"]) . "]") . "=" . urlencode($val["val"]); } } - echo '<a href="' . h(ME . 'edit=' . urlencode($TABLE) . $set) . '">' . lang('New item') . '</a> '; } -echo $adminer->selectLinks($table_status); +$adminer->selectLinks($table_status, $set); if (!$columns) { echo "<p class='error'>" . lang('Unable to select the table') . ($fields ? "" : ": " . h($dbh->error)) . ".\n"; Modified: trunk/adminer/table.inc.php =================================================================== --- trunk/adminer/table.inc.php 2009-09-19 20:16:15 UTC (rev 1118) +++ trunk/adminer/table.inc.php 2009-09-20 07:31:46 UTC (rev 1119) @@ -5,9 +5,9 @@ $error = h($dbh->error); } $table_status = ($result ? table_status($TABLE) : array()); -$is_view = !isset($table_status["Rows"]); page_header(($result && $is_view ? lang('View') : lang('Table')) . ": " . h($TABLE), $error); +$adminer->selectLinks($table_status); if ($result) { echo "<table cellspacing='0'>\n"; @@ -20,16 +20,7 @@ } echo "</table>\n"; - echo "<p>"; - if ($is_view) { - echo '<a href="' . h(ME) . 'view=' . urlencode($TABLE) . '">' . lang('Alter view') . '</a>'; - } else { - echo '<a href="' . h(ME) . 'create=' . urlencode($TABLE) . '">' . lang('Alter table') . '</a>'; - } - echo ' <a href="' . h(ME) . 'select=' . urlencode($TABLE) . '">' . lang('Select table') . '</a>'; - echo ' <a href="' . h(ME) . 'edit=' . urlencode($TABLE) . '">' . lang('New item') . '</a>'; - - if (!$is_view) { + if (isset($table_status["Rows"])) { echo "<h3>" . lang('Indexes') . "</h3>\n"; $indexes = indexes($TABLE); if ($indexes) { Modified: trunk/editor/editing.js =================================================================== --- trunk/editor/editing.js 2009-09-19 20:16:15 UTC (rev 1118) +++ trunk/editor/editing.js 2009-09-20 07:31:46 UTC (rev 1119) @@ -1,2 +1,4 @@ // Editor specific functions +function body_load() { +} Modified: trunk/editor/include/adminer.inc.php =================================================================== --- trunk/editor/include/adminer.inc.php 2009-09-19 20:16:15 UTC (rev 1118) +++ trunk/editor/include/adminer.inc.php 2009-09-20 07:31:46 UTC (rev 1119) @@ -39,8 +39,11 @@ return h(strlen($field["comment"]) ? $field["comment"] : $field["field"]); } - function selectLinks($tableStatus) { - return ""; + function selectLinks($tableStatus, $set = "") { + $TABLE = $tableStatus["Name"]; + if (isset($set)) { + echo '<p><a href="' . h(ME . 'edit=' . urlencode($TABLE) . $set) . '">' . lang('New item') . "</a>\n"; + } } function backwardKeys($table) { @@ -356,7 +359,6 @@ <a href="http://www.adminer.org/editor/#download" id="version"><?php echo (version_compare($VERSION, $_COOKIE["adminer_version"]) < 0 ? h($_COOKIE["adminer_version"]) : ""); ?></a> </h1> <?php - echo (isset($_COOKIE["adminer_version"]) ? "" : "<script type='text/javascript'>verify_version();</script>\n"); if ($missing != "auth") { ?> <form action="" method="post"> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-09-23 09:06:49
|
Revision: 1129 http://adminer.svn.sourceforge.net/adminer/?rev=1129&view=rev Author: jakubvrana Date: 2009-09-23 09:06:38 +0000 (Wed, 23 Sep 2009) Log Message: ----------- Windows support in e-mail attachments Modified Paths: -------------- trunk/compile.php trunk/editor/include/adminer.inc.php Modified: trunk/compile.php =================================================================== --- trunk/compile.php 2009-09-22 15:09:45 UTC (rev 1128) +++ trunk/compile.php 2009-09-23 09:06:38 UTC (rev 1129) @@ -133,7 +133,7 @@ if ($tokens[$i+1][0] === T_ECHO) { // join two consecutive echos next($tokens); - $token[1] = ','; // '.' would conflict with "a".1+2 and would use more memory //! remove ',' and "," + $token[1] = ','; // '.' would conflict with "a".1+2 and would use more memory //! remove ',' and "," but not $var"," } else { $in_echo = false; } Modified: trunk/editor/include/adminer.inc.php =================================================================== --- trunk/editor/include/adminer.inc.php 2009-09-22 15:09:45 UTC (rev 1128) +++ trunk/editor/include/adminer.inc.php 2009-09-23 09:06:38 UTC (rev 1129) @@ -264,7 +264,8 @@ if ($_POST["all"] || $_POST["check"]) { $field = idf_escape($_POST["email_field"]); $subject = $_POST["email_subject"]; - $message = "$_POST[email_message]\n"; + $eol = (strncasecmp(PHP_OS, "win", 3) ? "\n" : "\r\n"); + $message = str_replace("\n", $eol, str_replace("\r", "", "$_POST[email_message]\n")); preg_match_all('~\\{\\$([a-z0-9_]+)\\}~i', "$subject.$message", $matches); // allows {$name} in subject or message $result = $connection->query("SELECT DISTINCT $field" . ($matches[1] ? ", " . implode(", ", array_map('idf_escape', array_unique($matches[1]))) : "") . " FROM " . idf_escape($_GET["select"]) . " WHERE $field IS NOT NULL AND $field != ''" @@ -280,29 +281,31 @@ $email_files = $_FILES["email_files"]; foreach ($email_files["error"] as $key => $val) { if (!$val) { - $attachments .= "--$boundary\n" - . "Content-Type: " . str_replace("\n", "", $email_files["type"][$key]) . "\n" - . "Content-Disposition: attachment; filename=\"" . preg_replace('~["\\n]~', '', $email_files["name"][$key]) . "\"\n" - . "Content-Transfer-Encoding: base64\n" - . "\n" . chunk_split(base64_encode(file_get_contents($email_files["tmp_name"][$key])), 76, "\n") . "\n" + $attachments .= "--$boundary$eol" + . "Content-Type: " . str_replace("\n", "", $email_files["type"][$key]) . $eol + . "Content-Disposition: attachment; filename=\"" . preg_replace('~["\\n]~', '', $email_files["name"][$key]) . "\"$eol" + . "Content-Transfer-Encoding: base64$eol" + . $eol . chunk_split(base64_encode(file_get_contents($email_files["tmp_name"][$key])), 76, $eol) . $eol ; } } $beginning = ""; - $headers = "Content-Type: text/plain; charset=utf-8\nContent-Transfer-Encoding: 8bit"; + $headers = "Content-Type: text/plain; charset=utf-8$eol" . "Content-Transfer-Encoding: 8bit"; if ($attachments) { - $attachments .= "--$boundary--\n"; - $beginning = "--$boundary\n$headers\n\n"; + $attachments .= "--$boundary--$eol"; + $beginning = "--$boundary$eol$headers$eol$eol"; $headers = "Content-Type: multipart/mixed; boundary=\"$boundary\""; } - $headers .= "\nMIME-Version: 1.0" . ($_POST["email_from"] ? "\nFrom: " . str_replace("\n", "", $_POST["email_from"]) : ""); //! should escape display name + $headers .= $eol . "MIME-Version: 1.0" + . ($_POST["email_from"] ? $eol . "From: " . str_replace("\n", "", $_POST["email_from"]) : "") //! should escape display name + ; foreach ($this->rowDescriptions($rows, $foreignKeys) as $row) { $replace = array(); foreach ($matches[1] as $val) { $replace['{$' . "$val}"] = $row[$val]; //! allow literal {$name} } $email = $row[$_POST["email_field"]]; - if (is_email($email) && mail($email, email_header(strtr($subject, $replace)), $beginning . strtr($message, $replace) . $attachments, $headers)) { //! replace \n by \r\n on Windows + if (is_email($email) && mail($email, email_header(strtr($subject, $replace)), $beginning . strtr($message, $replace) . $attachments, $headers)) { $sent++; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-09-23 13:22:28
|
Revision: 1133 http://adminer.svn.sourceforge.net/adminer/?rev=1133&view=rev Author: jakubvrana Date: 2009-09-23 12:21:14 +0000 (Wed, 23 Sep 2009) Log Message: ----------- Display number of manipulated rows in JS confirm Modified Paths: -------------- trunk/adminer/db.inc.php trunk/adminer/select.inc.php trunk/adminer/static/functions.js trunk/changes.txt trunk/editor/include/adminer.inc.php Modified: trunk/adminer/db.inc.php =================================================================== --- trunk/adminer/db.inc.php 2009-09-23 10:05:06 UTC (rev 1132) +++ trunk/adminer/db.inc.php 2009-09-23 12:21:14 UTC (rev 1133) @@ -8,15 +8,13 @@ queries("SET foreign_key_checks = 0"); // allows to truncate or drop several tables at once } if (isset($_POST["truncate"])) { - if ($_POST["tables"]) { - foreach ($_POST["tables"] as $table) { - if (!queries("TRUNCATE " . idf_escape($table))) { - $result = false; - break; - } + foreach ((array) $_POST["tables"] as $table) { + if (!queries("TRUNCATE " . idf_escape($table))) { + $result = false; + break; } - $message = lang('Tables have been truncated.'); } + $message = lang('Tables have been truncated.'); } elseif (isset($_POST["move"])) { $rename = array(); foreach ($tables_views as $table) { @@ -66,7 +64,7 @@ } } echo "</table>\n"; - echo "<p><input type='hidden' name='token' value='$token'><input type='submit' value='" . lang('Analyze') . "'> <input type='submit' name='optimize' value='" . lang('Optimize') . "'> <input type='submit' name='check' value='" . lang('Check') . "'> <input type='submit' name='repair' value='" . lang('Repair') . "'> <input type='submit' name='truncate' value='" . lang('Truncate') . "'$confirm> <input type='submit' name='drop' value='" . lang('Drop') . "'$confirm>\n"; + echo "<p><input type='hidden' name='token' value='$token'><input type='submit' value='" . lang('Analyze') . "'> <input type='submit' name='optimize' value='" . lang('Optimize') . "'> <input type='submit' name='check' value='" . lang('Check') . "'> <input type='submit' name='repair' value='" . lang('Repair') . "'> <input type='submit' name='truncate' value='" . lang('Truncate') . "' onclick=\"return confirm('" . lang('Are you sure?') . " (' + form_checked(this, /tables/) + ')');\"> <input type='submit' name='drop' value='" . lang('Drop') . "' onclick=\"return confirm('" . lang('Are you sure?') . " (' + form_checked(this, /tables|views/) + ')');\">\n"; $dbs = get_databases(); if (count($dbs) != 1) { $db = (isset($_POST["target"]) ? $_POST["target"] : DB); Modified: trunk/adminer/select.inc.php =================================================================== --- trunk/adminer/select.inc.php 2009-09-23 10:05:06 UTC (rev 1132) +++ trunk/adminer/select.inc.php 2009-09-23 12:21:14 UTC (rev 1133) @@ -280,7 +280,7 @@ } echo " (" . lang('%d row(s)', $found_rows) . ') <label><input type="checkbox" name="all" value="1">' . lang('whole result') . "</label>\n"; - echo (information_schema(DB) ? "" : "<fieldset><legend>" . lang('Edit') . "</legend><div><input type='submit' name='edit' value='" . lang('Edit') . "'> <input type='submit' name='clone' value='" . lang('Clone') . "'> <input type='submit' name='delete' value='" . lang('Delete') . "'$confirm></div></fieldset>\n"); + echo (information_schema(DB) ? "" : "<fieldset><legend>" . lang('Edit') . "</legend><div><input type='submit' name='edit' value='" . lang('Edit') . "'> <input type='submit' name='clone' value='" . lang('Clone') . "'> <input type='submit' name='delete' value='" . lang('Delete') . "' onclick=\"return confirm('" . lang('Are you sure?') . " (' + (this.form['all'].checked ? $found_rows : form_checked(this, /check/)) + ')');\"></div></fieldset>\n"); print_fieldset("export", lang('Export')); echo "$dump_output $dump_format $dump_compress <input type='submit' name='export' value='" . lang('Export') . "'>\n"; echo "</div></fieldset>\n"; Modified: trunk/adminer/static/functions.js =================================================================== --- trunk/adminer/static/functions.js 2009-09-23 10:05:06 UTC (rev 1132) +++ trunk/adminer/static/functions.js 2009-09-23 12:21:14 UTC (rev 1133) @@ -26,6 +26,17 @@ document.getElementById(id).checked = false; } +function form_checked(el, name) { + var checked = 0; + var elems = el.form.elements; + for (var i=0; i < elems.length; i++) { + if (name.test(elems[i].name) && elems[i].checked) { + checked++; + } + } + return checked; +} + function table_click(event) { var el = event.target || event.srcElement; while (!/^tr$/i.test(el.tagName)) { Modified: trunk/changes.txt =================================================================== --- trunk/changes.txt 2009-09-23 10:05:06 UTC (rev 1132) +++ trunk/changes.txt 2009-09-23 12:21:14 UTC (rev 1133) @@ -2,6 +2,7 @@ Display table links above table structure Fix removed default in ALTER Display whitespace in texts (bug #2858042) +Display number of manipulated rows in JS confirm E-mail attachments (Editor) Move <h1> to $adminer->navigation (customization) Rename get_dbh to connection (customization) Modified: trunk/editor/include/adminer.inc.php =================================================================== --- trunk/editor/include/adminer.inc.php 2009-09-23 10:05:06 UTC (rev 1132) +++ trunk/editor/include/adminer.inc.php 2009-09-23 12:21:14 UTC (rev 1133) @@ -185,7 +185,6 @@ } function selectEmailPrint($emailFields, $columns) { - global $confirm; if ($emailFields) { echo '<fieldset><legend><a href="#fieldset-email" onclick="return !toggle(\'fieldset-email\');">' . lang('E-mail') . "</a></legend><div id='fieldset-email'" . ($_POST["email_append"] ? "" : " class='hidden'") . ">\n"; echo "<p>" . lang('From') . ": <input name='email_from' value='" . h($_POST ? $_POST["email_from"] : $_COOKIE["adminer_email"]) . "'>\n"; @@ -194,7 +193,7 @@ echo "<select name='email_addition'>" . optionlist($columns, $_POST["email_addition"]) . "</select> <input type='submit' name='email_append' value='" . lang('Insert') . "'>\n"; //! JavaScript echo "<p><input type='file' name='email_files[]' onchange=\"var el = this.cloneNode(true); el.value = ''; this.parentNode.appendChild(el);\">"; echo "<p>" . (count($emailFields) == 1 ? '<input type="hidden" name="email_field" value="' . h(key($emailFields)) . '">' : '<select name="email_field">' . optionlist($emailFields) . '</select> '); - echo "<input type='submit' name='email' value='" . lang('Send') . "'$confirm>\n"; + echo "<input type='submit' name='email' value='" . lang('Send') . "' onclick=\"return this.form['delete'].onclick();\">\n"; echo "</div></fieldset>\n"; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-09-23 14:28:16
|
Revision: 1134 http://adminer.svn.sourceforge.net/adminer/?rev=1134&view=rev Author: jakubvrana Date: 2009-09-23 14:28:06 +0000 (Wed, 23 Sep 2009) Log Message: ----------- Move backward keys to Editor Modified Paths: -------------- trunk/adminer/include/adminer.inc.php trunk/adminer/select.inc.php trunk/editor/include/adminer.inc.php Modified: trunk/adminer/include/adminer.inc.php =================================================================== --- trunk/adminer/include/adminer.inc.php 2009-09-23 12:21:14 UTC (rev 1133) +++ trunk/adminer/include/adminer.inc.php 2009-09-23 14:28:06 UTC (rev 1134) @@ -88,12 +88,21 @@ /** Find backward keys for table * @param string - * @return array $return[$target_table][$key_name][$target_column] = $source_column; + * @param string + * @return array $return[$target_table]["keys"][$key_name][$target_column] = $source_column; $return[$target_table]["name"] = $this->tableName($target_table); */ - function backwardKeys($table) { + function backwardKeys($table, $tableName) { return array(); } + /** Print backward keys for row + * @param array result of $this->backwardKeys() + * @param array + * @return null + */ + function backwardKeysPrint($backwardKeys, $row) { + } + /** Query printed in select before execution * @param string query to be executed * @return string @@ -461,7 +470,7 @@ </p> </form> <?php - $this->printTables($missing); + $this->tablesPrint($missing); } } @@ -469,7 +478,7 @@ * @param string can be "db" if there is no database selected * @return null */ - function printTables($missing) { + function tablesPrint($missing) { global $connection; if ($missing != "db" && strlen(DB) && $connection->select_db(DB)) { $result = $connection->query("SHOW TABLES"); Modified: trunk/adminer/select.inc.php =================================================================== --- trunk/adminer/select.inc.php 2009-09-23 12:21:14 UTC (rev 1133) +++ trunk/adminer/select.inc.php 2009-09-23 14:28:06 UTC (rev 1134) @@ -174,16 +174,7 @@ : count($rows) ); - $backward_keys = $adminer->backwardKeys($TABLE); - $table_names = array(); - if ($backward_keys) { - foreach ($backward_keys as $key => $val) { - $val = $adminer->tableName(table_status($key)); - if (strlen($val)) { - $table_names[$key] = (preg_match('(^' . preg_quote($table_name) . '(:|\\s*-)?\\s+(.+))', $val, $match) ? $match[2] : $val); - } - } - } + $backward_keys = $adminer->backwardKeys($TABLE, $table_name); echo "<table cellspacing='0' class='nowrap' onclick='table_click(event);'>\n"; echo "<thead><tr><td><input type='checkbox' id='all-page' onclick='form_check(this, /check/);'>"; @@ -201,7 +192,7 @@ } next($select); } - echo ($table_names ? "<th>" . lang('Relations') : "") . "</thead>\n"; + echo ($backward_keys ? "<th>" . lang('Relations') : "") . "</thead>\n"; foreach ($adminer->rowDescriptions($rows, $foreign_keys) as $n => $row) { $unique_idf = implode('&', unique_idf($rows[$n], $indexes)); echo "<tr" . odd() . "><td><input type='checkbox' name='check[]' value='$unique_idf'" . (in_array(str_replace("&", "&", $unique_idf), (array) $_POST["check"]) ? " checked" : "") . " onclick=\"this.form['all'].checked = false; form_uncheck('all-page');\">" . (count($select) != count($group) || information_schema(DB) ? '' : " <a href='" . h(ME) . "edit=" . urlencode($TABLE) . "&$unique_idf'>" . lang('edit') . "</a>"); @@ -245,19 +236,7 @@ echo "<td>$val"; } } - if ($table_names) { - echo "<td>"; - foreach ($table_names as $table => $name) { - foreach ($backward_keys[$table] as $cols) { - $link = ME . 'select=' . urlencode($table); - $i = 0; - foreach ($cols as $column => $val) { - $link .= where_link($i++, $column, $rows[$n][$val]); - } - echo " <a href='" . h($link) . "'>$name</a>"; - } - } - } + $adminer->backwardKeysPrint($backward_keys, $rows[$n]); echo "\n"; } echo "</table>\n"; Modified: trunk/editor/include/adminer.inc.php =================================================================== --- trunk/editor/include/adminer.inc.php 2009-09-23 12:21:14 UTC (rev 1133) +++ trunk/editor/include/adminer.inc.php 2009-09-23 14:28:06 UTC (rev 1134) @@ -46,7 +46,7 @@ } } - function backwardKeys($table) { + function backwardKeys($table, $tableName) { global $connection; $return = array(); $result = $connection->query("SELECT TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_COLUMN_NAME @@ -57,12 +57,38 @@ ORDER BY ORDINAL_POSITION"); //! requires MySQL 5 if ($result) { while ($row = $result->fetch_assoc()) { - $return[$row["TABLE_NAME"]][$row["CONSTRAINT_NAME"]][$row["COLUMN_NAME"]] = $row["REFERENCED_COLUMN_NAME"]; + $return[$row["TABLE_NAME"]]["keys"][$row["CONSTRAINT_NAME"]][$row["COLUMN_NAME"]] = $row["REFERENCED_COLUMN_NAME"]; } } + foreach ($return as $key => $val) { + $name = $this->tableName(table_status($key)); + if (strlen($name)) { + $search = preg_quote($tableName); + $separator = "(:|\\s*-)?\\s+"; + $return[$key]["name"] = (preg_match("(^$search$separator(.+)|^(.+?)$separator$search\$)", $name, $match) ? $match[2] . $match[3] : $name); + } else { + unset($return[$key]); + } + } return $return; } + function backwardKeysPrint($backwardKeys, $row) { + if ($backwardKeys) { + echo "<td>"; + foreach ($backwardKeys as $table => $backwardKey) { + foreach ($backwardKey["keys"] as $cols) { + $link = ME . 'select=' . urlencode($table); + $i = 0; + foreach ($cols as $column => $val) { + $link .= where_link($i++, $column, $row[$val]); + } + echo " <a href='" . h($link) . "'>$backwardKey[name]</a>"; + } + } + } + } + function selectQuery($query) { return "<!-- " . str_replace("--", "--><!--", $query) . " -->\n"; } @@ -389,11 +415,11 @@ </p> </form> <?php - $this->printTables($missing); + $this->tablesPrint($missing); } } - function printTables($missing) { + function tablesPrint($missing) { if ($missing != "db") { $table_status = table_status(); if (!$table_status) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-11-12 15:02:42
|
Revision: 1239 http://adminer.svn.sourceforge.net/adminer/?rev=1239&view=rev Author: jakubvrana Date: 2009-11-12 15:02:34 +0000 (Thu, 12 Nov 2009) Log Message: ----------- Search by foreign keys Modified Paths: -------------- trunk/changes.txt trunk/editor/include/adminer.inc.php Modified: trunk/changes.txt =================================================================== --- trunk/changes.txt 2009-11-12 13:40:46 UTC (rev 1238) +++ trunk/changes.txt 2009-11-12 15:02:34 UTC (rev 1239) @@ -1,6 +1,7 @@ Adminer 2.2.1-dev: Improve concurrency Move number of tables to DB info (performance) +Search by foreign keys (Editor) Link new item in backward keys (Editor) Adminer 2.2.0 (released 2009-10-20): Modified: trunk/editor/include/adminer.inc.php =================================================================== --- trunk/editor/include/adminer.inc.php 2009-11-12 13:40:46 UTC (rev 1238) +++ trunk/editor/include/adminer.inc.php 2009-11-12 15:02:34 UTC (rev 1239) @@ -1,6 +1,7 @@ <?php class Adminer { var $operators = array("<=", ">="); + var $values = array(); function name() { return lang('Editor'); @@ -124,10 +125,12 @@ $ids[$row[$key]] = exact_value($row[$key]); } // uses constant number of queries to get the descriptions, join would be complex, multiple queries would be slow - $descriptions = array(); - $result = $connection->query("SELECT $id, $name FROM " . idf_escape($foreignKey["table"]) . " WHERE $id IN (" . implode(", ", $ids) . ")"); - while ($row = $result->fetch_row()) { - $descriptions[$row[0]] = $row[1]; + $descriptions = $this->values[$foreignKey["table"]]; + if (!$descriptions) { + $result = $connection->query("SELECT $id, $name FROM " . idf_escape($foreignKey["table"]) . " WHERE $id IN (" . implode(", ", $ids) . ")"); + while ($row = $result->fetch_row()) { + $descriptions[$row[0]] = $row[1]; + } } // use the descriptions foreach ($rows as $n => $row) { @@ -177,6 +180,23 @@ function selectSearchPrint($where, $columns, $indexes) { //! foreign keys echo '<fieldset><legend>' . lang('Search') . "</legend><div>\n"; + $keys = array(); + foreach ((array) $_GET["where"] as $key => $val) { + $keys[$val["col"]] = $key; + } + $i = -1; + foreach ($columns as $name => $desc) { + $key = $keys[$name]; + $options = $this->editInput($_GET["select"], array("field" => $name), " name='where[$i][val]'", $_GET["where"][$key]["val"]); + if ($options) { + unset($columns[$name]); + if (isset($key)) { + unset($_GET["where"][$key]); + } + echo "<div>" . h($desc) . "<input type='hidden' name='where[$i][col]' value='" . h($name) . "'><input type='hidden' name='where[$i][op]' value='='>: $options</div>\n"; + $i--; + } + } $i = 0; foreach ((array) $_GET["where"] as $val) { if (strlen("$val[col]$val[val]")) { @@ -246,9 +266,9 @@ function selectSearchProcess($fields, $indexes) { $return = array(); - foreach ((array) $_GET["where"] as $val) { + foreach ((array) $_GET["where"] as $key => $val) { $col = $val["col"]; - if (strlen("$col$val[val]")) { + if (strlen(($key < 0 ? "" : $col) . $val["val"])) { $conds = array(); foreach ((strlen($col) ? array($col => $fields[$col]) : $fields) as $name => $field) { if (strlen($col) || is_numeric($val["val"]) || !ereg('int|float|double|decimal', $field["type"])) { @@ -374,18 +394,24 @@ function editInput($table, $field, $attrs, $value) { global $connection; - $foreign_keys = column_foreign_keys($table); - foreach ((array) $foreign_keys[$field["field"]] as $foreign_key) { - if (count($foreign_key["source"]) == 1) { - $id = idf_escape($foreign_key["target"][0]); - $name = $this->rowDescription($foreign_key["table"]); + $foreignKeys = column_foreign_keys($table); + foreach ((array) $foreignKeys[$field["field"]] as $foreignKey) { + if (count($foreignKey["source"]) == 1) { + $id = idf_escape($foreignKey["target"][0]); + $name = $this->rowDescription($foreignKey["table"]); if (strlen($name)) { - $result = $connection->query("SELECT $id, $name FROM " . idf_escape($foreign_key["table"]) . " ORDER BY 2 LIMIT 1001"); - if ($result->num_rows < 1001) { // optionlist with more than 1000 options would be too big - $return = array("" => ""); - while ($row = $result->fetch_row()) { - $return[$row[0]] = $row[1]; + $return = &$this->values[$foreignKey["table"]]; + if (!isset($return)) { + $result = $connection->query("SELECT $id, $name FROM " . idf_escape($foreignKey["table"]) . " ORDER BY 2 LIMIT 1001"); + $return = array(); + if ($result->num_rows < 1001) { // optionlist with more than 1000 options would be too big + $return[""] = ""; + while ($row = $result->fetch_row()) { + $return[$row[0]] = $row[1]; + } } + } + if ($return) { return "<select$attrs>" . optionlist($return, $value, true) . "</select>"; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-11-12 15:25:44
|
Revision: 1240 http://adminer.svn.sourceforge.net/adminer/?rev=1240&view=rev Author: jakubvrana Date: 2009-11-12 15:25:21 +0000 (Thu, 12 Nov 2009) Log Message: ----------- Enum editing Modified Paths: -------------- trunk/adminer/include/adminer.inc.php trunk/adminer/include/functions.inc.php trunk/editor/include/adminer.inc.php Modified: trunk/adminer/include/adminer.inc.php =================================================================== --- trunk/adminer/include/adminer.inc.php 2009-11-12 15:02:34 UTC (rev 1239) +++ trunk/adminer/include/adminer.inc.php 2009-11-12 15:25:21 UTC (rev 1240) @@ -404,7 +404,12 @@ * @return string custom input field or empty string for default */ function editInput($table, $field, $attrs, $value) { - return ''; + if ($field["type"] == "enum") { + return ($field["null"] ? "<label><input type='radio'$attrs value=''" . (isset($value) || isset($_GET["select"]) ? "" : " checked") . "><em>NULL</em></label> " : "") + . "<input type='radio'$attrs value='0'" . ($value === 0 ? " checked" : "") . ">" + ; + } + return ""; } /** Process sent input Modified: trunk/adminer/include/functions.inc.php =================================================================== --- trunk/adminer/include/functions.inc.php 2009-11-12 15:02:34 UTC (rev 1239) +++ trunk/adminer/include/functions.inc.php 2009-11-12 15:25:21 UTC (rev 1240) @@ -417,11 +417,8 @@ echo "<td class='function'>"; $functions = (isset($_GET["select"]) ? array("orig" => lang('original')) : array()) + $adminer->editFunctions($field); if ($field["type"] == "enum") { - echo " <td>" . ($functions["orig"] ? "<label><input type='radio' name='fields[$name]' value='-1' checked><em>$functions[orig]</em></label> " : ""); - if (in_array("NULL", $functions)) { - echo "<label><input type='radio' name='fields[$name]' value=''" . (isset($value) || $functions["orig"] ? '' : ' checked') . "><em>NULL</em></label> "; - } - echo "<input type='radio' name='fields[$name]' value='0'" . ($value === 0 ? ' checked' : '') . '>'; + echo nbsp($functions[""]) . "<td>" . ($functions["orig"] ? "<label><input type='radio' name='fields[$name]' value='-1' checked><em>$functions[orig]</em></label> " : ""); + echo $adminer->editInput($_GET["edit"], $field, " name='fields[$name]'", $value); preg_match_all("~'((?:[^']|'')*)'~", $field["length"], $matches); foreach ($matches[1] as $i => $val) { $val = stripcslashes(str_replace("''", "'", $val)); Modified: trunk/editor/include/adminer.inc.php =================================================================== --- trunk/editor/include/adminer.inc.php 2009-11-12 15:02:34 UTC (rev 1239) +++ trunk/editor/include/adminer.inc.php 2009-11-12 15:25:21 UTC (rev 1240) @@ -394,6 +394,9 @@ function editInput($table, $field, $attrs, $value) { global $connection; + if ($field["type"] == "enum") { + return ($field["null"] ? "<input type='radio'$attrs value=''" . ($value || isset($_GET["select"]) ? "" : " checked") . ">" : ""); + } $foreignKeys = column_foreign_keys($table); foreach ((array) $foreignKeys[$field["field"]] as $foreignKey) { if (count($foreignKey["source"]) == 1) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-11-26 15:56:41
|
Revision: 1255 http://adminer.svn.sourceforge.net/adminer/?rev=1255&view=rev Author: jakubvrana Date: 2009-11-26 15:56:34 +0000 (Thu, 26 Nov 2009) Log Message: ----------- Release 2.2.1 Modified Paths: -------------- trunk/adminer/include/version.inc.php trunk/changes.txt trunk/compile.php trunk/version.js Modified: trunk/adminer/include/version.inc.php =================================================================== --- trunk/adminer/include/version.inc.php 2009-11-26 14:19:09 UTC (rev 1254) +++ trunk/adminer/include/version.inc.php 2009-11-26 15:56:34 UTC (rev 1255) @@ -1,2 +1,2 @@ <?php -$VERSION = "2.2.1-dev"; +$VERSION = "2.2.2-dev"; Modified: trunk/changes.txt =================================================================== --- trunk/changes.txt 2009-11-26 14:19:09 UTC (rev 1254) +++ trunk/changes.txt 2009-11-26 15:56:34 UTC (rev 1255) @@ -1,4 +1,4 @@ -Adminer 2.2.1-dev: +Adminer 2.2.1 (released 2009-11-26): Highlight current links Improve concurrency Move number of tables to DB info (performance) Modified: trunk/compile.php =================================================================== --- trunk/compile.php 2009-11-26 14:19:09 UTC (rev 1254) +++ trunk/compile.php 2009-11-26 15:56:34 UTC (rev 1255) @@ -191,7 +191,7 @@ $file = preg_replace("~<\\?php\\s*\\?>\n?|\\?>\n?<\\?php~", '', $file); $file = php_shrink($file); - $filename = $project . ($_SESSION["lang"] ? "-$_SESSION[lang]" : "") . ".php"; + $filename = $project . ($_SESSION["lang"] ? "-$_SESSION[lang]" : "") . ".php"; // "$project-$VERSION" fwrite(fopen($filename, "w"), $file); // file_put_contents() since PHP 5 echo "$filename created.\n"; } Modified: trunk/version.js =================================================================== --- trunk/version.js 2009-11-26 14:19:09 UTC (rev 1254) +++ trunk/version.js 2009-11-26 15:56:34 UTC (rev 1255) @@ -1,2 +1,2 @@ // downloaded from repository by version_checker() -document.cookie = 'adminer_version=2.2.0'; // last released version +document.cookie = 'adminer_version=2.2.1'; // last released version This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-12-03 21:02:11
|
Revision: 1260 http://adminer.svn.sourceforge.net/adminer/?rev=1260&view=rev Author: jakubvrana Date: 2009-12-03 21:02:04 +0000 (Thu, 03 Dec 2009) Log Message: ----------- Whitespace Modified Paths: -------------- trunk/adminer/user.inc.php trunk/compile.php Modified: trunk/adminer/user.inc.php =================================================================== --- trunk/adminer/user.inc.php 2009-12-01 21:47:45 UTC (rev 1259) +++ trunk/adminer/user.inc.php 2009-12-03 21:02:04 UTC (rev 1260) @@ -72,8 +72,8 @@ unset($grants[$object]); } if (preg_match('~^(.+)\\s*(\\(.*\\))?$~U', $object, $match) && ( - !grant("REVOKE", $revoke, $match[2], " ON $match[1] FROM $new_user") //! SQL injection - || !grant("GRANT", $grant, $match[2], " ON $match[1] TO $new_user") + !grant("REVOKE", $revoke, $match[2], " ON $match[1] FROM $new_user") //! SQL injection + || !grant("GRANT", $grant, $match[2], " ON $match[1] TO $new_user") )) { $error = true; break; Modified: trunk/compile.php =================================================================== --- trunk/compile.php 2009-12-01 21:47:45 UTC (rev 1259) +++ trunk/compile.php 2009-12-03 21:02:04 UTC (rev 1260) @@ -103,7 +103,7 @@ $token = array(0, $token); } if ($tokens[$i+2][0] === T_CLOSE_TAG && $tokens[$i+3][0] === T_INLINE_HTML && $tokens[$i+4][0] === T_OPEN_TAG - && strlen(addcslashes($tokens[$i+3][1], "'\\")) < strlen($tokens[$i+3][1]) + 3 + && strlen(addcslashes($tokens[$i+3][1], "'\\")) < strlen($tokens[$i+3][1]) + 3 ) { $tokens[$i+2] = array(T_ECHO, 'echo'); $tokens[$i+3] = array(T_CONSTANT_ENCAPSED_STRING, "'" . addcslashes($tokens[$i+3][1], "'\\") . "'"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-12-16 13:29:27
|
Revision: 1271 http://adminer.svn.sourceforge.net/adminer/?rev=1271&view=rev Author: jakubvrana Date: 2009-12-16 13:29:19 +0000 (Wed, 16 Dec 2009) Log Message: ----------- Display SQL info Modified Paths: -------------- trunk/adminer/include/mysql.inc.php trunk/adminer/sql.inc.php trunk/changes.txt Modified: trunk/adminer/include/mysql.inc.php =================================================================== --- trunk/adminer/include/mysql.inc.php 2009-12-16 13:10:28 UTC (rev 1270) +++ trunk/adminer/include/mysql.inc.php 2009-12-16 13:29:19 UTC (rev 1271) @@ -68,6 +68,7 @@ return false; } elseif ($result === true) { $this->affected_rows = mysql_affected_rows($this->_link); + $this->info = mysql_info($this->_link); return true; } return new Min_Result($result); Modified: trunk/adminer/sql.inc.php =================================================================== --- trunk/adminer/sql.inc.php 2009-12-16 13:10:28 UTC (rev 1270) +++ trunk/adminer/sql.inc.php 2009-12-16 13:29:19 UTC (rev 1271) @@ -87,7 +87,7 @@ if (preg_match("~^$space*$alter_database", $query)) { $databases = null; // clear cache } - echo "<p class='message'>" . lang('Query executed OK, %d row(s) affected.', $connection->affected_rows) . "\n"; + echo "<p class='message'>" . lang('Query executed OK, %d row(s) affected.', $connection->affected_rows) . "<br>" . h($connection->info) . "\n"; } unset($result); // free resultset } while ($connection->next_result()); Modified: trunk/changes.txt =================================================================== --- trunk/changes.txt 2009-12-16 13:10:28 UTC (rev 1270) +++ trunk/changes.txt 2009-12-16 13:29:19 UTC (rev 1271) @@ -1,5 +1,6 @@ Adminer 2.2.2-dev: Add Delete button to Edit page (regression from 2.0.0) +Simplify SQL syntax error message Adminer 2.2.1 (released 2009-11-26): Highlight current links This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jak...@us...> - 2009-12-17 13:22:38
|
Revision: 1273 http://adminer.svn.sourceforge.net/adminer/?rev=1273&view=rev Author: jakubvrana Date: 2009-12-17 13:22:28 +0000 (Thu, 17 Dec 2009) Log Message: ----------- Use camelCase in JavaScript Modified Paths: -------------- trunk/adminer/create.inc.php trunk/adminer/db.inc.php trunk/adminer/dump.inc.php trunk/adminer/foreign.inc.php trunk/adminer/include/adminer.inc.php trunk/adminer/include/connect.inc.php trunk/adminer/include/design.inc.php trunk/adminer/include/editing.inc.php trunk/adminer/indexes.inc.php trunk/adminer/processlist.inc.php trunk/adminer/schema.inc.php trunk/adminer/select.inc.php trunk/adminer/static/editing.js trunk/adminer/static/functions.js trunk/adminer/trigger.inc.php trunk/adminer/user.inc.php trunk/editor/include/adminer.inc.php trunk/editor/static/editing.js trunk/tests/2-create-table.html trunk/tests/4-create-table-2.html Modified: trunk/adminer/create.inc.php =================================================================== --- trunk/adminer/create.inc.php 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/adminer/create.inc.php 2009-12-17 13:22:28 UTC (rev 1273) @@ -165,8 +165,8 @@ <?php echo lang('Auto Increment'); ?>: <input name="auto_increment" size="6" value="<?php echo h($row["auto_increment"]); // don't prefill by original Auto_increment for the sake of performance and not reusing deleted ids ?>"> <?php echo lang('Comment'); ?>: <input name="Comment" value="<?php echo h($row["Comment"]); ?>" maxlength="60"> <script type="text/javascript"> -document.write('<label><input type="checkbox" onclick="column_show(this.checked, 5);"><?php echo lang('Default values'); ?><\/label>'); -document.write('<label><input type="checkbox"<?php if ($column_comments) { ?> checked<?php } ?> onclick="column_show(this.checked, 6);"><?php echo lang('Show column comments'); ?><\/label>'); +document.write('<label><input type="checkbox" onclick="columnShow(this.checked, 5);"><?php echo lang('Default values'); ?><\/label>'); +document.write('<label><input type="checkbox"<?php if ($column_comments) { ?> checked<?php } ?> onclick="columnShow(this.checked, 6);"><?php echo lang('Show column comments'); ?><\/label>'); </script> <p> <input type="hidden" name="token" value="<?php echo $token; ?>"> @@ -177,7 +177,7 @@ ?> <fieldset><legend><?php echo lang('Partition by'); ?></legend> <p> -<?php echo html_select("partition_by", array(-1 => "") + $partition_by, $row["partition_by"], "partition_by_change(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"]); ?>">) <?php echo lang('Partitions'); ?>: <input name="partitions" size="2" 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'"); ?>> @@ -185,7 +185,7 @@ <?php foreach ($row["partition_names"] as $key => $val) { echo '<tr>'; - echo '<td><input name="partition_names[]" value="' . h($val) . '"' . ($key == count($row["partition_names"]) - 1 ? ' onchange="partition_name_change(this);"' : '') . '>'; + echo '<td><input name="partition_names[]" value="' . h($val) . '"' . ($key == count($row["partition_names"]) - 1 ? ' onchange="partitionNameChange(this);"' : '') . '>'; echo '<td><input name="partition_values[]" value="' . h($row["partition_values"][$key]) . '">'; } ?> Modified: trunk/adminer/db.inc.php =================================================================== --- trunk/adminer/db.inc.php 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/adminer/db.inc.php 2009-12-17 13:22:28 UTC (rev 1273) @@ -47,11 +47,11 @@ echo "<p class='message'>" . lang('No tables.') . "\n"; } else { echo "<form action='' method='post'>\n"; - echo "<table cellspacing='0' class='nowrap' onclick='table_click(event);'>\n"; - echo '<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="form_check(this, /^(tables|views)\[/);" title="' . count($table_status) . '"><th>' . lang('Table') . '<td>' . lang('Engine') . '<td>' . lang('Collation') . '<td>' . lang('Data Length') . '<td>' . lang('Index Length') . '<td>' . lang('Data Free') . '<td>' . lang('Auto Increment') . '<td>' . lang('Rows') . '<td>' . lang('Comment') . "</thead>\n"; + echo "<table cellspacing='0' class='nowrap' onclick='tableClick(event);'>\n"; + echo '<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);" title="' . count($table_status) . '"><th>' . lang('Table') . '<td>' . lang('Engine') . '<td>' . lang('Collation') . '<td>' . lang('Data Length') . '<td>' . lang('Index Length') . '<td>' . lang('Data Free') . '<td>' . lang('Auto Increment') . '<td>' . lang('Rows') . '<td>' . lang('Comment') . "</thead>\n"; foreach ($table_status as $row) { $name = $row["Name"]; - echo '<tr' . odd() . '><td>' . checkbox((isset($row["Rows"]) ? "tables[]" : "views[]"), $name, in_array($name, $tables_views, true), "", "form_uncheck('check-all');"); + echo '<tr' . odd() . '><td>' . checkbox((isset($row["Rows"]) ? "tables[]" : "views[]"), $name, in_array($name, $tables_views, true), "", "formUncheck('check-all');"); echo '<th><a href="' . h(ME) . 'table=' . urlencode($name) . '">' . h($name) . '</a>'; if (isset($row["Rows"])) { echo "<td>$row[Engine]<td>$row[Collation]"; @@ -67,7 +67,7 @@ } } echo "</table>\n"; - echo "<p><input type='hidden' name='token' value='$token'><input type='submit' value='" . lang('Analyze') . "'> <input type='submit' name='optimize' value='" . lang('Optimize') . "'> <input type='submit' name='check' value='" . lang('Check') . "'> <input type='submit' name='repair' value='" . lang('Repair') . "'> <input type='submit' name='truncate' value='" . lang('Truncate') . "' onclick=\"return confirm('" . lang('Are you sure?') . " (' + form_checked(this, /tables/) + ')');\"> <input type='submit' name='drop' value='" . lang('Drop') . "' onclick=\"return confirm('" . lang('Are you sure?') . " (' + form_checked(this, /tables|views/) + ')');\">\n"; + echo "<p><input type='hidden' name='token' value='$token'><input type='submit' value='" . lang('Analyze') . "'> <input type='submit' name='optimize' value='" . lang('Optimize') . "'> <input type='submit' name='check' value='" . lang('Check') . "'> <input type='submit' name='repair' value='" . lang('Repair') . "'> <input type='submit' name='truncate' value='" . lang('Truncate') . "' onclick=\"return confirm('" . lang('Are you sure?') . " (' + formChecked(this, /tables/) + ')');\"> <input type='submit' name='drop' value='" . lang('Drop') . "' onclick=\"return confirm('" . lang('Are you sure?') . " (' + formChecked(this, /tables|views/) + ')');\">\n"; $dbs = get_databases(); if (count($dbs) != 1) { $db = (isset($_POST["target"]) ? $_POST["target"] : DB); Modified: trunk/adminer/dump.inc.php =================================================================== --- trunk/adminer/dump.inc.php 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/adminer/dump.inc.php 2009-12-17 13:22:28 UTC (rev 1273) @@ -168,25 +168,25 @@ if (strlen(DB)) { $checked = (strlen($TABLE) ? "" : " checked"); echo "<thead><tr>"; - echo "<th style='text-align: left;'><label><input type='checkbox' id='check-tables'$checked onclick='form_check(this, /^tables\\[/);'>" . lang('Tables') . "</label>"; - echo "<th style='text-align: right;'><label>" . lang('Data') . "<input type='checkbox' id='check-data'$checked onclick='form_check(this, /^data\\[/);'></label>"; + echo "<th style='text-align: left;'><label><input type='checkbox' id='check-tables'$checked onclick='formCheck(this, /^tables\\[/);'>" . lang('Tables') . "</label>"; + echo "<th style='text-align: right;'><label>" . lang('Data') . "<input type='checkbox' id='check-data'$checked onclick='formCheck(this, /^data\\[/);'></label>"; echo "</thead>\n"; $views = ""; foreach (table_status() as $row) { $checked = !strlen($TABLE) || $row["Name"] == $TABLE; - $print = "<tr><td>" . checkbox("tables[]", $row["Name"], $checked, $row["Name"], "form_uncheck('check-tables');"); + $print = "<tr><td>" . checkbox("tables[]", $row["Name"], $checked, $row["Name"], "formUncheck('check-tables');"); if (!$row["Engine"]) { $views .= "$print\n"; } else { - echo "$print<td align='right'><label>" . ($row["Engine"] == "InnoDB" && $row["Rows"] ? lang('~ %s', $row["Rows"]) : $row["Rows"]) . checkbox("data[]", $row["Name"], $checked, "", "form_uncheck('check-data');") . "</label>\n"; + echo "$print<td align='right'><label>" . ($row["Engine"] == "InnoDB" && $row["Rows"] ? lang('~ %s', $row["Rows"]) : $row["Rows"]) . checkbox("data[]", $row["Name"], $checked, "", "formUncheck('check-data');") . "</label>\n"; } } echo $views; } else { - echo "<thead><tr><th style='text-align: left;'><label><input type='checkbox' id='check-databases' checked onclick='form_check(this, /^databases\\[/);'>" . lang('Database') . "</label></thead>\n"; + echo "<thead><tr><th style='text-align: left;'><label><input type='checkbox' id='check-databases' checked onclick='formCheck(this, /^databases\\[/);'>" . lang('Database') . "</label></thead>\n"; foreach (get_databases() as $db) { if (!information_schema($db)) { - echo "<tr><td>" . checkbox("databases[]", $db, 1, $db, "form_uncheck('check-databases');") . "</label>\n"; + echo "<tr><td>" . checkbox("databases[]", $db, 1, $db, "formUncheck('check-databases');") . "</label>\n"; } } } Modified: trunk/adminer/foreign.inc.php =================================================================== --- trunk/adminer/foreign.inc.php 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/adminer/foreign.inc.php 2009-12-17 13:22:28 UTC (rev 1273) @@ -55,7 +55,7 @@ $j = 0; foreach ($row["source"] as $key => $val) { echo "<tr>"; - echo "<td>" . html_select("source[" . intval($key) . "]", array(-1 => "") + $source, $val, ($j == count($row["source"]) - 1 ? "foreign_add_row(this);" : 1)); + echo "<td>" . html_select("source[" . intval($key) . "]", array(-1 => "") + $source, $val, ($j == count($row["source"]) - 1 ? "foreignAddRow(this);" : 1)); echo "<td>" . html_select("target[" . intval($key) . "]", $target, $row["target"][$key]); $j++; } Modified: trunk/adminer/include/adminer.inc.php =================================================================== --- trunk/adminer/include/adminer.inc.php 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/adminer/include/adminer.inc.php 2009-12-17 13:22:28 UTC (rev 1273) @@ -169,7 +169,7 @@ $i++; } echo "<div>" . html_select("columns[$i][fun]", array(-1 => "") + $fun_group, "", "this.nextSibling.onchange();"); - echo "<select name='columns[$i][col]' onchange='select_add_row(this);'><option>" . optionlist($columns, null, true) . "</select></div>\n"; + echo "<select name='columns[$i][col]' onchange='selectAddRow(this);'><option>" . optionlist($columns, null, true) . "</select></div>\n"; echo "</div></fieldset>\n"; } @@ -198,7 +198,7 @@ $i++; } } - echo "<div><select name='where[$i][col]' onchange='select_add_row(this);'><option value=''>" . lang('(anywhere)') . optionlist($columns, null, true) . "</select>"; + echo "<div><select name='where[$i][col]' onchange='selectAddRow(this);'><option value=''>" . lang('(anywhere)') . optionlist($columns, null, true) . "</select>"; echo html_select("where[$i][op]", $this->operators); echo "<input name='where[$i][val]'></div>\n"; echo "</div></fieldset>\n"; @@ -220,7 +220,7 @@ $i++; } } - echo "<div><select name='order[$i]' onchange='select_add_row(this);'><option>" . optionlist($columns, null, true) . "</select>"; + echo "<div><select name='order[$i]' onchange='selectAddRow(this);'><option>" . optionlist($columns, null, true) . "</select>"; echo checkbox("desc[$i]", 1, 0, lang('descending')) . "</div>\n"; echo "</div></fieldset>\n"; } Modified: trunk/adminer/include/connect.inc.php =================================================================== --- trunk/adminer/include/connect.inc.php 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/adminer/include/connect.inc.php 2009-12-17 13:22:28 UTC (rev 1273) @@ -30,7 +30,7 @@ if ($databases) { $collations = collations(); echo "<form action='' method='post'>\n"; - echo "<table cellspacing='0' onclick='table_click(event);'>\n"; + echo "<table cellspacing='0' onclick='tableClick(event);'>\n"; echo "<thead><tr><td><input type='hidden' name='token' value='$token'> <th>" . lang('Database') . "<td>" . lang('Collation') . "</thead>\n"; foreach ($databases as $db) { $root = h(ME) . "db=" . urlencode($db); @@ -40,7 +40,7 @@ echo "\n"; } echo "</table>\n"; - echo "<p><input type='submit' name='drop' value='" . lang('Drop') . "' onclick=\"return confirm('" . lang('Are you sure?') . " (' + form_checked(this, /db/) + ')');\">\n"; + echo "<p><input type='submit' name='drop' value='" . lang('Drop') . "' onclick=\"return confirm('" . lang('Are you sure?') . " (' + formChecked(this, /db/) + ')');\">\n"; echo "</form>\n"; } } Modified: trunk/adminer/include/design.inc.php =================================================================== --- trunk/adminer/include/design.inc.php 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/adminer/include/design.inc.php 2009-12-17 13:22:28 UTC (rev 1273) @@ -17,7 +17,7 @@ <link rel="stylesheet" type="text/css" href="adminer.css"> <?php } ?> -<body onload="body_load(<?php echo substr($connection->server_info, 0, 3); ?>);<?php echo (isset($_COOKIE["adminer_version"]) ? "" : " verify_version();"); ?>"> +<body onload="bodyLoad(<?php echo substr($connection->server_info, 0, 3); ?>);<?php echo (isset($_COOKIE["adminer_version"]) ? "" : " verifyVersion();"); ?>"> <script type="text/javascript" src="../adminer/static/functions.js"></script> <script type="text/javascript" src="static/editing.js"></script> Modified: trunk/adminer/include/editing.inc.php =================================================================== --- trunk/adminer/include/editing.inc.php 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/adminer/include/editing.inc.php 2009-12-17 13:22:28 UTC (rev 1273) @@ -108,8 +108,8 @@ function edit_type($key, $field, $collations, $foreign_keys = array()) { global $structured_types, $unsigned, $inout; ?> -<td><select name="<?php echo $key; ?>[type]" class="type" onfocus="last_type = select_value(this);" onchange="editing_type_change(this);"><?php echo optionlist($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="editing_length_focus(this);"> +<td><select name="<?php echo $key; ?>[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"><?php echo optionlist($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><?php 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>' : ''); @@ -191,7 +191,7 @@ <thead><tr> <?php if ($type == "PROCEDURE") { ?><td> <?php } ?> <th><?php echo ($type == "TABLE" ? lang('Column name') : lang('Parameter name')); ?> -<td><?php echo lang('Type'); ?><textarea id="enum-edit" rows="4" cols="10" style="display: none;" onblur="editing_length_blur(this);"></textarea> +<td><?php echo lang('Type'); ?><textarea id="enum-edit" rows="4" cols="10" style="display: none;" onblur="editingLengthBlur(this);"></textarea> <td><?php echo lang('Length'); ?> <td><?php echo lang('Options'); ?> <?php if ($type == "TABLE") { ?> @@ -213,7 +213,7 @@ echo "<td>" . html_select("fields[$i][inout]", $inout, $field["inout"]); } ?> -<th><?php if ($display) { ?><input name="fields[<?php echo $i; ?>][field]" value="<?php echo h($field["field"]); ?>" onchange="<?php echo (strlen($field["field"]) || count($fields) > 1 ? "" : "editing_add_row(this, $allowed); "); ?>editing_name_change(this);" maxlength="64"><?php } ?><input type="hidden" name="fields[<?php echo $i; ?>][orig]" value="<?php echo h($field[($_POST ? "orig" : "field")]); ?>"> +<th><?php if ($display) { ?><input name="fields[<?php echo $i; ?>][field]" value="<?php echo h($field["field"]); ?>" onchange="<?php echo (strlen($field["field"]) || count($fields) > 1 ? "" : "editingAddRow(this, $allowed); "); ?>editingNameChange(this);" maxlength="64"><?php } ?><input type="hidden" name="fields[<?php echo $i; ?>][orig]" value="<?php echo h($field[($_POST ? "orig" : "field")]); ?>"> <?php edit_type("fields[$i]", $field, $collations, $foreign_keys); ?> <?php if ($type == "TABLE") { ?> <td><?php echo checkbox("fields[$i][null]", 1, $field["null"]); ?> @@ -222,8 +222,8 @@ <td<?php echo ($column_comments ? "" : " class='hidden'"); ?>><input name="fields[<?php echo $i; ?>][comment]" value="<?php echo h($field["comment"]); ?>" maxlength="255"> <?php } ?> <?php - echo "<td class='nowrap'><input type='image' name='add[$i]' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "' onclick='return !editing_add_row(this, $allowed, 1);'>"; - echo " <input type='image' name='drop_col[$i]' src='../adminer/static/cross.gif' alt='x' title='" . lang('Remove') . "' onclick='return !editing_remove_row(this);'>"; + echo "<td class='nowrap'><input type='image' name='add[$i]' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "' onclick='return !editingAddRow(this, $allowed, 1);'>"; + echo " <input type='image' name='drop_col[$i]' src='../adminer/static/cross.gif' alt='x' title='" . lang('Remove') . "' onclick='return !editingRemoveRow(this);'>"; echo " <input type='image' name='up[$i]' src='../adminer/static/up.gif' alt='^' title='" . lang('Move up') . "'>"; echo " <input type='image' name='down[$i]' src='../adminer/static/down.gif' alt='v' title='" . lang('Move down') . "'>"; echo "\n"; Modified: trunk/adminer/indexes.inc.php =================================================================== --- trunk/adminer/indexes.inc.php 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/adminer/indexes.inc.php 2009-12-17 13:22:28 UTC (rev 1273) @@ -73,10 +73,10 @@ <?php $j = 0; foreach ($row["indexes"] as $index) { - echo "<tr><td>" . html_select("indexes[$j][type]", array(-1 => "") + $index_types, $index["type"], ($j == count($row["indexes"]) - 1 ? "indexes_add_row(this);" : 1)) . "<td>\n"; + echo "<tr><td>" . html_select("indexes[$j][type]", array(-1 => "") + $index_types, $index["type"], ($j == count($row["indexes"]) - 1 ? "indexesAddRow(this);" : 1)) . "<td>\n"; ksort($index["columns"]); foreach ($index["columns"] as $i => $column) { - echo "<span>" . html_select("indexes[$j][columns][$i]", array(-1 => "") + $fields, $column, ($i == count($index["columns"]) ? "indexes_add_column(this);" : 1)); + echo "<span>" . html_select("indexes[$j][columns][$i]", array(-1 => "") + $fields, $column, ($i == count($index["columns"]) ? "indexesAddColumn(this);" : 1)); echo "<input name='indexes[$j][lengths][$i]' size='2' value='" . h($index["lengths"][$i]) . "'> </span>\n"; } echo "\n"; Modified: trunk/adminer/processlist.inc.php =================================================================== --- trunk/adminer/processlist.inc.php 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/adminer/processlist.inc.php 2009-12-17 13:22:28 UTC (rev 1273) @@ -13,7 +13,7 @@ ?> <form action="" method="post"> -<table cellspacing="0" onclick="table_click(event);"> +<table cellspacing="0" onclick="tableClick(event);"> <?php $result = $connection->query("SHOW PROCESSLIST"); for ($i=0; $row = $result->fetch_assoc(); $i++) { Modified: trunk/adminer/schema.inc.php =================================================================== --- trunk/adminer/schema.inc.php 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/adminer/schema.inc.php 2009-12-17 13:22:28 UTC (rev 1273) @@ -54,12 +54,12 @@ <script type="text/javascript"> table_pos = {<?php echo implode(",", $table_pos_js) . "\n"; ?>}; em = document.getElementById('schema').offsetHeight / <?php echo $top; ?>; -document.onmousemove = schema_mousemove; -document.onmouseup = schema_mouseup; +document.onmousemove = schemaMousemove; +document.onmouseup = schemaMouseup; </script> <?php foreach ($schema as $name => $table) { - echo "<div class='table' style='top: " . $table["pos"][0] . "em; left: " . $table["pos"][1] . "em;' onmousedown='schema_mousedown(this, event);'>"; + echo "<div class='table' style='top: " . $table["pos"][0] . "em; left: " . $table["pos"][1] . "em;' onmousedown='schemaMousedown(this, event);'>"; echo '<a href="' . h(ME) . 'table=' . urlencode($name) . '"><strong>' . h($name) . "</strong></a><br>\n"; foreach ($table["fields"] as $field) { $val = '<span' . type_class($field["type"]) . ' title="' . h($field["full_type"] . ($field["null"] ? " NULL" : '')) . '">' . h($field["field"]) . '</span>'; Modified: trunk/adminer/select.inc.php =================================================================== --- trunk/adminer/select.inc.php 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/adminer/select.inc.php 2009-12-17 13:22:28 UTC (rev 1273) @@ -184,8 +184,8 @@ $backward_keys = $adminer->backwardKeys($TABLE, $table_name); - echo "<table cellspacing='0' class='nowrap' onclick='table_click(event);'>\n"; - echo "<thead><tr><td><input type='checkbox' id='all-page' onclick='form_check(this, /check/);'>"; + echo "<table cellspacing='0' class='nowrap' onclick='tableClick(event);'>\n"; + echo "<thead><tr><td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'>"; $names = array(); reset($select); $order = 1; @@ -203,7 +203,7 @@ echo ($backward_keys ? "<th>" . lang('Relations') : "") . "</thead>\n"; foreach ($adminer->rowDescriptions($rows, $foreign_keys) as $n => $row) { $unique_idf = implode('&', unique_idf($rows[$n], $indexes)); - echo "<tr" . odd() . "><td>" . checkbox("check[]", $unique_idf, in_array($unique_idf, (array) $_POST["check"]), "", "this.form['all'].checked = false; form_uncheck('all-page');") . (count($select) != count($group) || information_schema(DB) ? '' : " <a href='" . h(ME . "edit=" . urlencode($TABLE) . "&$unique_idf") . "'>" . lang('edit') . "</a>"); + echo "<tr" . odd() . "><td>" . checkbox("check[]", $unique_idf, in_array($unique_idf, (array) $_POST["check"]), "", "this.form['all'].checked = false; formUncheck('all-page');") . (count($select) != count($group) || information_schema(DB) ? '' : " <a href='" . h(ME . "edit=" . urlencode($TABLE) . "&$unique_idf") . "'>" . lang('edit') . "</a>"); foreach ($row as $key => $val) { if (isset($names[$key])) { $field = $fields[$key]; @@ -271,7 +271,7 @@ } echo " (" . lang('%d row(s)', $found_rows) . ") " . checkbox("all", 1, 0, lang('whole result')) . "\n"; - echo (information_schema(DB) ? "" : "<fieldset><legend>" . lang('Edit') . "</legend><div><input type='submit' name='edit' value='" . lang('Edit') . "'> <input type='submit' name='clone' value='" . lang('Clone') . "'> <input type='submit' name='delete' value='" . lang('Delete') . "' onclick=\"return confirm('" . lang('Are you sure?') . " (' + (this.form['all'].checked ? $found_rows : form_checked(this, /check/)) + ')');\"></div></fieldset>\n"); + echo (information_schema(DB) ? "" : "<fieldset><legend>" . lang('Edit') . "</legend><div><input type='submit' name='edit' value='" . lang('Edit') . "'> <input type='submit' name='clone' value='" . lang('Clone') . "'> <input type='submit' name='delete' value='" . lang('Delete') . "' onclick=\"return confirm('" . lang('Are you sure?') . " (' + (this.form['all'].checked ? $found_rows : formChecked(this, /check/)) + ')');\"></div></fieldset>\n"); print_fieldset("export", lang('Export')); echo $adminer->dumpOutput(1) . " " . $adminer->dumpFormat(1); // 1 - select echo " <input type='submit' name='export' value='" . lang('Export') . "'>\n"; Modified: trunk/adminer/static/editing.js =================================================================== --- trunk/adminer/static/editing.js 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/adminer/static/editing.js 2009-12-17 13:22:28 UTC (rev 1273) @@ -1,15 +1,15 @@ // Adminer specific functions -function body_load(version) { - var jush_root = '../externals/jush/'; +function bodyLoad(version) { + var jushRoot = '../externals/jush/'; var script = document.createElement('script'); - script.src = jush_root + 'jush.js'; + script.src = jushRoot + 'jush.js'; script.onload = function () { if (window.jush) { // IE runs in case of an error too jush.create_links = ' target="_blank"'; jush.urls.sql[0] = 'http://dev.mysql.com/doc/refman/' + version + '/en/$key'; jush.urls.sql[0] = jush.urls.sql[0]; - jush.style(jush_root + 'jush.css'); + jush.style(jushRoot + 'jush.css'); jush.highlight_tag('pre', 0); jush.highlight_tag('code'); } @@ -24,11 +24,11 @@ -function select_value(select) { +function selectValue(select) { return select.options[select.selectedIndex].text; } -function form_field(form, name) { +function formField(form, name) { for (var i=0; i < form.length; i++) { if (form[i].name == name) { return form[i]; @@ -36,7 +36,7 @@ } } -function type_password(el, disable) { +function typePassword(el, disable) { try { el.type = (disable ? 'text' : 'password'); } catch (e) { @@ -45,21 +45,21 @@ -var added = '.', row_count; +var added = '.', rowCount; -function re_escape(s) { +function reEscape(s) { return s.replace(/[\[\]\\^$*+?.(){|}]/, '\\$&'); } -function idf_escape(s) { +function idfEscape(s) { return '`' + s.replace(/`/, '``') + '`'; } -function editing_name_change(field) { +function editingNameChange(field) { var name = field.name.substr(0, field.name.length - 7); - var type = form_field(field.form, name + '[type]'); + var type = formField(field.form, name + '[type]'); var opts = type.options; - var table = re_escape(field.value); + var table = reEscape(field.value); var column = ''; var match; if ((match = /(.+)_(.+)/.exec(table)) || (match = /(.*[a-z])([A-Z].*)/.exec(table))) { // limited to single word columns @@ -67,11 +67,11 @@ column = match[2]; } var plural = '(?:e?s)?'; - var tab_col = table + plural + '_?' + column; - var re = new RegExp('(^' + idf_escape(table + plural) + '\\.' + idf_escape(column) + '$' // table_column - + '|^' + idf_escape(tab_col) + '\\.' // table - + '|^' + idf_escape(column + plural) + '\\.' + idf_escape(table) + '$' // column_table - + ')|\\.' + idf_escape(tab_col) + '$' // column + var tabCol = table + plural + '_?' + column; + var re = new RegExp('(^' + idfEscape(table + plural) + '\\.' + idfEscape(column) + '$' // table_column + + '|^' + idfEscape(tabCol) + '\\.' // table + + '|^' + idfEscape(column + plural) + '\\.' + idfEscape(table) + '$' // column_table + + ')|\\.' + idfEscape(tabCol) + '$' // column , 'i'); var candidate; // don't select anything with ambiguous match (like column `id`) for (var i = opts.length; i--; ) { @@ -94,8 +94,8 @@ } } -function editing_add_row(button, allowed, focus) { - if (allowed && row_count >= allowed) { +function editingAddRow(button, allowed, focus) { + if (allowed && rowCount >= allowed) { return false; } var match = /([0-9]+)(\.[0-9]+)?/.exec(button.name); @@ -125,36 +125,36 @@ } } tags[0].onchange = function () { - editing_name_change(tags[0]); + editingNameChange(tags[0]); }; row.parentNode.insertBefore(row2, row.nextSibling); if (focus) { input.onchange = function () { - editing_name_change(input); + editingNameChange(input); }; input.focus(); } added += '0'; - row_count++; + rowCount++; return true; } -function editing_remove_row(button) { - var field = form_field(button.form, button.name.replace(/drop_col(.+)/, 'fields$1[field]')); +function editingRemoveRow(button) { + var field = formField(button.form, button.name.replace(/drop_col(.+)/, 'fields$1[field]')); field.parentNode.removeChild(field); button.parentNode.parentNode.style.display = 'none'; return true; } -var last_type = ''; -function editing_type_change(type) { +var lastType = ''; +function editingTypeChange(type) { var name = type.name.substr(0, type.name.length - 6); - var text = select_value(type); + var text = selectValue(type); for (var i=0; i < type.form.elements.length; i++) { var el = type.form.elements[i]; if (el.name == name + '[length]' && !( - (/(char|binary)$/.test(last_type) && /(char|binary)$/.test(text)) - || (/(enum|set)$/.test(last_type) && /(enum|set)$/.test(text)) + (/(char|binary)$/.test(lastType) && /(char|binary)$/.test(text)) + || (/(enum|set)$/.test(lastType) && /(enum|set)$/.test(text)) )) { el.value = ''; } @@ -167,9 +167,9 @@ } } -function editing_length_focus(field) { +function editingLengthFocus(field) { var td = field.parentNode; - if (/enum|set/.test(select_value(td.previousSibling.firstChild))) { + if (/enum|set/.test(selectValue(td.previousSibling.firstChild))) { var edit = document.getElementById('enum-edit'); var val = field.value; edit.value = (/^'.+','.+'$/.test(val) ? val.substr(1, val.length - 2).replace(/','/g, "\n").replace(/''/g, "'") : val); @@ -180,7 +180,7 @@ } } -function editing_length_blur(edit) { +function editingLengthBlur(edit) { var field = edit.parentNode.firstChild; var val = edit.value; field.value = (/\n/.test(val) ? "'" + val.replace(/\n+$/, '').replace(/'/g, "''").replace(/\n/g, "','") + "'" : val); @@ -188,20 +188,20 @@ edit.style.display = 'none'; } -function column_show(checked, column) { +function columnShow(checked, column) { var trs = document.getElementById('edit-fields').getElementsByTagName('tr'); for (var i=0; i < trs.length; i++) { trs[i].getElementsByTagName('td')[column].className = (checked ? 'nowrap' : 'hidden'); } } -function partition_by_change(el) { - var partition_table = /RANGE|LIST/.test(select_value(el)); - el.form['partitions'].className = (partition_table || !el.selectedIndex ? 'hidden' : ''); - document.getElementById('partition-table').className = (partition_table ? '' : 'hidden'); +function partitionByChange(el) { + var partitionTable = /RANGE|LIST/.test(selectValue(el)); + el.form['partitions'].className = (partitionTable || !el.selectedIndex ? 'hidden' : ''); + document.getElementById('partition-table').className = (partitionTable ? '' : 'hidden'); } -function partition_name_change(el) { +function partitionNameChange(el) { var row = el.parentNode.parentNode.cloneNode(true); row.firstChild.firstChild.value = ''; el.parentNode.parentNode.parentNode.appendChild(row); @@ -210,7 +210,7 @@ -function foreign_add_row(field) { +function foreignAddRow(field) { var row = field.parentNode.parentNode.cloneNode(true); var selects = row.getElementsByTagName('select'); for (var i=0; i < selects.length; i++) { @@ -223,7 +223,7 @@ -function indexes_add_row(field) { +function indexesAddRow(field) { var row = field.parentNode.parentNode.cloneNode(true); var spans = row.getElementsByTagName('span'); for (var i=0; i < spans.length - 1; i++) { @@ -241,7 +241,7 @@ field.onchange = function () { }; } -function indexes_add_column(field) { +function indexesAddColumn(field) { var column = field.parentNode.cloneNode(true); var select = column.getElementsByTagName('select')[0]; select.name = select.name.replace(/\]\[[0-9]+/, '$&1'); @@ -255,27 +255,27 @@ -var that, x, y, em, table_pos; +var that, x, y, em, tablePos; -function schema_mousedown(el, event) { +function schemaMousedown(el, event) { that = el; x = event.clientX - el.offsetLeft; y = event.clientY - el.offsetTop; } -function schema_mousemove(ev) { +function schemaMousemove(ev) { if (that !== undefined) { ev = ev || event; var left = (ev.clientX - x) / em; var top = (ev.clientY - y) / em; var divs = that.getElementsByTagName('div'); - var line_set = { }; + var lineSet = { }; for (var i=0; i < divs.length; i++) { if (divs[i].className == 'references') { var div2 = document.getElementById((divs[i].id.substr(0, 4) == 'refs' ? 'refd' : 'refs') + divs[i].id.substr(4)); - var ref = (table_pos[divs[i].title] ? table_pos[divs[i].title] : [ div2.parentNode.offsetTop / em, 0 ]); + var ref = (tablePos[divs[i].title] ? tablePos[divs[i].title] : [ div2.parentNode.offsetTop / em, 0 ]); var left1 = -1; - var is_top = true; + var isTop = true; var id = divs[i].id.replace(/^ref.(.+)-.+/, '$1'); if (divs[i].parentNode != div2.parentNode) { left1 = Math.min(0, ref[1] - left) - 1; @@ -284,20 +284,20 @@ var left2 = Math.min(0, left - ref[1]) - 1; div2.style.left = left2 + 'em'; div2.getElementsByTagName('div')[0].style.width = -left2 + 'em'; - is_top = (div2.offsetTop + ref[0] * em > divs[i].offsetTop + top * em); + isTop = (div2.offsetTop + ref[0] * em > divs[i].offsetTop + top * em); } - if (!line_set[id]) { + if (!lineSet[id]) { var line = document.getElementById(divs[i].id.replace(/^....(.+)-[0-9]+$/, 'refl$1')); var shift = ev.clientY - y - that.offsetTop; line.style.left = (left + left1) + 'em'; - if (is_top) { + if (isTop) { line.style.top = (line.offsetTop + shift) / em + 'em'; } if (divs[i].parentNode != div2.parentNode) { line = line.getElementsByTagName('div')[0]; - line.style.height = (line.offsetHeight + (is_top ? -1 : 1) * shift) / em + 'em'; + line.style.height = (line.offsetHeight + (isTop ? -1 : 1) * shift) / em + 'em'; } - line_set[id] = true; + lineSet[id] = true; } } } @@ -306,16 +306,16 @@ } } -function schema_mouseup(ev) { +function schemaMouseup(ev) { if (that !== undefined) { ev = ev || event; - table_pos[that.firstChild.firstChild.firstChild.data] = [ (ev.clientY - y) / em, (ev.clientX - x) / em ]; + tablePos[that.firstChild.firstChild.firstChild.data] = [ (ev.clientY - y) / em, (ev.clientX - x) / em ]; that = undefined; var date = new Date(); date.setMonth(date.getMonth() + 1); var s = ''; - for (var key in table_pos) { - s += '_' + key + ':' + Math.round(table_pos[key][0] * 10000) / 10000 + 'x' + Math.round(table_pos[key][1] * 10000) / 10000; + for (var key in tablePos) { + s += '_' + key + ':' + Math.round(tablePos[key][0] * 10000) / 10000 + 'x' + Math.round(tablePos[key][1] * 10000) / 10000; } document.cookie = 'adminer_schema=' + encodeURIComponent(s.substr(1)) + '; expires=' + date + '; path=' + location.pathname + location.search; } Modified: trunk/adminer/static/functions.js =================================================================== --- trunk/adminer/static/functions.js 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/adminer/static/functions.js 2009-12-17 13:22:28 UTC (rev 1273) @@ -6,14 +6,14 @@ return true; } -function verify_version() { +function verifyVersion() { document.cookie = 'adminer_version=0'; var script = document.createElement('script'); script.src = 'https://adminer.svn.sourceforge.net/svnroot/adminer/trunk/version.js'; document.body.appendChild(script); } -function form_check(el, name) { +function formCheck(el, name) { var elems = el.form.elements; for (var i=0; i < elems.length; i++) { if (name.test(elems[i].name)) { @@ -22,11 +22,11 @@ } } -function form_uncheck(id) { +function formUncheck(id) { document.getElementById(id).checked = false; } -function form_checked(el, name) { +function formChecked(el, name) { var checked = 0; var elems = el.form.elements; for (var i=0; i < elems.length; i++) { @@ -37,7 +37,7 @@ return checked; } -function table_click(event) { +function tableClick(event) { var el = event.target || event.srcElement; while (!/^tr$/i.test(el.tagName)) { if (/^(table|a|input)$/i.test(el.tagName)) { @@ -52,7 +52,7 @@ -function select_add_row(field) { +function selectAddRow(field) { var row = field.parentNode.cloneNode(true); var selects = row.getElementsByTagName('select'); for (var i=0; i < selects.length; i++) { Modified: trunk/adminer/trigger.inc.php =================================================================== --- trunk/adminer/trigger.inc.php 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/adminer/trigger.inc.php 2009-12-17 13:22:28 UTC (rev 1273) @@ -29,7 +29,7 @@ <form action="" method="post" id="form"> <table cellspacing="0"> -<tr><th><?php echo lang('Time'); ?><td><?php echo html_select("Timing", $trigger_time, $row["Timing"], "if (/^" . h(preg_quote($TABLE, "/")) . "_[ba][iud]$/.test(this.form['Trigger'].value)) this.form['Trigger'].value = '" . h(addcslashes($TABLE, "\r\n'\\")) . "_' + select_value(this).charAt(0).toLowerCase() + select_value(this.form['Event']).charAt(0).toLowerCase();"); ?> +<tr><th><?php echo lang('Time'); ?><td><?php echo html_select("Timing", $trigger_time, $row["Timing"], "if (/^" . h(preg_quote($TABLE, "/")) . "_[ba][iud]$/.test(this.form['Trigger'].value)) this.form['Trigger'].value = '" . h(addcslashes($TABLE, "\r\n'\\")) . "_' + selectValue(this).charAt(0).toLowerCase() + selectValue(this.form['Event']).charAt(0).toLowerCase();"); ?> <tr><th><?php echo lang('Event'); ?><td><?php echo html_select("Event", $trigger_event, $row["Event"], "this.form['Timing'].onchange();"); ?> <tr><th><?php echo lang('Name'); ?><td><input name="Trigger" value="<?php echo h($row["Trigger"]); ?>" maxlength="64"> </table> Modified: trunk/adminer/user.inc.php =================================================================== --- trunk/adminer/user.inc.php 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/adminer/user.inc.php 2009-12-17 13:22:28 UTC (rev 1273) @@ -119,8 +119,8 @@ <tr><th><?php echo lang('Username'); ?><td><input name="user" maxlength="16" value="<?php echo h($row["user"]); ?>"> <tr><th><?php echo lang('Server'); ?><td><input name="host" maxlength="60" value="<?php echo h($row["host"]); ?>"> <tr><th><?php echo lang('Password'); ?><td><input id="pass" name="pass" value="<?php echo h($row["pass"]); ?>"> -<?php if (!$row["hashed"]) { ?><script type="text/javascript">type_password(document.getElementById('pass'));</script><?php } ?> -<?php echo checkbox("hashed", 1, $row["hashed"], lang('Hashed'), "type_password(this.form['pass'], this.checked);"); ?> +<?php if (!$row["hashed"]) { ?><script type="text/javascript">typePassword(document.getElementById('pass'));</script><?php } ?> +<?php echo checkbox("hashed", 1, $row["hashed"], lang('Hashed'), "typePassword(this.form['pass'], this.checked);"); ?> </table> <?php @@ -152,7 +152,7 @@ } elseif (isset($_GET["grant"])) { echo "<td><select name=$name><option><option value='1'" . ($value ? " selected" : "") . ">" . lang('Grant') . "<option value='0'" . ($value == "0" ? " selected" : "") . ">" . lang('Revoke') . "</select>"; } else { - echo "<td align='center'><input type='checkbox' name=$name value='1'" . ($value ? " checked" : "") . ($privilege == "All privileges" ? " id='grants-$i-all'" : ($privilege == "Grant option" ? "" : " onclick=\"if (this.checked) form_uncheck('grants-$i-all');\"")) . ">"; //! uncheck all except grant if all is checked + echo "<td align='center'><input type='checkbox' name=$name value='1'" . ($value ? " checked" : "") . ($privilege == "All privileges" ? " id='grants-$i-all'" : ($privilege == "Grant option" ? "" : " onclick=\"if (this.checked) formUncheck('grants-$i-all');\"")) . ">"; //! uncheck all except grant if all is checked } $i++; } Modified: trunk/editor/include/adminer.inc.php =================================================================== --- trunk/editor/include/adminer.inc.php 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/editor/include/adminer.inc.php 2009-12-17 13:22:28 UTC (rev 1273) @@ -205,7 +205,7 @@ $i++; } } - echo "<div><select name='where[$i][col]' onchange='select_add_row(this);'><option value=''>" . lang('(anywhere)') . optionlist($columns, null, true) . "</select>"; + echo "<div><select name='where[$i][col]' onchange='selectAddRow(this);'><option value=''>" . lang('(anywhere)') . optionlist($columns, null, true) . "</select>"; echo html_select("where[$i][op]", array(-1 => "") + $this->operators); echo "<input name='where[$i][val]'></div>\n"; echo "</div></fieldset>\n"; Modified: trunk/editor/static/editing.js =================================================================== --- trunk/editor/static/editing.js 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/editor/static/editing.js 2009-12-17 13:22:28 UTC (rev 1273) @@ -1,4 +1,4 @@ // Editor specific functions -function body_load(version) { +function bodyLoad(version) { } Modified: trunk/tests/2-create-table.html =================================================================== --- trunk/tests/2-create-table.html 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/tests/2-create-table.html 2009-12-17 13:22:28 UTC (rev 1273) @@ -63,7 +63,7 @@ </tr> <tr> <td>click</td> - <td>//input[@type='checkbox' and @onclick='column_show(this.checked, 6);']</td> + <td>//input[@type='checkbox' and @onclick='columnShow(this.checked, 6);']</td> <td></td> </tr> <tr> Modified: trunk/tests/4-create-table-2.html =================================================================== --- trunk/tests/4-create-table-2.html 2009-12-17 12:54:17 UTC (rev 1272) +++ trunk/tests/4-create-table-2.html 2009-12-17 13:22:28 UTC (rev 1273) @@ -68,7 +68,7 @@ </tr> <tr> <td>click</td> - <td>//input[@type='checkbox' and @onclick='column_show(this.checked, 6);']</td> + <td>//input[@type='checkbox' and @onclick='columnShow(this.checked, 6);']</td> <td></td> </tr> <tr> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |