- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integration/intranet/bindingmenu.php
- Класс: Bitrix\Crm\Integration\Intranet\BindingMenu
- Вызов: BindingMenu::getScriptItems
static function getScriptItems(): array
{
$items = [];
if (!Loader::includeModule('bizproc'))
{
return $items;
}
$marketUrl = null;
$manifestCode = 'crm_smart_robots';
if (Loader::includeModule('rest'))
{
$marketUrl = \Bitrix\Rest\Marketplace\Url::getConfigurationPlacementUrl($manifestCode);
}
$entityList = ['lead', 'deal', 'contact', 'company', 'order', 'smart_invoice'];
$typesMap = Container::getInstance()->getDynamicTypesMap();
$typesMap->load([
'isLoadStages' => false,
'isLoadCategories' => false,
]);
foreach ($typesMap->getTypes() as $type)
{
if ($type->getIsAutomationEnabled())
{
$entityList[] = strtolower(\CCrmOwnerType::ResolveName($type->getEntityTypeId()));
}
}
foreach ([BindingMenu\SectionCode::SWITCHER, BindingMenu\SectionCode::DETAIL] as $placement)
{
foreach ($entityList as $entity)
{
if (!Automation\Factory::isScriptAvailable(\CCrmOwnerType::ResolveID($entity)))
{
continue;
}
$docType = \CCrmBizProcHelper::ResolveDocumentType(\CCrmOwnerType::ResolveID($entity));
$docTypeParam = '\''.\CUtil::JSEscape(\CBPDocument::signDocumentType($docType)).'\'';
$placementParam = '\''.\CUtil::JSEscape($placement).'\'';
$scriptItems = \Bitrix\Bizproc\Script\Manager::getListByDocument($docType);
$scriptItems = array_slice($scriptItems, 0, 10);
$sort = 0;
$scriptItems = array_map(
function ($item) use (&$sort, $placement, $entity)
{
$placementParam = '\''.\CUtil::JSEscape($placement).':'.\CUtil::JSEscape($entity).'\'';
return [
'id' => 'script_'.$item['ID'],
'text' => htmlspecialcharsbx($item['NAME']),
'onclick' => 'BX.Bizproc.Script.Manager.Instance.startScript('.$item['ID'].", {$placementParam})",
'sort' => ++$sort,
];
},
$scriptItems
);
if ($scriptItems)
{
$scriptItems[] = ['delimiter' => true];
}
$scriptItems[] = [
'id' => 'script_list',
'text' => Loc::getMessage('CRM_INTEGRATION_INTRANET_MENU_SMART_SCRIPT_LIST'),
'onclick' => "BX.Bizproc.Script.Manager.Instance.showScriptList({$docTypeParam}, '{$manifestCode}')",
'sort' => 100
];
$scriptItems[] = ['delimiter' => true];
$scriptItems[] = [
'id' => 'script_create',
'text' => Loc::getMessage('CRM_INTEGRATION_INTRANET_MENU_SMART_SCRIPT_CREATE'),
'onclick' => "BX.Bizproc.Script.Manager.Instance.createScript({$docTypeParam}, {$placementParam})",
'sort' => 101
];
if ($marketUrl)
{
$scriptItems[] = [
'id' => 'script_marketplace',
'text' => Loc::getMessage('CRM_INTEGRATION_INTRANET_MENU_SMART_SCRIPT_MARKETPLACE'),
'href' => $marketUrl,
'sort' => 102
];
}
$items[] = [
'bindings' =>
[
$placement => ['include' => [$entity]]
],
'items' => [
[
'id' => 'script_root',
'system' => true,
'text' => Loc::getMessage("CRM_INTEGRATION_INTRANET_MENU_SMART_SCRIPT"),
'items' => $scriptItems
],
]
];
}
}
return $items;
}