diff -ruN /a/home/rcube/program/include/rcube_addressbook.php /home/rcube/program/include/rcube_addressbook.php --- /a/home/rcube/program/include/rcube_addressbook.php 2011-11-18 08:32:40.643084488 -0500 +++ /home/rcube/program/include/rcube_addressbook.php 2011-11-20 14:04:23.092065669 -0500 @@ -482,5 +482,28 @@ return $fn; } + + + /** + * Compose a valid display name from the given structured contact data + * + * @param array Hash array with contact data as key-value pairs + * @param bool The name will be used on the list + * + * @return string Display name + */ + public static function compose_display_nickname($contact, $list_mode = false) + { + $contact = rcmail::get_instance()->plugins->exec_hook('contact_nickname', $contact); + + $nn = $contact['nickname']; + + return $nn; + } + } diff -ruN /a/home/rcube/program/steps/addressbook/func.inc /home/rcube/program/steps/addressbook/func.inc --- /a/home/rcube/program/steps/addressbook/func.inc 2011-11-18 08:32:46.336054683 -0500 +++ /home/rcube/program/steps/addressbook/func.inc 2011-11-20 14:04:57.496617821 -0500 @@ -331,7 +331,7 @@ return; // define list of cols to be displayed - $a_show_cols = array('name'); + $a_show_cols = array('name','nickname'); while ($row = $result->next()) { $a_row_cols = array(); @@ -344,6 +344,9 @@ // format each col foreach ($a_show_cols as $col) { $val = $row[$col]; + if ($val == '' && $col == 'nickname') { + $val = rcube_addressbook::compose_display_nickname($row, true); + } if ($val == '' && $col == 'name') { $val = rcube_addressbook::compose_display_name($row, true); } diff -ruN /a/home/rcube/program/steps/addressbook/list.inc /home/rcube/program/steps/addressbook/list.inc --- /a/home/rcube/program/steps/addressbook/list.inc 2011-11-18 08:32:46.337054686 -0500 +++ /home/rcube/program/steps/addressbook/list.inc 2011-11-20 13:11:53.088167596 -0500 @@ -42,7 +42,7 @@ $source->set_search_set($set); // get records - $result = $source->list_records(array('name', 'email')); + $result = $source->list_records(array('name', 'email','nickname')); while ($row = $result->next()) { $row['sourceid'] = $s; @@ -72,7 +72,7 @@ $CONTACTS = rcmail_contact_source(null, true); // get contacts for this user - $result = $CONTACTS->list_records(array('name')); + $result = $CONTACTS->list_records(array('name','nickname')); if (!$result->count && $result->searchonly) { $OUTPUT->show_message('contactsearchonly', 'notice'); diff -ruN /a/home/rcube/program/steps/mail/autocomplete.inc /home/rcube/program/steps/mail/autocomplete.inc --- /a/home/rcube/program/steps/mail/autocomplete.inc 2011-11-18 08:32:46.422054316 -0500 +++ /home/rcube/program/steps/mail/autocomplete.inc 2011-11-20 11:53:35.959088971 -0500 @@ -62,7 +62,7 @@ $abook = $RCMAIL->get_address_book($id); $abook->set_pagesize($MAXNUM); - if ($result = $abook->search(array('email','name'), $search, $mode, true, true, 'email')) { + if ($result = $abook->search(array('email','name','nickname'), $search, $mode, true, true, 'email')) { while ($sql_arr = $result->iterate()) { // Contact can have more than one e-mail address $email_arr = (array)$abook->get_col_values('email', $sql_arr, true);