Fix imap host selection in install script

release-0.6
thomascube 17 years ago
parent 4a2765a420
commit 112c54ffbb

@ -250,14 +250,10 @@ echo $select_dbba->show($RCI->getprop('db_backend'));
<div id="defaulthostlist">
<?php
$default_hosts = (array)$RCI->getprop('default_host');
$text_imaphost = new textfield(array('name' => '_default_host[]', 'size' => 30));
$i = 0;
foreach ($default_hosts as $key => $name) {
if (empty($name))
continue;
$host = is_numeric($key) ? $name : $key;
foreach ($RCI->get_hostlist() as $host) {
echo '<div id="defaulthostentry'.$i.'">' . $text_imaphost->show($host);
if ($i++ > 0)
echo '<a href="#" onclick="removehostfield(this.parentNode);return false" class="removelink" title="Remove this entry">remove</a>';

@ -98,7 +98,8 @@ class rcube_install
*/
function getprop($name, $default = '')
{
$value = $_SERVER['REQUEST_METHOD'] == 'POST' ? $_POST["_$name"] : $this->config[$name];
$value = $_SERVER['REQUEST_METHOD'] == 'POST' &&
(isset($_POST["_$name"]) || $this->config_props[$name]) ? $_POST["_$name"] : $this->config[$name];
if ($name == 'des_key' && !isset($_REQUEST["_$name"]))
$value = self::random_key(24);
@ -181,6 +182,25 @@ class rcube_install
}
/**
* Return a list with all imap hosts configured
*
* @return array Clean list with imap hosts
*/
function get_hostlist()
{
$default_hosts = (array)$this->getprop('default_host');
$out = array();
foreach ($default_hosts as $key => $name) {
if (!empty($name))
$out[] = is_numeric($key) ? $name : $key;
}
return $out;
}
/**
* Display OK status
*

@ -238,9 +238,14 @@ echo '</p>';
<?php
$default_hosts = (array)$RCI->getprop('default_host');
$select_imaphost = new select(array('name' => '_host', 'id' => 'imaphost'));
$select_imaphost->add(array_values($default_hosts));
$default_hosts = $RCI->get_hostlist();
if (!empty($default_hosts)) {
$host_field = new select(array('name' => '_host', 'id' => 'imaphost'));
$host_field->add($default_hosts);
}
else {
$host_field = new textfield(array('name' => '_host', 'id' => 'imaphost'));
}
$user_field = new textfield(array('name' => '_user', 'id' => 'imapuser'));
$pass_field = new passwordfield(array('name' => '_pass', 'id' => 'imappass'));
@ -251,7 +256,7 @@ $pass_field = new passwordfield(array('name' => '_pass', 'id' => 'imappass'));
<tbody>
<tr>
<td><label for="imaphost">Server</label></td>
<td><?php echo $select_imaphost->show($_POST['_host'] ? $_POST['_host'] : '0'); ?></td>
<td><?php echo $host_field->show($_POST['_host']); ?></td>
</tr>
<tr>
<td>Port</td>

Loading…
Cancel
Save