%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/components/bitrix/mail.client.message.view/templates/.default/ |
| Current File : /home/bitrix/www/bitrix/components/bitrix/mail.client.message.view/templates/.default/__body.php |
<?php
use Bitrix\Main\Localization\Loc;
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
/** @var array $arParams */
/** @var array $arResult */
/** @global \CMain $APPLICATION */
/** @global \CUser $USER */
/** @var \CBitrixComponentTemplate $this */
/** @var string $templateName */
/** @var string $templateFile */
/** @var string $templateFolder */
/** @var string $componentPath */
/** @var \CMailClientMessageViewComponent $component */
$rcptList = array(
'users' => array(),
'emails' => $arResult['EMAILS'],
'mailContacts' => $arResult['LAST_RCPT'],
'crmemails' => $arResult['CRM_EMAILS'],
'companies' => array(),
'contacts' => array(),
'deals' => array(),
'leads' => array(),
);
$rcptLast = array(
'users' => array(),
'emails' => array(),
'mailContacts' => array_combine(array_keys($arResult['LAST_RCPT']), array_keys($arResult['LAST_RCPT'])),
'crmemails' => array(),
'companies' => array(),
'contacts' => array(),
'deals' => array(),
'leads' => array(),
);
$prepareReply = function($__field) use (&$message, &$rcptList, &$rcptLast)
{
$result = array();
foreach ($__field as $item)
{
if (!empty($item['email']))
{
if ($message['__email'] == $item['email'])
{
continue;
}
$id = 'U'.md5($item['email']);
$type = 'users';
$rcptList['emails'][$id] = $rcptList[$type][$id] = array(
'id' => $id,
'entityId' => count($rcptList['emails'])+1,
'name' => $item['name'] ?: $item['email'],
'desc' => $item['email'],
'email' => $item['email'],
'isEmail' => 'Y',
);
$rcptLast['emails'][$id] = $rcptLast[$type][$id] = $id;
$result[$id] = $type;
}
}
return $result;
};
$rcptAllSelected = $prepareReply(array_merge($message['__to'], $message['__reply_to']));
$rcptSelected = $prepareReply($message['__is_outcome'] ? $message['__to'] : $message['__reply_to']);
$rcptCcSelected = $prepareReply($message['__cc']);
$datetimeFormat = \Bitrix\Main\Loader::includeModule('intranet') ? \CIntranetUtils::getCurrentDatetimeFormat() : false;
$datetimeFormatted = \CComponentUtil::getDateTimeFormatted(
$message['FIELD_DATE']->getTimestamp()+\CTimeZone::getOffset(),
$datetimeFormat,
\CTimeZone::getOffset()
);
$readDatetimeFormatted = !empty($message['READ_CONFIRMED']) && $message['READ_CONFIRMED']
? \CComponentUtil::getDateTimeFormatted(
$message['READ_CONFIRMED']->getTimestamp()+\CTimeZone::getOffset(),
$datetimeFormat,
\CTimeZone::getOffset()
) : null;
$isCrmEnabled = ($arResult['CRM_ENABLE'] === 'Y');
?>
<div class="mail-msg-view-border-bottom">
<div class="mail-msg-view-header <? if ($arParams['LOADED_FROM_LOG'] == 'Y'): ?> mail-msg-view-header-clickable mail-msg-view-item-open<? endif ?>">
<span class="mail-msg-view-header-userpic">
<? global $APPLICATION;
$avatarParams = !empty($arResult['avatarParams'][$message['SENDER_EMAIL']]) ? $arResult['avatarParams'][$message['SENDER_EMAIL']] : [];
$avatarParams['avatarSize'] = 40;
$APPLICATION->IncludeComponent('bitrix:mail.contact.avatar', '', $avatarParams, $this->getComponent()); ?>
</span>
<span class="mail-msg-view-header-info">
<span class="mail-msg-view-sender-block">
<div class="mail-msg-view-sender">
<? $__from = reset($message['__from']); ?>
<a class="mail-msg-view-sender-name js-mailto-link"
href="mailto:<?= htmlspecialcharsbx($__from['email']); ?>"><?= htmlspecialcharsbx($__from['name'] ?: $__from['email']) ?></a>
<? if (!empty($__from['name']) && !empty($__from['email']) && $__from['name'] != $__from['email']): ?>
<a class="mail-msg-view-sender-email js-mailto-link"
href="mailto:<?= htmlspecialcharsbx($__from['email']); ?>"><?=htmlspecialcharsbx($__from['email']) ?></a>
<? endif ?>
</div>
<div class="mail-msg-view-date <? if ($arParams['LOADED_FROM_LOG'] == 'Y'): ?> mail-msg-view-arrow<? endif ?>">
<span>
<?=Loc::getMessage(
$message['__is_outcome'] ? 'MAIL_MESSAGE_SENT' : 'MAIL_MESSAGE_RECEIVED',
array('#DATETIME#' => $datetimeFormatted)
) ?><!--
--><? if ($message['__is_outcome'] && $message['OPTIONS']['trackable']): ?>,
<span class="read-confirmed-datetime">
<? if (!empty($readDatetimeFormatted)): ?>
<?=Loc::getMessage('MAIL_MESSAGE_READ_CONFIRMED', array('#DATETIME#' => $readDatetimeFormatted)) ?>
<? else: ?>
<?=Loc::getMessage('MAIL_MESSAGE_READ_AWAITING') ?>
<? endif ?>
</span>
<? endif ?>
</span>
</div>
</span>
<div class="mail-msg-view-rcpt-wrapper">
<?
$prepareRcpt = function($field) use (&$message, &$arResult)
{
$result = array();
foreach (explode(',', $field) as $item)
{
if (trim($item))
{
$address = new \Bitrix\Main\Mail\Address($item);
$avatarParams = $address->validate() && !empty($arResult['avatarParams'][trim($address->getEmail())]) ? $arResult['avatarParams'][trim($address->getEmail())] : ['avatarSize' => 23];
$result[] = array(
'URL' => $address->validate() ? sprintf('mailto:%s', $address->getEmail()) : null,
'TITLE' => $address->validate() ? $address->getEmail() : $item,
'AVATAR_PARAMS' => $avatarParams,
'HREF_TITLE' => $avatarParams['mailContact']['NAME'],
'IMAGE' => $address->getEmail() == $message['__email'] ? $arResult['USER_IMAGE'] : '',
);
}
}
return $result;
};
$rcpt = array(
Loc::getMessage('MAIL_MESSAGE_RCPT') => $prepareRcpt($message['FIELD_TO']),
Loc::getMessage('MAIL_MESSAGE_RCPT_CC') => $prepareRcpt($message['FIELD_CC']),
Loc::getMessage('MAIL_MESSAGE_RCPT_BCC') => $prepareRcpt($message['FIELD_BCC']),
);
?>
<? $k = 0; ?>
<? foreach ($rcpt as $type => $list): ?>
<? if (!empty($list)): ?>
<? $count = count($list); ?>
<? $limit = $count > ($k > 0 ? 2 : 4) ? ($k > 0 ? 1 : 3) : $count; ?>
<span style="display: inline-block; margin-right: 5px; ">
<span class="mail-msg-view-rcpt-list" <? if ($k > 0): ?> style="color: #000; "<? endif ?>><?=$type ?>:</span>
<? foreach ($list as $item): ?>
<? if ($limit == 0): ?>
<a class="mail-msg-view-rcpt-more mail-msg-fake-link" href="#">
<?=Loc::getMessage('MAIL_MESSAGE_RCPT_MORE', array('#NUM#' => $count)) ?>
</a>
<span class="mail-msg-view-rcpt-list-hidden">
<? endif ?>
<span class="mail-msg-view-rcpt-block">
<span class=""
<? global $APPLICATION;
$params = $item['AVATAR_PARAMS'];
// for using initials from DB, not from message field
if (isset($params['mailContact']))
{
unset($params['name'], $params['email']);
}
$APPLICATION->IncludeComponent('bitrix:mail.contact.avatar', '', $params, $this->getComponent()); ?>
</span>
<? if ($item['URL']): ?>
<a class="mail-msg-view-rcpt-link js-mailto-link"
href="<?=htmlspecialcharsbx($item['URL']) ?>"
title="<?= htmlspecialcharsbx($item['HREF_TITLE']); ?>"
target="_blank"><?=htmlspecialcharsbx($item['TITLE']) ?></a>
<? else: ?>
<span class="mail-msg-view-rcpt"><?=htmlspecialcharsbx($item['TITLE']) ?></span>
<? endif ?>
</span>
<? $count--; $limit--; ?>
<? endforeach ?>
<? if ($limit < -1): ?></span><? endif ?>
</span>
<? $k++; ?>
<? endif ?>
<? endforeach ?>
</div>
</span>
</div>
<div class="mail-msg-view-control-wrapper">
<div class="mail-msg-view-control-block">
<div class="mail-msg-view-control mail-msg-view-control-reply js-msg-view-control-reply"><?=Loc::getMessage('MAIL_MESSAGE_BTN_REPLY') ?></div>
<div class="mail-msg-view-control mail-msg-view-control-replyall js-msg-view-control-replyall"><?=Loc::getMessage('MAIL_MESSAGE_BTN_REPLY_All') ?></div>
<div class="mail-msg-view-control mail-msg-view-control-forward js-msg-view-control-forward"><?=Loc::getMessage('MAIL_MESSAGE_BTN_FWD') ?></div>
<? if ($message['__access_level'] == 'full'): ?>
<div class="mail-msg-view-control mail-msg-view-control-skip js-msg-view-control-skip"
<? if (!in_array('CRM_ACTIVITY', $message['BIND']) || !$isCrmEnabled): ?> style="display: none; "<? endif ?>><?=Loc::getMessage('MAIL_MESSAGE_BTN_SKIP') ?></div>
<? if (!$message['__is_outcome'] && !$message['isSpam']): ?>
<div class="mail-msg-view-control mail-msg-view-control-spam js-msg-view-control-spam"><?=Loc::getMessage('MAIL_MESSAGE_BTN_SPAM') ?></div>
<? endif ?>
<div class="mail-msg-view-control mail-msg-view-control-delete js-msg-view-control-delete"
<? if ($message['isTrash']): ?> data-is-trash="true" <? endif; ?>><?=Loc::getMessage('MAIL_MESSAGE_BTN_DEL') ?></div>
<? endif ?>
</div>
</div>
<div id="mail_msg_<?=$message['ID'] ?>_body" class="mail-msg-view-body"></div>
</div>
<? $attachedFiles = array(); ?>
<? if (!empty($message['__files'])): ?>
<div class="mail-msg-view-file-block mail-msg-view-border-bottom">
<div class="mail-msg-view-file-text"><?=getMessage('MAIL_MESSAGE_ATTACHES') ?>:</div>
<div class="mail-msg-view-file-inner">
<div id="mail_msg_<?=$message['ID'] ?>_files_images_list" class="mail-msg-view-file-inner">
<? foreach ($message['__files'] as $item): ?>
<? if (preg_match('/^n\d+$/i', $item['id'])) $attachedFiles[] = $item['id']; ?>
<? if (empty($item['preview'])) continue; ?>
<div class="mail-msg-view-file-item-image">
<span class="mail-msg-view-file-link-image">
<img class="mail-msg-view-file-item-img" src="<?=htmlspecialcharsbx($item['preview']) ?>"
data-bx-viewer="image" data-bx-src="<?=htmlspecialcharsbx($item['url']) ?>"
data-bx-full="<?=htmlspecialcharsbx($item['url']) ?>">
</span>
</div>
<? endforeach ?>
</div>
<div class="mail-msg-view-file-inner">
<? foreach ($message['__files'] as $item): ?>
<? if (!empty($item['preview'])) continue; ?>
<div class="mail-msg-view-file-item diskuf-files-entity">
<span class="feed-com-file-icon feed-file-icon-<?=htmlspecialcharsbx(\Bitrix\Main\IO\Path::getExtension($item['name'])) ?>"></span>
<a class="mail-msg-view-file-link" href="<?=htmlspecialcharsbx($item['url']) ?>" target="_blank"><?=htmlspecialcharsbx($item['name']) ?></a>
<div class="mail-msg-view-file-link-info"><?=htmlspecialcharsbx($item['size']) ?></div>
</div>
<? endforeach ?>
</div>
</div>
</div>
<? endif ?>
<div class="mail-msg-view-reply-panel mail-msg-view-border-bottom js-msg-view-reply-panel">
<div class="mail-msg-userpic" <? if (!empty($arResult['USER_IMAGE'])): ?> style="background: url('<?=htmlspecialcharsbx($arResult['USER_IMAGE']) ?>'); background-size: 23px 23px; "<? endif ?>></div>
<div class="mail-msg-view-reply-panel-text"><?=Loc::getMessage('MAIL_MESSAGE_REPLY_Q') ?></div>
</div>
<? $messageHtml = trim($message['BODY_HTML']) ? $message['BODY_HTML'] : preg_replace('/(\s*(\r\n|\n|\r))+/', '<br>', htmlspecialcharsbx($message['BODY'])); ?>
<?
$formId = sprintf('mail_msg_reply_%u_form', $message['ID']);
$actionUrl = '/bitrix/services/main/ajax.php?c=bitrix%3Amail.client&action=sendMessage&mode=ajax';
?>
<form action="<?= $actionUrl ?>" method="POST"
class="mail-msg-view-border-bottom" id="<?=htmlspecialcharsbx($formId) ?>" style="display: none; margin-top: 10px; ">
<?=bitrix_sessid_post() ?>
<input type="hidden" name="data[IN_REPLY_TO]" value="<?=htmlspecialcharsbx($message['MSG_ID']) ?>">
<input type="hidden" name="data[MAILBOX_ID]" value="<?=$message['MAILBOX_ID'] ?>">
<?
$inlineFiles = array();
$quote = preg_replace_callback(
'#(\?|&)__bxacid=(n?\d+)#i',
function ($matches) use (&$inlineFiles)
{
$inlineFiles[] = $matches[2];
return $matches[0];
},
$messageHtml
);
$quote = $messageHtml;
$attachedFiles = array_intersect($attachedFiles, $inlineFiles);
$selectorParams = array(
//'pathToAjax' => '/bitrix/components/bitrix/crm.activity.editor/ajax.php?soc_net_log_dest=search_email_comms';
'extranetUser' => false,
'isCrmFeed' => $isCrmEnabled,
'CrmTypes' => array('CRMCONTACT', 'CRMCOMPANY', 'CRMLEAD'),
'useClientDatabase' => true,
'allowAddUser' => true,
'allowAddCrmContact' => false,
'allowSearchEmailUsers' => true,
'allowSearchCrmEmailUsers' => $isCrmEnabled,
'allowUserSearch' => true,
'items' => $rcptList,
'itemsLast' => $rcptLast,
'emailDescMode' => true,
'searchOnlyWithEmail' => true,
);
$APPLICATION->includeComponent(
'bitrix:main.mail.form', '',
array(
'FORM_ID' => $formId,
'LAYOUT_ONLY' => true,
'SUBMIT_AJAX' => true,
'FOLD_QUOTE' => true,
'FOLD_FILES' => true,
'USE_SIGNATURES' => true,
'FIELDS' => array(
array(
'name' => 'data[from]',
'title' => Loc::getMessage('MAIL_MESSAGE_NEW_FROM'),
'type' => 'from',
'value' => $message['MAILBOX_EMAIL'],
'isFormatted' => true,
'required' => true,
'folded' => true,
),
//array(
// 'type' => 'separator',
//),
array(
'name' => 'data[to]',
'title' => Loc::getMessage('MAIL_MESSAGE_NEW_TO'),
'placeholder' => Loc::getMessage('MAIL_MESSAGE_NEW_ADD_RCPT'),
'type' => 'rcpt',
//'value' => $rcptSelected,
'selector' => array_merge(
$selectorParams,
array('itemsSelected' => $rcptSelected)
),
'required' => true,
),
array(
'name' => 'data[cc]',
'title' => Loc::getMessage('MAIL_MESSAGE_NEW_CC'),
'placeholder' => Loc::getMessage('MAIL_MESSAGE_NEW_ADD_RCPT'),
'type' => 'rcpt',
'folded' => empty($rcptCcSelected),
//'value' => $rcptCcSelected,
'selector' => array_merge(
$selectorParams,
array('itemsSelected' => $rcptCcSelected)
),
),
array(
'name' => 'data[bcc]',
'title' => Loc::getMessage('MAIL_MESSAGE_NEW_BCC'),
'placeholder' => Loc::getMessage('MAIL_MESSAGE_NEW_ADD_RCPT'),
'type' => 'rcpt',
'folded' => true,
'selector' => $selectorParams,
),
array(
'name' => 'data[subject]',
'title' => Loc::getMessage('MAIL_MESSAGE_NEW_SUBJECT'),
'placeholder' => Loc::getMessage('MAIL_MESSAGE_NEW_SUBJECT_PH'),
'value' => preg_replace(
sprintf('/^(%s:\s*)?/i', preg_quote('Re')),
sprintf('%s: ', 'Re'),
$message['SUBJECT']
),
'folded' => true,
),
array(
'name' => 'data[message]',
'type' => 'editor',
'value' => sprintf(
'<br><br>%s, %s:<br><blockquote style="margin: 0 0 0 5px; padding: 5px 5px 5px 8px; border-left: 4px solid #e2e3e5; ">%s</blockquote>',
formatDate(
preg_replace('/[\/.,\s:][s]/', '', $GLOBALS['DB']->dateFormatToPhp(FORMAT_DATETIME)),
$message['FIELD_DATE']->getTimestamp()+\CTimeZone::getOffset(),
time()+\CTimeZone::getOffset()
),
htmlspecialcharsbx($__from['name'] ?: $__from['email']),
$quote
),
'height' => 100,
),
array(
'name' => 'data[__diskfiles]',
'type' => 'files',
'value' => $attachedFiles,
),
),
'BUTTONS' => array(
'submit' => array(
'class' => 'ui-btn-primary',
'title' => Loc::getMessage('MAIL_MESSAGE_NEW_SEND'),
),
'cancel' => array(
'title' => Loc::getMessage('MAIL_MESSAGE_NEW_CANCEL'),
),
),
)
);
?>
</form>
<script type="text/javascript">
var mailto = function ()
{
top.BX.SidePanel.Instance.open(
'<?=\CUtil::jsEscape($arParams['PATH_TO_MAIL_MSG_NEW']) ?>',
{
width: 960,
cacheable: false,
requestMethod: 'post',
requestParams: {
email: this.email
}
}
);
BX.PreventDefault(event);
};
var emailLinks = BX.findChildrenByClassName(BX('mail-msg-view-details-<?=intval($message['ID']) ?>'), 'js-mailto-link', true);
for (var i in emailLinks)
{
if (!emailLinks.hasOwnProperty(i))
continue;
if (emailLinks[i].href)
{
var matches = emailLinks[i].href.match(/^mailto:(.+)/);
if (matches && matches[1])
{
BX.bind(emailLinks[i], 'click', mailto.bind({email: matches[1]}));
}
}
}
document.getElementById('mail_msg_<?=$message['ID'] ?>_body').innerHTML = '<?=CUtil::jsEscape($messageHtml) ?>';
try
{
top.BX.SidePanel.Instance.getSliderByWindow(window).closeLoader();
}
catch (err) {}
BX.ready(function()
{
new BXMailMessage({
messageId: <?=intval($message['ID']) ?>,
formId: '<?=\CUtil::jsEscape($formId) ?>',
rcptSelected: <?=\Bitrix\Main\Web\Json::encode($rcptSelected) ?>,
rcptAllSelected: <?=\Bitrix\Main\Web\Json::encode($rcptAllSelected) ?>,
rcptCcSelected: <?=\Bitrix\Main\Web\Json::encode($rcptCcSelected) ?>
});
});
</script>