/*
##############################################
# Bitrix: SiteManager #
# Copyright (c) 2004 Bitrix #
# http://www.bitrix.ru #
# mailto:admin@bitrix.ru #
##############################################
*/
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/prolog.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/include.php");
$bDemo = (CTicket::IsDemo()) ? "Y" : "N";
$bAdmin = (CTicket::IsAdmin()) ? "Y" : "N";
if($bAdmin!="Y" && $bDemo!="Y") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/include.php");
IncludeModuleLangFile(__FILE__);
InitSorting();
$err_mess = "File: ".__FILE__."
Line: ";
/***************************************************************************
Функции
****************************************************************************/
/***************************************************************************
Обработка GET | POST
****************************************************************************/
if (
!isset($find_type) ||
mb_strlen($find_type) < 0 ||
!in_array($find_type, Array("C","K","S","M","F","SR", "D"))
)
$find_type = "C";
$sTableID = "t_dict_list_".mb_strtolower($find_type);
$oSort = new CAdminSorting($sTableID, "s_c_sort", "asc");// инициализация сортировки
$lAdmin = new CAdminList($sTableID, $oSort);// инициализация списка
$oFilter = new CAdminFilter(
$sTableID."_filter_id",
array(
GetMessage("SUP_F_ID"),
GetMessage("SUP_F_SITE"),
//GetMessage("SUP_F_TYPE"),
GetMessage("SUP_F_NAME"),
GetMessage("SUP_F_DESCR"),
GetMessage("SUP_F_SID"),
GetMessage("SUP_F_RESPONSIBLE"),
GetMessage("SUP_F_DEFAULT"),
)
);
$arFilterFields = Array(
"find",
"find_type_ex",
"find_id",
"find_id_exact_match",
"find_site",
//"find_type",
"find_name",
"find_name_exact_match",
"find_descr",
"find_descr_exact_match",
"find_sid",
"find_sid_exact_match",
"find_responsible",
"find_responsible_exact_match",
"find_responsible_id",
"find_default"
);
$lAdmin->InitFilter($arFilterFields);//инициализация фильтра
InitBVar($find_id_exact_match);
InitBVar($find_name_exact_match);
InitBVar($find_sid_exact_match);
InitBVar($find_responsible_exact_match);
$arFilter = Array(
"ID" => $find_id,
"ID_EXACT_MATCH" => $find_id_exact_match,
"SITE" => $find_site,
"TYPE" => $find_type,
"NAME" => ($find!="" && $find_type_ex == "name"? $find: $find_name),
"NAME_EXACT_MATCH" => $find_name_exact_match,
"DESCR" => ($find!="" && $find_type_ex == "descr"? $find: $find_descr),
"DESCR_EXACT_MATCH" => $find_descr_exact_match,
"SID" => $find_sid,
"SID_EXACT_MATCH" => $find_sid_exact_match,
"RESPONSIBLE_ID" => $find_responsible_id,
"RESPONSIBLE" => $find_responsible,
"RESPONSIBLE_EXACT_MATCH" => $find_responsible_exact_match,
"DEFAULT" => $find_default
);
if ($bAdmin=="Y" && $lAdmin->EditAction()) //если идет сохранение со списка
{
foreach($FIELDS as $ID => $arFields)
{
$ID = intval($ID);
if(!$lAdmin->IsUpdated($ID))
continue;
$arFields["C_SORT"] = intval($arFields["C_SORT"]);
if (trim($arFields["NAME"]) <> '')
{
$arUpdate = array(
'C_SORT' => $arFields['C_SORT'],
'NAME' => $arFields['NAME']
);
if (!CTicketDictionary::Update($ID, $arUpdate))
{
$lAdmin->AddUpdateError(str_replace("#ID#", $ID, GetMessage("SUP_ERROR_SAVE")), $ID);
}
}
else
{
$lAdmin->AddUpdateError(str_replace("#ID#", $ID, GetMessage("SUP_FORGOT_NAME")), $ID);
}
}
}
if($bAdmin=="Y" && $arID = $lAdmin->GroupAction())
{
if($_REQUEST['action_target']=='selected')
{
$isFiltered = null;
$rsData = CTicketDictionary::GetList('', '', $arFilter);
while($arRes = $rsData->Fetch())
$arID[] = $arRes['ID'];
}
foreach($arID as $ID)
{
if($ID == '')
continue;
$ID = intval($ID);
switch($_REQUEST['action'])
{
case "delete":
@set_time_limit(0);
CTicketDictionary::Delete($ID);
break;
}
}
}
// если была нажата кнопка "Сохранить изменения"
if ($find_type=="C" ||
$find_type=="K" ||
$find_type=="SR" ||
$find_type=="NOT_REF" ||
$find_type == '') $show_responsible_column = "Y";
global $by, $order;
$rsData = CTicketDictionary::GetList($by, $order, $arFilter);
$rsData = new CAdminResult($rsData, $sTableID);
$rsData->NavStart();
// установка строки навигации
$lAdmin->NavText($rsData->GetNavPrint(GetMessage("SUP_PAGES")));
//$tdic = CTicketDictionary::GetList($by, $order, $arFilter, $is_filtered);
$APPLICATION->SetTitle(GetMessage("SUP_TICKETS_DIC_TITLE"));
$arHeaders = Array();
$arHeaders[] = Array("id"=>"ID", "content"=>"ID", "default"=>true, "sort" => "s_id");
$arHeaders[] = Array("id"=>"C_SORT", "content"=>GetMessage("SUP_SORT"), "default"=>true, "sort" => "s_c_sort");
$arHeaders[] = Array("id"=>"C_SITE", "content"=>GetMessage("SUP_SITE"), "default"=>true,);
$arHeaders[] = Array("id"=>"NAME", "content"=>GetMessage("SUP_NAME"), "default"=>true,"sort" => "s_name");
if ($show_responsible_column=="Y")
$arHeaders[] = Array("id"=>"RESPONSIBLE_USER_ID", "content"=>GetMessage("SUP_RESPONSIBLE"), "default"=>true,"sort" => "s_responsible");
$lAdmin->AddHeaders($arHeaders);
// построение списка
$arRows = array();
$arSiteArrayForAllDict = CTicketDictionary::GetSiteArrayForAllDictionaries();
$arRespUserIDs = array();
while($arRes = $rsData->Fetch())
{
if(intval($arRes["RESPONSIBLE_USER_ID"])>0)
{
$arRespUserIDs[] = intval($arRes["RESPONSIBLE_USER_ID"]);
}
$row =& $lAdmin->AddRow($arRes["ID"], $arRes);
$arRow = array("objRow" => $row, "arFields" => $arRes);
$row->AddInputField("C_SORT", Array("size"=>"3"));
$str_SITE = "";
if(array_key_exists($arRes["ID"], $arSiteArrayForAllDict))
{
$arrSITE = $arSiteArrayForAllDict[$arRes["ID"]];
foreach($arrSITE as $sid)
{
$sidS = htmlspecialcharsbx($sid);
$str_SITE .= ($str_SITE == "" ? "" : " / ") . '' . $sidS . '';
}
}
$row->AddViewField("C_SITE", $str_SITE);
$row->AddInputField("NAME", Array("size"=>"35"));
$arActions = Array();
$arActions[] = array(
"ICON"=>"edit",
"DEFAULT" => "Y",
"TEXT"=>GetMessage("SUP_EDIT"),
"ACTION"=>$lAdmin->ActionRedirect("ticket_dict_edit.php?find_type=" . $arRes["C_TYPE"] . "&ID=" . $arRes["ID"] . "&lang=" . LANG)
);
if ($bAdmin=="Y")
{
$arActions[] = array("SEPARATOR" => true);
$arActions[] = array(
"ICON" => "delete",
"TEXT" => GetMessage("SUP_DELETE"),
"ACTION"=>"if(confirm('" . GetMessage('SUP_DELETE_TDIC_CONF') . "')) " . $lAdmin->ActionDoGroup($arRes["ID"], "delete", "find_type=" . $arRes["C_TYPE"]),
);
}
$row->AddActions($arActions);
$arRows[] = $arRow;
}
$arRespUsersProp = array();
$arRespUserIDs = array_unique($arRespUserIDs);
$strUsers = implode("|", $arRespUserIDs);
$rs = CUser::GetList('id', 'asc', array( "ID" => $strUsers), array("FIELDS"=>array("NAME","LAST_NAME","LOGIN","ID")));
while($ar = $rs->Fetch())
{
$arRespUsersProp[$ar["ID"]] = $ar;
}
// Еще один проход для ответственных пользователей
foreach($arRows as $k => $v)
{
$str = " ";
$rUserID = intval($v["arFields"]["RESPONSIBLE_USER_ID"]);
if ($rUserID > 0 && array_key_exists($rUserID, $arRespUsersProp)):
$arUserPr = $arRespUsersProp[$rUserID];
$str = '[' .
$rUserID.'] (' . $arUserPr["LOGIN"] . ') ' . $arUserPr["NAME"] . " " . $arUserPr["LAST_NAME"];
endif;
$v["objRow"]->AddViewField("RESPONSIBLE_USER_ID", $str);
}
// "подвал" списка
$lAdmin->AddFooter(
array(
array("title"=>GetMessage("MAIN_ADMIN_LIST_SELECTED"), "value"=>$rsData->SelectedRowsCount()),
array("counter"=>true, "title"=>GetMessage("MAIN_ADMIN_LIST_CHECKED"), "value"=>"0"),
)
);
if ($bAdmin=="Y")
{
$lAdmin->AddGroupActionTable(Array(
"delete"=>GetMessage("MAIN_ADMIN_LIST_DELETE"),
)
);
}
$aContext = array(
array(
"ICON"=> "btn_new",
"TEXT"=> GetMessage("SUP_ADD"),
//"LINK"=>"ticket_dict_edit.php?lang=".LANG."&find_type=".htmlspecialcharsbx($find_type),
"TITLE"=>GetMessage("SUP_ADD"),
"MENU" => Array(
Array(
"TEXT" => GetMessage("SUP_ADD_CATEGORY"),
"ACTION" => "window.location='/bitrix/admin/ticket_dict_edit.php?lang=".LANG."&find_type=C';"
),
Array(
"TEXT" => GetMessage("SUP_ADD_CRITICALITY"),
"ACTION" => "window.location='/bitrix/admin/ticket_dict_edit.php?lang=".LANG."&find_type=K';"
),
Array(
"TEXT" => GetMessage("SUP_ADD_STATUS"),
"ACTION" => "window.location='/bitrix/admin/ticket_dict_edit.php?lang=".LANG."&find_type=S';"
),
Array(
"TEXT" => GetMessage("SUP_ADD_MARK"),
"ACTION" => "window.location='/bitrix/admin/ticket_dict_edit.php?lang=".LANG."&find_type=M';"
),
Array(
"TEXT" => GetMessage("SUP_ADD_FUA"),
"ACTION" => "window.location='/bitrix/admin/ticket_dict_edit.php?lang=".LANG."&find_type=F';"
),
Array(
"TEXT" => GetMessage("SUP_ADD_SOURCE"),
"ACTION" => "window.location='/bitrix/admin/ticket_dict_edit.php?lang=".LANG."&find_type=SR';"
),
Array(
"TEXT" => GetMessage("SUP_ADD_DIFFICULTY"),
"ACTION" => "window.location='/bitrix/admin/ticket_dict_edit.php?lang=".LANG."&find_type=D';"
),
)
),
);
$lAdmin->AddAdminContextMenu($aContext);
$lAdmin->CheckListMode();
require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
?>