Поддержка серверов

CUserTypeEnum::getPublicEdit: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=422391

//    CUserTypeEnum::getPublicEdit()
//    /bitrix/modules/main/classes/general/usertypeenum.php:766

    public function getPublicEdit($arUserField, $arAdditionalParameters = array())
    {
        static::getEnumList($arUserField, $arAdditionalParameters);

        $fieldName = static::getFieldName($arUserField, $arAdditionalParameters);
        $value = static::getFieldValue($arUserField, $arAdditionalParameters);

        $bWasSelect = false;

        $html = '';

        if($arUserField["SETTINGS"]["DISPLAY"] == "UI")
        {
            $html .= 'htmlspecialcharsbx($fieldName).'" value="" id="'.htmlspecialcharsbx($arUserField['FIELD_NAME']).'_default" />';

            \CJSCore::Init('ui');

            $startValue = array();
            $itemList = array();

            foreach($arUserField['USER_TYPE']['FIELDS'] as $key => $val)
            {
                if($key === '' && $arUserField['MULTIPLE'] === 'Y')
                {
                    continue;
                }

                $item = array(
                    'NAME' => $val,
                    'VALUE' => $key,
                );

                if(in_array($key, $value))
                {
                    $startValue[] = $item;
                }

                $itemList[] = $item;
            }

            $params = \Bitrix\Main\Web\Json::encode(array(
                'isMulti' => $arUserField['MULTIPLE'] === 'Y',
                'fieldName' => $arUserField['FIELD_NAME']
            ));

            $result = '';

            $suffix = strtolower(RandString(4));
            $controlNodeId = $arUserField['FIELD_NAME'].'_control_'.$suffix;
            $valueContainerId = $arUserField['FIELD_NAME'].'_value_'.$suffix;

            $attrList = array(
                'id' => $valueContainerId,
                'style' => 'display: none'
            );

            $result .= '';

            for($i = 0, $n = count($startValue); $i < $n; $i++)
            {
                $attrList = array(
                    'type' => 'hidden',
                    'name' => $fieldName,
                    'value' => $startValue[$i]['VALUE'],
                );

                $result .= '';
            }

            $result .= '
';

            if($arUserField['MULTIPLE'] !== 'Y')
            {
                $startValue = $startValue[0];
            }

            $items = \Bitrix\Main\Web\Json::encode($itemList);
            $currentValue = \Bitrix\Main\Web\Json::encode($startValue);

            $fieldNameJS = \CUtil::JSEscape($arUserField['FIELD_NAME']);
            $htmlFieldNameJS = \CUtil::JSEscape($fieldName);
            $controlNodeIdJS = \CUtil::JSEscape($controlNodeId);
            $valueContainerIdJS = \CUtil::JSEscape($valueContainerId);
            $block = $arUserField['MULTIPLE'] === 'Y' ? 'main-ui-multi-select' : 'main-ui-select';

            $result .= <<

EOT;

            $html .= static::getHelper()->wrapSingleField($result);
        }
        elseif($arUserField["SETTINGS"]["DISPLAY"] == "CHECKBOX")
        {
            $first = true;
            if($arUserField['MULTIPLE'] === 'Y')
            {
                $html .= '                         'type' => 'hidden',
                        'name' => $fieldName,
                        'value' => ''
                    ]).' />';
            }

            foreach($arUserField["USER_TYPE"]["FIELDS"] as $key => $val)
            {
                $tag = '';

                if($first)
                {
                    $first = false;
                }
                else
                {
                    $tag .= static::getHelper()->getMultipleValuesSeparator();
                }

                $bSelected = in_array($key, $value) && (
                        (!$bWasSelect) ||
                        ($arUserField["MULTIPLE"] == "Y")
                    );
                $bWasSelect = $bWasSelect || $bSelected;

                $attrList = array(
                    'type' => $arUserField['MULTIPLE'] === 'Y' ? 'checkbox' : 'radio',
                    'value' => $key,
                    'name' => $fieldName,
                );

                if($bSelected)
                {
                    $attrList['checked'] = 'checked';
                }

                $attrList['tabindex'] = '0';

                $tag .= '
';
                $html .= static::getHelper()->wrapSingleField($tag, array(static::USER_TYPE_ID.'-checkbox'));
            }
        }
        else
        {
            $attrList = array(
                'name' => $fieldName,
                'tabindex' => '0',
            );

            if($arUserField["SETTINGS"]["LIST_HEIGHT"] > 1)
            {
                $attrList['size'] = $arUserField["SETTINGS"]["LIST_HEIGHT"];
            }

            if($arUserField["MULTIPLE"] == "Y")
            {
                $attrList['multiple'] = 'multiple';
            }

            $tag = '';

            $html .= static::getHelper()->wrapSingleField($tag, array(static::USER_TYPE_ID.($arUserField['MULTIPLE'] === 'Y' ? '-multiselect' : '-select')));
        }

        static::initDisplay();

        return static::getHelper()->wrapDisplayResult($html);
    }

Блог разработчика

9 Августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 Июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 Июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение