• Модуль: 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;
}