1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
admin_tools.php
См. документацию.
1<?php
5
7
8function _ShowStringPropertyField($name, $property_fields, $values, $bInitDef = false, $bVarsFromForm = false)
9{
10 global $bCopy;
11
13
14 $rows = $property_fields["ROW_COUNT"];
15 $cols = $property_fields["COL_COUNT"];
16
17 $MULTIPLE_CNT = intval($property_fields["MULTIPLE_CNT"]);
18 if ($MULTIPLE_CNT <= 0 || $MULTIPLE_CNT > 30)
19 $MULTIPLE_CNT = 5;
20
21 $bInitDef = $bInitDef && ($property_fields["DEFAULT_VALUE"] <> '');
22
23 $cnt = ($property_fields["MULTIPLE"] == "Y"? $MULTIPLE_CNT + ($bInitDef? 1: 0) : 1);
24
25 $start = 0;
26 $show = true;
27
28 echo '<table cellpadding="0" cellspacing="0" border="0" class="nopadding" width="100%" id="tb'.md5($name).'">';
29
30 if ($property_fields["WITH_DESCRIPTION"]=="Y")
31 $strAddDesc = "[VALUE]";
32 else
33 $strAddDesc = "";
34
35 if (!is_array($values))
36 $values = array();
37
38 foreach($values as $key=>$val)
39 {
40 $show = false;
41 if($bCopy)
42 {
43 $key = "n".$start;
44 $start++;
45 }
46
47 echo "<tr><td>";
48
49 $val_description = "";
50 if (is_array($val) && array_key_exists("VALUE", $val))
51 {
52 $val_description = $val["DESCRIPTION"] ?? '';
53 $val = $val["VALUE"];
54 }
55
56 if ($rows > 1)
57 echo '<textarea name="'.$name.'['.$key.']'.$strAddDesc.'" cols="'.$cols.'" rows="'.$rows.'">'.htmlspecialcharsEx($val).'</textarea>';
58 else
59 echo '<input name="'.$name.'['.$key.']'.$strAddDesc.'" value="'.htmlspecialcharsbx($val).'" size="'.$cols.'" type="text">';
60
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>';
63
64 echo "<br>";
65 echo "</td></tr>";
66
67 if ($property_fields["MULTIPLE"] != "Y")
68 {
69 $bVarsFromForm = true;
70 break;
71 }
72 }
73
74 if (!$bVarsFromForm || $show)
75 {
76 for ($i = 0; $i < $cnt; $i++)
77 {
78 echo "<tr><td>";
79 if ($i == 0 && $bInitDef)
80 $val = $property_fields["DEFAULT_VALUE"];
81 else
82 $val = "";
83
84 if ($rows > 1)
85 echo '<textarea name="'.$name.'[n'.($start + $i).']'.$strAddDesc.'" cols="'.$cols.'" rows="'.$rows.'">'.htmlspecialcharsEx($val).'</textarea>';
86 else
87 echo '<input name="'.$name.'[n'.($start + $i).']'.$strAddDesc.'" value="'.htmlspecialcharsbx($val).'" size="'.$cols.'" type="text">';
88
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>';
91
92 echo "<br>";
93 echo "</td></tr>";
94 }
95 }
96
97 if ($property_fields["MULTIPLE"] == "Y")
98 {
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>";
101 }
102
103 echo "</table>";
104}
105
106function _ShowGroupPropertyField($name, $property_fields, $values, $bVarsFromForm = false)
107{
108 $name = htmlspecialcharsbx($name);
109
110 if (!is_array($values))
111 $values = array();
112
113 foreach ($values as $key => $value)
114 {
115 if (is_array($value) && array_key_exists("VALUE", $value))
116 $values[$key] = $value["VALUE"];
117 }
118
119 $res = "";
120 $bWas = false;
121 $sections = CIBlockSection::GetList(
122 [
123 'LEFT_MARGIN' => 'ASC',
124 ],
125 [
126 'IBLOCK_ID' => $property_fields['LINK_IBLOCK_ID']
127 ],
128 false,
129 [
130 'ID',
131 'IBLOCK_ID',
132 'DEPTH_LEVEL',
133 'NAME',
134 'LEFT_MARGIN',
135 ]
136 );
137 while ($ar = $sections->GetNext())
138 {
139 $margin = max((int)$ar['DEPTH_LEVEL'], 1) - 1;
140 $res .= '<option value="' . $ar['ID'] . '"';
141 if (in_array($ar['ID'], $values))
142 {
143 $bWas = true;
144 $res .= ' selected';
145 }
146 $res .= '>' . str_repeat(' . ', $margin) .$ar['NAME'] . '</option>';
147 }
148 unset($ar, $sections);
149
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>';
153 echo $res;
154 echo '</select>';
155}
156
157function _ShowElementPropertyField($name, $property_fields, $values, $bVarsFromForm = false)
158{
159 global $bCopy;
160
161 $name = htmlspecialcharsbx($name);
162
163 $index = 0;
164 $show = true;
165 $selfFolderUrl = (defined("SELF_FOLDER_URL") ? SELF_FOLDER_URL : "/bitrix/admin/");
166
167 $MULTIPLE_CNT = intval($property_fields["MULTIPLE_CNT"]);
168 if ($MULTIPLE_CNT <= 0 || $MULTIPLE_CNT > 30)
169 $MULTIPLE_CNT = 5;
170
171 $cnt = ($property_fields["MULTIPLE"] == "Y"? $MULTIPLE_CNT : 1);
172
173 if(!is_array($values))
174 $values = array();
175
176 $fixIBlock = $property_fields["LINK_IBLOCK_ID"] > 0;
177 $windowTableId = 'iblockprop-'.Iblock\PropertyTable::TYPE_ELEMENT.'-'.$property_fields['ID'].'-'.$property_fields['LINK_IBLOCK_ID'];
178
179 echo '<table cellpadding="0" cellspacing="0" border="0" class="nopadding" width="100%" id="tb'.md5($name).'">';
180 $key = '';
181 foreach ($values as $key=>$val)
182 {
183 $show = false;
184 if ($bCopy)
185 {
186 $key = "n".$index;
187 $index++;
188 }
189
190 if (is_array($val) && array_key_exists("VALUE", $val))
191 $val = $val["VALUE"];
192
193 $db_res = CIBlockElement::GetByID($val);
194 $ar_res = $db_res->GetNext();
195 echo '<tr><td>'.
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.'&amp;IBLOCK_ID='.$property_fields["LINK_IBLOCK_ID"].'&amp;n='.$name.'&amp;k='.$key.($fixIBlock ? '&amp;iblockfix=y' : '').'&amp;tableId='.$windowTableId.'\', 900, 700);">'.
198 '&nbsp;<span id="sp_'.md5($name).'_'.$key.'" >' . ($ar_res['NAME'] ?? '') . '</span>'.
199 '</td></tr>';
200
201 if ($property_fields["MULTIPLE"] != "Y")
202 {
203 $bVarsFromForm = true;
204 break;
205 }
206 }
207
208 if (!$bVarsFromForm || $show)
209 {
210 for ($i = 0; $i < $cnt; $i++)
211 {
212 $val = "";
213 $key = "n".$index;
214 $index++;
215
216 echo '<tr><td>'.
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.'&amp;IBLOCK_ID='.$property_fields["LINK_IBLOCK_ID"].'&amp;n='.$name.'&amp;k='.$key.($fixIBlock ? '&amp;iblockfix=y' : '').'&amp;tableId='.$windowTableId.'\', 900, 700);">'.
219 '&nbsp;<span id="sp_'.md5($name).'_'.$key.'"></span>'.
220 '</td></tr>';
221 }
222 }
223
224 if($property_fields["MULTIPLE"]=="Y")
225 {
226 echo '<tr><td>'.
227 '<input type="button" value="'.GetMessage("IBLOCK_AT_PROP_ADD").'..." onClick="jsUtils.OpenWindow(\''.$selfFolderUrl.'iblock_element_search.php?lang='.LANGUAGE_ID.'&amp;IBLOCK_ID='.$property_fields["LINK_IBLOCK_ID"].'&amp;n='.$name.'&amp;m=y&amp;k='.$key.($fixIBlock ? '&amp;iblockfix=y' : '').'&amp;tableId='.$windowTableId.'\', 900, 700);">'.
228 '<span id="sp_'.md5($name).'_'.$key.'" ></span>'.
229 '</td></tr>';
230 }
231
232 echo '</table>';
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."&amp;IBLOCK_ID=".$property_fields["LINK_IBLOCK_ID"]."&amp;n=".$name."&amp;k=n'+MV_".md5($name)."+'".($fixIBlock ? '&amp;iblockfix=y' : '')."&amp;tableId=".$windowTableId."\', '+\r\n".
243 "' 900, 700);\">'+".
244 "'&nbsp;<span id=\"sp_".md5($name)."_n'+MV_".md5($name)."+'\" >'+name+'</span>".
245 "';";
246 echo 'MV_'.md5($name).'++;';
247 echo '}';
248 echo "\r\n</script>";
249}
250
251function _ShowFilePropertyField($name, $property_fields, $values, $max_file_size_show=50000, $bVarsFromForm = false)
252{
253 global $bCopy, $historyId;
254
255 $name = htmlspecialcharsbx($name);
256
257 static $maxSize = array();
258 if (empty($maxSize))
259 {
260 $detailImageSize = (int)Main\Config\Option::get('iblock', 'detail_image_size');
261 $maxSize = array(
262 'W' => $detailImageSize,
263 'H' => $detailImageSize
264 );
265 unset($detailImageSize);
266 }
267
268 CModule::IncludeModule('fileman');
269
270 if (empty($values) || $bCopy || !is_array($values))
271 {
272 $values = array(
273 "n0" => 0,
274 );
275 }
276
277 if ($historyId > 0)
278 {
279 $newUploaderParams = array(
280 'delete' => false,
281 'edit' => false
282 );
283 }
284 else
285 {
286 $newUploaderParams = array(
287 "upload" => true,
288 "medialib" => true,
289 "fileDialog" => true,
290 "cloud" => true
291 );
292 }
293
294 if($property_fields["MULTIPLE"] == "N")
295 {
296 foreach($values as $key => $val)
297 {
298 if(is_array($val))
299 $file_id = $val["VALUE"];
300 else
301 $file_id = $val;
302
303 if ($bVarsFromForm)
304 {
305 $request = \Bitrix\Main\Context::getCurrent()->getRequest();
306 $number = 0;
307 if (preg_match("/PROP\\[(\d+)\\]/i", $name, $matches))
308 {
309 $number = $matches[1];
310 }
311 $prop = $request->isPost() ? $request->getPost("PROP") : $request->getQuery("PROP");
312 if ($number > 0 && is_array($prop) && array_key_exists($number, $prop))
313 {
314 $prop = $prop[$number];
315 if (!empty($prop) && is_array($prop))
316 {
317 if (!array_key_exists('tmp_name', $prop))
318 $prop = current($prop);
319 $file_id = $prop;
320 }
321 }
322 }
323 echo \Bitrix\Main\UI\FileInput::createInstance(
324 array(
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"],
330 "maxCount" => 1
331 ) + $newUploaderParams
332 )->show($file_id, $bVarsFromForm);
333 break;
334 }
335 }
336 else
337 {
338 $inputName = array();
339 foreach($values as $key=>$val)
340 {
341 $inputName[$name."[".$key."]"] = (is_array($val) && array_key_exists("VALUE", $val) ? $val["VALUE"] : $val);
342 }
343
344 if ($bVarsFromForm)
345 {
346 $request = \Bitrix\Main\Context::getCurrent()->getRequest();
347 $number = 0;
348 if (preg_match("/PROP\\[(\d+)\\]/i", $name, $matches))
349 {
350 $number = $matches[1];
351 }
352 $prop = $request->isPost() ? $request->getPost("PROP") : $request->getQuery("PROP");
353 if ($number > 0 && is_array($prop) && array_key_exists($number, $prop))
354 {
355 $prop = $prop[$number];
356 if (!empty($prop) && is_array($prop))
357 {
358 $clearProp = array();
359 foreach ($prop as $valueRowId => $valueRow)
360 {
361 $correct = true;
362 if (preg_match('/^n\d+$/', $valueRowId) && is_string($valueRow))
363 {
364 if (!preg_match('/^\d+$/', $valueRow))
365 $correct = false;
366 }
367 if ($correct)
368 $clearProp[$valueRowId] = $valueRow;
369 }
370 $values = $clearProp;
371 }
372 }
373
374 $inputName = array();
375 foreach($values as $key=>$val)
376 {
377 $inputName[$name."[".$key."]"] = $val;
378 }
379 }
380 echo \Bitrix\Main\UI\FileInput::createInstance(
381 array(
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);
389 }
390}
391
392function _ShowListPropertyField($name, $property_fields, $values, $bInitDef = false, $def_text = false)
393{
394 $name = htmlspecialcharsbx($name);
395
396 if (!is_array($values))
397 $values = array();
398
399 foreach($values as $key => $value)
400 {
401 if(is_array($value) && array_key_exists("VALUE", $value))
402 $values[$key] = $value["VALUE"];
403 }
404
405 $id = $property_fields["ID"];
406 $multiple = $property_fields["MULTIPLE"];
407 $res = "";
408 $prop_enums = CIBlockProperty::GetPropertyEnum($id, ['SORT' => 'ASC', 'VALUE' => 'ASC', 'ID' => 'ASC']);
409 if($property_fields["LIST_TYPE"]=="C") //list property as checkboxes
410 {
411 $cnt = 0;
412 $wSel = false;
413 $res_tmp = '';
414 while($ar_enum = $prop_enums->Fetch())
415 {
416 $cnt++;
417 if($bInitDef)
418 $sel = ($ar_enum["DEF"]=="Y");
419 else
420 $sel = in_array($ar_enum["ID"], $values);
421 if($sel)
422 $wSel = true;
423
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>';
429
430 if($cnt==1)
431 $res_tmp = '<input type="checkbox" name="'.$name.'[]" value="'.htmlspecialcharsbx($ar_enum["ID"]).'"'.($sel?" checked":"").' id="'.$uniq.'"><br>';
432 }
433
434
435 $uniq = md5(uniqid(rand(), true));
436
437 if($cnt==1)
438 $res = $res_tmp;
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;
441
442 if($multiple=="Y" || $cnt==1 || $property_fields['IS_REQUIRED'] == 'Y')
443 $res = '<input type="hidden" name="'.$name.'" value="">'.$res;
444 }
445 else //list property as list
446 {
447 $bNoValue = true;
448 while($ar_enum = $prop_enums->Fetch())
449 {
450 if($bInitDef)
451 $sel = ($ar_enum["DEF"]=="Y");
452 else
453 $sel = in_array($ar_enum["ID"], $values);
454 if($sel)
455 $bNoValue = false;
456 $res .= '<option value="'.htmlspecialcharsbx($ar_enum["ID"]).'"'.($sel?" selected":"").'>'.htmlspecialcharsex($ar_enum["VALUE"]).'</option>';
457 }
458
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>'.
465 $res.
466 '</select>';
467 }
468 echo $res;
469}
470
471function _ShowUserPropertyField($name, $property_fields, $values, $bInitDef = false, $bVarsFromForm = false, $max_file_size_show=50000, $form_name = "form_element", $bCopy = false)
472{
473 global $bCopy;
474
475 $name = htmlspecialcharsbx($name);
476
477 $start = 0;
478
479 if(!is_array($property_fields["~VALUE"]))
480 $values = array();
481 else
482 $values = $property_fields["~VALUE"];
483
484 unset($property_fields["VALUE"]);
485 unset($property_fields["~VALUE"]);
486
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);
490 $max_val = -1;
491
492 if(($arUserType["PROPERTY_TYPE"] !== "F") || (!$bCopy))
493 {
494 if($bMultiple)
495 {
496 $html .= '<tr><td>';
497 $html .= call_user_func_array($arUserType["GetPropertyFieldHtmlMulty"],
498 array(
499 $property_fields,
500 $values,
501 array(
502 "VALUE"=>'PROP['.$property_fields["ID"].']',
503 "FORM_NAME"=>$form_name,
504 "MODE"=>"FORM_FILL",
505 "COPY" => $bCopy,
506 ),
507 ));
508 $html .= '</td></tr>';
509 }
510 else
511 {
512 foreach($values as $key=>$val)
513 {
514 if($bCopy)
515 {
516 $key = "n".$start;
517 $start++;
518 }
519
520 if(!is_array($val) || !array_key_exists("VALUE",$val))
521 $val = array("VALUE"=>$val, "DESCRIPTION"=>"");
522
523 $html .= '<tr><td>';
524 if(array_key_exists("GetPropertyFieldHtml", $arUserType))
525 $html .= call_user_func_array($arUserType["GetPropertyFieldHtml"],
526 array(
527 $property_fields,
528 $val,
529 array(
530 "VALUE"=>'PROP['.$property_fields["ID"].']['.$key.'][VALUE]',
531 "DESCRIPTION"=>'PROP['.$property_fields["ID"].']['.$key.'][DESCRIPTION]',
532 "FORM_NAME"=>$form_name,
533 "MODE"=>"FORM_FILL",
534 "COPY"=>$bCopy,
535 ),
536 ));
537 else
538 $html .= '&nbsp;';
539 $html .= '</td></tr>';
540
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")
544 {
545 $bVarsFromForm = true;
546 break;
547 }
548 }
549 }
550 }
551
552 if(
553 (!$bVarsFromForm && !$bMultiple)
554 || ($bVarsFromForm && !$bMultiple && count($values) == 0) //Was not displayed
555 )
556 {
557 $bDefaultValue = is_array($property_fields["DEFAULT_VALUE"]) || (string)$property_fields["DEFAULT_VALUE"] !== '';
558
559 if($property_fields["MULTIPLE"]=="Y")
560 {
561 $cnt = (int)$property_fields["MULTIPLE_CNT"];
562 if($cnt <= 0 || $cnt > 30)
563 $cnt = 5;
564
565 if($bInitDef && $bDefaultValue)
566 $cnt++;
567 }
568 else
569 {
570 $cnt = 1;
571 }
572
573 for($i=$max_val+1; $i<$max_val+1+$cnt; $i++)
574 {
575 if($i==0 && $bInitDef && $bDefaultValue)
576 $val = array(
577 "VALUE"=>$property_fields["DEFAULT_VALUE"],
578 "DESCRIPTION"=>"",
579 );
580 else
581 $val = array(
582 "VALUE"=>"",
583 "DESCRIPTION"=>"",
584 );
585
586 $key = "n".($start + $i);
587
588 $html .= '<tr><td>';
589 if(array_key_exists("GetPropertyFieldHtml", $arUserType))
590 $html .= call_user_func_array($arUserType["GetPropertyFieldHtml"],
591 array(
592 $property_fields,
593 $val,
594 array(
595 "VALUE"=>'PROP['.$property_fields["ID"].']['.$key.'][VALUE]',
596 "DESCRIPTION"=>'PROP['.$property_fields["ID"].']['.$key.'][DESCRIPTION]',
597 "FORM_NAME"=>$form_name,
598 "MODE"=>"FORM_FILL",
599 "COPY"=>$bCopy,
600 ),
601 ));
602 else
603 $html .= '&nbsp;';
604 $html .= '</td></tr>';
605 }
606 $max_val += $cnt;
607 }
608 if(
609 $property_fields["MULTIPLE"]=="Y"
610 && $arUserType["USER_TYPE"] !== "HTML"
611 && $arUserType["USER_TYPE"] !== "employee"
612 && !$bMultiple
613 )
614 {
615 $html .= '<tr><td><input type="button" value="'.GetMessage("IBLOCK_AT_PROP_ADD").'" onClick="BX.IBlock.Tools.addNewRow(\'tb'.md5($name).'\')"></td></tr>';
616 }
617 $html .= '</table>';
618 echo $html;
619}
620
621function _ShowPropertyField(
622 $name,
623 $property_fields,
624 $values,
625 $bInitDef = false,
626 $bVarsFromForm = false,
627 $max_file_size_show = 50000,
628 $form_name = "form_element",
629 $bCopy = false
630)
631{
632 $type = $property_fields["PROPERTY_TYPE"];
633 $userType = (string)$property_fields["USER_TYPE"] ?? '';
634 $foundUserType = false;
635 if ($userType !== '')
636 {
637 $userTypeDescription = CIBlockProperty::GetUserType($userType);
638 if (!empty($userTypeDescription))
639 {
640 $foundUserType = true;
641 _ShowUserPropertyField($name, $property_fields, $values, $bInitDef, $bVarsFromForm, $max_file_size_show, $form_name, $bCopy);
642 }
643 }
644 if (!$foundUserType)
645 {
646 switch ($type)
647 {
648 case Iblock\PropertyTable::TYPE_LIST:
649 _ShowListPropertyField($name, $property_fields, $values, $bInitDef);
650 break;
651 case Iblock\PropertyTable::TYPE_FILE:
652 _ShowFilePropertyField($name, $property_fields, $values, $max_file_size_show, $bVarsFromForm);
653 break;
654 case Iblock\PropertyTable::TYPE_SECTION:
655 if (function_exists("_ShowGroupPropertyField_custom"))
656 {
657 _ShowGroupPropertyField_custom($name, $property_fields, $values, $bVarsFromForm);
658 }
659 else
660 {
661 _ShowGroupPropertyField($name, $property_fields, $values, $bVarsFromForm);
662 }
663 break;
664 case Iblock\PropertyTable::TYPE_ELEMENT:
665 _ShowElementPropertyField($name, $property_fields, $values, $bVarsFromForm);
666 break;
667 default:
668 _ShowStringPropertyField($name, $property_fields, $values, $bInitDef, $bVarsFromForm);
669 break;
670 }
671 }
672}
673
674function _ShowHiddenValue($name, $value)
675{
676 $res = "";
677
678 if(is_array($value))
679 {
680 foreach($value as $k => $v)
681 $res .= _ShowHiddenValue($name.'['.htmlspecialcharsbx($k).']', $v);
682 }
683 else
684 {
685 $res .= '<input type="hidden" name="'.$name.'" value="'.htmlspecialcharsbx($value).'">'."\n";
686 }
687
688 return $res;
689}
690
691class _CIBlockError
692{
693 var $err_type, $err_text, $err_level;
694
695 public function __construct($err_level = false, $err_type = "", $err_text = "")
696 {
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);
701 }
702
703 function GetErrorText($error = false)
704 {
705 static $errors = array();
706 $str = "";
707 if(is_object($error))
708 {
709 $errors[] = $error;
710 }
711 else
712 {
713 foreach($errors as $error)
714 {
715 if($str)
716 $str .= "<br>";
717 $str .= $error->err_text;
718 }
719 }
720 return $str;
721 }
722}
723
724if(
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()
731)
732{
733 require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_js.php");
734
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"]);
739 else
740 $obRights = new CIBlockRights($_GET["id"]);
741
742 $obStorage = $obRights->_storage_object();
743
744 $arOverwrited = array();
745 if(isset($_REQUEST["added"]) && is_array($_REQUEST["added"]))
746 {
747 foreach($_REQUEST["added"] as $provider => $arCodes)
748 {
749 if(is_array($arCodes))
750 {
751 foreach($arCodes as $id => $arCode)
752 $arOverwrited[$id] = $obStorage->CountOverWrited($id);
753 }
754 }
755 }
756
757 if(isset($_REQUEST["info"]) && $_REQUEST["info"] > 0)
758 {
759 $arOverwrited = $obRights->GetUserOperations($_GET["id"], $_REQUEST["info"]);
760 }
761
762 echo CUtil::PhpToJSObject($arOverwrited);
763
764 require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin_js.php");
765}
766
767function IBlockShowRights($entity_type, $iblock_id, $id, $section_title, $variable_name, $arPossibleRights, $arActualRights, $bDefault = false, $bForceInherited = false, $arSelected = array(), $arHighLight = array())
768{
769 $js_var_name = preg_replace("/[^a-zA-Z0-9_]/", "_", $variable_name);
770 $html_var_name = htmlspecialcharsbx($variable_name);
771
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>';
776
777 if($bForceInherited != true)
778 {
779 foreach($arActualRights as $RIGHT_ID => $arRightSet)
780 if($arRightSet["IS_INHERITED"] <> "Y")
781 $arSelected[$arRightSet["GROUP_CODE"]] = true;
782 }
783
784 $table_id = $variable_name."_table";
785 $href_id = $variable_name."_href";
786
787 CJSCore::Init(array('access'));
788 ?>
789 <tr>
790 <td colspan="2" align="center">
791 <script>
792 BX.message({
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"))?>'
797 });
798 var obIBlockAccess_<?=$js_var_name?> = new JCIBlockAccess(
799 '<?=CUtil::JSEscape($entity_type)?>',
800 <?=intval($iblock_id)?>,
801 <?=intval($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)?>
808 );
809 </script>
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">
813 <td colspan="2">
814 <?echo $section_title?>
815 </td>
816 </tr>
817 <?endif?>
818 <?
819 $arNames = array();
820 foreach($arActualRights as $arRightSet)
821 $arNames[] = $arRightSet["GROUP_CODE"];
822
823 $access = new CAccess();
824 $arNames = $access->GetNames($arNames);
825
826 foreach($arActualRights as $RIGHT_ID => $arRightSet)
827 {
828 if($bForceInherited || $arRightSet["IS_INHERITED"] === "Y")
829 {
830 $arRightSet["IS_OVERWRITED"] ??= null;
831 ?>
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>
834 <td align="left">
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"])?>">
839 <?endif;?>
840 <?echo htmlspecialcharsex($arPossibleRights[$arRightSet["TASK_ID"]])?>
841 </td>
842 </tr>
843 <?
844 }
845 }
846
847 if($bForceInherited != true)
848 {
849 foreach($arActualRights as $RIGHT_ID => $arRightSet)
850 {
851 if($arRightSet["IS_INHERITED"] <> "Y")
852 {
853 ?>
854 <tr>
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>
856 <td align="left">
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>
862 <?endforeach?>
863 </select>
864 <a href="javascript:void(0);" onclick="JCIBlockAccess.DeleteRow(this, '<?=htmlspecialcharsbx(CUtil::addslashes($arRightSet["GROUP_CODE"]))?>', '<?=CUtil::JSEscape($variable_name)?>')" class="access-delete"></a>
865 <?if($bDefault):?>
866 <span title="<?echo GetMessage("IBLOCK_AT_OVERWRITE_TIP")?>"><?
867 $existsOverwrited = !empty($arRightSet['OVERWRITED']) && is_array($arRightSet['OVERWRITED']);
868 if (
869 $existsOverwrited
870 && $arRightSet["OVERWRITED"][0] > 0
871 && $arRightSet["OVERWRITED"][1] > 0
872 )
873 {
874 ?>
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])?>)
876 <?
877 }
878 elseif(
879 $existsOverwrited
880 && $arRightSet["OVERWRITED"][0] > 0
881 )
882 {
883 ?>
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])?>)
885 <?
886 }
887 elseif(
888 $existsOverwrited
889 && $arRightSet["OVERWRITED"][1] > 0
890 )
891 {
892 ?>
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])?>)
894 <?
895 }?></span>
896 <?endif;?>
897 </td>
898 </tr>
899 <?
900 }
901 }
902 }
903 ?>
904 <tr>
905 <td width="40%" align="right">&nbsp;</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>
908 </td>
909 </tr>
910 </table>
911 </td>
912 </tr>
913 <?
914}
915
916function GetUserProfileLink($user_id, $title)
917{
918 static $arUsersCache = array();
919 $user_id = intval($user_id);
920
921 if($user_id > 0)
922 {
923 if(!isset($arUsersCache[$user_id]))
924 {
925 $rsUser = CUser::GetByID($user_id);
926 $arUsersCache[$user_id] = $rsUser->Fetch();
927 }
928
929 if($arUsersCache[$user_id])
930 {
931 $urlToUser = "user_edit.php?lang='.LANGUAGE_ID.'&ID='.$user_id.'";
932 if (defined("PUBLIC_MODE") && PUBLIC_MODE == 1)
933 {
934 return "(".htmlspecialcharsex($arUsersCache[$user_id]["LOGIN"]).") ".
935 htmlspecialcharsex($arUsersCache[$user_id]["NAME"]." ".$arUsersCache[$user_id]["LAST_NAME"]);
936 }
937 else
938 {
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"]);
942 }
943 }
944 }
945 return '';
946}
947
948function IBlockGetHiddenHTML($name, $value)
949{
950 $result = "";
951 if(is_array($value))
952 {
953 $i = 0;
954 foreach($value as $k => $v)
955 {
956 if($k === $i)
957 $result .= IBlockGetHiddenHTML($name."[]", $v);
958 else
959 $result .= IBlockGetHiddenHTML($name."[".$k."]", $v);
960 $i++;
961 }
962 }
963 else
964 {
965 $result = '<input type="hidden" name="'.htmlspecialcharsbx($name).'" value="'.htmlspecialcharsbx($value).'" />'."\n";
966 }
967 return $result;
968}
969
970function IBlockGetWatermarkPositions()
971{
972 $rs = new CDBResult;
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")),
983 ));
984 return $rs;
985}
986
987function IBlockInheritedPropertyInput($iblock_id, $id, $data, $type, $checkboxLabel = ""): string
988{
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;
996
997 if ($type === "S")
998 $menuItems = CIBlockParameters::GetInheritedPropertyTemplateSectionMenuItems($iblock_id, "InheritedPropertiesTemplates.insertIntoInheritedPropertiesTemplate", $menuId, $inputId);
999 else
1000 $menuItems= CIBlockParameters::GetInheritedPropertyTemplateElementMenuItems($iblock_id, "InheritedPropertiesTemplates.insertIntoInheritedPropertiesTemplate", $menuId, $inputId);
1001
1002 $templateValue = (string)($data[$id]["TEMPLATE"] ?? '');
1003 $u = new CAdminPopupEx($menuId, $menuItems, array("zIndex" => 2000));
1004 $result = $u->Show(true)
1005 .'<script>
1006 window.ipropTemplates[window.ipropTemplates.length] = {
1007 "ID": "'.$id.'",
1008 "INPUT_ID": "'.$inputId.'",
1009 "RESULT_ID": "'.$resultId.'",
1010 "TEMPLATE": ""
1011 };
1012 </script>'
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)
1016 .'</textarea>'
1017 .'<input style="float:right" type="button" id="'.$menuId.'" '.($inherited? 'disabled="disabled"': '').' value="...">'
1018 .'<br>'
1019 ;
1020 if ($checkboxLabel != "")
1021 {
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>'
1026 ;
1027 }
1028 if (preg_match("/_FILE_NAME\$/", $id))
1029 {
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>'
1034 ;
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>'
1039 ;
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>'
1042 ;
1043 }
1044 $result .= '<b><div id="'.$resultId.'"></div></b>';
1045
1046 return $result;
1047}
1048
1049function IBlockInheritedPropertyHidden($iblock_id, $id, $data, $type, $checkboxLabel = ""): string
1050{
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;
1058
1059 $templateValue = (string)($data[$id]["TEMPLATE"] ?? '');
1060 $result = '<input type="hidden" name="'.$inputName.'" value="'.htmlspecialcharsbx($templateValue).'" />';
1061
1062 if ($checkboxLabel != "")
1063 {
1064 $result .= '<input type="hidden" name="IPROPERTY_TEMPLATES['.$id.'][INHERITED]" value="'.($inherited? "Y": "N").'" />';
1065 }
1066
1067 if (preg_match("/_FILE_NAME\$/", $id))
1068 {
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"]).'">';
1072 }
1073
1074 return $result;
1075}
1076
1077class CEditorPopupControl
1078{
1079 protected $width;
1080 protected $height;
1081 protected $initHtml = false;
1083 protected $filemanIncluded = null;
1084
1085 public function __construct(int $width = 420, int $height = 200)
1086 {
1087 $this->width = $width;
1088 $this->height = $height;
1089 $this->filemanIncluded = Loader::includeModule('fileman');
1090 }
1091
1092 public function getEditorHtml(): string
1093 {
1094 $result = '';
1095 if (!$this->filemanIncluded || $this->initHtml)
1096 {
1097 return $result;
1098 }
1099 $this->initHtml = true;
1100 Main\Page\Asset::getInstance()->addJs('/bitrix/js/iblock/iblock_edit.js');
1101
1102 $result .= '<div id="popup_editor_start" style="display: none">';
1103 ob_start();
1104 $LHE = new CLightHTMLEditor;
1105 $LHE->Show(array(
1106 'height' => $this->height - 40,
1107 'width' => '100%',
1108 'content' => '',
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',
1121 ),
1122 'id' => 'popup_editor_id',
1123 ));
1124 $result .= ob_get_contents();
1125 ob_end_clean();
1126 $result .= '</div>';
1127 $result .= '<script>
1128 var popup_editor_dialog;
1129 var popup_editor_manager = new JCPopupEditor('.$this->width.', '.$this->height.');
1130 </script>';
1131 return $result;
1132 }
1133
1134 public function getControlHtml(string $name, string $value, $maxLength = 255): string
1135 {
1136 $result = '';
1137 if (!$this->filemanIncluded)
1138 return $result;
1139
1140 if (!$this->initHtml)
1141 $result = $this->getEditorHtml();
1142
1143 $value = trim($value);
1144 if ($value)
1145 {
1146 $value = CTextParser::closeTags($value);
1147 }
1148
1149 $hiddenId = preg_replace('/[^a-zA-Z0-9_-]/', '-', $name);
1150 $demoId = $hiddenId.'-DEMO';
1151
1152 $result .= '<input
1153 type="hidden"
1154 value="'.htmlspecialcharsbx($value).'"
1155 name="'.htmlspecialcharsbx($name).'"
1156 id="'.htmlspecialcharsbx($hiddenId).'"
1157 onchange="'.htmlspecialcharsbx("BX('".CUtil::JSEscape($demoId)."').innerHTML = this.value").'"
1158 >';
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>';
1162
1163 return $result;
1164 }
1165}
<?=$taskID?> selected
Определения access_edit.php:348
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
Определения change_password.php:57
Определения loader.php:13
$selfFolderUrl
Определения discount_coupon_list.php:18
& nbsp
Определения epilog_main_admin.php:38
$bVarsFromForm
Определения file_edit.php:44
bx popup label bx width30 PAGE_NEW_MENU_NAME text width
Определения file_new.php:677
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
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
Form FILTER_ACTION disabled
Определения options.php:358
$start
Определения get_search.php:9
_ShowStringPropertyField($name, $property_fields, $values, $bInitDef=false, $bVarsFromForm=false)
Определения admin_tools.php:8
htmlspecialcharsEx($str)
Определения tools.php:2685
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
$name
Определения menu_edit.php:35
if(empty($signedUserToken)) $key
Определения quickway.php:257
lang
Определения options.php:182
$i
Определения factura.php:643
text align
Определения template.php:556
$val
Определения options.php:1793
margin right
Определения options_user_settings.php:273
$rows
Определения options.php:264
adm detail iblock types adm detail iblock list tr_SITE_ID display
Определения yandex_setup.php:388