• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Service/Display/Field/CrmField.php
  • Класс: Bitrix\Crm\Service\Display\Field\CrmField
  • Вызов: CrmField::getFormattedValueForKanban
protected function getFormattedValueForKanban($fieldValue, int $itemId, Options $displayOptions)
{
	$this->setWasRenderedAsHtml(true);
	$result = ($this->isMultiple() ? [] : '');

	$linkedEntitiesValues = $this->getLinkedEntitiesValues();

	$fieldValue = is_array($fieldValue) ? $fieldValue : [$fieldValue];
	foreach ($fieldValue as $entityElement)
	{
		if ($this->needExplodeValue($entityElement))
		{
			[$entityTypePrefix, $entityElementId] = explode('_', $entityElement);
			$entityElementId = (int)$entityElementId;
		}
		elseif (!empty($this->entityTypes))
		{
			$entityTypePrefix = \CCrmOwnerTypeAbbr::ResolveByTypeName($this->entityTypes[0]);
			$entityElementId = (int)$entityElement;
		}
		else
		{
			continue;
		}

		$entityTypeId = \CCrmOwnerTypeAbbr::ResolveTypeID($entityTypePrefix);
		if (!$entityTypeId)
		{
			continue;
		}

		$entityTypeName = \CCrmOwnerTypeAbbr::ResolveName($entityTypePrefix);
		$entityValue = $linkedEntitiesValues[$entityTypeName][$entityElementId] ?? null;
		if (!$entityValue)
		{
			continue;
		}

		$link = Container::getInstance()->getRouter()->getItemDetailUrl($entityTypeId, $entityElementId);
		$prefix = '';
		$tooltipLoader = null;
		$className = null;

		$hasReadPermission = $this->hasReadPermissions($entityTypeId, $entityElementId, $entityValue);
		if ($hasReadPermission)
		{
			$title = $this->getEntityTitle($entityTypeId, $entityElementId, $entityValue);

			if ($entityTypeId === \CCrmOwnerType::Lead)
			{
				$prefix = \CCrmOwnerTypeAbbr::Lead;
				$className = 'crm_balloon_no_photo';
			}
			elseif ($entityTypeId === \CCrmOwnerType::Contact)
			{
				$prefix = \CCrmOwnerTypeAbbr::Contact;
			}
			elseif ($entityTypeId === \CCrmOwnerType::Company)
			{
				$prefix = \CCrmOwnerTypeAbbr::Company;
			}
			elseif ($entityTypeId === \CCrmOwnerType::Deal)
			{
				$prefix = \CCrmOwnerTypeAbbr::Deal;
				$className = 'crm_balloon_no_photo';
			}
			elseif ($entityTypeId === \CCrmOwnerType::Order)
			{
				$prefix = \CCrmOwnerTypeAbbr::Order;
				$tooltipLoader = '/bitrix/components/bitrix/crm.order.details/card.ajax.php';
			}
			elseif ($entityTypeId === \CCrmOwnerType::Quote)
			{
				$className = 'crm_balloon_no_photo';
			}
			elseif (\CCrmOwnerType::isUseFactoryBasedApproach($entityTypeId))
			{
				$prefix = \CCrmOwnerTypeAbbr::ResolveByTypeID($entityTypeId);
				$tooltipLoader = UrlManager::getInstance()->create(
					'bitrix:crm.controller.tooltip.card',
					[
						'sessid' => bitrix_sessid(),
					]
				);
				$className = 'crm_balloon_no_photo';
				$entityElementId = $entityTypeId . '-' . $entityElementId;
			}

			$formattedValue = '';

			if ($title !== null)
			{
				$formattedValue = htmlspecialcharsbx($title);

				if (!$this->isExportContext())
				{
					\Bitrix\Main\UI\Extension::load('ui.tooltip');

					$tooltipLoader = (
						$tooltipLoader
						??
						htmlspecialcharsbx('/bitrix/components/bitrix/crm.'
							. mb_strtolower($entityTypeName)
							. '.show/card.ajax.php')
					);

					$className = ($className ?? 'crm_balloon_' . mb_strtolower($entityTypeName));
					$formattedValue = $this->getHtmlLink($link, $entityElementId, $tooltipLoader, $className,
						$formattedValue);
				}
				elseif ($this->isUserField())
				{
					$formattedValue = "[$prefix]$formattedValue";
				}
			}
		}
		else
		{
			$formattedValue = \CCrmEntitySelectorHelper::getHiddenTitle($entityTypeName);
		}

		if ($formattedValue !== '')
		{
			if ($this->isMultiple())
			{
				$result[] = $formattedValue;
			}
			else
			{
				$result = $formattedValue;
				break;
			}
		}
	}

	return $result;
}