/**
* Bitrix Framework
* @package bitrix
* @subpackage main
* @copyright 2001-2015 Bitrix
*/
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
IncludeModuleLangFile(__FILE__);
define("ADMIN_THEMES_PATH", "/bitrix/themes");
class CAdminPage
{
var $aModules = array();
var $bInit = false;
var $publicMode = false;
private $isHideTitle = false;
public function __construct()
{
if (defined("PUBLIC_MODE") && PUBLIC_MODE == 1)
{
$this->publicMode = true;
}
}
public function Init()
{
if($this->bInit)
return;
$this->bInit = true;
$module_list = CModule::GetList();
while($module = $module_list->Fetch())
$this->aModules[] = $module["ID"];
}
public function ShowTitle()
{
global $APPLICATION;
$APPLICATION->AddBufferContent(array(&$this, "GetTitle"));
}
public function ShowJsTitle()
{
global $APPLICATION;
$APPLICATION->AddBufferContent(array(&$this, "GetJsTitle"));
}
function GetTitle()
{
global $APPLICATION;
return htmlspecialcharsex($APPLICATION->GetTitle(false, true));
}
public function isHideTitle()
{
return $this->isHideTitle;
}
public function hideTitle()
{
$this->isHideTitle = true;
}
function GetJsTitle()
{
global $APPLICATION;
return CUtil::JSEscape($APPLICATION->GetTitle(false, true));
}
public function ShowPopupCSS()
{
if ($this->publicMode)
{
return '';
}
/** @global CMain $APPLICATION */
global $APPLICATION;
$this->Init();
$arCSS = array_merge(
$this->GetModulesCSS($_REQUEST['from_module']),
$APPLICATION->GetCSSArray()
);
$s = '';
return $s;
}
public function ShowCSS()
{
if ($this->publicMode)
{
return '';
}
/** @global CMain $APPLICATION */
global $APPLICATION;
$this->Init();
$arCSS = array_merge(array(
ADMIN_THEMES_PATH.'/'.ADMIN_THEME_ID.'/compatible.css',
//ADMIN_THEMES_PATH.'/'.ADMIN_THEME_ID.'/adminstyles.css',
'/bitrix/panel/main/adminstyles_fixed.css',
'/bitrix/panel/main/admin.css',
),
$this->GetModulesCSS(),
$APPLICATION->GetCSSArray()
);
$s = '';
foreach($arCSS as $css)
{
$bExternalLink = (strncmp($css, 'http://', 7) == 0 || strncmp($css, 'https://', 8) == 0);
if($bExternalLink || file_exists($_SERVER['DOCUMENT_ROOT'].$css))
$s .= ' '."\n";
}
return $s;
}
public function GetModulesCSS($module_id='')
{
global $CACHE_MANAGER;
$rel_theme_path = ADMIN_THEMES_PATH."/".ADMIN_THEME_ID."/";
$abs_theme_path = $_SERVER["DOCUMENT_ROOT"].$rel_theme_path;
if($module_id <> '' && $this->aModules[$module_id] <> '')
{
if(file_exists($abs_theme_path.$module_id.".css"))
return array($rel_theme_path.$module_id.'.css');
}
if($CACHE_MANAGER->Read(36000000, ADMIN_THEME_ID, "modules_css"))
$time_cached = $CACHE_MANAGER->Get(ADMIN_THEME_ID);
else
$time_cached = '';
//check modification time
$time_fact = '';
foreach($this->aModules as $module)
{
$fname = $abs_theme_path.$module.".css";
if(file_exists($fname))
$time_fact .= filemtime($fname);
}
$css_file = $abs_theme_path."modules.css";
if($time_fact !== $time_cached)
{
//parse css files to create summary modules css
$sCss = '';
foreach($this->aModules as $module)
{
$fname = $abs_theme_path.$module.".css";
if(file_exists($fname))
$sCss .= file_get_contents($fname)."\n";
}
//create summary modules css
file_put_contents($css_file, $sCss);
if($time_cached !== '')
{
$CACHE_MANAGER->Clean(ADMIN_THEME_ID, "modules_css");
$CACHE_MANAGER->Read(36000000, ADMIN_THEME_ID, "modules_css");
}
$CACHE_MANAGER->Set(ADMIN_THEME_ID, $time_fact);
}
if(file_exists($css_file))
return array($rel_theme_path.'modules.css');
else
return array();
}
public function ShowScript()
{
/** @global CMain $APPLICATION */
global $APPLICATION;
$APPLICATION->AddHeadScript('/bitrix/js/main/utils.js');
$APPLICATION->AddHeadScript('/bitrix/js/main/hot_keys.js');
$APPLICATION->SetAdditionalCSS('/bitrix/panel/main/hot_keys.css');
if ($this->publicMode)
{
return '';
}
//PHP-depended variables
$aUserOpt = CUserOptions::GetOption("global", "settings");
$s = "
";
$APPLICATION->AddHeadScript('/bitrix/js/main/admin_tools.js');
$APPLICATION->AddHeadScript('/bitrix/js/main/popup_menu.js');
$APPLICATION->AddHeadScript('/bitrix/js/main/admin_search.js');
return $s;
}
public function ShowSectionIndex($menu_id, $module_id=false)
{
/** @global CMain $APPLICATION */
global $APPLICATION;
echo '
';
$sTableID = "module_index_table";
$page = $APPLICATION->GetCurPage();
$param = DeleteParam(array("show_mode", "mode"));
echo '
';
if($module_id === false)
$this->Init();
/** @global CAdminMenu() $adminMenu */
global $adminMenu;
$adminMenu->Init(($module_id !== false? array($module_id) : $this->aModules));
$adminMenu->ShowSubmenu($menu_id, "table");
echo '
';
}
function ShowSound()
{
/** @global CMain $APPLICATION */
global $USER, $APPLICATION;
$res = '';
if($USER->IsAuthorized() && !isset($_COOKIE[COption::GetOptionString("main", "cookie_name", "BITRIX_SM").'_SOUND_LOGIN_PLAYED']))
{
$aUserOptGlobal = CUserOptions::GetOption("global", "settings");
if($aUserOptGlobal["sound"] == 'Y')
{
if($aUserOptGlobal["sound_login"] == '')
$aUserOptGlobal["sound_login"] = "/bitrix/sounds/main/bitrix_tune.mp3";
ob_start();
$APPLICATION->IncludeComponent("bitrix:player", "audio",
Array(
"PATH" => htmlspecialcharsbx($aUserOptGlobal["sound_login"]),
"WIDTH" => "1",
"HEIGHT" => "1",
"CONTROLBAR" => "none",
"AUTOSTART" => "Y",
"REPEAT" => "N",
"VOLUME" => "90",
"MUTE" => "N",
"HIGH_QUALITY" => "Y",
"BUFFER_LENGTH" => "2",
"PROVIDER"=>"sound",
),
null, array("HIDE_ICONS"=>"Y")
);
$res = ob_get_contents();
ob_end_clean();
$res = '
'.$res.'
';
}
}
return $res;
}
public function getSSOSwitcherButton()
{
global $CACHE_MANAGER, $USER;
if($CACHE_MANAGER->Read(86400, "sso_portal_list_".$USER->GetID()))
{
$queryResult = $CACHE_MANAGER->Get("sso_portal_list_".$USER->GetID());
}
else
{
$queryResult = false;
if(\Bitrix\Main\Loader::includeModule('socialservices'))
{
if(class_exists('CBitrix24NetTransport'))
{
$query = \CBitrix24NetTransport::init();
if ($query)
{
$queryResult = $query->call('admin.profile.list', array());
}
$CACHE_MANAGER->Set("sso_portal_list_".$USER->GetID(), $queryResult);
}
}
}
if(is_array($queryResult))
{
$ssoMenu = array();
if(isset($queryResult['error']))
{
if(
$queryResult['error'] == 'insufficient_scope'
&& \Bitrix\Main\Loader::includeModule('socialservices')
&& class_exists("Bitrix\\Socialservices\\Network")
&& method_exists("Bitrix\\Socialservices\\Network", "getAuthUrl")
)
{
$n = new \Bitrix\Socialservices\Network();
$ssoMenu[] = array(
"TEXT" => \Bitrix\Main\Localization\Loc::getMessage("admin_lib_sso_auth"),
"TITLE" => \Bitrix\Main\Localization\Loc::getMessage("admin_lib_sso_auth_title"),
"ONCLICK"=>"BX.util.popup('".CUtil::JSEscape($n->getAuthUrl("popup", array("admin")))."', 800, 600);",
);
}
}
elseif(isset($queryResult['result']))
{
$currentHost = \Bitrix\Main\Context::getCurrent()->getRequest()->getHttpHost();
foreach($queryResult['result']['admin'] as $site)
{
if($site["TITLE"] != $currentHost)
{
$ssoMenu[] = array(
"TEXT" => $site["TITLE"],
"TITLE"=> "Go to ". $site["TITLE"],
"LINK"=>$site["URL"]."bitrix/admin/",
);
}
}
if(
count($ssoMenu) > 0
&& count($queryResult['result']["portal"]) > 0
)
{
$ssoMenu[] = array("SEPARATOR" => true);
}
foreach($queryResult['result']['portal'] as $site)
{
$ssoMenu[] = array(
"TEXT" => $site["TITLE"],
"TITLE"=> "Go to ". $site["TITLE"],
"LINK"=>$site["URL"],
);
}
}
return $ssoMenu;
}
return false;
}
public function getSelfFolderUrl()
{
return (defined("SELF_FOLDER_URL") ? SELF_FOLDER_URL : "/bitrix/admin/");
}
}
use Bitrix\Main\HttpResponse;
use Bitrix\Main\Application;
use Bitrix\Main\Web\Json;
class CAdminAjaxHelper
{
/** @var \Bitrix\Main\Context */
protected $context;
/** @var \Bitrix\Main\HttpResponse */
protected $httpResponse;
/** @var \Bitrix\Main\HttpRequest */
protected $request;
protected $skipResponse = false;
public function __construct()
{
$this->context = Application::getInstance()->getContext();
$this->request = $this->context->getRequest();
$this->httpResponse = new HttpResponse();
}
/**
* Sends JSON response with status "success".
* @throws \Bitrix\Main\ArgumentException
* @throws \Bitrix\Main\ArgumentNullException
* @throws \Bitrix\Main\ArgumentOutOfRangeException
*/
public function sendJsonSuccessResponse()
{
$this->sendJsonResponse(array("status" => "success"));
}
/**
* Sends JSON response with status "error" and with errors.
* @param string $message Error message.
* @throws \Bitrix\Main\ArgumentException
* @throws \Bitrix\Main\ArgumentNullException
* @throws \Bitrix\Main\ArgumentOutOfRangeException
*/
public function sendJsonErrorResponse($message)
{
$this->sendJsonResponse(array("status" => "error", "message" => $message));
}
/**
* Sends JSON response.
* @param array $params Data structure.
* @throws \Bitrix\Main\ArgumentException
* @throws \Bitrix\Main\ArgumentNullException
* @throws \Bitrix\Main\ArgumentOutOfRangeException
*/
public function sendJsonResponse($params = array())
{
if ($this->isAjaxRequest() && !$this->skipResponse)
{
$this->httpResponse->addHeader("Content-Type", "application/json");
$this->httpResponse->flush(Json::encode($params));
$this->end();
}
}
public function decodeUriComponent(Bitrix\Main\HttpRequest $request = null)
{
if ($this->isAjaxRequest())
{
if ($request)
{
$request->addFilter(new \Bitrix\Main\Web\PostDecodeFilter());
}
CUtil::decodeURIComponent($_GET);
CUtil::decodeURIComponent($_POST);
CUtil::decodeURIComponent($_REQUEST);
$listKeys = array_keys($_REQUEST);
foreach ($listKeys as $key)
CUtil::decodeURIComponent($GLOBALS[$key]);
}
}
/**
* Returns whether this is an AJAX (XMLHttpRequest) request.
* @return boolean
*/
public function isAjaxRequest()
{
return $this->request->isAjaxRequest();
}
protected function end()
{
define("ADMIN_AJAX_MODE", true);
require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_admin_after.php");
die();
}
}
class CAdminSidePanelHelper extends CAdminAjaxHelper
{
public function setSkipResponse($skip)
{
$this->skipResponse = $skip;
}
public function sendSuccessResponse($responseType = "", $dataToForm = array())
{
$post = $this->request->getPostList()->toArray();
$listActions = array();
switch ($responseType)
{
case "base":
if ($post["save"] != "")
$listActions[] = "destroy";
if ($post["save_and_add"] != "")
$listActions[] = "closeAndOpen";
break;
case "apply":
if ($post["save"] != "")
$listActions[] = "close";
if ($post["apply"] != "")
$listActions[] = "reload";
break;
case "close":
$listActions[] = "close";
break;
case "destroy":
$listActions[] = "destroy";
break;
default:
$listActions[] = "close";
}
if (!empty($dataToForm["reloadUrl"]))
{
if ($this->isPublicSidePanel())
{
if (mb_strpos("publicSidePanel",$dataToForm["reloadUrl"]) === false)
{
$dataToForm["reloadUrl"] = CHTTP::urlAddParams(
$dataToForm["reloadUrl"], array("publicSidePanel" => "Y"));
}
}
}
$this->sendJsonResponse(
array(
"status" => "success",
"listActions" => $listActions,
"formParams" => $dataToForm
)
);
}
public function reloadPage($redirectUrl, $type)
{
if ($this->isSidePanelRequest())
{
$redirectUrl = CHTTP::urlAddParams($redirectUrl, array(
"IFRAME" => "Y",
"IFRAME_TYPE" => "SIDE_SLIDER",
"sidePanelAction" => $type)
);
if ($this->isPublicSidePanel())
{
$redirectUrl = CHTTP::urlAddParams($redirectUrl, array("publicSidePanel" => "Y"));
}
LocalRedirect($redirectUrl);
}
}
/**
* Returns whether this is an AJAX (XMLHttpRequest) request and SipePanel request.
* @return boolean
*/
public function isSidePanelRequest()
{
return ($_REQUEST["IFRAME"] == "Y") && ($_REQUEST["IFRAME_TYPE"] == "SIDE_SLIDER");
}
public function isSidePanel()
{
return (isset($_REQUEST["IFRAME"]) && $_REQUEST["IFRAME"] === "Y");
}
public function isPublicSidePanel()
{
return ($this->isSidePanel() && ($_REQUEST["publicSidePanel"] === "Y" || $_REQUEST["IFRAME_TYPE"] == "PUBLIC_FRAME"));
}
public function isSidePanelFrame()
{
return ($_REQUEST["IFRAME"] == "Y") && ($_REQUEST["IFRAME_TYPE"] == "SIDE_SLIDER");
}
public function isPublicFrame()
{
return ($_REQUEST["IFRAME"] == "Y") && ($_REQUEST["IFRAME_TYPE"] == "PUBLIC_FRAME");
}
public function setDefaultQueryParams($url)
{
if ($this->isSidePanel())
{
$frameType = "SIDE_SLIDER";
if ($this->isPublicFrame())
{
$frameType = "PUBLIC_FRAME";
}
$params = array("IFRAME" => "Y", "IFRAME_TYPE" => $frameType);
if ($this->isPublicSidePanel())
{
$params["publicSidePanel"] = "Y";
}
return \CHTTP::urlAddParams($url, $params);
}
else
{
return $url;
}
}
public function editUrlToPublicPage($url)
{
if ($this->isPublicSidePanel() || (defined("PUBLIC_MODE") && PUBLIC_MODE == 1))
{
$url = str_replace(".php", "/", $url);
}
return $url;
}
public function localRedirect($url)
{
if ($this->isPublicFrame())
{
echo "";
exit;
}
}
}
/* Left tree-view menu */
class CAdminMenu
{
var $aGlobalMenu, $aActiveSections=array(), $aOpenedSections=array();
var $bInit = false;
public function __construct()
{
}
function Init($modules)
{
/** @noinspection PhpUnusedLocalVariableInspection */
global $APPLICATION, $USER, $DB, $MESS;
if($this->bInit)
return;
$this->bInit = true;
$aOptMenu = CUserOptions::GetOption("admin_menu", "pos", array());
$this->AddOpenedSections($aOptMenu["sections"]);
$aModuleMenu = array();
if(is_array($modules))
{
foreach($modules as $module)
{
$module = _normalizePath($module);
//trying to include file menu.php in the /admin/ folder of the current module
$fname = getLocalPath("modules/".$module."/admin/menu.php");
if($fname !== false)
{
$menu = CAdminMenu::_IncludeMenu($_SERVER["DOCUMENT_ROOT"].$fname);
if(is_array($menu) && !empty($menu))
{
if(isset($menu["parent_menu"]) && $menu["parent_menu"] <> "")
{
//one section
$aModuleMenu[] = $menu;
}
else
{
//multiple sections
foreach($menu as $submenu)
{
if(is_array($submenu) && !empty($submenu))
{
$aModuleMenu[] = $submenu;
}
}
}
}
}
}
}
//additional user menu
$aMenuLinks = array();
if(file_exists($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/admin/.left.menu.php"))
include($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/admin/.left.menu.php");
if(!empty($aMenuLinks))
{
$bWasSeparator = false;
$menu = array();
foreach($aMenuLinks as $module_menu)
{
if($module_menu[3]["SEPARATOR"] == "Y")
{
//first level
if(!empty($menu))
$aModuleMenu[] = $menu;
$menu = array(
"parent_menu" => "global_menu_services",
"icon" => "default_menu_icon",
"page_icon" => "default_page_icon",
"items_id"=>$module_menu[3]["SECTION_ID"],
"items"=>array(),
"sort"=>$module_menu[3]["SORT"],
"text" => $module_menu[0],
);
$bWasSeparator = true;
}
elseif($bWasSeparator && $module_menu[3]["SECTION_ID"] == "")
{
//section items
$menu["items"][] = array(
"text" => $module_menu[0],
"title"=>$module_menu[3]["ALT"],
"url" => $module_menu[1],
"more_url"=>$module_menu[2],
);
}
elseif($module_menu[3]["SECTION_ID"] == "" || $module_menu[3]["SECTION_ID"] == "statistic" || $module_menu[3]["SECTION_ID"] == "sale")
{
//item in root
$aModuleMenu[] = array(
"parent_menu" => ($module_menu[3]["SECTION_ID"] == "statistic"? "global_menu_statistics" : ($module_menu[3]["SECTION_ID"] == "sale"? "global_menu_store":"global_menu_services")),
"icon" => "default_menu_icon",
"page_icon" => "default_page_icon",
"sort"=>$module_menu[3]["SORT"],
"text" => $module_menu[0],
"title"=>$module_menu[3]["ALT"],
"url" => $module_menu[1],
"more_url"=>$module_menu[2],
);
}
else
{
//item in section
foreach($aModuleMenu as $i=>$section)
{
if($section["section"] == $module_menu[3]["SECTION_ID"])
{
if(!is_array($aModuleMenu[$i]["items"]))
$aModuleMenu[$i]["items"] = array();
$aModuleMenu[$i]["items"][] = array(
"text" => $module_menu[0],
"title"=>$module_menu[3]["ALT"],
"url" => $module_menu[1],
"more_url"=>$module_menu[2],
);
break;
}
}
}
}
if(!empty($menu))
$aModuleMenu[] = $menu;
}
$this->aGlobalMenu = array(
"global_menu_desktop" => array(
"menu_id" => "desktop",
"text" => GetMessage('admin_lib_desktop'),
"title" => GetMessage('admin_lib_desktop_title'),
"url" => "index.php?lang=".LANGUAGE_ID,
"sort" => 50,
"items_id" => "global_menu_desktop",
"help_section" => "desktop",
"items" => array()
),
"global_menu_content" => array(
"menu_id" => "content",
"text" => GetMessage("admin_lib_menu_content"),
"title" => GetMessage("admin_lib_menu_content_title"),
"sort" => 100,
"items_id" => "global_menu_content",
"help_section" => "content",
"items" => array()
),
"global_menu_landing" => array(
"menu_id" => "landing",
"text" => GetMessage("admin_lib_menu_landing"),
"sort" => 130,
"items_id" => "global_menu_landing",
"help_section" => "landing",
"items" => array()
),
"global_menu_marketing" => array(
"menu_id" => "marketing",
"text" => GetMessage("admin_lib_menu_marketing"),
"sort" => 150,
"items_id" => "global_menu_marketing",
"help_section" => "marketing",
"items" => array()
),
"global_menu_store" => array(
"menu_id" => "store",
"text" => GetMessage("admin_lib_menu_store"),
"title" => GetMessage("admin_lib_menu_store_title"),
"sort" => 200,
"items_id" => "global_menu_store",
"help_section" => "store",
"items" => array()
),
"global_menu_services" => array(
"menu_id" => "services",
"text" => GetMessage("admin_lib_menu_services"),
"title" => GetMessage("admin_lib_menu_service_title"),
"sort" => 300,
"items_id" => "global_menu_services",
"help_section" => "service",
"items" => array()
),
"global_menu_statistics" => array(
"menu_id" => "analytics",
"text" => GetMessage("admin_lib_menu_stat"),
"title" => GetMessage("admin_lib_menu_stat_title"),
"sort" => 400,
"items_id" => "global_menu_statistics",
"help_section" => "statistic",
"items" => array()
),
"global_menu_marketplace" => array(
"menu_id" => "marketPlace",
"text" => GetMessage("admin_lib_menu_marketplace"),
"title" => GetMessage("admin_lib_menu_marketplace_title"),
"url" => "update_system_market.php?lang=".LANGUAGE_ID,
"sort" => 450,
"items_id" => "global_menu_marketplace",
"help_section" => "marketplace",
"items" => array()
),
"global_menu_settings" => array(
"menu_id" => "settings",
"text" => GetMessage("admin_lib_menu_settings"),
"title" => GetMessage("admin_lib_menu_settings_title"),
"sort" => 500,
"items_id" => "global_menu_settings",
"help_section" => "settings",
"items" => array()
),
);
//User defined global sections
$bSort = false;
foreach(GetModuleEvents("main", "OnBuildGlobalMenu", true) as $arEvent)
{
$bSort = true;
$arRes = ExecuteModuleEventEx($arEvent, array(&$this->aGlobalMenu, &$aModuleMenu));
if(is_array($arRes))
$this->aGlobalMenu = array_merge($this->aGlobalMenu, $arRes);
}
if($bSort)
uasort($this->aGlobalMenu, array($this, '_sort'));
foreach($aModuleMenu as $menu)
$this->aGlobalMenu[$menu["parent_menu"]]["items"][] = $menu;
$sort_func = array($this, '_sort');
foreach($this->aGlobalMenu as $key => $menu)
{
if(empty($menu["items"]) && $key != "global_menu_desktop")
{
unset($this->aGlobalMenu[$key]);
}
elseif(is_array($this->aGlobalMenu[$key]["items"]))
{
usort($this->aGlobalMenu[$key]["items"], $sort_func);
}
}
foreach($this->aGlobalMenu as $key=>$menu)
if($this->_SetActiveItems($this->aGlobalMenu[$key]))
break;
}
function _sort($a, $b)
{
if($a["sort"] == $b["sort"])
return 0;
return ($a["sort"] < $b["sort"]? -1 : 1);
}
function _IncludeMenu($fname)
{
/** @noinspection PhpUnusedLocalVariableInspection */
global $APPLICATION, $USER, $DB, $MESS;
$aModuleMenuLinks = array();
$menu = include($fname);
if(is_array($menu) && !empty($menu))
return $menu;
if(!empty($aModuleMenuLinks))
{
$menu = array();
$n = 0;
foreach($aModuleMenuLinks as $module_menu)
{
if($n == 0)
{
//first level
$menu = array(
"parent_menu" => "global_menu_services",
"icon" => "default_menu_icon",
"page_icon" => "default_page_icon",
"items_id"=>"sect_".md5($fname),
"items"=>array(),
"sort"=>$module_menu[3]["SORT"],
"text" => $module_menu[0],
"url" => $module_menu[1],
);
}
else
{
//section items
$menu["items"][] = array(
"text" => $module_menu[0],
"title"=>$module_menu[3]["ALT"],
"url" => $module_menu[1],
"more_url"=>$module_menu[2],
);
}
$n++;
}
return $menu;
}
return false;
}
function _SetActiveItems(&$aMenu, $aSections=array())
{
/** @global CMain $APPLICATION */
global $APPLICATION;
$bSubmenu = (isset($aMenu["items"]) && is_array($aMenu["items"]) && !empty($aMenu["items"]));
if($bSubmenu)
$aSections[$aMenu["items_id"]] = array(
"menu_id" => $aMenu["menu_id"],
"items_id"=>$aMenu["items_id"],
"page_icon"=>isset($aMenu["page_icon"])? $aMenu["page_icon"]: null,
"text"=>$aMenu["text"],
"url"=>$aMenu["url"],
"skip_chain"=>isset($aMenu["skip_chain"])? $aMenu["skip_chain"]: null,
"help_section"=>isset($aMenu["help_section"])? $aMenu["help_section"]: null,
);
$bSelected = false;
$bMoreUrl = (isset($aMenu["more_url"]) && is_array($aMenu["more_url"]) && !empty($aMenu["more_url"]));
if($aMenu["url"] <> "" || $bMoreUrl)
{
$cur_page = $APPLICATION->GetCurPage();
$all_links = array();
if($aMenu["url"] <> "")
$all_links[] = $aMenu["url"];
if($bMoreUrl)
$all_links = array_merge($all_links, $aMenu["more_url"]);
$n = count($all_links);
for($j = 0; $j < $n; $j++)
{
//"/admin/"
//"/admin/index.php"
//"/admin/index.php?module=mail"
if(empty($all_links[$j]))
continue;
if(mb_strpos($all_links[$j],"/bitrix/admin/") !== 0)
$tested_link = "/bitrix/admin/".$all_links[$j];
else
$tested_link = $all_links[$j];
if($tested_link <> '' && mb_strpos($cur_page,$tested_link) === 0)
{
$bSelected = true;
break;
}
if(($pos = mb_strpos($tested_link,"?"))!==false)
{
if(mb_substr($tested_link,0,$pos)==$cur_page)
{
$right = mb_substr($tested_link,$pos+1);
$params = explode("&", $right);
$bOK = true;
foreach ($params as $paramKeyAndValue)
{
$eqpos = mb_strpos($paramKeyAndValue,"=");
$varvalue = "";
if($eqpos === false)
{
$varname = $paramKeyAndValue;
}
elseif($eqpos == 0)
{
continue;
}
else
{
$varname = mb_substr($paramKeyAndValue,0,$eqpos);
$varvalue = urldecode(mb_substr($paramKeyAndValue,$eqpos+1));
}
$globvarvalue = isset($_REQUEST[$varname]) ? $_REQUEST[$varname] : "";
if($globvarvalue != $varvalue)
{
$bOK = false;
break;
}
} //foreach ($params as $paramKeyAndValue)
if($bOK)
{
$bSelected = true;
break;
}
}//if(substr($tested_link, 0, $pos)==$cur_page)
} //if(($pos = strpos($tested_link, "?"))!==false)
} //for($j = 0; $j < $n; $j++)
}
$bSelectedInside = false;
if($bSubmenu)
{
foreach($aMenu["items"] as $key=>$submenu)
if($this->_SetActiveItems($aMenu["items"][$key], $aSections))
{
$bSelectedInside = true;
break;
}
}
if($bSelected && !$bSelectedInside)
{
if(!$bSubmenu)
{
$aSections["_active"] = array(
"menu_id"=>$aMenu["menu_id"],
"page_icon"=>$aMenu["page_icon"],
"text"=>$aMenu["text"],
"url"=>$aMenu["url"],
"skip_chain"=>$aMenu["skip_chain"],
"help_section"=>$aMenu["help_section"],
);
}
$aMenu["_active"] = true;
$this->aActiveSections = $aSections;
}
return $bSelected || $bSelectedInside;
}
private function _get_menu_item_width($level)
{
static $START_MAGIC_NUMBER = 30, $STEP_MAGIC_NUMBER = 21;
return $START_MAGIC_NUMBER + $level*$STEP_MAGIC_NUMBER;
}
private function _get_menu_item_padding($level)
{
static $ADDED_MAGIC_NUMBER = 8;
return $this->_get_menu_item_width($level) + $ADDED_MAGIC_NUMBER;
}
function Show($aMenu, $level=0)
{
$scripts = '';
$bSubmenu = (isset($aMenu["items"]) && is_array($aMenu["items"]) && !empty($aMenu["items"])) || isset($aMenu["dynamic"]) && $aMenu["dynamic"] == true;
$bSectionActive = isset($aMenu["items_id"]) && (in_array($aMenu["items_id"], array_keys($this->aActiveSections)) || $this->IsSectionActive($aMenu["items_id"]));
$icon = isset($aMenu["icon"]) && $aMenu["icon"] <> ""
? ''
// : ($level < 1 ? '' : '');
: '';
$id = 'menu_item_'.RandString(10);
?>
?>
$onclick = '';
if ($bSubmenu)
{
if(isset($aMenu["dynamic"]) && $aMenu["dynamic"] == true && (!$aMenu["items"] || count($aMenu["items"]) <= 0))
{
$onclick = "BX.adminMenu.toggleDynSection(".$this->_get_menu_item_width($level).", this.parentNode.parentNode, '".htmlspecialcharsbx(CUtil::JSEscape($aMenu["module_id"]))."', '".urlencode(htmlspecialcharsbx(CUtil::JSEscape($aMenu["items_id"])))."', '".($level+1)."')";
}
elseif(!$aMenu["dynamic"] || !$bSectionActive || $aMenu['dynamic'] && $bSectionActive && isset($aMenu["items"]) && count($aMenu["items"]) > 0)
{
$onclick = "BX.adminMenu.toggleSection(this.parentNode.parentNode, '".htmlspecialcharsbx(CUtil::JSEscape($aMenu["items_id"]))."', '".($level+1)."')";
} //endif;
}
?>
Warning : Undefined variable $level in D:\ktt\ttepla.com\public_html\bitrix\updates\update_m1657865531\main\interface\admin_lib.php on line 1132
Warning : Undefined variable $onclick in D:\ktt\ttepla.com\public_html\bitrix\updates\update_m1657865531\main\interface\admin_lib.php on line 1132
>
$menuText = htmlspecialcharsbx(htmlspecialcharsback($aMenu["text"]));
if(isset($aMenu["url"]) && $aMenu["url"] <> ""):
$menuUrl = htmlspecialcharsbx($aMenu["url"], ENT_COMPAT, false);
?>
Warning : Undefined variable $level in D:\ktt\ttepla.com\public_html\bitrix\updates\update_m1657865531\main\interface\admin_lib.php on line 1137
href="
Warning : Undefined variable $menuUrl in D:\ktt\ttepla.com\public_html\bitrix\updates\update_m1657865531\main\interface\admin_lib.php on line 1137
">
Warning : Undefined variable $icon in D:\ktt\ttepla.com\public_html\bitrix\updates\update_m1657865531\main\interface\admin_lib.php on line 1137
elseif ($bSubmenu):
if(isset($aMenu["dynamic"]) && $aMenu["dynamic"] == true && !$bSectionActive && (!$aMenu["items"] || count($aMenu["items"]) <= 0)):
?>
Warning : Undefined variable $level in D:\ktt\ttepla.com\public_html\bitrix\updates\update_m1657865531\main\interface\admin_lib.php on line 1140
href="javascript:void(0)" onclick="BX.adminMenu.toggleDynSection(
Fatal error : Uncaught Error: Using $this when not in object context in D:\ktt\ttepla.com\public_html\bitrix\updates\update_m1657865531\main\interface\admin_lib.php:1140
Stack trace:
#0 {main}
thrown in D:\ktt\ttepla.com\public_html\bitrix\updates\update_m1657865531\main\interface\admin_lib.php on line 1140