Messages: Better contact image efficiency. Display images in Contacts list.
This commit is contained in:
parent
448e8e3f4c
commit
f280969324
|
|
@ -869,4 +869,44 @@
|
|||
$text['button-close']['sv-se'] = '';
|
||||
$text['button-close']['uk-ua'] = '';
|
||||
|
||||
$text['label-view_contact']['en-us'] = 'View Contact';
|
||||
$text['label-view_contact']['ar-eg'] = '';
|
||||
$text['label-view_contact']['de-at'] = '';
|
||||
$text['label-view_contact']['de-ch'] = '';
|
||||
$text['label-view_contact']['de-de'] = '';
|
||||
$text['label-view_contact']['es-cl'] = '';
|
||||
$text['label-view_contact']['es-mx'] = '';
|
||||
$text['label-view_contact']['fr-ca'] = '';
|
||||
$text['label-view_contact']['fr-fr'] = '';
|
||||
$text['label-view_contact']['he-il'] = '';
|
||||
$text['label-view_contact']['it-it'] = '';
|
||||
$text['label-view_contact']['nl-nl'] = '';
|
||||
$text['label-view_contact']['pl-pl'] = '';
|
||||
$text['label-view_contact']['pt-br'] = '';
|
||||
$text['label-view_contact']['pt-pt'] = '';
|
||||
$text['label-view_contact']['ro-ro'] = '';
|
||||
$text['label-view_contact']['ru-ru'] = '';
|
||||
$text['label-view_contact']['sv-se'] = '';
|
||||
$text['label-view_contact']['uk-ua'] = '';
|
||||
|
||||
$text['label-send_email']['en-us'] = 'Send Email';
|
||||
$text['label-send_email']['ar-eg'] = '';
|
||||
$text['label-send_email']['de-at'] = '';
|
||||
$text['label-send_email']['de-ch'] = '';
|
||||
$text['label-send_email']['de-de'] = '';
|
||||
$text['label-send_email']['es-cl'] = '';
|
||||
$text['label-send_email']['es-mx'] = '';
|
||||
$text['label-send_email']['fr-ca'] = '';
|
||||
$text['label-send_email']['fr-fr'] = '';
|
||||
$text['label-send_email']['he-il'] = '';
|
||||
$text['label-send_email']['it-it'] = '';
|
||||
$text['label-send_email']['nl-nl'] = '';
|
||||
$text['label-send_email']['pl-pl'] = '';
|
||||
$text['label-send_email']['pt-br'] = '';
|
||||
$text['label-send_email']['pt-pt'] = '';
|
||||
$text['label-send_email']['ro-ro'] = '';
|
||||
$text['label-send_email']['ru-ru'] = '';
|
||||
$text['label-send_email']['sv-se'] = '';
|
||||
$text['label-send_email']['uk-ua'] = '';
|
||||
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -56,15 +56,14 @@
|
|||
}
|
||||
unset ($prep_statement, $sql, $row, $record);
|
||||
|
||||
//get self (primary contact attachment) image, if any
|
||||
//get self (primary contact attachment) image
|
||||
if (!is_array($_SESSION['tmp']['messages']['contact_me'])) {
|
||||
$sql = "select attachment_filename as filename, attachment_content as image from v_contact_attachments ";
|
||||
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
|
||||
$sql .= "and contact_uuid = :contact_uuid ";
|
||||
$sql .= "and contact_uuid = '".$_SESSION['user']['contact_uuid']."' ";
|
||||
$sql .= "and attachment_primary = 1 ";
|
||||
$bind[':contact_uuid'] = $_SESSION['user']['contact_uuid'];
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute(is_array($bind) ? $bind : null);
|
||||
$prep_statement->execute();
|
||||
$_SESSION['tmp']['messages']['contact_me'] = $prep_statement->fetch(PDO::FETCH_NAMED);
|
||||
unset ($sql, $bind, $prep_statement);
|
||||
}
|
||||
|
|
@ -93,7 +92,7 @@
|
|||
echo " bottom: 0px;\n";
|
||||
echo " text-align: center;\n";
|
||||
echo " vertical-align: middle;\n";
|
||||
echo " }\n";
|
||||
echo " }\n";
|
||||
|
||||
echo " #message_new_container {\n";
|
||||
echo " display: block;\n";
|
||||
|
|
@ -109,7 +108,7 @@
|
|||
echo " -webkit-box-shadow: 0px 1px 20px #888;\n";
|
||||
echo " -moz-box-shadow: 0px 1px 20px #888;\n";
|
||||
echo " box-shadow: 0px 1px 20px #888;\n";
|
||||
echo " }\n";
|
||||
echo " }\n";
|
||||
|
||||
echo " #message_media_layer {\n";
|
||||
echo " z-index: 999999;\n";
|
||||
|
|
@ -120,14 +119,32 @@
|
|||
echo " bottom: 0px;\n";
|
||||
echo " text-align: center;\n";
|
||||
echo " vertical-align: middle;\n";
|
||||
echo " }\n";
|
||||
echo " }\n";
|
||||
|
||||
echo " td.contact_selected {\n";
|
||||
echo " border-right: 5px solid ".($SESSION['theme']['table_row_border_color']['text'] != '' ? $SESSION['theme']['table_row_border_color']['text'] : '#c5d1e5').";\n";
|
||||
echo " }\n";
|
||||
echo " }\n";
|
||||
|
||||
echo " .contact_list_image {\n";
|
||||
echo " float: left;\n";
|
||||
echo " width: 75px;\n";
|
||||
echo " height: 75px;\n";
|
||||
echo " margin: 3px 8px 3px 2px;\n";
|
||||
echo " border: 1px solid ".($SESSION['theme']['table_row_border_color']['text'] != '' ? $SESSION['theme']['table_row_border_color']['text'] : '#c5d1e5').";\n";
|
||||
echo " background-repeat: no-repeat;\n";
|
||||
echo " background-size: cover;\n";
|
||||
echo " background-position: center center;\n";
|
||||
echo " border-radius: 11px;\n";
|
||||
echo " }\n";
|
||||
|
||||
echo "</style>\n";
|
||||
|
||||
//cache self (primary contact attachment) image
|
||||
if (is_array($_SESSION['tmp']['messages']['contact_me']) && sizeof($_SESSION['tmp']['messages']['contact_me']) != 0) {
|
||||
$attachment_type = strtolower(pathinfo($_SESSION['tmp']['messages']['contact_me']['filename'], PATHINFO_EXTENSION));
|
||||
echo "<img id='src_message-bubble-image-me' style='display: none;' src='data:image/".$attachment_type.";base64,".$_SESSION['tmp']['messages']['contact_me']['image']."'>\n";
|
||||
}
|
||||
|
||||
//new message layer
|
||||
if (permission_exists('message_add')) {
|
||||
echo "<div id='message_new_layer' style='display: none;'>\n";
|
||||
|
|
@ -205,9 +222,9 @@
|
|||
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <th width='25%'>".$text['label-contacts']."</th>\n";
|
||||
echo " <th width='30%'>".$text['label-contacts']."</th>\n";
|
||||
echo " <th style='white-space: nowrap;'><nobr>".$text['label-messages']."<nobr></th>\n";
|
||||
echo " <th width='75%' style='text-align: right; font-weight: normal;' id='contact_current_name'></th>\n";
|
||||
echo " <th width='70%' style='text-align: right; font-weight: normal;' id='contact_current_name'></th>\n";
|
||||
echo " </tr>\n";
|
||||
echo " <tr>\n";
|
||||
echo " <td id='contacts' valign='top'><center>···</center></td>\n";
|
||||
|
|
|
|||
|
|
@ -90,9 +90,11 @@
|
|||
if (is_array($contact) && sizeof($contact) != 0) {
|
||||
foreach ($contact as $number => $field) {
|
||||
if (is_uuid($field['contact_uuid'])) {
|
||||
$sql = "select contact_name_given, contact_name_family from v_contacts ";
|
||||
$sql .= "where contact_uuid = '".$field['contact_uuid']."' ";
|
||||
$sql .= "and (domain_uuid = '".$domain_uuid."' or domain_uuid is null) ";
|
||||
$sql = "select c.contact_name_given, c.contact_name_family, ";
|
||||
$sql .= "(select ce.email_address from v_contact_emails as ce where ce.contact_uuid = c.contact_uuid and ce.email_primary = 1) as contact_email ";
|
||||
$sql .= "from v_contacts as c ";
|
||||
$sql .= "where c.contact_uuid = '".$field['contact_uuid']."' ";
|
||||
$sql .= "and (c.domain_uuid = '".$domain_uuid."' or c.domain_uuid is null) ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$row = $prep_statement->fetch(PDO::FETCH_NAMED);
|
||||
|
|
@ -100,6 +102,7 @@
|
|||
$contact[$number]['contact_uuid'] = $field['contact_uuid'];
|
||||
$contact[$number]['contact_name_given'] = $row['contact_name_given'];
|
||||
$contact[$number]['contact_name_family'] = $row['contact_name_family'];
|
||||
$contact[$number]['contact_email'] = $row['contact_email'];
|
||||
}
|
||||
unset($prep_statement, $sql);
|
||||
}
|
||||
|
|
@ -117,7 +120,6 @@
|
|||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$rows = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
//view_array($rows);
|
||||
if (is_array($rows) && sizeof($rows)) {
|
||||
foreach ($rows as $row) {
|
||||
$destinations[] = $row['destination_number'];
|
||||
|
|
@ -126,45 +128,87 @@
|
|||
unset ($prep_statement, $sql, $row, $record);
|
||||
$numbers = array_diff($numbers, $destinations);
|
||||
|
||||
//alternate the row style
|
||||
$c = 0;
|
||||
$row_style["0"] = "row_style0";
|
||||
$row_style["1"] = "row_style1";
|
||||
//get contact (primary attachment) images and cache them
|
||||
if (is_array($numbers) && sizeof($numbers) != 0) {
|
||||
foreach ($numbers as $number) {
|
||||
$contact_uuids[] = $contact[$number]['contact_uuid'];
|
||||
}
|
||||
if (is_array($contact_uuids) && sizeof($contact_uuids) != 0) {
|
||||
$sql = "select contact_uuid as uuid, attachment_filename as filename, attachment_content as image from v_contact_attachments ";
|
||||
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
|
||||
$sql .= "and ( 0 = 1 ";
|
||||
foreach ($contact_uuids as $contact_uuid) {
|
||||
$sql .= "or contact_uuid = '".$contact_uuid."' ";
|
||||
}
|
||||
$sql .= ") ";
|
||||
$sql .= "and attachment_primary = 1 ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$contact_ems = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
|
||||
if (is_array($contact_ems) && sizeof($contact_ems) != 0) {
|
||||
foreach ($contact_ems as $contact_em) {
|
||||
$_SESSION['tmp']['messages']['contact_em'][$contact_em['uuid']]['filename'] = $contact_em['filename'];
|
||||
$_SESSION['tmp']['messages']['contact_em'][$contact_em['uuid']]['image'] = $contact_em['image'];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
unset($sql, $prep_statement, $contact_uuids, $contact_ems, $contact_em);
|
||||
}
|
||||
|
||||
//contacts list
|
||||
if (is_array($numbers) && sizeof($numbers) != 0) {
|
||||
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
foreach($numbers as $number) {
|
||||
if ($current_contact != '' && $number == $current_contact) {
|
||||
echo "<tr><td valign='top' class='".$row_style[$c]." contact_selected' style='cursor: default;'>\n";
|
||||
echo "<tr><td valign='top' class='row_style0 contact_selected' style='cursor: default;'>\n";
|
||||
$selected = true;
|
||||
}
|
||||
else {
|
||||
echo "<tr><td valign='top' class='".$row_style[$c]."' onclick=\"load_thread('".urlencode($number)."', '".$contact[$number]['contact_uuid']."');\">\n";
|
||||
echo "<tr><td valign='top' class='row_style1' onclick=\"load_thread('".urlencode($number)."', '".$contact[$number]['contact_uuid']."');\">\n";
|
||||
$selected = false;
|
||||
}
|
||||
if ($contact[$number]['contact_name_given'] != '' || $contact[$number]['contact_name_family'] != '') {
|
||||
echo "<i>".escape($contact[$number]['contact_name_given'].' '.$contact[$number]['contact_name_family']).'</i>';
|
||||
echo "<span style='float: right; font-size: 65%; line-height: 60%; margin-top: 5px; margin-left: 5px; margin-right: ".($selected ? '-4px' : '0').";'>".escape(format_phone($number)).'</span>';
|
||||
if ($selected) {
|
||||
$contact_name = escape($contact[$number]['contact_name_given'].' '.$contact[$number]['contact_name_family']);
|
||||
$contact_html = (permission_exists('contact_view') ? "<a href='".PROJECT_PATH."/app/contacts/contact_edit.php?id=".$contact[$number]['contact_uuid']."' target='_blank'>".$contact_name."</a>" : $contact_name)." : <a href='callto:".escape($number)."'>".escape(format_phone($number))."</a>";
|
||||
echo "<script>$('#contact_current_name').html(\"".$contact_html."\");</script>\n";
|
||||
//contact image
|
||||
if (is_array($_SESSION['tmp']['messages']['contact_em'][$contact[$number]['contact_uuid']]) && sizeof($_SESSION['tmp']['messages']['contact_em'][$contact[$number]['contact_uuid']]) != 0) {
|
||||
$attachment_type = strtolower(pathinfo($_SESSION['tmp']['messages']['contact_em'][$contact[$number]['contact_uuid']]['filename'], PATHINFO_EXTENSION));
|
||||
echo "<img id='src_message-bubble-image-em_".$contact[$number]['contact_uuid']."' style='display: none;' src='data:image/".$attachment_type.";base64,".$_SESSION['tmp']['messages']['contact_em'][$contact[$number]['contact_uuid']]['image']."'>\n";
|
||||
echo "<img id='contact_image_".$contact[$number]['contact_uuid']."' class='contact_list_image' src='data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'>\n";
|
||||
}
|
||||
}
|
||||
else {
|
||||
echo escape(format_phone($number));
|
||||
if ($selected) {
|
||||
echo "<script>$('#contact_current_name').html(\"<a href='callto:".escape($number)."'>".escape(format_phone($number))."</a>\");</script>\n";
|
||||
//contact name/number
|
||||
if ($contact[$number]['contact_name_given'] != '' || $contact[$number]['contact_name_family'] != '') {
|
||||
echo "<div style='float: right; margin-top: 8px; margin-right: ".($selected ? '-1' : '4')."px;' title=\"".$text['label-view_contact']."\"><a href='/app/contacts/contact_edit.php?id=".$contact[$number]['contact_uuid']."' target='_blank'><i class='glyphicon glyphicon-user'></i></a></div>\n";
|
||||
echo "<strong style='display: inline-block; margin: 8px 0 5px 0;'>".escape($contact[$number]['contact_name_given'].' '.$contact[$number]['contact_name_family']).'</strong><br>';
|
||||
echo "<span style='font-size: 80%; white-space: nowrap;'><a href='callto:".escape($number)."'><i class='glyphicon glyphicon-phone' style='margin-right: 5px;'></i>".escape(format_phone($number)).'</a></span><br>';
|
||||
if (valid_email($contact[$number]['contact_email'])) {
|
||||
echo "<span style='font-size: 80%; white-space: nowrap;'><a href='mailto:".escape($contact[$number]['contact_email'])."'><i class='glyphicon glyphicon-envelope' style='margin-right: 5px;'></i>".$text['label-send_email']."</a></span><br>";
|
||||
}
|
||||
if ($selected) {
|
||||
$contact_name = escape($contact[$number]['contact_name_given'].' '.$contact[$number]['contact_name_family']);
|
||||
$contact_html = (permission_exists('contact_view') ? "<a href='".PROJECT_PATH."/app/contacts/contact_edit.php?id=".$contact[$number]['contact_uuid']."' target='_blank'>".$contact_name."</a>" : $contact_name)." : <a href='callto:".escape($number)."'>".escape(format_phone($number))."</a>";
|
||||
echo "<script>$('#contact_current_name').html(\"".$contact_html."\");</script>\n";
|
||||
}
|
||||
}
|
||||
else {
|
||||
echo escape(format_phone($number));
|
||||
if ($selected) {
|
||||
echo "<script>$('#contact_current_name').html(\"<a href='callto:".escape($number)."'>".escape(format_phone($number))."</a>\");</script>\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
echo "</td></tr>\n";
|
||||
$c = $c == 0 ? 1 : 0;
|
||||
}
|
||||
echo "</table>\n";
|
||||
echo "<center>\n";
|
||||
echo " <span id='contacts_refresh_state'><img src='resources/images/refresh_active.gif' style='width: 16px; height: 16px; border: none; margin-top: 3px; cursor: pointer;' onclick=\"refresh_contacts_stop();\" alt=\"".$text['label-refresh_pause']."\" title=\"".$text['label-refresh_pause']."\"></span> ";
|
||||
echo "</center>\n";
|
||||
|
||||
echo "<script>\n";
|
||||
foreach ($numbers as $number) {
|
||||
if (is_array($_SESSION['tmp']['messages']['contact_em'][$contact[$number]['contact_uuid']]) && sizeof($_SESSION['tmp']['messages']['contact_em'][$contact[$number]['contact_uuid']]) != 0) {
|
||||
echo "$('img#contact_image_".$contact[$number]['contact_uuid']."').css('backgroundImage', 'url(' + $('img#src_message-bubble-image-em_".$contact[$number]['contact_uuid']."').attr('src') + ')');\n";
|
||||
}
|
||||
}
|
||||
echo "</script>\n";
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -46,19 +46,6 @@
|
|||
//set refresh flag
|
||||
$refresh = $_GET['refresh'] == 'true' ? true : false;
|
||||
|
||||
//get contact (primary attachment) image, if any
|
||||
if (is_uuid($contact_uuid) && (!is_array($_SESSION['tmp']['messages']['contact_em'][$contact_uuid]) || $_SESSION['tmp']['messages']['contact_em'][$contact_uuid] != $contact_uuid)) {
|
||||
$sql = "select attachment_filename as filename, attachment_content as image from v_contact_attachments ";
|
||||
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
|
||||
$sql .= "and contact_uuid = :contact_uuid ";
|
||||
$sql .= "and attachment_primary = 1 ";
|
||||
$bind[':contact_uuid'] = $contact_uuid;
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute(is_array($bind) ? $bind : null);
|
||||
$_SESSION['tmp']['messages']['contact_em'][$contact_uuid] = $prep_statement->fetch(PDO::FETCH_NAMED);
|
||||
unset ($sql, $bind, $prep_statement);
|
||||
}
|
||||
|
||||
//get messages
|
||||
if (isset($_SESSION['message']['display_last']['text']) && $_SESSION['message']['display_last']['text'] != '') {
|
||||
$array = explode(' ',$_SESSION['message']['display_last']['text']);
|
||||
|
|
@ -223,22 +210,24 @@
|
|||
|
||||
//message bubble
|
||||
echo "<span class='message-bubble message-bubble-".($message['message_direction'] == 'inbound' ? 'em' : 'me')."'>";
|
||||
//contact image
|
||||
if ($message['message_direction'] == 'inbound') { //em
|
||||
if (is_array($_SESSION['tmp']['messages']['contact_em'][$contact_uuid]) && sizeof($_SESSION['tmp']['messages']['contact_em'][$contact_uuid]) != 0) {
|
||||
$attachment_type = strtolower(pathinfo($_SESSION['tmp']['messages']['contact_em'][$contact_uuid]['filename'], PATHINFO_EXTENSION));
|
||||
echo "<div class='message-bubble-image-em'>\n";
|
||||
echo " <img class='message-bubble-image-em' src='data:image/".$attachment_type.";base64,".$_SESSION['tmp']['messages']['contact_em'][$contact_uuid]['image']."'><br />\n";
|
||||
echo "</div>\n";
|
||||
}
|
||||
//contact image em
|
||||
if (
|
||||
$message['message_direction'] == 'inbound' &&
|
||||
is_array($_SESSION['tmp']['messages']['contact_em'][$contact_uuid]) &&
|
||||
sizeof($_SESSION['tmp']['messages']['contact_em'][$contact_uuid]) != 0
|
||||
) {
|
||||
echo "<div class='message-bubble-image-em'>\n";
|
||||
echo " <img class='message-bubble-image-em'><br />\n";
|
||||
echo "</div>\n";
|
||||
}
|
||||
else { //me
|
||||
if (is_array($_SESSION['tmp']['messages']['contact_me']) && sizeof($_SESSION['tmp']['messages']['contact_me']) != 0) {
|
||||
$attachment_type = strtolower(pathinfo($_SESSION['tmp']['messages']['contact_me']['filename'], PATHINFO_EXTENSION));
|
||||
echo "<div class='message-bubble-image-me'>\n";
|
||||
echo " <img class='message-bubble-image-me' src='data:image/".$attachment_type.";base64,".$_SESSION['tmp']['messages']['contact_me']['image']."'><br />\n";
|
||||
echo "</div>\n";
|
||||
}
|
||||
//contact image me
|
||||
else if (
|
||||
is_array($_SESSION['tmp']['messages']['contact_me']) &&
|
||||
sizeof($_SESSION['tmp']['messages']['contact_me']) != 0
|
||||
) {
|
||||
echo "<div class='message-bubble-image-me'>\n";
|
||||
echo " <img class='message-bubble-image-me'><br />\n";
|
||||
echo "</div>\n";
|
||||
}
|
||||
echo "<div style='display: table;'>\n";
|
||||
//message
|
||||
|
|
@ -257,7 +246,7 @@
|
|||
echo "<a href='message_media.php?id=".$media['uuid']."&src=".$media_source."&action=download' class='message-media-link-".($message['message_direction'] == 'inbound' ? 'em' : 'me')."'>";
|
||||
}
|
||||
echo "<img src='resources/images/attachment.png' style='width: 16px; height: 16px; border: none; margin-right: 10px;'>";
|
||||
echo "<span style='font-size: 85%;'>".strtoupper($media['type']).' · '.strtoupper(byte_convert($media['size']))."</span>";
|
||||
echo "<span style='font-size: 85%; white-space: nowrap;'>".strtoupper($media['type']).' · '.strtoupper(byte_convert($media['size']))."</span>";
|
||||
echo "</a>\n";
|
||||
}
|
||||
}
|
||||
|
|
@ -271,8 +260,13 @@
|
|||
echo "<span id='thread_bottom'></span>\n";
|
||||
}
|
||||
|
||||
//set current contact
|
||||
echo "<script>$('#contact_current_number').val('".$number."');</script>\n";
|
||||
echo "<script>\n";
|
||||
//set current contact
|
||||
echo " $('#contact_current_number').val('".$number."');\n";
|
||||
//set bubble contact images from src images
|
||||
echo " $('img.message-bubble-image-em').attr('src', $('img#src_message-bubble-image-em_".$contact_uuid."').attr('src'));\n";
|
||||
echo " $('img.message-bubble-image-me').attr('src', $('img#src_message-bubble-image-me').attr('src'));\n";
|
||||
echo "</script>\n";
|
||||
|
||||
if (!$refresh) {
|
||||
echo "</div>\n";
|
||||
|
|
|
|||
Loading…
Reference in New Issue