13if (!defined(
"B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !==
true)
34 || !
$USER->CanDoFileOperation(
"fm_create_new_file", [
SITE_ID, $currentDirPath])
42 return $USER->CanDoOperation(
"fileman_admin_files");
56 !
$USER->CanDoFileOperation(
"fm_create_new_folder", Array(
SITE_ID, $currentDirPath)) ||
57 !
$USER->CanDoFileOperation(
"fm_create_new_file", Array(
SITE_ID, $currentDirPath))
65 return (
$USER->CanDoOperation(
"fileman_admin_folders") &&
$USER->CanDoOperation(
"fileman_admin_files"));
79 || !
$USER->CanDoFileOperation(
"fm_edit_existent_file", [
SITE_ID, $currentFilePath])
88 && !
$USER->CanDoFileOperation(
'fm_lpa', [
SITE_ID, $currentFilePath])
89 && !
$USER->CanDoOperation(
'edit_php')
97 return (
$USER->CanDoOperation(
"fileman_admin_files") &&
$USER->CanDoOperation(
"fileman_edit_existent_files"));
107 if (!
$USER->CanDoFileOperation(
"fm_edit_existent_folder", [
SITE_ID, $currentDirPath]))
114 return (
$USER->CanDoOperation(
"fileman_edit_existent_folders") &&
$USER->CanDoOperation(
"fileman_admin_folders"));
128 || !
$USER->CanDoFileOperation(
"fm_edit_existent_folder", [
SITE_ID, $currentFilePath])
129 || !
$USER->CanDoFileOperation(
"fm_edit_permission", [
SITE_ID, $currentFilePath])
137 return (
$USER->CanDoOperation(
"fileman_edit_existent_folders") &&
$USER->CanDoOperation(
"fileman_admin_folders"));
151 || !
$USER->CanDoFileOperation(
"fm_delete_file", [
SITE_ID, $currentFilePath])
159 return (
$USER->CanDoOperation(
"fileman_admin_files"));
171 $currentDirPath = dirname(
$_SERVER[
"REAL_FILE_PATH"]);
172 $currentFilePath =
$_SERVER[
"REAL_FILE_PATH"];
180 if (self::isProtectedPath($currentFilePath))
185 $encCurrentDirPath = urlencode($currentDirPath);
186 $encCurrentFilePath = urlencode($currentFilePath);
187 $encRequestUri = urlencode(
$_SERVER[
"REQUEST_URI"]);
188 $siteTemplateId = (defined(
'SITE_TEMPLATE_ID') ? SITE_TEMPLATE_ID :
'.default');
189 $encSiteTemplateId = urlencode($siteTemplateId);
199 if ($bCanCreatePage || $bCanCreateSection)
201 require_once(
$_SERVER[
"DOCUMENT_ROOT"] .
BX_ROOT .
"/modules/main/admin_tools.php");
203 $arActPageTemplates = CPageTemplate::GetList([$siteTemplateId]);
213 'URL' =>
"/bitrix/admin/public_file_new.php?lang=" . LANGUAGE_ID .
"&site=" .
SITE_ID
214 .
"&templateID=".$encSiteTemplateId .
"&path=" . $encCurrentDirPath .
"&back_url="
216 'PARAMS' => [
'min_width' => 450,
'min_height' => 250]
220 'TEXT' => Loc::getMessage(
'top_panel_create_page'),
221 'TITLE' => Loc::getMessage(
'top_panel_create_page_title'),
222 'ICON' =>
'panel-new-file',
223 'ACTION' => $defaultUrl,
226 'HK_ID' =>
"top_panel_create_page"
231 if (!empty($arActPageTemplates))
233 foreach ($arActPageTemplates as $pageTemplate)
235 if ($pageTemplate[
'type'] ==
'' || $pageTemplate[
'type'] ==
'page')
238 "TEXT" => $pageTemplate[
'name'],
239 "TITLE" => Loc::getMessage(
"top_panel_template").
" ".$pageTemplate[
'file'].($pageTemplate[
'description'] <>
''?
"\n".$pageTemplate[
'description']:
""),
240 "ICON" => ($pageTemplate[
'icon'] ==
''?
"panel-new-file-template":
""),
241 "IMAGE" => ($pageTemplate[
'icon'] <>
''? $pageTemplate[
'icon']:
""),
242 "ACTION" => str_replace(
"public_file_new.php?",
"public_file_new.php?wiz_template=".urlencode($pageTemplate[
'file']).
"&", $defaultUrl),
248 if (!empty($arPageTemplates) && (!empty($arSubmenu) ||
count($arPageTemplates)>1))
250 foreach ($arPageTemplates as $pageTemplate)
253 "TEXT" => $pageTemplate[
'name'],
254 "TITLE" => Loc::getMessage(
"top_panel_template") .
" " . $pageTemplate[
'file'],
255 "ICON" =>
"panel-new-file-template",
256 "ACTION" => str_replace(
"public_file_new.php?",
"public_file_new.php?page_template=" . urlencode($pageTemplate[
'file']) .
"&", $defaultUrl),
262 if (!empty($arSubmenu))
265 "TEXT" => Loc::getMessage(
"top_panel_create_from_template"),
266 "TITLE" => Loc::getMessage(
"top_panel_create_from_template_title"),
267 "ICON" =>
"panel-new-file-template",
268 "MENU" => $arSubmenu,
277 "HREF" => ($defaultUrl ==
"" ?
"" :
"javascript:".$defaultUrl),
280 "ICON" =>
"bx-panel-create-page-icon",
281 "ALT" => Loc::getMessage(
"top_panel_create_title"),
282 "TEXT" => Loc::getMessage(
"top_panel_create_new"),
283 "MAIN_SORT" =>
"100",
286 "RESORT_MENU" =>
true,
287 "HK_ID" =>
"top_panel_create_new",
289 "TITLE" => Loc::getMessage(
"top_panel_create_new_tooltip_title"),
290 "TEXT" => Loc::getMessage(
"top_panel_create_new_tooltip")
293 "TITLE" => Loc::getMessage(
"top_panel_create_new_menu_tooltip_title"),
294 "TEXT" => Loc::getMessage(
"top_panel_create_new_menu_tooltip")
301 if ($bCanCreateSection)
304 "URL" =>
"/bitrix/admin/public_file_new.php?lang=" . LANGUAGE_ID .
"&site=" .
SITE_ID .
"&templateID="
305 . $encSiteTemplateId .
"&newFolder=Y&path=" . $encCurrentDirPath .
"&back_url=" . $encRequestUri,
306 "PARAMS" => [
"min_width" => 450,
"min_height" => 250]
310 "TEXT" => Loc::getMessage(
"top_panel_create_folder"),
311 "TITLE" => Loc::getMessage(
"top_panel_create_folder_title"),
312 "ICON" =>
"panel-new-folder",
314 "ACTION" => $defaultUrl,
316 "HK_ID" =>
"top_panel_create_folder",
321 if (!empty($arActPageTemplates))
323 foreach ($arActPageTemplates as $pageTemplate)
325 if ($pageTemplate[
'type'] ==
'' || $pageTemplate[
'type'] ==
'section')
328 "TEXT" => $pageTemplate[
'name'],
329 "TITLE" => Loc::getMessage(
"top_panel_template") .
" " . $pageTemplate[
'file'] . ($pageTemplate[
'description'] <>
'' ?
"\n" . $pageTemplate[
'description'] :
""),
330 "ICON" => ($pageTemplate[
'icon'] ==
'' ?
"panel-new-file-template" :
""),
331 "IMAGE" => ($pageTemplate[
'icon'] <>
'' ? $pageTemplate[
'icon'] :
""),
332 "ACTION" => str_replace(
"public_file_new.php?",
"public_file_new.php?newFolder=Y&wiz_template=".urlencode($pageTemplate[
'file']).
"&", $defaultUrl),
338 if (!empty($arPageTemplates) && (!empty($arSectSubmenu) ||
count($arPageTemplates)>1))
340 if (!empty($arSectSubmenu))
342 $arSectSubmenu[] = [
"SEPARATOR" =>
true];
345 foreach ($arPageTemplates as $pageTemplate)
348 "TEXT" => $pageTemplate[
'name'],
349 "TITLE" => Loc::getMessage(
"top_panel_template").
" ".$pageTemplate[
'file'],
350 "ICON" =>
"panel-new-file-template",
351 "ACTION" => str_replace(
"public_file_new.php?",
"public_file_new.php?newFolder=Y&page_template=".urlencode($pageTemplate[
'file']).
"&", $defaultUrl),
357 if (!empty($arSectSubmenu))
360 "TEXT" => Loc::getMessage(
"top_panel_create_folder_template"),
361 "TITLE" => Loc::getMessage(
"top_panel_create_folder_template_title"),
362 "ICON" =>
"panel-new-folder-template",
363 "MENU" => $arSectSubmenu,
372 "HREF" => ($defaultUrl ==
"" ?
"" :
"javascript:".$defaultUrl),
374 "ID" =>
"create_section",
375 "ICON" =>
"bx-panel-create-section-icon",
376 "ALT" => Loc::getMessage(
"top_panel_create_title"),
377 "TEXT" => Loc::getMessage(
"top_panel_create_folder_new"),
378 "MAIN_SORT" =>
"100",
381 "RESORT_MENU" =>
true,
382 "HK_ID" =>
"top_panel_create_folder_new",
384 "TITLE" => Loc::getMessage(
"top_panel_create_folder_new_tooltip_title"),
385 "TEXT" => Loc::getMessage(
"top_panel_create_folder_new_tooltip")
388 "TITLE" => Loc::getMessage(
"top_panel_create_folder_new_menu_tooltip_title"),
389 "TEXT" => Loc::getMessage(
"top_panel_create_folder_new_menu_tooltip")
400 "URL" =>
"/bitrix/admin/public_file_edit.php?lang=" . LANGUAGE_ID .
"&path=" . $encCurrentFilePath .
"&site=" .
SITE_ID .
"&back_url=" . $encRequestUri .
"&templateID=" . $encSiteTemplateId,
407 'dialog_type' =>
'EDITOR'
412 "TEXT" => Loc::getMessage(
"top_panel_edit_page"),
413 "TITLE" => Loc::getMessage(
"top_panel_edit_page_title"),
414 "ICON" =>
"panel-edit-visual",
415 "ACTION" => $defaultUrl,
418 "HK_ID" =>
"top_panel_edit_page",
422 "TEXT" => Loc::getMessage(
"top_panel_page_prop"),
423 "TITLE" => Loc::getMessage(
"top_panel_page_prop_title"),
424 "ICON" =>
"panel-file-props",
426 "URL" =>
"/bitrix/admin/public_file_property.php?lang=" . LANGUAGE_ID .
"&site=" .
SITE_ID .
"&path=" . $encCurrentFilePath .
"&back_url=" . $encRequestUri,
427 "PARAMS" => [
"min_width"=>450,
"min_height" => 250]
430 "HK_ID"=>
"top_panel_page_prop"
433 $arMenu[] = [
"SEPARATOR" =>
true,
"SORT"=>49];
435 "TEXT" => Loc::getMessage(
"top_panel_edit_page_html"),
436 "TITLE" => Loc::getMessage(
"top_panel_edit_page_html_title"),
437 "ICON" =>
"panel-edit-text",
439 "URL" =>
"/bitrix/admin/public_file_edit.php?lang=" . LANGUAGE_ID .
"&noeditor=Y&path=" . $encCurrentFilePath .
"&site=" .
SITE_ID .
"&back_url=" . $encRequestUri,
440 "PARAMS" => [
"width" => 780,
"height" => 470,
'dialog_type' =>
'EDITOR',
"min_width" => 700,
"min_height" => 400]
443 "HK_ID"=>
"top_panel_edit_page_html",
446 if (
$USER->CanDoOperation(
"edit_php"))
449 "TEXT" => Loc::getMessage(
"top_panel_edit_page_php"),
450 "TITLE" => Loc::getMessage(
"top_panel_edit_page_php_title"),
451 "ICON" =>
"panel-edit-php",
453 "URL" =>
"/bitrix/admin/public_file_edit_src.php?lang=" . LANGUAGE_ID .
"&path=" . $encCurrentFilePath .
"&site=" .
SITE_ID .
"&back_url=" . $encRequestUri .
"&templateID=" . $encSiteTemplateId,
454 "PARAMS" => [
"width" => 770,
"height" => 470,
'dialog_type' =>
'EDITOR',
"min_width" => 700,
"min_height" => 400]
457 "HK_ID" =>
"top_panel_edit_page_php",
468 "TEXT" => Loc::getMessage(
"top_panel_access_page_new"),
469 "TITLE" => Loc::getMessage(
"top_panel_access_page_title"),
470 "ICON" =>
"panel-file-access",
472 "URL" =>
"/bitrix/admin/public_access_edit.php?lang=" . LANGUAGE_ID .
"&site=" .
SITE_ID .
"&path=" . $encCurrentFilePath .
"&back_url=" . $encRequestUri,
473 "PARAMS" => [
"min_width" => 450,
"min_height" => 250]
476 "HK_ID" =>
"top_panel_access_page_new"
486 "ICON" =>
"icon-delete",
487 "ALT" => Loc::getMessage(
"top_panel_del_page"),
488 "TEXT" => Loc::getMessage(
"top_panel_del_page"),
490 "URL" =>
"/bitrix/admin/public_file_delete.php?lang=" . LANGUAGE_ID .
"&site=" .
SITE_ID .
"&path=" . $encCurrentFilePath,
499 "HK_ID" =>
"top_panel_del_page"
505 $arMenu[] = [
"SEPARATOR" =>
true,
"SORT" => 29];
511 $arOperations = CUser::GetFileOperations([
SITE_ID, $currentFilePath], [2]);
512 $bAllowAnonymous = in_array(
"fm_view_file", $arOperations);
515 "HREF" => ($defaultUrl ==
"" ?
"" :
"javascript:".$defaultUrl),
518 "ICON" => ($bAllowAnonymous ?
"bx-panel-edit-page-icon" :
"bx-panel-edit-secret-page-icon"),
519 "ALT" => Loc::getMessage(
"top_panel_edit_title"),
520 "TEXT" => Loc::getMessage(
"top_panel_edit_new"),
521 "MAIN_SORT" =>
"200",
524 "HK_ID" =>
"top_panel_edit_new",
525 "RESORT_MENU" =>
true,
527 "TITLE" => Loc::getMessage(
"top_panel_edit_new_tooltip_title"),
528 "TEXT" => Loc::getMessage(
"top_panel_edit_new_tooltip")
531 "TITLE" => Loc::getMessage(
"top_panel_edit_new_menu_tooltip_title"),
532 "TEXT" => Loc::getMessage(
"top_panel_edit_new_menu_tooltip")
541 $defaultUrl =
'javascript:'.$APPLICATION->GetPopupLink([
542 "URL" =>
"/bitrix/admin/public_folder_edit.php?lang=" . LANGUAGE_ID .
"&site=" .
SITE_ID .
"&path=" . urlencode(
$APPLICATION->GetCurDir()) .
"&back_url=" . $encRequestUri,
543 "PARAMS" => [
"min_width" => 450,
"min_height" => 250]
547 "TEXT" => Loc::getMessage(
"top_panel_folder_prop"),
548 "TITLE" => Loc::getMessage(
"top_panel_folder_prop_title"),
549 "ICON" =>
"panel-folder-props",
551 "ACTION" => $defaultUrl,
553 "HK_ID" =>
"top_panel_folder_prop",
560 "TEXT" => Loc::getMessage(
"top_panel_access_folder_new"),
561 "TITLE" => Loc::getMessage(
"top_panel_access_folder_title"),
562 "ICON" =>
"panel-folder-access",
564 "URL" =>
"/bitrix/admin/public_access_edit.php?lang=" . LANGUAGE_ID .
"&site=" .
SITE_ID .
"&path=" . $encCurrentDirPath .
"&back_url=" . $encRequestUri,
565 "PARAMS" => [
"min_width"=>450,
"min_height" => 250]
568 "HK_ID" =>
"top_panel_access_folder_new",
575 $arOperations = CUser::GetFileOperations([
SITE_ID, $currentDirPath], [2]);
576 $bAllowAnonymous = in_array(
"fm_view_listing", $arOperations);
579 "HREF" => $defaultUrl,
580 "ID" =>
'edit_section',
582 "TEXT" => Loc::getMessage(
"top_panel_folder_prop_new"),
583 "TITLE" => Loc::getMessage(
"top_panel_folder_prop_title"),
584 "ICON" => ($bAllowAnonymous ?
"bx-panel-edit-section-icon" :
"bx-panel-edit-secret-section-icon"),
585 "MAIN_SORT" =>
"200",
588 "HK_ID" =>
"top_panel_folder_prop_new",
589 "RESORT_MENU" =>
true,
591 "TITLE" => Loc::getMessage(
"top_panel_folder_prop_new_tooltip_title"),
592 "TEXT" => Loc::getMessage(
"top_panel_folder_prop_new_tooltip")
595 "TITLE" => Loc::getMessage(
"top_panel_folder_prop_new_menu_tooltip_title"),
596 "TEXT" => Loc::getMessage(
"top_panel_folder_prop_new_menu_tooltip")
602 if (
$USER->CanDoOperation(
'fileman_view_file_structure') &&
$USER->CanDoFileOperation(
'fm_edit_existent_folder', [
SITE_ID,
"/"]))
605 "URL" =>
"/bitrix/admin/public_structure.php?lang=" . LANGUAGE_ID .
"&site=" .
SITE_ID .
"&path=" . $encCurrentFilePath .
"&templateID=" . $encSiteTemplateId,
606 "PARAMS" => [
"width" => 350,
"height" => 470,
"resize" =>
true]
613 "TEXT" => Loc::getMessage(
"main_top_panel_struct"),
614 "TITLE"=> Loc::getMessage(
"main_top_panel_struct_title"),
615 "ACTION" => $defaultUrl,
617 "HK_ID" =>
"main_top_panel_struct",
619 $arMenu[] = [
'SEPARATOR' =>
true];
621 "TEXT" => Loc::getMessage(
"main_top_panel_struct_panel"),
622 "TITLE" => Loc::getMessage(
"main_top_panel_struct_panel_title"),
623 "ACTION" =>
"jsUtils.Redirect([], '" . CUtil::JSEscape(
"/bitrix/admin/fileman_admin.php?lang=" . LANGUAGE_ID .
"&site=" .
SITE_ID .
"&path=" . urlencode(
$APPLICATION->GetCurDir())) .
"')",
624 "HK_ID" =>
"main_top_panel_struct_panel",
629 "HREF" =>
"javascript:" . $defaultUrl,
631 "ICON" =>
"bx-panel-site-structure-icon",
632 "ALT" => Loc::getMessage(
"main_top_panel_struct_title"),
633 "TEXT" => Loc::getMessage(
"main_top_panel_structure"),
634 "MAIN_SORT" =>
"300",
637 "HK_ID" =>
"main_top_panel_structure",
639 "TITLE" => Loc::getMessage(
"main_top_panel_structure_tooltip_title"),
640 "TEXT" => Loc::getMessage(
"main_top_panel_structure_tooltip")
646 if (
$USER->CanDoOperation(
"cache_control"))
650 "TEXT" => Loc::getMessage(
"top_panel_cache_page"),
651 "TITLE" => Loc::getMessage(
"top_panel_cache_page_title"),
652 "ICON" =>
"panel-page-cache",
653 "ACTION" =>
"BX.clearCache()",
655 "HK_ID" =>
"top_panel_cache_page",
661 "TEXT" => Loc::getMessage(
"top_panel_cache_comp"),
662 "TITLE" => Loc::getMessage(
"top_panel_cache_comp_title"),
663 "ICON" =>
"panel-comp-cache",
664 "ACTION" =>
"jsComponentUtils.ClearCache('component_name=" . CUtil::addslashes(implode(
",",
$APPLICATION->aCachedComponents)) .
"&site_id=" .
SITE_ID .
"&" .
bitrix_sessid_get() .
"');",
665 "HK_ID" =>
"top_panel_cache_comp",
668 $arMenu[] = [
"SEPARATOR" =>
true];
672 "TEXT" => Loc::getMessage(
"top_panel_cache_not"),
673 "TITLE" => Loc::getMessage(
"top_panel_cache_not_title"),
674 "CHECKED" => $sessionClearCache,
675 "ACTION" =>
"jsUtils.Redirect([], '" . CUtil::addslashes(
$APPLICATION->GetCurPageParam(
"clear_cache_session=" . ($sessionClearCache ?
"N" :
"Y"), [
"clear_cache_session"])) .
"');",
676 "HK_ID" =>
"top_panel_cache_not",
680 "HREF" =>
"javascript:BX.clearCache()",
682 "ICON" =>
"bx-panel-clear-cache-icon",
683 "TEXT" => Loc::getMessage(
"top_panel_cache_new"),
684 "ALT" => Loc::getMessage(
"top_panel_clear_cache"),
685 "MAIN_SORT" =>
"400",
688 "HK_ID" =>
"top_panel_clear_cache",
690 "TITLE" => Loc::getMessage(
"top_panel_cache_new_tooltip_title"),
691 "TEXT" => Loc::getMessage(
"top_panel_cache_new_tooltip")
694 "TITLE" => Loc::getMessage(
"top_panel_cache_new_menu_tooltip_title"),
695 "TEXT" => Loc::getMessage(
"top_panel_cache_new_menu_tooltip")
700 $bHideComponentsMenu =
false;
701 if (
$USER->CanDoOperation(
'edit_php') || !empty(
$APPLICATION->arPanelFutureButtons[
'components']))
703 if (empty(
$APPLICATION->arPanelFutureButtons[
'components']))
709 "TEXT" => Loc::getMessage(
"top_panel_edit_mode"),
710 "TITLE" => Loc::getMessage(
"top_panel_edit_mode_title"),
711 "ACTION" =>
"jsUtils.Redirect([], BX('bx-panel-toggle').href);",
712 "HK_ID" =>
"top_panel_edit_mode",
718 $bHideComponentsMenu =
true;
722 if ($bHideComponentsMenu)
725 "ID" =>
"components_empty",
726 "HREF" =>
"javascript:void(0)",
727 "ICON" =>
"bx-panel-components-icon",
728 "TEXT" => Loc::getMessage(
"top_panel_comp"),
729 "MAIN_SORT" =>
"500",
732 "TITLE" => Loc::getMessage(
"top_panel_comp_tooltip_title"),
733 "TEXT" => Loc::getMessage(
'top_panel_comp_tooltip_empty')
740 "ID" =>
"components",
741 "ICON" =>
"bx-panel-components-icon",
742 "TEXT" => Loc::getMessage(
"top_panel_comp"),
743 "MAIN_SORT" =>
"500",
746 "TITLE" => Loc::getMessage(
"top_panel_comp_tooltip_title"),
747 "TEXT" => Loc::getMessage(
"top_panel_comp_tooltip")
754 if (
$USER->CanDoOperation(
"edit_php") ||
$USER->CanDoOperation(
"lpa_template_edit"))
757 $bUseSubmenu =
false;
760 if (
$USER->CanDoOperation(
"edit_php"))
762 $siteTemplatePath = (defined(
'SITE_TEMPLATE_PATH') ? SITE_TEMPLATE_PATH :
'/bitrix/templates/.default');
763 $filePath = $siteTemplatePath .
"/styles.css";
765 if (file_exists(
$_SERVER[
'DOCUMENT_ROOT'] . $filePath))
768 "TEXT" => Loc::getMessage(
"top_panel_templ_site_css"),
769 "TITLE" => Loc::getMessage(
"top_panel_templ_site_css_title"),
770 "ICON" =>
"panel-edit-text",
771 "HK_ID" =>
"top_panel_templ_site_css",
773 "URL" =>
"/bitrix/admin/public_file_edit_src.php?lang=" . LANGUAGE_ID .
"&path=" . urlencode($filePath) .
"&site=" .
SITE_ID .
"&back_url=" . $encRequestUri,
778 'dialog_type' =>
'EDITOR',
787 $filePath = $siteTemplatePath .
"/template_styles.css";
788 if (file_exists(
$_SERVER[
'DOCUMENT_ROOT'] . $filePath))
791 "TEXT" => Loc::getMessage(
"top_panel_templ_templ_css"),
792 "TITLE" => Loc::getMessage(
"top_panel_templ_templ_css_title"),
793 "ICON" =>
"panel-edit-text",
794 "HK_ID" =>
"top_panel_templ_templ_css",
796 "URL" =>
"/bitrix/admin/public_file_edit_src.php?lang=".LANGUAGE_ID.
"&path=".urlencode($filePath).
"&site=".
SITE_ID.
"&back_url=".$encRequestUri,
801 'dialog_type' =>
'EDITOR',
813 "TEXT" => Loc::getMessage(
"top_panel_templ_edit"),
814 "TITLE" =>Loc::getMessage(
"top_panel_templ_edit_title"),
815 "ICON" =>
"icon-edit",
816 "ACTION" =>
"jsUtils.Redirect([], '/bitrix/admin/template_edit.php?lang=" . LANGUAGE_ID .
"&ID=" . $encSiteTemplateId .
"')",
817 "DEFAULT" =>!$bUseSubmenu,
818 "HK_ID" =>
"top_panel_templ_edit",
821 "TEXT" => Loc::getMessage(
"top_panel_templ_site"),
822 "TITLE" => Loc::getMessage(
"top_panel_templ_site_title"),
823 "ICON" =>
"icon-edit",
824 "ACTION" =>
"jsUtils.Redirect([], '/bitrix/admin/site_edit.php?lang=".LANGUAGE_ID.
"&LID=".
SITE_ID.
"')",
826 "HK_ID" =>
"top_panel_templ_site",
832 $arMenu[] = [
'SEPARATOR' =>
"Y"];
833 $arMenu[] = [
"TEXT" => Loc::getMessage(
"top_panel_cp"),
"MENU" => $arSubMenu,];
838 $defaultUrl =
"javascript:" . $arSubMenu[0][
'ACTION'];
842 "HREF" => $defaultUrl,
843 "ICON" =>
"bx-panel-site-template-icon",
844 "ALT" => Loc::getMessage(
"top_panel_templ_title"),
845 "TEXT" => Loc::getMessage(
"top_panel_templ"),
846 "MAIN_SORT" =>
"500",
849 "HK_ID"=>
"top_panel_templ",
851 "TITLE" => Loc::getMessage(
"top_panel_templ_tooltip_title"),
852 "TEXT" => Loc::getMessage(
"top_panel_templ_tooltip")
858 if (
$USER->CanDoOperation(
"edit_php"))
861 $tmp = self::getDebugSettings();
862 $sessionShowIncludeTimeExec =
$tmp[
'INCLUDE_TIME_EXEC'];
863 $sessionShowTimeExec =
$tmp[
'TIME_EXEC'];
869 "TEXT" => Loc::getMessage(
"top_panel_debug_summ"),
870 "TITLE" => Loc::getMessage(
"top_panel_debug_summ_title"),
871 "CHECKED" => ($cmd ==
"N"),
872 "ACTION" =>
"jsUtils.Redirect([], '" . CUtil::addslashes(
$url) .
"');",
874 "HK_ID" =>
"top_panel_debug_summ",
876 [
"SEPARATOR" =>
true],
878 "TEXT" => Loc::getMessage(
"top_panel_debug_sql"),
879 "TITLE" => Loc::getMessage(
"top_panel_debug_sql_title"),
880 "CHECKED" => (!!
$DB->ShowSqlStat),
881 "ACTION" =>
"jsUtils.Redirect([], '" . CUtil::addslashes(
$APPLICATION->GetCurPageParam(
"show_sql_stat=" . (
$DB->ShowSqlStat?
"N" :
"Y"), [
"show_sql_stat"])) .
"');",
882 "HK_ID" =>
"top_panel_debug_sql",
885 "TEXT" => Loc::getMessage(
"top_panel_debug_cache"),
886 "TITLE" => Loc::getMessage(
"top_panel_debug_cache_title"),
887 "CHECKED" => (!!\Bitrix\Main\Data\Cache::getShowCacheStat()),
888 "ACTION" =>
"jsUtils.Redirect([], '" . CUtil::addslashes(
$APPLICATION->GetCurPageParam(
"show_cache_stat=" . (\
Bitrix\
Main\
Data\Cache::getShowCacheStat() ?
"N" :
"Y"), [
"show_cache_stat"])) .
"');",
889 "HK_ID" =>
"top_panel_debug_cache",
892 "TEXT" => Loc::getMessage(
"top_panel_debug_incl"),
893 "TITLE" => Loc::getMessage(
"top_panel_debug_incl_title"),
894 "CHECKED" => $sessionShowIncludeTimeExec,
895 "ACTION" =>
"jsUtils.Redirect([], '" . CUtil::addslashes(
$APPLICATION->GetCurPageParam(
"show_include_exec_time=" . ($sessionShowIncludeTimeExec?
"N" :
"Y"), [
"show_include_exec_time"])) .
"');",
896 "HK_ID" =>
"top_panel_debug_incl",
899 "TEXT" => Loc::getMessage(
"top_panel_debug_time"),
900 "TITLE" => Loc::getMessage(
"top_panel_debug_time_title"),
901 "CHECKED" => $sessionShowTimeExec,
902 "ACTION" =>
"jsUtils.Redirect([], '" . CUtil::addslashes(
$APPLICATION->GetCurPageParam(
"show_page_exec_time=" . ($sessionShowTimeExec ?
"N" :
"Y"), [
"show_page_exec_time"])) .
"');",
903 "HK_ID" =>
"top_panel_debug_time",
909 "ICON" =>
"bx-panel-performance-icon",
910 "TEXT" => Loc::getMessage(
"top_panel_debug"),
911 "ALT" => Loc::getMessage(
"top_panel_show_debug"),
912 "MAIN_SORT" =>
"500",
915 "HK_ID" =>
"top_panel_debug",
917 "TITLE" => Loc::getMessage(
"top_panel_debug_tooltip_title"),
918 "TEXT" => Loc::getMessage(
"top_panel_debug_tooltip")
924 if(
$USER->CanDoOperation(
'manage_short_uri'))
927 "URL" =>
"/bitrix/admin/short_uri_edit.php?lang=" . LANGUAGE_ID .
"&public=Y&bxpublic=Y&str_URI=" . urlencode(
$APPLICATION->GetCurPageParam(
"", [
"clear_cache",
"sessid",
"login",
"logout",
"register",
"forgot_password",
"change_password",
"confirm_registration",
"confirm_code",
"confirm_user_id",
"bitrix_include_areas",
"show_page_exec_time",
"show_include_exec_time",
"show_sql_stat",
"show_link_stat"])) .
"&site=" .
SITE_ID .
"&back_url=" . $encRequestUri,
935 "HREF" =>
"javascript:" .
$url,
936 "ICON" =>
"bx-panel-short-url-icon",
937 "ALT" => Loc::getMessage(
"MTP_SHORT_URI_ALT"),
938 "TEXT" => Loc::getMessage(
"MTP_SHORT_URI"),
940 "HK_ID" =>
"MTP_SHORT_URI",
943 "TEXT" => Loc::getMessage(
"MTP_SHORT_URI1"),
944 "TITLE" => Loc::getMessage(
"MTP_SHORT_URI_ALT1"),
945 "ACTION" =>
"javascript:".
$url,
947 "HK_ID"=>
"MTP_SHORT_URI1",
950 "TEXT" => Loc::getMessage(
"MTP_SHORT_URI_LIST"),
951 "TITLE" => Loc::getMessage(
"MTP_SHORT_URI_LIST_ALT"),
952 "ACTION"=>
"jsUtils.Redirect([], '".CUtil::addslashes(
"/bitrix/admin/short_uri_admin.php?lang=".LANGUAGE_ID).
"');",
953 "HK_ID"=>
"MTP_SHORT_URI_LIST",
958 "TITLE" => Loc::getMessage(
"MTP_SHORT_URI_HINT"),
959 "TEXT" => Loc::getMessage(
"MTP_SHORT_URI_HINT_ALT"),
967 static $bPanelIcons =
false;
979 if (file_exists(
$_SERVER[
"DOCUMENT_ROOT"].BX_PERSONAL_ROOT .
"/php_interface/include/add_top_panel.php"))
981 include(
$_SERVER[
"DOCUMENT_ROOT"] . BX_PERSONAL_ROOT .
"/php_interface/include/add_top_panel.php");
996 static $bPanelScriptsIncluded =
false;
997 if ($bPanelScriptsIncluded)
1001 $bPanelScriptsIncluded =
true;
1003 require_once(
$_SERVER[
"DOCUMENT_ROOT"] .
BX_ROOT .
"/modules/main/interface/init_admin.php");
1007 CUtil::InitJSCore([
'window',
'ajax',
'admin']);
1009 $APPLICATION->AddHeadScript(
'/bitrix/js/main/public_tools.js');
1015 CUtil::InitJSCore([
'window',
'ajax',
'admin'],
true)
1017 .
'<script src="'.CUtil::GetAdditionalFileURL(
'/bitrix/js/main/public_tools.js',
true).
'"></script>'
1030 $codes = unserialize(COption::GetOptionString(
"main",
"hide_panel_for_users"), [
'allowed_classes' =>
false]);
1033 $userCodes =
$USER->GetAccessCodes();
1034 $diff = array_intersect($codes, $userCodes);
1042 $codes = unserialize(COption::GetOptionString(
"main",
"show_panel_for_users"), [
'allowed_classes' =>
false]);
1045 if ($userCodes ===
null)
1047 $userCodes =
$USER->GetAccessCodes();
1049 $diff = array_intersect($codes, $userCodes);
1065 static $showPanel =
null;
1067 if ($showPanel !==
null)
1088 if ($showForUser ===
false)
1103 if (trim($arValue[
"HREF"]) <>
"" || is_array($arValue[
"MENU"]) && !empty($arValue[
"MENU"]))
1116 if (self::shouldShowPanel())
1126 return 'onmouseover="BX.hint(this, \'' .
htmlspecialcharsbx(CUtil::JSEscape($hint_title)) .
'\')
"';
1134 public static function AddConstantHint($element_id, $hint_title, $hint_text, $hint_id = false)
1136 return '<script>BX.ready(function() {BX.hint(BX(\''.CUtil::JSEscape($element_id).'\'), \''.CUtil::JSEscape($hint_title).'\', \''.CUtil::JSEscape($hint_text).'\''.($hint_id ? ', \''.CUtil::JSEscape($hint_id).'\'' : '').')});</script>';
1139 public static function GetPanelHtml()
1141 global $USER, $APPLICATION;
1142 if ($APPLICATION->ShowPanel === false || (!$USER->IsAuthorized() && $APPLICATION->ShowPanel !== true))
1147 $bShowPanel = self::shouldShowPanel();
1148 if (!$bShowPanel && $APPLICATION->ShowPanel !== true)
1153 $APPLICATION->PanelShowed = true;
1156 isset($_GET["back_url_admin
"])
1157 && $_GET["back_url_admin
"] != ""
1158 && str_starts_with($_GET["back_url_admin
"], "/
")
1161 \Bitrix\Main\Application::getInstance()->getSession()["BACK_URL_ADMIN
"] = $_GET["back_url_admin
"];
1164 $aUserOpt = CUserOptions::GetOption("admin_panel
", "settings
");
1165 $aUserOptGlobal = CUserOptions::GetOption("global
", "settings
");
1167 $toggleModeSet = false;
1168 if (isset($_GET["bitrix_include_areas
"]) && $_GET["bitrix_include_areas
"] <> "")
1170 $APPLICATION->SetShowIncludeAreas($_GET["bitrix_include_areas
"] == "Y
");
1171 $toggleModeSet = true;
1174 $params = DeleteParam(["bitrix_include_areas
", "bitrix_show_mode
", "back_url_admin
"]);
1175 $href = $APPLICATION->GetCurPage();
1176 $hrefEnc = htmlspecialcharsbx($href);
1178 $toggleModeDynamic = ($aUserOptGlobal['panel_dynamic_mode'] ?? '') == 'Y';
1179 $toggleMode = $toggleModeDynamic && !$toggleModeSet
1180 ? $aUserOpt['edit'] == 'on'
1181 : $APPLICATION->GetShowIncludeAreas() == 'Y';
1184 $old_edit = $aUserOpt['edit'];
1185 $aUserOpt['edit'] = $toggleMode ? 'on' : 'off';
1186 if ($old_edit !== $aUserOpt['edit'])
1188 CUserOptions::SetOption('admin_panel', 'settings', $aUserOpt);
1191 $toggleModeLink = $hrefEnc.'?bitrix_include_areas='.($toggleMode ? 'N' : 'Y').($params<>""? "&
".htmlspecialcharsbx($params):"");
1192 $result = CTopPanel::ShowPanelScripts(true);
1195 <style type="text/css
">#bx-panel {display:none !important;}</style>
1196 <div id="bx-panel-error
">' . Loc::getMessage("top_panel_browser
").'</div><![endif]-->
1197 <script>BX.admin.dynamic_mode='.($toggleModeDynamic ? 'true' : 'false').'; BX.admin.dynamic_mode_show_borders = '.($toggleMode ? 'true' : 'false').';</script>
1199 <div id="bx-panel
"'.(($aUserOpt["collapsed
"] ?? '') == "on
" ? ' class="bx-panel-folded
"':'').'>
1200 <div id="bx-panel-
top">
1201 <div id="bx-panel-
top-gutter
"></div>
1202 <div id="bx-panel-tabs
">
1204 $result .= '<a id="bx-panel-menu
" href="" '.CTopPanel::AddAttrHint(Loc::getMessage('top_panel_start_menu_tooltip_title'), Loc::getMessage('top_panel_start_menu_tooltip')).'><span id="bx-panel-menu-icon
"></span><span id="bx-panel-menu-text
">'.Loc::getMessage("top_panel_menu
").'</span></a><div id="bx-panel-btn-wrap
">';
1205 $backUrlParamName = 'back_url_pub';
1209 Main\Config\Option::get('sale', '~IS_SALE_CRM_SITE_MASTER_FINISH') === 'Y'
1210 || Main\Config\Option::get('sale', '~IS_SALE_BSM_SITE_MASTER_FINISH') === 'Y'
1213 $siteList = self::getSiteList();
1214 if (count($siteList) > 1)
1217 $defaultButtonTitle = '';
1218 $protocol = Main\Context::getCurrent()->getRequest()->isHttps() ? "https:
1225 'TEXT' => $menuItemTitle,
1226 'ACTION' =>
'jsUtils.Redirect([], \''.CUtil::JSEscape(
$protocol.$site[
'SERVER_NAME']).
'\')
',
1227 'DEFAULT
' => $isDefault,
1232 $defaultButtonTitle = $menuItemTitle;
1236 if (!$defaultButtonTitle)
1238 $defaultButtonTitle = current($siteMenu)['TEXT
'];
1241 $defaultButtonTitle = htmlspecialcharsbx($defaultButtonTitle);
1242 if (mb_strlen($defaultButtonTitle) > 30)
1244 $defaultButtonTitle = mb_substr($defaultButtonTitle, 0, 30) . '...
';
1247 $result .= '<a
id=
"bx-panel-view-tab" class=
"bx-panel-view-tab-btn"><strong><span
id=
"bx-panel-view-tab-select">
'.$defaultButtonTitle.'</span></strong></a>
';
1250 BX.admin.panel.RegisterButton({
1251 ID:
"bx-panel-view-tab-select",
1253 MENU:
' . Json::encode($siteMenu) . ',
1254 TEXT:
"'.$defaultButtonTitle.'",
1262 $result .= '<a
id=
"bx-panel-view-tab"><span>
'.Loc::getMessage("top_panel_site").'</span></a>
';
1267 $result .= '<a
id=
"bx-panel-view-tab"><span>
'.Loc::getMessage("top_panel_site").'</span></a>
';
1271 isset(Main\Application::getInstance()->getSession()["BACK_URL_ADMIN"])
1272 && Main\Application::getInstance()->getSession()["BACK_URL_ADMIN"] != ""
1276 ? htmlspecialcharsbx(Main\Application::getInstance()->getSession()["BACK_URL_ADMIN"]) . (str_contains(Main\Application::getInstance()->getSession()["BACK_URL_ADMIN"], "?") ? "&" : "?")
1277 : '/bitrix/admin/index.php?
lang=
' . LANGUAGE_ID . '&
'
1278 ) . $backUrlParamName . '=
' . urlencode($href . ($params != "" ? "?".$params : ""));
1280 if (count($siteList) > 1)
1282 $result .= '<a
id=
"bx-panel-admin-tab" class=
"bx-panel-admin-tab-btn" href=
"'.$adminHref.'"><span>
'.Loc::getMessage("top_panel_admin").'</span></a>
';
1286 $result .= '<a
id=
"bx-panel-admin-tab" href=
"'.$adminHref.'"><span>
'.Loc::getMessage("top_panel_admin").'</span></a>
';
1289 $result .= "</div>";
1291 $back_url = CUtil::JSUrlEscape(CUtil::addslashes($href.($params<>""? "?".$params:"")));
1292 $arStartMenuParams = [
1293 'DIV
' => 'bx-panel-menu
',
1294 'ACTIVE_CLASS
' => 'bx-pressed
',
1295 'MENU_URL
' => '/bitrix/admin/get_start_menu.php?
lang=
' . LANGUAGE_ID . '&back_url_pub=
' . urlencode($back_url) . '&
' . bitrix_sessid_get(),
1296 'MENU_PRELOAD
' => (($aUserOptGlobal["start_menu_preload"] ?? '') == 'Y
')
1299 $result .= '<script>BX.message({MENU_ENABLE_TOOLTIP:
'.(($aUserOptGlobal['start_menu_title
'] ?? '') <> 'N
' ? 'true' : 'false').'});
new BX.COpener(
' . Json::encode($arStartMenuParams) . ');</script>
';
1301 $hkInstance = CHotKeys::getInstance();
1302 $Execs = $hkInstance->GetCodeByClassName("top_panel_menu",Loc::getMessage("top_panel_menu"));
1303 $result .= $hkInstance->PrintJSExecs($Execs);
1304 $Execs = $hkInstance->GetCodeByClassName("top_panel_admin",Loc::getMessage("top_panel_admin"));
1305 $result .= $hkInstance->PrintJSExecs($Execs);
1307 $informerItemsCount = CAdminInformer::InsertMainItems();
1309 if ($informerItemsCount > 0)
1311 $result .= '<a
class=
"adm-header-notif-block" id=
"adm-header-notif-block" onclick=
"return BX.adminInformer.Toggle(this);" href=
"" title=
"' . Loc::getMessage("top_panel_notif_block_title
") . '"><span
class=
"adm-header-notif-icon"></span><span
id=
"adm-header-notif-counter" class=
"adm-header-notif-counter">
' . CAdminInformer::$alertCounter . '</span></a>
';
1314 if ($USER->CanDoOperation("cache_control"))
1316 $result .= '<a
id=
"bx-panel-clear-cache" href=
"" onclick=
"BX.clearCache(); return false;"><span
id=
"bx-panel-clear-cache-icon"></span><span
id=
"bx-panel-clear-cache-text">
'
1317 . Loc::getMessage("top_panel_cache_new_tooltip_title") . '</span></a>
';
1320 $result .= '</div><div
id=
"bx-panel-userinfo">
';
1322 $bCanProfile = $USER->CanDoOperation('view_own_profile
') || $USER->CanDoOperation('edit_own_profile
');
1324 $userName = CUser::FormatName(
1325 CSite::GetNameFormat(false),
1327 "NAME" => $USER->GetFirstName(),
1328 "LAST_NAME" => $USER->GetLastName(),
1329 "SECOND_NAME" => $USER->GetSecondName(),
1330 "LOGIN" => $USER->GetLogin()
1338 $result .= '<a href=
"/bitrix/admin/user_edit.php?lang='.LANGUAGE_ID.'&ID='.$USER->GetID().'" id=
"bx-panel-user" '.CTopPanel::AddAttrHint(Loc::getMessage('top_panel_profile_tooltip
')).'><span
id=
"bx-panel-user-icon"></span><span
id=
"bx-panel-user-text">
'.$userName.'</span></a>
';
1342 $result .= '<a
id=
"bx-panel-user"><span
id=
"bx-panel-user-icon"></span><span
id=
"bx-panel-user-text">
'.$userName.'</span></a>
';
1345 $result .= '<a href=
"'.$hrefEnc.'?'.htmlspecialcharsbx(CUser::getLogoutParams()).'" id=
"bx-panel-logout" '.CTopPanel::AddAttrHint(Loc::getMessage('top_panel_logout_tooltip
').$hkInstance->GetTitle("bx-panel-logout",true)).'>
'.Loc::getMessage("top_panel_logout").'</a>
';
1347 $toggleCaptionOn = '<span
id=
"bx-panel-toggle-caption-mode-on">
' . Loc::getMessage("top_panel_on") . '</span>
';
1348 $toggleCaptionOff = '<span
id=
"bx-panel-toggle-caption-mode-off">
' . Loc::getMessage("top_panel_off") . '</span>
';
1349 $toggleCaptions = $toggleMode ? $toggleCaptionOn.$toggleCaptionOff : $toggleCaptionOff.$toggleCaptionOn;
1350 $toogle = '<a href=
"'.$toggleModeLink.'" id=
"bx-panel-toggle" class=
"bx-panel-toggle'.($toggleMode ? '-on' : '-off').'"'.($toggleModeDynamic ? '' : ' '.CTopPanel::AddAttrHint(Loc::getMessage("top_panel_edit_mode_new_tooltip_title"), Loc::getMessage('top_panel_toggle_tooltip
').$hkInstance->GetTitle("bx-panel-small-toggle",true))).'><span
id=
"bx-panel-switcher-gutter-left"></span><span
id=
"bx-panel-toggle-indicator"><span
id=
"bx-panel-toggle-icon"></span><span
id=
"bx-panel-toggle-icon-overlay"></span></span><span
class=
"bx-panel-break"></span><span
id=
"bx-panel-toggle-caption">
'.Loc::getMessage("top_panel_edit_mode_new").'</span><span
class=
"bx-panel-break"></span><span
id=
"bx-panel-toggle-caption-mode">
'.$toggleCaptions.'</span><span
id=
"bx-panel-switcher-gutter-right"></span></a>
';
1351 if (($aUserOpt["collapsed"] ?? '') == "on")
1356 $result .= '<a href=
"" id=
"bx-panel-expander" '.CTopPanel::AddAttrHint(Loc::getMessage("top_panel_expand_tooltip_title"), Loc::getMessage("top_panel_expand_tooltip").$hkInstance->GetTitle("bx-panel-expander",true)).'><span
id=
"bx-panel-expander-text">
'.Loc::getMessage("top_panel_expand").'</span><span
id=
"bx-panel-expander-arrow"></span></a>
';
1357 if ($hkInstance->IsActive())
1359 $result .= '<a
id=
"bx-panel-hotkeys" href=
"javascript:void(0)" onclick=
"BXHotKeys.ShowSettings();" '.CTopPanel::AddAttrHint(Loc::getMessage("HK_PANEL_TITLE").$hkInstance->GetTitle("bx-panel-hotkeys",true)).'></a>
';
1362 $result .= '<a href=
"javascript:void(0)" id=
"bx-panel-pin"'.(($aUserOpt['fix
'] ?? '') == 'on
' ? ' class=
"bx-panel-pin-fixed"' : '').' '.CTopPanel::AddAttrHint(Loc::getMessage('top_panel_pin_tooltip
')).'></a>
';
1364 $Execs = $hkInstance->GetCodeByClassName("bx-panel-logout",Loc::getMessage('top_panel_logout_tooltip
'));
1365 $result .= $hkInstance->PrintJSExecs($Execs);
1366 $Execs = $hkInstance->GetCodeByClassName("bx-panel-small-toggle",Loc::getMessage("top_panel_edit_mode_new_tooltip_title"),'location.href=
"'.$href.'?bitrix_include_areas='.($toggleMode ? 'N' : 'Y').($params<>""? "&
".$params:"").'";
');
1367 $result .= $hkInstance->PrintJSExecs($Execs);
1368 $Execs = $hkInstance->GetCodeByClassName("bx-panel-expander",Loc::getMessage("top_panel_expand_tooltip_title")."/".Loc::getMessage("top_panel_collapse_tooltip_title"));
1369 $result .= $hkInstance->PrintJSExecs($Execs);
1371 $result .= '</div></div>
';
1374 $result .= '<div
id=
"bx-panel-site-toolbar"><div
id=
"bx-panel-buttons-gutter"></div><div
id=
"bx-panel-switcher">
';
1376 if (($aUserOpt["collapsed"] ?? '') != "on")
1381 $result .= '<a href=
"" id=
"bx-panel-hider" '.CTopPanel::AddAttrHint(Loc::getMessage("top_panel_collapse_tooltip_title"), Loc::getMessage("top_panel_collapse_tooltip").$hkInstance->GetTitle("bx-panel-expander",true)).'>
'.Loc::getMessage("top_panel_collapse").'<span
id=
"bx-panel-hider-arrow"></span></a>
';
1382 $result .= '</div><div
id=
"bx-panel-buttons"><div
id=
"bx-panel-buttons-inner">
';
1385 $last_btn_type = '';
1386 $last_btn_small_cnt = 0;
1389 $result .= '<span
class=
"bx-panel-button-group" data-group-
id=
"'.++$groupId.'">
';
1391 $arPanelButtons = &$APPLICATION->arPanelButtons;
1392 sortByColumn($arPanelButtons, ["MAIN_SORT" => SORT_ASC, "SORT" => SORT_ASC]);
1394 foreach ($arPanelButtons as $key=>$arButton)
1396 $result .= $hkInstance->PrintTPButton($arButton);
1398 if ($main_sort != $arButton["MAIN_SORT"] && $main_sort<>"")
1400 $result .= '</span><span
class=
"bx-panel-button-separator"></span><span
class=
"bx-panel-button-group" data-group-
id=
"'.++$groupId.'">
';
1401 $last_btn_small_cnt = 0;
1404 if (!isset($arButton['TYPE
']) || $arButton['TYPE
'] != 'BIG
')
1406 $arButton['TYPE
'] = 'SMALL
';
1409 //very old behaviour
1410 if (is_set($arButton, "SRC_0"))
1412 $arButton["SRC"] = $arButton["SRC_0"];
1415 $arButton['HREF
'] = isset($arButton['HREF
'])? trim($arButton['HREF
']): '';
1416 $bHasAction = $arButton['HREF
'] != '';
1418 if (array_key_exists("RESORT_MENU", $arButton) && $arButton["RESORT_MENU"] === true && is_array($arButton['MENU
']) && !empty($arButton['MENU
']))
1420 sortByColumn($arButton['MENU
'], "SORT", '', PHP_INT_MAX/*nulls last*/);
1423 $bHasMenu = is_array(($arButton['MENU
'] ?? null)) && !empty($arButton['MENU
']);
1424 if ($bHasMenu && !$bHasAction)
1426 foreach ($arButton['MENU
'] as $arItem)
1428 if (isset($arItem['DEFAULT
']) && $arItem['DEFAULT
'])
1430 $arButton['HREF
'] = $arItem['HREF
'];
1436 if ($last_btn_type != '' && $arButton['TYPE
'] != $last_btn_type && $main_sort == $arButton["MAIN_SORT"])
1438 $result .= '</span><span
class=
"bx-panel-button-group" data-group-
id=
"'.++$groupId.'">
';
1439 $last_btn_small_cnt = 0;
1442 if ($bHasAction && str_starts_with(mb_strtolower($arButton['HREF
']), 'javascript:
'))
1444 $arButton['ONCLICK
'] = substr($arButton['HREF
'], 11);
1448 if (isset($arButton['HINT
']))
1450 if (isset($arButton['HINT
']['ID
']) && $arButton['HINT
']['ID
'])
1452 $hintOptions = CUtil::GetPopupOptions($arButton['HINT
']['ID
']);
1454 if(isset($hintOptions['display']) && $hintOptions['display'] == 'off
')
1456 unset($arButton['HINT
']);
1460 if ($arButton['HINT
'])
1462 unset($arButton['ALT
']);
1465 if ($bHasMenu && (!isset($arButton['HINT_MENU
']) || !$arButton['HINT_MENU
']))
1467 $arButton['HINT
']['TARGET
'] = 'parent
';
1471 $title = isset($arButton['ALT
'])? htmlspecialcharsbx($arButton['ALT
']): '';
1472 $onClick = isset($arButton['ONCLICK
'])? htmlspecialcharsbx($arButton['ONCLICK
']): '';
1473 $onClickJs = isset($arButton['ONCLICK
'])? CUtil::JSEscape($arButton['ONCLICK
']): '';
1474 $hintMenu = isset($arButton['HINT_MENU
'])? Json::encode($arButton['HINT_MENU
']): '';
1476 switch ($arButton['TYPE
'])
1479 if ($last_btn_small_cnt >= 3 && $main_sort == $arButton["MAIN_SORT"])
1481 $result .= '</span><span
class=
"bx-panel-button-group" data-group-
id=
"'.++$groupId.'">
';
1482 $last_btn_small_cnt = 0;
1484 elseif ($last_btn_small_cnt > 0)
1486 $result .= '<span
class=
"bx-panel-break"></span>
';
1489 $result .= '<span
class=
"bx-panel-small-button"><span
class=
"bx-panel-small-button-inner">
';
1491 $button_icon = '<span
class=
"bx-panel-small-button-icon'.($arButton['ICON'] ? ' '.$arButton['ICON'] : '').'"'.(isset($arButton['SRC
']) && $arButton['SRC
'] ? ' style=
"background: scroll transparent url('.htmlspecialcharsbx($arButton['SRC']).') no-repeat center center !important;"' : '').'></span>
';
1492 $button_text = '<span
class=
"bx-panel-small-button-text">
'.htmlspecialcharsbx($arButton['TEXT
']).'</span>
';
1493 $button_text_js = CUtil::JSEscape($arButton['TEXT
']);
1497 $result .= '<a href=
"'.htmlspecialcharsbx($arButton['HREF']).'" onclick=
"'.$onClick.';BX.removeClass(this.parentNode.parentNode, \'bx-panel-small-button'.($bHasMenu ? '-text' : '').'-active\')" id=
"bx_topmenu_btn_'.$key.'"'.($title ? ' title=
"'.$title.$hkInstance->GetTitle("bx_topmenu_btn_
".$key).'"' : '').'>
'.$button_icon.$button_text.'</a>
';
1498 $result .= '<script>BX.admin.panel.RegisterButton({ID: \
'bx_topmenu_btn_'.$key.
'\', TYPE: \
'SMALL\', ACTIVE_CSS: \'bx-panel-small-button'.($bHasMenu ?
'-text' :
'').
'-active\', HOVER_CSS: \'bx-panel-small-button'.($bHasMenu ?
'-text' :
'').
'-hover\'' . (isset($arButton[
'HINT']) ?
', HINT: ' . Json::encode($arButton[
'HINT']) :
'') .
', GROUP_ID : '.$groupId.
', SKIP : '.($bHasMenu ?
"true" :
"false").
', LINK: "'.CUtil::JSEscape($arButton[
'HREF']).
'", ACTION : "'.$onClickJs.
'",TEXT : "'.$button_text_js.
'" })</script>';
1501 $result .=
'<a href="javascript:void(0)" class="bx-panel-small-button-arrow" id="bx_topmenu_btn_'.$key.
'_menu"><span class="bx-panel-small-button-arrow"></span></a>';
1502 $result .=
'<script>BX.admin.panel.RegisterButton({ID: \'bx_topmenu_btn_'.$key.
'_menu\', TYPE: \'SMALL\', MENU: ' . Json::encode($arButton[
'MENU']) .
', ACTIVE_CSS: \'bx-panel-small-button-arrow-active\', HOVER_CSS: \'bx-panel-small-button-arrow-hover\''.($hintMenu ?
', HINT: '.$hintMenu :
'').
', GROUP_ID : '.$groupId.
', TEXT : "'.$button_text_js.
'"})</script>';
1507 $result .=
'<a href="javascript:void(0)" id="bx_topmenu_btn_'.$key.
'"'.(
$title ?
' title="'.$title.
'"' :
'').
'>'.$button_icon.$button_text.
'<span class="bx-panel-small-single-button-arrow"></span></a>';
1508 $result .=
'<script>BX.admin.panel.RegisterButton({ID: \'bx_topmenu_btn_'.$key.
'\', TYPE: \
'SMALL\', MENU: ' . Json::encode($arButton[
'MENU']) .
', ACTIVE_CSS: \'bx-panel-small-button-active\', HOVER_CSS: \'bx-panel-small-button-hover\''.($arButton[
'HINT'] ?
', HINT: ' . Json::encode($arButton[
'HINT']) :
'').
', GROUP_ID : '.$groupId.
', TEXT : "'.$button_text_js.
'"})</script>';
1512 $last_btn_small_cnt++;
1517 $last_btn_small_cnt = 0;
1519 $result .=
'<span class="bx-panel-button"><span class="bx-panel-button-inner">';
1521 $button_icon =
'<span class="bx-panel-button-icon'.($arButton[
'ICON'] ?
' '.$arButton[
'ICON'] :
'').
'"'.(isset($arButton[
'SRC']) && $arButton[
'SRC'] ?
' style="background: scroll transparent url('.htmlspecialcharsbx($arButton[
'SRC']).
') no-repeat center center !important;"' :
'').
'></span>';
1522 $button_text_js = CUtil::JSEscape(str_replace(
'#BR#',
' ', $arButton[
'TEXT']));
1524 if ($bHasAction && $bHasMenu)
1526 $button_text =
'<span class="bx-panel-button-text">'.str_replace(
'#BR#',
'<span class="bx-panel-break"></span>', $arButton[
'TEXT']).
' <span class="bx-panel-button-arrow"></span></span>';
1527 $result .=
'<a href="'.htmlspecialcharsbx($arButton[
'HREF']).
'" onclick="'.$onClick.
';BX.removeClass(this.parentNode.parentNode, \'bx-panel-button-icon-active\');" id="bx_topmenu_btn_'.
$key.
'"'.(
$title?
' title="'.$title.
'"':
'').
'>'.$button_icon.
'</a><a id="bx_topmenu_btn_'.
$key.
'_menu" href="javascript:void(0)">'.$button_text.
'</a>';
1528 $result .=
'<script>BX.admin.panel.RegisterButton({ID: \'bx_topmenu_btn_'.$key.
'\', TYPE: \
'BIG\', ACTIVE_CSS: \'bx-panel-button-icon-active\', HOVER_CSS: \'bx-panel-button-icon-hover\''.(!empty($arButton[
'HINT']) ?
', HINT: ' . Json::encode($arButton[
'HINT']) :
'').
', GROUP_ID : '.$groupId.
', SKIP : true }); BX.admin.panel.RegisterButton({ID: \'bx_topmenu_btn_'.
$key.
'_menu\', TYPE: \'BIG\', MENU: ' . Json::encode($arButton[
'MENU']).
', ACTIVE_CSS: \'bx-panel-button-text-active\', HOVER_CSS: \'bx-panel-button-text-hover\''.($hintMenu ?
', HINT: '.$hintMenu :
'').
', GROUP_ID : '.$groupId.
', TEXT : "'.$button_text_js.
'"})</script>';
1530 else if ($bHasAction)
1532 $button_text =
'<span class="bx-panel-button-text">'.str_replace(
'#BR#',
'<span class="bx-panel-break"></span>', $arButton[
'TEXT']).
'</span>';
1533 $result .=
'<a href="'.htmlspecialcharsbx($arButton[
'HREF']).
'" onclick="'.$onClick.
';BX.removeClass(this.parentNode.parentNode, \'bx-panel-button-active\');" id="bx_topmenu_btn_'.
$key.
'"'.(
$title ?
' title="'.$title.
'"' :
'').
'>'.$button_icon.$button_text.
'</a>';
1534 $result .=
'<script>BX.admin.panel.RegisterButton({ID: \'bx_topmenu_btn_'.$key.
'\', TYPE: \
'BIG\', ACTIVE_CSS: \'bx-panel-button-active\', HOVER_CSS: \'bx-panel-button-hover\''.($arButton[
'HINT'] ?
', HINT: ' . Json::encode($arButton[
'HINT']) :
'').
', GROUP_ID : '.$groupId.
', LINK: "'.CUtil::JSEscape($arButton[
'HREF']).
'", ACTION : "'.$onClickJs.
'", TEXT : "'.$button_text_js.
'"});</script>';
1538 $button_text =
'<span class="bx-panel-button-text">'.str_replace(
'#BR#',
'<span class="bx-panel-break"></span>', $arButton[
'TEXT']).
' <span class="bx-panel-button-arrow"></span></span>';
1539 $result .=
'<a href="javascript:void(0)" id="bx_topmenu_btn_'.$key.
'_menu">'.$button_icon.$button_text.
'</a>';
1540 $result .=
'<script>BX.admin.panel.RegisterButton({ID: \'bx_topmenu_btn_'.$key.
'_menu\', TYPE: \'BIG\', MENU: ' . Json::encode($arButton[
'MENU']) .
', ACTIVE_CSS: \'bx-panel-button-active\', HOVER_CSS: \'bx-panel-button-hover\''.($arButton[
'HINT'] ?
', HINT: ' . Json::encode($arButton[
'HINT']) :
'').
', GROUP_ID : '.$groupId.
', TEXT : "'.$button_text_js.
'"});</script>';
1547 $main_sort = $arButton[
"MAIN_SORT"];
1548 $last_btn_type = $arButton[
'TYPE'];
1550 $result .=
'</span></div></div></div>';
1552 if (
$USER->IsAdmin())
1559 BX.admin.panel.state = {
1560 fixed: '.(($aUserOpt[
"fix"] ??
'') ==
"on" ?
'true' :
'false').
',
1561 collapsed: '.((
$aUserOpt[
"collapsed"] ??
'') ==
"on" ?
'true' :
'false').
'
1563 BX.admin.moreButton.init({ buttonTitle : "'.
GetMessageJS(
"top_panel_more_button_title").
'"});
1569 private static function getSiteList():
array
1573 $isDefaultSiteExists =
false;
1576 'select' => [
'LID',
'NAME',
'DEF',
'SITE_NAME',
'SERVER_NAME',
'SORT'],
1577 'filter' => [
'=ACTIVE' =>
'Y',],
1578 'cache' => [
'ttl' => 86400],
1584 if (empty($siteData[
'SERVER_NAME']))
1590 'ID' => $siteData[
'LID'],
1591 'NAME' => $siteData[
'SITE_NAME'] ?: $siteData[
'NAME'],
1592 'SERVER_NAME' => $siteData[
'SERVER_NAME'],
1593 'SORT' => $siteData[
'SORT'],
1596 if ($siteData[
'DEF'] ===
'Y')
1598 $isDefaultSiteExists =
true;
1604 $siteDomainIterator = Main\SiteDomainTable::getList([
1608 'NAME' =>
'SITE.NAME',
1609 'SITE_NAME' =>
'SITE.SITE_NAME',
1610 'DEF' =>
'SITE.DEF',
1611 'SORT' =>
'SITE.SORT',
1614 'cache' => [
'ttl' => 86400],
1616 while ($siteDomainData = $siteDomainIterator->fetch())
1618 $isDomainExists = (bool)array_filter(
$siteList,
static function (
$site) use ($siteDomainData) {
1619 return $site[
'SERVER_NAME'] === $siteDomainData[
'DOMAIN'];
1622 if (!$isDomainExists)
1625 'ID' => $siteDomainData[
'LID'],
1626 'NAME' => $siteDomainData[
'SITE_NAME'] ?: $siteDomainData[
'NAME'],
1627 'SERVER_NAME' => $siteDomainData[
'DOMAIN'],
1628 'SORT' => $siteDomainData[
'SORT']
1631 if ($siteDomainData[
'DEF'] ===
'Y')
1633 $isDefaultSiteExists =
true;
1639 if (!$isDefaultSiteExists)
1641 $serverName = Main\Config\Option::get(
'main',
'server_name',
'',
'');
1642 $isDefaultSiteExists = (bool)array_filter(
$siteList,
static function (
$site) use ($serverName) {
1643 return $site[
'SERVER_NAME'] === $serverName;
1645 if (!$isDefaultSiteExists)
1647 $siteName = Main\Config\Option::get(
'main',
'site_name',
'',
'');
1651 'NAME' => $siteName,
1652 'SERVER_NAME' => $serverName,
1659 Main\Type\Collection::sortByColumn(
$siteList, [
'SORT' => SORT_ASC]);
1663 private static function getDebugSettings() :
array
1669 'INCLUDE_TIME_EXEC' => isset(\Bitrix\Main\Application::getInstance()->getKernelSession()[
"SESS_SHOW_INCLUDE_TIME_EXEC"])
1670 && \Bitrix\Main\Application::getInstance()->getKernelSession()[
"SESS_SHOW_INCLUDE_TIME_EXEC"] ==
"Y",
1672 'TIME_EXEC' => isset(\Bitrix\Main\Application::getInstance()->getKernelSession()[
"SESS_SHOW_TIME_EXEC"])
1673 && \Bitrix\Main\Application::getInstance()->getKernelSession()[
"SESS_SHOW_TIME_EXEC"]==
"Y",
1678 "show_page_exec_time={$result['CMD']}&show_include_exec_time={$result['CMD']}&show_sql_stat={$result['CMD']}"
1679 , [
"show_page_exec_time",
"show_include_exec_time",
"show_sql_stat"]
1685 private static function isProtectedPath(
string $pathOnDocumentRoot): bool
1688 in_array($pathOnDocumentRoot, [
1692 || str_starts_with($pathOnDocumentRoot,
'/bitrix/')
1693 || str_starts_with($pathOnDocumentRoot,
'/local/modules/')
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
static ShowPanelScripts($bReturn=false)
static GetStandardButtons()
static IsCanDeletePage($currentFilePath, $documentRoot, $filemanExists)
static AddAttrHint($hint_title, $hint_text=false)
static IsCanCreatePage($currentDirPath, $documentRoot, $filemanExists)
static IsCanEditPermission($currentFilePath, $documentRoot, $filemanExists)
static IsCanEditSection($currentDirPath, $filemanExists)
static IsCanEditPage($currentFilePath, $documentRoot, $filemanExists)
static IsCanCreateSection($currentDirPath, $documentRoot, $filemanExists)
if(!is_array($prop["VALUES"])) $tmp
bx popup label bx hidden PROPERTY[<?=$propertyIndex?>][CODE]<?=htmlspecialcharsEx( $propertyCode)?> bx_view_property_<?=$propertyIndex?> overflow
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
bx_acc_lim_group_list limitGroupList[] multiple<?=$group[ 'ID']?> ID selected margin top
$_SERVER["DOCUMENT_ROOT"]
GetFileTemplates($lang=LANG, $arTemplates=array())
foreach(['Bitrix\\Main'=> '/lib', 'Psr\\Container'=> '/vendor/psr/container/src', 'Psr\\Log'=> '/vendor/psr/log/src', 'Psr\\Http\\Message'=> '/vendor/psr/http-message/src', 'Psr\\Http\\Client'=> '/vendor/psr/http-client/src', 'Http\\Promise'=> '/vendor/php-http/promise/src', 'PHPMailer\\PHPMailer'=> '/vendor/phpmailer/phpmailer/src', 'GeoIp2'=> '/vendor/geoip2/geoip2/src', 'MaxMind\\Db'=> '/vendor/maxmind-db/reader/src/MaxMind/Db', 'PhpParser'=> '/vendor/nikic/php-parser/lib/PhpParser', 'Recurr'=> '/vendor/simshaun/recurr/src/Recurr',] as $namespace=> $namespacePath) $documentRoot
ExecuteModuleEventEx($arEvent, $arParams=[])
IsModuleInstalled($module_id)
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
bitrix_sessid_get($varname='sessid')
GetMessageJS($name, $aReplace=false)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
<? endif;?> window document title
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
adm detail iblock types adm detail iblock list tr_SITE_ID display