summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
Diffstat (limited to 'program')
-rw-r--r--program/include/rcmail.php17
-rw-r--r--program/steps/addressbook/edit.inc14
2 files changed, 23 insertions, 8 deletions
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 800eddac6..62f6b6c46 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -263,6 +263,23 @@ class rcmail extends rcube
/**
+ * Return identifier of the address book object
+ *
+ * @param rcube_addressbook Addressbook source object
+ *
+ * @return string Source identifier
+ */
+ public function get_address_book_id($object)
+ {
+ foreach ($this->address_books as $index => $book) {
+ if ($book === $object) {
+ return $index;
+ }
+ }
+ }
+
+
+ /**
* Return address books list
*
* @param boolean True if the address book needs to be writeable
diff --git a/program/steps/addressbook/edit.inc b/program/steps/addressbook/edit.inc
index d175c05d9..7ddd3e516 100644
--- a/program/steps/addressbook/edit.inc
+++ b/program/steps/addressbook/edit.inc
@@ -43,16 +43,14 @@ if ($RCMAIL->action == 'edit') {
else {
$source = get_input_value('_source', RCUBE_INPUT_GPC);
- if (!strlen($source)) {
- // Give priority to configured default
- $source = $RCMAIL->config->get('default_addressbook');
+ if (strlen($source)) {
+ $CONTACTS = $RCMAIL->get_address_book($source, true);
}
- $CONTACTS = $RCMAIL->get_address_book($source, true);
-
- // find writable addressbook
- if (!$CONTACTS || $CONTACTS->readonly)
- $source = $RCMAIL->get_address_book(-1, true);
+ if (!$CONTACTS || $CONTACTS->readonly) {
+ $CONTACTS = $RCMAIL->get_address_book(-1, true);
+ $source = $RCMAIL->get_address_book_id($CONTACTS);
+ }
// Initialize addressbook
$CONTACTS = rcmail_contact_source($source, true);