Skip to content

Instantly share code, notes, and snippets.

Created January 9, 2013 08:21
Show Gist options
  • Save anonymous/4491534 to your computer and use it in GitHub Desktop.
Save anonymous/4491534 to your computer and use it in GitHub Desktop.

Revisions

  1. @invalid-email-address Anonymous created this gist Jan 9, 2013.
    64 changes: 64 additions & 0 deletions CCustomTypes.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,64 @@
    class CCustomTypeElementDate{

    //описываем поведение пользовательского свойства
    function GetUserTypeDescription() {
    return array(
    'PROPERTY_TYPE' => 'E',
    'USER_TYPE' => 'skill',
    'DESCRIPTION' => 'Квалификация — Дата получения квалификации', //именно это будет выведено в списке типов свойств во вкладке редактирования свойств ИБ
    //указываем необходимые функции, используемые в создаваемом типе
    'GetPropertyFieldHtml' => array('CCustomTypeElementDate', 'GetPropertyFieldHtml'),
    'ConvertToDB' => array('CCustomTypeElementDate', 'ConvertToDB'),
    'ConvertFromDB' => array('CCustomTypeElementDate', 'ConvertToDB')
    );
    }
    //формируем пару полей для создаваемого свойства
    function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName) {
    $ID = intval($_REQUEST['ID']); //
    //формируем список квалификаций
    $rsSkills = CIBlockElement::GetList(
    array("SORT" => "ASC"),
    array(
    "IBLOCK_ID" => 25, //ИБ Квалификации
    "ACTIVE" => "Y"
    ),
    false,
    false,
    array("ID","NAME")
    );
    //формируем селект с опциями — квалификациями
    $html = '<select name="'.$strHTMLControlName["VALUE"].'">';
    $html .= '<option value="">(выберите квалификацию)</option>';
    while ($arSkill = $rsSkills->GetNext()){
    $html .= '<option value="' .$arSkill["ID"]. '"';
    if ($arSkill["ID"] == $value["VALUE"]){
    $html .= 'selected="selected"';
    }
    $html .= '>' .$arSkill["NAME"]. '</option>';
    }
    $html .= '</select>';
    echo $html;
    //формируем поле с датой для дескрипшена
    global $APPLICATION;
    $APPLICATION->IncludeComponent("bitrix:main.calendar","",Array(
    "SHOW_INPUT" => "Y",
    "FORM_NAME" => "",
    "INPUT_NAME" => $strHTMLControlName["DESCRIPTION"],
    "INPUT_NAME_FINISH" => "",
    "INPUT_VALUE" => $value["DESCRIPTION"],
    "INPUT_VALUE_FINISH" => "",
    "SHOW_TIME" => "N",
    "HIDE_TIMEBAR" => "Y"
    )
    );
    echo "<br />";
    }
    //сохраняем в базу
    function ConvertToDB($arProperty, $value){
    return $value;
    }
    //читаем из базы
    function ConvertFromDB($arProperty, $value){
    return $value;
    }
    }