require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/fileman/prolog.php");
require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/condition.php");
if(!$USER->CanDoOperation('fileman_edit_menu_elements'))
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/fileman/include.php");
IncludeModuleLangFile(__FILE__);
$addUrl = 'lang='.LANGUAGE_ID.($logical == "Y"?'&logical=Y':'');
if(($extended=="Y" || $extended=="N") && $extended != ${COption::GetOptionString("main", "cookie_name", "BITRIX_SM")."_menumode"})
setcookie(COption::GetOptionString("main", "cookie_name", "BITRIX_SM")."_menumode", $extended, time()+60*60*24*30*60 ,'/');
else
$extended = ${COption::GetOptionString("main", "cookie_name", "BITRIX_SM")."_menumode"};
$strWarning = "";
$menufilename = "";
$io = CBXVirtualIo::GetInstance();
$path = $io->CombinePath("/", $path);
$dbSitesList = CSite::GetList("lendir", "desc");
$multiSite = false;
$docRoot = $dbSitesList->Fetch();
$docRoot = $docRoot['DOC_ROOT'];
while($arSite = $dbSitesList->GetNext())
{
if($arSite['DOC_ROOT'] == '' || $arSite['DOC_ROOT'] == $docRoot)
{
$docRoot = $arSite['DOC_ROOT'];
continue;
}
$multiSite = true;
break;
}
reset($dbSitesList->arResult);
if($multiSite)
{
while($arSite = $dbSitesList->GetNext())
{
$dir = rtrim($arSite["DIR"], "/");
if (mb_substr($path, 0, mb_strlen($dir)) == $dir && $arSite["DOC_ROOT"] == CSite::GetSiteDocRoot($site))
{
$site = $arSite["ID"];
break;
}
}
}
else
{
while($arSite = $dbSitesList->GetNext())
{
$dir = rtrim($arSite["DIR"], "/");
if (mb_substr($path, 0, mb_strlen($dir)) == $dir)
{
$site = $arSite["ID"];
break;
}
}
}
$site = CFileMan::__CheckSite($site);
$DOC_ROOT = CSite::GetSiteDocRoot($site);
$arParsedPath = CFileMan::ParsePath(Array($site, $path), true, false, "", $logical == "Y");
$menufilename = $path;
$name = preg_replace("/[^a-z0-9_]/i", "", $_REQUEST["name"]);
$bExists = false;
$arTypes = Array();
$armt = GetMenuTypes($site, "left=".GetMessage("FILEMAN_MENU_EDIT_LEFT_MENU").",top=".GetMessage("FILEMAN_MENU_EDIT_TOP_MENU"));
foreach($armt as $key => $title)
{
if(!$USER->CanDoFileOperation('fm_edit_existent_file', Array($site, $path."/.".$key.".menu.php")))
continue;
$arTypes[] = array($key, $title);
if($key == $name)
$bExists = true;
}
if(!$bExists)
{
$arTypes[] = array($name, $name);
}
if($name <> '')
$menufilename = $path."/.".$name.".menu.php";
$abs_path = $DOC_ROOT.$menufilename;
if($io->FileExists($abs_path) && $new == '')
$bEdit = true;
else
$bEdit = false;
if($extended=="Y")
$bSimple = false;
else
$bSimple = true;
$arPath_m = Array($site, $menufilename);
$only_edit = (!$USER->CanDoOperation('fileman_add_element_to_menu') || !$USER->CanDoFileOperation('fm_create_new_file',$arPath_m));
// Check access to folder
if(!$USER->CanDoOperation('fileman_edit_existent_files') || !$USER->CanDoFileOperation('fm_edit_existent_file', $arPath_m) ||
(!$bEdit && $only_edit))
$strWarning = GetMessage("ACCESS_DENIED");
else
{
if($REQUEST_METHOD=="POST" && $save <> '' && is_array($ids) && check_bitrix_sessid())
{
$sMenuTemplateTmp = "";
if($template <> '' && $template!=GetMessage("FILEMAN_MENU_EDIT_DEF"))
$sMenuTemplateTmp = Rel2Abs("/", $template);
$res = CFileMan::GetMenuArray($abs_path);
if($bSimple)
{
$aMenuLinksTmp = $res["aMenuLinks"];
$sMenuTemplateTmp = $res["sMenuTemplate"];
}
else
{
$aMenuLinksTmp = $res["aMenuLinks"];
$aMenuLinksTmp_ = Array();
}
//соберем $aMenuLinksTmp из того что пришло с формы
$aMenuSort = Array();
for($i = 0, $l = count($ids); $i < $l; $i++)
{
$num = $ids[$i];
if (!isset($aMenuLinksTmp[$num-1]) && $only_edit)
continue;
if($bSimple)
{
if((${"del_".$num}=="Y" || (${"text_".$num} == '' && ${"link_".$num} == '')) && !$only_edit)
{
unset($aMenuLinksTmp[$num-1]);
continue;
}
$aMenuLinksTmp[$num-1][0] = ${"text_".$num};
$aMenuLinksTmp[$num-1][1] = ${"link_".$num};
}
else
{
if(${"del_".$num}=="Y" && !$only_edit)
continue;
$aMenuItem = Array(${"text_".$num}, ${"link_".$num});
$arAddLinks = Array();
$additional_link = ${"additional_link_".$num};
$arAddLinksTmp = explode("\n", $additional_link);
for($j = 0, $m = count($arAddLinksTmp); $j < $m; $j++)
{
if(trim($arAddLinksTmp[$j]) <> '')
$arAddLinks[] = trim($arAddLinksTmp[$j]);
}
$aMenuItem[] = $arAddLinks;
$arParams = Array();
$param_cnt = intval(${"param_cnt_".$num});
for($j=1; $j<=intval($param_cnt); $j++)
{
$param_name = trim(${"param_name_".$num."_".$j});
$param_value = trim(${"param_value_".$num."_".$j});
if($param_name <> '' || $param_value <> '')
$arParams[$param_name]=$param_value;
}
$aMenuItem[] = $arParams;
if ($USER->CanDoOperation('edit_php') || $_REQUEST['selected_type'][$num] != 'php')
$aMenuItem[] = ConditionCompose(${"condition_$num"}, $num);
else
$aMenuItem[] = $res["aMenuLinks"][$num-1][4];
$aMenuLinksTmp_[] = $aMenuItem;
}
$aMenuSort[] = intval(${"sort_".$num});
}
if(!$bSimple)
$aMenuLinksTmp = $aMenuLinksTmp_;
for($i = 0, $l = count($aMenuSort)-1; $i < $l; $i++)
for($j = $i + 1, $len = count($aMenuSort); $j < $len; $j++)
if($aMenuSort[$i]>$aMenuSort[$j])
{
$tmpSort = $aMenuLinksTmp[$i];
$aMenuLinksTmp[$i] = $aMenuLinksTmp[$j];
$aMenuLinksTmp[$j] = $tmpSort;
$tmpSort = $aMenuSort[$i];
$aMenuSort[$i] = $aMenuSort[$j];
$aMenuSort[$j] = $tmpSort;
}
//теперь $aMenuLinksTmp прямо в таком готовом виде, что хоть меню рисуй :-)
}
if($REQUEST_METHOD=="POST" && $save <> '' && $name == '' && check_bitrix_sessid())
{
$strWarning = GetMessage("FILEMAN_MENU_EDIT_ENTER_TYPE");
}
elseif($new <> '' && $name <> '' && $io->FileExists($abs_path) && check_bitrix_sessid())
{
$strWarning = GetMessage("FILEMAN_MENU_EDIT_EXISTS_ERROR");
$bEdit = false;
$abs_path = $DOC_ROOT.$path;
}
if($strWarning == '')
{
if($REQUEST_METHOD=="POST" && $save <> '' && is_array($ids) && check_bitrix_sessid())
{
CFileMan::SaveMenu(Array($site, $menufilename), $aMenuLinksTmp, $sMenuTemplateTmp);
$bEdit = true;
$module_id = "fileman";
if(COption::GetOptionString($module_id, "log_menu", "Y")=="Y")
{
$mt = COption::GetOptionString("fileman", "menutypes", $default_value, $site);
$mt = unserialize(str_replace("\\", "", $mt), ['allowed_classes' => false]);
$res_log['menu_name'] = $mt[$name];
$res_log['path'] = mb_substr($path, 1);
if ($new == '')
CEventLog::Log(
"content",
"MENU_EDIT",
"fileman",
"",
serialize($res_log)
);
else
CEventLog::Log(
"content",
"MENU_ADD",
"fileman",
"",
serialize($res_log)
);
}
if($apply == '')
{
if($back_url <> '')
LocalRedirect("/".ltrim($back_url, "/"));
else
LocalRedirect("/bitrix/admin/fileman_admin.php?".$addUrl."&site=".$site."&path=".UrlEncode($path));
}
else
LocalRedirect("/bitrix/admin/fileman_menu_edit.php?".$addUrl."&site=".$site."&path=".UrlEncode($path)."&name=".$name);
}
}
}
if($bEdit)
$APPLICATION->SetTitle(GetMessage("FILEMAN_MENU_EDIT_TITLE"));
else
$APPLICATION->SetTitle(GetMessage("FILEMAN_MENU_EDIT_TITLE_ADD"));
foreach ($arParsedPath["AR_PATH"] as $chainLevel)
{
$adminChain->AddItem(
array(
"TEXT" => htmlspecialcharsex($chainLevel["TITLE"]),
"LINK" => (($chainLevel["LINK"] <> '') ? $chainLevel["LINK"] : ""),
)
);
}
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
$aMenu = array(
array(
"TEXT" => GetMessage("FILEMAN_BACK"),
"LINK" => "fileman_admin.php?".$addUrl."&site=".$site."&path=".UrlEncode($path)
)
);
if($strWarning == ''):
$aMenu[] = array("SEPARATOR"=>"Y");
if ($bSimple)
{
$aMenu[] = array(
"TEXT" => GetMessage("FILEMAN_MENU_EDIT_EXT"),
"LINK" => "fileman_menu_edit.php?path=".UrlEncode($path)."&site=".$site."&".$addUrl."&".($bEdit ? "name=".$name : "new=y")."&extended=Y&back_url=".urlencode($back_url)
);
}
else
{
$aMenu[] = array(
"TEXT" => GetMessage("FILEMAN_MENU_EDIT_SIMPLE"),
"LINK" => "fileman_menu_edit.php?path=".UrlEncode($path)."&site=".$site."&".$addUrl."&".($bEdit ? "name=".$name : "new=y")."&extended=N&back_url=".urlencode($back_url)
);
}
if ($bEdit && !$only_edit)
{
if ($USER->CanDoOperation('edit_php'))
{
$aMenu[] = array("SEPARATOR"=>"Y");
$aMenu[] = array(
"TEXT" => GetMessage("FILEMAN_MENU_EDIT_AS_TEXT"),
"LINK" => "fileman_file_edit.php?path=".UrlEncode($path."/.".$name.".menu.php")."&site=".$site."&full_src=Y&".$addUrl
);
}
$aMenu[] = array("SEPARATOR"=>"Y");
$aMenu[] = array(
"TEXT" => GetMessage("FILEMAN_MENU_EDIT_DELETE"),
"LINK" => "javascript:if(confirm('".GetMessage("FILEMAN_DEL_CONF")."')) window.location='fileman_admin.php?path=".UrlEncode($path)."&action=delete&ID[]=".UrlEncode(".".$name.".menu.php")."&".$addUrl."&".bitrix_sessid_get()."#tb';",
"WARNING" => "Y"
);
}
$context = new CAdminContextMenu($aMenu);
$context->Show();
$number_new_params = COption::GetOptionInt("fileman", "num_menu_param", 1, $site);
?>
CanDoFileOperation('fm_edit_existent_file',$arPath_m)):?>
Fatal error: Uncaught Error: Class "CAdminCalendar" not found in D:\ktt\ttepla.com\public_html\bitrix\modules\fileman\admin\fileman_menu_edit.php:337
Stack trace:
#0 {main}
thrown in D:\ktt\ttepla.com\public_html\bitrix\modules\fileman\admin\fileman_menu_edit.php on line 337