- Модуль: bizproc
- Путь к файлу: ~/bitrix/modules/bizproc/lib/usertype/mailsender.php
- Класс: BitrixBizprocUserTypeMailSender
- Вызов: MailSender::getJs
static function getJs(array $mailboxes, string $controlId)
{
$mailboxesJs = MainWebJson::encode($mailboxes);
$controlIdJs = CUtil::JSEscape($controlId);
$textAuto = CUtil::JSEscape(Loc::getMessage('BP_FIELDTYPE_MAIL_SENDER_AUTO'));
$textAdd = CUtil::JSEscape(Loc::getMessage('BP_FIELDTYPE_MAIL_SENDER_ADD'));
return <<
BX.ready(function()
{
var mailboxSelectorValue = document.getElementById('{$controlIdJs}');
if (!mailboxSelectorValue)
{
return;
}
var mailboxes = {$mailboxesJs};
var setMailbox = function(value)
{
mailboxSelectorValue.value = value;
};
var getMenuItems = function()
{
var i, menuItems = [{
text: '{$textAuto}',
onclick: function(e, item)
{
this.popupWindow.close();
setMailbox('');
}
}];
for (i = 0; i < mailboxes.length; ++i)
{
var mailbox = mailboxes[i];
var mailboxName = mailbox['name'].length > 0
? mailbox['name'] + ' <' + mailbox['email'] + '>'
: mailbox['email'];
menuItems.push({
text: BX.util.htmlspecialchars(mailboxName),
value: mailboxName,
onclick: function(e, item)
{
this.popupWindow.close();
setMailbox(item.value);
}
});
}
if (window.BXMainMailConfirm)
{
if (menuItems.length > 0)
{
menuItems.push({delimiter: true});
}
menuItems.push({
text: '{$textAdd}',
onclick: function(e, item)
{
this.popupWindow.close();
window.BXMainMailConfirm.showForm(function(mailbox)
{
mailboxes.push(mailbox);
setMailbox(mailbox['name'].length > 0
? mailbox['name'] + ' <' + mailbox['email'] + '>'
: mailbox['email']);
});
}
});
}
return menuItems;
};
BX.bind(mailboxSelectorValue, 'click', function(e)
{
e.preventDefault();
var menuId = 'crm-sma-mailboxes' + Math.random();
BX.PopupMenu.show(
menuId,
this,
getMenuItems(),
{
autoHide: true,
offsetLeft: (BX.pos(this)['width'] / 2),
angle: { position: 'top', offset: 0 },
overlay: { backgroundColor: 'transparent' },
events:
{
onPopupClose: function()
{
this.destroy();
}
}
},
);
}
);
});
HTML;
}