- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/component/gridvariationform.php
- Класс: BitrixCatalogComponentGridVariationForm
- Вызов: GridVariationForm::getPropertyDescription
protected function getPropertyDescription(Property $property): array
{
$description = parent::getPropertyDescription($property);
if ($description['editable'])
{
switch ($description['type'])
{
case 'multilist':
$dropdownItems = [];
if (!empty($description['data']['items']) && is_array($description['data']['items']))
{
$dropdownItems = $description['data']['items'];
}
$description['editable'] = [
'TYPE' => Types::MULTISELECT,
'DATA' => [
'ITEMS' => $dropdownItems,
]
];
break;
case 'list':
$dropdownItems = [];
if (!$description['required'])
{
$dropdownItems[] = Loc::getMessage('CATALOG_PRODUCT_CARD_VARIATION_GRID_NOT_SELECTED');
}
if (!empty($description['data']['items']) && is_array($description['data']['items']))
{
foreach ($description['data']['items'] as $item)
{
$dropdownItems[$item['VALUE']] = $item['NAME'];
}
}
$description['editable'] = [
'TYPE' => Types::DROPDOWN,
'items' => $dropdownItems,
];
break;
case 'custom':
if ($description['multiple'] === true && $description['propertyCode'] !== 'MORE_PHOTO')
{
$description['editable'] = false;
}
else
{
$description['editable'] = [
'TYPE' => Types::CUSTOM,
'NAME' => $description['data']['edit'] ?? $description['name'],
// 'HTML' => $description['data']['edit'] ?? $description['name'],
];
}
break;
case 'boolean':
$description['editable'] = ['TYPE' => Types::CHECKBOX];
break;
case 'datetime':
$description['editable'] = ['TYPE' => Types::DATE];
break;
case 'money':
$description['editable'] = [
'TYPE' => Types::MONEY,
'CURRENCY_LIST' => CurrencyManager::getSymbolList(),
'HTML_ENTITY' => true,
];
break;
default:
$description['editable'] = ['TYPE' => Types::TEXT];
}
$nonEditableUserTypes = [
'ElementXmlID',
'employee',
'map_yandex',
'map_google',
'ECrm',
'video',
'HTML',
];
if (
$description['settings']['PROPERTY_TYPE'] === PropertyTable::TYPE_ELEMENT
|| $description['settings']['PROPERTY_TYPE'] === PropertyTable::TYPE_SECTION
|| in_array($description['settings']['USER_TYPE'], $nonEditableUserTypes, true)
)
{
$description['editable'] = false;
}
}
return $description;
}