summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
Diffstat (limited to 'program')
-rw-r--r--program/steps/addressbook/func.inc19
1 files changed, 13 insertions, 6 deletions
diff --git a/program/steps/addressbook/func.inc b/program/steps/addressbook/func.inc
index 9731d9f09..08f2a3230 100644
--- a/program/steps/addressbook/func.inc
+++ b/program/steps/addressbook/func.inc
@@ -62,8 +62,11 @@ if (!$RCMAIL->action && !$OUTPUT->ajax_call) {
// add list of address sources to client env
$js_list = $RCMAIL->get_address_sources();
+ $source = get_input_value('_source', RCUBE_INPUT_GPC);
+
// use first directory by default
- $source = $js_list[key($js_list)]['id'];
+ if (!strlen($source) || !isset($js_list[$source]))
+ $source = $js_list[key($js_list)]['id'];
// find writeable source
foreach ($js_list as $s) {
@@ -155,18 +158,22 @@ function rcmail_directory_list($attrib)
$out = '';
$local_id = '0';
$jsdata = array();
- $current = get_input_value('_source', RCUBE_INPUT_GPC);
+
$line_templ = html::tag('li', array(
'id' => 'rcmli%s', 'class' => 'addressbook %s'),
html::a(array('href' => '%s',
'rel' => '%s',
'onclick' => "return ".JS_OBJECT_NAME.".command('list','%s',this)"), '%s'));
- // currently selected is the first address source in the list
- if (!isset($current))
- $current = strval(key((array)$OUTPUT->env['address_sources']));
+ $sources = (array) $OUTPUT->env['address_sources'];
+ reset($sources);
+
+ // currently selected source
+ $current = get_input_value('_source', RCUBE_INPUT_GPC);
+ if (!strlen($current) || !isset($sources[$source]))
+ $current = strval(key($sources));
- foreach ((array)$OUTPUT->env['address_sources'] as $j => $source) {
+ foreach ($sources as $j => $source) {
$id = strval($source['id'] ? $source['id'] : $j);
$js_id = JQ($id);
$out .= sprintf($line_templ,