diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php index a0eed9d1..2a9d6b0e 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -118,15 +118,42 @@ function css() { */ function loginForm() { global $drivers; + echo "\n"; - echo $this->loginFormField('driver', '
' . lang('System') . '', html_select("auth[driver]", $drivers, DRIVER, "loginDriver(this);") . "\n"); - echo $this->loginFormField('server', '
' . lang('Server') . '', '' . "\n"); - echo $this->loginFormField('username', '
' . lang('Username') . '', '' . script("focus(qs('#username')); qs('#username').form['auth[driver]'].onchange();")); - echo $this->loginFormField('password', '
' . lang('Password') . '', '' . "\n"); + echo $this->loginFormField('driver', '
' . lang('System') . '', html_select("auth[driver]", $drivers, DRIVER, "loginDriver(this);")); + echo $this->loginFormField('server', '
' . lang('Server') . '', '' . "\n"); + echo $this->loginFormField('username', '
' . lang('Username') . '', '' . script("focus(qs('#username')); qs('#username').form['auth[driver]'].onchange();")); + echo $this->loginFormField('password', '
' . lang('Password') . '', '' . "\n"); echo $this->loginFormField('db', '
' . lang('Database') . '', '' . "\n"); echo "
\n"; echo "

\n"; echo checkbox("auth[permanent]", 1, $_COOKIE["adminer_permanent"], lang('Permanent login')) . "\n"; + + echo script(" + window.addEventListener('load', (event) => { + var authDriverSelect = document.getElementById('auth_driver'); + var serverFieldRow = document.getElementById('serverfield').closest('tr'); + var usernameFieldRow = document.getElementById('usernamefield').closest('tr'); + var passwordFieldRow = document.getElementById('passwordfield').closest('tr'); + + function toggleFields() { + console.debug('toggleFields') + if (authDriverSelect.value === 'sqlite' || authDriverSelect.value === 'sqlite2') { + passwordFieldRow.style.display = 'none'; + serverFieldRow.style.display = 'none'; + usernameFieldRow.style.display = 'none'; + } else { + passwordFieldRow.style.display = ''; + serverFieldRow.style.display = ''; + usernameFieldRow.style.display = ''; + } + } + + authDriverSelect.addEventListener('change', toggleFields); + + toggleFields(); + });"); + } /** Get login form field diff --git a/adminer/include/functions.inc.php b/adminer/include/functions.inc.php index 6565375a..fa1488d0 100644 --- a/adminer/include/functions.inc.php +++ b/adminer/include/functions.inc.php @@ -220,6 +220,7 @@ function optionlist($options, $selected = null, $use_keys = false) { function html_select($name, $options, $value = "", $onchange = true, $labelled_by = "") { if ($onchange) { return "" . (is_string($onchange) ? script("qsl('select').onchange = function () { $onchange };", "") : "") diff --git a/adminer/include/version.inc.php b/adminer/include/version.inc.php index 47ef639c..9205a216 100644 --- a/adminer/include/version.inc.php +++ b/adminer/include/version.inc.php @@ -1,2 +1,2 @@