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

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

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

<?php 
//    /bitrix/modules/main/classes/general/usertypeenum.phpCUserTypeEnum::GetEditFormHTML()
//    129:

    
function GetEditFormHTML($arUserField$arHtmlControl)
    {
        if((
$arUserField["ENTITY_VALUE_ID"]<1) && strlen($arUserField["SETTINGS"]["DEFAULT_VALUE"])>0)
            
$arHtmlControl["VALUE"] = intval($arUserField["SETTINGS"]["DEFAULT_VALUE"]);

        
$result '';
        
$rsEnum call_user_func_array(
            array(
$arUserField["USER_TYPE"]["CLASS_NAME"], "getlist"),
            array(
                
$arUserField,
            )
        );
        if(!
$rsEnum)
            return 
'';

        if(
$arUserField["SETTINGS"]["DISPLAY"]=="UI")
        {
            
CJSCore::Init('ui');

            
$startValue = array(
                
'NAME' => self::getEmptyCaption($arUserField),
                
'VALUE' => '',
            );

            
$itemList = array();
            if(
$arUserField["MANDATORY"] != "Y")
            {
                
$itemList[] = $startValue;
            }

            while(
$arEnum $rsEnum->GetNext())
            {
                
$item = array(
                    
'NAME' => $arEnum["VALUE"],
                    
'VALUE' => $arEnum["ID"],
                );

                if(
                    
$arHtmlControl["VALUE"] == $arEnum["ID"]
                    || 
$arUserField["ENTITY_VALUE_ID"] <= && $arEnum["DEF"] == "Y"
                
)
                {
                    
$startValue $item;
                }

                
$itemList[] = $item;
            }

            
$params = \Bitrix\Main\Web\Json::encode(array(
                
'isMulti' => false,
                
'fieldName' => $arUserField['FIELD_NAME']
            ));
            
$items = \Bitrix\Main\Web\Json::encode($itemList);
            
$value = \Bitrix\Main\Web\Json::encode($startValue);

            
$controlNodeId $arUserField['FIELD_NAME'].'_control';
            
$valueContainerId $arUserField['FIELD_NAME'].'_value';

            
$fieldNameJS = \CUtil::JSEscape($arUserField['FIELD_NAME']);
            
$htmlFieldNameJS = \CUtil::JSEscape($arHtmlControl["NAME"]);
            
$controlNodeIdJS = \CUtil::JSEscape($controlNodeId);
            
$valueContainerIdJS = \CUtil::JSEscape($valueContainerId);

            
$result .= '<input type="hidden" name="'.$arHtmlControl["NAME"].'" value="'.\Bitrix\Main\Text\HtmlFilter::encode($startValue['VALUE']).'" id="'.$valueContainerId.'">';

            
$result .= <<<EOT
<span id="{$controlNodeId}"></span>
<script>
function changeHandler_
{$fieldNameJS}(controlObject, value)
{
    if(controlObject.params.fieldName === '
{$fieldNameJS}')
    {
        var currentValue = JSON.parse(controlObject.node.getAttribute('data-value'));

        if(BX.type.isPlainObject(currentValue))
        {
            BX('
{$valueContainerIdJS}').value = currentValue['VALUE'];
        }
    }
}

BX.ready(function(){

    var params = 
{$params};

    BX('
{$controlNodeIdJS}').appendChild(BX.decl({
        block: 'main-ui-select',
        name: '
{$fieldNameJS}',
        items: 
{$items},
        value: 
{$value},
        params: params,
        valueDelete: false
    }));

    BX.addCustomEvent(
        window,
        'UI::Select::change',
        changeHandler_
{$fieldNameJS}
    );

    BX.bind(BX('
{$controlNodeIdJS}'), 'click', BX.defer(function(){
        changeHandler_
{$fieldNameJS}(
        {
            params: params,
            node: BX('
{$controlNodeIdJS}').firstChild
        });
    }));
});
</script>
EOT;
        }
        elseif(
$arUserField["SETTINGS"]["DISPLAY"]=="CHECKBOX")
        {
            
$bWasSelect false;
            
$result2 '';
            while(
$arEnum $rsEnum->GetNext())
            {
                
$bSelected = (
                    (
$arHtmlControl["VALUE"]==$arEnum["ID"]) ||
                    (
$arUserField["ENTITY_VALUE_ID"]<=&& $arEnum["DEF"]=="Y")
                );
                
$bWasSelect $bWasSelect || $bSelected;
                
$result2 .= '<label><input type="radio" value="'.$arEnum["ID"].'" name="'.$arHtmlControl["NAME"].'"'.($bSelected' checked''').($arUserField["EDIT_IN_LIST"]!="Y"' disabled="disabled" ''').'>'.$arEnum["VALUE"].'</label><br>';
            }
            if(
$arUserField["MANDATORY"]!="Y")
                
$result .= '<label><input type="radio" value="" name="'.$arHtmlControl["NAME"].'"'.(!$bWasSelect' checked''').($arUserField["EDIT_IN_LIST"]!="Y"' disabled="disabled" ''').'>'.htmlspecialcharsbx(self::getEmptyCaption($arUserField)).'</label><br>';
            
$result .= $result2;
        }
        else
        {
            
$bWasSelect false;
            
$result2 '';
            while(
$arEnum $rsEnum->GetNext())
            {
                
$bSelected = (
                    (
$arHtmlControl["VALUE"]==$arEnum["ID"]) ||
                    (
$arUserField["ENTITY_VALUE_ID"]<=&& $arEnum["DEF"]=="Y")
                );
                
$bWasSelect $bWasSelect || $bSelected;
                
$result2 .= '<option value="'.$arEnum["ID"].'"'.($bSelected' selected''').'>'.$arEnum["VALUE"].'</option>';
            }

            if(
$arUserField["SETTINGS"]["LIST_HEIGHT"] > 1)
            {
                
$size ' size="'.$arUserField["SETTINGS"]["LIST_HEIGHT"].'"';
            }
            else
            {
                
$arHtmlControl["VALIGN"] = "middle";
                
$size '';
            }

            
$result '<select name="'.$arHtmlControl["NAME"].'"'.$size.($arUserField["EDIT_IN_LIST"]!="Y"' disabled="disabled" ''').'>';
            if(
$arUserField["MANDATORY"]!="Y")
            {
                
$result .= '<option value=""'.(!$bWasSelect' selected''').'>'.htmlspecialcharsbx(self::getEmptyCaption($arUserField)).'</option>';
            }
            
$result .= $result2;
            
$result .= '</select>';
        }
        return 
$result;
    }

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

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

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

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

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

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

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

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