Advertisement
Trigub_Ilia

Добавления элементов через кнопку добавить и что бы потом в

Nov 8th, 2018
415
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.57 KB | None | 0 0
  1. // разберём на примере создания кастомного свойства элемента инфоблока в админке битрикс
  2. ob_start();
  3. // id открывающегося окна
  4. $windowTableId = "iblockprop-E-".$strHTMLControlName["VALUE"];
  5.  
  6. //////////////////////////////////////////////////////////////////////////////////////////////
  7. // в переменной $input_value_string кладем шаблон красивого показа имени элемента если он уже создан
  8. // в данном случае если свойство уже сохраненено с каким то значением мне нужно было вывести имя и фамилию специалиста
  9. if($arProperty["LINK_IBLOCK_ID"] == IBLOCK_SPECIALISTS && !empty($value["VALUE"])){
  10.   $arFilter = array(
  11.     'IBLOCK_ID' => $arProperty["LINK_IBLOCK_ID"],
  12.     'ID' => $value["VALUE"],
  13.     'SHOW_HISTORY' => 'Y',
  14.     'IBLOCK_ID' => $arProperty["LINK_IBLOCK_ID"],
  15.   );
  16.   $rsElements = CIBlockElement::GetList(array(), $arFilter, false, false, array('IBLOCK_ID','ID','NAME','PROPERTY_LAST_NAME',"PROPERTY_SECOND_NAME"));
  17.   if ($arElement = $rsElements->GetNext())
  18.   {
  19.     $input_value_string = $arElement["PROPERTY_LAST_NAME_VALUE"]." ".$arElement["NAME"]." ".$arElement["PROPERTY_SECOND_NAME_VALUE"]." [".$arElement["ID"]."]";//  "Наталия [2061]";
  20.   }
  21.   else {
  22.     // если по какой то причине специалист не найден - заполняем переменуюю как бы это сделал стандартный функционал битрикс
  23.     $input_value_string = htmlspecialcharsback(CIBlockPropertyElementAutoComplete::GetValueForAutoComplete(
  24.       $arProperty,
  25.       $value,
  26.       array(",",";"),
  27.       array(" "," ")
  28.     ));
  29.   }
  30. }
  31. //заполняем переменю как бы это сделал стандартный функционал битрикс
  32. else {
  33.   $input_value_string = htmlspecialcharsback(CIBlockPropertyElementAutoComplete::GetValueForAutoComplete(
  34.     $arProperty, // массив свойства
  35.     $value, // массив значений
  36.     array(",",";"), // (системное значение по умолчанию, не трогать)
  37.     array(" "," ") // (системное значение по умолчанию, не трогать)
  38.   ));
  39. }
  40.  
  41.  
  42. $control_id = $APPLICATION->IncludeComponent(
  43.   "bitrix:main.lookup.input",
  44.   "iblockedit",
  45.   array(
  46.     "CONTROL_ID" => preg_replace(
  47.       "/[^a-zA-Z0-9_]/i",
  48.       "x",
  49.       $strHTMLControlName["VALUE"].'_'.mt_rand(0, 10000)
  50.     ),
  51.     "INPUT_NAME" => $strHTMLControlName["VALUE"],
  52.     "INPUT_NAME_STRING" => "inp_".$strHTMLControlName["VALUE"],
  53.     "INPUT_VALUE_STRING" => $input_value_string,
  54.     "START_TEXT" => "выберите значение",
  55.     "MULTIPLE" => "N",
  56.     "MAX_WIDTH" => 0,
  57.     "IBLOCK_ID" => $arProperty["LINK_IBLOCK_ID"], // инфоблок
  58.     'WITHOUT_IBLOCK' => true,  
  59.     'BAN_SYM' => $arSymbols['BAN_SYM_STRING'], // Заменяемые при показе символы
  60.     'REP_SYM' => $arSymbols['REP_SYM_STRING'], // Символ, который заменит при показе запрещенные символы
  61.     'FILTER' => 'Y' // можно ли использовать фильтр в открывшемся окне
  62.   ), null, array("HIDE_ICONS" => "Y")
  63. );
  64.  
  65. $html .= ob_get_contents();
  66. ob_end_clean();
  67.  
  68. // первая кнопка выбора из списка, вторая кнопка - добавление элемента
  69. $html .= "<input style='float: left; margin-right: 10px; margin-top: 5px;'
  70. type='button' value='...'
  71. title='...'
  72. onclick='jsUtils.OpenWindow(\"/bitrix/admin/iblock_element_search.php?lang=".LANGUAGE_ID."&IBLOCK_ID=".$arProperty["LINK_IBLOCK_ID"]."&n=&k=&lookup=jsMLI_".$control_id."&iblockfix=y&tableId=".$windowTableId."\", 900, 700);'>
  73.  
  74. <input type='button' style='margin-top: 5px;' value='+'
  75.       title='+'
  76.       onclick='jsUtils.OpenWindow(\"/bitrix/admin/".CIBlock::GetAdminElementEditLink(
  77.                 $arProperty["LINK_IBLOCK_ID"],
  78.                null,
  79.                array(
  80.                    'menu' => null,
  81.                    'IBLOCK_SECTION_ID' => -1,
  82.                    'find_section_section' => -1,
  83.                    'lookup' => 'jsMLI_'.$control_id,
  84.                    'tableId' => $windowTableId
  85.                ),
  86.                1 // закрепиться только за выбрнным инфоблоком в открытом окне
  87.            )."\", 900, 700);'>";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement