function ShowHTMLEditControl($name, $content, $arParams = array()) { global $USER; // We have to avoid of showing HTML-editor with probably unsecure content when loosing the session [mantis:#0007986] if ($_SERVER["REQUEST_METHOD"] == "POST" && !check_bitrix_sessid()) { return; } CUtil::InitJSCore(array('window', 'ajax')); $relPath = isset($arParams["path"]) ? $arParams["path"] : "/"; $site = isset($arParams["site"]) ? $arParams["site"] : ""; $__path = Rel2Abs("/", $relPath); $site = CFileMan::__CheckSite($site); $name = preg_replace("/[^a-zA-Z0-9_:\\.]/is", "", $name); if (!isset($arParams["limit_php_access"])) { $arParams["limit_php_access"] = false; } $arParams["light_mode"] = defined('BX_PUBLIC_MODE') && BX_PUBLIC_MODE == 1 || isset($arParams["light_mode"]) && $arParams["light_mode"] == 'Y'; $io = CBXVirtualIo::GetInstance(); $direction_rtl = false; if ($site) { $DOC_ROOT = CSite::GetSiteDocRoot($site); $abs_path = $DOC_ROOT . $__path; if ($io->FileExists($abs_path)) { $relPath = substr($relPath, 0, strrpos($relPath, "/")); if ($relPath == "") { $relPath = "/"; } } } static $bFirstUsed; $template = $arParams["templateID"]; if (!isset($template) && defined('SITE_TEMPLATE_ID')) { $template = SITE_TEMPLATE_ID; } if (!isset($template) && isset($_GET['siteTemplateId'])) { $template = $_GET['siteTemplateId']; } if (!isset($template) && isset($site)) { $dbSiteRes = CSite::GetTemplateList($site); $SITE_TEMPLATE = array(); while ($arSiteRes = $dbSiteRes->Fetch()) { if ($arSiteRes['CONDITION'] == "" || !isset($template)) { $template = $arSiteRes['TEMPLATE']; } } } if (isset($arParams['use_editor_3'])) { $useEditor3 = $arParams['use_editor_3'] == "Y"; } else { $useEditor3 = COption::GetOptionString('fileman', "use_editor_3", "Y") == "Y"; } if ($useEditor3) { $Editor = new CHTMLEditor(); $Editor->Show(array('name' => $name, 'id' => $name, 'siteId' => $arParams["site"], 'width' => $arParams["width"], 'height' => $arParams["height"], 'content' => $content, 'bAllowPhp' => !$arParams["bWithoutPHP"] && $USER->CanDoOperation('edit_php'), "limitPhpAccess" => $arParams["limit_php_access"], "display" => $arParams['bDisplay'], "componentFilter" => isset($arParams['componentFilter']) ? $arParams['componentFilter'] : false, "setFocusAfterShow" => isset($arParams['setFocusAfterShow']) ? $arParams['setFocusAfterShow'] : true, "relPath" => $relPath, "templateId" => $template)); return; } //Taskbars $arTaskbars = isset($arParams["arTaskbars"]) ? $arParams["arTaskbars"] : array(); //Toolbars $arToolbars = isset($arParams["arToolbars"]) ? $arParams["arToolbars"] : false; // Toolbar config $arParams["toolbarConfig"] = is_array($arParams["toolbarConfig"]) ? $arParams["toolbarConfig"] : false; $arParams["use_advanced_php_parser"] = COption::GetOptionString("fileman", "use_advanced_php_parser", "Y"); $arParams["ar_entities"] = COption::GetOptionString("fileman", "ar_entities", 'umlya,greek,other'); if ($arParams["ar_entities"] == 'none') { $arParams["ar_entities"] = ''; } if (!isset($arParams["usePspell"])) { $arParams["usePspell"] = COption::GetOptionString("fileman", "use_pspell", "N"); } if (!isset($arParams["useCustomSpell"])) { $arParams["useCustomSpell"] = COption::GetOptionString("fileman", "use_custom_spell", "Y"); } $arParams['allowRenderComp2'] = COption::GetOptionString('fileman', "allow_render_components", "N") == 'Y'; $arParams['renderComponents'] = $arParams['allowRenderComp2'] && CUserOptions::GetOption('fileman', "render_components", "Y") == 'Y'; $lca = COption::GetOptionString("fileman", "use_lca", "N"); $styleList_render_style = COption::GetOptionString("fileman", "render_styles_in_classlist", "Y") == 'Y' ? 'true' : 'false'; $arAdditionalParams = isset($arParams["arAdditionalParams"]) ? $arParams["arAdditionalParams"] : array(); $arResult = CFileman::GetAllTemplateParams($template, $site, $arParams["bWithoutPHP"] != true, $arAdditionalParams); $arParams["TEMPLATE"] = $arResult; if ($bUseOnlyDefinedStyles && !is_set($arResult, "STYLES_TITLE")) { $bUseOnlyDefinedStyles = false; } $arParams["body_class"] = COption::GetOptionString("fileman", "editor_body_class", ""); $arParams["body_id"] = COption::GetOptionString("fileman", "editor_body_id", ""); ?> <script bxrunfirst="true"> var relPath = "<?php echo CUtil::JSEscape($relPath); ?> "; var <?php echo 'ar_' . $name . '_taskbars'; ?> = {}; <?php for ($k = 0, $l = count($arTaskbars); $k < $l; $k++) { echo 'ar_' . $name . '_taskbars["' . $arTaskbars[$k] . '"] = true;'; } if ($arToolbars !== false) { echo 'var ar_' . $name . '_toolbars = {};'; for ($k = 0, $l = count($arToolbars); $k < $l; $k++) { echo 'ar_' . $name . '_toolbars["' . $arToolbars[$k] . '"] = true;'; } } else { echo 'var ar_' . $name . '_toolbars = false;'; } ?> window.ar_<?php echo $name; ?> _config = <?php echo CUtil::PhpToJSObject($arParams); ?> ; // editor-config </script> <?php $str_taskbars = ""; CFileman::GetHTMLEditorSettings($name, $arParams["light_mode"], $arTaskbars, $str_taskbars); $str_taskbars .= '_' . CFileman::GetVersion(); if (!$bFirstUsed) { $arTemplates = array(array('value' => '.default', 'name' => GetMessage("FILEMAN_DEFTEMPL"))); $db_site_templates = CSiteTemplate::GetList(array(), array(), array()); while ($ar_site_templates = $db_site_templates->Fetch()) { $arTemplates[] = array('value' => $ar_site_templates['ID'], 'name' => $ar_site_templates['NAME']); } ?> <script bxrunfirst="true"> var arBXTemplates = <?php echo CUtil::PhpToJSObject($arTemplates); ?> , BXSite = "<?php echo CUtil::JSEscape($site); ?> ", BXLang = "<?php echo CUtil::JSEscape(LANGUAGE_ID); ?> ", styleList_render_style = <?php echo $styleList_render_style; ?> , limit_php_access = <?php echo $arParams["limit_php_access"] ? 'true' : 'false'; ?> , lca = <?php echo $lca == 'Y' ? 'true' : 'false'; ?> , lightMode = <?php echo $arParams["light_mode"] ? 'true' : 'false'; ?> , BX_PERSONAL_ROOT = "<?php echo BX_PERSONAL_ROOT; ?> "; window.limit_php_access = top.limit_php_access = limit_php_access; window.lightMode = top.lightMode = lightMode; window.lca = top.lca = lca; window.BXLang = top.BXLang = BXLang; window.BXSite = top.BXSite = BXSite; window.BX_PERSONAL_ROOT = top.BX_PERSONAL_ROOT = BX_PERSONAL_ROOT; </script> <?php $arJS = array(); $arCSS = array(); $events = GetModuleEvents("fileman", "OnBeforeHTMLEditorScriptsGet"); while ($arEvent = $events->Fetch()) { $tmp = ExecuteModuleEventEx($arEvent, array($name, $arParams)); if (!is_array($tmp)) { continue; } if (is_array($tmp['JS'])) { $arJS = array_merge($arJS, $tmp['JS']); } if (is_array($tmp['CSS'])) { $arCSS = array_merge($arCSS, $tmp['CSS']); } } $arr = array(); // Additional JS files from event OnBeforeHtmlEditorScriptGet for ($i = 0, $c = count($arJS); $i < $c; $i++) { $arJS[$i] = preg_replace("/[^a-zA-Z0-9_:\\.]/is", "", $arJS[$i]); if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/bitrix/admin/htmleditor2/' . $arJS[$i])) { $arr[] = $arJS[$i]; } } ?> <script type="text/javascript" src="/bitrix/admin/fileman_js.php?lang=<?php echo LANGUAGE_ID; ?> &v=<?php echo @filemtime($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/fileman/lang/' . LANGUAGE_ID . '/admin/fileman_js.php'); ?> "></script> <script type="text/javascript" src="/bitrix/admin/fileman_common_js.php?s=<?php echo $str_taskbars; ?> "></script> <?php for ($i = 0, $l = count($arr); $i < $l; $i++) { $script_filename = $arr[$i]; ?> <script type="text/javascript" src="/bitrix/admin/htmleditor2/<?php echo $script_filename; ?> ?v=<?php echo @filemtime($_SERVER['DOCUMENT_ROOT'] . '/bitrix/admin/htmleditor2/' . $script_filename); ?> "></script><?php } ?> <script type="text/javascript" src="/bitrix/js/main/popup_menu.js?v=<?php echo @filemtime($_SERVER['DOCUMENT_ROOT'] . '/bitrix/js/main/popup_menu.js'); ?> "></script> <?php for ($i = 0, $l = count($arCSS); $i < $l; $i++) { $arCSS[$i] = preg_replace("/[^a-zA-Z0-9_:\\.]/is", "", $arCSS[$i]); if (!file_exists($_SERVER['DOCUMENT_ROOT'] . '/bitrix/admin/htmleditor2/' . $arCSS[$i])) { continue; } ?> <link rel="stylesheet" type="text/css" href="/bitrix/admin/htmleditor2/<?php echo $arCSS[$i]; ?> ?v=<?php echo @filemtime($_SERVER['DOCUMENT_ROOT'] . '/bitrix/admin/htmleditor2/' . $arCSS[$i]); ?> "/><?php } $db_events = GetModuleEvents("fileman", "OnIncludeHTMLEditorScript"); while ($arEvent = $db_events->Fetch()) { ExecuteModuleEventEx($arEvent); } $bFirstUsed = true; } ?> <div class="bxedmain-cont" id="<?php echo $name . '_object'; ?> "><table id="<?php echo $name; ?> _pFrame" class="bxedmainframe dim100x100" style="display:none;"> <tr style="height: 1%;"><td id="<?php echo $name; ?> _toolBarSet0" colspan="2" style="width: 100%; display: none; border-bottom: 1px solid #808080 !important;"></td></tr> <tr> <td id="<?php echo $name; ?> _toolBarSet1" style="width:0%; display: none; border-right: 1px solid #808080 !important;"></td> <td vAlign="top" style="width: 4000px; padding: 0!important;"> <table class="dim100x100"> <tr> <td class="bx-ceditor" id="<?php echo $name; ?> _cEditor"></td> <td id="<?php echo $name; ?> _taskBarSet2" class="bxedtaskbarset" style="width:0%; display: none;"> <table> <tr><td class="bx-move-col-v" rowSpan="3"><img src="/bitrix/images/1.gif" /></td><td style="height:26px;"></td></tr> <tr><td style="vertical-align: top;"></td></tr> <tr><td class="bx-taskbar-tabs"></td></tr> </table> </td> </tr> <tr style="height:0%; display: none;"> <td id="<?php echo $name; ?> _taskBarSet3" colspan="2"> <table> <tr><td class="bx-move-col-h"><img src="/bitrix/images/1.gif" /></td></tr> <tr><td style="height:26px;"></td></tr> <tr><td style="vertical-align: top; background: #F4F4F4 none !important;"></td></tr> <tr><td class="bx-taskbar-tabs"></td></tr> </table> </td> </tr> </table> </td> </tr> <tr id="bx-css-tt"><td id="<?php echo $name; ?> _taskBarTabs" colspan="2" class="tasktabcell"></td></tr> </table> </div> <script> BX.loadCSS('/bitrix/admin/htmleditor2/editor.css'); var bEd = BX("bxed_<?php echo $name; ?> _editor"); if (bEd && !bEd.checked) BX("<?php echo $name; ?> _object").style.display = "none"; </script> <?php if (!$arParams["bFromTextarea"]) { echo '<input type="hidden" name="' . $name . '" id="bxed_' . $name . '" value="' . htmlspecialcharsbx($content) . '">'; } if ($arParams["bDisplay"] !== false) { setEditorEventHandlers($name); ?> <script> BX.ready(function(){ BX.showWait(); BX("bxed_<?php echo $name; ?> ").pMainObj = new BXHTMLEditor("<?php echo $name; ?> "); }); </script> <?php } }