<form action="" method="post" id="form">
<p>
<?php echo lang('Table name'); ?>: <input name="name" maxlength="64" value="<?php echo h($row["name"]); ?>" autocapitalize="off">
-<?php if ($TABLE == "" && !$_POST) { ?><script type='text/javascript'>document.getElementById('form')['name'].focus();</script><?php } ?>
+<?php if ($TABLE == "" && !$_POST) { ?><script type='text/javascript'>focus(document.getElementById('form')['name']);</script><?php } ?>
<?php echo ($engines ? html_select("Engine", array("" => "(" . lang('engine') . ")") + $engines, $row["Engine"]) : ""); ?>
<?php echo ($collations && !ereg("sqlite|mssql", $jush) ? html_select("Collation", array("" => "(" . lang('collation') . ")") + $collations, $row["Collation"]) : ""); ?>
<input type="submit" value="<?php echo lang('Save'); ?>">
: '<input name="name" id="name" value="' . h($name) . '" maxlength="64" autocapitalize="off">'
) . "\n" . ($collations ? html_select("collation", array("" => "(" . lang('collation') . ")") + $collations, $collate) : "");
?>
-<script type='text/javascript'>document.getElementById('name').focus();</script>
+<script type='text/javascript'>focus(document.getElementById('name'));</script>
<input type="submit" value="<?php echo lang('Save'); ?>">
<?php
if (DB != "") {
}
}
echo ($update ? "<input type='submit' name='delete' value='" . lang('Delete') . "' onclick=\"return confirm('" . lang('Are you sure?') . "');\">\n"
- : ($_POST || !$fields ? "" : "<script type='text/javascript'>document.getElementById('form').getElementsByTagName('td')[1].firstChild.focus();</script>\n")
+ : ($_POST || !$fields ? "" : "<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n")
);
if (isset($_GET["select"])) {
hidden_fields(array("check" => (array) $_POST["check"], "clone" => $_POST["clone"], "all" => $_POST["all"]));
</table>
<script type="text/javascript">
var username = document.getElementById('username');
-username.focus();
+focus(username);
username.form['auth[driver]'].onchange();
</script>
<?php
<div id="menu">
<?php $adminer->navigation($missing); ?>
</div>
+<script type="text/javascript">setupSubmitHighlight(document);</script>
<?php
}
<form action="" method="post">
<p><input name="name" id="name" value="<?php echo h($row["name"]); ?>" autocapitalize="off">
-<script type='text/javascript'>document.getElementById('name').focus();</script>
+<script type='text/javascript'>focus(document.getElementById('name'));</script>
<input type="submit" value="<?php echo lang('Save'); ?>">
<?php
if ($_GET["ns"] != "") {
}
textarea("query", $q, 20);
-echo ($_POST ? "" : "<script type='text/javascript'>document.getElementsByTagName('textarea')[0].focus();</script>\n");
+echo ($_POST ? "" : "<script type='text/javascript'>focus(document.getElementsByTagName('textarea')[0]);</script>\n");
echo "<p>" . (ini_bool("file_uploads")
? lang('File upload') . ': <input type="file" name="sql_file[]" multiple'
. ($_FILES && $_FILES["sql_file"]["error"][0] != 4 ? '' : ' onchange="this.form[\'only_errors\'].checked = true;"') // 4 - UPLOAD_ERR_NO_FILE
tbody tr:hover td, tbody tr:hover th { background: #eee; }
pre { margin: 1em 0 0; }
input[type=image] { vertical-align: middle; }
+input.default { background: #ddf; }
.version { color: #777; font-size: 67%; }
.js .hidden, .nojs .jsonly { display: none; }
.js .column { position: absolute; background: #ddf; padding: .3em 1ex .3em 0; margin-top: -.3em; }
var match = /(\d+)(\.\d+)?/.exec(button.name);
var x = match[0] + (match[2] ? added.substr(match[2].length) : added) + '1';
var row = parentTag(button, 'tr');
- var row2 = row.cloneNode(true);
+ var row2 = cloneNode(row);
var tags = row.getElementsByTagName('select');
var tags2 = row2.getElementsByTagName('select');
for (var i=0; i < tags.length; i++) {
* @param HTMLInputElement
*/
function partitionNameChange(el) {
- var row = parentTag(el, 'tr').cloneNode(true);
+ var row = cloneNode(parentTag(el, 'tr'));
row.firstChild.firstChild.value = '';
parentTag(el, 'table').appendChild(row);
el.onchange = function () {};
*/
function foreignAddRow(field) {
field.onchange = function () { };
- var row = parentTag(field, 'tr').cloneNode(true);
+ var row = cloneNode(parentTag(field, 'tr'));
var selects = row.getElementsByTagName('select');
for (var i=0; i < selects.length; i++) {
selects[i].name = selects[i].name.replace(/\]/, '1$&');
*/
function indexesAddRow(field) {
field.onchange = function () { };
- var row = parentTag(field, 'tr').cloneNode(true);
+ var row = cloneNode(parentTag(field, 'tr'));
var selects = row.getElementsByTagName('select');
for (var i=0; i < selects.length; i++) {
selects[i].name = selects[i].name.replace(/indexes\[\d+/, '$&1');
select.selectedIndex = 3;
select.onchange();
}
- var column = field.parentNode.cloneNode(true);
+ var column = cloneNode(field.parentNode);
select = column.getElementsByTagName('select')[0];
select.name = select.name.replace(/\]\[\d+/, '$&1');
select.selectedIndex = 0;
selectFieldChange(field.form);
};
field.onchange();
- var row = field.parentNode.cloneNode(true);
+ var row = cloneNode(field.parentNode);
var selects = row.getElementsByTagName('select');
for (var i=0; i < selects.length; i++) {
selects[i].name = selects[i].name.replace(/[a-z]\[\d+/, '$&1');
}
td.innerHTML = '';
td.appendChild(input);
+ setupSubmitHighlight(td);
input.focus();
if (text == 2) { // long text
return ajax(location.href + '&' + encodeURIComponent(td.id) + '=', function (request) {
event.cancelBubble = true;
}
}
+
+
+
+/** Setup highlighting of default submit button on form field focus
+* @param HTMLElement
+*/
+function setupSubmitHighlight(parent) {
+ for (var key in { input: 1, select: 1, textarea: 1 }) {
+ var inputs = parent.getElementsByTagName(key);
+ for (var i = 0; i < inputs.length; i++) {
+ if (!/submit|image|file/.test(inputs[i].type)) {
+ addEvent(inputs[i], 'focus', inputFocus);
+ addEvent(inputs[i], 'blur', inputBlur);
+ }
+ }
+ }
+}
+
+/** Highlight default submit button
+* @this HTMLInputElement
+*/
+function inputFocus() {
+ var submit = findDefaultSubmit(this.form);
+ if (submit) {
+ submit.className += ' default';
+ }
+}
+
+/** Unhighlight default submit button
+* @this HTMLInputElement
+*/
+function inputBlur() {
+ var submit = findDefaultSubmit(this.form);
+ if (submit) {
+ submit.className = submit.className.replace(/ default( |$)/, '$1');
+ }
+}
+
+/** Find submit button used by Enter
+* @param HTMLFormElement
+* @return HTMLInputElement
+*/
+function findDefaultSubmit(form) {
+ var inputs = form.getElementsByTagName('input');
+ for (var i = 0; i < inputs.length; i++) {
+ var input = inputs[i];
+ if (input.type == 'submit') {
+ return input;
+ }
+ }
+}
+
+
+
+/** Add event listener
+* @param HTMLElement
+* @param string without 'on'
+* @param function
+*/
+function addEvent(el, action, handler) {
+ if (el.addEventListener) {
+ el.addEventListener(action, handler, false);
+ } else {
+ el.attachEvent('on' + action, handler);
+ }
+}
+
+/** Defer focusing element
+* @param HTMLElement
+*/
+function focus(el) {
+ setTimeout(function () { // this has to be an anonymous function because Firefox passes some arguments to setTimeout callback
+ el.focus();
+ }, 0);
+}
+
+/** Clone node and setup submit highlighting
+* @param HTMLElement
+* @return HTMLElement
+*/
+function cloneNode(el) {
+ var el2 = el.cloneNode(true);
+ setupSubmitHighlight(el2);
+ return el2;
+}
Adminer 3.7.0-dev:
Allow more SQL files to be uploaded at the same time
Print run time next to executed queries
+Highlight default submit button
Disable SQL export when applying functions in select
Allow using lang() in plugins (customization)
Remove bzip2 compression support
<tr><th><?php echo lang('Password'); ?><td><input type="password" name="auth[password]">
</table>
<script type="text/javascript">
-document.getElementById('username').focus();
+focus(document.getElementById('username'));
</script>
<?php
echo "<p><input type='submit' value='" . lang('Login') . "'>\n";