Типы данных —  Каталог Медиабиблиотеки

Регистрируем обработчик события главного модуля OnIBlockPropertyBuildList

AddEventHandler("iblock", "OnIBlockPropertyBuildList", array("CIBlockPropertyMedialibCatalog", "GetUserTypeDescription"));

Создаем класс для пользовательского типа

class CIBlockPropertyMedialibCatalog
{
   function GetUserTypeDescription()
   {
      return array(
         "PROPERTY_TYPE"      =>"N",
         "USER_TYPE"      =>"MedialibCatalog",
         "DESCRIPTION"      =>"Каталог Медиабиблиотеки",
         "GetPropertyFieldHtml" =>array("CIBlockPropertyMedialibCatalog", "GetPropertyFieldHtml"),
         "GetPublicViewHTML" =>array("CIBlockPropertyMedialibCatalog", "GetPublicViewHTML"),
         "ConvertToDB" =>array("CIBlockPropertyMedialibCatalog", "ConvertToDB"),
         "GetAdminListViewHTML" =>array("CIBlockPropertyMedialibCatalog","GetAdminListViewHTML"),

      );
   }



    function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
    {

            CModule::IncludeModule("fileman");
            CMedialib::Init();
            $arCollections = CMedialibCollection::GetList(array('arOrder'=>Array('NAME'=>'ASC'),'arFilter' => array('ACTIVE' => 'Y'))); 

            echo "<select name=\"".$strHTMLControlName["VALUE"]."\">";

            foreach($arCollections as $code=>$vl) {

             if ($vl["ID"]==$value["VALUE"]) 
                echo "<option selected value=\"".$vl["ID"]."\">".$vl["NAME"]."</option>";
                else
                echo "<option  value=\"".$vl["ID"]."\">".$vl["NAME"]."</option>";
            }

            echo "</select>";
                
      }


   function GetAdminListViewHTML($arProperty, $value, $strHTMLControlName)
    {
        if(strlen($value["VALUE"])>0)
            return str_replace(" ", "&nbsp;", htmlspecialcharsex($value["VALUE"]));
        else
            return '&nbsp;';
    }



    function GetPublicViewHTML($arProperty, $value, $strHTMLControlName)
    {
        if(strlen($value["VALUE"])>0)
            return str_replace(" ", "&nbsp;", htmlspecialcharsex($value["VALUE"]));
        else
            return '';
    }

function ConvertToDB($arProperty, $value)
    {
        if(strlen($value["VALUE"])>0)
        {
            $value["VALUE"] = intval($value["VALUE"]);
        }
        return $value;
    }


}

Written by 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *