%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/main.interface.form/ |
Current File : //home/bitrix/www/bitrix/components/bitrix/main.interface.form/component.php |
<?php /** * Bitrix Framework * @package bitrix * @subpackage main * @copyright 2001-2013 Bitrix */ /** * Bitrix vars * * @var array $arParams * @var array $arResult * @var CBitrixComponent $this * @global CMain $APPLICATION * @global CUser $USER */ if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die(); if(!is_array($arParams["TABS"])) $arParams["TABS"] = array(); if($arParams["CAN_EXPAND_TABS"] !== 'N' && $arParams["CAN_EXPAND_TABS"] !== false) $arParams["CAN_EXPAND_TABS"] = true; else $arParams["CAN_EXPAND_TABS"] = false; if($arParams["SHOW_FORM_TAG"] !== 'N' && $arParams["SHOW_FORM_TAG"] !== false) $arParams["SHOW_FORM_TAG"] = true; else $arParams["SHOW_FORM_TAG"] = false; if($arParams["SHOW_SETTINGS"] !== 'N' && $arParams["SHOW_SETTINGS"] !== false) $arParams["SHOW_SETTINGS"] = true; else $arParams["SHOW_SETTINGS"] = false; if($arParams["USE_THEMES"] !== 'N' && $arParams["USE_THEMES"] !== false && CPageOption::GetOptionString("main.interface", "use_themes", "Y") !== "N") $arParams["USE_THEMES"] = true; else $arParams["USE_THEMES"] = false; if($arParams["MAX_FILE_SIZE"] == '') $arParams["MAX_FILE_SIZE"] = 102400; $arParams["FORM_ID"] = preg_replace("/[^a-z0-9_]/i", "", $arParams["FORM_ID"]); //********************* //get saved options //********************* $aOptions = CUserOptions::GetOption("main.interface.form", $arParams["FORM_ID"], array()); if(!is_array($aOptions["tabs"])) $aOptions["tabs"] = array(); if($arParams["USE_THEMES"] && $arParams["THEME_GRID_ID"] <> '') { $aGridOptions = CUserOptions::GetOption("main.interface.grid", $arParams["THEME_GRID_ID"], array()); if($aGridOptions["theme"] <> '') $aOptions["theme"] = $aGridOptions["theme"]; } $arResult["OPTIONS"] = $aOptions; $arResult["GLOBAL_OPTIONS"] = CUserOptions::GetOption("main.interface", "global", array(), 0); if($arParams["USE_THEMES"]) { 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"]; $arResult["OPTIONS"]["theme"] = preg_replace("/[^a-z0-9_.-]/i", "", $arResult["OPTIONS"]["theme"]); } else { $arResult["OPTIONS"]["theme"] = ''; } //Admin can change common settings $arResult["IS_ADMIN"] = $USER->CanDoOperation('edit_other_settings'); //********************* // Tabs manipulating //********************* $arAllFields = array(); $arPersistentFields = array(); $arResult["TABS"] = array(); foreach($arParams["TABS"] as $tab) { $tabId = $tab["id"]; $arResult["TABS"][$tabId] = $tab; $aFields = array(); if(is_array($tab["fields"])) { foreach($tab["fields"] as $field) { $id = $field["id"]; $arAllFields[$id] = $aFields[$id] = $field; if((isset($field["required"]) && $field["required"]) || (isset($field["persistent"]) && $field["persistent"])) { $arPersistentFields[$id] = array("tabId" => $tabId, "field" => $field); } } } $arResult["TABS"][$tab["id"]]["fields"] = $aFields; } $arResult["TABS_META"] = array(); $arResult["AVAILABLE_FIELDS"] = array(); if($arParams["SHOW_SETTINGS"]) { if(!empty($aOptions["tabs"])) { $aTabs = array(); $aUsedFields = array(); foreach($aOptions["tabs"] as $tab) { $aTabs[$tab["id"]] = $tab; $aTabs[$tab["id"]]["icon"] = $arResult["TABS"][$tab["id"]]["icon"]; $aFields = array(); if(is_array($tab["fields"])) { foreach($tab["fields"] as $field) { $id = $field["id"]; $fieldType = isset($field["type"]) ? $field["type"] : ""; if(isset($arAllFields[$id])) { $aFields[$id] = $arAllFields[$id]; $aFields[$id]["name"] = $field["name"]; $aUsedFields[$id] = true; unset($arPersistentFields[$id]); } elseif($fieldType === "section" || $fieldType === "") { $aFields[$id] = $field; $aFields[$id]["type"] = "section"; unset($arPersistentFields[$id]); } } } $aTabs[$tab["id"]]["fields"] = $aFields; } reset($aTabs); $firstTabId = key($aTabs); if($firstTabId !== null) { foreach($arPersistentFields as $id => $fieldInfo) { $tabId = $fieldInfo["tabId"]; $field = $fieldInfo["field"]; if(!isset($aTabs[$tabId])) { $tabId = $firstTabId; } $fields = $aTabs[$tabId]["fields"]; $firstField = reset($fields); if(!is_array($firstField)) { $aTabs[$tabId]["fields"] = array($id => $field); } elseif(isset($firstField["type"]) && $firstField["type"] === "section") { //Insert in to beginning of first section of tab $aTabs[$tabId]["fields"] = array_slice($aTabs[$tabId]["fields"], 0, 1, true) + array($id => $field) + array_slice($aTabs[$tabId]["fields"], 1, null, true); } else { //Insert in to beginning of tab $aTabs[$tabId]["fields"] = array_merge(array($id => $field), $aTabs[$tabId]["fields"]); } } } $arMeta = $aTabs; foreach($arAllFields as $id => $field) if(!array_key_exists($id, $aUsedFields)) $arResult["AVAILABLE_FIELDS"][$id] = array("id"=>$id, "name"=>$field["name"], "type"=>$field["type"]); if($arResult["OPTIONS"]["settings_disabled"] <> "Y") { $arResult["TABS"] = $aTabs; } } else { $arMeta = $arResult["TABS"]; } //tabs info for settings foreach($arMeta as $id=>$tab) { $arResult["TABS_META"][$id] = array('id'=>$id, 'name'=>$tab['name'], 'title'=>$tab['title']); foreach($tab['fields'] as $field) $arResult["TABS_META"][$id]['fields'][$field['id']] = array("id"=>$field["id"], "name"=>$field["name"], "type"=>$field["type"]); } } $hidden = $arParams["FORM_ID"]."_active_tab"; if(isset($_REQUEST[$hidden]) && array_key_exists($_REQUEST[$hidden], $arResult["TABS"])) { $arResult["SELECTED_TAB"] = $_REQUEST[$hidden]; } else { foreach($arResult["TABS"] as $tab) { $arResult["SELECTED_TAB"] = $tab["id"]; break; } } //********************* // Self-explaining //********************* $this->IncludeComponentTemplate();