diff --git a/adminer/include/functions.inc.php b/adminer/include/functions.inc.php
index f31ff82e..8aac0fb5 100644
--- a/adminer/include/functions.inc.php
+++ b/adminer/include/functions.inc.php
@@ -159,7 +159,7 @@ function html_select($name, $options, $value = "", $onchange = true) {
function select_input($attrs, $options, $value = "", $placeholder = "") {
return ($options
? ""
- : ""
+ : ""
);
}
diff --git a/adminer/indexes.inc.php b/adminer/indexes.inc.php
index 98b6b132..53715dea 100644
--- a/adminer/indexes.inc.php
+++ b/adminer/indexes.inc.php
@@ -102,7 +102,7 @@ if (!$row) {
if ($primary) {
echo "
| PRIMARY | ";
foreach ($primary["columns"] as $key => $column) {
- echo "";
+ echo select_input(" disabled", $fields, $column);
echo " ";
}
echo " | | \n";
@@ -116,7 +116,11 @@ foreach ($row["indexes"] as $index) {
ksort($index["columns"]);
$i = 1;
foreach ($index["columns"] as $key => $column) {
- echo "" . html_select("indexes[$j][columns][$i]", array(-1 => "") + $fields, $column, ($i == count($index["columns"]) ? "indexesAddColumn" : "indexesChangeColumn") . "(this, '" . js_escape($jush == "sql" ? "" : $_GET["indexes"] . "_") . "');");
+ echo "" . select_input(
+ " name='indexes[$j][columns][$i]' onchange=\"" . ($i == count($index["columns"]) ? "indexesAddColumn" : "indexesChangeColumn") . "(this, '" . js_escape($jush == "sql" ? "" : $_GET["indexes"] . "_") . "');\"",
+ ($fields ? array_combine($fields, $fields) : $fields),
+ $column
+ );
echo ($jush == "sql" || $jush == "mssql" ? "" : "");
echo ($jush != "sql" ? checkbox("indexes[$j][descs][$i]", 1, $index["descs"][$key], lang('descending')) : "");
echo " ";
diff --git a/adminer/static/editing.js b/adminer/static/editing.js
index 1416b43d..a1a8662b 100644
--- a/adminer/static/editing.js
+++ b/adminer/static/editing.js
@@ -433,12 +433,16 @@ function indexesAddRow(field) {
* @param string name prefix
*/
function indexesChangeColumn(field, prefix) {
- var columns = parentTag(field, 'td').getElementsByTagName('select');
var names = [];
- for (var i=0; i < columns.length; i++) {
- var value = selectValue(columns[i]);
- if (value) {
- names.push(value);
+ for (var tag in { 'select': 1, 'input': 1 }) {
+ var columns = parentTag(field, 'td').getElementsByTagName(tag);
+ for (var i=0; i < columns.length; i++) {
+ if (/\[columns\]/.test(columns[i].name)) {
+ var value = selectValue(columns[i]);
+ if (value) {
+ names.push(value);
+ }
+ }
}
}
field.form[field.name.replace(/\].*/, '][name]')].value = prefix + names.join('_');
@@ -460,12 +464,20 @@ function indexesAddColumn(field, prefix) {
select.onchange();
}
var column = cloneNode(field.parentNode);
- select = column.getElementsByTagName('select')[0];
- select.name = select.name.replace(/\]\[\d+/, '$&1');
- select.selectedIndex = 0;
- var input = column.getElementsByTagName('input')[0];
- input.name = input.name.replace(/\]\[\d+/, '$&1');
- input.value = '';
+ var selects = column.getElementsByTagName('select');
+ for (var i = 0; i < selects.length; i++) {
+ select = selects[i];
+ select.name = select.name.replace(/\]\[\d+/, '$&1');
+ select.selectedIndex = 0;
+ }
+ var inputs = column.getElementsByTagName('input');
+ for (var i = 0; i < inputs.length; i++) {
+ var input = inputs[i];
+ input.name = input.name.replace(/\]\[\d+/, '$&1');
+ if (input.type != 'checkbox') {
+ input.value = '';
+ }
+ }
parentTag(field, 'td').appendChild(column);
field.onchange();
}
|