• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/file_dialog.php
  • Класс: CAdminFileDialog
  • Вызов: CAdminFileDialog::GetMenuTypes
static function GetMenuTypes($site, $path, $bEchoResult = false)
{
	global $USER, $APPLICATION;

	if(!CModule::IncludeModule("fileman"))
	{
		$APPLICATION->ThrowException(GetMessage("BX_FD_NO_FILEMAN"));
		return false;
	}

	$path = Rel2Abs("/", $APPLICATION->UnJSEscape($path));
	$path = rtrim($path, "/")."/";

	$armt = GetMenuTypes($site);
	$arAllItems = Array();
	$arMenuTypes = Array();
	$strSelected = "";
	$DOC_ROOT = CSite::GetSiteDocRoot($site);

	foreach($armt as $key => $title)
	{
		$menuname = $path.".".$key.".menu.php";
		if(!$USER->CanDoFileOperation('fm_view_file', Array($site, $menuname)))
			continue;

		$arItems = Array();

		$res = CFileMan::GetMenuArray($DOC_ROOT.$menuname);
		$aMenuLinksTmp = $res["aMenuLinks"];

		for($j = 0, $n = count($aMenuLinksTmp); $j < $n; $j++)
		{
			$aMenuLinksItem = $aMenuLinksTmp[$j];
			$arItems[] = htmlspecialcharsbx($aMenuLinksItem[0]);
		}
		$arAllItems[$key] = $arItems;
		if($strSelected == "")
			$strSelected = $key;
		$arMenuTypes[] = array('key' => $key, 'title' => $title." [".$key."]");
	}

	$arTypes = array_keys($arAllItems);
	$strTypes="";
	$strItems="";
	for($i = 0; $i < count($arTypes); $i++)
	{
		if($i>0)
		{
			$strTypes .= ",";
			$strItems .= ",";
		}
		$strTypes.="'".CUtil::JSEscape($arTypes[$i])."'";
		$arItems = $arAllItems[$arTypes[$i]];
		$strItems .= "[";
		for($j = 0; $j < count($arItems); $j++)
		{
			if($j>0)$strItems .= ",";
			$strItems.="'".CUtil::JSEscape($arItems[$j])."'";
		}
		$strItems .= "]";
	}

	$scriptRes = "n".'arFDMenuTypes["'.CUtil::JSEscape($path).'"] = {types: ['.$strTypes.'], items: ['.$strItems.']};'."n";

	if ($bEchoResult)
	{
		echo $scriptRes;
		return null;
	}
	return array($arMenuTypes, $scriptRes, $arAllItems[$strSelected]);
}