- Модуль: 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,
],
];
}