14 $rows = $property_fields[
"ROW_COUNT"];
15 $cols = $property_fields[
"COL_COUNT"];
17 $MULTIPLE_CNT = intval($property_fields[
"MULTIPLE_CNT"]);
18 if ($MULTIPLE_CNT <= 0 || $MULTIPLE_CNT > 30)
21 $bInitDef = $bInitDef && ($property_fields[
"DEFAULT_VALUE"] <>
'');
23 $cnt = ($property_fields[
"MULTIPLE"] ==
"Y"? $MULTIPLE_CNT + ($bInitDef? 1: 0) : 1);
28 echo
'<table cellpadding="0" cellspacing="0" border="0" class="nopadding" width="100%" id="tb'.md5(
$name).
'">';
30 if ($property_fields[
"WITH_DESCRIPTION"]==
"Y")
31 $strAddDesc =
"[VALUE]";
35 if (!is_array($values))
49 $val_description =
"";
50 if (is_array(
$val) && array_key_exists(
"VALUE",
$val))
52 $val_description =
$val[
"DESCRIPTION"] ??
'';
61 if ($property_fields[
"WITH_DESCRIPTION"] ==
"Y")
62 echo
' <span title="'.GetMessage(
"IBLOCK_AT_PROP_DESC").
'">'.
GetMessage(
"IBLOCK_AT_PROP_DESC_1").
'<input name="'.
$name.
'['.
$key.
'][DESCRIPTION]" value="'.
htmlspecialcharsbx($val_description).
'" size="18" type="text" id="'.
$name.
'['.
$key.
'][DESCRIPTION]"></span>';
67 if ($property_fields[
"MULTIPLE"] !=
"Y")
76 for (
$i = 0;
$i < $cnt;
$i++)
79 if (
$i == 0 && $bInitDef)
80 $val = $property_fields[
"DEFAULT_VALUE"];
89 if ($property_fields[
"WITH_DESCRIPTION"] ==
"Y")
90 echo
' <span title="'.GetMessage(
"IBLOCK_AT_PROP_DESC").
'">'.
GetMessage(
"IBLOCK_AT_PROP_DESC_1").
'<input name="'.
$name.
'[n'.(
$start +
$i).
'][DESCRIPTION]" value="" size="18" type="text"></span>';
97 if ($property_fields[
"MULTIPLE"] ==
"Y")
99 echo
'<tr><td><input type="button" value="'.GetMessage(
"IBLOCK_AT_PROP_ADD").
'" onClick="BX.IBlock.Tools.addNewRow(\'tb'.md5(
$name).
'\')
"></td></tr>';
100 echo "<script>BX.addCustomEvent(
'onAutoSaveRestore',
function(ob, data) {
for (var i in data){
if (i.substring(0,
".(mb_strlen($name) + 1).")==
'".CUtil::JSEscape($name)."['){BX.IBlock.Tools.addNewRow(
'tb".md5($name)."')}}})</script>
";
106function _ShowGroupPropertyField($name, $property_fields, $values, $bVarsFromForm = false)
108 $name = htmlspecialcharsbx($name);
110 if (!is_array($values))
113 foreach ($values as $key => $value)
115 if (is_array($value) && array_key_exists("VALUE
", $value))
116 $values[$key] = $value["VALUE
"];
121 $sections = CIBlockSection::GetList(
123 'LEFT_MARGIN' => 'ASC',
126 'IBLOCK_ID' => $property_fields['LINK_IBLOCK_ID']
137 while ($ar = $sections->GetNext())
139 $margin = max((int)$ar['DEPTH_LEVEL'], 1) - 1;
140 $res .= '<option value="' . $ar['ID
'] . '"';
141 if (in_array($ar['ID'], $values))
146 $res .= '>' . str_repeat(' . ', $margin) .$ar['NAME'] . '</option>';
148 unset($ar, $sections);
150 echo '<input type="hidden
" name="'.$name.'[]
" value="">';
151 echo '<select name="'.$name.'[]
" size="'.$property_fields["MULTIPLE_CNT"].'" '.($property_fields["MULTIPLE
"]=="Y
"?"multiple
":"").'>';
152 echo '<option value=""'.(!$bWas?' selected':'').'>'.GetMessage("IBLOCK_AT_NOT_SET
").'</option>';
157function _ShowElementPropertyField($name, $property_fields, $values, $bVarsFromForm = false)
161 $name = htmlspecialcharsbx($name);
165 $selfFolderUrl = (defined("SELF_FOLDER_URL
") ? SELF_FOLDER_URL : "/bitrix/admin/
");
167 $MULTIPLE_CNT = intval($property_fields["MULTIPLE_CNT
"]);
168 if ($MULTIPLE_CNT <= 0 || $MULTIPLE_CNT > 30)
171 $cnt = ($property_fields["MULTIPLE
"] == "Y
"? $MULTIPLE_CNT : 1);
173 if(!is_array($values))
176 $fixIBlock = $property_fields["LINK_IBLOCK_ID
"] > 0;
177 $windowTableId = 'iblockprop-'.Iblock\PropertyTable::TYPE_ELEMENT.'-'.$property_fields['ID'].'-'.$property_fields['LINK_IBLOCK_ID'];
179 echo '<table cellpadding="0
" cellspacing="0
" border="0
" class="nopadding
" width="100%
" id="tb
'.md5($name).'">';
181 foreach ($values as $key=>$val)
190 if (is_array($val) && array_key_exists("VALUE
", $val))
191 $val = $val["VALUE
"];
193 $db_res = CIBlockElement::GetByID($val);
194 $ar_res = $db_res->GetNext();
196 '<input name="'.$name.'[
'.$key.']
" id="'.$name.'[
'.$key.']
" value="'.htmlspecialcharsbx($val).'" size="5
" type="text
">'.
197 '<input type="button
" value="...
" onClick="jsUtils.OpenWindow(\
''.$selfFolderUrl.
'iblock_element_search.php?lang='.LANGUAGE_ID.
'&IBLOCK_ID='.$property_fields[
"LINK_IBLOCK_ID"].
'&n='.
$name.
'&k='.
$key.($fixIBlock ?
'&iblockfix=y' :
'').
'&tableId='.$windowTableId.
'\', 900, 700);
">'.
198 ' <span id="sp_
'.md5($name).'_
'.$key.'" >' . ($ar_res['NAME'] ?? '') . '</span>'.
201 if ($property_fields["MULTIPLE
"] != "Y
")
203 $bVarsFromForm = true;
208 if (!$bVarsFromForm || $show)
210 for ($i = 0; $i < $cnt; $i++)
217 '<input name="'.$name.'[
'.$key.']
" id="'.$name.'[
'.$key.']
" value="'.htmlspecialcharsbx($val).'" size="5
" type="text
">'.
218 '<input type="button
" value="...
" onClick="jsUtils.OpenWindow(\
''.
$selfFolderUrl.
'iblock_element_search.php?lang='.LANGUAGE_ID.
'&IBLOCK_ID='.$property_fields[
"LINK_IBLOCK_ID"].
'&n='.
$name.
'&k='.
$key.($fixIBlock ?
'&iblockfix=y' :
'').
'&tableId='.$windowTableId.
'\', 900, 700);
">'.
219 ' <span id="sp_
'.md5($name).'_
'.$key.'"></span>'.
224 if($property_fields["MULTIPLE
"]=="Y
")
227 '<input type="button
" value="'.GetMessage("IBLOCK_AT_PROP_ADD").'...
" onClick="jsUtils.OpenWindow(\
''.
$selfFolderUrl.
'iblock_element_search.php?lang='.LANGUAGE_ID.
'&IBLOCK_ID='.$property_fields[
"LINK_IBLOCK_ID"].
'&n='.
$name.
'&m=y&k='.
$key.($fixIBlock ?
'&iblockfix=y' :
'').
'&tableId='.$windowTableId.
'\', 900, 700);
">'.
228 '<span id="sp_
'.md5($name).'_
'.$key.'" ></span>'.
233 echo '<script>'."\r\n
";
234 echo "var MV_
".md5($name)." =
".$index.";\r\n
";
235 echo "function InS
".md5($name)."(id, name){ \r\n
";
236 echo " oTbl=document.getElementById(
'tb".md5($name)."');\r\n
";
237 echo " oRow=oTbl.insertRow(oTbl.rows.length-1); \r\n
";
238 echo " oCell=oRow.insertCell(-1); \r\n
";
239 echo " oCell.innerHTML=
".
240 "'<input name=\"".$name."[n'+MV_
".md5($name)."+
']\" value=\"'+
id+
'\" id=\"".$name."[n'+MV_
".md5($name)."+
']\" size=\"5\" type=\"text\">'+\r\n
".
241 "'<input type=\"button\" value=\"...\" '+\r\n
".
242 "'onClick=\"jsUtils.OpenWindow(\'".$selfFolderUrl."iblock_element_search.php?lang=".LANGUAGE_ID."&IBLOCK_ID=".$property_fields["LINK_IBLOCK_ID"]."&n=".$name."&k=n'+MV_
".md5($name)."+
'".($fixIBlock ? '&iblockfix=y
' : '')."&tableId=".$windowTableId."\', '+\r\n
".
244 "' <span id=\"sp_".md5($name)."_n'+MV_
".md5($name)."+
'\" >'+name+
'</span>".
246 echo 'MV_'.md5($name).'++;';
248 echo "\r\n</script>
";
251function _ShowFilePropertyField($name, $property_fields, $values, $max_file_size_show=50000, $bVarsFromForm = false)
253 global $bCopy, $historyId;
255 $name = htmlspecialcharsbx($name);
257 static $maxSize = array();
260 $detailImageSize = (int)Main\Config\Option::get('iblock', 'detail_image_size');
262 'W' => $detailImageSize,
263 'H' => $detailImageSize
265 unset($detailImageSize);
268 CModule::IncludeModule('fileman');
270 if (empty($values) || $bCopy || !is_array($values))
279 $newUploaderParams = array(
286 $newUploaderParams = array(
289 "fileDialog
" => true,
294 if($property_fields["MULTIPLE
"] == "N
")
296 foreach($values as $key => $val)
299 $file_id = $val["VALUE
"];
305 $request = \Bitrix\Main\Context::getCurrent()->getRequest();
307 if (preg_match("/PROP\\[(\d+)\\]/i
", $name, $matches))
309 $number = $matches[1];
311 $prop = $request->isPost() ? $request->getPost("PROP
") : $request->getQuery("PROP
");
312 if ($number > 0 && is_array($prop) && array_key_exists($number, $prop))
314 $prop = $prop[$number];
315 if (!empty($prop) && is_array($prop))
317 if (!array_key_exists('tmp_name', $prop))
318 $prop = current($prop);
323 echo \Bitrix\Main\UI\FileInput::createInstance(
325 "name
" => $name."[
".$key."]
",
326 "id" => $name."[
".$key."]_
".mt_rand(1, 1000000),
327 "description
" => $property_fields["WITH_DESCRIPTION
"]=="Y
",
328 "allowUpload
" => "F
",
329 "allowUploadExt
" => $property_fields["FILE_TYPE
"],
331 ) + $newUploaderParams
332 )->show($file_id, $bVarsFromForm);
338 $inputName = array();
339 foreach($values as $key=>$val)
341 $inputName[$name."[
".$key."]
"] = (is_array($val) && array_key_exists("VALUE
", $val) ? $val["VALUE
"] : $val);
346 $request = \Bitrix\Main\Context::getCurrent()->getRequest();
348 if (preg_match("/PROP\\[(\d+)\\]/i
", $name, $matches))
350 $number = $matches[1];
352 $prop = $request->isPost() ? $request->getPost("PROP
") : $request->getQuery("PROP
");
353 if ($number > 0 && is_array($prop) && array_key_exists($number, $prop))
355 $prop = $prop[$number];
356 if (!empty($prop) && is_array($prop))
358 $clearProp = array();
359 foreach ($prop as $valueRowId => $valueRow)
362 if (preg_match('/^n\d+$/', $valueRowId) && is_string($valueRow))
364 if (!preg_match('/^\d+$/', $valueRow))
368 $clearProp[$valueRowId] = $valueRow;
370 $values = $clearProp;
374 $inputName = array();
375 foreach($values as $key=>$val)
377 $inputName[$name."[
".$key."]
"] = $val;
380 echo \Bitrix\Main\UI\FileInput::createInstance(
382 "name
" => $name."[n#IND#]
",
383 "id" => $name."[n#IND#]_
".mt_rand(1, 1000000),
384 "description
" => $property_fields["WITH_DESCRIPTION
"]=="Y
",
385 "allowUpload
" => "F
",
386 "allowUploadExt
" => $property_fields["FILE_TYPE
"]
387 ) + $newUploaderParams
388 )->show($inputName, $bVarsFromForm);
392function _ShowListPropertyField($name, $property_fields, $values, $bInitDef = false, $def_text = false)
394 $name = htmlspecialcharsbx($name);
396 if (!is_array($values))
399 foreach($values as $key => $value)
401 if(is_array($value) && array_key_exists("VALUE
", $value))
402 $values[$key] = $value["VALUE
"];
405 $id = $property_fields["ID
"];
406 $multiple = $property_fields["MULTIPLE
"];
408 $prop_enums = CIBlockProperty::GetPropertyEnum($id, ['SORT' => 'ASC', 'VALUE' => 'ASC', 'ID' => 'ASC']);
409 if($property_fields["LIST_TYPE
"]=="C
") //list property as checkboxes
414 while($ar_enum = $prop_enums->Fetch())
418 $sel = ($ar_enum["DEF
"]=="Y
");
420 $sel = in_array($ar_enum["ID
"], $values);
424 $uniq = md5(uniqid(rand(), true));
425 if($multiple=="Y
") //multiple
426 $res .= '<input type="checkbox
" name="'.$name.'[]
" value="'.htmlspecialcharsbx($ar_enum["ID"]).'"'.($sel?" checked
":"").' id="'.$uniq.'"><label for="'.$uniq.'">'.htmlspecialcharsex($ar_enum["VALUE
"]).'</label><br>';
427 else //if(MULTIPLE=="Y
")
428 $res .= '<input type="radio
" name="'.$name.'[]
" id="'.$uniq.'" value="'.htmlspecialcharsbx($ar_enum["ID"]).'"'.($sel?" checked
":"").'><label for="'.$uniq.'">'.htmlspecialcharsex($ar_enum["VALUE
"]).'</label><br>';
431 $res_tmp = '<input type="checkbox
" name="'.$name.'[]
" value="'.htmlspecialcharsbx($ar_enum["ID"]).'"'.($sel?" checked
":"").' id="'.$uniq.'"><br>';
435 $uniq = md5(uniqid(rand(), true));
439 elseif($multiple!="Y
" && $property_fields['IS_REQUIRED'] != 'Y')
440 $res = '<input type="radio
" name="'.$name.'[]
" value=""'.(!$wSel?" checked
":"").' id="'.$uniq.'"><label for="'.$uniq.'">'.htmlspecialcharsex(($def_text ? $def_text : GetMessage("IBLOCK_AT_PROP_NO
") )).'</label><br>'.$res;
442 if($multiple=="Y
" || $cnt==1 || $property_fields['IS_REQUIRED'] == 'Y')
443 $res = '<input type="hidden
" name="'.$name.'" value="">'.$res;
445 else //list property as list
448 while($ar_enum = $prop_enums->Fetch())
451 $sel = ($ar_enum["DEF
"]=="Y
");
453 $sel = in_array($ar_enum["ID
"], $values);
456 $res .= '<option value="'.htmlspecialcharsbx($ar_enum["ID"]).'"'.($sel?" selected":"").'>'.htmlspecialcharsex($ar_enum["VALUE
"]).'</option>';
459 if($property_fields["MULTIPLE
"]=="Y
" && (int)$property_fields["ROW_COUNT
"]<2)
460 $property_fields["ROW_COUNT
"] = 5;
461 if($property_fields["MULTIPLE
"]=="Y
")
462 $property_fields["ROW_COUNT
"]++;
463 $res = '<select name="'.$name.'[]
" size="'.$property_fields["ROW_COUNT"].'" '.($property_fields["MULTIPLE
"]=="Y
"?"multiple
":"").'>'.
464 '<option value=""'.($bNoValue?' selected':'').'>'.htmlspecialcharsex(($def_text ? $def_text : GetMessage("IBLOCK_AT_PROP_NA
") )).'</option>'.
471function _ShowUserPropertyField($name, $property_fields, $values, $bInitDef = false, $bVarsFromForm = false, $max_file_size_show=50000, $form_name = "form_element
", $bCopy = false)
475 $name = htmlspecialcharsbx($name);
479 if(!is_array($property_fields["~VALUE
"]))
482 $values = $property_fields["~VALUE
"];
484 unset($property_fields["VALUE
"]);
485 unset($property_fields["~VALUE
"]);
487 $html = '<table cellpadding="0
" cellspacing="0
" border="0
" class="nopadding
" width="100%
" id="tb
'.md5($name).'">';
488 $arUserType = CIBlockProperty::GetUserType($property_fields["USER_TYPE
"]);
489 $bMultiple = $property_fields["MULTIPLE
"] == "Y
" && array_key_exists("GetPropertyFieldHtmlMulty
", $arUserType);
492 if(($arUserType["PROPERTY_TYPE
"] !== "F
") || (!$bCopy))
497 $html .= call_user_func_array($arUserType["GetPropertyFieldHtmlMulty
"],
502 "VALUE
"=>'PROP['.$property_fields["ID
"].']',
503 "FORM_NAME
"=>$form_name,
508 $html .= '</td></tr>';
512 foreach($values as $key=>$val)
520 if(!is_array($val) || !array_key_exists("VALUE
",$val))
521 $val = array("VALUE
"=>$val, "DESCRIPTION
"=>"");
524 if(array_key_exists("GetPropertyFieldHtml
", $arUserType))
525 $html .= call_user_func_array($arUserType["GetPropertyFieldHtml
"],
530 "VALUE
"=>'PROP['.$property_fields["ID
"].']['.$key.'][VALUE]',
531 "DESCRIPTION
"=>'PROP['.$property_fields["ID
"].']['.$key.'][DESCRIPTION]',
532 "FORM_NAME
"=>$form_name,
539 $html .= '</td></tr>';
541 if(mb_substr($key, -1, 1) == 'n' && $max_val < intval(mb_substr($key, 1)))
542 $max_val = intval(mb_substr($key, 1));
543 if($property_fields["MULTIPLE
"] != "Y
")
545 $bVarsFromForm = true;
553 (!$bVarsFromForm && !$bMultiple)
554 || ($bVarsFromForm && !$bMultiple && count($values) == 0) //Was not displayed
557 $bDefaultValue = is_array($property_fields["DEFAULT_VALUE
"]) || (string)$property_fields["DEFAULT_VALUE
"] !== '';
559 if($property_fields["MULTIPLE
"]=="Y
")
561 $cnt = (int)$property_fields["MULTIPLE_CNT
"];
562 if($cnt <= 0 || $cnt > 30)
565 if($bInitDef && $bDefaultValue)
573 for($i=$max_val+1; $i<$max_val+1+$cnt; $i++)
575 if($i==0 && $bInitDef && $bDefaultValue)
577 "VALUE
"=>$property_fields["DEFAULT_VALUE
"],
586 $key = "n
".($start + $i);
589 if(array_key_exists("GetPropertyFieldHtml
", $arUserType))
590 $html .= call_user_func_array($arUserType["GetPropertyFieldHtml
"],
595 "VALUE
"=>'PROP['.$property_fields["ID
"].']['.$key.'][VALUE]',
596 "DESCRIPTION
"=>'PROP['.$property_fields["ID
"].']['.$key.'][DESCRIPTION]',
597 "FORM_NAME
"=>$form_name,
604 $html .= '</td></tr>';
609 $property_fields["MULTIPLE
"]=="Y
"
610 && $arUserType["USER_TYPE
"] !== "HTML
"
611 && $arUserType["USER_TYPE
"] !== "employee
"
615 $html .= '<tr><td><input type="button
" value="'.GetMessage("IBLOCK_AT_PROP_ADD").'" onClick="BX.IBlock.Tools.addNewRow(\
'tb'.md5(
$name).
'\')
"></td></tr>';
621function _ShowPropertyField(
626 $bVarsFromForm = false,
627 $max_file_size_show = 50000,
628 $form_name = "form_element
",
632 $type = $property_fields["PROPERTY_TYPE
"];
633 $userType = (string)$property_fields["USER_TYPE
"] ?? '';
634 $foundUserType = false;
635 if ($userType !== '')
637 $userTypeDescription = CIBlockProperty::GetUserType($userType);
638 if (!empty($userTypeDescription))
640 $foundUserType = true;
641 _ShowUserPropertyField($name, $property_fields, $values, $bInitDef, $bVarsFromForm, $max_file_size_show, $form_name, $bCopy);
648 case Iblock\PropertyTable::TYPE_LIST:
649 _ShowListPropertyField($name, $property_fields, $values, $bInitDef);
651 case Iblock\PropertyTable::TYPE_FILE:
652 _ShowFilePropertyField($name, $property_fields, $values, $max_file_size_show, $bVarsFromForm);
654 case Iblock\PropertyTable::TYPE_SECTION:
655 if (function_exists("_ShowGroupPropertyField_custom
"))
657 _ShowGroupPropertyField_custom($name, $property_fields, $values, $bVarsFromForm);
661 _ShowGroupPropertyField($name, $property_fields, $values, $bVarsFromForm);
664 case Iblock\PropertyTable::TYPE_ELEMENT:
665 _ShowElementPropertyField($name, $property_fields, $values, $bVarsFromForm);
668 _ShowStringPropertyField($name, $property_fields, $values, $bInitDef, $bVarsFromForm);
674function _ShowHiddenValue($name, $value)
680 foreach($value as $k => $v)
681 $res .= _ShowHiddenValue($name.'['.htmlspecialcharsbx($k).']', $v);
685 $res .= '<input type="hidden
" name="'.$name.'" value="'.htmlspecialcharsbx($value).'">'."\n
";
693 var $err_type, $err_text, $err_level;
695 public function __construct($err_level = false, $err_type = "", $err_text = "")
697 $this->err_type = $err_type;
698 $this->err_text = preg_replace("#<br>$#i
", "", $err_text);
699 $this->err_level = $err_level;
700 _CIBlockError::GetErrorText($this);
703 function GetErrorText($error = false)
705 static $errors = array();
707 if(is_object($error))
713 foreach($errors as $error)
717 $str .= $error->err_text;
725 $_SERVER["REQUEST_METHOD
"] === "GET
"
726 && isset($_GET["ajax
"]) && $_GET["ajax
"] === "y
"
727 && isset($_GET["entity_type
"])
728 && isset($_GET["iblock_id
"])
729 && isset($_GET["id"])
730 && check_bitrix_sessid()
733 require_once($_SERVER["DOCUMENT_ROOT
"]."/bitrix/modules/main/include/prolog_admin_js.php
");
735 if($_GET["entity_type
"] == "element
")
736 $obRights = new CIBlockElementRights($_GET["iblock_id
"], $_GET["id"]);
737 elseif($_GET["entity_type
"] == "section
")
738 $obRights = new CIBlockSectionRights($_GET["iblock_id
"], $_GET["id"]);
740 $obRights = new CIBlockRights($_GET["id"]);
742 $obStorage = $obRights->_storage_object();
744 $arOverwrited = array();
745 if(isset($_REQUEST["added
"]) && is_array($_REQUEST["added
"]))
747 foreach($_REQUEST["added
"] as $provider => $arCodes)
749 if(is_array($arCodes))
751 foreach($arCodes as $id => $arCode)
752 $arOverwrited[$id] = $obStorage->CountOverWrited($id);
757 if(isset($_REQUEST["info
"]) && $_REQUEST["info
"] > 0)
759 $arOverwrited = $obRights->GetUserOperations($_GET["id"], $_REQUEST["info
"]);
762 echo CUtil::PhpToJSObject($arOverwrited);
764 require_once($_SERVER["DOCUMENT_ROOT
"]."/bitrix/modules/main/include/epilog_admin_js.php
");
767function IBlockShowRights($entity_type, $iblock_id, $id, $section_title, $variable_name, $arPossibleRights, $arActualRights, $bDefault = false, $bForceInherited = false, $arSelected = array(), $arHighLight = array())
769 $js_var_name = preg_replace("/[^a-zA-Z0-9_]/
", "_
", $variable_name);
770 $html_var_name = htmlspecialcharsbx($variable_name);
772 $sSelect = '<select name="'.$html_var_name.'[][TASK_ID]
" style="vertical-
align:middle
">';
773 foreach($arPossibleRights as $value => $title)
774 $sSelect .= '<option value="'.htmlspecialcharsbx($value).'">'.htmlspecialcharsex($title).'</option>';
775 $sSelect .= '</select>';
777 if($bForceInherited != true)
779 foreach($arActualRights as $RIGHT_ID => $arRightSet)
780 if($arRightSet["IS_INHERITED
"] <> "Y
")
781 $arSelected[$arRightSet["GROUP_CODE
"]] = true;
784 $table_id = $variable_name."_table
";
785 $href_id = $variable_name."_href
";
787 CJSCore::Init(array('access'));
790 <td colspan="2
" align="center
">
793 langApplyTitle: '<?=CUtil::JSEscape(GetMessage("IBLOCK_AT_OVERWRITE_TIP
"))?>',
794 langApply1Title: '<?=CUtil::JSEscape(GetMessage("IBLOCK_AT_OVERWRITE_1
"))?>',
795 langApply2Title: '<?=CUtil::JSEscape(GetMessage("IBLOCK_AT_OVERWRITE_2
"))?>',
796 langApply3Title: '<?=CUtil::JSEscape(GetMessage("IBLOCK_AT_OVERWRITE_3
"))?>'
798 var obIBlockAccess_<?=$js_var_name?> = new JCIBlockAccess(
799 '<?=CUtil::JSEscape($entity_type)?>',
800 <?=intval($iblock_id)?>,
802 <?=CUtil::PhpToJsObject($arSelected)?>,
803 '<?=CUtil::JSEscape($variable_name)?>',
804 '<?=CUtil::JSEscape($table_id)?>',
805 '<?=CUtil::JSEscape($href_id)?>',
806 '<?=CUtil::JSEscape($sSelect)?>',
807 <?=CUtil::PhpToJsObject($arHighLight)?>
810 <table width="100%
" class="internal" id="<?echo
htmlspecialcharsbx($table_id)?>
" align="center
">
811 <?if($section_title != ""):?>
812 <tr id="<?echo $html_var_name?>_heading
" class="heading
">
814 <?echo $section_title?>
820 foreach($arActualRights as $arRightSet)
821 $arNames[] = $arRightSet["GROUP_CODE
"];
823 $access = new CAccess();
824 $arNames = $access->GetNames($arNames);
826 foreach($arActualRights as $RIGHT_ID => $arRightSet)
828 if($bForceInherited || $arRightSet["IS_INHERITED
"] === "Y
")
830 $arRightSet["IS_OVERWRITED
"] ??= null;
832 <tr class="<?echo $html_var_name?>_row_for_<?echo
htmlspecialcharsbx($arRightSet[
"GROUP_CODE"])?><?
if($arRightSet[
"IS_OVERWRITED"] ===
"Y") echo
" iblock-strike-out";?>
">
833 <td style="width:40%!important; text-
align:
right"><?echo htmlspecialcharsex($arNames[$arRightSet["GROUP_CODE
"]]["provider
"]." ".$arNames[$arRightSet["GROUP_CODE
"]]["name
"])?>:</td>
835 <?if($arRightSet["IS_OVERWRITED
"] !== "Y
"):?>
836 <input type="hidden
" name="<?echo $html_var_name?>[][RIGHT_ID]
" value="<?echo
htmlspecialcharsbx($RIGHT_ID)?>
">
837 <input type="hidden
" name="<?echo $html_var_name?>[][GROUP_CODE]
" value="<?echo
htmlspecialcharsbx($arRightSet[
"GROUP_CODE"])?>
">
838 <input type="hidden
" name="<?echo $html_var_name?>[][TASK_ID]
" value="<?echo
htmlspecialcharsbx($arRightSet[
"TASK_ID"])?>
">
840 <?echo htmlspecialcharsex($arPossibleRights[$arRightSet["TASK_ID
"]])?>
847 if($bForceInherited != true)
849 foreach($arActualRights as $RIGHT_ID => $arRightSet)
851 if($arRightSet["IS_INHERITED
"] <> "Y
")
855 <td style="width:40%!important; text-
align:
right; vertical-
align:middle
"><?echo htmlspecialcharsex($arNames[$arRightSet["GROUP_CODE
"]]["provider
"]." ".$arNames[$arRightSet["GROUP_CODE
"]]["name
"])?>:</td>
857 <input type="hidden
" name="<?echo $html_var_name?>[][RIGHT_ID]
" value="<?echo
htmlspecialcharsbx($RIGHT_ID)?>
">
858 <input type="hidden
" name="<?echo $html_var_name?>[][GROUP_CODE]
" value="<?echo
htmlspecialcharsbx($arRightSet[
"GROUP_CODE"])?>
">
859 <select name="<?echo $html_var_name?>[][TASK_ID]
" style="vertical-
align:middle
">
860 <?foreach($arPossibleRights as $value => $title):?>
861 <option value="<?echo
htmlspecialcharsbx($value)?>
" <?if($value == $arRightSet["TASK_ID
"]) echo "selected"?>><?echo htmlspecialcharsex($title)?></option>
864 <a href="javascript:void(0);
" onclick="JCIBlockAccess.DeleteRow(
this,
'<?=htmlspecialcharsbx(CUtil::addslashes($arRightSet["GROUP_CODE"]))?>',
'<?=CUtil::JSEscape($variable_name)?>')
" class="access-
delete"></a>
866 <span title="<?echo
GetMessage(
"IBLOCK_AT_OVERWRITE_TIP")?>
"><?
867 $existsOverwrited = !empty($arRightSet['OVERWRITED']) && is_array($arRightSet['OVERWRITED']);
870 && $arRightSet["OVERWRITED
"][0] > 0
871 && $arRightSet["OVERWRITED
"][1] > 0
875 <br><input name="<?echo $html_var_name?>[][DO_CLEAN]
" value="Y
" type="checkbox
"><?echo GetMessage("IBLOCK_AT_OVERWRITE_1
")?> (<?echo intval($arRightSet["OVERWRITED
"][0]+$arRightSet["OVERWRITED
"][1])?>)
880 && $arRightSet["OVERWRITED
"][0] > 0
884 <br><input name="<?echo $html_var_name?>[][DO_CLEAN]
" value="Y
" type="checkbox
"><?echo GetMessage("IBLOCK_AT_OVERWRITE_2
")?> (<?echo intval($arRightSet["OVERWRITED
"][0])?>)
889 && $arRightSet["OVERWRITED
"][1] > 0
893 <br><input name="<?echo $html_var_name?>[][DO_CLEAN]
" value="Y
" type="checkbox
"><?echo GetMessage("IBLOCK_AT_OVERWRITE_3
")?> (<?echo intval($arRightSet["OVERWRITED
"][1])?>)
905 <td width="40%
" align="right"> </td>
906 <td width="60%
" align="left">
907 <a href="javascript:void(0)
" id="<?echo
htmlspecialcharsbx($href_id)?>
" class="bx-action-href
"><?echo GetMessage("IBLOCK_AT_PROP_ADD
")?></a>
916function GetUserProfileLink($user_id, $title)
918 static $arUsersCache = array();
919 $user_id = intval($user_id);
923 if(!isset($arUsersCache[$user_id]))
925 $rsUser = CUser::GetByID($user_id);
926 $arUsersCache[$user_id] = $rsUser->Fetch();
929 if($arUsersCache[$user_id])
931 $urlToUser = "user_edit.php?
lang=
'.LANGUAGE_ID.'&ID=
'.$user_id.'";
932 if (defined("PUBLIC_MODE
") && PUBLIC_MODE == 1)
934 return "(
".htmlspecialcharsex($arUsersCache[$user_id]["LOGIN
"]).")
".
935 htmlspecialcharsex($arUsersCache[$user_id]["NAME
"]." ".$arUsersCache[$user_id]["LAST_NAME
"]);
939 return '[<a href="'.$urlToUser.'" title="'.$title.'">'.$user_id.
940 "</a>]&
nbsp;(
".htmlspecialcharsex($arUsersCache[$user_id]["LOGIN
"]).")
".
941 htmlspecialcharsex($arUsersCache[$user_id]["NAME
"]." ".$arUsersCache[$user_id]["LAST_NAME
"]);
948function IBlockGetHiddenHTML($name, $value)
954 foreach($value as $k => $v)
957 $result .= IBlockGetHiddenHTML($name."[]
", $v);
959 $result .= IBlockGetHiddenHTML($name."[
".$k."]
", $v);
965 $result = '<input type="hidden
" name="'.htmlspecialcharsbx($name).'" value="'.htmlspecialcharsbx($value).'" />'."\n
";
970function IBlockGetWatermarkPositions()
973 $rs->InitFromArray(array(
974 array("reference_id
" => "tl
", "reference
" => GetMessage("IBLOCK_WATERMARK_POSITION_TL
")),
975 array("reference_id
" => "tc
", "reference
" => GetMessage("IBLOCK_WATERMARK_POSITION_TC
")),
976 array("reference_id
" => "tr
", "reference
" => GetMessage("IBLOCK_WATERMARK_POSITION_TR
")),
977 array("reference_id
" => "ml
", "reference
" => GetMessage("IBLOCK_WATERMARK_POSITION_ML
")),
978 array("reference_id
" => "mc
", "reference
" => GetMessage("IBLOCK_WATERMARK_POSITION_MC
")),
979 array("reference_id
" => "mr
", "reference
" => GetMessage("IBLOCK_WATERMARK_POSITION_MR
")),
980 array("reference_id
" => "bl
", "reference
" => GetMessage("IBLOCK_WATERMARK_POSITION_BL
")),
981 array("reference_id
" => "bc
", "reference
" => GetMessage("IBLOCK_WATERMARK_POSITION_BC
")),
982 array("reference_id
" => "br
", "reference
" => GetMessage("IBLOCK_WATERMARK_POSITION_BR
")),
987function IBlockInheritedPropertyInput($iblock_id, $id, $data, $type, $checkboxLabel = ""): string
989 $inheritedValue = (string)($data[$id]["INHERITED
"] ?? 'Y');
990 $inherited = ($inheritedValue !== "N
") && ($checkboxLabel !== "");
991 $inputId = "IPROPERTY_TEMPLATES_
".$id;
992 $inputName = "IPROPERTY_TEMPLATES[
".$id."][TEMPLATE]
";
993 $menuId = "mnu_IPROPERTY_TEMPLATES_
".$id;
994 $resultId = "result_IPROPERTY_TEMPLATES_
".$id;
995 $checkboxId = "ck_IPROPERTY_TEMPLATES_
".$id;
998 $menuItems = CIBlockParameters::GetInheritedPropertyTemplateSectionMenuItems($iblock_id, "InheritedPropertiesTemplates.insertIntoInheritedPropertiesTemplate
", $menuId, $inputId);
1000 $menuItems= CIBlockParameters::GetInheritedPropertyTemplateElementMenuItems($iblock_id, "InheritedPropertiesTemplates.insertIntoInheritedPropertiesTemplate
", $menuId, $inputId);
1002 $templateValue = (string)($data[$id]["TEMPLATE
"] ?? '');
1003 $u = new CAdminPopupEx($menuId, $menuItems, array("zIndex
" => 2000));
1004 $result = $u->Show(true)
1006 window.ipropTemplates[window.ipropTemplates.length] = {
1008 "INPUT_ID
": "'.$inputId.'",
1009 "RESULT_ID
": "'.$resultId.'",
1013 .'<input type="hidden
" name="'.$inputName.'" value="'.htmlspecialcharsbx($templateValue).'" />'
1014 .'<textarea onclick="InheritedPropertiesTemplates.enableTextArea(\
''.$inputId.
'\')
" name="'.$inputName.'" id="'.$inputId.'" '.($inherited? 'readonly="readonly
"': '').' cols="55
" rows="1
" style="width:90%
">'
1015 .htmlspecialcharsbx($templateValue)
1017 .'<input style="float:
right" type="button
" id="'.$menuId.'" '.($inherited? 'disabled="disabled"': '').' value="...
">'
1020 if ($checkboxLabel != "")
1022 $result .= '<input type="hidden
" name="IPROPERTY_TEMPLATES[
'.$id.'][INHERITED]
" value="Y
">'
1023 .'<input type="checkbox
" name="IPROPERTY_TEMPLATES[
'.$id.'][INHERITED]
" id="'.$checkboxId.'" value="N
" '
1024 .'onclick="InheritedPropertiesTemplates.updateInheritedPropertiesTemplates()
" '.(!$inherited? 'checked="checked
"': '').'>'
1025 .'<label for="'.$checkboxId.'">'.$checkboxLabel.'</label><br>'
1028 if (preg_match("/_FILE_NAME\$/
", $id))
1030 $result .= '<input type="hidden
" name="IPROPERTY_TEMPLATES[
'.$id.'][LOWER]
" value="N
">'
1031 .'<input type="checkbox
" name="IPROPERTY_TEMPLATES[
'.$id.'][LOWER]
" id="lower_
'.$id.'" value="Y
" '
1032 .'onclick="InheritedPropertiesTemplates.enableTextArea(\
''.$inputId.
'\');InheritedPropertiesTemplates.updateInheritedPropertiesValues(
false,
true)
" '.(($data[$id]["LOWER
"] ?? 'N') !== "Y
"? '': 'checked="checked
"').'>'
1033 .'<label for="lower_
'.$id.'">'.GetMessage("IBLOCK_AT_FILE_NAME_LOWER
").'</label><br>'
1035 $result .= '<input type="hidden
" name="IPROPERTY_TEMPLATES[
'.$id.'][TRANSLIT]
" value="N
">'
1036 .'<input type="checkbox
" name="IPROPERTY_TEMPLATES[
'.$id.'][TRANSLIT]
" id="translit_
'.$id.'" value="Y
" '
1037 .'onclick="InheritedPropertiesTemplates.enableTextArea(\
''.$inputId.
'\');InheritedPropertiesTemplates.updateInheritedPropertiesValues(
false,
true)
" '.(($data[$id]["TRANSLIT
"] ?? 'N') !== "Y
"? '': 'checked="checked
"').'>'
1038 .'<label for="translit_
'.$id.'">'.GetMessage("IBLOCK_AT_FILE_NAME_TRANSLIT
").'</label><br>'
1040 $result .= '<input size="2
" maxlength="1
" type="text
" name="IPROPERTY_TEMPLATES[
'.$id.'][SPACE]
" id="space_
'.$id.'" value="'.htmlspecialcharsbx((string)($data[$id]["SPACE"] ?? '')).'" '
1041 .'onchange="InheritedPropertiesTemplates.updateInheritedPropertiesValues(
false,
true)
">'.GetMessage("IBLOCK_AT_FILE_NAME_SPACE
").'<br>'
1044 $result .= '<b><div id="'.$resultId.'"></div></b>';
1049function IBlockInheritedPropertyHidden($iblock_id, $id, $data, $type, $checkboxLabel = ""): string
1051 $inheritedValue = (string)($data[$id]["INHERITED
"] ?? 'Y');
1052 $inherited = ($inheritedValue !== "N
") && ($checkboxLabel !== "");
1053 $inputId = "IPROPERTY_TEMPLATES_
".$id;
1054 $inputName = "IPROPERTY_TEMPLATES[
".$id."][TEMPLATE]
";
1055 $menuId = "mnu_IPROPERTY_TEMPLATES_
".$id;
1056 $resultId = "result_IPROPERTY_TEMPLATES_
".$id;
1057 $checkboxId = "ck_IPROPERTY_TEMPLATES_
".$id;
1059 $templateValue = (string)($data[$id]["TEMPLATE
"] ?? '');
1060 $result = '<input type="hidden
" name="'.$inputName.'" value="'.htmlspecialcharsbx($templateValue).'" />';
1062 if ($checkboxLabel != "")
1064 $result .= '<input type="hidden
" name="IPROPERTY_TEMPLATES[
'.$id.'][INHERITED]
" value="'.($inherited? "Y": "N").'" />';
1067 if (preg_match("/_FILE_NAME\$/
", $id))
1069 $result .= '<input type="hidden
" name="IPROPERTY_TEMPLATES[
'.$id.'][LOWER]
" value="'.($data[$id]["LOWER"] !== "Y"? 'N
': 'Y
').'">';
1070 $result .= '<input type="hidden
" name="IPROPERTY_TEMPLATES[
'.$id.'][TRANSLIT]
" value="'.($data[$id]["TRANSLIT"] !== "Y"? 'N
': 'Y
').'">';
1071 $result .= '<input type="hidden
" name="IPROPERTY_TEMPLATES[
'.$id.'][SPACE]
" value="'.htmlspecialcharsbx($data[$id]["SPACE"]).'">';
1077class CEditorPopupControl
1081 protected $initHtml = false;
1083 protected $filemanIncluded = null;
1085 public function __construct(int $width = 420, int $height = 200)
1087 $this->width = $width;
1088 $this->height = $height;
1089 $this->filemanIncluded = Loader::includeModule('fileman');
1092 public function getEditorHtml(): string
1095 if (!$this->filemanIncluded || $this->initHtml)
1099 $this->initHtml = true;
1100 Main\Page\Asset::getInstance()->addJs('/bitrix/js/iblock/iblock_edit.js');
1102 $result .= '<div id="popup_editor_start
" style="display: none
">';
1104 $LHE = new CLightHTMLEditor;
1106 'height' => $this->height - 40,
1109 'bResizable' => true,
1110 'bUseFileDialogs' => false,
1111 'bFloatingToolbar' => false,
1112 'bArisingToolbar' => true,
1113 'bAutoResize' => true,
1114 'bSaveOnBlur' => true,
1115 'bInitByJS' => true,
1116 'jsObjName' => 'popup_editor',
1117 'toolbarConfig' => array(
1118 'Bold', 'Italic', 'Underline', 'Strike',
1119 'CreateLink', 'DeleteLink',
1120 'Source', 'BackColor', 'ForeColor',
1122 'id' => 'popup_editor_id',
1124 $result .= ob_get_contents();
1126 $result .= '</div>';
1127 $result .= '<script>
1128 var popup_editor_dialog;
1129 var popup_editor_manager = new JCPopupEditor('.$this->width.', '.$this->height.');
1134 public function getControlHtml(string $name, string $value, $maxLength = 255): string
1137 if (!$this->filemanIncluded)
1140 if (!$this->initHtml)
1141 $result = $this->getEditorHtml();
1143 $value = trim($value);
1146 $value = CTextParser::closeTags($value);
1149 $hiddenId = preg_replace('/[^a-zA-Z0-9_-]/', '-', $name);
1150 $demoId = $hiddenId.'-DEMO';
1154 value="'.htmlspecialcharsbx($value).'"
1155 name="'.htmlspecialcharsbx($name).'"
1156 id="'.htmlspecialcharsbx($hiddenId).'"
1157 onchange="'.htmlspecialcharsbx("BX('".CUtil::JSEscape($demoId)."').innerHTML = this.value").'"
1159 $result .= '<div id="'.htmlspecialcharsbx($demoId).'">'.$value.'</div>';
1160 $jsLink = 'javascript:popup_editor_manager.openEditor(\''.CUtil::JSEscape($hiddenId).'\', '.intval($maxLength).')';
1161 $result .= '<a class="bx-action-href
" href="'.htmlspecialcharsbx($jsLink).'">'.GetMessage('IBLOCK_AT_POPUP_EDIT').'</a>';
change_password_forgot_link login popup forget pas AUTH_GOTO_FORGOT_FORM login btn wrap change_password_button login popup link login popup return auth javascript
bx popup label bx width30 PAGE_NEW_MENU_NAME text width
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
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
Form FILTER_ACTION disabled
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
if(empty($signedUserToken)) $key
adm detail iblock types adm detail iblock list tr_SITE_ID display