Current Path : /var/www/html/clients/amz.e-nk.ru/bitrix/components/bitrix/main.interface.grid/ |
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(); ?>