21 'DESCRIPTION' => Loc::getMessage(
'IBLOCK_PROP_HTML_DESC'),
22 'GetPublicViewHTML' => [__CLASS__,
'GetPublicViewHTML'],
23 'GetPublicEditHTML' => [__CLASS__,
'GetPublicEditHTML'],
24 'GetAdminListViewHTML' => [__CLASS__,
'GetAdminListViewHTML'],
25 'GetPropertyFieldHtml' => [__CLASS__,
'GetPropertyFieldHtml'],
26 'ConvertToDB' => [__CLASS__,
'ConvertToDB'],
27 'ConvertFromDB' => [__CLASS__,
'ConvertFromDB'],
28 'GetLength' => [__CLASS__,
'GetLength'],
29 'PrepareSettings' => [__CLASS__,
'PrepareSettings'],
30 'GetSettingsHTML' => [__CLASS__,
'GetSettingsHTML'],
31 'GetUIFilterProperty' => [__CLASS__,
'GetUIFilterProperty'],
37 if (!is_array($value[
"VALUE"]))
38 $value = static::ConvertFromDB($arProperty, $value);
39 $ar = $value[
'VALUE'] ??
'';
40 if (!empty(
$ar) && is_array(
$ar))
42 if (isset($strHTMLControlName[
'MODE']) && $strHTMLControlName[
'MODE'] ==
'CSV_EXPORT')
43 return '['.$ar[
"TYPE"].
']'.
$ar[
"TEXT"];
44 elseif (isset($strHTMLControlName[
'MODE']) && $strHTMLControlName[
'MODE'] ==
'SIMPLE_TEXT')
45 return (
$ar[
"TYPE"] === self::VALUE_TYPE_HTML ? strip_tags(
$ar[
"TEXT"]) :
$ar[
"TEXT"]);
55 if(!is_array($value[
"VALUE"]))
56 $value = static::ConvertFromDB($arProperty, $value);
57 $ar = $value[
"VALUE"];
67 return Loc::getMessage(
"IBLOCK_PROP_HTML_NOFILEMAN_ERROR");
69 if (!is_array($value[
"VALUE"]))
70 $value = static::ConvertFromDB($arProperty, $value);
72 if (isset($strHTMLControlName[
"MODE"]) && $strHTMLControlName[
"MODE"]==
"SIMPLE")
74 return '<input type="hidden" name="'.$strHTMLControlName[
"VALUE"].
'[TYPE]" value="html">'
75 .
'<textarea cols="60" rows="10" name="'.$strHTMLControlName[
"VALUE"].
'[TEXT]" style="width:100%">'.
htmlspecialcharsEx($value[
"VALUE"][
"TEXT"]).
'</textarea>';
78 $id = preg_replace(
"/[^a-z0-9]/i",
'', $strHTMLControlName[
'VALUE']);
81 echo
'<input type="hidden" name="'.$strHTMLControlName[
"VALUE"].
'[TYPE]" value="html">';
84 'name' => $strHTMLControlName[
"VALUE"].
'[TEXT]',
86 'inputName' => $strHTMLControlName[
"VALUE"].
'[TEXT]',
87 'content' => $value[
'VALUE'][
'TEXT'] ??
'',
89 'minBodyWidth' => 350,
90 'normalBodyWidth' => 555,
93 'limitPhpAccess' =>
false,
95 'autoResizeOffset' => 40,
96 'useFileDialogs' =>
false,
98 'showTaskbars' =>
false,
99 'showNodeNavi' =>
false,
100 'askBeforeUnloadPage' =>
true,
102 'actionUrl' =>
'/bitrix/tools/html_editor_action.php',
104 'setFocusAfterShow' =>
false,
105 'controlsMap' =>
array(
106 array(
'id' =>
'Bold',
'compact' =>
true,
'sort' => 80),
107 array(
'id' =>
'Italic',
'compact' =>
true,
'sort' => 90),
108 array(
'id' =>
'Underline',
'compact' =>
true,
'sort' => 100),
109 array(
'id' =>
'Strikeout',
'compact' =>
true,
'sort' => 110),
110 array(
'id' =>
'RemoveFormat',
'compact' =>
true,
'sort' => 120),
111 array(
'id' =>
'Color',
'compact' =>
true,
'sort' => 130),
112 array(
'id' =>
'FontSelector',
'compact' =>
false,
'sort' => 135),
113 array(
'id' =>
'FontSize',
'compact' =>
false,
'sort' => 140),
114 array(
'separator' =>
true,
'compact' =>
false,
'sort' => 145),
115 array(
'id' =>
'OrderedList',
'compact' =>
true,
'sort' => 150),
116 array(
'id' =>
'UnorderedList',
'compact' =>
true,
'sort' => 160),
117 array(
'id' =>
'AlignList',
'compact' =>
false,
'sort' => 190),
118 array(
'separator' =>
true,
'compact' =>
false,
'sort' => 200),
119 array(
'id' =>
'InsertLink',
'compact' =>
true,
'sort' => 210),
120 array(
'id' =>
'InsertImage',
'compact' =>
false,
'sort' => 220),
121 array(
'id' =>
'InsertVideo',
'compact' =>
true,
'sort' => 230),
122 array(
'id' =>
'InsertTable',
'compact' =>
false,
'sort' => 250),
123 array(
'separator' =>
true,
'compact' =>
false,
'sort' => 290),
124 array(
'id' =>
'Fullscreen',
'compact' =>
false,
'sort' => 310),
125 array(
'id' =>
'More',
'compact' =>
true,
'sort' => 400)
128 $s = ob_get_contents();
135 if (!is_array($arProperty))
139 $arProperty[
'WITH_DESCRIPTION'] = ($arProperty[
'WITH_DESCRIPTION'] ??
'N') ===
'Y' ?
'Y' :
'N';
141 if (!is_array($strHTMLControlName))
143 $strHTMLControlName = [];
146 $strHTMLControlName[
'VALUE'] ??=
'';
147 $strHTMLControlName[
'DESCRIPTION'] ??=
'';
148 if (!is_string($strHTMLControlName[
'DESCRIPTION']))
150 $strHTMLControlName[
'DESCRIPTION'] =
'';
154 if (!is_array($value[
"VALUE"]))
156 $value = static::ConvertFromDB($arProperty, $value);
158 $ar = $value[
"VALUE"] ?? self::getEmptyValue();
160 if (mb_strtolower(
$ar[
"TYPE"]) !=
"text")
161 $ar[
"TYPE"] =
"html";
163 $ar[
"TYPE"] =
"text";
165 $settings = static::PrepareSettings($arProperty);
168 ?><table
width=
"100%"><?
170 isset($strHTMLControlName[
'MODE'])
171 && $strHTMLControlName[
'MODE'] ===
'FORM_FILL'
172 &&
Main\
Config\Option::get(
'iblock',
'use_htmledit') ===
"Y"
176 <td colspan=
"2" align=
"center">
177 <input type=
"hidden" name=
"<?=$strHTMLControlName["VALUE
"]?>" value=
"">
179 $text_name = preg_replace(
"/([^a-z0-9])/is",
"_", $strHTMLControlName[
"VALUE"].
"[TEXT]");
180 $text_type = preg_replace(
"/([^a-z0-9])/is",
"_", $strHTMLControlName[
"VALUE"].
"[TYPE]");
183 htmlspecialcharsBx(
$ar[
"TEXT"]),
185 mb_strtolower(
$ar[
"TYPE"]),
197 <td
align=
"right"><?echo Loc::getMessage(
"IBLOCK_DESC_TYPE")?></td>
199 <input type=
"radio" name=
"<?=$strHTMLControlName["VALUE
"]?>[TYPE]" id=
"<?=$strHTMLControlName["VALUE
"]?>[TYPE][TEXT]" value=
"text" <?
if(
$ar[
"TYPE"]!=
"html")echo
" checked"?>>
200 <label
for=
"<?=$strHTMLControlName["VALUE
"]?>[TYPE][TEXT]"><?echo Loc::getMessage(
"IBLOCK_DESC_TYPE_TEXT")?></label> /
201 <input type=
"radio" name=
"<?=$strHTMLControlName["VALUE
"]?>[TYPE]" id=
"<?=$strHTMLControlName["VALUE
"]?>[TYPE][HTML]" value=
"html"<?
if(
$ar[
"TYPE"]==
"html")echo
" checked"?>>
202 <label
for=
"<?=$strHTMLControlName["VALUE
"]?>[TYPE][HTML]"><?echo Loc::getMessage(
"IBLOCK_DESC_TYPE_HTML")?></label>
206 <td colspan=
"2" align=
"center"><textarea cols=
"60" rows=
"10" name=
"<?=$strHTMLControlName["VALUE
"]?>[TEXT]" style=
"width:100%"><?=
htmlspecialcharsEx(
$ar[
"TEXT"])?></textarea></td>
210 $arProperty[
'WITH_DESCRIPTION'] ===
'Y'
211 && $strHTMLControlName[
'DESCRIPTION'] !==
''
216 <span
title=
"<?echo Loc::getMessage("IBLOCK_PROP_HTML_DESCRIPTION_TITLE
")?>"><?echo Loc::getMessage(
"IBLOCK_PROP_HTML_DESCRIPTION_LABEL")?>:<input type=
"text" name=
"<?=$strHTMLControlName["DESCRIPTION
"]?>" value=
"<?=$value["DESCRIPTION
"]?>" size=
"18"></span>
222 $return = ob_get_contents();
234 if (!is_array($value))
236 $value = static::getValueFromString($value,
true);
238 elseif (isset($value[
'VALUE']) && !is_array($value[
'VALUE']))
240 $value[
'VALUE'] = static::getValueFromString($value[
'VALUE'],
false);
242 $defaultValue = isset($value[
'DEFAULT_VALUE']) && $value[
'DEFAULT_VALUE'] ===
true;
246 && array_key_exists(
'VALUE', $value)
250 isset($value[
'VALUE'][
'TEXT'])
251 && !is_scalar($value[
'VALUE'][
'TEXT'])
254 $value[
'VALUE'][
'TEXT'] =
255 is_object($value[
'VALUE'][
'TEXT']) && method_exists($value[
'VALUE'][
'TEXT'],
'__toString')
256 ? (string)$value[
'VALUE'][
'TEXT']
260 $value[
'VALUE'][
'TEXT'] ??=
'';
261 $value[
'VALUE'][
'TEXT'] = trim($value[
'VALUE'][
'TEXT']);
264 $sanitizer = new \CBXSanitizer();
266 $sanitizer->ApplyDoubleEncode(
false);
267 $value[
'VALUE'][
'TEXT'] = $sanitizer->SanitizeHtml($value[
'VALUE'][
'TEXT']);
269 $len = mb_strlen($value[
'VALUE'][
'TEXT']);
272 if (
$DB->type ===
'MYSQL')
283 $value[
'VALUE'][
'TEXT'] = mb_substr($value[
'VALUE'][
'TEXT'], 0, $limit);
290 'VALUE' => serialize(
$val),
292 if (isset($value[
'DESCRIPTION']) && is_string($value[
'DESCRIPTION']))
294 $value[
'DESCRIPTION'] = trim($value[
'DESCRIPTION']);
295 if ($value[
'DESCRIPTION'] !==
'')
297 $return[
'DESCRIPTION'] = $value[
'DESCRIPTION'];
310 if (!is_array($value[
'VALUE']))
312 $value[
'VALUE'] = (string)$value[
'VALUE'];
313 if ($value[
'VALUE'] !==
'')
317 && str_contains($value[
'VALUE'],
'TEXT')
318 && str_contains($value[
'VALUE'],
'TYPE')
322 'VALUE' => unserialize($value[
'VALUE'], [
'allowed_classes' =>
false]),
324 if ($return[
'VALUE'] ===
false)
328 'TEXT' => $value[
'VALUE'],
329 'TYPE' => self::VALUE_TYPE_TEXT,
338 'TEXT' => $value[
'VALUE'],
339 'TYPE' => self::VALUE_TYPE_TEXT,
344 if (isset($value[
'DESCRIPTION']))
346 $value[
'DESCRIPTION'] = (string)$value[
'DESCRIPTION'];
347 if ($value[
'DESCRIPTION'] !==
'')
349 if (!is_array($return))
355 $return[
"DESCRIPTION"] = trim($value[
"DESCRIPTION"]);
378 $return = unserialize(
$arFields, [
'allowed_classes' =>
false]);
388 if (array_key_exists(
'TEXT', $return) && ((trim((
string)$return[
'TEXT']) !==
'') ||
$defaultValue))
390 $return[
'TYPE'] = mb_strtoupper($return[
'TYPE']);
391 if (($return[
'TYPE'] !== self::VALUE_TYPE_TEXT) && ($return[
'TYPE'] !== self::VALUE_TYPE_HTML))
393 $return[
'TYPE'] = self::VALUE_TYPE_HTML;
407 if (is_array($value) && isset($value[
'VALUE'][
'TEXT']))
409 return mb_strlen(trim((
string)$value[
'VALUE'][
'TEXT']));
420 if (isset($arProperty[
'USER_TYPE_SETTINGS'][
'height']))
422 $height = (int)$arProperty[
'USER_TYPE_SETTINGS'][
'height'];
434 public static function GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields)
436 $arPropertyFields = [
444 $settings = static::PrepareSettings($arProperty);
450 <td>'.Loc::getMessage(
"IBLOCK_PROP_HTML_SETTING_HEIGHT").
':</td>
451 <td><input type="text" size="5" name="'.$strHTMLControlName[
"NAME"].
'[height]" value="'.$height.
'">px</td>
473 $getFull = ($getFull ===
true);
474 $valueType = self::VALUE_TYPE_HTML;
475 $value = (string)$value;
478 $prefix = mb_strtoupper(mb_substr($value, 0, 6));
479 $isText = $prefix ==
'[TEXT]';
480 if ($prefix ==
'[HTML]' || $isText)
483 $valueType = self::VALUE_TYPE_TEXT;
484 $value = mb_substr($value, 6);
505 private static function getEmptyValue():
array
509 'TYPE' => self::VALUE_TYPE_TEXT,
if($_SERVER $defaultValue['REQUEST_METHOD']==="GET" &&!empty($RestoreDefaults) && $bizprocPerms==="W" &&check_bitrix_sessid())
static includeModule($moduleName)
static AddHTMLEditorFrame( $strTextFieldName, $strTextValue, $strTextTypeFieldName, $strTextTypeValue, $arSize=Array("height"=>350), $CONVERT_FOR_WORKFLOW="N", $WORKFLOW_DOCUMENT_ID=0, $NEW_DOCUMENT_PATH="", $textarea_field="", $site=false, $bWithoutPHP=true, $arTaskbars=false, $arAdditionalParams=Array())
static GetPublicViewHTML($arProperty, $value, $strHTMLControlName)
static CheckArray($arFields=false, $defaultValue=false)
static PrepareSettings($arProperty)
static GetUIFilterProperty($property, $strHTMLControlName, &$fields)
static GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields)
static GetPublicEditHTML($arProperty, $value, $strHTMLControlName)
static GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
static GetUserTypeDescription()
static GetAdminListViewHTML($arProperty, $value, $strHTMLControlName)
static ConvertFromDB($arProperty, $value)
static getValueFromString($value, $getFull=false)
static ConvertToDB($arProperty, $value)
static GetLength($arProperty, $value)
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)
CheckSerializedData($str, $max_depth=200)
FormatText($strText, $strTextType="text")
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
<? endif;?> window document title