Fields::getFieldEditing

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. Fields
  4. getFieldEditing
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/webform/options/fields.php
  • Класс: Bitrix\Crm\WebForm\Options\Fields
  • Вызов: Fields::getFieldEditing
private function getFieldEditing($field, array $data)
{
	$isCommonStringType = in_array($data['TYPE_ORIGINAL'], ['typed_string', 'string']);
	$hasLabel = self::isTypeHasLabel($field['TYPE']);
	$isValuableType = !isset(WebForm\Helper::getFieldNonValueTypes()[$field['TYPE']]);

	$items = [];
	$hasListableItems = isset(WebForm\Helper::getFieldListableTypes()[$field['TYPE']]);
	if ($hasListableItems)
	{
		foreach (($data['ITEMS'] ?? []) as $item)
		{
			$items[] = array_change_key_case($item);
		}
	}

	$catalog = $field['TYPE'] === 'product'
		? WebForm\Catalog::create()->setItems($field['ITEMS'])->getSelectorProducts()
		: []
	;

	$types = [];
	if (($data['TYPE_ORIGINAL'] ?? null) === 'typed_string')
	{
		foreach (WebForm\Helper::getFieldStringTypes() as $key => $val)
		{
			$types[] = ['id' => $key, 'name' => $val];
		}
	}
	$valueTypes = [];
	if (is_array($data['VALUE_TYPE_ORIGINAL']))
	{
		$valueTypes = array_map(
			function ($item)
			{
				return [
					'id' => $item['ID'],
					'name' => $item['VALUE'],
				];
			},
			$data['VALUE_TYPE_ORIGINAL']
		);
	}

	$supportAutocomplete = !in_array($field['TYPE'], [
		WebForm\Internals\FieldTable::TYPE_ENUM_RESOURCEBOOKING,
		WebForm\Internals\FieldTable::TYPE_ENUM_FILE,
		WebForm\Internals\FieldTable::TYPE_ENUM_PRODUCT,
		WebForm\Internals\FieldTable::TYPE_ENUM_SECTION,
		WebForm\Internals\FieldTable::TYPE_ENUM_PAGE,
	]);

	$defaultValueType = array_filter(
		$valueTypes,
		function (array $item)
		{
			return $item['id'] === 'OTHER';
		}
	);
	$defaultValueType = current($defaultValueType)['id'] ?? '';

	return [
		'id' => $field['ID'] ?? null,
		'entityId' => \CCrmOwnerType::resolveID($data['ENTITY_NAME']),
		'entityName' => $data['ENTITY_NAME'] ?? null,
		'name' => $data['ENTITY_FIELD_NAME'] ?? null,
		'types' => $types,
		'hasLabel' => $hasLabel,
		'hasHint' => $isValuableType,
		'supportHintOnFocus' => $isCommonStringType,
		'hasPlaceholder' => $isCommonStringType,
		'hasStringDefaultValue' => $isCommonStringType,
		'valueTypes' => $valueTypes,
		'canBeMultiple' => $data['MULTIPLE_ORIGINAL'] ?? $isValuableType,
		'canBeRequired' => $isValuableType,
		'supportContentTypes' => $field['TYPE'] === 'file' && !self::isFieldFileImage($data['CODE']),
		'supportListableItems' => $hasListableItems,
		'supportAutocomplete' => $supportAutocomplete,
		'supportCustomItems' => $field['TYPE'] === 'product',
		'catalog' => $field['TYPE'] === 'product' ? $catalog : null,
		'items' => $items,
		'editable' => [
			'valueType' => $field['VALUE_TYPE'] ?: $defaultValueType,
		],
	];
}

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