%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/iblock/admin/ |
Current File : /home/bitrix/www/bitrix/modules/iblock/admin/iblock_admin.php |
<? require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php"); CModule::IncludeModule("iblock"); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/iblock/prolog.php"); IncludeModuleLangFile(__FILE__); $arIBTYPE = CIBlockType::GetByIDLang($type, LANGUAGE_ID); if($arIBTYPE===false) LocalRedirect("/bitrix/admin/iblock_type_admin.php?lang=".LANGUAGE_ID); $bBizproc = CModule::IncludeModule("bizproc"); $bWorkflow = CModule::IncludeModule("workflow"); if($_REQUEST["admin"] == "Y") $sTableID = "tbl_iblock_admin_".md5($type); else $sTableID = "tbl_iblock_".md5($type); $oSort = new CAdminSorting($sTableID, "TIMESTAMP_X", "desc"); $arOrder = (strtoupper($by) === "ID"? array($by => $order): array($by => $order, "ID" => "ASC")); $lAdmin = new CAdminUiList($sTableID, $oSort); $arFilterFields = Array( "find_id", "find_name", "find_lang", "find_active", "find_code", ); $lAdmin->InitFilter($arFilterFields); $arFilter = array( "ID" => $find_id, "ACTIVE" => $find_active, "LID" => $find_lang, "?CODE" => $find_code, "?NAME" => $find_name, "TYPE" => $type, "MIN_PERMISSION" => "U", "CNT_ALL" => "Y", ); /* Prepare data for new filter */ $queryObject = CLang::getList($b = "sort", $o = "asc", array("VISIBLE" => "Y")); $listLang = array(); while($lang = $queryObject->getNext()) $listLang[$lang["LID"]] = $lang["NAME"]; $filterFields = array( array( "id" => "NAME", "name" => GetMessage("IBLOCK_ADM_FILT_NAME"), "filterable" => "?", "quickSearch" => "?", "default" => true ), array( "id" => "LID", "name" => GetMessage("IBLOCK_ADM_FILT_SITE"), "type" => "list", "items" => $listLang, "filterable" => "" ), array( "id" => "ACTIVE", "name" => GetMessage("IBLOCK_ADM_FILT_ACT"), "type" => "list", "items" => array( "Y" => GetMessage("IBLOCK_YES"), "N" => GetMessage("IBLOCK_NO") ), "filterable" => "" ), array( "id" => "CODE", "name" => GetMessage("IBLOCK_FIELD_CODE"), "filterable" => "?" ), ); $arFilter = array( "TYPE" => $type, "MIN_PERMISSION" => "U", "CNT_ALL" => "Y", ); $lAdmin->AddFilter($filterFields, $arFilter); if($lAdmin->EditAction()) { foreach($FIELDS as $ID => $postFields) { $DB->StartTransaction(); $ID = IntVal($ID); if(!$lAdmin->IsUpdated($ID)) continue; if(!CIBlockRights::UserHasRightTo($ID, $ID, "iblock_edit")) continue; $allowedFields = array( "NAME", "SORT", "ACTIVE", "LIST_PAGE_URL", "DETAIL_PAGE_URL", "CANONICAL_PAGE_URL", "CODE", "INDEX_ELEMENT", "WORKFLOW", ); $arFields = array(); foreach ($allowedFields as $fieldId) { if (array_key_exists($fieldId, $postFields)) $arFields[$fieldId] = $postFields[$fieldId]; } $ib = new CIBlock; if(!$ib->Update($ID, $arFields)) { $lAdmin->AddUpdateError(GetMessage("IBLOCK_ADM_SAVE_ERROR", array("#ID#"=>$ID, "#ERROR_TEXT#"=>$ib->LAST_ERROR)), $ID); $DB->Rollback(); } $DB->Commit(); } } if($arID = $lAdmin->GroupAction()) { if($_REQUEST['action_target']=='selected') { $rsIBlocks = CIBlock::GetList($arOrder, $arFilter); while($arRes = $rsIBlocks->Fetch()) $arID[] = $arRes['ID']; } foreach($arID as $ID) { if(strlen($ID)<=0) continue; switch($_REQUEST['action']) { case "delete": if(!CIBlockRights::UserHasRightTo($ID, $ID, "iblock_delete")) break; @set_time_limit(0); $DB->StartTransaction(); $rsIBlock = CIBlock::GetByID($ID); $arIBlock = $rsIBlock->GetNext(); if(!CIBlock::Delete($ID)) { $DB->Rollback(); $lAdmin->AddGroupError(GetMessage("IBLOCK_ADM_DELETE_ERROR"), $ID); } else { if(COption::GetOptionString("iblock", "event_log_iblock", "N") === "Y") { $res_log["NAME"] = $arIBlock["NAME"]; CEventLog::Log( "IBLOCK", "IBLOCK_DELETE", "iblock", $ID, serialize($res_log) ); } } $DB->Commit(); break; case "activate": case "deactivate": if(!CIBlockRights::UserHasRightTo($ID, $ID, "iblock_delete")) break; $ob = new CIBlock(); $arFields = Array("ACTIVE"=>($_REQUEST['action']=="activate"?"Y":"N")); if(!$ob->Update($ID, $arFields)) $lAdmin->AddGroupError(GetMessage("IBLOCK_ADM_UPD_ERROR").$ob->LAST_ERROR, $ID); break; } } } $arHeader = array( array( "id"=>"NAME", "content"=>GetMessage("IBLOCK_ADM_NAME"), "sort"=>"name", "default"=>true, ), array( "id"=>"SORT", "content"=>GetMessage("IBLOCK_ADM_SORT"), "sort"=>"sort", "default"=>true, "align"=>"right", ), array( "id"=>"ACTIVE", "content"=>GetMessage("IBLOCK_ADM_ACTIVE"), "sort"=>"active", "default"=>true, "align"=>"center", ), array( "id"=>"CODE", "content"=>GetMessage("IBLOCK_FIELD_CODE"), "sort"=>"code", ), array( "id"=>"LIST_PAGE_URL", "content"=>GetMessage("IBLOCK_ADM_HEADER_LIST_URL"), ), array( "id"=>"DETAIL_PAGE_URL", "content"=>GetMessage("IBLOCK_ADM_HEADER_DETAIL_URL"), ), array( "id"=>"CANONICAL_PAGE_URL", "content"=>GetMessage("IBLOCK_ADM_HEADER_CANONICAL_PAGE_URL"), ), array( "id"=>"ELEMENT_CNT", "content"=>GetMessage("IBLOCK_ADM_HEADER_EL"), "default"=>true, "align"=>"right", ), ); if($arIBTYPE["SECTIONS"]=="Y") $arHeader[] = array( "id"=>"SECTION_CNT", "content"=>GetMessage("IBLOCK_ADM_HEADER_SECT"), "default"=>true, "align"=>"right", ); $arHeader[] = array( "id"=>"LID", "content"=>GetMessage("IBLOCK_ADM_LANG"), "sort"=>"lid", "default"=>true, "align"=>"left", ); $arHeader[] = array( "id"=>"INDEX_ELEMENT", "content"=>GetMessage("IBLOCK_ADM_HEADER_TOINDEX"), ); if($bWorkflow) $arHeader[] = array( "id"=>"WORKFLOW", "content"=>GetMessage("IBLOCK_ADM_HEADER_WORKFLOW"), ); $arHeader[] = array( "id"=>"TIMESTAMP_X", "content"=>GetMessage("IBLOCK_ADM_TIMESTAMP"), "sort"=>"timestamp_x", "default"=>true, ); $arHeader[] = array( "id"=>"ID", "content"=>"ID", "sort"=>"id", "default"=>true, "align"=>"right", ); if($bBizproc && IsModuleInstalled("bizprocdesigner")) $arHeader[] = array( "id"=>"WORKFLOW_TEMPLATES", "content"=>GetMessage("IBLOCK_ADM_HEADER_BIZPROC"), "default"=>true, "align"=>"right", ); $lAdmin->AddHeaders($arHeader); $rsIBlocks = CIBlock::GetList($arOrder, $arFilter, false); $rsIBlocks = new CAdminUiResult($rsIBlocks, $sTableID); $rsIBlocks->NavStart(); $lAdmin->SetNavigationParams($rsIBlocks); while($dbrs = $rsIBlocks->NavNext(true, "f_")) { if( $_REQUEST["admin"] == "Y" && CIBlockRights::UserHasRightTo($f_ID, $f_ID, "iblock_edit") ) { $row =& $lAdmin->AddRow($f_ID, $dbrs, 'iblock_edit.php?ID='.$f_ID.'&type='.htmlspecialcharsbx($type).'&lang='.LANGUAGE_ID.'&admin='.($_REQUEST["admin"]=="Y"? "Y": "N"), GetMessage("IBLOCK_ADM_TO_EDIT")); } else { if($arIBTYPE["SECTIONS"]=="Y") $row =& $lAdmin->AddRow($f_ID, $dbrs, CIBlock::GetAdminSectionListLink($f_ID, array('find_section_section'=>0)), GetMessage("IBLOCK_ADM_TO_EL_LIST")); else $row =& $lAdmin->AddRow($f_ID, $dbrs, CIBlock::GetAdminElementListLink($f_ID, array('find_section_section'=>-1)), GetMessage("IBLOCK_ADM_TO_EL_LIST")); } if(!strlen($f_SECTIONS_NAME)) $f_SECTIONS_NAME = $arIBTYPE["SECTION_NAME"]? htmlspecialcharsbx($arIBTYPE["SECTION_NAME"]): GetMessage("IBLOCK_ADM_SECTIONS"); if(!$f_ELEMENTS_NAME) $f_ELEMENTS_NAME = $arIBTYPE["ELEMENT_NAME"]? htmlspecialcharsbx($arIBTYPE["ELEMENT_NAME"]): GetMessage("IBLOCK_ADM_ELEMENTS"); $f_LID = ''; $db_LID = CIBlock::GetSite($f_ID); while($ar_LID = $db_LID->Fetch()) $f_LID .= ($f_LID!=""?" / ":"").htmlspecialcharsbx($ar_LID["LID"]); $row->AddViewField("LID", $f_LID); if( $_REQUEST["admin"] == "Y" && CIBlockRights::UserHasRightTo($f_ID, $f_ID, "iblock_edit") ) { $row->AddViewField("ID", $f_ID); $row->AddInputField("NAME", array("size"=>"35")); $row->AddViewField("NAME", '<a href="iblock_edit.php?ID='.$f_ID.'&type='.htmlspecialcharsbx($type).'&lang='.LANGUAGE_ID.'&admin='.($_REQUEST["admin"]=="Y"? "Y": "N").'" title="'.GetMessage("IBLOCK_ADM_TO_EDIT").'">'.$f_NAME.'</a>'); $row->AddInputField("SORT", array("size"=>"3")); $row->AddCheckField("ACTIVE"); $row->AddInputField("CODE"); $row->AddInputField("LIST_PAGE_URL"); $row->AddInputField("DETAIL_PAGE_URL"); $row->AddInputField("CANONICAL_PAGE_URL"); $row->AddCheckField("INDEX_ELEMENT"); if($bWorkflow) $row->AddCheckField("WORKFLOW"); } else { if($arIBTYPE["SECTIONS"]=="Y") $row->AddViewField("NAME", '<a href="'.htmlspecialcharsbx(CIBlock::GetAdminSectionListLink($f_ID , array('find_section_section'=>0))).'" title="'.GetMessage("IBLOCK_ADM_TO_SECTLIST").'">'.$f_NAME.'</a>'); else $row->AddViewField("NAME", '<a href="'.htmlspecialcharsbx(CIBlock::GetAdminElementListLink($f_ID , array('find_section_section'=>-1))).'" title="'.GetMessage("IBLOCK_ADM_TO_EL_LIST").'">'.$f_NAME.'</a>'); $row->AddCheckField("ACTIVE", false); $row->AddCheckField("INDEX_ELEMENT", false); if($bWorkflow) $row->AddCheckField("WORKFLOW", false); } if(in_array("ELEMENT_CNT", $lAdmin->GetVisibleHeaderColumns())) { $f_ELEMENT_CNT = CIBlock::GetElementCount($f_ID); $row->AddViewField("ELEMENT_CNT", '<a href="'.htmlspecialcharsbx(CIBlock::GetAdminElementListLink($f_ID, array('find_section_section'=>-1))).'" title="'.GetMessage("IBLOCK_ADM_TO_ELLIST").'">'.$f_ELEMENT_CNT.'</a>'); } if($arIBTYPE["SECTIONS"]=="Y" && in_array("SECTION_CNT", $lAdmin->GetVisibleHeaderColumns())) $row->AddViewField("SECTION_CNT", '<a href="'.htmlspecialcharsbx(CIBlock::GetAdminSectionListLink($f_ID, array())).'" title="'.GetMessage("IBLOCK_ADM_TO_SECTLIST").'">'.IntVal(CIBlockSection::GetCount(array("IBLOCK_ID"=>$f_ID))).'</a>'); if( $bBizproc && $dbrs["BIZPROC"] == "Y" && in_array("WORKFLOW_TEMPLATES", $lAdmin->GetVisibleHeaderColumns()) && IsModuleInstalled("bizprocdesigner") ) { $cnt = CBPDocument::GetNumberOfWorkflowTemplatesForDocumentType( array("iblock", "CIBlockDocument", "iblock_".$f_ID) ); $row->AddViewField("WORKFLOW_TEMPLATES", '<a href="/bitrix/admin/iblock_bizproc_workflow_admin.php?document_type=iblock_'.$f_ID.'&lang='.LANGUAGE_ID.'&back_url_list='.urlencode($APPLICATION->GetCurPageParam("", array())).'">'.$cnt.'</a>'); } $arActions = array(); if( $_REQUEST["admin"] == "Y" && CIBlockRights::UserHasRightTo($f_ID, $f_ID, "iblock_edit") ) { $arActions[] = array( "ICON" => "edit", "TEXT" => GetMessage("MAIN_ADMIN_MENU_EDIT"), "DEFAULT" => $_REQUEST["admin"]=="Y", "ACTION" => $lAdmin->ActionRedirect("iblock_edit.php?ID=".$f_ID."&type=".urlencode($type)."&lang=".LANGUAGE_ID."&admin=".($_REQUEST["admin"]=="Y"? "Y": "N")), ); $arActions[] = array( "ICON" => "list", "TEXT" => GetMessage("IBLOCK_ADM_MENU_PROPERTIES"), "ACTION" => $lAdmin->ActionRedirect("iblock_property_admin.php?IBLOCK_ID=".$f_ID."&lang=".LANGUAGE_ID.($_REQUEST["admin"]=="Y"? "&admin=Y": "&admin=N")), ); } if( $bBizproc && $dbrs["BIZPROC"] == "Y" && CIBlockRights::UserHasRightTo($f_ID, $f_ID, "iblock_edit") && IsModuleInstalled("bizprocdesigner") ) { $arActions[] = array( "ICON"=>"", "TEXT"=>GetMessage("IBLOCK_ADM_MENU_BIZPROC"), "ACTION"=>"window.location='/bitrix/admin/iblock_bizproc_workflow_admin.php?document_type=iblock_".$f_ID."&lang=".LANGUAGE_ID.'&back_url_list='.urlencode($APPLICATION->GetCurPageParam("", array()))."';" ); } if( $_REQUEST["admin"] == "Y" && CIBlockRights::UserHasRightTo($f_ID, $f_ID, "iblock_delete") ) { $arActions[] = array( "ICON"=>"delete", "TEXT"=>GetMessage("MAIN_ADMIN_MENU_DELETE"), "ACTION"=>"if(confirm('".GetMessageJS("IBLOCK_ADM_CONFIRM_DEL_MESSAGE")."')) ".$lAdmin->ActionDoGroup($f_ID, "delete", "&type=".htmlspecialcharsbx($type)."&lang=".LANGUAGE_ID."&admin=".($_REQUEST["admin"]=="Y"? "Y": "N")), ); } if(count($arActions)) $row->AddActions($arActions); } $lAdmin->AddFooter( array( array("title"=>GetMessage("MAIN_ADMIN_LIST_SELECTED"), "value"=>$rsIBlocks->SelectedRowsCount()), array("counter"=>true, "title"=>GetMessage("MAIN_ADMIN_LIST_CHECKED"), "value"=>"0"), ) ); if($USER->IsAdmin() && ($_REQUEST["admin"] == "Y")) { $aContext = array( array( "ICON"=>"btn_new", "TEXT"=>GetMessage("IBLOCK_ADM_TO_ADDIBLOCK"), "LINK"=>"iblock_edit.php?lang=".LANGUAGE_ID."&admin=Y&type=".urlencode($type), "TITLE"=>GetMessage("IBLOCK_ADM_TO_ADDIBLOCK_TITLE") ), ); $lAdmin->AddAdminContextMenu($aContext); $lAdmin->AddGroupActionTable(Array( "edit"=>true, "delete"=>true, "activate"=>GetMessage("MAIN_ADMIN_LIST_ACTIVATE"), "deactivate"=>GetMessage("MAIN_ADMIN_LIST_DEACTIVATE"), )); } else { $lAdmin->AddAdminContextMenu(array()); } $lAdmin->CheckListMode(); $APPLICATION->SetTitle(GetMessage("IBLOCK_ADM_TITLE", array("#IBLOCK_TYPE#" => $arIBTYPE["~NAME"]))); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); $lAdmin->DisplayFilter($filterFields); $lAdmin->DisplayList(); if ($_REQUEST["admin"]!="Y"): echo BeginNote(), GetMessage("IBLOCK_ADM_MANAGE_HINT"), ' <a href="iblock_admin.php?type='.htmlspecialcharsbx($type).'&lang='.LANGUAGE_ID.'&admin=Y">', GetMessage("IBLOCK_ADM_MANAGE_HINT_HREF"), '</a>.', EndNote(); endif; require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");