reworked manageheader:

- removed include_root (is now always identical to server_root)
- removed mcrypt_version (not relevant to todays php versions)
- replaced session_type with session_handler
- look is now a bit more like setup and eGroupware itself
--> updated header-version to 1.29 forcing everyone to update
This commit is contained in:
Ralf Becker 2008-10-09 16:22:42 +00:00
parent 71063707a4
commit b6996bee01
6 changed files with 167 additions and 278 deletions

View File

@ -92,7 +92,7 @@ include(EGW_SERVER_ROOT.'/phpgwapi/setup/setup.inc.php');
$GLOBALS['egw_info']['server']['versions']['phpgwapi'] = $setup_info['phpgwapi']['version'];
$GLOBALS['egw_info']['server']['versions']['current_header'] = $setup_info['phpgwapi']['versions']['current_header'];
unset($setup_info);
$GLOBALS['egw_info']['server']['versions']['header'] = '1.28';
$GLOBALS['egw_info']['server']['versions']['header'] = '1.29';
if(!isset($GLOBALS['egw_info']['flags']['noapi']) || !$GLOBALS['egw_info']['flags']['noapi'])
{

View File

@ -13,7 +13,7 @@
$setup_info['phpgwapi']['name'] = 'phpgwapi';
$setup_info['phpgwapi']['title'] = 'eGroupWare API';
$setup_info['phpgwapi']['version'] = '1.5.015';
$setup_info['phpgwapi']['versions']['current_header'] = '1.28';
$setup_info['phpgwapi']['versions']['current_header'] = '1.29';
$setup_info['phpgwapi']['enable'] = 3;
$setup_info['phpgwapi']['app_order'] = 1;

View File

@ -38,7 +38,7 @@ class setup_detection
{
$tname = Array();
$GLOBALS['egw_setup']->db->Halt_On_Error = 'no';
$GLOBALS['egw_setup']->set_table_names();
if($GLOBALS['egw_setup']->table_exist(array($GLOBALS['egw_setup']->applications_table)))
@ -342,8 +342,8 @@ class setup_detection
$config_errors[] = lang("Your temporary directory '%1' %2",$config['temp_dir'],$error_msg);
}
if ((!isset($config['file_repository']) || $config['file_repository'] == 'sql') &&
(!isset($config['file_store_contents']) || $config['file_store_contents'] == 'filesystem') &&
if ((!isset($config['file_repository']) || $config['file_repository'] == 'sql') &&
(!isset($config['file_store_contents']) || $config['file_store_contents'] == 'filesystem') &&
!$this->check_dir($config['files_dir'],$error_msg,true))
{
$config_errors[] = lang("Your files directory '%1' %2",$config['files_dir'],$error_msg);
@ -487,7 +487,7 @@ class setup_detection
return True;
}
}
/**
* Checks if a directory exists, is writable by the webserver and optionaly is in the docroot
*
@ -512,15 +512,15 @@ class setup_detection
{
$docroots = array(realpath(EGW_SERVER_ROOT),realpath($_SERVER['DOCUMENT_ROOT']));
$dir = realpath($dir);
foreach ($docroots as $docroot)
{
$len = strlen($docroot);
if ($docroot == substr($dir,0,$len) && $len>0)
{
$rest = substr($dir,$len);
if (!strlen($rest) || $rest[0] == DIRECTORY_SEPARATOR)
{
$msg = lang('is in the webservers docroot');

View File

@ -31,6 +31,7 @@ $setup_tpl->set_block('T_setup_manage','domain','domain');
// authentication phase
$GLOBALS['egw_info']['setup']['stage']['header'] = $GLOBALS['egw_setup']->detection->check_header();
if ($GLOBALS['egw_info']['setup']['stage']['header'] > 2 && !$GLOBALS['egw_setup']->auth('Header'))
{
$GLOBALS['egw_setup']->html->show_header('Please login',True);
@ -72,7 +73,6 @@ if (!file_exists('../header.inc.php') || !is_readable('../header.inc.php'))
else
{
$GLOBALS['egw_info']['server']['server_root'] = EGW_SERVER_ROOT;
$GLOBALS['egw_info']['server']['include_root'] = EGW_INCLUDE_ROOT;
}
if (isset($_POST['setting'])) // Post of the header-form
{
@ -159,8 +159,6 @@ function check_header_form()
case 'new_admin_password':
if ($value) $GLOBALS['egw_info']['server']['header_admin_password'] = md5($value);
break;
case 'mcrypt_version':
$GLOBALS['egw_info']['server']['versions']['mcrypt'] = $value;
default:
$GLOBALS['egw_info']['server'][$name] = $value;
break;
@ -187,8 +185,7 @@ function check_header_form()
// validate the input and return errors
$validation_errors = $GLOBALS['egw_setup']->header->validation_errors(
$GLOBALS['egw_info']['server']['server_root'],
$GLOBALS['egw_info']['server']['include_root']);
$GLOBALS['egw_info']['server']['server_root'],$GLOBALS['egw_info']['server']['server_root']);
//echo "egw_info[server]=<pre>".print_r($GLOBALS['egw_info']['server'],true)."</pre>\n";
//echo "egw_domain=<pre>".print_r($GLOBALS['egw_domain'],true)."</pre>\n";
@ -225,15 +222,6 @@ function show_header_form($validation_errors)
$GLOBALS['egw_setup']->html->show_footer();
exit;
}
if((float) PHP_VERSION < $GLOBALS['egw_setup']->required_php_version)
{
echo '<p align="center" class="msg"><b>' .
lang('You are using PHP version %1. eGroupWare now requires %2 or later, recommended is PHP %3.',
PHP_VERSION,$GLOBALS['egw_setup']->required_php_version,$GLOBALS['egw_setup']->recommended_php_version) .
"</b></p>\n";
$GLOBALS['egw_setup']->html->show_footer();
exit;
}
$supported_db = $GLOBALS['egw_setup']->header->check_db_support($detected);
if (!count($supported_db))
@ -253,40 +241,7 @@ function show_header_form($validation_errors)
}
$setup_tpl->set_var('js_default_db_ports',$js_default_db_ports);
// checking PHP session support
if ($GLOBALS['egw_setup']->header->check_load_extension('session'))
{
$detected[] = lang('You appear to have PHP session support. Enabling PHP sessions.');
$supported_sessions_type['php4'] = 'PHP'; // makeing php sessions the default
$supported_sessions_type['php4-restore'] = lang('PHP plus restore'); // php-sessions with restore of egw_info array and egw object from the session
}
$supported_sessions_type['db'] = lang('Database');
if (file_exists('../header.inc.php') && is_file('../header.inc.php') && is_readable('../header.inc.php'))
{
$detected[] = lang('Found existing configuration file. Loading settings from the file...');
// This code makes sure the newer multi-domain supporting header.inc.php is being used
if(!isset($GLOBALS['egw_domain']))
{
$detected[] = lang('You need to add some domains to your header.inc.php.');
$GLOBALS['egw_domain']['default'] = $GLOBALS['egw_setup']->header->domain_defaults(
$GLOBALS['egw_info']['server']['header_admin_user'],
$GLOBALS['egw_info']['server']['header_admin_password'],$supported_db);
}
elseif(@$GLOBALS['egw_info']['server']['header_version'] != @$GLOBALS['egw_info']['server']['current_header_version'])
{
$detected[] = lang("You're using an old header.inc.php version...");
$detected[] = lang('Importing old settings into the new format....');
}
}
else // no config file found => using or detecting the defaults
{
$detected[] = lang('Sample configuration not found. Using built in defaults');
}
if ($validation_errors) $detected = $validation_errors;
$setup_tpl->set_var('detected','<ul><li>'.implode("</li>\n<li>",$detected)."</li>\n</ul>\n");
if ($validation_errors) $setup_tpl->set_var('detected','<ul><li>'.implode("</li>\n<li>",$validation_errors)."</li>\n</ul>\n");
if ($_POST['adddomain'])
{
@ -305,18 +260,22 @@ function show_header_form($validation_errors)
case 'mcrypt_enabled':
$setup_tpl->set_var($name.($GLOBALS['egw_info']['server'][$name] ? '_yes' : '_no'),' selected="selected"');
break;
case 'versions':
$setup_tpl->set_var('mcrypt_version',htmlspecialchars($GLOBALS['egw_info']['server']['versions']['mcrypt']));
break;
default:
$setup_tpl->set_var($name,htmlspecialchars($value));
if (!is_array($value)) $setup_tpl->set_var($name,htmlspecialchars($value));
break;
}
}
$options = array();
foreach($supported_sessions_type as $type => $label)
$supported_session_handler = array(
'egw_session_files' => lang('PHP session handler enabled in php.ini'),
);
if (!isset($supported_session_handler[$GLOBALS['egw_info']['server']['sessions_handler']]))
{
$options[] = '<option ' . ($type == $GLOBALS['egw_info']['server']['sessions_type'] ?
$supported_session_handler[$GLOBALS['egw_info']['server']['sessions_handler']] = lang("Custom handler: %1",$GLOBALS['egw_info']['server']['sessions_handler']);
}
$options = array();
foreach($supported_session_handler as $type => $label)
{
$options[] = '<option ' . ($type == $GLOBALS['egw_info']['server']['session_handler'] ?
'selected="selected" ' : '') . 'value="' . $type . '">' . $label . '</option>';
}
$setup_tpl->set_var('session_options',implode("\n",$options));
@ -367,15 +326,13 @@ function show_header_form($validation_errors)
));
$setup_tpl->set_var(array(
'lang_analysis' => $validation_errors ? lang('Validation errors') : lang('Analysis'),
'lang_analysis' => $validation_errors ? lang('Validation errors') : '',
'lang_settings' => lang('Settings'),
'lang_domain' => lang('Database instance (eGW domain)'),
'lang_delete' => lang('Delete'),
'lang_adddomain' => lang('Add new database instance (eGW domain)'),
'lang_serverroot' => lang('Server Root'),
'lang_serverroot_descr'=> lang('Path (not URL!) to your eGroupWare installation.'),
'lang_includeroot' => lang('Include Root'),
'lang_includeroot_descr'=>lang('Should be the same as Server Root unless you know what you are doing.'),
'lang_adminuser' => lang('Header username'),
'lang_adminuser_descr' => lang('Admin user for header manager'),
'lang_adminpass' => lang('Header password'),
@ -403,14 +360,10 @@ function show_header_form($validation_errors)
'lang_passforconfig' => lang('Password needed for domain configuration.'),
'lang_persist' => lang('Persistent connections'),
'lang_persistdescr' => lang('Do you want persistent connections (higher performance, but consumes more resources)'),
'lang_sesstype' => lang('Sessions Type'),
'lang_sesstypedescr' => lang('What type of sessions management do you want to use (PHP session management may perform better)?').
' '.lang('PHP plus restore gives by far the best performance, as it stores the eGW enviroment completly in the session.').
' '.lang('Unfortunally some PHP/Apache packages have problems with it (Apache dies and you cant login anymore).'),
'lang_session' => lang('Sessions Handler'),
'lang_session_descr' => lang('Session handler class used.'),
'lang_enablemcrypt' => lang('Enable MCrypt'),
'lang_mcrypt_warning' => lang('Not all mcrypt algorithms and modes work with eGroupWare. If you experience problems try switching it off.'),
'lang_mcryptversion' => lang('MCrypt version'),
'lang_mcryptversiondescr' => lang('Set this to "old" for versions &lt; 2.4, otherwise the exact mcrypt version you use.'),
'lang_mcryptiv' => lang('MCrypt initialization vector'),
'lang_mcryptivdescr' => lang('This should be around 30 bytes in length.<br />Note: The default has been randomly generated.'),
'lang_domselect' => lang('Domain select box on login'),

View File

@ -1,24 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!--
HTML Coding Standards;
1. use lowercase if possible, because of xhtml validation
2. make your template validate either html 4.01 or xhtml 1
3. make your application validate both if possible
4. always use quotes ("") when possible
5. use png-graphics if possible, but keep in mind IE has a transparency bug when it renders png's
-->
<!-- LAY-OUT BUGS
1. in IE no link cursor is displayed when png's are used for that link
2. tabs are ugly in preferences
3. spacers inside sidebox
-->
<title>eGroupWare Setup - {lang_setup} {configdomain}</title>
<meta http-equiv="content-type" content="text/html; charset={charset}" />
<meta name="keywords" content="egroupware" />
@ -49,29 +31,16 @@
td
{
/*font-size:12px;*/
line-height:170%;
}
/* some styles specially for setup */
#tbl_manage_header td
{
border:solid 0px green;
vertical-align:top;
padding-bottom:10px;
vertical-align: top;
padding-bottom: 3px;
padding-left: 5px;
}
.th th,
.th td
{
padding:3px;
}
.table_domains
{
border:solid 1px #cccccc;
width:100%;
margin-bottom:10px;
}
-->
</style>

View File

@ -16,179 +16,146 @@ function setDefaultDBPort(selectBox,portField)
//-->
</script>
<table border="0" width="600px;" id="tbl_manage_header" style="border-spacing:5px;" cellspacing="0" cellpadding="0" align="center">
<tbody>
{lang_select}
<tr><td colspan="2"><h3>{pagemsg}</h3></td></tr>
<tr class="th"><th colspan="2">{lang_analysis}</th>
</tr>
<tr>
<td colspan="2">
{detected}
</td>
</tr>
<!-- <tr>
<td>-->
<form name="domain_settings" action="manageheader.php" method="post">
<!-- <table style="border-spacing:5px;" border="0" width="100%" cellspacing="0" cellpadding="0">
<tbody>-->
<tr class="th">
<th colspan="2">{lang_settings}</th>
</tr>
<tr>
<td colspan="2">
<strong>{lang_serverroot}</strong> {lang_serverroot_descr}<br />
<input type="text" name="setting[server_root]" size="80" value="{server_root}" />
</td>
</tr>
<tr>
<td colspan="2">
<strong>{lang_includeroot}</strong> {lang_includeroot_descr}<br />
<input type="text" name="setting[include_root]" size="80" value="{include_root}" />
</td>
</tr>
<tr>
<td><strong>{lang_adminuser}</strong><br /><input type="text" name="setting[header_admin_user]" size="30" value="{header_admin_user}" /></td>
<td>{lang_adminuser_descr}</td>
</tr>
<tr>
<td><strong>{lang_adminpass}</strong><br />
<input type="hidden" name="setting[header_admin_password]" value="{header_admin_password}" />
<input type="password" name="setting[new_admin_password]" size="30" value="" /></td>
<td>{lang_adminpass_descr}<br />{lang_leave_empty}</td>
</tr>
<tr>
<td><strong>{lang_setup_acl}</strong><br /><input type="text" name="setting[setup_acl]" size="30" value="{setup_acl}" /></td>
<td>{lang_setup_acl_descr}</td>
</tr>
<tr>
<td><strong>{lang_persist}</strong><br />
<select name="setting[db_persistent]">
<option value="True"{db_persistent_yes}>{lang_Yes}</option>
<option value="False"{db_persistent_no}>{lang_No}</option>
</select>
</td>
<td>{lang_persistdescr}</td>
</tr>
<tr>
<td><strong>{lang_sesstype}</strong><br />
<select name="setting[sessions_type]">
{session_options}
</select>
</td>
<td>{lang_sesstypedescr}</td>
</tr>
<tr>
<td><strong>{lang_enablemcrypt}</strong><br />
<select name="setting[mcrypt_enabled]">
<option value="True"{mcrypt_enabled_yes}>{lang_Yes}</option>
<option value="False"{mcrypt_enabled_no}>{lang_No}</option>
</select>
</td>
<td>{lang_mcrypt_warning}</td>
</tr>
<tr>
<td><strong>{lang_mcryptversion}</strong><br /><input type="text" name="setting[mcrypt_version]" value="{mcrypt_version}" /></td>
<td>{lang_mcryptversiondescr}</td>
</tr>
<tr>
<td><strong>{lang_mcryptiv}</strong><br /><input type="text" name="setting[mcrypt_iv]" value="{mcrypt_iv}" size="35" /></td>
<td>{lang_mcryptivdescr}</td>
</tr>
<tr>
<td><strong>{lang_domselect}</strong><br />
<select name="setting[show_domain_selectbox]">
<option value="True"{show_domain_selectbox_yes}>{lang_Yes}</option>
<option value="False"{show_domain_selectbox_no}>{lang_No}</option>
</select></td>
<td>{lang_domselect_descr}</td>
</tr>
<tr>
<td colspan="2">
{domains}
</td>
</tr>
{comment_l}
<tr class="th">
<td style="padding:3px;" colspan="2"><input type="submit" name="adddomain" value="{lang_adddomain}" /></td>
</tr>
{comment_r}
<tr>
<td colspan="2">{actions}</td>
</tr>
<!-- </tbody>
</table>-->
</form>
<!-- </td>
</tr>-->
<form name="domain_settings" action="manageheader.php" method="post">
<table border="0" width="90%" id="tbl_manage_header" style="border-spacing: 3px;" align="center">
<tbody>
{lang_select}
<tr>
<td colspan="2">
<h3>{pagemsg}</h3>
<h2>{lang_analysis}</h2>
{detected}
</td>
</tr>
<tr class="th">
<th colspan="2">{lang_settings}</th>
</tr>
<tr class="row_on">
<td colspan="2">
<strong>{lang_serverroot}</strong> {lang_serverroot_descr}<br />
<input type="text" name="setting[server_root]" size="80" value="{server_root}" />
</td>
</tr>
<tr class="row_off">
<td><strong>{lang_adminuser}</strong><br /><input type="text" name="setting[header_admin_user]" size="30" value="{header_admin_user}" /></td>
<td>{lang_adminuser_descr}</td>
</tr>
<tr class="row_on">
<td><strong>{lang_adminpass}</strong><br />
<input type="hidden" name="setting[header_admin_password]" value="{header_admin_password}" />
<input type="password" name="setting[new_admin_password]" size="30" value="" /></td>
<td>{lang_adminpass_descr}<br />{lang_leave_empty}</td>
</tr>
<tr class="row_off">
<td><strong>{lang_setup_acl}</strong><br /><input type="text" name="setting[setup_acl]" size="30" value="{setup_acl}" /></td>
<td>{lang_setup_acl_descr}</td>
</tr>
<tr class="row_on">
<td><strong>{lang_persist}</strong><br />
<select name="setting[db_persistent]">
<option value="True"{db_persistent_yes}>{lang_Yes}</option>
<option value="False"{db_persistent_no}>{lang_No}</option>
</select>
</td>
<td>{lang_persistdescr}</td>
</tr>
<tr class="row_off">
<td><strong>{lang_session}</strong><br />
<select name="setting[sessions_handler]">
{session_options}
</select>
</td>
<td>{lang_session_descr}</td>
</tr>
<tr class="row_on">
<td><strong>{lang_enablemcrypt}</strong><br />
<select name="setting[mcrypt_enabled]">
<option value="True"{mcrypt_enabled_yes}>{lang_Yes}</option>
<option value="False"{mcrypt_enabled_no}>{lang_No}</option>
</select>
</td>
<td>{lang_mcrypt_warning}</td>
</tr>
<tr class="row_off">
<td><strong>{lang_mcryptiv}</strong><br /><input type="text" name="setting[mcrypt_iv]" value="{mcrypt_iv}" size="35" /></td>
<td>{lang_mcryptivdescr}</td>
</tr>
<tr class="row_on">
<td><strong>{lang_domselect}</strong><br />
<select name="setting[show_domain_selectbox]">
<option value="True"{show_domain_selectbox_yes}>{lang_Yes}</option>
<option value="False"{show_domain_selectbox_no}>{lang_No}</option>
</select></td>
<td>{lang_domselect_descr}</td>
</tr>
{domains}
{comment_l}
<tr class="th">
<td style="padding:3px;" colspan="2"><input type="submit" name="adddomain" value="{lang_adddomain}" /></td>
</tr>
{comment_r}
<tr>
<td colspan="2">{actions}</td>
</tr>
</tbody>
</table>
</form>
<tr>
<td colspan="2">
<form action="index.php" method="post">
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<br />{lang_finaldescr}<br />
<input type="hidden" name="FormLogout" value="header" />
<input type="hidden" name="ConfigLogin" value="Login" />
<input type="hidden" name="FormUser" value="{FormUser}" />
<input type="hidden" name="FormPW" value="{FormPW}" />
<input type="hidden" name="FormDomain" value="{FormDomain}" />
<input type="submit" name="junk" value="{lang_continue}" />
</td>
</tr>
</tbody>
</table>
</form>
</td>
</tr>
</tbody>
</table>
<form action="index.php" method="post">
<table border="0" width="90%" align="center" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<br />{lang_finaldescr}<br />
<input type="hidden" name="FormLogout" value="header" />
<input type="hidden" name="ConfigLogin" value="Login" />
<input type="hidden" name="FormUser" value="{FormUser}" />
<input type="hidden" name="FormPW" value="{FormPW}" />
<input type="hidden" name="FormDomain" value="{FormDomain}" />
<input type="submit" name="junk" value="{lang_continue}" />
</td>
</tr>
</tbody>
</table>
</form>
<!-- END manageheader -->
<!-- BEGIN domain -->
<table class="table_domains">
<tr class="th">
<td colspan="2" style="text-align:center;padding:3px;">{lang_domain}:&nbsp;<input name="domains[{db_domain}]" value="{db_domain}" />&nbsp;&nbsp;<input type="checkbox" name="deletedomain[{db_domain}]" />&nbsp;{lang_delete}</td>
</tr>
<tr>
<td><strong>{lang_dbtype}</strong><br />
<select name="setting_{db_domain}[db_type]" onchange="setDefaultDBPort(this,this.form['setting_{db_domain}[db_port]']);">
{dbtype_options}
</select>
</td>
<td>{lang_whichdb}</td>
</tr>
<tr>
<td><strong>{lang_dbhost}</strong><br /><input type="text" name="setting_{db_domain}[db_host]" value="{db_host}" /></td><td>{lang_dbhostdescr}</td>
</tr>
<tr>
<td><strong>{lang_dbport}</strong><br /><input type="text" name="setting_{db_domain}[db_port]" value="{db_port}" /></td><td>{lang_dbportdescr}</td>
</tr>
<tr>
<td><strong>{lang_dbname}</strong><br /><input type="text" name="setting_{db_domain}[db_name]" value="{db_name}" /></td><td>{lang_dbnamedescr}</td>
</tr>
<tr>
<td><strong>{lang_dbuser}</strong><br /><input type="text" name="setting_{db_domain}[db_user]" value="{db_user}" /></td><td>{lang_dbuserdescr}</td>
</tr>
<tr>
<td><strong>{lang_dbpass}</strong><br /><input type="password" name="setting_{db_domain}[db_pass]" value="{db_pass}" /></td><td>{lang_dbpassdescr}</td>
</tr>
<tr>
<td><strong>{lang_configuser}</strong><br /><input type="text" name="setting_{db_domain}[config_user]" value="{config_user}" /></td>
<td>{lang_configuser_descr}</td>
</tr>
<tr>
<td><strong>{lang_configpass}</strong><br />
<input type="hidden" name="setting_{db_domain}[config_passwd]" value="{config_passwd}" />
<input type="password" name="setting_{db_domain}[new_config_passwd]" value="" /></td>
<td>{lang_passforconfig}<br />{lang_leave_empty}</td>
</tr>
</table>
<tr class="th">
<td>{lang_domain}:</td>
<td><input name="domains[{db_domain}]" value="{db_domain}" />&nbsp;&nbsp;<input type="checkbox" name="deletedomain[{db_domain}]" />&nbsp;{lang_delete}</td>
</tr>
<tr class="row_on">
<td><strong>{lang_dbtype}</strong><br />
<select name="setting_{db_domain}[db_type]" onchange="setDefaultDBPort(this,this.form['setting_{db_domain}[db_port]']);">
{dbtype_options}
</select>
</td>
<td>{lang_whichdb}</td>
</tr>
<tr class="row_off">
<td><strong>{lang_dbhost}</strong><br /><input type="text" name="setting_{db_domain}[db_host]" value="{db_host}" /></td><td>{lang_dbhostdescr}</td>
</tr>
<tr class="row_on">
<td><strong>{lang_dbport}</strong><br /><input type="text" name="setting_{db_domain}[db_port]" value="{db_port}" /></td><td>{lang_dbportdescr}</td>
</tr>
<tr class="row_off">
<td><strong>{lang_dbname}</strong><br /><input type="text" name="setting_{db_domain}[db_name]" value="{db_name}" /></td><td>{lang_dbnamedescr}</td>
</tr>
<tr class="row_on">
<td><strong>{lang_dbuser}</strong><br /><input type="text" name="setting_{db_domain}[db_user]" value="{db_user}" /></td><td>{lang_dbuserdescr}</td>
</tr>
<tr class="row_off">
<td><strong>{lang_dbpass}</strong><br /><input type="password" name="setting_{db_domain}[db_pass]" value="{db_pass}" /></td><td>{lang_dbpassdescr}</td>
</tr>
<tr class="row_on">
<td><strong>{lang_configuser}</strong><br /><input type="text" name="setting_{db_domain}[config_user]" value="{config_user}" /></td>
<td>{lang_configuser_descr}</td>
</tr>
<tr class="row_off">
<td><strong>{lang_configpass}</strong><br />
<input type="hidden" name="setting_{db_domain}[config_passwd]" value="{config_passwd}" />
<input type="password" name="setting_{db_domain}[new_config_passwd]" value="" /></td>
<td>{lang_passforconfig}<br />{lang_leave_empty}</td>
</tr>
<!-- END domain -->
</td></tr>
</tbody>
</table>