- Модуль: bizproc
- Путь к файлу: ~/bitrix/modules/bizproc/lib/usertype/userfieldbase.php
- Класс: BitrixBizprocUserTypeUserFieldBase
- Вызов: UserFieldBase::renderControlSingle
static function renderControlSingle(FieldType $fieldType, array $field, $value, $allowSelection, $renderMode)
{
global $USER_FIELD_MANAGER, $APPLICATION;
$selectorValue = null;
$typeValue = [];
if (!is_array($value) || CBPHelper::isAssociativeArray($value))
{
$value = [$value];
}
foreach ($value as $v)
{
if (CBPActivity::isExpression($v))
{
$selectorValue = $v;
}
else
{
$typeValue[] = is_array($v) && isset($v['VALUE']) ? $value['VALUE'] : $v;
}
}
$sType = static::getUserType($fieldType);
$value = $typeValue;
$arUserFieldType = $USER_FIELD_MANAGER->GetUserType($sType);
$userField = [
'ENTITY_ID' => sprintf('%s_%s',
mb_strtoupper($fieldType->getDocumentType()[0]),
mb_strtoupper($fieldType->getDocumentType()[2])
),
'FIELD_NAME' => static::generateControlName($field),
'USER_TYPE_ID' => $sType,
'SORT' => 100,
'MULTIPLE' => $fieldType->isMultiple() ? 'Y' : 'N',
'MANDATORY' => $fieldType->isRequired() ? 'Y' : 'N',
'EDIT_IN_LIST' => 'Y',
'EDIT_FORM_LABEL' => $arUserFieldType['DESCRIPTION'],
'VALUE' => $value,
'USER_TYPE' => $arUserFieldType,
'SETTINGS' => [],
'ENTITY_VALUE_ID' => 1,
];
if ($sType == 'boolean' && ($userField['VALUE'] == "Y" || $userField['VALUE'] == "N"))
{
$userField['VALUE'] = ($userField['VALUE'] == "Y") ? 1 : 0;
}
$userField['SETTINGS'] = $fieldType->getSettings();
if (in_array($sType, ['iblock_element', 'iblock_section', 'boolean']) && ($renderMode & FieldType::RENDER_MODE_DESIGNER))
{
//TODO: fix checkboxes values
$userField['SETTINGS']['DISPLAY'] = 'LIST';
}
elseif ($sType == 'crm' && empty($userField['SETTINGS']))
{
$userField['SETTINGS'] = ['LEAD' => 'Y', 'CONTACT' => 'Y', 'COMPANY' => 'Y', 'DEAL' => 'Y'];
}
elseif ($sType === 'iblock_element' && $renderMode & FieldType::RENDER_MODE_PUBLIC)
{
$userField['SETTINGS']['DISPLAY'] = 'UI';
}
ob_start();
$APPLICATION->IncludeComponent(
'bitrix:system.field.edit',
$sType,
[
'arUserField' => $userField,
'bVarsFromForm' => false,
'form_name' => $field['Form'],
'FILE_MAX_HEIGHT' => 400,
'FILE_MAX_WIDTH' => 400,
'FILE_SHOW_POPUP' => true
],
false,
['HIDE_ICONS' => 'Y']
);
$renderResult = ob_get_clean();
if ($allowSelection)
{
$renderResult .= static::renderControlSelector($field, $selectorValue, true, '', $fieldType);
}
return $renderResult;
}