%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/bitrix/www/bitrix/components/bitrix/mail.client.message.list/templates/.default/
Upload File :
Create Path :
Current File : /home/bitrix/www/bitrix/components/bitrix/mail.client.message.list/templates/.default/template.php

<?php

use Bitrix\Main;
use Bitrix\Main\Localization\Loc;

if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();

Main\UI\Extension::load('ui.buttons');
Main\UI\Extension::load('ui.buttons.icons');

Main\Page\Asset::getInstance()->addJS('/bitrix/components/bitrix/mail.client.message.list/templates/.default/user-interface-manager.js');

$bodyClass = $APPLICATION->getPageProperty('BodyClass', false);
$APPLICATION->setPageProperty('BodyClass', trim(sprintf('%s %s', $bodyClass, 'pagetitle-toolbar-field-view pagetitle-mail-view')));
$filterOptions = [
	'FILTER_ID' => $arResult['FILTER_ID'],
	'GRID_ID' => $arResult['GRID_ID'],
	'ENABLE_LABEL' => true,
	'FILTER' => $arResult['FILTER'],
	'FILTER_PRESETS' => $arResult['FILTER_PRESETS'],
	'RESET_TO_DEFAULT_MODE' => true,
	'VALUE_REQUIRED' => true,
];
$unseenCount = 0;
$mailboxMenu = array();
foreach ($arResult['MAILBOXES'] as $mailboxId => $item)
{
	$unseenCount += $item['__unseen'];

	$mailboxMenu[] = array(
		'text' => sprintf(
			'<span class="main-buttons-item-text">%s</span> %s',
			htmlspecialcharsbx($item['NAME']),
			sprintf('<span class="main-buttons-item-counter %s">%u</span>',
				$item['__unseen'] > 0 ? 'js-unseen-mailbox' : 'main-ui-hide',
				$item['__unseen']
			)
		),
		'dataset' => ['mailboxId' => $mailboxId, 'unseen' => $item['__unseen']],
		'className' => $item['ID'] == $arResult['MAILBOX']['ID'] ? 'menu-popup-item-take' : 'dummy',
		'href' => \CComponentEngine::makePathFromTemplate(
			$arParams['PATH_TO_MAIL_MSG_LIST'],
			array('id' => $item['ID'])
		),
	);
}

$addMailboxMenuItem = array(
	'text' => Loc::getMessage('MAIL_CLIENT_MAILBOX_ADD'),
	'className' => 'dummy',
	'href' => \CComponentEngine::makePathFromTemplate(
		$arParams['PATH_TO_MAIL_CONFIG'],
		array('act' => '')
	),
);

$userMailboxesLimit = $arResult['MAX_ALLOWED_CONNECTED_MAILBOXES'];
if ($userMailboxesLimit >= 0 && $arResult['USER_OWNED_MAILBOXES_COUNT'] >= $userMailboxesLimit)
{
	if (\CModule::includeModule('bitrix24'))
	{
		\CBitrix24::initLicenseInfoPopupJS();

		$licenseConnectedMailboxesInfo = Loc::getMessage('MAIL_MAILBOX_LICENSE_CONNECTED_MAILBOXES_LIMIT_BODY', array('#LIMIT#' => $userMailboxesLimit));
		$addMailboxMenuItem = array(
			'text' => '<div onclick="' . "BX.Mail.Client.Message.List['" . CUtil::JSEscape($component->getComponentId()) . "'].showLicensePopup('connectedMailboxes')\">" .
				'<span class="mail-connect-lock-text">' . Loc::getMessage('MAIL_CLIENT_MAILBOX_ADD') . '</span>' .
				'<span class="mail-connect-lock-icon"></span>' .
			'</div>',
			'className' => 'dummy',
		);
	}
}

$mailboxMenu[] = array(
	'delimiter' => true,
);
$mailboxMenu[] = $addMailboxMenuItem;

$configPath = \CHTTP::urlAddParams(
	\CComponentEngine::makePathFromTemplate(
		$arParams['PATH_TO_MAIL_CONFIG'],
		array('act' => 'edit')
	),
	array('id' => $arResult['MAILBOX']['ID'])
);
$createPath = \CHTTP::urlAddParams(
	$arParams['PATH_TO_MAIL_MSG_NEW'],
	array('id' => $arResult['MAILBOX']['ID'])
);
$blacklistPath = \CHTTP::urlAddParams(
	$arParams['PATH_TO_MAIL_BLACKLIST'],
	array('IFRAME' => 'Y')
);
$signaturePath = new Main\Web\Uri($arParams['PATH_TO_MAIL_SIGNATURES']);
$signaturePath->addParams(['IFRAME' => 'Y']);
$settingsMenu = [
	[
		'text' => Loc::getMessage('MAIL_MESSAGE_LIST_SETTINGS_LINK'),
		'className' => '',
		'href' => htmlspecialcharsbx($configPath),
		'disabled' => $USER->getId() != $arResult['MAILBOX']['USER_ID'] && !$USER->isAdmin() && !$USER->canDoOperation('bitrix24_config'),
	],
	[
		'text' => Loc::getMessage('MAIL_MESSAGE_LIST_SIGNATURE_LINK'),
		'href' => htmlspecialcharsbx($signaturePath->getLocator()),
	],
	[
		'text' => Loc::getMessage('MAIL_MESSAGE_LIST_BLACKLIST_LINK'),
		'className' => '',
		'href' => htmlspecialcharsbx($blacklistPath),
	],
];
$this->setViewTarget('mail-msg-counter');

?>
<? $isVisibleCounters = ($arResult['UNBIND'] > 0 || $arResult['UNSEEN'] > 0); ?>

<div class="mail-msg-counter-title">
	<span class="mail-msg-counter-name"><?=Loc::getMessage('MAIL_MESSAGE_LIST_COUNTERS_TITLE') ?>:</span>
	<span class="mail-msg-counter-container <?= $arResult['UNBIND'] == 0 ? 'main-ui-hide' : ''; ?>"
		data-role="unbindCounter"
		onclick="BX.Mail.Client.Message.List['<?=CUtil::JSEscape($component->getComponentId())?>'].onUnbindCounterClick()">
		<span class="mail-msg-counter-inner" id="mail_msg_unbind_counter">
			<span class="mail-msg-counter-number" data-role="unbind-counter-number"><?=intval($arResult['UNBIND']) ?></span>
			<span class="mail-msg-counter-text"><?=Loc::getMessage('MAIL_MESSAGE_LIST_COUNTERS_UNBIND') ?></span>
		</span>
	</span>

	<span class="mail-msg-counter-container <?= $arResult['UNSEEN'] == 0 ? 'main-ui-hide' : ''; ?>"
		data-role="unreadCounter"
		onclick="BX.Mail.Client.Message.List['<?=CUtil::JSEscape($component->getComponentId())?>'].onUnreadCounterClick()">
		<span class="mail-msg-counter-inner" id="mail_msg_unseen_counter">
			<span class="mail-msg-counter-number" data-role="unread-counter-number" style="color: #ad9050; "><?=intval($arResult['UNSEEN']) ?></span>
			<span class="mail-msg-counter-text"><?=Loc::getMessage('MAIL_MESSAGE_LIST_COUNTERS_UNSEEN') ?></span>
		</span>
	</span>

	<span class="mail-msg-counter-empty <?=($isVisibleCounters ? 'main-ui-hide' : '') ?>" data-role="emptyCountersTitle">
		<?=Loc::getMessage('MAIL_MESSAGE_LIST_COUNTERS_EMPTY') ?>
	</span>
</div>

<?

$this->endViewTarget();

if (SITE_TEMPLATE_ID == 'bitrix24')
{
	$this->setViewTarget('inside_pagetitle'); ?>

	<div class="pagetitle-container mail-pagetitle-flexible-space">
		<? $APPLICATION->includeComponent(
			'bitrix:main.ui.filter', '',
			$filterOptions
		); ?>
		<a class="ui-btn ui-btn-themes ui-btn-light-border ui-btn-dropdown"
			data-role="mailbox-current-title"
			data-mailbox-id="<?=intval($arResult['MAILBOX']['ID']) ?>">
			<span style="display: inline-block; width: 100%; overflow: hidden; text-overflow: ellipsis; ">
				<?=($arResult['MAILBOX']['NAME']) ?>
				<i class="ui-btn-counter <?= $unseenCount > 0 ? '' : 'main-ui-hide'; ?>"
					data-role="unseen-total"><?=intval($unseenCount) ?></i>
			</span>
		</a>
	</div>

	<button class="ui-btn" type="button" style="display: none; "></button>
	<button class="ui-btn ui-btn-themes ui-btn-light-border ui-btn-icon-business" type="button" id="mail-msg-sync-button"
		style="min-width: 39px; min-width: var(--ui-btn-size-height); "
		onclick="BXMailMailbox.sync(this, BX('mail-msg-sync-stepper'), '<?= CUtil::jsEscape($arResult['GRID_ID']) ?>'); "></button>
	<div class="ui-btn ui-btn-themes ui-btn-light-border ui-btn-icon-setting"
		style="min-width: 39px; min-width: var(--ui-btn-size-height); "
		data-role="mail-list-settings-menu-popup-toggle"></div>
	<a class="ui-btn ui-btn-primary" href="<?=htmlspecialcharsbx($createPath) ?>"
		style="margin-right: 20px; overflow: hidden; text-overflow: ellipsis; ">
		<?=Loc::getMessage('MAIL_MESSAGE_NEW_BTN') ?>
	</a>

	<? $this->endViewTarget();

	$this->setViewTarget('below_pagetitle'); ?>

	<div class="mail-msg-counter" id="mail-msg-counter-title">
		<?=$APPLICATION->getViewContent('mail-msg-counter') ?>
	</div>

	<? if (!empty($arResult['MAILBOX']['LINK'])): ?>
		<div style="float: right; margin-right: 20px; ">
			<a class="ui-btn ui-btn-themes ui-btn-xs ui-btn-light-border ui-btn-round" style="text-transform: none; "
				href="<?=htmlspecialcharsbx($arResult['MAILBOX']['LINK']) ?>" target="_blank"><?=Loc::getMessage('MAIL_MESSAGE_LIST_LINK') ?></a>
		</div>
	<? endif ?>

	<? $this->endViewTarget();
}
else
{
	?>

	<div style="display: flex; margin: 0 10px; ">
		<? $APPLICATION->includeComponent(
			'bitrix:main.ui.filter', '',
			$filterOptions
		); ?>
	</div>
	<div style="display: flex; margin: 0 10px; ">
		<a class="ui-btn ui-btn-light-border ui-btn-dropdown"
			data-role="mailbox-name-title"
			data-mailbox-id="<?= intval($arResult['MAILBOX']['ID']); ?>"
			onclick="BX.PopupMenu.show('mail-msg-list-mailbox-menu', this, <?=htmlspecialcharsbx(Main\Web\Json::encode($mailboxMenu)) ?>);">
			<?=($arResult['MAILBOX']['NAME']) ?>
			<? if ($unseenCount > 0): ?>
				<i class="ui-btn-counter"><?=intval($unseenCount) ?></i>
			<? endif ?>
		</a>
		<button class="ui-btn" type="button" style="display: none; "></button>
		<button class="ui-btn ui-btn-light-border ui-btn-icon-business" type="button" id="mail-msg-sync-button"
			onclick="BXMailMailbox.sync(this, BX('mail-msg-sync-stepper'), '<?= CUtil::jsEscape($arResult['GRID_ID']) ?>'); "></button>
		<a class="ui-btn ui-btn-light-border ui-btn-icon-setting" href="<?=htmlspecialcharsbx($configPath) ?>"></a>
		<a class="ui-btn ui-btn-primary" href="<?=htmlspecialcharsbx($createPath) ?>" style="margin-right: 20px; ">
			<?=Loc::getMessage('MAIL_MESSAGE_NEW_BTN') ?>
		</a>
	</div>

	<?
}

$this->setViewTarget('mail-msg-counter-script');

?>

<script type="text/javascript">

BX('mail-msg-counter-title').innerHTML = '<?=\CUtil::jsEscape($APPLICATION->getViewContent('mail-msg-counter')) ?>';

</script>

<?

$this->endViewTarget();

addEventHandler('main', 'onAfterAjaxResponse', function ()
{
	global $APPLICATION;
	return $APPLICATION->getViewContent('mail-msg-counter-script');
});


if (Main\Loader::includeModule('pull'))
{
	global $USER;
	\CPullWatch::add($USER->getId(), 'mail_mailbox_' . $arResult['MAILBOX']['ID']);
}

$showStepper = 0 == $arResult['MAILBOX']['SYNC_LOCK'];
if ($arResult['MAILBOX']['SYNC_LOCK'] > 0)
{
	$showStepper = time() - $arResult['MAILBOX']['SYNC_LOCK'] > 20;
}

\CJsCore::init(array('update_stepper'));

?>

<div class="mail-msg-list-stepper-wrapper">

	<div id="mail-msg-sync-stepper" class="main-stepper main-stepper-show"
		<? if (!$showStepper): ?> style=" display: none; "<? endif ?>>
		<div class="main-stepper-info"><?=Loc::getMessage('MAIL_CLIENT_MAILBOX_SYNC_BAR') ?></div>
		<div class="main-stepper-inner">
			<div class="main-stepper-bar">
				<div class="main-stepper-bar-line" style="width: 0%;"></div>
			</div>
			<div class="main-stepper-steps"></div>
		</div>
	</div>

	<?=Main\Update\Stepper::getHtml(
		array(
			'mail' => array(
				'Bitrix\Mail\Helper\MessageIndexStepper',
				'Bitrix\Mail\Helper\ContactsStepper',
				'Bitrix\Mail\Helper\MessageClosureStepper',
			),
		),
		Loc::getMessage('MAIL_CLIENT_MAILBOX_INDEX_BAR')
	) ?>

</div>

<?

$snippet = new Main\Grid\Panel\Snippet();

$actionPanelActionButtons = [
	[
		'TYPE' => \Bitrix\Main\Grid\Panel\Types::BUTTON,
		'ID' => $arResult['gridActionsData']['read']['id'],
		'ICON' => $arResult['gridActionsData']['read']['icon'],
		'TEXT' => '<span data-role="read-action">' . $arResult['gridActionsData']['read']['text'] . '</span>',
		'ONCHANGE' => [
			[
				'ACTION' => \Bitrix\Main\Grid\Panel\Actions::CALLBACK,
				'DATA' => [
					[
						'JS' => "BX.Mail.Client.Message.List['" . CUtil::JSEscape($component->getComponentId()) . "'].onReadClick()",
					],
				],
			],
		],
	],
	[
		'TYPE' => \Bitrix\Main\Grid\Panel\Types::BUTTON,
		'ID' => $arResult['gridActionsData']['notRead']['id'],
		'ICON' => $arResult['gridActionsData']['notRead']['icon'],
		'TEXT' => '<span data-role="not-read-action">' . $arResult['gridActionsData']['notRead']['text'] . '</span>',
		'ONCHANGE' => [
			[
				'ACTION' => \Bitrix\Main\Grid\Panel\Actions::CALLBACK,
				'DATA' => [
					[
						'JS' => "BX.Mail.Client.Message.List['" . CUtil::JSEscape($component->getComponentId()) . "'].onReadClick()",
					],
				],
			],
		],
	],
	[
		'TYPE' => Main\Grid\Panel\Types::BUTTON,
		'ID' => $arResult['gridActionsData']['delete']['id'],
		'ICON' => $arResult['gridActionsData']['delete']['icon'],
		'TEXT' => $arResult['gridActionsData']['delete']['text'],
		'ONCHANGE' => [
			[
				'ACTION' => Main\Grid\Panel\Actions::CALLBACK,
				'CONFIRM' => true,
				'CONFIRM_APPLY_BUTTON' => 'CONFIRM_APPLY_BUTTON',
				'DATA' => [
					[
						'JS' => "BX.Mail.Client.Message.List['" . CUtil::JSEscape($component->getComponentId()) . "'].onDeleteClick()",
					],
				],
			],
		],
	],
	[
		'TYPE' => Main\Grid\Panel\Types::BUTTON,
		'ID' => $arResult['gridActionsData']['spam']['id'],
		'ICON' => $arResult['gridActionsData']['spam']['icon'],
		'TEXT' => '<span data-role="spam-action">' . $arResult['gridActionsData']['spam']['text'] . '</span>',
		'ONCHANGE' => [
			[
				'ACTION' => Main\Grid\Panel\Actions::CALLBACK,
				'DATA' => [
					[
						'JS' => "BX.Mail.Client.Message.List['" . CUtil::JSEscape($component->getComponentId()) . "'].onSpamClick()",
					],
				],
			],
		],
	],
	[
		'TYPE' => Main\Grid\Panel\Types::BUTTON,
		'ICON' => $arResult['gridActionsData']['notSpam']['icon'],
		'ID' => $arResult['gridActionsData']['notSpam']['id'],
		'TEXT' => '<span data-role="not-spam-action">' . $arResult['gridActionsData']['notSpam']['text'] . '</span>',
		'ONCHANGE' => [
			[
				'ACTION' => Main\Grid\Panel\Actions::CALLBACK,
				'DATA' => [
					[
						'JS' => "BX.Mail.Client.Message.List['" . CUtil::JSEscape($component->getComponentId()) . "'].onSpamClick()",
					],
				],
			],
		],
	],
	[
		'TYPE' => Main\Grid\Panel\Types::DROPDOWN,
		'ID' => $arResult['gridActionsData']['move']['id'],
		'ICON' => $arResult['gridActionsData']['move']['icon'],
		'TEXT' => $arResult['gridActionsData']['move']['text'],
		'ITEMS' => $arResult['foldersItems'],
	],
	[
		'TYPE' => Main\Grid\Panel\Types::BUTTON,
		'ID' => $arResult['gridActionsData']['task']['id'],
		'ICON' => $arResult['gridActionsData']['task']['icon'],
		'TEXT' => $arResult['gridActionsData']['task']['text'],
		'DISABLED' => true,
		'ONCHANGE' => [
			[
				'ACTION' => \Bitrix\Main\Grid\Panel\Actions::CALLBACK,
				'DATA' => [
					[
						'JS' => "BX.Mail.Client.Message.List['" . CUtil::JSEscape($component->getComponentId()) . "'].onDisabledGroupActionClick()",
					],
				],
			],
		],
	]
];
if ($arResult['userHasCrmActivityPermission'])
{
	$actionPanelActionButtons = array_merge($actionPanelActionButtons, [
		[
			'TYPE' => Main\Grid\Panel\Types::BUTTON,
			'ID' => $arResult['gridActionsData']['addToCrm']['id'],
			'ICON' => $arResult['gridActionsData']['addToCrm']['icon'],
			'TEXT' => '<span data-role="crm-action">' . $arResult['gridActionsData']['addToCrm']['text'] . '</span>',
			'DISABLED' => true,
			'ONCHANGE' => [
				[
					'ACTION' => \Bitrix\Main\Grid\Panel\Actions::CALLBACK,
					'DATA' => [
						[
							'JS' => "BX.Mail.Client.Message.List['" . CUtil::JSEscape($component->getComponentId()) . "'].onDisabledGroupActionClick()",
						],
					],
				],
			],
		],
		[
			'TYPE' => Main\Grid\Panel\Types::BUTTON,
			'ICON' => $arResult['gridActionsData']['excludeFromCrm']['icon'],
			'ID' => $arResult['gridActionsData']['excludeFromCrm']['id'],
			'TEXT' => '<span data-role="not-crm-action">' . $arResult['gridActionsData']['excludeFromCrm']['text'] . '</span>',
			'DISABLED' => true,
			'ONCHANGE' => [
				[
					'ACTION' => \Bitrix\Main\Grid\Panel\Actions::CALLBACK,
					'DATA' => [
						[
							'JS' => "BX.Mail.Client.Message.List['" . CUtil::JSEscape($component->getComponentId()) . "'].onDisabledGroupActionClick()",
						],
					],
				],
			],
		],
	]);
}
$actionPanelActionButtons = array_merge($actionPanelActionButtons, [
	[
		'TYPE' => Main\Grid\Panel\Types::BUTTON,
		'ICON' => $arResult['gridActionsData']['liveFeed']['icon'],
		'ID' => $arResult['gridActionsData']['liveFeed']['id'],
		'TEXT' => $arResult['gridActionsData']['liveFeed']['text'],
		'DISABLED' => true,
		'ONCHANGE' => [
			[
				'ACTION' => \Bitrix\Main\Grid\Panel\Actions::CALLBACK,
				'DATA' => [
					[
						'JS' => "BX.Mail.Client.Message.List['" . CUtil::JSEscape($component->getComponentId()) . "'].onDisabledGroupActionClick()",
					],
				],
			],
		],
	],
	[
		'TYPE' => Main\Grid\Panel\Types::BUTTON,
		'ID' => $arResult['gridActionsData']['discuss']['id'],
		'ICON' => $arResult['gridActionsData']['discuss']['icon'],
		'TEXT' => $arResult['gridActionsData']['discuss']['text'],
		'DISABLED' => true,
		'ONCHANGE' => [
			[
				'ACTION' => \Bitrix\Main\Grid\Panel\Actions::CALLBACK,
				'DATA' => [
					[
						'JS' => "BX.Mail.Client.Message.List['" . CUtil::JSEscape($component->getComponentId()) . "'].onDisabledGroupActionClick()",
					],
				],
			],
		],
	],
	[
		'TYPE' => Main\Grid\Panel\Types::BUTTON,
		'ICON' => $arResult['gridActionsData']['event']['icon'],
		'ID' => $arResult['gridActionsData']['event']['id'],
		'TEXT' => $arResult['gridActionsData']['event']['text'],
		'DISABLED' => true,
		'ONCHANGE' => [
			[
				'ACTION' => \Bitrix\Main\Grid\Panel\Actions::CALLBACK,
				'DATA' => [
					[
						'JS' => "BX.Mail.Client.Message.List['" . CUtil::JSEscape($component->getComponentId()) . "'].onDisabledGroupActionClick()",
					],
				],
			],
		],
	],
]);

?>

<div class="mail-msg-list-grid">

<?

$APPLICATION->includeComponent(
	'bitrix:main.ui.grid', '',
	array(
		'GRID_ID' => $arResult['GRID_ID'],
		'MESSAGES' => $arResult['MESSAGES'],
		'AJAX_MODE' => 'Y',
		'AJAX_OPTION_HISTORY' => 'N',
		'AJAX_OPTION_JUMP' => 'N',
		'AJAX_OPTION_STYLE' => 'N',
		'TOP_ACTION_PANEL_RENDER_TO' => '.main-grid-header',
		'SHOW_ACTION_PANEL' => false,
		'TOP_ACTION_PANEL_PINNED_MODE' => true,
		'HEADERS' => array(
			array('id' => 'ID', 'name' => 'ID', 'default' => false, 'editable' => false),
			array('id' => 'FROM', 'name' => Loc::getMessage('MAIL_MESSAGE_LIST_COLUMN_FROM'), 'default' => true, 'editable' => false),
			array('id' => 'SUBJECT', 'name' => Loc::getMessage('MAIL_MESSAGE_LIST_COLUMN_SUBJECT'), 'default' => true, 'editable' => false),
			array('id' => 'DATE', 'name' => Loc::getMessage('MAIL_MESSAGE_LIST_COLUMN_DATE'), 'default' => true, 'editable' => false),
			array('id' => 'BIND', 'name' => Loc::getMessage('MAIL_MESSAGE_LIST_COLUMN_BIND'), 'default' => true, 'editable' => false),
		),

		'ROWS' => $arResult['ROWS'],

		'SHOW_GRID_SETTINGS_MENU' => false,
		'ALLOW_COLUMNS_SORT' => false,
		'ALLOW_ROWS_SORT' => false,
		'SHOW_NAVIGATION_PANEL' => false,

		'SHOW_MORE_BUTTON' => true,
		'ENABLE_NEXT_PAGE' => !empty($arResult['ENABLE_NEXT_PAGE']),
		'NAV_PARAM_NAME' => $arResult['NAV_OBJECT']->getId(),
		'CURRENT_PAGE' => $arResult['NAV_OBJECT']->getCurrentPage(),
		'ACTION_PANEL' => array(
			'GROUPS' => array(
				array('ITEMS' => $actionPanelActionButtons),
			),
		),

		'SHOW_CHECK_ALL_CHECKBOXES' => true,
	)
);

?>

</div>

<script type="text/javascript">
	BX.ready(function()
	{
		new BX.Mail.Client.Message.List({
			id: '<?= CUtil::JSEscape($component->getComponentId())?>',
			gridId: '<?= CUtil::JSEscape($arResult['GRID_ID'])?>',
			mailboxId: <?= intval($arResult['MAILBOX']['ID']) ?>,
			taskViewUrlTemplate: '<?= CUtil::JSEscape($arResult['taskViewUrlTemplate']) ?>',
			taskViewUrlIdForReplacement: '<?= CUtil::JSEscape($arResult['taskViewUrlIdForReplacement']) ?>',
			mailboxMenu: <?= Main\Web\Json::encode($mailboxMenu) ?>,
			settingsMenu: <?= Main\Web\Json::encode($settingsMenu) ?>,
			canDelete: <?= CUtil::PhpToJSObject((bool)$arResult['trashDir']); ?>,
			canMarkSpam: <?= CUtil::PhpToJSObject((bool)$arResult['spamDir']); ?>,
			userHasCrmActivityPermission: <?= \CUtil::PhpToJSObject($arResult['userHasCrmActivityPermission'])?>,
			outcomeDir: '<?= CUtil::JSEscape($arResult['outcomeDir']) ?>',
			spamDir: '<?= CUtil::JSEscape($arResult['spamDir']) ?>',
			trashDir: '<?= CUtil::JSEscape($arResult['trashDir']) ?>',
			connectedMailboxesLicenseInfo: '<?= CUtil::JSEscape($licenseConnectedMailboxesInfo) ?>',
			ENTITY_TYPE_NO_BIND: '<?= CUtil::JSEscape(\Bitrix\Mail\Internals\MessageAccessTable::ENTITY_TYPE_NO_BIND) ?>',
			ENTITY_TYPE_CRM_ACTIVITY: '<?= CUtil::JSEscape(\Bitrix\Mail\Internals\MessageAccessTable::ENTITY_TYPE_CRM_ACTIVITY) ?>',
			ENTITY_TYPE_TASKS_TASK: '<?= CUtil::JSEscape(\Bitrix\Mail\Internals\MessageAccessTable::ENTITY_TYPE_TASKS_TASK) ?>',
			ERROR_CODE_CAN_NOT_MARK_SPAM: 'MAIL_CLIENT_SPAM_FOLDER_NOT_SELECTED_ERROR',
			ERROR_CODE_CAN_NOT_DELETE: 'MAIL_CLIENT_TRASH_FOLDER_NOT_SELECTED_ERROR'
		});
		BX.message({
			MAIL_MESSAGE_LIST_COLUMN_BIND_TASKS_TASK: '<?=\CUtil::jsEscape(Loc::getMessage('MAIL_MESSAGE_LIST_COLUMN_BIND_TASKS_TASK')) ?>',
			MAIL_MESSAGE_LIST_COLUMN_BIND_CRM_ACTIVITY: '<?=\CUtil::jsEscape(Loc::getMessage('MAIL_MESSAGE_LIST_COLUMN_BIND_CRM_ACTIVITY')) ?>',
			MAIL_CLIENT_AJAX_ERROR: '<?=\CUtil::jsEscape(Loc::getMessage('MAIL_CLIENT_AJAX_ERROR')) ?>',
			MAIL_MESSAGE_LIST_BTN_SEEN: '<?=\CUtil::jsEscape(Loc::getMessage('MAIL_MESSAGE_LIST_BTN_SEEN')) ?>',
			MAIL_MESSAGE_LIST_BTN_UNSEEN: '<?=\CUtil::jsEscape(Loc::getMessage('MAIL_MESSAGE_LIST_BTN_UNSEEN')) ?>',
			MAIL_MESSAGE_LIST_BTN_DELETE: '<?=\CUtil::jsEscape(Loc::getMessage('MAIL_MESSAGE_LIST_BTN_DELETE')) ?>',
			MAIL_MESSAGE_LIST_BTN_NOT_SPAM: '<?=\CUtil::jsEscape(Loc::getMessage('MAIL_MESSAGE_LIST_BTN_NOT_SPAM')) ?>',
			MAIL_MESSAGE_LIST_BTN_SPAM: '<?=\CUtil::jsEscape(Loc::getMessage('MAIL_MESSAGE_LIST_BTN_SPAM')) ?>',
			MAIL_MESSAGE_LIST_CONFIRM_DELETE: '<?=\CUtil::jsEscape(Loc::getMessage('MAIL_MESSAGE_LIST_CONFIRM_DELETE')) ?>',
			MAIL_MESSAGE_LIST_CONFIRM_DELETE_BTN: '<?=\CUtil::jsEscape(Loc::getMessage('MAIL_MESSAGE_LIST_CONFIRM_DELETE_BTN')) ?>',
			MAIL_MESSAGE_LIST_CONFIRM_TITLE: '<?=\CUtil::jsEscape(Loc::getMessage('MAIL_MESSAGE_LIST_CONFIRM_TITLE')) ?>',
			MAIL_MESSAGE_LIST_NOTIFY_ADDED_TO_CRM: '<?=\CUtil::jsEscape(Loc::getMessage('MAIL_MESSAGE_LIST_NOTIFY_ADDED_TO_CRM')) ?>',
			MAIL_MESSAGE_LIST_NOTIFY_NOT_ADDED_TO_CRM: '<?=\CUtil::jsEscape(Loc::getMessage('MAIL_MESSAGE_LIST_NOTIFY_NOT_ADDED_TO_CRM')) ?>',
			MAIL_MESSAGE_LIST_NOTIFY_EXCLUDED_FROM_CRM: '<?=\CUtil::jsEscape(Loc::getMessage('MAIL_MESSAGE_LIST_NOTIFY_EXCLUDED_FROM_CRM')) ?>',
			MAIL_MESSAGE_LIST_NOTIFY_SUCCESS: '<?=\CUtil::jsEscape(Loc::getMessage('MAIL_MESSAGE_LIST_NOTIFY_SUCCESS')) ?>',
			MAIL_MESSAGE_LIST_CONFIRM_CANCEL_BTN: '<?=\CUtil::jsEscape(Loc::getMessage('MAIL_MESSAGE_LIST_CONFIRM_CANCEL_BTN')) ?>',
			MAIL_MAILBOX_LICENSE_CONNECTED_MAILBOXES_LIMIT_TITLE: '<?=\CUtil::jsEscape(Loc::getMessage('MAIL_MAILBOX_LICENSE_CONNECTED_MAILBOXES_LIMIT_TITLE')) ?>',
			MAIL_MESSAGE_SYNC_BTN_HINT: '<?=\CUtil::jsEscape(Loc::getMessage('MAIL_MESSAGE_SYNC_BTN_HINT')) ?>'
		});

		var mailboxData = <?=Main\Web\Json::encode(array(
			'ID'       => $arResult['MAILBOX']['ID'],
			'EMAIL'    => $arResult['MAILBOX']['EMAIL'],
			'NAME'     => $arResult['MAILBOX']['NAME'],
			'USERNAME' => $arResult['MAILBOX']['USERNAME'],
			'SERVER'   => $arResult['MAILBOX']['SERVER'],
			'PORT'     => $arResult['MAILBOX']['PORT'],
			'USE_TLS'  => $arResult['MAILBOX']['USE_TLS'],
			'LOGIN'    => $arResult['MAILBOX']['LOGIN'],
			'LINK'     => $arResult['MAILBOX']['LINK'],
			'OPTIONS'  => array(
				'flags' => $arResult['MAILBOX']['OPTIONS']['flags'],
				'imap'  => $arResult['MAILBOX']['OPTIONS']['imap'],
			),
		)) ?>;

		// this is to preserve dirs order
		mailboxData.OPTIONS.imap.dirs = <?=json_encode(array_combine(
			Main\Text\Encoding::convertEncoding(array_keys($arResult['MAILBOX']['OPTIONS']['imap']['dirs']), SITE_CHARSET, 'UTF-8'),
			Main\Text\Encoding::convertEncoding(array_values($arResult['MAILBOX']['OPTIONS']['imap']['dirs']), SITE_CHARSET, 'UTF-8')
		)) ?>;

		BXMailMailbox.init(mailboxData);

		BXMailMailbox.sync(BX('mail-msg-sync-button'), BX('mail-msg-sync-stepper'), '<?=\CUtil::jsEscape($arResult['GRID_ID']) ?>');

		BX.PULL.extendWatch('mail_mailbox_<?=intval($arResult['MAILBOX']['ID']) ?>');
		BX.addCustomEvent(
			'onPullEvent-mail',
			function (command, params)
			{
				if ('mailbox_sync_status' == command)
				{
					if (<?=intval($arResult['MAILBOX']['ID']) ?> == params.id)
					{
						if (params.new > 0)
						{
							var gridInstance = BX.Main.gridManager.getInstanceById('<?=\CUtil::jsEscape($arResult['GRID_ID']) ?>');

							if (gridInstance.getRows().getCountSelected() == 0)
							{
								gridInstance.reload();
							}
						}

						BXMailMailbox.updateStepper(BX('mail-msg-sync-stepper'), params.complete, params.status);
					}
				}
			}
		);

		BX.addCustomEvent(
			'SidePanel.Slider:onMessage',
			function (event)
			{
				var grid = BX.Main.gridManager.getInstanceById('<?=\CUtil::jsEscape($arResult['GRID_ID']) ?>');

				if (event.getEventId() == 'mail-mailbox-config-success')
				{
					if (event.data.id == <?=intval($arResult['MAILBOX']['ID']) ?>)
					{
						if (event.data.changed && event.data.changed.imap_dirs)
						{
							grid && grid.tableFade();
							window.location.reload();
						}
						else
						{
							grid && grid.reload();
						}
					}
					else
					{
						window.location.href = '<?=\CUtil::jsEscape($arParams['PATH_TO_MAIL_MSG_LIST']) ?>'.replace('#id#', event.data.id);

						top.BX.SidePanel.Instance.closeAll();
					}
				}
				else if (event.getEventId() == 'mail-mailbox-config-delete')
				{
					if (event.data.id == <?=intval($arResult['MAILBOX']['ID']) ?>)
					{
						window.location.href = '<?=\CUtil::jsEscape($arParams['PATH_TO_MAIL_HOME']) ?>';
					}
					else
					{
						grid && grid.tableFade();
						window.location.reload();
					}
				}
				else if (event.getEventId() === 'mail-message-reload-grid')
				{
					grid && grid.reload();
				}
				else if (event.getEventId() == 'mail-message-create-task')
				{
					BX.Mail.Client.Message.List['<?=\CUtil::jsEscape($component->getComponentId()) ?>'].onCreateTaskEvent(event);
				}
			}
		);
	});

</script>

Zerion Mini Shell 1.0