- Модуль: imbot
- Путь к файлу: ~/bitrix/modules/imbot/lib/itrmenu.php
- Класс: BitrixImBotItrMenu
- Вызов: ItrMenu::makeItemKeyboard
public function makeItemKeyboard(string $itemId, array $params): ?Keyboard
{
$keyboard = null;
$userAccess = $params['USER_LEVEL'] ?? null;
$supportLevel = $params['SUPPORT_LEVEL'] ?? null;
$menuItem = $this->getItem($itemId);
if (isset($menuItem['buttons']))
{
$keyboard = new Keyboard($this->botId);
foreach ($menuItem['buttons'] as $buttonData)
{
// check access
if ($userAccess && isset($buttonData['access']))
{
$buttonAccess = preg_split("/[s,]+/", $buttonData['access']);
if ($buttonAccess && !in_array($userAccess, $buttonAccess, true))
{
continue;
}
}
// check support level
if ($supportLevel && isset($buttonData['support_level']))
{
$buttonSupportLevel = preg_split("/[s,]+/", $buttonData['support_level']);
if ($buttonSupportLevel && !in_array($supportLevel, $buttonSupportLevel, true))
{
continue;
}
}
$button = [
'TEXT' => $buttonData['text'],
'DISPLAY' => ($buttonData['display'] ?? "BLOCK"),
'BG_COLOR' => ($buttonData['back_color'] ?? self::MENU_BUTTON_ACTIVE),
'TEXT_COLOR' => ($buttonData['text_color'] ?? "#fff"),
'BLOCK' => "Y",
];
switch ($buttonData['action'])
{
case self::MENU_ACTION_NEXT:
$button["COMMAND"] = self::COMMAND_MENU;
$button["COMMAND_PARAMS"] = $buttonData['action_value'];
break;
case self::MENU_ACTION_LINK:
$button["LINK"] = $buttonData['action_value'];
break;
case self::MENU_ACTION_HELP:
if ($buttonData['action_value'] && !empty($buttonData['action_value']))
{
$button["FUNCTION"] = "BX.Helper.show('redirect=detail&HD_ID=".$buttonData['action_value']."')";
}
else
{
$button["FUNCTION"] = "BX.Helper.show()";
}
break;
case self::MENU_ACTION_QUEUE:
$button["COMMAND"] = self::COMMAND_MENU;
$button["COMMAND_PARAMS"] = self::MENU_EXIT_ID;
// add some additional action params
if ($buttonData['action_value'] && !empty($buttonData['action_value']))
{
$button["COMMAND_PARAMS"] .= ';'.$buttonData['action_value'];
}
break;
}
$keyboard->addButton($button);
}
}
return $keyboard;
}