]> git.joonet.de Git - adminer.git/commitdiff
Move inline event handlers to <script>
authorJakub Vrana <jakub@vrana.cz>
Fri, 12 Jan 2018 16:52:45 +0000 (17:52 +0100)
committerJakub Vrana <jakub@vrana.cz>
Fri, 12 Jan 2018 16:59:46 +0000 (17:59 +0100)
adminer/include/adminer.inc.php
adminer/include/functions.inc.php
adminer/static/functions.js

index cda0120b7afb7f1e63593cdea11b7dfd406db153..8ec7a326be99b6e9f245dba786104e302cc5c60c 100644 (file)
@@ -313,9 +313,15 @@ class Adminer {
                $select[""] = array();
                foreach ($select as $key => $val) {
                        $val = $_GET["columns"][$key];
-                       $column = select_input(" name='columns[$i][col]' onchange='" . ($key !== ""  ? "selectFieldChange" : "selectAddRow") . ".call(this);'", $columns, $val["col"]);
-                       echo "<div>" . ($functions || $grouping ? "<select name='columns[$i][fun]' onchange='helpClose();" . ($key !== "" ? "" : " this.nextSibling.nextSibling.onchange();") . "'"
+                       $column = select_input(
+                               " name='columns[$i][col]'",
+                               $columns,
+                               $val["col"],
+                               ($key !== ""  ? "selectFieldChange" : "selectAddRow")
+                       );
+                       echo "<div>" . ($functions || $grouping ? "<select name='columns[$i][fun]'"
                                . on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'", 1) . ">" . optionlist(array(-1 => "") + array_filter(array(lang('Functions') => $functions, lang('Aggregation') => $grouping)), $val["fun"]) . "</select>"
+                               . script("qsl('select').onchange = function () { helpClose();" . ($key !== "" ? "" : " this.nextSibling.nextSibling.nextSibling.onchange();") . " };", "")
                                . "($column)" : $column) . "</div>\n";
                        $i++;
                }
@@ -341,13 +347,21 @@ class Adminer {
                }
                $_GET["where"] = (array) $_GET["where"];
                reset($_GET["where"]);
-               $change_next = "this.nextSibling.onchange();";
+               $change_next = "this.parentNode.firstChild.onchange();";
                for ($i = 0; $i <= count($_GET["where"]); $i++) {
                        list(, $val) = each($_GET["where"]);
                        if (!$val || ("$val[col]$val[val]" != "" && in_array($val["op"], $this->operators))) {
-                               echo "<div>" . select_input(" name='where[$i][col]' onchange='$change_next'", $columns, $val["col"], "", "(" . lang('anywhere') . ")");
+                               echo "<div>" . select_input(
+                                       " name='where[$i][col]'",
+                                       $columns,
+                                       $val["col"],
+                                       ($val ? "selectFieldChange" : "selectAddRow"),
+                                       "(" . lang('anywhere') . ")"
+                               );
                                echo html_select("where[$i][op]", $this->operators, $val["op"], $change_next);
-                               echo "<input type='search' name='where[$i][val]' value='" . h($val["val"]) . "' onchange='" . ($val ? "selectFieldChange" : "selectAddRow") . ".call(this);' onkeydown='selectSearchKeydown.call(this, event);' onsearch='selectSearchSearch.call(this);'></div>\n";
+                               echo "<input type='search' name='where[$i][val]' value='" . h($val["val"]) . "'>";
+                               echo script("mixin(qsl('input'), {onchange: function () { $change_next }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});", "");
+                               echo "</div>\n";
                        }
                }
                echo "</div></fieldset>\n";
@@ -369,7 +383,7 @@ class Adminer {
                                $i++;
                        }
                }
-               echo "<div>" . select_input(" name='order[$i]' onchange='selectAddRow.call(this);'", $columns);
+               echo "<div>" . select_input(" name='order[$i]'", $columns, "", "selectAddRow");
                echo checkbox("desc[$i]", 1, false, lang('descending')) . "</div>\n";
                echo "</div></fieldset>\n";
        }
index 32eebb8361566fe81b075d9b210ee35acba8558b..64eeb7b1871e94efee44266d738c547fdc5233f0 100644 (file)
@@ -1381,7 +1381,8 @@ function edit_form($TABLE, $fields, $row, $update) {
                }
                if (!support("table")) {
                        echo "<tr>"
-                               . "<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange.call(this);' value=''>" // needs empty value for keyupChange()
+                               . "<th><input name='field_keys[]' value=''>" // needs empty value for keyupChange()
+                               . script("mixin(qsl('input'), {onkeyup: keyupChange, onchange: fieldChange});")
                                . "<td class='function'>" . html_select("field_funs[]", $adminer->editFunctions(array("null" => isset($_GET["select"]))))
                                . "<td><input name='field_vals[]'>"
                                . "\n"
@@ -1394,9 +1395,10 @@ function edit_form($TABLE, $fields, $row, $update) {
                echo "<input type='submit' value='" . lang('Save') . "'>\n";
                if (!isset($_GET["select"])) {
                        echo "<input type='submit' name='insert' value='" . ($update
-                               ? lang('Save and continue edit') . "' onclick='return !ajaxForm(this.form, \"" . lang('Saving') . '...", this)'
+                               ? lang('Save and continue edit')
                                : lang('Save and insert next')
                        ) . "' title='Ctrl+Shift+Enter'>\n";
+                       echo ($update ? script("qsl('input').onclick = function () { return !ajaxForm(this.form, '" . lang('Saving') . "...', this); };") : "");
                }
        }
        echo ($update ? "<input type='submit' name='delete' value='" . lang('Delete') . "'>" . confirm() . "\n"
index f3168c850fd9bf8203cb94040f6917510714cbbc..dc7342ac0157710f49d96ac872992411a2c9fbdd 100644 (file)
@@ -357,9 +357,9 @@ function menuOut() {
 */
 function selectAddRow() {
        var field = this;
+       var row = cloneNode(field.parentNode);
        field.onchange = selectFieldChange;
        field.onchange();
-       var row = cloneNode(field.parentNode);
        var selects = qsa('select', row);
        for (var i=0; i < selects.length; i++) {
                selects[i].name = selects[i].name.replace(/[a-z]\[\d+/, '$&1');
@@ -861,8 +861,10 @@ function cloneNode(el) {
        var origEls = qsa(selector, el);
        var cloneEls = qsa(selector, el2);
        for (var i=0; i < origEls.length; i++) {
-               if (origEls[i].onchange) {
-                       cloneEls[i].onchange = origEls[i].onchange;
+               for (var key in {onchange: 1, onkeydown: 1, onsearch: 1}) {
+                       if (origEls[i][key]) {
+                               cloneEls[i][key] = origEls[i][key];
+                       }
                }
        }
        setupSubmitHighlight(el2);