From 71e8cc3bce5053ca986a95ef119101d15317ddc6 Mon Sep 17 00:00:00 2001 From: alecpl Date: Mon, 25 Jul 2011 11:48:50 +0000 Subject: [PATCH] - Fixed display name on contact lists --- program/include/rcube_addressbook.php | 9 ++++++++- program/steps/addressbook/func.inc | 9 +++++++-- program/steps/addressbook/save.inc | 4 ++-- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/program/include/rcube_addressbook.php b/program/include/rcube_addressbook.php index 45ad0be5d..6d126e9e3 100644 --- a/program/include/rcube_addressbook.php +++ b/program/include/rcube_addressbook.php @@ -434,9 +434,11 @@ abstract class rcube_addressbook * 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_name($contact) + public static function compose_display_name($contact, $list_mode = false) { $contact = rcmail::get_instance()->plugins->exec_hook('contact_displayname', $contact); $fn = $contact['name']; @@ -446,7 +448,12 @@ abstract class rcube_addressbook // use email address part for name $email = is_array($contact['email']) ? $contact['email'][0] : $contact['email']; + if ($email && (empty($fn) || $fn == $email)) { + // Use full email address on contacts list + if ($list_mode) + return $email; + list($emailname) = explode('@', $email); if (preg_match('/(.*)[\.\-\_](.*)/', $emailname, $match)) $fn = trim(ucfirst($match[1]).' '.ucfirst($match[2])); diff --git a/program/steps/addressbook/func.inc b/program/steps/addressbook/func.inc index f372c1c33..6b3ebad08 100644 --- a/program/steps/addressbook/func.inc +++ b/program/steps/addressbook/func.inc @@ -294,8 +294,13 @@ function rcmail_js_contacts_list($result, $prefix='') } // format each col - foreach ($a_show_cols as $col) - $a_row_cols[$col] = Q($row[$col]); + foreach ($a_show_cols as $col) { + $val = $row[$col]; + if ($val == '' && $col == 'name') { + $val = rcube_addressbook::compose_display_name($row, true); + } + $a_row_cols[$col] = Q($val); + } $OUTPUT->command($prefix.'add_contact_row', $row['ID'], $a_row_cols); } diff --git a/program/steps/addressbook/save.inc b/program/steps/addressbook/save.inc index a8dd38f27..393eb5145 100644 --- a/program/steps/addressbook/save.inc +++ b/program/steps/addressbook/save.inc @@ -188,8 +188,8 @@ if (!empty($cid)) $a_js_cols = array(); $record = $CONTACTS->get_record($newcid ? $newcid : $cid, true); $record['email'] = reset($CONTACTS->get_col_values('email', $record, true)); - if (!$record['name']) - $record['name'] = $record['email']; + if (empty($record['name'])) + $record['name'] = rcube_addressbook::compose_display_name($record, true); foreach (array('name', 'email') as $col) $a_js_cols[] = Q((string)$record[$col]);