ToolBar::mapItems

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. ToolBar
  4. mapItems
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/ui/tools/toolbar.php
  • Класс: Bitrix\Crm\UI\Tools\ToolBar
  • Вызов: ToolBar::mapItems
static function mapItems(array $inputItems, string $toolbarId = null, array $params = []): array
{
	$inputItems = array_filter($inputItems);

	if (empty($inputItems))
	{
		return [];
	}

	$result = array_map(static function ($item)
	{
		$item = array_change_key_case($item);

		if (isset($item['separator']))
		{
			$item['delimiter'] = $item['separator'];
			unset($item['separator']);
		}

		if (isset($item['name']))
		{
			$item['html'] = htmlspecialcharsbx($item['name']);
			unset($item['name']);

			if (isset($item['counter']) && $item['counter'] > 0)
			{
				$item['html'] = sprintf(
					'%s %d',
					$item['html'],
					$item['counter']
				);
			}
		}

		if (isset($item['link']))
		{
			$item['href'] = $item['link'];
			unset($item['link']);
		}

		if (isset($item['url']))
		{
			$item['href'] = $item['url'];
			unset($item['url']);
		}

		if (isset($item['onclick']))
		{
			$item['onclick'] = new JsCode($item['onclick']);
		}

		if (isset($item['jsevent']))
		{
			$item['onclick'] = new JsEvent($item['jsevent']);
		}

		if (isset($item['class_name']))
		{
			$item['className'] = htmlspecialcharsbx($item['class_name']);
		}

		if (isset($item['items']))
		{
			$item['items'] = self::mapItems($item['items']);
		}

		return $item;
	}, $inputItems);

	if (isset($toolbarId) && in_array($toolbarId, self::KANBAN_SETTINGS_TOOLBAR_IDS))
	{
		Container::getInstance()->getLocalization()->loadKanbanMessages();

		[$prefix, $entityName] = explode('_', $toolbarId);
		$entityTypeId = CCrmOwnerType::ResolveID($entityName);

		$isKanbanView = self::isCurrentViewKanbanView($entityTypeId);

		$factory = Container::getInstance()->getFactory($entityTypeId);
		if ($factory && $factory->isCategoriesEnabled())
		{
			$isKanbanView = $isKanbanView && !is_null($params['CATEGORY_ID'] ?? null);
		}

		if (!empty($entityTypeId) && $isKanbanView)
		{
			$result = array_merge([self::getKanbanSettings()], $result);
		}
	}

	return $result;
}

Добавить комментарий