- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/connector/intranet.php
- Класс: BitrixLandingConnectorIntranet
- Вызов: Intranet::onBuildBindingMenu
static function onBuildBindingMenu(BitrixMainEvent $event): array
{
CJSCore::init('sidepanel');
BitrixLandingSiteType::setScope(
BitrixLandingSiteType::SCOPE_CODE_KNOWLEDGE
);
$bindings = BindingMenu::getList(null);
// associate different bindings
$bindingsAssoc = [];
foreach ($bindings as $binding)
{
if (!isset($bindingsAssoc[$binding['BINDING_ID']]))
{
$bindingsAssoc[$binding['BINDING_ID']] = [];
}
$bindingsAssoc[$binding['BINDING_ID']][] = $binding;
}
$bindings = $bindingsAssoc;
unset($bindingsAssoc);
// init vars
$items = [];
$bindingMap = Menu::getMap();
// build binding map
foreach ($bindingMap as $sectionCode => $bindingSection)
{
foreach ($bindingSection['items'] as $itemCode => $foo)
{
$menuItems = [];
$unbindItems = [];
$bindingCode = $sectionCode . ':' . $itemCode;
if (isset($bindings[$bindingCode]))
{
foreach ($bindings[$bindingCode] as $bindingItem)
{
$menuItems[] = [
'id' => 'landing_' . $bindingItem['ENTITY_TYPE'] . $bindingItem['ENTITY_ID'],
'text' => htmlspecialcharsbx($bindingItem['TITLE']),
'href' => $bindingItem['PUBLIC_URL'],
'sectionCode' => Menu::SECTIONS['knowledge']
];
$unbindItems[] = self::getMenuItemUnbind(
$bindingCode,
$bindingItem['ENTITY_TYPE'] . '_' . $bindingItem['ENTITY_ID'],
$bindingItem['TITLE']
);
}
}
$menuItems = array_merge(
$menuItems,
self::getMenuItemBind($bindingCode)
);
if (isset($bindings[$bindingCode]) && Rights::hasAdditionalRight('extension', null, false, true))
{
$menuItems[] = [
'id' => 'landing_unbind',
'extension' => 'landing.connector.intranet',
'text' => Loc::getMessage('LANDING_CONNECTOR_INTRANET_MENU_HIDE_TITLE'),
'items' => $unbindItems
];
}
$items[] = [
'bindings' => [
$sectionCode => [
'include' => [
$itemCode
]
]
],
'items' => $menuItems
];
}
}
BitrixLandingSiteType::clearScope();
return $items;
}