]> git.joonet.de Git - adminer.git/commitdiff
MongoDB: alter indexes form
authorJakub Vrana <jakub@vrana.cz>
Sun, 12 Jan 2014 03:06:25 +0000 (19:06 -0800)
committerJakub Vrana <jakub@vrana.cz>
Sun, 12 Jan 2014 03:15:21 +0000 (19:15 -0800)
adminer/include/functions.inc.php
adminer/indexes.inc.php
adminer/static/editing.js

index f31ff82ede3be41e3a1ad4027259c8a1dfaf89df..8aac0fb588f76212b1941543644c61d12e8aca6e 100644 (file)
@@ -159,7 +159,7 @@ function html_select($name, $options, $value = "", $onchange = true) {
 function select_input($attrs, $options, $value = "", $placeholder = "") {
        return ($options
                ? "<select$attrs><option value=''>$placeholder" . optionlist($options, $value, true) . "</select>"
-               : "<input$attrs value='" . h($value) . "' placeholder='$placeholder'>"
+               : "<input$attrs size='10' value='" . h($value) . "' placeholder='$placeholder'>"
        );
 }
 
index 98b6b132c916833abeb3e7e70b426ed5ce654221..53715dea816a8e8dcfdc4f97b48c9558c5292f33 100644 (file)
@@ -102,7 +102,7 @@ if (!$row) {
 if ($primary) {
        echo "<tr><td>PRIMARY<td>";
        foreach ($primary["columns"] as $key => $column) {
-               echo "<select disabled>" . optionlist($fields, $column) . "</select>";
+               echo select_input(" disabled", $fields, $column);
                echo "<label><input disabled type='checkbox'>" . lang('descending') . "</label> ";
        }
        echo "<td><td>\n";
@@ -116,7 +116,11 @@ foreach ($row["indexes"] as $index) {
                ksort($index["columns"]);
                $i = 1;
                foreach ($index["columns"] as $key => $column) {
-                       echo "<span>" . html_select("indexes[$j][columns][$i]", array(-1 => "") + $fields, $column, ($i == count($index["columns"]) ? "indexesAddColumn" : "indexesChangeColumn") . "(this, '" . js_escape($jush == "sql" ? "" : $_GET["indexes"] . "_") . "');");
+                       echo "<span>" . 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" ? "<input type='number' name='indexes[$j][lengths][$i]' class='size' value='" . h($index["lengths"][$key]) . "'>" : "");
                        echo ($jush != "sql" ? checkbox("indexes[$j][descs][$i]", 1, $index["descs"][$key], lang('descending')) : "");
                        echo " </span>";
index 1416b43dcb8974ade38a1b3b38c8e35e791bb7ff..a1a8662b3fda8be051b72944c5d166be556ad6fe 100644 (file)
@@ -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();
 }