summaryrefslogtreecommitdiff
path: root/program/steps
diff options
context:
space:
mode:
Diffstat (limited to 'program/steps')
-rw-r--r--program/steps/mail/addcontact.inc12
-rw-r--r--program/steps/settings/func.inc27
-rw-r--r--program/steps/settings/save_prefs.inc12
3 files changed, 49 insertions, 2 deletions
diff --git a/program/steps/mail/addcontact.inc b/program/steps/mail/addcontact.inc
index 0baf6cd63..57bc2a1c6 100644
--- a/program/steps/mail/addcontact.inc
+++ b/program/steps/mail/addcontact.inc
@@ -23,8 +23,16 @@
if (!$OUTPUT->ajax_call)
return;
-$done = false;
-$CONTACTS = $RCMAIL->get_address_book(null, true);
+$abook = $RCMAIL->config->get('default_addressbook');
+
+// Get configured addressbook
+$CONTACTS = $RCMAIL->get_address_book($abook, true);
+
+// Get first writeable addressbook if the configured doesn't exist
+// This can happen when user deleted the addressbook (e.g. Kolab folder)
+if ($abook !== null && !is_object($CONTACTS)) {
+ $CONTACTS = $RCMAIL->get_address_book(null, true);
+}
if (!empty($_POST['_address']) && is_object($CONTACTS))
{
diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc
index a44d6c8ff..280185e76 100644
--- a/program/steps/settings/func.inc
+++ b/program/steps/settings/func.inc
@@ -131,6 +131,7 @@ function rcmail_user_prefs($current=null)
$sections['mailbox'] = array('id' => 'mailbox', 'section' => rcube_label('mailboxview'));
$sections['compose'] = array('id' => 'compose', 'section' => rcube_label('messagescomposition'));
$sections['mailview'] = array('id' => 'mailview','section' => rcube_label('messagesdisplaying'));
+ $sections['addressbook'] = array('id' => 'addressbook','section' => rcube_label('addressbook'));
$sections['folders'] = array('id' => 'folders', 'section' => rcube_label('specialfolders'));
$sections['server'] = array('id' => 'server', 'section' => rcube_label('serversettings'));
@@ -582,6 +583,32 @@ function rcmail_user_prefs($current=null)
break;
+
+ // Addressbook config
+ case 'addressbook':
+
+ $blocks = array(
+ 'main' => array('name' => Q(rcube_label('mainoptions'))),
+ );
+
+ if (!isset($no_override['default_addressbook'])
+ && ($books = $RCMAIL->get_address_sources(true))
+ ) {
+ $field_id = 'rcmfd_default_addressbook';
+ $select_abook = new html_select(array('name' => '_default_addressbook', 'id' => $field_id));
+
+ foreach ($books as $book) {
+ $select_abook->add($book['name'], $book['id']);
+ }
+
+ $blocks['main']['options']['default_addressbook'] = array(
+ 'title' => html::label($field_id, Q(rcube_label('defaultaddressbook'))),
+ 'content' => $select_abook->show($config['default_addressbook']),
+ );
+ }
+
+ break;
+
// Special IMAP folders
case 'folders':
diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc
index 42ad0b952..031e0d3e4 100644
--- a/program/steps/settings/save_prefs.inc
+++ b/program/steps/settings/save_prefs.inc
@@ -37,6 +37,7 @@ switch ($CURR_SECTION)
);
break;
+
case 'mailbox':
$a_user_prefs = array(
'preview_pane' => isset($_POST['_preview_pane']) ? TRUE : FALSE,
@@ -48,6 +49,7 @@ switch ($CURR_SECTION)
);
break;
+
case 'mailview':
$a_user_prefs = array(
'prefer_html' => isset($_POST['_prefer_html']) ? TRUE : FALSE,
@@ -58,6 +60,7 @@ switch ($CURR_SECTION)
);
break;
+
case 'compose':
$a_user_prefs = array(
'htmleditor' => intval($_POST['_htmleditor']),
@@ -74,6 +77,14 @@ switch ($CURR_SECTION)
);
break;
+
+ case 'addressbook':
+ $a_user_prefs = array(
+ 'default_addressbook' => get_input_value('_default_addressbook', RCUBE_INPUT_POST),
+ );
+
+ break;
+
case 'server':
$a_user_prefs = array(
'read_when_deleted' => isset($_POST['_read_when_deleted']) ? TRUE : FALSE,
@@ -85,6 +96,7 @@ switch ($CURR_SECTION)
);
break;
+
case 'folders':
$a_user_prefs = array(
'drafts_mbox' => get_input_value('_drafts_mbox', RCUBE_INPUT_POST),