diff options
Diffstat (limited to 'program')
-rw-r--r-- | program/include/rcmail.php | 17 | ||||
-rw-r--r-- | program/steps/addressbook/edit.inc | 14 |
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); |