From fe0690851f3633a60202db0e29dc32cc6aa8a957 Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Sat, 23 Oct 2010 00:28:48 +0200 Subject: [PATCH] Allow redefining editInput for enum (bug #3048711) --- adminer/include/adminer.inc.php | 4 +++- adminer/include/functions.inc.php | 8 ++++---- editor/include/adminer.inc.php | 7 +++++-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php index 7068088c..9181d311 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -430,8 +430,10 @@ document.getElementById('username').focus(); */ function editInput($table, $field, $attrs, $value) { if ($field["type"] == "enum") { - return ($field["null"] ? " " : "") + return (isset($_GET["select"]) ? " " : "") + . ($field["null"] ? " " : "") . "" + . enum_input("radio", $attrs, $field, $value) ; } return ""; diff --git a/adminer/include/functions.inc.php b/adminer/include/functions.inc.php index 7fe46c44..489108f2 100644 --- a/adminer/include/functions.inc.php +++ b/adminer/include/functions.inc.php @@ -568,11 +568,13 @@ function column_foreign_keys($table) { */ function enum_input($type, $attrs, $field, $value) { preg_match_all("~'((?:[^']|'')*)'~", $field["length"], $matches); + $return = ""; foreach ($matches[1] as $i => $val) { $val = stripcslashes(str_replace("''", "'", $val)); $checked = (is_int($value) ? $value == $i+1 : (is_array($value) ? in_array($i+1, $value) : $value === $val)); - echo " '; + $return .= " '; } + return $return; } /** Print edit input field @@ -588,9 +590,7 @@ function input($field, $value, $function) { $functions = (isset($_GET["select"]) ? array("orig" => lang('original')) : array()) + $adminer->editFunctions($field); $attrs = " name='fields[$name]'"; if ($field["type"] == "enum") { - echo nbsp($functions[""]) . "" . ($functions["orig"] ? " " : ""); - echo $adminer->editInput($_GET["edit"], $field, $attrs, $value); - enum_input("radio", $attrs, $field, $value); + echo nbsp($functions[""]) . "" . $adminer->editInput($_GET["edit"], $field, $attrs, $value); } else { $first = 0; foreach ($functions as $key => $val) { diff --git a/editor/include/adminer.inc.php b/editor/include/adminer.inc.php index 099d74ed..af6b47e1 100644 --- a/editor/include/adminer.inc.php +++ b/editor/include/adminer.inc.php @@ -202,7 +202,7 @@ ORDER BY ORDINAL_POSITION", null, "") as $row) { //! requires MySQL 5 $key = $keys[$name]; $i--; echo "
" . h($desc) . ":"; - enum_input("checkbox", " name='where[$i][val][]'", $field, (array) $where[$key]["val"]); //! impossible to search for NULL + echo enum_input("checkbox", " name='where[$i][val][]'", $field, (array) $where[$key]["val"]); //! impossible to search for NULL echo "
\n"; unset($columns[$name]); } @@ -392,7 +392,10 @@ ORDER BY ORDINAL_POSITION", null, "") as $row) { //! requires MySQL 5 function editInput($table, $field, $attrs, $value) { if ($field["type"] == "enum") { - return ($field["null"] ? "" : ""); + return (isset($_GET["select"]) ? " " : "") + . ($field["null"] ? "" : "") + . enum_input("radio", $attrs, $field, $value) + ; } $options = $this->_foreignKeyOptions($table, $field["field"]); if ($options) {