| Current Path : /var/www/element/data/www/greenpr.ru/bitrix/modules/iblock/admin/ |
| Current File : /var/www/element/data/www/greenpr.ru/bitrix/modules/iblock/admin/menu.php |
<?
##############################################
# Bitrix Site Manager #
# Copyright (c) 2002-2007 Bitrix #
# http://www.bitrixsoft.com #
# mailto:admin@bitrixsoft.com #
##############################################
if(!is_object($GLOBALS["USER_FIELD_MANAGER"]))
return false;
CModule::IncludeModule("iblock");
IncludeModuleLangFile(__FILE__);
function _get_elements_menu($arType, $arIBlock, $SECTION_ID)
{
static $urlElementAdminPage = false;
if(!$urlElementAdminPage)
$urlElementAdminPage = COption::GetOptionString("iblock","combined_list_mode")=="Y"?"iblock_list_admin.php":"iblock_element_admin.php";
$SECTION_ID = intval($SECTION_ID);
if($SECTION_ID <= 0)
{
return array(
"text" => htmlspecialcharsex($arIBlock["ELEMENTS_NAME"]),
"url" => $urlElementAdminPage."?type=".$arType["ID"]."&lang=".LANG."&IBLOCK_ID=".$arIBlock["ID"]."&find_el_y=Y",
"more_url" => array(
$urlElementAdminPage."?".$arIBlock["URL_PART"]."&find_el_y=Y",
$urlElementAdminPage."?".$arIBlock["URL_PART"]."&find_section_section=-1",
"iblock_element_edit.php?".$arIBlock["URL_PART"]."&find_section_section=-1",
),
"title" => GetMessage("IBLOCK_MENU_ALL_EL"),
"icon" => "iblock_menu_icon_elements",
"page_icon" => "iblock_page_icon_elements",
"skip_chain" => true,
"items_id" => "menu_iblock_".$arType["ID"]."_".$arIBlock["ID"],
"module_id" => "iblock",
"items" => array(),
);
}
else
{
return array(
"text" => htmlspecialcharsex($arIBlock["ELEMENTS_NAME"]),
"url" => $urlElementAdminPage."?IBLOCK_ID=".$arIBlock["ID"]."&type=".$arType["ID"]."&lang=".LANG."&find_section_section=".$SECTION_ID,
"more_url" => Array(
"iblock_element_edit.php?".$arIBlock["URL_PART"]."&find_section_section=".$SECTION_ID,
$urlElementAdminPage."?".$arIBlock["URL_PART"]."&find_section_section=".$SECTION_ID,
$urlElementAdminPage."?".$arIBlock["URL_PART"]."&find_section_section=".$SECTION_ID,
),
"title" => GetMessage("IBLOCK_MENU_SEC_EL"),
"icon" => "iblock_menu_icon_elements",
"page_icon" => "iblock_page_icon_elements",
"skip_chain" => true,
"items_id" => "menu_iblock_el_".$arType["ID"]."_".$arIBlock["ID"],
"module_id" => "iblock",
"items" => array(),
);
}
}
function _get_sections_menu($arType, $arIBlock, $DEPTH_LEVEL, $SECTION_ID, $arSectionsChain = false)
{
//Determine opened sections
if($arSectionsChain === false)
{
$arSectionsChain = array();
if(isset($_REQUEST['admin_mnu_menu_id']))
{
$menu_id = "menu_iblock_/".$arType["ID"]."/".$arIBlock["ID"]."/";
if(strncmp($_REQUEST['admin_mnu_menu_id'], $menu_id, strlen($menu_id)) == 0)
{
$rsSections = CIBlockSection::GetNavChain($arIBlock["ID"], substr($_REQUEST['admin_mnu_menu_id'], strlen($menu_id)));
while($arSection = $rsSections->Fetch())
$arSectionsChain[$arSection["ID"]] = $arSection["ID"];
}
}
if((intval($_REQUEST["find_section_section"]) > 0) && ($_REQUEST["IBLOCK_ID"] == $arIBlock["ID"]))
{
$rsSections = CIBlockSection::GetNavChain($arIBlock["ID"], $_REQUEST["find_section_section"]);
while($arSection = $rsSections->Fetch())
$arSectionsChain[$arSection["ID"]] = $arSection["ID"];
}
}
static $urlSectionAdminPage = false;
if(!$urlSectionAdminPage)
$urlSectionAdminPage = COption::GetOptionString("iblock","combined_list_mode")=="Y"?"iblock_list_admin.php":"iblock_section_admin.php";
$arSections = Array();
if(COption::GetOptionString("iblock","combined_list_mode") != "Y")
$arSections[] = _get_elements_menu($arType, $arIBlock, $SECTION_ID);
$rsSections = CIBlockSection::GetList(
Array("left_margin"=>"ASC"),
Array(
"IBLOCK_ID" => $arIBlock["ID"],
"SECTION_ID" => $SECTION_ID,
)
);
$limit = COption::GetOptionInt("iblock", "iblock_menu_max_sections");
while($arSection = $rsSections->Fetch())
{
if(($limit > 0) && (count($arSections) >= $limit))
{
$arSections[] = Array(
"text" => GetMessage("IBLOCK_MENU_ALL_OTH"),
"url" => $urlSectionAdminPage."?type=".$arType["ID"]."&lang=".LANG."&IBLOCK_ID=".$arIBlock["ID"]."&find_section_section=".IntVal($arSection["IBLOCK_SECTION_ID"]),
"more_url" => Array(
$urlSectionAdminPage."?".$arIBlock["URL_PART"]."&find_section_section=".IntVal($arSection["IBLOCK_SECTION_ID"]),
$urlSectionAdminPage."?".$arIBlock["URL_PART"],
"iblock_section_edit.php?".$arIBlock["URL_PART"],
"iblock_element_edit.php?IBLOCK_ID=".$arIBlock["ID"]."&type=".$arType["ID"],
"iblock_history_list.php?IBLOCK_ID=".$arIBlock["ID"]."&type=".$arType["ID"],
),
"title" => GetMessage("IBLOCK_MENU_ALL_OTH_TITLE"),
"icon" => "iblock_menu_icon_sections",
"page_icon" => "iblock_page_icon_sections",
"skip_chain" => true,
"items_id" => "menu_iblock_/".$arType["ID"]."/".$arIBlock["ID"]."/".$arSection["ID"],
"module_id" => "iblock",
"items" => Array()
);
break;
}
$arSectionTmp = array(
"text" => htmlspecialcharsex($arSection["NAME"]),
"url" => $urlSectionAdminPage."?type=".$arType["ID"]."&lang=".LANG."&IBLOCK_ID=".$arIBlock["ID"]."&find_section_section=".$arSection["ID"],
"more_url" => Array(
$urlSectionAdminPage."?".$arIBlock["URL_PART"]."&find_section_section=".$arSection["ID"],
"iblock_section_edit.php?".$arIBlock["URL_PART"]."&find_section_section=".$arSection["ID"],
"iblock_element_edit.php?IBLOCK_ID=".$arIBlock["ID"]."&type=".$arType["ID"]."&find_section_section=".$arSection["ID"],
"iblock_history_list.php?IBLOCK_ID=".$arIBlock["ID"]."&type=".$arType["ID"]."&find_section_section=".$arSection["ID"],
),
"title" => htmlspecialcharsex($arSection["NAME"]),
"icon" => "iblock_menu_icon_sections",
"page_icon" => "iblock_page_icon_sections",
"skip_chain" => true,
"dynamic" =>
(COption::GetOptionString("iblock","combined_list_mode") != "Y") ||
(($arSection["RIGHT_MARGIN"] - $arSection["LEFT_MARGIN"]) > 1),
"items_id" => "menu_iblock_/".$arType["ID"]."/".$arIBlock["ID"]."/".$arSection["ID"],
"module_id" => "iblock",
"items" => array(),
);
if(array_key_exists($arSection["ID"], $arSectionsChain))
{
$arSectionTmp["items"] = _get_sections_menu($arType, $arIBlock, $DEPTH_LEVEL+1, $arSection["ID"], $arSectionsChain);
}
elseif(method_exists($GLOBALS["adminMenu"], "IsSectionActive"))
{
if($GLOBALS["adminMenu"]->IsSectionActive("menu_iblock_/".$arType["ID"]."/".$arIBlock["ID"]."/".$arSection["ID"]))
$arSectionTmp["items"] = _get_sections_menu($arType, $arIBlock, $DEPTH_LEVEL+1, $arSection["ID"], $arSectionsChain);
}
$arSections[] = $arSectionTmp;
}
return $arSections;
}
function _get_iblocks_menu($arType, $urlSectionAdminPage, $urlElementAdminPage)
{
$arIBlocks = array();
foreach($arType["IBLOCKS"]["W"] as $arIBlock)
{
if($arType["SECTIONS"]=='Y')
{
if($_REQUEST["IBLOCK_ID"] == $arIBlock["ID"])
{
$arItems = _get_sections_menu($arType, $arIBlock, 1, 0);
}
elseif(strpos($_REQUEST['admin_mnu_menu_id'], "menu_iblock_/".$arType["ID"]."/".$arIBlock["ID"]) !== false)
{
$arItems = _get_sections_menu($arType, $arIBlock, 1, 0);
}
elseif(method_exists($GLOBALS["adminMenu"], "IsSectionActive"))
{
if($GLOBALS["adminMenu"]->IsSectionActive("menu_iblock_/".$arType["ID"]."/".$arIBlock["ID"]))
$arItems = _get_sections_menu($arType, $arIBlock, 1, 0);
else
$arItems = false;
}
else
{
$arItems = _get_sections_menu($arType, $arIBlock, 1, 0);
}
$arIBlocks[] = array(
"text" => $arIBlock["NAME~"],
"url" => $urlSectionAdminPage."?type=".$arType["ID"]."&lang=".LANG."&IBLOCK_ID=".$arIBlock["ID"]."&find_section_section=0",
"more_url" => array(
$urlSectionAdminPage."?".$arIBlock["URL_PART"]."&find_section_section=0",
$urlSectionAdminPage."?".$arIBlock["URL_PART"]."&find_section_section=-1",
"iblock_section_edit.php?IBLOCK_ID=".$arIBlock["ID"]."&type=".$arType["ID"]."&find_section_section=-1",
),
"title" => $arIBlock["NAME~"],
"icon" => "iblock_menu_icon_iblocks",
"page_icon" => "iblock_page_icon_iblocks",
"skip_chain" => true,
"module_id" => "iblock",
"items_id" => "menu_iblock_/".$arType["ID"]."/".$arIBlock["ID"],
"module_id" => "iblock",
"dynamic" => true,
"items" => $arItems,
);
}
else
{
$arIBlocks[] = array(
"text" => $arIBlock["NAME~"],
"url" => $urlElementAdminPage."?type=".$arType["ID"]."&lang=".LANG."&IBLOCK_ID=".$arIBlock["ID"],
"more_url" => Array(
"iblock_element_edit.php?".$arIBlock["URL_PART"],
"iblock_history_list.php?".$arIBlock["URL_PART"],
$urlElementAdminPage."?".$arIBlock["URL_PART"],
),
"title" => $arIBlock["NAME~"],
"items_id" => "menu_iblock_/".$arType["ID"]."/".$arIBlock["ID"],
"icon" => "iblock_menu_icon_iblocks",
"page_icon" => "iblock_page_icon_iblocks",
"skip_chain" => true,
"module_id" => "iblock",
"items" => Array(),
);
}
}
return $arIBlocks;
}
function _get_iblocks_admin_menu($arType)
{
$arIBlocks = Array();
foreach($arType["IBLOCKS"]["X"] as $arIBlock)
{
$arIBlockTmp = array(
"text" => $arIBlock["NAME~"],
"url" => "iblock_edit.php?type=".$arType["ID"]."&lang=".LANG."&ID=".$arIBlock["ID"]."&admin=Y",
"more_url" => Array(
"iblock_bizproc_workflow_edit.php?document_type=iblock_".$arIBlock["ID"]."&lang=".LANG,
"iblock_bizproc_workflow_admin.php?document_type=iblock_".$arIBlock["ID"]."&lang=".LANG,
"iblock_edit.php?".$arIBlock["URL_PART"]."&admin=Y",
),
"title" => $arIBlock["NAME~"],
"items_id" => "menu_iblock_admin_/".$arType["ID"]."/".$arIBlock["ID"],
"icon" => "iblock_menu_icon_iblocks",
"page_icon" => "iblock_page_icon_iblocks",
"skip_chain" => true,
"module_id" => "iblock",
"items" => false,
);
$arIBlocks[] = $arIBlockTmp;
}
return $arIBlocks;
}
function _get_types_admin_menu($arTypes, $bUserIsAdmin)
{
$arResult = array();
$obt_index = 0;
foreach($arTypes as $arType)
{
if($bUserIsAdmin || count($arType["IBLOCKS"]["X"]))
{
$arResult[] = array(
"text" => $arType["NAME~"],
"url" => "iblock_admin.php?type=".$arType["ID"]."&lang=".LANG."&admin=Y",
"more_url" => Array(
"iblock_admin.php?type=".$arType["ID"]."&lang=".LANG."&admin=Y",
),
"title" => $arType["NAME~"],
"parent_menu" => "global_menu_content",
"sort" => 200 + $obt_index,
"icon" => "iblock_menu_icon_types",
"page_icon" => "iblock_page_icon_settings",
"module_id" => "iblock",
"items_id" => "menu_iblock_admin_/".$arType["ID"],
"dynamic" => true,
"items" => _get_iblocks_admin_menu($arType),
);
$obt_index++;
}
}
return $arResult;
}
$aMenu = Array();
//Read all necessary data from database
global $USER;
$bUserIsAdmin = $USER->IsAdmin();
$urlSectionAdminPage = COption::GetOptionString("iblock","combined_list_mode")=="Y"?"iblock_list_admin.php":"iblock_section_admin.php";
$urlElementAdminPage = COption::GetOptionString("iblock","combined_list_mode")=="Y"?"iblock_list_admin.php":"iblock_element_admin.php";
$arTypes = array();
$rsTypes = CIBlockType::GetList(Array("SORT"=>"ASC"));
while($arType = $rsTypes->Fetch())
{
$arType = CIBlockType::GetByIDLang($arType["ID"], LANG);
$arTypes[$arType["ID"]] = array(
"ID" => $arType["ID"],
"NAME" => $arType["NAME"],
"NAME~" => $arType["NAME"],
"ELEMENT_NAME" => $arType["ELEMENT_NAME"],
"SECTIONS" => $arType["SECTIONS"],
"IBLOCKS" => array(
"W" => array(),
"X" => array(),
),
);
}
$bHasXRight = false;
$rsIBlocks = CIBlock::GetList(Array("SORT"=>"asc", "NAME"=>"ASC"), array("MIN_PERMISSION" => "X"));
while($arIBlock = $rsIBlocks->Fetch())
{
$arTypes[$arIBlock["IBLOCK_TYPE_ID"]]["IBLOCKS"]["X"][] = array(
"ID" => $arIBlock["ID"],
"NAME" => $arIBlock["NAME"],
"NAME~" => htmlspecialcharsex($arIBlock["NAME"]),
"ELEMENTS_NAME" => $arIBlock["ELEMENTS_NAME"],
"URL_PART" => "type=".$arIBlock["IBLOCK_TYPE_ID"]."&lang=".LANG."&IBLOCK_ID=".$arIBlock["ID"],
);
$bHasXRight = true;
}
$bHasWRight = false;
$rsIBlocks = CIBlock::GetList(Array("SORT"=>"asc", "NAME"=>"ASC"), array("MIN_PERMISSION" => (IsModuleInstalled("workflow")? "U": "W")));
while($arIBlock = $rsIBlocks->Fetch())
{
if(!$arIBlock["ELEMENTS_NAME"])
$arIBlock["ELEMENTS_NAME"] = $arTypes[$arIBlock["IBLOCK_TYPE_ID"]]["ELEMENT_NAME"]? $arTypes[$arIBlock["IBLOCK_TYPE_ID"]]["ELEMENT_NAME"]: GetMessage("IBLOCK_MENU_ELEMENTS");
$arTypes[$arIBlock["IBLOCK_TYPE_ID"]]["IBLOCKS"]["W"][] = array(
"ID" => $arIBlock["ID"],
"NAME" => $arIBlock["NAME"],
"NAME~" => htmlspecialcharsex($arIBlock["NAME"]),
"ELEMENTS_NAME" => $arIBlock["ELEMENTS_NAME"],
"URL_PART" => "type=".$arIBlock["IBLOCK_TYPE_ID"]."&lang=".LANG."&IBLOCK_ID=".$arIBlock["ID"],
);
$bHasWRight = true;
}
//Build menu items
$obt_index = 0;
foreach($arTypes as $type_id => $arType)
{
if(count($arType["IBLOCKS"]["W"]))
{
$aMenu[] = array(
"text" => $arType["NAME~"],
"url" => "iblock_admin.php?type=".$type_id."&lang=".LANG."&admin=N",
"more_url" => Array(
"iblock_admin.php?type=".$type_id."&lang=".LANG."&admin=N",
),
"title" => $arType["NAME~"],
"parent_menu" => "global_menu_content",
"sort" => 200 + ($obt_index++),
"icon" => "iblock_menu_icon_types",
"page_icon" => "iblock_page_icon_types",
"module_id" => "iblock",
"items_id" => "menu_iblock_/".$type_id,
"dynamic" => true,
"items" => _get_iblocks_menu($arType, $urlSectionAdminPage, $urlElementAdminPage),
);
}
}
if($bUserIsAdmin || $bHasWRight || $bHasXRight)
{
$arItems = array();
if($bHasWRight)
{
$arItems[] = array(
"text" => GetMessage("IBLOCK_MENU_EXPORT"),
"title" => GetMessage("IBLOCK_MENU_EXPORT_ALT"),
"url" => "iblock_data_export.php?lang=".LANG,
"items_id" => "iblock_export",
"module_id" => "iblock",
"items" => array(
array(
"text" => "CSV",
"url" => "iblock_data_export.php?lang=".LANG,
"module_id" => "iblock",
"more_url" => Array("iblock_data_export.php"),
),
array(
"text" => "XML",
"url" => "iblock_xml_export.php?lang=".LANG,
"module_id" => "iblock",
"more_url" => Array("iblock_xml_export.php"),
),
),
);
}
if($bUserIsAdmin)
{
$arItems[] = array(
"text" => GetMessage("IBLOCK_MENU_IMPORT"),
"title" => GetMessage("IBLOCK_MENU_IMPORT_ALT"),
"url" => "iblock_data_import.php?lang=".LANG,
"items_id" => "iblock_import",
"module_id" => "iblock",
"items" => array(
array(
"text" => "CSV",
"url" => "iblock_data_import.php?lang=".LANG,
"module_id" => "iblock",
"more_url" => Array("iblock_data_import.php"),
),
array(
"text" => "XML",
"url" => "iblock_xml_import.php?lang=".LANG,
"module_id" => "iblock",
"more_url" => Array("iblock_xml_import.php"),
),
),
);
}
elseif($bHasWRight)
{
$arItems[] = array(
"text" => GetMessage("IBLOCK_MENU_IMPORT"),
"title" => GetMessage("IBLOCK_MENU_IMPORT_ALT"),
"url" => "iblock_data_import.php?lang=".LANG,
"items_id" => "iblock_import",
"module_id" => "iblock",
"items" => array(
array(
"text" => "CSV",
"url" => "iblock_data_import.php?lang=".LANG,
"module_id" => "iblock",
"more_url" => Array("iblock_data_import.php"),
),
),
);
}
if($bUserIsAdmin || $bHasXRight)
{
$arItems[] = array(
"text" => GetMessage("IBLOCK_MENU_ITYPE"),
"url" => "iblock_type_admin.php?lang=".LANG,
"more_url" => Array("iblock_type_edit.php"),
"module_id" => "iblock",
"title" => GetMessage("IBLOCK_MENU_ITYPE_TITLE"),
"items_id" => "iblock_admin",
"items" => _get_types_admin_menu($arTypes, $bUserIsAdmin),
);
}
$aMenu[] = array(
"parent_menu" => "global_menu_content",
"section" => "iblock",
"sort" => 300,
"text" => GetMessage("IBLOCK_MENU_SEPARATOR"),
"title" => GetMessage("IBLOCK_MENU_SETTINGS_TITLE"),
"icon" => "iblock_menu_icon_settings",
"page_icon" => "iblock_page_icon_settings",
"url" => "iblock_index.php?lang=".LANG,
"items_id" => "menu_iblock",
"module_id" => "iblock",
"items" => $arItems,
);
}
return $aMenu;
?>