1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
prop_element_auto.php
См. документацию.
1<?php
2
7
9
11{
14
15 public static function GetUserTypeDescription()
16 {
17 return [
18 'PROPERTY_TYPE' => Iblock\PropertyTable::TYPE_ELEMENT,
20 'DESCRIPTION' => Loc::getMessage('BT_UT_EAUTOCOMPLETE_DESCR'),
21 'GetPropertyFieldHtml' => [__CLASS__, 'GetPropertyFieldHtml'],
22 'GetPropertyFieldHtmlMulty' => [__CLASS__,'GetPropertyFieldHtmlMulty'],
23 'GetAdminListViewHTML' => [__CLASS__,'GetAdminListViewHTML'],
24 'GetPublicViewHTML' => [__CLASS__, 'GetPublicViewHTML'],
25 'GetPublicEditHTML' => [__CLASS__, 'GetPublicEditHTML'],
26 'GetPublicEditHTMLMulty' => [__CLASS__, 'GetPublicEditHTML'],
27 'GetAdminFilterHTML' => [__CLASS__,'GetAdminFilterHTML'],
28 'GetSettingsHTML' => [__CLASS__,'GetSettingsHTML'],
29 'PrepareSettings' => [__CLASS__,'PrepareSettings'],
30 'AddFilterFields' => [__CLASS__,'AddFilterFields'],
31 'GetPublicFilterHTML' => [__CLASS__,'GetPublicFilterHTML'],
32 'GetUIFilterProperty' => [__CLASS__, 'GetUIFilterProperty'],
33 'GetUIEntityEditorProperty' => [__CLASS__, 'GetUIEntityEditorProperty'],
34 'GetUIEntityEditorPropertyEditHtml' => [__CLASS__, 'GetUIEntityEditorPropertyEditHtml'],
35 'GetUIEntityEditorPropertyViewHtml' => [__CLASS__, 'GetUIEntityEditorPropertyViewHtml'],
36 ];
37 }
38
39 public static function GetValueForAutoComplete($arProperty, $arValue, $arBanSym = '', $arRepSym = '')
40 {
41 $strResult = '';
42 $mxResult = static::GetPropertyValue($arProperty,$arValue);
43 if (is_array($mxResult))
44 {
45 $strResult = htmlspecialcharsbx(str_replace($arBanSym,$arRepSym,$mxResult['~NAME'])).' ['.$mxResult['ID'].']';
46 }
47
48 return $strResult;
49 }
50
51 public static function GetValueForAutoCompleteMulti($arProperty, $arValues, $arBanSym = '', $arRepSym = '')
52 {
53 $arResult = [];
54
55 if (is_array($arValues))
56 {
57 if (array_key_exists('VALUE', $arValues))
58 {
59 if (is_array($arValues['VALUE']))
60 {
61 $arValues = $arValues['VALUE'];
62 }
63 else
64 {
65 $arValues = [$arValues['VALUE']];
66 }
67 }
68 foreach ($arValues as $intPropertyValueID => $arOneValue)
69 {
70 if (!is_array($arOneValue))
71 {
72 $strTmp = $arOneValue;
73 $arOneValue = array(
74 'VALUE' => $strTmp,
75 );
76 }
77 $mxResult = static::GetPropertyValue($arProperty,$arOneValue);
78 if (is_array($mxResult))
79 {
80 $arResult[$intPropertyValueID] = htmlspecialcharsbx(str_replace($arBanSym,$arRepSym,$mxResult['~NAME'])).' ['.$mxResult['ID'].']';
81 }
82 }
83 }
84
85 return !empty($arResult) ? $arResult : false;
86 }
87
88 public static function GetPublicFilterHTML($arProperty, $strHTMLControlName)
89 {
90 return self::GetAdminFilterHTML($arProperty, $strHTMLControlName);
91 }
92
93 public static function GetPropertyFieldHtml($arProperty, $arValue, $strHTMLControlName)
94 {
95 global $APPLICATION;
96
97 $arSettings = static::PrepareSettings($arProperty);
98 if (isset($arSettings['USER_TYPE_SETTINGS']))
99 {
100 $arSettings = $arSettings['USER_TYPE_SETTINGS'];
101 }
102 $arSymbols = static::GetSymbols($arSettings);
103
104 $arProperty['LINK_IBLOCK_ID'] = (int)$arProperty['LINK_IBLOCK_ID'];
105 $fixIBlock = $arProperty['LINK_IBLOCK_ID'] > 0;
106 $windowTableId = 'iblockprop-'.Iblock\PropertyTable::TYPE_ELEMENT.'-'.$arProperty['ID'].'-'.$arProperty['LINK_IBLOCK_ID'];
107
108 if (isset($strHTMLControlName['MODE']) && $strHTMLControlName['MODE'] == 'iblock_element_admin')
109 {
110 $searchUrl = static::getSearchUrl().'?lang='.LANGUAGE_ID.
111 '&amp;IBLOCK_ID='.$arProperty['LINK_IBLOCK_ID'].
112 '&amp;n='.urlencode($strHTMLControlName['VALUE']).
113 ($fixIBlock ? '&amp;iblockfix=y' : '').
114 '&amp;tableId='.$windowTableId;
115 $mxElement = static::GetPropertyValue($arProperty,$arValue);
116 if (!is_array($mxElement))
117 {
118 $strResult = '<input type="text" name="'.htmlspecialcharsbx($strHTMLControlName["VALUE"]).'" id="'.$strHTMLControlName["VALUE"].'" value="" size="5">'.
119 '<input type="button" value="..." onClick="jsUtils.OpenWindow(\''.$searchUrl.'\', 900, 700);">'.
120 '&nbsp;<span id="sp_'.$strHTMLControlName["VALUE"].'" ></span>';
121 }
122 else
123 {
124 $strResult = '<input type="text" name="'.$strHTMLControlName["VALUE"].'" id="'.$strHTMLControlName["VALUE"].'" value="'.$arValue['VALUE'].'" size="5">'.
125 '<input type="button" value="..." onClick="jsUtils.OpenWindow(\''.$searchUrl.'\', 900, 700);">'.
126 '&nbsp;<span id="sp_'.$strHTMLControlName["VALUE"].'" >'.$mxElement['NAME'].'</span>';
127 }
128 unset($searchUrl);
129 }
130 else
131 {
132 ob_start();
133 ?><input type="hidden" name="<?=$strHTMLControlName["VALUE"]?>" value="" /><?
134 $control_id = $APPLICATION->IncludeComponent(
135 "bitrix:main.lookup.input",
136 "iblockedit",
137 array(
138 "CONTROL_ID" => preg_replace(
139 "/[^a-zA-Z0-9_]/i",
140 "x",
141 $strHTMLControlName["VALUE"].'_'.mt_rand(0, 10000)
142 ),
143 "INPUT_NAME" => $strHTMLControlName["VALUE"],
144 "INPUT_NAME_STRING" => "inp_".$strHTMLControlName["VALUE"],
145 "INPUT_VALUE_STRING" => htmlspecialcharsback(static::GetValueForAutoComplete(
146 $arProperty,
147 $arValue,
148 $arSymbols['BAN_SYM'],
149 $arSymbols['REP_SYM']
150 )),
151 "START_TEXT" => Loc::getMessage('BT_UT_EAUTOCOMPLETE_MESS_INVITE'),
152 "MULTIPLE" => $arProperty["MULTIPLE"],
153 "MAX_WIDTH" => $arSettings['MAX_WIDTH'],
154 "IBLOCK_ID" => $arProperty["LINK_IBLOCK_ID"],
155 'WITHOUT_IBLOCK' => (!$fixIBlock ? 'Y' : 'N'),
156 'BAN_SYM' => $arSymbols['BAN_SYM_STRING'],
157 'REP_SYM' => $arSymbols['REP_SYM_STRING'],
158 'FILTER' => 'Y'
159 ), null, array("HIDE_ICONS" => "Y")
160 );
161 ?><?
162 if ($arSettings['VIEW'] == 'T')
163 {
164 $APPLICATION->IncludeComponent(
165 'bitrix:main.tree.selector',
166 'iblockedit',
167 array(
168 "INPUT_NAME" => $strHTMLControlName["VALUE"],
169 'ONSELECT' => 'jsMLI_'.$control_id.'.SetValue',
170 'MULTIPLE' => $arProperty["MULTIPLE"],
171 'SHOW_INPUT' => 'N',
172 'SHOW_BUTTON' => 'Y',
173 'GET_FULL_INFO' => 'Y',
174 "START_TEXT" => Loc::getMessage("BT_UT_EAUTOCOMPLETE_MESS_LIST_INVITE"),
175 'BUTTON_CAPTION' => Loc::getMessage('BT_UT_EAUTOCOMPLETE_MESS_CHOOSE_ELEMENT'),
176 'BUTTON_TITLE' => Loc::getMessage('BT_UT_EAUTOCOMPLETE_MESS_CHOOSE_ELEMENT_DESCR'),
177 "NO_SEARCH_RESULT_TEXT" => Loc::getMessage("BT_UT_EAUTOCOMPLETE_MESS_NO_SEARCH_RESULT_TEXT"),
178 "IBLOCK_ID" => $arProperty["LINK_IBLOCK_ID"],
179 'WITHOUT_IBLOCK' => (!$fixIBlock ? 'Y' : 'N'),
180 'BAN_SYM' => $arSymbols['BAN_SYM_STRING'],
181 'REP_SYM' => $arSymbols['REP_SYM_STRING']
182 ), null, array("HIDE_ICONS" => "Y")
183 );
184 ?><?
185 }
186 elseif ($arSettings['VIEW'] == 'E')
187 {
188 $searchUrl = static::getSearchUrl().'?lang='.LANGUAGE_ID.
189 '&IBLOCK_ID='.$arProperty['LINK_IBLOCK_ID'].
190 '&n=&k=&lookup=jsMLI_'.$control_id.
191 ($fixIBlock ? '&iblockfix=y' : '').
192 '&tableId='.$windowTableId;
193 ?><input style="float: left; margin-right: 10px; margin-top: 5px;"
194 type="button" value="<? echo Loc::getMessage('BT_UT_EAUTOCOMPLETE_MESS_SEARCH_ELEMENT'); ?>"
195 title="<? echo Loc::getMessage('BT_UT_EAUTOCOMPLETE_MESS_SEARCH_ELEMENT_DESCR'); ?>"
196 onclick="jsUtils.OpenWindow('<?=$searchUrl; ?>', 900, 700);"><?
197 }
198 if ($arSettings['SHOW_ADD'] == 'Y' && $fixIBlock)
199 {
200 $strButtonCaption = '';
201 if ($arSettings['IBLOCK_MESS'] == 'Y')
202 {
203 $arLangMess = CIBlock::GetMessages($arProperty["LINK_IBLOCK_ID"]);
204 $strButtonCaption = $arLangMess['ELEMENT_ADD'];
205 unset($arLangMess);
206 }
207 if ($strButtonCaption == '')
208 $strButtonCaption = Loc::getMessage('BT_UT_EAUTOCOMPLETE_MESS_NEW_ELEMENT');
209 ?><input type="button" style="margin-top: 5px;" value="<? echo htmlspecialcharsbx($strButtonCaption); ?>"
210 title="<? echo Loc::getMessage('BT_UT_EAUTOCOMPLETE_MESS_NEW_ELEMENT_DESCR'); ?>"
211 onclick="jsUtils.OpenWindow('<? echo '/bitrix/admin/'.CIBlock::GetAdminElementEditLink(
212 $arProperty["LINK_IBLOCK_ID"],
213 null,
214 array(
215 'menu' => null,
216 'IBLOCK_SECTION_ID' => -1,
217 'find_section_section' => -1,
218 'lookup' => 'jsMLI_'.$control_id,
219 'tableId' => $windowTableId
220 ),
221 ($fixIBlock ? '&iblockfix=y' : '')
222 ); ?>', 900, 700);"
223 ><?
224 unset($strButtonCaption);
225 }
226 $strResult = ob_get_contents();
227 ob_end_clean();
228 }
229
230 return $strResult;
231 }
232
233 public static function GetPropertyFieldHtmlMulty($arProperty, $arValues, $strHTMLControlName)
234 {
235 global $APPLICATION;
236
237 $arSettings = static::PrepareSettings($arProperty);
238 if (isset($arSettings['USER_TYPE_SETTINGS']))
239 {
240 $arSettings = $arSettings['USER_TYPE_SETTINGS'];
241 }
242 $arSymbols = static::GetSymbols($arSettings);
243
244 $arProperty['LINK_IBLOCK_ID'] = (int)$arProperty['LINK_IBLOCK_ID'];
245 $fixIBlock = $arProperty['LINK_IBLOCK_ID'] > 0;
246 $windowTableId = 'iblockprop-'.Iblock\PropertyTable::TYPE_ELEMENT.'-'.$arProperty['ID'].'-'.$arProperty['LINK_IBLOCK_ID'];
247
248 if (isset($strHTMLControlName['MODE']) && $strHTMLControlName['MODE'] == 'iblock_element_admin')
249 {
250 $arResult = [];
251 foreach ($arValues as $intPropertyValueID => $arOneValue)
252 {
253 $mxElement = static::GetPropertyValue($arProperty,$arOneValue);
254 if (is_array($mxElement))
255 {
256 $searchUrl = static::getSearchUrl().'?lang='.LANGUAGE_ID.
257 '&amp;IBLOCK_ID='.$arProperty['LINK_IBLOCK_ID'].
258 '&amp;n='.urlencode($strHTMLControlName["VALUE"].'['.$intPropertyValueID.']').
259 ($fixIBlock ? '&amp;iblockfix=y' : '').
260 '&amp;tableId='.$windowTableId;
261 $arResult[] = '<input type="text" name="'.$strHTMLControlName["VALUE"].'['.$intPropertyValueID.']" id="'.$strHTMLControlName["VALUE"].'['.$intPropertyValueID.']" value="'.$arOneValue['VALUE'].'" size="5">'.
262 '<input type="button" value="..." onClick="jsUtils.OpenWindow(\''.$searchUrl.'\', 900, 700);">'.
263 '&nbsp;<span id="sp_'.$strHTMLControlName["VALUE"].'['.$intPropertyValueID.']" >'.$mxElement['NAME'].'</span>';
264 unset($searchUrl);
265 }
266 }
267
268 if ((int)$arProperty['MULTIPLE_CNT'] > 0)
269 {
270 for ($i = 0; $i < $arProperty['MULTIPLE_CNT']; $i++)
271 {
272 $searchUrl = static::getSearchUrl().'?lang='.LANGUAGE_ID.
273 '&amp;IBLOCK_ID='.$arProperty['LINK_IBLOCK_ID'].
274 '&amp;n='.urlencode($strHTMLControlName["VALUE"].'[n'.$i.']').
275 ($fixIBlock ? '&amp;iblockfix=y' : '').
276 '&amp;tableId='.$windowTableId;
277 $arResult[] = '<input type="text" name="'.$strHTMLControlName["VALUE"].'[n'.$i.']" id="'.$strHTMLControlName["VALUE"].'[n'.$i.']" value="" size="5">'.
278 '<input type="button" value="..." onClick="jsUtils.OpenWindow(\''.$searchUrl.'\', 900, 700);">'.
279 '&nbsp;<span id="sp_'.$strHTMLControlName["VALUE"].'[n'.$i.']" ></span>';
280 }
281 unset($searchUrl);
282 }
283
284 $strResult = implode('<br />',$arResult);
285 }
286 else
287 {
288 $mxResultValue = static::GetValueForAutoCompleteMulti($arProperty,$arValues,$arSymbols['BAN_SYM'],$arSymbols['REP_SYM']);
289 $strResultValue = (is_array($mxResultValue) ? htmlspecialcharsback(implode("\n",$mxResultValue)) : '');
290
291 ob_start();
292 ?><input type="hidden" name="<?=$strHTMLControlName["VALUE"]?>" value="" /><?
293 $control_id = $APPLICATION->IncludeComponent(
294 "bitrix:main.lookup.input",
295 "iblockedit",
296 array(
297 "CONTROL_ID" => preg_replace(
298 "/[^a-zA-Z0-9_]/i",
299 "x",
300 $strHTMLControlName["VALUE"].'_'.mt_rand(0, 10000)
301 ),
302 "INPUT_NAME" => $strHTMLControlName['VALUE'].'[]',
303 "INPUT_NAME_STRING" => "inp_".$strHTMLControlName['VALUE'],
304 "INPUT_VALUE_STRING" => $strResultValue,
305 "START_TEXT" => Loc::getMessage('BT_UT_EAUTOCOMPLETE_MESS_INVITE'),
306 "MULTIPLE" => $arProperty["MULTIPLE"],
307 "MAX_WIDTH" => $arSettings['MAX_WIDTH'],
308 "MIN_HEIGHT" => $arSettings['MIN_HEIGHT'],
309 "MAX_HEIGHT" => $arSettings['MAX_HEIGHT'],
310 "IBLOCK_ID" => $arProperty["LINK_IBLOCK_ID"],
311 'WITHOUT_IBLOCK' => (!$fixIBlock ? 'Y' : 'N'),
312 'BAN_SYM' => $arSymbols['BAN_SYM_STRING'],
313 'REP_SYM' => $arSymbols['REP_SYM_STRING'],
314 'FILTER' => 'Y'
315 ), null, array("HIDE_ICONS" => "Y")
316 );
317 ?><?
318 if ($arSettings['VIEW'] == 'T')
319 {
320 $APPLICATION->IncludeComponent(
321 'bitrix:main.tree.selector',
322 'iblockedit',
323 array(
324 "INPUT_NAME" => $strHTMLControlName['VALUE'],
325 'ONSELECT' => 'jsMLI_'.$control_id.'.SetValue',
326 'MULTIPLE' => $arProperty["MULTIPLE"],
327 'SHOW_INPUT' => 'N',
328 'SHOW_BUTTON' => 'Y',
329 'GET_FULL_INFO' => 'Y',
330 "START_TEXT" => Loc::getMessage("BT_UT_EAUTOCOMPLETE_MESS_LIST_INVITE"),
331 'BUTTON_CAPTION' => Loc::getMessage('BT_UT_EAUTOCOMPLETE_MESS_CHOOSE_ELEMENT'),
332 'BUTTON_TITLE' => Loc::getMessage('BT_UT_EAUTOCOMPLETE_MESS_CHOOSE_ELEMENT_MULTI_DESCR'),
333 "NO_SEARCH_RESULT_TEXT" => Loc::getMessage("BT_UT_EAUTOCOMPLETE_MESS_NO_SEARCH_RESULT_TEXT"),
334 "IBLOCK_ID" => $arProperty["LINK_IBLOCK_ID"],
335 'WITHOUT_IBLOCK' => (!$fixIBlock ? 'Y' : 'N'),
336 'BAN_SYM' => $arSymbols['BAN_SYM_STRING'],
337 'REP_SYM' => $arSymbols['REP_SYM_STRING']
338 ), null, array("HIDE_ICONS" => "Y")
339 );
340 ?><?
341 }
342 elseif ($arSettings['VIEW'] == 'E')
343 {
344 $searchUrl = static::getSearchUrl().'?lang='.LANGUAGE_ID.
345 '&IBLOCK_ID='.$arProperty["LINK_IBLOCK_ID"].
346 '&n=&k=&m=y&lookup=jsMLI_'.$control_id.
347 ($fixIBlock ? '&iblockfix=y' : '').
348 '&tableId='.$windowTableId;
349
350 ?><input style="float: left; margin-right: 10px; margin-top: 5px;" type="button" value="<? echo Loc::getMessage('BT_UT_EAUTOCOMPLETE_MESS_SEARCH_ELEMENT'); ?>"
351 title="<? echo Loc::getMessage('BT_UT_EAUTOCOMPLETE_MESS_SEARCH_ELEMENT_MULTI_DESCR'); ?>"
352 onclick="jsUtils.OpenWindow('<?=$searchUrl; ?>', 900, 700);"><?
353 unset($searchUrl);
354 }
355 if ($arSettings['SHOW_ADD'] == 'Y' && $fixIBlock)
356 {
357 $strButtonCaption = '';
358 if ($arSettings['IBLOCK_MESS'] == 'Y')
359 {
360 $arLangMess = CIBlock::GetMessages($arProperty["LINK_IBLOCK_ID"]);
361 $strButtonCaption = $arLangMess['ELEMENT_ADD'];
362 unset($arLangMess);
363 }
364 if ('' == $strButtonCaption)
365 $strButtonCaption = Loc::getMessage('BT_UT_EAUTOCOMPLETE_MESS_NEW_ELEMENT');
366 ?><input type="button" style="margin-top: 5px;" value="<? echo htmlspecialcharsbx($strButtonCaption); ?>"
367 title="<? echo Loc::getMessage('BT_UT_EAUTOCOMPLETE_MESS_NEW_ELEMENT_DESCR'); ?>"
368 onclick="jsUtils.OpenWindow('<? echo '/bitrix/admin/'.CIBlock::GetAdminElementEditLink(
369 $arProperty["LINK_IBLOCK_ID"],
370 null,
371 array(
372 'menu' => null,
373 'IBLOCK_SECTION_ID' => -1,
374 'find_section_section' => -1,
375 'lookup' => 'jsMLI_'.$control_id,
376 'tableId' => $windowTableId
377 ),
378 ($fixIBlock ? '&iblockfix=y' : '')
379 ); ?>', 900, 700);"
380 ><?
381 unset($strButtonCaption);
382 }
383 $strResult = ob_get_contents();
384 ob_end_clean();
385 }
386
387 return $strResult;
388 }
389
390 public static function GetAdminListViewHTML($arProperty, $arValue, $strHTMLControlName)
391 {
392 $strResult = '';
393 $mxResult = static::GetPropertyValue($arProperty,$arValue);
394 if (is_array($mxResult))
395 {
396 $strResult = $mxResult['NAME'].' [<a href="/bitrix/admin/'.
397 CIBlock::GetAdminElementEditLink(
398 $mxResult['IBLOCK_ID'],
399 $mxResult['ID'],
400 array(
401 'WF' => 'Y'
402 )
403 ).'" title="'.Loc::getMessage("BT_UT_EAUTOCOMPLETE_MESS_ELEMENT_EDIT").'">'.$mxResult['ID'].'</a>]';
404 }
405
406 return $strResult;
407 }
408
409 public static function GetPublicViewHTML($arProperty, $arValue, $strHTMLControlName)
410 {
411 static $cache = array();
412
413 $strResult = '';
414 $arValue['VALUE'] = (int)($arValue['VALUE'] ?? 0);
415 if ($arValue['VALUE'] > 0)
416 {
417 $viewMode = '';
418 $resultKey = '';
419 if (!empty($strHTMLControlName['MODE']))
420 {
421 switch ($strHTMLControlName['MODE'])
422 {
423 case 'CSV_EXPORT':
424 $viewMode = 'CSV_EXPORT';
425 $resultKey = 'ID';
426 break;
427 case 'EXTERNAL_ID':
428 $viewMode = 'EXTERNAL_ID';
429 $resultKey = '~XML_ID';
430 break;
431 case 'SIMPLE_TEXT':
432 $viewMode = 'SIMPLE_TEXT';
433 $resultKey = '~NAME';
434 break;
435 case 'ELEMENT_TEMPLATE':
436 $viewMode = 'ELEMENT_TEMPLATE';
437 $resultKey = '~NAME';
438 break;
439 case 'BIZPROC':
440 $viewMode = 'BIZPROC';
441 break;
442 }
443 }
444 if (!isset($cache[$arValue['VALUE']]))
445 {
446 $arFilter = array();
447 $intIBlockID = (int)$arProperty['LINK_IBLOCK_ID'];
448 if ($intIBlockID > 0)
449 {
450 $arFilter['IBLOCK_ID'] = $intIBlockID;
451 }
452 $arFilter['ID'] = $arValue['VALUE'];
453 if ($viewMode === '')
454 {
455 $arFilter['ACTIVE'] = 'Y';
456 $arFilter['ACTIVE_DATE'] = 'Y';
457 $arFilter['CHECK_PERMISSIONS'] = 'Y';
458 $arFilter['MIN_PERMISSION'] = 'R';
459 }
460 $rsElements = CIBlockElement::GetList(
461 array(),
462 $arFilter,
463 false,
464 false,
465 array('ID', 'XML_ID', 'IBLOCK_ID', 'NAME', 'DETAIL_PAGE_URL')
466 );
467 if (isset($strHTMLControlName['DETAIL_URL']))
468 {
469 $rsElements->SetUrlTemplates($strHTMLControlName['DETAIL_URL']);
470 }
471 $cache[$arValue['VALUE']] = $rsElements->GetNext(true, true);
472 unset($rsElements);
473 }
474 if (!empty($cache[$arValue['VALUE']]) && is_array($cache[$arValue['VALUE']]))
475 {
476 if ($viewMode !== '' && $resultKey !== '')
477 {
478 $strResult = $cache[$arValue['VALUE']][$resultKey];
479 }
480 else
481 {
482 $strResult = '<a href="'.$cache[$arValue['VALUE']]['DETAIL_PAGE_URL'].'">'.$cache[$arValue['VALUE']]['NAME'].'</a>';
483 }
484 }
485 }
486
487 return $strResult;
488 }
489
490 public static function GetPublicEditHTML($property, $value, $control)
491 {
492 global $APPLICATION;
493
494 $multi = (isset($property['MULTIPLE']) && $property['MULTIPLE'] == 'Y');
495 $settings = static::PrepareSettings($property);
496 if (isset($settings['USER_TYPE_SETTINGS']))
497 {
498 $settings = $settings['USER_TYPE_SETTINGS'];
499 }
500 $symbols = static::GetSymbols($settings);
501 $fixIBlock = $property["LINK_IBLOCK_ID"] > 0;
502
503 ob_start();
504
505 if ($multi)
506 {
507 $resultValue = static::GetValueForAutoCompleteMulti(
508 $property,
509 $value,
510 $symbols['BAN_SYM'],
511 $symbols['REP_SYM']
512 );
513 $resultValue = (is_array($resultValue) ? htmlspecialcharsback(implode("\n",$resultValue)) : '');
514 }
515 else
516 {
517 $resultValue = htmlspecialcharsback(static::GetValueForAutoComplete(
518 $property,
519 $value,
520 $symbols['BAN_SYM'],
521 $symbols['REP_SYM']
522 ));
523 }
524
525 $APPLICATION->IncludeComponent(
526 'bitrix:main.lookup.input',
527 'iblockedit',
528 array(
529 'CONTROL_ID' => preg_replace(
530 "/[^a-zA-Z0-9_]/i",
531 "x",
532 $control['VALUE'].'_'.mt_rand(0, 10000)
533 ),
534 'INPUT_NAME' => $control['VALUE'].($multi ? '[]' : ''),
535 'INPUT_NAME_STRING' => 'inp_'.$control['VALUE'],
536 'INPUT_VALUE_STRING' => $resultValue,
537 'START_TEXT' => Loc::getMessage('BT_UT_EAUTOCOMPLETE_MESS_INVITE'),
538 'MULTIPLE' => $property['MULTIPLE'],
539 'IBLOCK_ID' => $property['LINK_IBLOCK_ID'],
540 'WITHOUT_IBLOCK' => (!$fixIBlock ? 'Y' : 'N'),
541 'BAN_SYM' => $symbols['BAN_SYM_STRING'],
542 'REP_SYM' => $symbols['REP_SYM_STRING'],
543 'MAX_WIDTH' => $settings['MAX_WIDTH'],
544 'MIN_HEIGHT' => $settings['MIN_HEIGHT'],
545 'MAX_HEIGHT' => $settings['MAX_HEIGHT'],
546 'FILTER' => 'Y'
547 ),
548 ($control['PARENT_COMPONENT'] ?? null),
549 array('HIDE_ICONS' => 'Y')
550 );
551
552 $result = ob_get_contents();
553 ob_end_clean();
554
555 return $result;
556 }
557
558 public static function PrepareSettings($arFields)
559 {
560 /*
561 * VIEW - view type
562 * SHOW_ADD - show button for add new values in linked iblock
563 * MAX_WIDTH - max width textarea and input in pixels
564 * MIN_HEIGHT - min height textarea in pixels
565 * MAX_HEIGHT - max height textarea in pixels
566 * BAN_SYM - banned symbols string
567 * REP_SYM - replace symbol
568 * OTHER_REP_SYM - non standart replace symbol
569 * IBLOCK_MESS - get lang mess from linked iblock
570 */
571 $arViewsList = static::GetPropertyViewsList(false);
572 $strView = (isset($arFields['USER_TYPE_SETTINGS']['VIEW']) && in_array($arFields['USER_TYPE_SETTINGS']['VIEW'],$arViewsList) ? $arFields['USER_TYPE_SETTINGS']['VIEW'] : current($arViewsList));
573
574 $strShowAdd = ($arFields['USER_TYPE_SETTINGS']['SHOW_ADD'] ?? '');
575 $strShowAdd = ($strShowAdd == 'Y' ? 'Y' : 'N');
576 if ((int)($arFields['LINK_IBLOCK_ID'] ?? 0) <= 0)
577 $strShowAdd = 'N';
578
579 $intMaxWidth = (int)($arFields['USER_TYPE_SETTINGS']['MAX_WIDTH'] ?? 0);
580 if ($intMaxWidth <= 0) $intMaxWidth = 0;
581
582 $intMinHeight = (int)($arFields['USER_TYPE_SETTINGS']['MIN_HEIGHT'] ?? 0);
583 if ($intMinHeight <= 0) $intMinHeight = 24;
584
585 $intMaxHeight = (int)($arFields['USER_TYPE_SETTINGS']['MAX_HEIGHT'] ?? 0);
586 if ($intMaxHeight <= 0) $intMaxHeight = 1000;
587
588 $strBannedSymbols = trim((string)($arFields['USER_TYPE_SETTINGS']['BAN_SYM'] ?? ',;'));
589 $strBannedSymbols = str_replace(' ', '', $strBannedSymbols);
590 if (mb_strpos($strBannedSymbols, ',') === false)
591 $strBannedSymbols .= ',';
592 if (mb_strpos($strBannedSymbols, ';') === false)
593 $strBannedSymbols .= ';';
594
595 $strOtherReplaceSymbol = '';
596 $strReplaceSymbol = ($arFields['USER_TYPE_SETTINGS']['REP_SYM'] ?? ' ');
597 if ($strReplaceSymbol == BT_UT_AUTOCOMPLETE_REP_SYM_OTHER)
598 {
599 $strOtherReplaceSymbol = (isset($arFields['USER_TYPE_SETTINGS']['OTHER_REP_SYM'])? mb_substr($arFields['USER_TYPE_SETTINGS']['OTHER_REP_SYM'], 0, 1) : '');
600 if ((',' == $strOtherReplaceSymbol) || (';' == $strOtherReplaceSymbol))
601 $strOtherReplaceSymbol = '';
602 if (('' == $strOtherReplaceSymbol) || in_array($strOtherReplaceSymbol, static::GetReplaceSymList()))
603 {
604 $strReplaceSymbol = $strOtherReplaceSymbol;
605 $strOtherReplaceSymbol = '';
606 }
607 }
608 if ('' == $strReplaceSymbol)
609 {
610 $strReplaceSymbol = ' ';
611 $strOtherReplaceSymbol = '';
612 }
613
614 $strIBlockMess = ($arFields['USER_TYPE_SETTINGS']['IBLOCK_MESS'] ?? '');
615 if ('Y' != $strIBlockMess) $strIBlockMess = 'N';
616
617 return [
618 'VIEW' => $strView,
619 'SHOW_ADD' => $strShowAdd,
620 'MAX_WIDTH' => $intMaxWidth,
621 'MIN_HEIGHT' => $intMinHeight,
622 'MAX_HEIGHT' => $intMaxHeight,
623 'BAN_SYM' => $strBannedSymbols,
624 'REP_SYM' => $strReplaceSymbol,
625 'OTHER_REP_SYM' => $strOtherReplaceSymbol,
626 'IBLOCK_MESS' => $strIBlockMess,
627 ];
628 }
629
630 public static function GetSettingsHTML($arFields,$strHTMLControlName, &$arPropertyFields)
631 {
632 $arPropertyFields = [
633 "HIDE" => ["ROW_COUNT", "COL_COUNT","MULTIPLE_CNT"],
634 'USER_TYPE_SETTINGS_TITLE' => Loc::getMessage('BT_UT_EAUTOCOMPLETE_SETTING_TITLE'),
635 ];
636
637 $arSettings = static::PrepareSettings($arFields);
638 if (isset($arSettings['USER_TYPE_SETTINGS']))
639 {
640 $arSettings = $arSettings['USER_TYPE_SETTINGS'];
641 }
642
643 return '<tr>
644 <td>'.Loc::getMessage('BT_UT_EAUTOCOMPLETE_SETTING_VIEW').'</td>
645 <td>'.SelectBoxFromArray($strHTMLControlName["NAME"].'[VIEW]', static::GetPropertyViewsList(true),htmlspecialcharsbx($arSettings['VIEW'])).'</td>
646 </tr>
647 <tr>
648 <td>'.Loc::getMessage('BT_UT_EAUTOCOMPLETE_SETTING_SHOW_ADD').'</td>
649 <td>'.InputType('checkbox',$strHTMLControlName["NAME"].'[SHOW_ADD]','Y',htmlspecialcharsbx($arSettings["SHOW_ADD"])).'</td>
650 </tr>
651 <tr>
652 <td>'.Loc::getMessage('BT_UT_EAUTOCOMPLETE_SETTING_IBLOCK_MESS').'</td>
653 <td>'.InputType('checkbox',$strHTMLControlName["NAME"].'[IBLOCK_MESS]','Y',htmlspecialcharsbx($arSettings["IBLOCK_MESS"])).'</td>
654 </tr>
655 <tr>
656 <td>'.Loc::getMessage('BT_UT_EAUTOCOMPLETE_SETTING_MAX_WIDTH').'</td>
657 <td><input type="text" name="'.$strHTMLControlName["NAME"].'[MAX_WIDTH]" value="'.(int)$arSettings['MAX_WIDTH'].'">&nbsp;'.Loc::getMessage('BT_UT_EAUTOCOMPLETE_SETTING_COMMENT_MAX_WIDTH').'</td>
658 </tr>
659 <tr>
660 <td>'.Loc::getMessage('BT_UT_EAUTOCOMPLETE_SETTING_MIN_HEIGHT').'</td>
661 <td><input type="text" name="'.$strHTMLControlName["NAME"].'[MIN_HEIGHT]" value="'.(int)$arSettings['MIN_HEIGHT'].'">&nbsp;'.Loc::getMessage('BT_UT_EAUTOCOMPLETE_SETTING_COMMENT_MIN_HEIGHT').'</td>
662 </tr>
663 <tr>
664 <td>'.Loc::getMessage('BT_UT_EAUTOCOMPLETE_SETTING_MAX_HEIGHT').'</td>
665 <td><input type="text" name="'.$strHTMLControlName["NAME"].'[MAX_HEIGHT]" value="'.(int)$arSettings['MAX_HEIGHT'].'">&nbsp;'.Loc::getMessage('BT_UT_EAUTOCOMPLETE_SETTING_COMMENT_MAX_HEIGHT').'</td>
666 </tr>
667 <tr>
668 <td>'.Loc::getMessage('BT_UT_EAUTOCOMPLETE_SETTING_BAN_SYMBOLS').'</td>
669 <td><input type="text" name="'.$strHTMLControlName["NAME"].'[BAN_SYM]" value="'.htmlspecialcharsbx($arSettings['BAN_SYM']).'"></td>
670 </tr>
671 <tr>
672 <td>'.Loc::getMessage('BT_UT_EAUTOCOMPLETE_SETTING_REP_SYMBOL').'</td>
673 <td>'.SelectBoxFromArray($strHTMLControlName["NAME"].'[REP_SYM]', static::GetReplaceSymList(true),htmlspecialcharsbx($arSettings['REP_SYM'])).'&nbsp;<input type="text" name="'.$strHTMLControlName["NAME"].'[OTHER_REP_SYM]" size="1" maxlength="1" value="'.htmlspecialcharsbx($arSettings['OTHER_REP_SYM']).'"></td>
674 </tr>
675 ';
676 }
677
678 public static function GetAdminFilterHTML($arProperty, $strHTMLControlName)
679 {
680 global $APPLICATION;
681
682 $arSettings = static::PrepareSettings($arProperty);
683 if (isset($arSettings['USER_TYPE_SETTINGS']))
684 {
685 $arSettings = $arSettings['USER_TYPE_SETTINGS'];
686 }
687 $arSymbols = static::GetSymbols($arSettings);
688
689 $selfFolderUrl = (defined("SELF_FOLDER_URL") ? SELF_FOLDER_URL : "/bitrix/admin/");
690
691 $isMainUiFilter = ($strHTMLControlName["FORM_NAME"] ?? '') === "main-ui-filter";
692 $inputName = $strHTMLControlName['VALUE'].'[]';
693 if ($isMainUiFilter)
694 {
695 $inputName = $strHTMLControlName['VALUE'];
696 }
697
698 $strValue = '';
699
700 $fixIBlock = $arProperty["LINK_IBLOCK_ID"] > 0;
701 $windowTableId = 'iblockprop-'.Iblock\PropertyTable::TYPE_ELEMENT.'-'.$arProperty['ID'].'-'.$arProperty['LINK_IBLOCK_ID'];
702
703 if (isset($_REQUEST[$strHTMLControlName["VALUE"]]) && (is_array($_REQUEST[$strHTMLControlName["VALUE"]]) || (0 < (int)$_REQUEST[$strHTMLControlName["VALUE"]])))
704 {
705 $arFilterValues = (is_array($_REQUEST[$strHTMLControlName["VALUE"]]) ? $_REQUEST[$strHTMLControlName["VALUE"]] : array($_REQUEST[$strHTMLControlName["VALUE"]]));
706 $mxResultValue = static::GetValueForAutoCompleteMulti($arProperty,$arFilterValues,$arSymbols['BAN_SYM'],$arSymbols['REP_SYM']);
707 $strValue = (is_array($mxResultValue) ? htmlspecialcharsback(implode("\n",$mxResultValue)) : '');
708 }
709 elseif (isset($GLOBALS[$strHTMLControlName["VALUE"]]) && (is_array($GLOBALS[$strHTMLControlName["VALUE"]]) || (0 < (int)$GLOBALS[$strHTMLControlName["VALUE"]])))
710 {
711 $arFilterValues = (is_array($GLOBALS[$strHTMLControlName["VALUE"]]) ? $GLOBALS[$strHTMLControlName["VALUE"]] : array($GLOBALS[$strHTMLControlName["VALUE"]]));
712 $mxResultValue = static::GetValueForAutoCompleteMulti($arProperty,$arFilterValues,$arSymbols['BAN_SYM'],$arSymbols['REP_SYM']);
713 $strValue = (is_array($mxResultValue) ? htmlspecialcharsback(implode("\n",$mxResultValue)) : '');
714 }
715 ob_start();
716 ?><?
717 $control_id = $APPLICATION->IncludeComponent(
718 "bitrix:main.lookup.input",
719 "iblockedit",
720 array(
721 "INPUT_NAME" => $inputName,
722 "INPUT_NAME_STRING" => "inp_".$strHTMLControlName['VALUE'],
723 "INPUT_VALUE_STRING" => $strValue,
724 "START_TEXT" => '',
725 "MULTIPLE" => $isMainUiFilter ? 'N' : 'Y', // TODO
726 'MAX_WIDTH' => '200',
727 'MIN_HEIGHT' => '24',
728 "IBLOCK_ID" => $arProperty["LINK_IBLOCK_ID"],
729 'WITHOUT_IBLOCK' => (!$fixIBlock ? 'Y' : 'N'),
730 'BAN_SYM' => $arSymbols['BAN_SYM_STRING'],
731 'REP_SYM' => $arSymbols['REP_SYM_STRING'],
732 'FILTER' => 'Y',
733 'MAIN_UI_FILTER' => ($isMainUiFilter ? 'Y' : 'N'),
734 ), null, array("HIDE_ICONS" => "Y")
735 );
736 $inputStyle = 'float: left; margin-right: 10px;';
737 if ($isMainUiFilter)
738 {
739 $inputStyle = 'float: left; margin-right: 4px; margin-top: 7px; margin-left: 10px;';
740 }
741 ?><input style="<?=$inputStyle?>" type="button"
742 value="<? echo Loc::getMessage('BT_UT_EAUTOCOMPLETE_MESS_SEARCH_ELEMENT'); ?>"
743 title="<? echo Loc::getMessage('BT_UT_EAUTOCOMPLETE_MESS_SEARCH_ELEMENT_MULTI_DESCR'); ?>"
744 onclick="jsUtils.OpenWindow('<?=$selfFolderUrl?>iblock_element_search.php?lang=<? echo LANGUAGE_ID; ?>&IBLOCK_ID=<? echo $arProperty["LINK_IBLOCK_ID"]; ?>&n=&k=&m=y&lookup=<? echo 'jsMLI_'.$control_id; ?><?=($fixIBlock ? '&iblockfix=y' : '').'&tableId='.$windowTableId; ?>', 900, 700);">
745 <script>
746 var arClearHiddenFields = arClearHiddenFields;
747 if (!!arClearHiddenFields)
748 {
749 indClearHiddenFields = arClearHiddenFields.length;
750 arClearHiddenFields[indClearHiddenFields] = 'jsMLI_<? echo $control_id; ?>';
751 }
752 </script><?
753 $strResult = ob_get_contents();
754 ob_end_clean();
755
756 return $strResult;
757 }
758
759 public static function AddFilterFields($arProperty, $strHTMLControlName, &$arFilter, &$filtered)
760 {
761 $filtered = false;
762 $arFilterValues = array();
763
764 if (isset($strHTMLControlName["FILTER_ID"]))
765 {
766 $filterOption = new \Bitrix\Main\UI\Filter\Options($strHTMLControlName["FILTER_ID"]);
767 $filterData = $filterOption->getFilter();
768 if (!empty($filterData[$strHTMLControlName["VALUE"]]))
769 {
770 $arFilterValues = (is_array($filterData[$strHTMLControlName["VALUE"]]) ?
771 $filterData[$strHTMLControlName["VALUE"]] : array($filterData[$strHTMLControlName["VALUE"]]));
772 }
773 }
774 else
775 {
776 if (isset($_REQUEST[$strHTMLControlName["VALUE"]]) && (is_array($_REQUEST[$strHTMLControlName["VALUE"]]) ||
777 (0 < (int)$_REQUEST[$strHTMLControlName["VALUE"]])))
778 {
779 $arFilterValues = (is_array($_REQUEST[$strHTMLControlName["VALUE"]]) ?
780 $_REQUEST[$strHTMLControlName["VALUE"]] : array($_REQUEST[$strHTMLControlName["VALUE"]]));
781 }
782 elseif (isset($GLOBALS[$strHTMLControlName["VALUE"]]) && (is_array($GLOBALS[$strHTMLControlName["VALUE"]]) ||
783 (0 < (int)$GLOBALS[$strHTMLControlName["VALUE"]])))
784 {
785 $arFilterValues = (is_array($GLOBALS[$strHTMLControlName["VALUE"]]) ?
786 $GLOBALS[$strHTMLControlName["VALUE"]] : array($GLOBALS[$strHTMLControlName["VALUE"]]));
787 }
788 }
789
790 Main\Type\Collection::normalizeArrayValuesByInt($arFilterValues, false);
791
792 if (!empty($arFilterValues))
793 {
794 $arFilter["=PROPERTY_".$arProperty["ID"]] = $arFilterValues;
795 $filtered = true;
796 }
797 }
798
805 public static function GetUIFilterProperty($property, $strHTMLControlName, &$fields)
806 {
807 unset($fields['value'], $fields['filterable']);
808 $fields['type'] = 'entity_selector';
809 $fields['params'] = [
810 'multiple' => 'Y',
811 'dialogOptions' => [
812 'entities' => [
813 [
814 'id' => IblockPropertyElementProvider::ENTITY_ID,
815 'dynamicLoad' => true,
816 'dynamicSearch' => true,
817 'options' => [
818 'iblockId' => (int)($property['LINK_IBLOCK_ID'] ?? 0),
819 ],
820 ],
821 ],
822 'searchOptions' => [
823 'allowCreateItem' => false,
824 ],
825 ],
826 ];
827 }
828
829 protected static function GetLinkElement($elementId, $iblockId)
830 {
831 static $cache = [];
832
833 $iblockId = (int)$iblockId;
834 if ($iblockId <= 0)
835 $iblockId = 0;
836 $elementId = (int)$elementId;
837 if ($elementId <= 0)
838 return false;
839 if (!isset($cache[$elementId]))
840 {
841 $arFilter = [];
842 if ($iblockId > 0)
843 $arFilter['IBLOCK_ID'] = $iblockId;
844 $arFilter['ID'] = $elementId;
845 $arFilter['SHOW_HISTORY'] = 'Y';
846 $rsElements = CIBlockElement::GetList([], $arFilter, false, false, ['IBLOCK_ID','ID','NAME']);
847 if ($arElement = $rsElements->GetNext())
848 {
849 $arResult = array(
850 'ID' => $arElement['ID'],
851 'NAME' => $arElement['NAME'],
852 '~NAME' => $arElement['~NAME'],
853 'IBLOCK_ID' => $arElement['IBLOCK_ID'],
854 );
855 $cache[$elementId] = $arResult;
856 }
857 else
858 {
859 $cache[$elementId] = false;
860 }
861 }
862
863 return $cache[$elementId];
864 }
865
866 protected static function GetPropertyValue($arProperty, $arValue)
867 {
868 $mxResult = false;
869 if ((int)($arValue['VALUE'] ?? 0) > 0)
870 {
871 $mxResult = static::GetLinkElement((int)$arValue['VALUE'], (int)$arProperty['LINK_IBLOCK_ID']);
872 if (is_array($mxResult))
873 {
874 $mxResult['PROPERTY_ID'] = $arProperty['ID'];
875 if (isset($arProperty['PROPERTY_VALUE_ID']))
876 {
877 $mxResult['PROPERTY_VALUE_ID'] = $arProperty['PROPERTY_VALUE_ID'];
878 }
879 else
880 {
881 $mxResult['PROPERTY_VALUE_ID'] = false;
882 }
883 }
884 }
885
886 return $mxResult;
887 }
888
889 protected static function GetPropertyViewsList($boolFull)
890 {
891 $boolFull = ($boolFull === true);
892 if ($boolFull)
893 {
894 return array(
895 'REFERENCE' => array(
896 Loc::getMessage('BT_UT_EAUTOCOMPLETE_VIEW_AUTO'),
897 Loc::getMessage('BT_UT_EAUTOCOMPLETE_VIEW_TREE'),
898 Loc::getMessage('BT_UT_EAUTOCOMPLETE_VIEW_ELEMENT'),
899 ),
900 'REFERENCE_ID' => array(
901 'A','T','E'
902 ),
903 );
904 }
905 return array('A','T','E');
906 }
907
908 protected static function GetReplaceSymList($boolFull = false)
909 {
910 $boolFull = ($boolFull === true);
911 if ($boolFull)
912 {
913 return array(
914 'REFERENCE' => array(
915 Loc::getMessage('BT_UT_AUTOCOMPLETE_SYM_SPACE'),
916 Loc::getMessage('BT_UT_AUTOCOMPLETE_SYM_GRID'),
917 Loc::getMessage('BT_UT_AUTOCOMPLETE_SYM_STAR'),
918 Loc::getMessage('BT_UT_AUTOCOMPLETE_SYM_UNDERLINE'),
919 Loc::getMessage('BT_UT_AUTOCOMPLETE_SYM_OTHER'),
920
921 ),
922 'REFERENCE_ID' => array(
923 ' ',
924 '#',
925 '*',
926 '_',
927 BT_UT_AUTOCOMPLETE_REP_SYM_OTHER,
928 ),
929 );
930 }
931 return array(' ', '#', '*','_');
932 }
933
934 protected static function GetSymbols($arSettings)
935 {
936 $strBanSym = $arSettings['BAN_SYM'] ?? '';
937 $repSym = $arSettings['REP_SYM'] ?? '';
938 $otherRepSym = $arSettings['OTHER_REP_SYM'] ?? '';
939 $strRepSym = (BT_UT_AUTOCOMPLETE_REP_SYM_OTHER == $repSym ? $otherRepSym : $repSym);
940 $arBanSym = str_split($strBanSym,1);
941
942 return [
943 'BAN_SYM' => $arBanSym,
944 'REP_SYM' => array_fill(0,sizeof($arBanSym),$strRepSym),
945 'BAN_SYM_STRING' => $strBanSym,
946 'REP_SYM_STRING' => $strRepSym,
947 ];
948 }
949
955 protected static function getSearchUrl()
956 {
957 //TODO: need use \CAdminPage::getSelfFolderUrl, but in general it is impossible now
958 return (defined('SELF_FOLDER_URL') ? SELF_FOLDER_URL : '/bitrix/admin/').'iblock_element_search.php';
959 }
960
961 public static function GetUIEntityEditorProperty($settings, $value)
962 {
963 return [
964 'type' => 'custom',
965 ];
966 }
967
968 public static function GetUIEntityEditorPropertyEditHtml(array $params = []) : string
969 {
970 $property = [
971 'PROPERTY_TYPE' => Iblock\PropertyTable::TYPE_ELEMENT,
972 'USER_TYPE' => Iblock\PropertyTable::USER_TYPE_ELEMENT_AUTOCOMPLETE,
973 'LINK_IBLOCK_ID' => (int)($params['SETTINGS']['LINK_IBLOCK_ID'] ?? 0),
974 'MULTIPLE' => ($params['SETTINGS']['MULTIPLE'] ?? 'N') === 'Y' ? 'Y' : 'N',
975 ];
976
977 $config = [
978 'FIELD_NAME' => $params['FIELD_NAME'],
979 'CHANGE_EVENTS' => [
980 'onChangeIblockElement',
981 ],
982 'ENTITY_ID' => IblockPropertyElementProvider::ENTITY_ID,
983 ];
984
985 return Iblock\UI\Input\Element::renderSelector(
986 $property,
987 $params['VALUE'] ?? null,
988 $config
989 );
990 }
991
992 public static function GetUIEntityEditorPropertyViewHtml(array $params = []): string
993 {
994 $result = '';
995
996 if (empty($params['VALUE']))
997 {
998 return '';
999 }
1000
1001 if (!is_array($params['VALUE']))
1002 {
1003 $params['VALUE'] = [$params['VALUE']];
1004 }
1005
1006 $filter = [
1007 'CHECK_PERMISSIONS' => 'Y',
1008 'MIN_PERMISSION' => 'R',
1009 'ID' => $params['VALUE'],
1010 ];
1011 $elementsResult = CIBlockElement::GetList(
1012 [],
1013 $filter,
1014 false,
1015 false,
1016 ['ID', 'IBLOCK_ID', 'NAME']
1017 );
1018
1019 while ($element = $elementsResult->Fetch())
1020 {
1021 $result .= htmlspecialcharsbx($element['NAME']) . '<br>';
1022 }
1023
1024 return $result;
1025 }
1026}
1027
1029const BT_UT_AUTOCOMPLETE_CODE = Iblock\PropertyTable::USER_TYPE_ELEMENT_AUTOCOMPLETE;
global $APPLICATION
Определения include.php:80
$arResult
Определения generate_coupon.php:16
const USER_TYPE_ELEMENT_AUTOCOMPLETE
Определения propertytable.php:82
const TYPE_ELEMENT
Определения propertytable.php:68
static GetPropertyFieldHtml($arProperty, $arValue, $strHTMLControlName)
Определения prop_element_auto.php:93
static GetValueForAutoComplete($arProperty, $arValue, $arBanSym='', $arRepSym='')
Определения prop_element_auto.php:39
static GetUserTypeDescription()
Определения prop_element_auto.php:15
static GetValueForAutoCompleteMulti($arProperty, $arValues, $arBanSym='', $arRepSym='')
Определения prop_element_auto.php:51
static GetAdminFilterHTML($arProperty, $strHTMLControlName)
Определения prop_element_auto.php:678
static GetPublicFilterHTML($arProperty, $strHTMLControlName)
Определения prop_element_auto.php:88
$arValues
Определения component_props.php:25
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
bx_acc_lim_group_list limitGroupList[] multiple<?=$group[ 'ID']?> ID selected margin top
Определения file_new.php:657
hidden mSiteList<?=htmlspecialcharsbx(serialize( $siteList))?><?=htmlspecialcharsbx( $siteList[ $j]["ID"])?> _Propery<? if(((COption::GetOptionString( $module_id, "different_set", "N")=="Y") &&( $j !=0))||(COption::GetOptionString( $module_id, "different_set", "N")=="N")) echo "display: none;"?> top adm detail content cell l top adm detail content cell r heading center center ID left
Определения options.php:768
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
const BT_UT_AUTOCOMPLETE_REP_SYM_OTHER
Определения prop_element_auto.php:8
margin right
Определения options_user_settings.php:273