- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/classes/general/im_messenger.php
- Класс: CIMMessenger
- Вызов: CIMMessenger::GetV2TemplateJS
static function GetV2TemplateJS($arResult): string
{
global $USER;
$counters = (new BitrixImV2MessageCounterService())->get();
$recentList = BitrixImRecent::getList(null, [
'SKIP_NOTIFICATION' => 'Y',
'SKIP_OPENLINES' => 'Y',
'JSON' => 'Y',
'GET_ORIGINAL_TEXT' => 'Y',
//'SHORT_INFO' => 'Y',
]);
$isDesktop = $arResult['DESKTOP'] === true;
$permissionManager = new BitrixImV2ChatPermission(true);
$permissions = [
'byChatType' => $permissionManager->getByChatTypes(),
'actionGroups' => $permissionManager->getActionGroupDefinitions(),
'actionGroupsDefaults' => $permissionManager->getDefaultPermissionForGroupActions()
];
$marketApps = (new BitrixImV2MarketplaceApplication())->toRestFormat();
$currentUser = CIMContactList::GetUserData([
'ID' => $USER->GetID(),
'PHONES' => 'Y',
'SHOW_ONLINE' => 'N',
'EXTRA_FIELDS' => 'Y',
'DATE_ATOM' => 'Y'
])['users'][$USER->GetID()];
$currentUser['isAdmin'] = self::IsAdmin();
$loggerConfig = BitrixImSettings::getLoggerConfig();
$settings = (new BitrixImV2SettingsUserConfiguration($USER->GetID()))->getGeneralSettings();
$sessionTime = (new BitrixImV2UpdateState())->getInterval();
$promoType = $isDesktop ? BitrixImPromotion::DEVICE_TYPE_DESKTOP : BitrixImPromotion::DEVICE_TYPE_BROWSER;
$promoList = BitrixImPromotion::getActive($promoType);
$applicationName = $isDesktop ? 'messenger' : 'quickAccess';
return "
BX.ready(function() {
BX.Messenger.v2.Application.Launch('" . $applicationName . "', {
node: '#bx-im-external-recent-list',
preloadedList: " . BitrixMainWebJson::encode($recentList) . ",
permissions: " . BitrixMainWebJson::encode($permissions) . ",
marketApps: " . BitrixMainWebJson::encode($marketApps) . ",
currentUser: " . BitrixMainWebJson::encode($currentUser) . ",
loggerConfig: " . BitrixMainWebJson::encode($loggerConfig) . ",
counters: " . BitrixMainWebJson::encode($counters) . ",
settings: " . BitrixMainWebJson::encode($settings) . ",
promoList: " . BitrixMainWebJson::encode($promoList) . ",
phoneSettings: " . BitrixMainWebJson::encode(self::getPhoneSettings()) . ",
sessionTime: " . BitrixMainWebJson::encode($sessionTime) . ",
}).then((application) => {
" . ($isDesktop ? "application.initComponent('body')" : '') . "
});
});
";
}