Your IP : 172.28.240.42


Current Path : /var/www/html/clients/amz.e-nk.ru/bitrix/components/bitrix/main.interface.grid/
Upload File :
Current File : /var/www/html/clients/amz.e-nk.ru/bitrix/components/bitrix/main.interface.grid/component.php

<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
	die();

if(!is_array($arParams["HEADERS"]))
	$arParams["HEADERS"] = array();

if(!is_array($arParams["FOOTER"]))
	$arParams["FOOTER"] = array();

if(!is_array($arParams["FILTER"]))
	$arParams["FILTER"] = array();

if(!is_array($arParams["SORT"]))
	$arParams["SORT"] = array();

if(!is_array($arParams["SORT_VARS"]))
	$arParams["SORT_VARS"] = array();
if(!isset($arParams["SORT_VARS"]["by"]))
	$arParams["SORT_VARS"]["by"] = "by";
if(!isset($arParams["SORT_VARS"]["order"]))
	$arParams["SORT_VARS"]["order"] = "order";

if($arParams["SHOW_FORM_TAG"] <> 'N' && $arParams["SHOW_FORM_TAG"] !== false)
	$arParams["SHOW_FORM_TAG"] = true;
else
	$arParams["SHOW_FORM_TAG"] = false;	
	
if($arParams["ACTION_ALL_ROWS"] === "Y" || $arParams["ACTION_ALL_ROWS"] === true)
	$arParams["ACTION_ALL_ROWS"] = true;
else
	$arParams["ACTION_ALL_ROWS"] = false;

if($arParams["EDITABLE"] === "N" || $arParams["EDITABLE"] === false)
	$arParams["EDITABLE"] = false;
else
	$arParams["EDITABLE"] = true;

$arParams["GRID_ID"] = preg_replace("/[^a-z0-9_]/i", "", $arParams["GRID_ID"]);

$arResult["HEADERS"] = array();

//*********************
//get saved columns and sorting from user settings
//*********************
$aOptions = CUserOptions::GetOption("main.interface.grid", $arParams["GRID_ID"], array());

if(!is_array($aOptions["views"]))
	$aOptions["views"] = array();
if(!is_array($aOptions["filters"]))
	$aOptions["filters"] = array();
if(!array_key_exists("default", $aOptions["views"]))
	$aOptions["views"]["default"] = array("columns"=>"");
if(!isset($aOptions["views"]["default"]["name"]))
	$aOptions["views"]["default"]["name"] = GetMessage("interface_grid_default_view");
if($aOptions["views"]["default"]["sort_by"] == '')
	$aOptions["views"]["default"]["sort_by"] = $arParams["SORT_VARS"]["by"];
if($aOptions["views"]["default"]["sort_order"] == '')
	$aOptions["views"]["default"]["sort_order"] = $arParams["SORT_VARS"]["order"];
if($aOptions["views"]["default"]["page_size"] == '')
	$aOptions["views"]["default"]["page_size"] = 20;
if($aOptions["current_view"] == '' || !array_key_exists($aOptions["current_view"], $aOptions["views"]))
	$aOptions["current_view"] = "default";

$func = create_function('$a, $b', 'return strcmp($a["name"], $b["name"]);');
uasort($aOptions["views"], $func);
//uasort($aOptions["filters"], $func);

$arResult["OPTIONS"] = $aOptions;
$arResult["GLOBAL_OPTIONS"] = CUserOptions::GetOption("main.interface", "global", array(), 0);

if($arResult["GLOBAL_OPTIONS"]["theme_template"][SITE_TEMPLATE_ID] <> '')
	$arResult["GLOBAL_OPTIONS"]["theme"] = $arResult["GLOBAL_OPTIONS"]["theme_template"][SITE_TEMPLATE_ID];

if($arResult["OPTIONS"]["theme"] == '')
	$arResult["OPTIONS"]["theme"] = $arResult["GLOBAL_OPTIONS"]["theme"];

//*********************
// Filter
//*********************

if(is_array($arParams["FILTER_PRESETS"]) && !empty($arParams["FILTER_PRESETS"]))
	$arResult["OPTIONS"]["filters"] = array_merge($arParams["FILTER_PRESETS"], $aOptions["filters"]);

$grid_options = new CGridOptions($arParams["GRID_ID"]);
$arResult["FILTER"] = $grid_options->GetFilter($arParams["FILTER"]);

$aVisRows = array();
$aFilterTmp = explode(",", $aOptions["filter_rows"]);
foreach($aFilterTmp as $field)
	if(($f = trim($field)) <> "")
		$aVisRows[$f] = $f;

$arResult["FILTER_ROWS"] = array();
foreach($arParams["FILTER"] as $field)
{
	if($field["filtered"] == true)
	{
		$arResult["FILTER_ROWS"][$field["id"]] = true;
		continue;
	}

	if(isset($arResult["FILTER"][$field["id"]."_from"]))
		$flt = $arResult["FILTER"][$field["id"]."_from"];
	elseif(isset($arResult["FILTER"][$field["id"]."_to"]))
		$flt = $arResult["FILTER"][$field["id"]."_to"];
	else
		$flt = $arResult["FILTER"][$field["id"]];
	
	if(is_array($flt) && !empty($flt) || !is_array($flt) && $flt <> '')
		$arResult["FILTER_ROWS"][$field["id"]] = true;
	elseif(array_key_exists($field["id"], $aVisRows))
		$arResult["FILTER_ROWS"][$field["id"]] = true;
	elseif(!isset($aOptions["filter_rows"]))
		$arResult["FILTER_ROWS"][$field["id"]] = ($field["default"] == true);
	else
		$arResult["FILTER_ROWS"][$field["id"]] = false;
}
if(!in_array(true, $arResult["FILTER_ROWS"]))
{
	foreach($arParams["FILTER"] as $field)
	{
		$arResult["FILTER_ROWS"][$field["id"]] = true;
		break;
	}
}

//*********************
// Columns
//*********************

$aCurView = $aOptions["views"][$aOptions["current_view"]];
$aColsTmp = explode(",", $aCurView["columns"]);
$aCols = array();
foreach($aColsTmp as $col)
	if(trim($col)<>"")
		$aCols[] = trim($col);

$bEmptyCols = empty($aCols);
foreach($arParams["HEADERS"] as $param)
{
	if(($bEmptyCols && $param["default"]==true) || in_array($param["id"], $aCols))
		$arResult["HEADERS"][$param["id"]] = $param;
}

if(!$bEmptyCols)
{
	foreach($aCols as $i=>$col)
		$arResult["HEADERS"][$col]["__sort"] = $i;
	uasort($arResult["HEADERS"], create_function('$a, $b', 'if($a["__sort"] == $b["__sort"]) return 0; return ($a["__sort"] < $b["__sort"])? -1 : 1;'));
}

//*********************
// Sorting and URL
//*********************

$sTabParam = "";
$aDelParam = array("bxajaxid", "AJAX_CALL");
if($arParams["FORM_ID"] <> '' && $arParams["TAB_ID"] <> '')
{
	$sTabParam = $arParams["FORM_ID"].'_active_tab='.$arParams["TAB_ID"];
	$aDelParam[] = $arParams["FORM_ID"].'_active_tab';
}

$arResult["CURRENT_URL"] = $APPLICATION->GetCurPageParam($sTabParam, $aDelParam);

$aDelParam[] = $arParams["SORT_VARS"]["by"];
$aDelParam[] = $arParams["SORT_VARS"]["order"];

$path = $APPLICATION->GetCurPageParam($sTabParam, $aDelParam);
$sep = (strpos($path, "?") !== false? "&":"?");

reset($arParams["SORT"]);
$aSort = each($arParams["SORT"]);

foreach($arResult["HEADERS"] as $id=>$header)
{
	if($header["sort"] <> '')
	{
		$arResult["HEADERS"][$id]["sort_state"] = "";
		if(strtolower($header["sort"]) == strtolower($aSort["key"]))
		{
			if(strtolower($aSort["value"]) == "desc")
				$arResult["HEADERS"][$id]["sort_state"] = "desc";
			else
				$arResult["HEADERS"][$id]["sort_state"] = "asc";
		}
		$arResult["HEADERS"][$id]["sort_url"] = htmlspecialchars($path.$sep.$arParams["SORT_VARS"]["by"]."=".$header["sort"]."&".$arParams["SORT_VARS"]["order"]."=");
		$arResult["HEADERS"][$id]["order"] = ($header["order"] == 'desc'? 'desc':'asc');
	}
}


//*********************
// Editable columns detection
//*********************

$arResult["EDIT_DATE"] = false;
$arResult["ALLOW_EDIT"] = false;
$arResult["ALLOW_INLINE_EDIT"] = false;
$arResult["COLS_EDIT_META"] = array();
foreach($arResult["HEADERS"] as $header)
{
	if($arParams["EDITABLE"] && isset($header["editable"]) && $header["editable"] !== false)
	{
		$arResult["ALLOW_EDIT"] = true;
		$arResult["ALLOW_INLINE_EDIT"] = true;
		if($header["type"] == "date")
			$arResult["EDIT_DATE"] = true;
	}

	$arResult["COLS_EDIT_META"][$header["id"]] = array(
			"editable" => (isset($header["editable"]) && $header["editable"] !== false),
			"type"=>($header["type"] <> ''? $header["type"] : "text"),
	);
	if($arParams["EDITABLE"] && is_array($header["editable"]))
		foreach($header["editable"] as $attr => $val)
			$arResult["COLS_EDIT_META"][$header["id"]][$attr] = $val;
}

//*********************
// Columns names
//*********************

$arResult["COLS_NAMES"] = array();
foreach($arParams["HEADERS"] as $header)
	$arResult["COLS_NAMES"][$header["id"]] = $header["name"];

//*********************
// Editable Data
//*********************

$arResult["DATA_FOR_EDIT"] = array();
if($arResult["ALLOW_EDIT"])
{
	$arResult["ALLOW_EDIT"] = false;
	foreach($arParams["ROWS"] as $row)
	{
		if($row["editable"] !== false)
		{
			$arResult["ALLOW_EDIT"] = true;
			$id = ($row["id"] <> ''? $row["id"] : $row["data"]["ID"]);
			foreach($arResult["HEADERS"] as $header)
			{
				if(isset($header["editable"]) && $header["editable"] !== false)
				{
					if(isset($row["editable"][$header["id"]]) && $row["editable"][$header["id"]] === false)
						$arResult["DATA_FOR_EDIT"][$id][$header["id"]] = false;
					else
						$arResult["DATA_FOR_EDIT"][$id][$header["id"]] = $row["data"]['~'.$header["id"]];
				}
			}
		}
	}
}

if($arParams["EDITABLE"] && is_array($arParams["ACTIONS"]) && count($arParams["ACTIONS"]) > 0)
	$arResult["ALLOW_EDIT"] = true;

//*********************
// Navigation
//*********************

if($arParams["NAV_STRING"] <> '')
{
	$arResult["NAV_STRING"] = $arParams["NAV_STRING"];
}
elseif(is_object($arParams["NAV_OBJECT"]))
{
	$arParams["NAV_OBJECT"]->nPageWindow = 5;
	//dirty hack
	if($arParams["FORM_ID"] <> '' && $arParams["TAB_ID"] <> '')
		$_GET[$arParams["FORM_ID"].'_active_tab'] = $arParams["TAB_ID"];
	$arResult["NAV_STRING"] = $arParams["NAV_OBJECT"]->GetPageNavString("", "modern", true);
}

//*********************
// Self-explaining
//*********************

$this->IncludeComponentTemplate();
?>