Advertisement
Trigub_Ilia

Добавление нового типа пользовательского свойства

Dec 6th, 2018
291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.58 KB | None | 0 0
  1. class MyCurledType extends CUserTypeString
  2. {
  3.     function GetUserTypeDescription()
  4.     {
  5.         return array(
  6.             "USER_TYPE_ID" => "c_string",
  7.             "CLASS_NAME" => "MyCurledType",
  8.             "DESCRIPTION" => "Таблица на 3 столбца",
  9.             "BASE_TYPE" => "string",
  10.         );
  11.     }
  12.     //Этот метод вызывается для показа значений в списке
  13.     function GetAdminListViewHTML($arUserField, $arHtmlControl)
  14.     {
  15.         if(strlen($arHtmlControl["VALUE"])>0)
  16.             return "{".$arHtmlControl["VALUE"]."}";
  17.         else
  18.             return ' ';
  19.     }
  20.  
  21.     function GetEditFormHTML($arUserField, $arHtmlControl)
  22.     {
  23.         if($arUserField["ENTITY_VALUE_ID"]<1 && strlen($arUserField["SETTINGS"]["DEFAULT_VALUE"])>0)
  24.             $arHtmlControl["VALUE"] = htmlspecialcharsbx($arUserField["SETTINGS"]["DEFAULT_VALUE"]);
  25.         if($arUserField["SETTINGS"]["ROWS"] < 2)
  26.         {
  27.             $arHtmlControl["VALIGN"] = "middle";
  28.  
  29.             // список возможных объектов опроса
  30.             CModule::IncludeModule('iblock');
  31.             $arItemsPoll = array();
  32.             $arSelect = Array("ID", "NAME", "PREVIEW_TEXT","PROPERTY_PARTY");
  33.             $arFilter = Array("IBLOCK_ID"=>1, "ACTIVE"=>"Y");
  34.             $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
  35.             while($ob = $res->GetNextElement())
  36.             {
  37.                 $arFields = $ob->GetFields();
  38.                 $arItemsPoll[$arFields["ID"]] = $arFields["NAME"];
  39.             }
  40.  
  41.             // список вопросов
  42.             $arQuestions = array();
  43.             $arSelect = Array("ID", "NAME");
  44.             $arFilter = Array("IBLOCK_ID"=>3, "ACTIVE"=>"Y");
  45.             $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
  46.             while($ob = $res->GetNextElement())
  47.             {
  48.                 $arFields = $ob->GetFields();
  49.                 $arQuestions[$arFields["ID"]] = "- ".$arFields["NAME"];
  50.             }
  51.  
  52.             // если значения нет не выводим поля (что бы пользователь не редактировал ничего сам)
  53.             if(empty($arHtmlControl["VALUE"]["VALUE"])){
  54.                 return "";
  55.             }
  56.             else {
  57.                 return '<input type="hidden" '.
  58.                     'name="'.$arHtmlControl["NAME"].'[ITEM]" '.
  59.                     'placeholder="id объекта опроса"'.
  60.                     'size="'.$arUserField["SETTINGS"]["SIZE"].'" '.
  61.                     ($arUserField["SETTINGS"]["MAX_LENGTH"]>0? 'maxlength="'.$arUserField["SETTINGS"]["MAX_LENGTH"].'" ': '').
  62.                     'value="'.$arHtmlControl["VALUE"]["ITEM"].'" '.
  63.                     //  'disabled="disabled" '.
  64.                     '>
  65.                <span style="width: 140px;display: inline-block;float: left;">'.$arItemsPoll[$arHtmlControl["VALUE"]["ITEM"]].'</span>
  66.                <input type="hidden" '.
  67.                     'name="'.$arHtmlControl["NAME"].'[QUESTION]" '.
  68.                     'placeholder="id вопроса"'.
  69.                     'size="'.$arUserField["SETTINGS"]["SIZE"].'" '.
  70.                     ($arUserField["SETTINGS"]["MAX_LENGTH"]>0? 'maxlength="'.$arUserField["SETTINGS"]["MAX_LENGTH"].'" ': '').
  71.                     'value="'.$arHtmlControl["VALUE"]["QUESTION"].'" '.
  72.                     //  'disabled="disabled" '.
  73.                     '>
  74.                <span style="width: 250px;display: inline-block;float: left;margin-right: 5px;">'.$arQuestions[$arHtmlControl["VALUE"]["QUESTION"]].'</span>
  75.                <input type="text" '.
  76.                     'name="'.$arHtmlControl["NAME"].'[VALUE]" '.
  77.                     'placeholder="среднее"'.
  78.                     'size="'.$arUserField["SETTINGS"]["SIZE"].'" '.
  79.                     ($arUserField["SETTINGS"]["MAX_LENGTH"]>0? 'maxlength="'.$arUserField["SETTINGS"]["MAX_LENGTH"].'" ': '').
  80.                     'value="'.$arHtmlControl["VALUE"]["VALUE"].'" '.
  81.                     //($arUserField["EDIT_IN_LIST"]!="Y"? 'disabled="disabled" ': '').
  82.                     'style="width: 25px;" '.
  83.                     'disabled="disabled" '.
  84.                     '><br>';
  85.             }
  86.         }
  87.         else
  88.         {
  89.             return 'для этого свойства необходимо установить настройку высоты строки равную = 1';
  90.         }
  91.     }
  92. }
  93. AddEventHandler("main", "OnUserTypeBuildList", array("MyCurledType", "GetUserTypeDescription"));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement