262 $this->arReqiredTabs =
array();
264 foreach($this->tabs as $arTab)
268 if(is_array($arTab[
"FIELDS"]))
270 foreach($arTab[
"FIELDS"] as $arField)
271 $this->arFields[$arField[
"id"]] = $arField;
278 isset($arTab[
"FIELDS"])
279 && is_array($arTab[
"FIELDS"])
281 || isset($arTab[
"CONTENT"])
285 $this->arReqiredTabs[$arTab[
"DIV"]] = $arTab;
292 if (!empty($arCustomTabs))
294 $this->bCustomFields =
true;
295 $this->tabs =
array();
296 foreach($arCustomTabs as $tab_id => $arTab)
301 $arNewTab[
"TAB"] = $arTab[
"TAB"];
302 $arNewTab[
"FIELDS"] =
array();
308 "TAB" => $arTab[
"TAB"],
309 "ICON" =>
"main_user_edit",
316 foreach($arTab[
"FIELDS"] as $field_id =>
$content)
318 if(array_key_exists($field_id, $this->arSystemFields))
320 $arNewField = $this->arSystemFields[$field_id];
324 elseif(array_key_exists($field_id, $this->arForbiddenFields))
333 "html" =>
'<td colspan="2">'.htmlspecialcharsex(
$content).
'</td>',
342 if(is_array($arNewField))
344 $this->arFields[$field_id] = $arNewField;
345 $arNewTab[
"FIELDS"][] = $arNewField;
346 foreach ($this->arReqiredTabs as $tab_id => $arReqTab)
348 if (is_array($arReqTab[
"FIELDS"]))
350 foreach ($arReqTab[
"FIELDS"] as
$i => $arReqTabField)
352 if ($arReqTabField[
"id"] == $field_id)
353 unset($this->arReqiredTabs[$tab_id][
"FIELDS"][
$i]);
361 $this->tabs[] = $arNewTab;
364 foreach ($this->arReqiredTabs as $arReqTab)
366 if (!empty($arReqTab[
"FIELDS"]))
368 $this->tabs[] = $arReqTab;
369 foreach ($arReqTab[
"FIELDS"] as $arReqTabField)
371 $this->arFields[$arReqTabField[
"id"]] = $arReqTabField;
374 elseif (isset($arReqTab[
"CONTENT"]))
376 $this->tabs[] = $arReqTab;
393 !isset($this->session[
"ADMIN_CUSTOM_FIELDS"])
394 || !is_array($this->session[
"ADMIN_CUSTOM_FIELDS"])
397 $this->session[
"ADMIN_CUSTOM_FIELDS"] = [];
399 $arDisabled = CUserOptions::GetOption(
"form", $this->name.
"_disabled",
"N");
400 if(is_array($arDisabled) && $arDisabled[
"disabled"] ===
"Y")
402 $this->session[
"ADMIN_CUSTOM_FIELDS"][
$this->name] =
true;
403 $this->tabs = $this->arSavedTabs;
408 unset($this->session[
"ADMIN_CUSTOM_FIELDS"][$this->name]);
411 if(isset(
$_REQUEST[$this->name.
"_active_tab"]))
412 $this->selectedTab =
$_REQUEST[$this->name.
"_active_tab"];
414 $this->selectedTab = $this->tabs[0][
"DIV"];
416 foreach (array_keys($this->arFields) as $index)
418 $this->arFields[$index][
'custom_html'] = (string)($this->arFields[$index][
'custom_html'] ??
'');
419 $this->arFields[$index][
'delimiter'] = (bool)($this->arFields[$index][
'delimiter'] ??
false);
420 $this->arFields[$index][
'valign'] = (string)($this->arFields[$index][
'valign'] ??
'');
425 echo $this->sPrologContent;
426 if(array_key_exists(
"FORM_ACTION", $this->arParams))
430 echo
'<form method="POST" action="'.$action.
'" enctype="multipart/form-data" id="'.$this->name.
'_form" name="'.$this->name.
'_form"'.($this->arParams[
"FORM_ATTRIBUTES"] <>
''?
' '.$this->arParams[
"FORM_ATTRIBUTES"]:
'').
'>';
435 if (!empty($arCustomTabs))
437 foreach($this->tabs as $arTab)
439 if(is_array($arTab[
"FIELDS"]))
441 foreach($arTab[
"FIELDS"] as $arField)
444 ($this->arFields[$arField[
"id"]][
"custom_html"] !==
'')
445 || ($this->arFields[$arField[
"id"]][
"html"] !==
'')
448 $p = array_search($arField[
"id"], $this->arFields[$this->group][
"group"]);
450 unset($this->arFields[$this->group][
"group"][
$p]);
457 if(!empty($this->arFields[$this->group][
"group"]))
459 $htmlGroup .=
'<tr class="heading" id="tr_'.$this->arFields[$this->group][
"id"].
'">'
460 .$this->arFields[$this->group][
"html"].
'</tr>'
467 while($this->tabIndex <
count($this->tabs))
470 $arTab = $this->tabs[$this->tabIndex];
471 if(is_array($arTab[
"FIELDS"]))
473 foreach($arTab[
"FIELDS"] as $arField)
475 if(isset($this->arFields[$arField[
"id"]][
"group"]))
477 if(!empty($this->arFields[$arField[
"id"]][
"group"]))
480 foreach($this->arFields[$arField[
"id"]][
"group"] as
$p)
482 if($this->arFields[
$p][
"custom_html"])
483 echo preg_replace(
"/^\\s*<tr/is",
"<tr class=\"bx-in-group\"", $this->arFields[
$p][
"custom_html"]);
484 elseif($this->arFields[
$p][
"html"] && !$this->arFields[
$p][
"delimiter"])
485 echo
'<tr class="bx-in-group" '.($this->arFields[
$p][
"valign"] <>
''?
' valign="'.$this->arFields[
$p][
"valign"].
'"':
'').
' id="tr_'.
$p.
'">', $this->arFields[
$p][
"html"],
"</tr>\n";
486 unset($arHiddens[$this->arFields[
$p][
"id"]]);
491 elseif(!empty($this->arFields[$arField[
"id"]][
"custom_html"]))
493 if($this->group_ajax)
494 echo preg_replace(
"#<script[^>]*>.*?</script>#imu",
"", $this->arFields[$arField[
"id"]][
"custom_html"]);
496 echo $this->arFields[$arField[
"id"]][
"custom_html"];
498 elseif(!empty($this->arFields[$arField[
"id"]][
"html"]))
501 array_key_exists(
"rowClass", $this->arFields[$arField[
"id"]])
502 ?
' class="'.$this->arFields[$arField[
"id"]][
"rowClass"].
'"'
506 if($this->arFields[$arField[
"id"]][
"delimiter"])
507 echo
'<tr class="heading" id="tr_'.$arField[
"id"].
'"'.$rowClass.
'>';
509 echo
'<tr'.($this->arFields[$arField[
"id"]][
"valign"] <>
''?
' valign="'.$this->arFields[$arField[
"id"]][
"valign"].
'"':
'').
' id="tr_'.$arField[
"id"].
'"'.$rowClass.
'>';
510 echo $this->arFields[$arField[
"id"]][
"html"].
'</tr>'.
"\n";
512 unset($arHiddens[$arField[
"id"]]);
515 elseif (isset($arTab[
"CONTENT"]))
517 echo $arTab[
"CONTENT"];
519 $tabContent = ob_get_contents();
522 if ($tabContent ==
"")
524 array_splice($this->tabs, $this->tabIndex, 1);
529 $this->tabs[$this->tabIndex][
"CONTENT"] = $tabContent;
535 $requiredFields =
'';
536 foreach($arHiddens as $arField)
538 if(isset($arField[
"required"]) && $arField[
"required"])
540 if(!empty($this->arFields[$arField[
"id"]][
"custom_html"]))
542 $requiredFields .= $this->arFields[$arField[
"id"]][
"custom_html"];
544 elseif(!empty($this->arFields[$arField[
"id"]][
"html"]))
546 if($this->arFields[$arField[
"id"]][
"delimiter"])
547 $requiredFields .=
'<tr class="heading">';
549 $requiredFields .=
'<tr>';
550 $requiredFields .= $this->arFields[$arField[
"id"]][
"html"].
'</tr>';
552 unset($arHiddens[$arField[
"id"]]);
555 if($requiredFields <>
'')
557 $this->tabs[] =
array(
558 "CONTENT" => $requiredFields,
567 while($this->tabIndex <
count($this->tabs))
570 if (isset($this->tabs[$this->tabIndex]))
572 echo $this->tabs[$this->tabIndex][
"CONTENT"];
576 parent::Buttons($this->arButtonsParams);
577 echo $this->sButtonsContent;
580 echo $this->sEpilogContent;
582 echo
'<span class="bx-fields-hidden">';
583 foreach($arHiddens as $arField)
585 echo $arField[
"hidden"] ??
'';
616 $bColumnNeeded =
false;
619 $bColumnNeeded = str_ends_with(
$content,
":");
626 ?
'<span class="adm-required-field">' . htmlspecialcharsex($this->sCurrentLabel) .
'</span>'
627 : htmlspecialcharsex($this->sCurrentLabel)
630 elseif (array_key_exists($id, $this->arCustomLabels))
633 isset($this->arFields[$id][
'required']) && $this->arFields[$id][
'required']
634 ?
'<span class="adm-required-field">'
635 . htmlspecialcharsex($this->arCustomLabels[$id])
636 . ($bColumnNeeded ?
":" :
"")
638 : htmlspecialcharsex($this->arCustomLabels[$id]) . ($bColumnNeeded ?
":" :
"")
644 isset($this->tabs[$this->tabIndex][
"FIELDS"][$id][
"required"]) && $this->tabs[$this->tabIndex][
"FIELDS"][$id][
"required"]
645 ?
'<span class="adm-required-field">' . htmlspecialcharsex(
$content) .
'</span>'
956 <td colspan=
"2" align=
"left">
957 <a href=
"/bitrix/admin/userfield_edit.php?lang=<?echo LANGUAGE_ID?>&ENTITY_ID=<?echo urlencode($PROPERTY_ID)?>&back_url=<?echo urlencode($APPLICATION->GetCurPageParam($this->name.'_active_tab=user_fields_tab', array($this->name.'_active_tab')))?>"><?echo $this->
GetCustomLabelHTML()?></a>
964 $arUserFields =
$USER_FIELD_MANAGER->getUserFieldsWithReadyData($PROPERTY_ID, $readyData, LANGUAGE_ID,
false, $primaryIdName);
966 foreach($arUserFields as $FIELD_NAME => $arUserField)
968 $arUserField[
"VALUE_ID"] = (int)($readyData[$primaryIdName] ??
null);
969 if(array_key_exists($FIELD_NAME, $this->arCustomLabels))
970 $strLabel = $this->arCustomLabels[$FIELD_NAME];
972 $strLabel = $arUserField[
"EDIT_FORM_LABEL"]? $arUserField[
"EDIT_FORM_LABEL"]: $arUserField[
"FIELD_NAME"];
973 $arUserField[
"EDIT_FORM_LABEL"] = $strLabel;
975 $this->
BeginCustomField($FIELD_NAME, $strLabel, $arUserField[
"MANDATORY"]==
"Y");
978 $arUserField[
'SETTINGS'][
'DEFAULT_VALUE'] =
$_REQUEST[
'def_'.$FIELD_NAME];
986 $form_value =
$GLOBALS[$FIELD_NAME] ??
null;
988 $form_value = $arUserField[
"VALUE"];
989 elseif($arUserField[
"USER_TYPE"][
"BASE_TYPE"]==
"file")
990 $form_value =
$GLOBALS[$arUserField[
"FIELD_NAME"].
"_old_id"];
993 if(is_array($form_value))
995 foreach($form_value as $value)
996 $hidden .=
'<input type="hidden" name="'.$FIELD_NAME.
'[]" value="'.
htmlspecialcharsbx($value).
'">';
1000 $hidden .=
'<input type="hidden" name="'.$FIELD_NAME.
'" value="'.
htmlspecialcharsbx($form_value).
'">';