Разработка первой версии тиражного решения типового сайта танцевальных школ
Требования посетителей к содержимому сайта. Анализ визуальной структуры страницы на "1С-Битрикс". Особенность реализации пользовательского компонента. Характеристика построения функциональной модели. Исследование стоимостной диагностики функций.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 10.03.2018 |
Размер файла | 3,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
"DESCRIPTION" => GetMessage("IBLOCK_ELEMENT_ADD_FORM_DESCRIPTION"),
"ICON" => "/images/eaddform.gif",
"CACHE_PATH" => "Y",
"SORT" => 40,
"PATH" => array(
"ID" => "dance",
"NAME" => GetMessage("IBLOCK_NEWS_NAME2"),
"SORT" => 5,
),
);
?>
.parameters.php
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
if(!CModule::IncludeModule("iblock"))
return;
$arTypesEx = CIBlockParameters::GetIBlockTypes(Array("-"=>" "));
$arIBlocks=Array();
$db_iblock = CIBlock::GetList(Array("SORT"=>"ASC"), Array("SITE_ID"=>$_REQUEST["site"], "TYPE" => ($arCurrentValues["IBLOCK_TYPE"]!="-"?$arCurrentValues["IBLOCK_TYPE"]:"")));
while($arRes = $db_iblock->Fetch())
$arIBlocks[$arRes["ID"]] = $arRes["NAME"];
$arSorts = Array("ASC"=>GetMessage("T_IBLOCK_DESC_ASC"), "DESC"=>GetMessage("T_IBLOCK_DESC_DESC"));
$arSortFields = Array(
"ID"=>GetMessage("T_IBLOCK_DESC_FID"),
"NAME"=>GetMessage("T_IBLOCK_DESC_FNAME"),
"ACTIVE_FROM"=>GetMessage("T_IBLOCK_DESC_FACT"),
"SORT"=>GetMessage("T_IBLOCK_DESC_FSORT"),
"TIMESTAMP_X"=>GetMessage("T_IBLOCK_DESC_FTSAMP")
);
$arProperty_LNS = array();
$rsProp = CIBlockProperty::GetList(Array("sort"=>"asc", "name"=>"asc"), Array("ACTIVE"=>"Y", "IBLOCK_ID"=>(isset($arCurrentValues["IBLOCK_ID"])?$arCurrentValues["IBLOCK_ID"]:$arCurrentValues["ID"])));
while ($arr=$rsProp->Fetch())
{
$arProperty[$arr["CODE"]] = "[".$arr["CODE"]."] ".$arr["NAME"];
if (in_array($arr["PROPERTY_TYPE"], array("L", "N", "S")))
{
$arProperty_LNS[$arr["CODE"]] = "[".$arr["CODE"]."] ".$arr["NAME"];
}
}
//============================================форма===========================
$bWorkflowIncluded = CModule::IncludeModule("workflow");
$arIBlockType = CIBlockParameters::GetIBlockTypes();
$arIBlock=array();
$rsIBlock = CIBlock::GetList(Array("sort" => "asc"), Array("TYPE" => $arCurrentValues["IBLOCK_TYPE"], "ACTIVE"=>"Y"));
while($arr=$rsIBlock->Fetch())
{
$arIBlock[$arr["ID"]] = "[".$arr["ID"]."] ".$arr["NAME"];
}
$arProperty_LNSF = array(
"NAME" => GetMessage("IBLOCK_ADD_NAME"),
"TAGS" => GetMessage("IBLOCK_ADD_TAGS"),
"DATE_ACTIVE_FROM" => GetMessage("IBLOCK_ADD_ACTIVE_FROM"),
"DATE_ACTIVE_TO" => GetMessage("IBLOCK_ADD_ACTIVE_TO"),
"IBLOCK_SECTION" => GetMessage("IBLOCK_ADD_IBLOCK_SECTION"),
"PREVIEW_TEXT" => GetMessage("IBLOCK_ADD_PREVIEW_TEXT"),
"PREVIEW_PICTURE" => GetMessage("IBLOCK_ADD_PREVIEW_PICTURE"),
"DETAIL_TEXT" => GetMessage("IBLOCK_ADD_DETAIL_TEXT"),
"DETAIL_PICTURE" => GetMessage("IBLOCK_ADD_DETAIL_PICTURE"),
);
$arVirtualProperties = $arProperty_LNSF;
$rsProp = CIBlockProperty::GetList(Array("sort"=>"asc", "name"=>"asc"), Array("ACTIVE"=>"Y", "IBLOCK_ID"=>$arCurrentValues["IBLOCK_ID"]));
while ($arr=$rsProp->Fetch())
{
$arProperty[$arr["ID"]] = "[".$arr["CODE"]."] ".$arr["NAME"];
if (in_array($arr["PROPERTY_TYPE"], array("L", "N", "S", "F")))
{
$arProperty_LNSF[$arr["ID"]] = "[".$arr["CODE"]."] ".$arr["NAME"];
}
}
$arGroups = array();
$rsGroups = CGroup::GetList($by="c_sort", $order="asc", Array("ACTIVE" => "Y"));
while ($arGroup = $rsGroups->Fetch())
{
$arGroups[$arGroup["ID"]] = $arGroup["NAME"];
}
if ($bWorkflowIncluded)
{
$rsWFStatus = CWorkflowStatus::GetList($by="c_sort", $order="asc", Array("ACTIVE" => "Y"), $is_filtered);
$arWFStatus = array();
while ($arWFS = $rsWFStatus->Fetch())
{
$arWFStatus[$arWFS["ID"]] = $arWFS["TITLE"];
}
}
else
{
$arActive = array("ANY" => GetMessage("IBLOCK_STATUS_ANY"), "INACTIVE" => GetMessage("IBLOCK_STATUS_INCATIVE"));
$arActiveNew = array("N" => GetMessage("IBLOCK_ALLOW_N"), "NEW" => GetMessage("IBLOCK_ACTIVE_NEW_NEW"), "ANY" => GetMessage("IBLOCK_ACTIVE_NEW_ANY"));
}
$arAllowEdit = array("CREATED_BY" => GetMessage("IBLOCK_CREATED_BY"), "PROPERTY_ID" => GetMessage("IBLOCK_PROPERTY_ID"));
//============================================================================
$arComponentParameters = array(
"GROUPS" => array(
//================================форма===================================
"PARAMS" => array(
"NAME" => GetMessage("IBLOCK_PARAMS"),
"SORT" => "200"
),
"ACCESS" => array(
"NAME" => GetMessage("IBLOCK_ACCESS"),
"SORT" => "400",
),
"FIELDS" => array(
"NAME" => GetMessage("IBLOCK_FIELDS"),
"SORT" => "300",
),
"TITLES" => array(
"NAME" => GetMessage("IBLOCK_TITLES"),
"SORT" => "1000",
),
//========================================================================
),
"PARAMETERS" => array(
"AJAX_MODE" => array(),
"IBLOCK_TYPE" => Array(
"PARENT" => "BASE",
"NAME" => GetMessage("T_IBLOCK_DESC_LIST_TYPE"),
"TYPE" => "LIST",
"VALUES" => $arTypesEx,
"DEFAULT" => "news",
"REFRESH" => "Y",
),
"IBLOCK_ID" => Array(
"PARENT" => "BASE",
"NAME" => GetMessage("T_IBLOCK_DESC_LIST_ID"),
"TYPE" => "LIST",
"VALUES" => $arIBlocks,
"DEFAULT" => '={$_REQUEST["ID"]}',
"ADDITIONAL_VALUES" => "Y",
"REFRESH" => "Y",
),
"NEWS_COUNT" => Array(
"PARENT" => "BASE",
"NAME" => GetMessage("T_IBLOCK_DESC_LIST_CONT"),
"TYPE" => "STRING",
"DEFAULT" => "20",
),
"SORT_BY1" => Array(
"PARENT" => "DATA_SOURCE",
"NAME" => GetMessage("T_IBLOCK_DESC_IBORD1"),
"TYPE" => "LIST",
"DEFAULT" => "ACTIVE_FROM",
"VALUES" => $arSortFields,
"ADDITIONAL_VALUES" => "Y",
),
"SORT_ORDER1" => Array(
"PARENT" => "DATA_SOURCE",
"NAME" => GetMessage("T_IBLOCK_DESC_IBBY1"),
"TYPE" => "LIST",
"DEFAULT" => "DESC",
"VALUES" => $arSorts,
),
"SORT_BY2" => Array(
"PARENT" => "DATA_SOURCE",
"NAME" => GetMessage("T_IBLOCK_DESC_IBORD2"),
"TYPE" => "LIST",
"DEFAULT" => "SORT",
"VALUES" => $arSortFields,
"ADDITIONAL_VALUES" => "Y",
),
"SORT_ORDER2" => Array(
"PARENT" => "DATA_SOURCE",
"NAME" => GetMessage("T_IBLOCK_DESC_IBBY2"),
"TYPE" => "LIST",
"DEFAULT" => "ASC",
"VALUES" => $arSorts,
),
"FILTER_NAME" => Array(
"PARENT" => "DATA_SOURCE",
"NAME" => GetMessage("T_IBLOCK_FILTER"),
"TYPE" => "STRING",
"DEFAULT" => "",
),
"FIELD_CODE" => CIBlockParameters::GetFieldCode(GetMessage("IBLOCK_FIELD"), "DATA_SOURCE"),
"PROPERTY_CODE" => array(
"PARENT" => "DATA_SOURCE",
"NAME" => GetMessage("T_IBLOCK_PROPERTY"),
"TYPE" => "LIST",
"MULTIPLE" => "Y",
"VALUES" => $arProperty_LNS,
"ADDITIONAL_VALUES" => "Y",
),
"CHECK_DATES" => array(
"PARENT" => "DATA_SOURCE",
"NAME" => GetMessage("T_IBLOCK_DESC_CHECK_DATES"),
"TYPE" => "CHECKBOX",
"DEFAULT" => "Y",
),
"DETAIL_URL" => CIBlockParameters::GetPathTemplateParam(
"DETAIL",
"DETAIL_URL",
GetMessage("T_IBLOCK_DESC_DETAIL_PAGE_URL"),
"",
"URL_TEMPLATES"
),
"PREVIEW_TRUNCATE_LEN" => Array(
"PARENT" => "ADDITIONAL_SETTINGS",
"NAME" => GetMessage("T_IBLOCK_DESC_PREVIEW_TRUNCATE_LEN"),
"TYPE" => "STRING",
"DEFAULT" => "",
),
"ACTIVE_DATE_FORMAT" => CIBlockParameters::GetDateFormat(GetMessage("T_IBLOCK_DESC_ACTIVE_DATE_FORMAT"), "ADDITIONAL_SETTINGS"),
"DISPLAY_PANEL" => Array(
"PARENT" => "ADDITIONAL_SETTINGS",
"NAME" => GetMessage("T_IBLOCK_DESC_NEWS_PANEL"),
"TYPE" => "CHECKBOX",
"DEFAULT" => "N",
),
"SET_TITLE" => Array(),
"SET_STATUS_404" => Array(
"PARENT" => "ADDITIONAL_SETTINGS",
"NAME" => GetMessage("CP_BNL_SET_STATUS_404"),
"TYPE" => "CHECKBOX",
"DEFAULT" => "N",
),
"INCLUDE_IBLOCK_INTO_CHAIN" => Array(
"PARENT" => "ADDITIONAL_SETTINGS",
"NAME" => GetMessage("T_IBLOCK_DESC_INCLUDE_IBLOCK_INTO_CHAIN"),
"TYPE" => "CHECKBOX",
"DEFAULT" => "Y",
),
"ADD_SECTIONS_CHAIN" => Array(
"PARENT" => "ADDITIONAL_SETTINGS",
"NAME" => GetMessage("T_IBLOCK_DESC_ADD_SECTIONS_CHAIN"),
"TYPE" => "CHECKBOX",
"DEFAULT" => "Y",
),
"HIDE_LINK_WHEN_NO_DETAIL" => Array(
"PARENT" => "ADDITIONAL_SETTINGS",
"NAME" => GetMessage("T_IBLOCK_DESC_HIDE_LINK_WHEN_NO_DETAIL"),
"TYPE" => "CHECKBOX",
"DEFAULT" => "N",
),
"PARENT_SECTION" => array(
"PARENT" => "ADDITIONAL_SETTINGS",
"NAME" => GetMessage("IBLOCK_SECTION_ID"),
"TYPE" => "STRING",
"DEFAULT" => '',
),
"PARENT_SECTION_CODE" => array(
"PARENT" => "ADDITIONAL_SETTINGS",
"NAME" => GetMessage("IBLOCK_SECTION_CODE"),
"TYPE" => "STRING",
"DEFAULT" => '',
),
"CACHE_TIME" => Array("DEFAULT"=>3600),
"CACHE_FILTER" => array(
"PARENT" => "CACHE_SETTINGS",
"NAME" => GetMessage("IBLOCK_CACHE_FILTER"),
"TYPE" => "CHECKBOX",
"DEFAULT" => "N",
),
//======================================форма=================================
"PROPERTY_CODES" => array(
"PARENT" => "FIELDS",
"NAME" => GetMessage("IBLOCK_PROPERTY"),
"TYPE" => "LIST",
"MULTIPLE" => "Y",
"VALUES" => $arProperty_LNSF,
),
"PROPERTY_CODES_REQUIRED" => array(
"PARENT" => "FIELDS",
"NAME" => GetMessage("IBLOCK_PROPERTY_REQUIRED"),
"TYPE" => "LIST",
"MULTIPLE" => "Y",
"ADDITIONAL_VALUES" => "N",
"VALUES" => $arProperty_LNSF,
),
"GROUPS" => array(
"PARENT" => "ACCESS",
"NAME" => GetMessage("IBLOCK_GROUPS"),
"TYPE" => "LIST",
"MULTIPLE" => "Y",
"ADDITIONAL_VALUES" => "N",
"VALUES" => $arGroups,
),
"STATUS_NEW" => array(
"PARENT" => "PARAMS",
"NAME" => $bWorkflowIncluded? GetMessage("IBLOCK_STATUS_NEW"): GetMessage("IBLOCK_ACTIVE_NEW"),
"TYPE" => "LIST",
"MULTIPLE" => "N",
"VALUES" => $bWorkflowIncluded ? $arWFStatus : $arActiveNew,
),
"STATUS" => array(
"PARENT" => "ACCESS",
"NAME" => $bWorkflowIncluded? GetMessage("IBLOCK_STATUS_STATUS"): GetMessage("IBLOCK_STATUS_ACTIVE"),
"TYPE" => "LIST",
"MULTIPLE" => $bWorkflowIncluded ? "Y" : "N",
"VALUES" => $bWorkflowIncluded ? $arWFStatus : $arActive,
),
"LIST_URL" => array(
"PARENT" => "PARAMS",
"TYPE" => "TEXT",
"NAME" => GetMessage("IBLOCK_ADD_LIST_URL"),
),
"ELEMENT_ASSOC" => array(
"PARENT" => "ACCESS",
"NAME" => GetMessage("IBLOCK_ELEMENT_ASSOC"),
"TYPE" => "LIST",
"ADDITIONAL_VALUES" => "N",
"VALUES" => $arAllowEdit,
"REFRESH" => "Y",
"DEFAULT" => "CREATED_BY",
),
//============================================================================
),
);
//======================================форма=================================
if ($arCurrentValues["ELEMENT_ASSOC"] == "PROPERTY_ID")
{
$arComponentParameters["PARAMETERS"]["ELEMENT_ASSOC_PROPERTY"] = array(
"PARENT" => "ACCESS",
"NAME" => GetMessage("IBLOCK_ELEMENT_ASSOC_PROPERTY"),
"TYPE" => "LIST",
"MULTIPLE" => "N",
"VALUES" => $arProperty,
"ADDITIONAL_VALUES" => "Y",
);
}
$arComponentParameters["PARAMETERS"]["MAX_USER_ENTRIES"] = array(
"PARENT" => "ACCESS",
"NAME" => GetMessage("IBLOCK_MAX_USER_ENTRIES"),
"TYPE" => "TEXT",
"DEFAULT" => "100000",
);
$arComponentParameters["PARAMETERS"]["MAX_LEVELS"] = array(
"PARENT" => "ACCESS",
"NAME" => GetMessage("IBLOCK_MAX_LEVELS"),
"TYPE" => "TEXT",
"DEFAULT" => "100000",
);
$arComponentParameters["PARAMETERS"]["LEVEL_LAST"] = array(
"PARENT" => "ACCESS",
"NAME" => GetMessage("IBLOCK_LEVEL_LAST"),
"TYPE" => "CHECKBOX",
"DEFAULT" => "Y",
);
$arComponentParameters["PARAMETERS"]["USE_CAPTCHA"] = array(
"PARENT" => "PARAMS",
"NAME" => GetMessage("IBLOCK_USE_CAPTCHA"),
"TYPE" => "CHECKBOX",
);
$arComponentParameters["PARAMETERS"]["USER_MESSAGE_EDIT"] = array(
"PARENT" => "PARAMS",
"NAME" => GetMessage("IBLOCK_USER_MESSAGE_EDIT"),
"TYPE" => "TEXT",
);
$arComponentParameters["PARAMETERS"]["USER_MESSAGE_ADD"] = array(
"PARENT" => "PARAMS",
"NAME" => GetMessage("IBLOCK_USER_MESSAGE_ADD"),
"TYPE" => "TEXT",
);
$arComponentParameters["PARAMETERS"]["DEFAULT_INPUT_SIZE"] = array(
"PARENT" => "PARAMS",
"NAME" => GetMessage("IBLOCK_DEFAULT_INPUT_SIZE"),
"TYPE" => "TEXT",
"DEFAULT" => 30,
);
$arComponentParameters["PARAMETERS"]["RESIZE_IMAGES"] = array(
"PARENT" => "PARAMS",
"NAME" => GetMessage("CP_BIEAF_RESIZE_IMAGES"),
"TYPE" => "CHECKBOX",
"DEFAULT" => "N",
);
$arComponentParameters["PARAMETERS"]["MAX_FILE_SIZE"] = array(
"PARENT" => "ACCESS",
"NAME" => GetMessage("IBLOCK_MAX_FILE_SIZE"),
"TYPE" => "TEXT",
"DEFAULT" => "0",
);
$arComponentParameters["PARAMETERS"]["PREVIEW_TEXT_USE_HTML_EDITOR"] = array(
"PARENT" => "ACCESS",
"NAME" => GetMessage("CP_BIEAF_PREVIEW_TEXT_USE_HTML_EDITOR"),
"TYPE" => "CHECKBOX",
"DEFAULT" => "N",
);
$arComponentParameters["PARAMETERS"]["DETAIL_TEXT_USE_HTML_EDITOR"] = array(
"PARENT" => "ACCESS",
"NAME" => GetMessage("CP_BIEAF_DETAIL_TEXT_USE_HTML_EDITOR"),
"TYPE" => "CHECKBOX",
"DEFAULT" => "N",
);
foreach ($arVirtualProperties as $key => $title)
{
$arComponentParameters["PARAMETERS"]["CUSTOM_TITLE_".$key] = array(
"PARENT" => "TITLES",
"NAME" => $title,
"TYPE" => "STRING",
);
}
//============================================================================
CIBlockParameters::AddPagerSettings($arComponentParameters, GetMessage("T_IBLOCK_DESC_PAGER_NEWS"), true, true);
?>
component.php
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
CPageOption::SetOptionString("main", "nav_page_in_session", "N");
if(!isset($arParams["CACHE_TIME"]))
$arParams["CACHE_TIME"] = 3600;
$arParams["IBLOCK_TYPE"] = trim($arParams["IBLOCK_TYPE"]);
if(strlen($arParams["IBLOCK_TYPE"])<=0)
$arParams["IBLOCK_TYPE"] = "news";
$arParams["IBLOCK_ID"] = trim($arParams["IBLOCK_ID"]);
$arParams["PARENT_SECTION"] = intval($arParams["PARENT_SECTION"]);
$arParams["INCLUDE_SUBSECTIONS"] = $arParams["INCLUDE_SUBSECTIONS"]!="N";
$arParams["SORT_BY1"] = trim($arParams["SORT_BY1"]);
if(strlen($arParams["SORT_BY1"])<=0)
$arParams["SORT_BY1"] = "ACTIVE_FROM";
if($arParams["SORT_ORDER1"]!="ASC")
$arParams["SORT_ORDER1"]="DESC";
if(strlen($arParams["SORT_BY2"])<=0)
$arParams["SORT_BY2"] = "SORT";
if($arParams["SORT_ORDER2"]!="DESC")
$arParams["SORT_ORDER2"]="ASC";
if(strlen($arParams["FILTER_NAME"])<=0 || !ereg("^[A-Za-z_][A-Za-z01-9_]*$", $arParams["FILTER_NAME"]))
{
$arrFilter = array();
}
else
{
$arrFilter = $GLOBALS[$arParams["FILTER_NAME"]];
if(!is_array($arrFilter))
$arrFilter = array();
}
$arParams["CHECK_DATES"] = $arParams["CHECK_DATES"]!="N";
if(!is_array($arParams["FIELD_CODE"]))
$arParams["FIELD_CODE"] = array();
foreach($arParams["FIELD_CODE"] as $key=>$val)
if(!$val)
unset($arParams["FIELD_CODE"][$key]);
if(!is_array($arParams["PROPERTY_CODE"]))
$arParams["PROPERTY_CODE"] = array();
foreach($arParams["PROPERTY_CODE"] as $key=>$val)
if($val==="")
unset($arParams["PROPERTY_CODE"][$key]);
$arParams["DETAIL_URL"]=trim($arParams["DETAIL_URL"]);
$arParams["NEWS_COUNT"] = intval($arParams["NEWS_COUNT"]);
if($arParams["NEWS_COUNT"]<=0)
$arParams["NEWS_COUNT"] = 20;
$arParams["CACHE_FILTER"] = $arParams["CACHE_FILTER"]=="Y";
if(!$arParams["CACHE_FILTER"] && count($arrFilter)>0)
$arParams["CACHE_TIME"] = 0;
$arParams["SET_TITLE"] = $arParams["SET_TITLE"]!="N";
$arParams["DISPLAY_PANEL"] = $arParams["DISPLAY_PANEL"]=="Y";
$arParams["ADD_SECTIONS_CHAIN"] = $arParams["ADD_SECTIONS_CHAIN"]!="N"; $arParams["INCLUDE_IBLOCK_INTO_CHAIN"] = $arParams["INCLUDE_IBLOCK_INTO_CHAIN"]!="N";
$arParams["ACTIVE_DATE_FORMAT"] = trim($arParams["ACTIVE_DATE_FORMAT"]);
if(strlen($arParams["ACTIVE_DATE_FORMAT"])<=0)
$arParams["ACTIVE_DATE_FORMAT"] = $DB->DateFormatToPHP(CSite::GetDateFormat("SHORT"));
$arParams["PREVIEW_TRUNCATE_LEN"] = intval($arParams["PREVIEW_TRUNCATE_LEN"]);
$arParams["HIDE_LINK_WHEN_NO_DETAIL"] = $arParams["HIDE_LINK_WHEN_NO_DETAIL"]=="Y";
$arParams["DISPLAY_TOP_PAGER"] = $arParams["DISPLAY_TOP_PAGER"]=="Y";
$arParams["DISPLAY_BOTTOM_PAGER"] = $arParams["DISPLAY_BOTTOM_PAGER"]!="N";
$arParams["PAGER_TITLE"] = trim($arParams["PAGER_TITLE"]);
$arParams["PAGER_SHOW_ALWAYS"] = $arParams["PAGER_SHOW_ALWAYS"]!="N";
$arParams["PAGER_TEMPLATE"] = trim($arParams["PAGER_TEMPLATE"]);
$arParams["PAGER_DESC_NUMBERING"] = $arParams["PAGER_DESC_NUMBERING"]=="Y";
$arParams["PAGER_DESC_NUMBERING_CACHE_TIME"] = intval($arParams["PAGER_DESC_NUMBERING_CACHE_TIME"]);
$arParams["PAGER_SHOW_ALL"] = $arParams["PAGER_SHOW_ALL"]!=="N";
if($arParams["DISPLAY_TOP_PAGER"] || $arParams["DISPLAY_BOTTOM_PAGER"])
{
$arNavParams = array(
"nPageSize" => $arParams["NEWS_COUNT"],
"bDescPageNumbering" => $arParams["PAGER_DESC_NUMBERING"],
"bShowAll" => $arParams["PAGER_SHOW_ALL"],
);
$arNavigation = CDBResult::GetNavParams($arNavParams);
if($arNavigation["PAGEN"]==0 && $arParams["PAGER_DESC_NUMBERING_CACHE_TIME"]>0)
$arParams["CACHE_TIME"] = $arParams["PAGER_DESC_NUMBERING_CACHE_TIME"];
}
else
{
$arNavParams = array(
"nTopCount" => $arParams["NEWS_COUNT"],
"bDescPageNumbering" => $arParams["PAGER_DESC_NUMBERING"],
);
$arNavigation = false;
}
$arParams["USE_PERMISSIONS"] = $arParams["USE_PERMISSIONS"]=="Y";
if(!is_array($arParams["GROUP_PERMISSIONS"]))
$arParams["GROUP_PERMISSIONS"] = array(1);
$bUSER_HAVE_ACCESS = !$arParams["USE_PERMISSIONS"];
if($arParams["USE_PERMISSIONS"] && isset($GLOBALS["USER"]) && is_object($GLOBALS["USER"]))
{
$arUserGroupArray = $GLOBALS["USER"]->GetUserGroupArray();
foreach($arParams["GROUP_PERMISSIONS"] as $PERM)
{
if(in_array($PERM, $arUserGroupArray))
{
$bUSER_HAVE_ACCESS = true;
break;
}
}
}
//if($this->StartResultCache(false, array($USER->GetGroups(), $bUSER_HAVE_ACCESS, $arNavigation, $arrFilter)))
{
if(!CModule::IncludeModule("iblock"))
{
$this->AbortResultCache();
ShowError(GetMessage("IBLOCK_MODULE_NOT_INSTALLED"));
return;
}
if(is_numeric($arParams["IBLOCK_ID"]))
{
$rsIBlock = CIBlock::GetList(array(), array(
"ACTIVE" => "Y",
"ID" => $arParams["IBLOCK_ID"],
));
}
else
{
$rsIBlock = CIBlock::GetList(array(), array(
"ACTIVE" => "Y",
"CODE" => $arParams["IBLOCK_ID"],
"SITE_ID" => SITE_ID,
));
}
if($arResult = $rsIBlock->GetNext())
{
$arResult["USER_HAVE_ACCESS"] = $bUSER_HAVE_ACCESS;
//SELECT
$arSelect = array_merge($arParams["FIELD_CODE"], array(
"ID",
"IBLOCK_ID",
"IBLOCK_SECTION_ID",
"NAME",
"ACTIVE_FROM",
"DETAIL_PAGE_URL",
"DETAIL_TEXT",
"DETAIL_TEXT_TYPE",
"PREVIEW_TEXT",
"PREVIEW_TEXT_TYPE",
"PREVIEW_PICTURE",
));
$bGetProperty = count($arParams["PROPERTY_CODE"])>0;
if($bGetProperty)
$arSelect[]="PROPERTY_*";
//WHERE
$arFilter = array (
"IBLOCK_ID" => $arResult["ID"],
"IBLOCK_LID" => SITE_ID,
"ACTIVE" => "Y",
"CHECK_PERMISSIONS" => "Y",
);
if($arParams["CHECK_DATES"])
$arFilter["ACTIVE_DATE"] = "Y";
$arParams["PARENT_SECTION"] = CIBlockFindTools::GetSectionID(
$arParams["PARENT_SECTION"],
$arParams["PARENT_SECTION_CODE"],
array(
"GLOBAL_ACTIVE" => "Y",
"IBLOCK_ID" => $arResult["ID"],
)
);
if($arParams["PARENT_SECTION"]>0)
{
$arFilter["SECTION_ID"] = $arParams["PARENT_SECTION"];
if($arParams["INCLUDE_SUBSECTIONS"])
$arFilter["INCLUDE_SUBSECTIONS"] = "Y";
$arResult["SECTION"]= array("PATH" => array());
$rsPath = GetIBlockSectionPath($arResult["ID"], $arParams["PARENT_SECTION"]);
$rsPath->SetUrlTemplates("", $arParams["SECTION_URL"]);
while($arPath=$rsPath->GetNext())
{
$arResult["SECTION"]["PATH"][] = $arPath;
}
}
else
{
$arResult["SECTION"]= false;
}
//ORDER BY
$arSort = array(
$arParams["SORT_BY1"]=>$arParams["SORT_ORDER1"],
$arParams["SORT_BY2"]=>$arParams["SORT_ORDER2"],
);
if(!array_key_exists("ID", $arSort))
$arSort["ID"] = "DESC";
$arResult["ITEMS"] = array();
$rsElement = CIBlockElement::GetList($arSort, array_merge($arFilter, $arrFilter), false, $arNavParams, $arSelect);
$rsElement->SetUrlTemplates($arParams["DETAIL_URL"]);
$arResult["ITEMS"] = array();
while($obElement = $rsElement->GetNextElement())
{
$arItem = $obElement->GetFields();
if($arParams["PREVIEW_TRUNCATE_LEN"]>0 && $arItem["PREVIEW_TEXT_TYPE"]!="html")
{
$end_pos = $arParams["PREVIEW_TRUNCATE_LEN"];
while(substr($arItem["PREVIEW_TEXT"],$end_pos,1)!=" " && $end_pos<strlen($arItem["PREVIEW_TEXT"]))
$end_pos++;
if($end_pos<strlen($arItem["PREVIEW_TEXT"]))
$arItem["PREVIEW_TEXT"] = substr($arItem["PREVIEW_TEXT"], 0, $end_pos)."...";
}
if(strlen($arItem["ACTIVE_FROM"])>0)
$arItem["DISPLAY_ACTIVE_FROM"] = CIBlockFormatProperties::DateFormat($arParams["ACTIVE_DATE_FORMAT"], MakeTimeStamp($arItem["ACTIVE_FROM"], CSite::GetDateFormat()));
else
$arItem["DISPLAY_ACTIVE_FROM"] = "";
if(array_key_exists("PREVIEW_PICTURE", $arItem))
$arItem["PREVIEW_PICTURE"] = CFile::GetFileArray($arItem["PREVIEW_PICTURE"]);
if(array_key_exists("DETAIL_PICTURE", $arItem))
$arItem["DETAIL_PICTURE"] = CFile::GetFileArray($arItem["DETAIL_PICTURE"]);
$arItem["FIELDS"] = array();
foreach($arParams["FIELD_CODE"] as $code)
if(array_key_exists($code, $arItem))
$arItem["FIELDS"][$code] = $arItem[$code];
if($bGetProperty)
$arItem["PROPERTIES"] = $obElement->GetProperties();
$arItem["DISPLAY_PROPERTIES"]=array();
foreach($arParams["PROPERTY_CODE"] as $pid)
{
$prop = &$arItem["PROPERTIES"][$pid];
if((is_array($prop["VALUE"]) && count($prop["VALUE"])>0) ||
(!is_array($prop["VALUE"]) && strlen($prop["VALUE"])>0))
{
$arItem["DISPLAY_PROPERTIES"][$pid] = CIBlockFormatProperties::GetDisplayValue($arItem, $prop, "news_out");
}
}
$arResult["ITEMS"][]=$arItem;
}
$arResult["NAV_STRING"] = $rsElement->GetPageNavStringEx($navComponentObject, $arParams["PAGER_TITLE"], $arParams["PAGER_TEMPLATE"], $arParams["PAGER_SHOW_ALWAYS"]);
$arResult["NAV_CACHED_DATA"] = $navComponentObject->GetTemplateCachedData();
$arResult["NAV_RESULT"] = $rsElement;
$this->SetResultCacheKeys(array(
"ID",
"IBLOCK_TYPE_ID",
"NAV_CACHED_DATA",
"NAME",
"SECTION",
));
$op=1;
}
else
{
$this->AbortResultCache();
ShowError(GetMessage("T_NEWS_NEWS_NA"));
@define("ERROR_404", "Y");
if($arParams["SET_STATUS_404"]==="Y")
CHTTP::SetStatus("404 Not Found");
}
}
if(isset($arResult["ID"]))
{
$arTitleOptions = null;
if($USER->IsAuthorized())
{
if(
$arParams["DISPLAY_PANEL"]
|| $APPLICATION->GetShowIncludeAreas()
|| $arParams["SET_TITLE"]
)
{
if(CModule::IncludeModule("iblock"))
{
$arButtons = CIBlock::GetPanelButtons($arResult["ID"], 0, $arParams["PARENT_SECTION"]);
if($arParams["DISPLAY_PANEL"])
CIBlock::AddPanelButtons($APPLICATION->GetPublicShowMode(), $this->GetName(), $arButtons);
if($APPLICATION->GetShowIncludeAreas())
$this->AddIncludeAreaIcons(CIBlock::GetComponentMenu($APPLICATION->GetPublicShowMode(), $arButtons));
if($arParams["SET_TITLE"])
{
$arTitleOptions = array(
'ADMIN_EDIT_LINK' => $arButtons["submenu"]["edit_iblock"]["ACTION"],
'PUBLIC_EDIT_LINK' => "",
'COMPONENT_NAME' => $this->GetName(),
);
}
}
}
}
$this->SetTemplateCachedData($arResult["NAV_CACHED_DATA"]);
if($arParams["SET_TITLE"])
{
$APPLICATION->SetTitle($arResult["NAME"], $arTitleOptions);
}
if($arParams["INCLUDE_IBLOCK_INTO_CHAIN"] && isset($arResult["NAME"]))
{
$APPLICATION->AddChainItem($arResult["NAME"]);
}
if($arParams["ADD_SECTIONS_CHAIN"] && is_array($arResult["SECTION"]))
{
foreach($arResult["SECTION"]["PATH"] as $arPath)
{
$APPLICATION->AddChainItem($arPath["NAME"], $arPath["~SECTION_PAGE_URL"]);
}
}
}
//=============================форма==================================
if (CModule::IncludeModule("iblock"))
{
$bWorkflowIncluded = CModule::IncludeModule("workflow");
$arParams["ID"] = intval($_REQUEST["CODE"]);
$arParams["MAX_FILE_SIZE"] = intval($arParams["MAX_FILE_SIZE"]);
$arParams["PREVIEW_TEXT_USE_HTML_EDITOR"] = $arParams["PREVIEW_TEXT_USE_HTML_EDITOR"] === "Y" && CModule::IncludeModule("fileman");
$arParams["DETAIL_TEXT_USE_HTML_EDITOR"] = $arParams["DETAIL_TEXT_USE_HTML_EDITOR"] === "Y" && CModule::IncludeModule("fileman");
$arParams["RESIZE_IMAGES"] = $arParams["RESIZE_IMAGES"]==="Y";
if(!is_array($arParams["PROPERTY_CODES"]))
{
$arParams["PROPERTY_CODES"] = array();
}
else
{
foreach($arParams["PROPERTY_CODES"] as $i=>$k)
if(strlen($k) <= 0)
unset($arParams["PROPERTY_CODES"][$i]);
}
$arParams["PROPERTY_CODES_REQUIRED"] = is_array($arParams["PROPERTY_CODES_REQUIRED"]) ? $arParams["PROPERTY_CODES_REQUIRED"] : array();
foreach($arParams["PROPERTY_CODES_REQUIRED"] as $key => $value)
if(strlen(trim($value)) <= 0)
unset($arParams["PROPERTY_CODES_REQUIRED"][$key]);
$arParams["USER_MESSAGE_ADD"] = trim($arParams["USER_MESSAGE_ADD"]);
if(strlen($arParams["USER_MESSAGE_ADD"]) <= 0)
$arParams["USER_MESSAGE_ADD"] = GetMessage("IBLOCK_USER_MESSAGE_ADD_DEFAULT");
$arParams["USER_MESSAGE_EDIT"] = trim($arParams["USER_MESSAGE_EDIT"]);
if(strlen($arParams["USER_MESSAGE_EDIT"]) <= 0)
$arParams["USER_MESSAGE_EDIT"] = GetMessage("IBLOCK_USER_MESSAGE_EDIT_DEFAULT");
if (!$bWorkflowIncluded)
{
if ($arParams["STATUS_NEW"] != "N" && $arParams["STATUS_NEW"] != "NEW") $arParams["STATUS_NEW"] = "ANY";
}
if(!is_array($arParams["STATUS"]))
{
if($arParams["STATUS"] === "INACTIVE")
$arParams["STATUS"] = array("INACTIVE");
else
$arParams["STATUS"] = array("ANY");
}
if(!is_array($arParams["GROUPS"]))
$arParams["GROUPS"] = array();
$arGroups = $USER->GetUserGroupArray();
// выделяем пользователей, которые доступ к добавлению/удалению элементов
if ($arParams["ID"] == 0)
{
$bAllowAccess = count(array_intersect($arGroups, $arParams["GROUPS"])) > 0 || $USER->IsAdmin();
}
else
{
// права для правки текущего элемента
$bAllowAccess = $USER->GetID() > 0;
}
$arResult["ERRORS"] = array();
if ($bAllowAccess)
{
// получаем разделы инфоблока
$rsIBlockSectionList = CIBlockSection::GetTreeList(array("ACTIVE"=>"Y", "IBLOCK_ID"=>$arParams["IBLOCK_ID"]));
$arResult["SECTION_LIST"] = array();
while ($arSection = $rsIBlockSectionList->GetNext())
{
$arSection["NAME"] = str_repeat(" . ", $arSection["DEPTH_LEVEL"]).$arSection["NAME"];
$arResult["SECTION_LIST"][$arSection["ID"]] = array(
"VALUE" => $arSection["NAME"]
);
}
$COL_COUNT = intval($arParams["DEFAULT_INPUT_SIZE"]);
if($COL_COUNT < 1)
$COL_COUNT = 30;
$arResult["PROPERTY_LIST"] = array();
$arResult["PROPERTY_LIST_FULL"] = array(
"NAME" => array(
"PROPERTY_TYPE" => "S",
"MULTIPLE" => "N",
"COL_COUNT" => $COL_COUNT,
),
"TAGS" => array(
"PROPERTY_TYPE" => "S",
"MULTIPLE" => "N",
"COL_COUNT" => $COL_COUNT,
),
"DATE_ACTIVE_FROM" => array(
"PROPERTY_TYPE" => "S",
"MULTIPLE" => "N",
"USER_TYPE" => "DateTime",
),
"DATE_ACTIVE_TO" => array(
"PROPERTY_TYPE" => "S",
"MULTIPLE" => "N",
"USER_TYPE" => "DateTime",
),
"IBLOCK_SECTION" => array(
"PROPERTY_TYPE" => "L",
"ROW_COUNT" => "8",
"MULTIPLE" => $arParams["MAX_LEVELS"] == 1 ? "N" : "Y",
"ENUM" => $arResult["SECTION_LIST"],
),
"PREVIEW_TEXT" => array(
"PROPERTY_TYPE" => ($arParams["PREVIEW_TEXT_USE_HTML_EDITOR"]? "HTML": "T"),
"MULTIPLE" => "N",
"ROW_COUNT" => "5",
"COL_COUNT" => $COL_COUNT,
),
"PREVIEW_PICTURE" => array(
"PROPERTY_TYPE" => "F",
"FILE_TYPE" => "jpg, gif, bmp, png, jpeg",
"MULTIPLE" => "N",
),
"DETAIL_TEXT" => array(
"PROPERTY_TYPE" => ($arParams["DETAIL_TEXT_USE_HTML_EDITOR"]? "HTML": "T"),
"MULTIPLE" => "N",
"ROW_COUNT" => "5",
"COL_COUNT" => $COL_COUNT,
),
"DETAIL_PICTURE" => array(
"PROPERTY_TYPE" => "F",
"FILE_TYPE" => "jpg, gif, bmp, png, jpeg",
"MULTIPLE" => "N",
),
);
foreach ($arResult["PROPERTY_LIST_FULL"] as $key => $arr)
{
if (in_array($key, $arParams["PROPERTY_CODES"])) $arResult["PROPERTY_LIST"][] = $key;
}
// получаем параметры property инфоблока
$rsIBLockPropertyList = CIBlockProperty::GetList(array("sort"=>"asc", "name"=>"asc"), array("ACTIVE"=>"Y", "IBLOCK_ID"=>$arParams["IBLOCK_ID"]));
while ($arProperty = $rsIBLockPropertyList->GetNext())
{
// получаем список значений property
if ($arProperty["PROPERTY_TYPE"] == "L")
{
$rsPropertyEnum = CIBlockProperty::GetPropertyEnum($arProperty["ID"]);
$arProperty["ENUM"] = array();
while ($arPropertyEnum = $rsPropertyEnum->GetNext())
{
$arProperty["ENUM"][$arPropertyEnum["ID"]] = $arPropertyEnum;
}
}
if ($arProperty["PROPERTY_TYPE"] == "T")
{
if (empty($arProperty["COL_COUNT"])) $arProperty["COL_COUNT"] = "30";
if (empty($arProperty["ROW_COUNT"])) $arProperty["ROW_COUNT"] = "5";
}
if(strlen($arProperty["USER_TYPE"]) > 0 )
{
$arUserType = CIBlockProperty::GetUserType($arProperty["USER_TYPE"]);
if(array_key_exists("GetPublicEditHTML", $arUserType))
$arProperty["GetPublicEditHTML"] = $arUserType["GetPublicEditHTML"];
else
$arProperty["GetPublicEditHTML"] = false;
}
else
{
$arProperty["GetPublicEditHTML"] = false;
}
// добавляем параметры property для редактирования
if (in_array($arProperty["ID"], $arParams["PROPERTY_CODES"]))
$arResult["PROPERTY_LIST"][] = $arProperty["ID"];
$arResult["PROPERTY_LIST_FULL"][$arProperty["ID"]] = $arProperty;
}
// устанавливаем начальное значение фильтра
$arFilter = array("IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"], "IBLOCK_ID" => $arParams["IBLOCK_ID"], "SHOW_NEW" => "Y");
if ($arParams["ELEMENT_ASSOC"] == "PROPERTY_ID" && strlen($arParams["ELEMENT_ASSOC_PROPERTY"] > 0) && is_array($arResult["PROPERTY_LIST_FULL"][$arParams["ELEMENT_ASSOC_PROPERTY"]]))
{
if ($USER->GetID())
$arFilter["PROPERTY_".$arParams["ELEMENT_ASSOC_PROPERTY"]] = $USER->GetID();
else
$arFilter["ID"] = -1;
}
elseif ($USER->GetID())
{
$arFilter["CREATED_BY"] = $USER->GetID();
}
else
{
$arFilter["ID"] = -1;
}
//устанавливем доступ к текущему элементу
if ($arParams["ID"] > 0)
{
if (empty($arFilter["ID"])) $arFilter["ID"] = $arParams["ID"];
// получаем текущий элемент инфоблока
//echo "<pre>"; print_r($arFilter); echo "</pre>";
$rsIBlockElements = CIBlockElement::GetList(array("SORT" => "ASC"), $arFilter);
if ($arElement = $rsIBlockElements->Fetch())
{
$bAllowAccess = true;
if ($bWorkflowIncluded)
{
$LAST_ID = CIBlockElement::WF_GetLast($arElement['ID']);
if ($LAST_ID != $arElement["ID"])
{
$rsElement = CIBlockElement::GetByID($LAST_ID);
$arElement = $rsElement->Fetch();
}
if (!in_array($arElement["WF_STATUS_ID"], $arParams["STATUS"]))
{
echo ShowError(GetMessage("IBLOCK_ADD_ACCESS_DENIED"));
$bAllowAccess = false;
}
}
else
{
if (in_array("INACTIVE", $arParams["STATUS"]) === true && $arElement["ACTIVE"] !== "N")
{
echo ShowError(GetMessage("IBLOCK_ADD_ACCESS_DENIED"));
$bAllowAccess = false;
}
}
}
else
{
echo ShowError(GetMessage("IBLOCK_ADD_ELEMENT_NOT_FOUND"));
$bAllowAccess = false;
}
}
elseif ($arParams["MAX_USER_ENTRIES"] > 0 && $USER->GetID())
{
$rsIBlockElements = CIBlockElement::GetList(array("SORT" => "ASC"), $arFilter);
$elements_count = $rsIBlockElements->SelectedRowsCount();
if ($elements_count >= $arParams["MAX_USER_ENTRIES"])
{
echo ShowError(GetMessage("IBLOCK_ADD_MAX_ENTRIES_EXCEEDED"));
$bHideAuth = true;
$bAllowAccess = false;
}
}
}
if ($bAllowAccess)
{
// POST данные
if (check_bitrix_sessid() && (!empty($_REQUEST["iblock_submit"]) || !empty($_REQUEST["iblock_apply"])))
{
$SEF_URL = $_REQUEST["SEF_APPLICATION_CUR_PAGE_URL"];
$arResult["SEF_URL"] = $SEF_URL;
$arProperties = $_REQUEST["PROPERTY"];
$arUpdateValues = array();
$arUpdatePropertyValues = array();
// параметры properties
foreach ($arParams["PROPERTY_CODES"] as $i => $propertyID)
{
$arPropertyValue = $arProperties[$propertyID];
if (intval($propertyID) > 0)
{
if ($arResult["PROPERTY_LIST_FULL"][$propertyID]["PROPERTY_TYPE"] != "F")
{
if ($arResult["PROPERTY_LIST_FULL"][$propertyID]["MULTIPLE"] == "Y")
{
$arUpdatePropertyValues[$propertyID] = array();
if (!is_array($arPropertyValue))
{
$arUpdatePropertyValues[$propertyID][] = $arPropertyValue;
}
else
{
foreach ($arPropertyValue as $key => $value)
{
if (
$arResult["PROPERTY_LIST_FULL"][$propertyID]["PROPERTY_TYPE"] == "L" && intval($value) > 0
||
$arResult["PROPERTY_LIST_FULL"][$propertyID]["PROPERTY_TYPE"] != "L" && !empty($value)
)
{
$arUpdatePropertyValues[$propertyID][] = $value;
}
}
}
}
else
{
if ($arResult["PROPERTY_LIST_FULL"][$propertyID]["PROPERTY_TYPE"] != "L")
$arUpdatePropertyValues[$propertyID] = $arPropertyValue[0];
else
$arUpdatePropertyValues[$propertyID] = $arPropertyValue;
}
}
else
{
$arUpdatePropertyValues[$propertyID] = array();
foreach ($arPropertyValue as $key => $value)
{
$arFile = $_FILES["PROPERTY_FILE_".$propertyID."_".$key];
$arFile["del"] = $_REQUEST["DELETE_FILE"][$propertyID][$key] == "Y" ? "Y" : "";
$arUpdatePropertyValues[$propertyID][$key] = $arFile;
if(($arParams["MAX_FILE_SIZE"] > 0) && ($arFile["size"] > $arParams["MAX_FILE_SIZE"]))
$arResult["ERRORS"][] = GetMessage("IBLOCK_ERROR_FILE_TOO_LARGE");
}
if (count($arUpdatePropertyValues[$propertyID]) == 0)
unset($arUpdatePropertyValues[$propertyID]);
}
}
else
{
if ($propertyID == "IBLOCK_SECTION")
{
if (!is_array($arProperties[$propertyID]))
$arProperties[$propertyID] = array($arProperties[$propertyID]);
$arUpdateValues[$propertyID] = $arProperties[$propertyID];
if ($arParams["LEVEL_LAST"] == "Y" && is_array($arUpdateValues[$propertyID]))
{
foreach ($arUpdateValues[$propertyID] as $section_id)
{
$rsChildren = CIBlockSection::GetList(array("SORT" => "ASC"), array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "SECTION_ID" => $section_id));
if ($rsChildren->SelectedRowsCount() > 0)
{
$arResult["ERRORS"][] = GetMessage("IBLOCK_ADD_LEVEL_LAST_ERROR");
break;
}
}
}
if ($arParams["MAX_LEVELS"] > 0 && count($arUpdateValues[$propertyID]) > $arParams["MAX_LEVELS"])
{
$arResult["ERRORS"][] = str_replace("#MAX_LEVELS#", $arParams["MAX_LEVELS"], GetMessage("IBLOCK_ADD_MAX_LEVELS_EXCEEDED"));
}
}
else
{
if($arResult["PROPERTY_LIST_FULL"][$propertyID]["PROPERTY_TYPE"] == "F")
{
$arFile = $_FILES["PROPERTY_FILE_".$propertyID."_0"];
$arFile["del"] = $_REQUEST["DELETE_FILE"][$propertyID][0] == "Y" ? "Y" : "";
$arUpdateValues[$propertyID] = $arFile;
if ($arParams["MAX_FILE_SIZE"] > 0 && $arFile["size"] > $arParams["MAX_FILE_SIZE"])
$arResult["ERRORS"][] = GetMessage("IBLOCK_ERROR_FILE_TOO_LARGE");
}
elseif($arResult["PROPERTY_LIST_FULL"][$propertyID]["PROPERTY_TYPE"] == "HTML")
{
if($propertyID == "DETAIL_TEXT")
$arUpdateValues["DETAIL_TEXT_TYPE"] = "html";
if($propertyID == "PREVIEW_TEXT")
$arUpdateValues["PREVIEW_TEXT_TYPE"] = "html";
$arUpdateValues[$propertyID] = $arProperties[$propertyID][0];
}
else
{
if($propertyID == "DETAIL_TEXT")
$arUpdateValues["DETAIL_TEXT_TYPE"] = "text";
if($propertyID == "PREVIEW_TEXT")
$arUpdateValues["PREVIEW_TEXT_TYPE"] = "text";
$arUpdateValues[$propertyID] = $arProperties[$propertyID][0];
}
}
}
}
foreach ($arParams["PROPERTY_CODES_REQUIRED"] as $key => $propertyID)
{
$bError = false;
$propertyValue = intval($propertyID) > 0 ? $arUpdatePropertyValues[$propertyID] : $arUpdateValues[$propertyID];
//Файлы
if ($arResult["PROPERTY_LIST_FULL"][$propertyID]['PROPERTY_TYPE'] == 'F')
{
//новый элемент
if ($arParams["ID"] <= 0)
{
$bError = true;
if(is_array($propertyValue))
{
if(array_key_exists("tmp_name", $propertyValue) && array_key_exists("size", $propertyValue))
{
if($propertyValue['size'] > 0)
{
$bError = false;
}
}
else
{
foreach ($propertyValue as $arFile)
{
if ($arFile['size'] > 0)
{
$bError = false;
break;
}
}
}
}
}
//поля элемента
elseif (intval($propertyID) <= 0)
{
if ($propertyValue['size'] <= 0)
{
if (intval($arElement[$propertyID]) <= 0 || $propertyValue['del'] == 'Y')
$bError = true;
}
}
//параметры property элемента
else
{
$dbProperty = CIBlockElement::GetProperty(
$arElement["IBLOCK_ID"],
$arParams["ID"],
"sort", "asc",
array("ID"=>$propertyID)
);
$bCount = 0;
while ($arProperty = $dbProperty->Fetch())
$bCount++;
foreach ($propertyValue as $arFile)
{
if ($arFile['size'] > 0)
{
$bCount++;
break;
}
elseif ($arFile['del'] == 'Y')
{
$bCount--;
}
}
$bError = $bCount <= 0;
}
}
elseif ($arResult["PROPERTY_LIST_FULL"][$propertyID]["MULTIPLE"] == "Y" || $arResult["PROPERTY_LIST_FULL"][$propertyID]["PROPERTY_TYPE"] == "L")
{
if(is_array($propertyValue))
{
$bError = true;
foreach($propertyValue as $value)
{
if(strlen($value) > 0)
{
$bError = false;
break;
}
}
}
elseif(strlen($propertyValue) <= 0)
{
$bError = true;
}
}
elseif (is_array($propertyValue) && strlen($propertyValue["VALUE"]) <= 0)
{
$bError = true;
}
elseif (strlen($propertyValue) <= 0)
{
$bError = true;
}
if ($bError)
{
$arResult["ERRORS"][] = str_replace("#PROPERTY_NAME#", intval($propertyID) > 0 ? $arResult["PROPERTY_LIST_FULL"][$propertyID]["NAME"] : (!empty($arParams["CUSTOM_TITLE_".$propertyID]) ? $arParams["CUSTOM_TITLE_".$propertyID] : GetMessage("IBLOCK_FIELD_".$propertyID)), GetMessage("IBLOCK_ADD_ERROR_REQUIRED"));
}
}
// устанавливаем captcha
if ($arParams["USE_CAPTCHA"] == "Y" && $arParams["ID"] <= 0)
{
if (!$APPLICATION->CaptchaCheckCode($_REQUEST["captcha_word"], $_REQUEST["captcha_sid"]))
{
$arResult["ERRORS"][] = GetMessage("IBLOCK_FORM_WRONG_CAPTCHA");
}
}
if (count($arResult["ERRORS"]) == 0)
{
if ($arParams["ELEMENT_ASSOC"] == "PROPERTY_ID")
$arUpdatePropertyValues[$arParams["ELEMENT_ASSOC_PROPERTY"]] = $USER->GetID();
$arUpdateValues["MODIFIED_BY"] = $USER->GetID();
$arUpdateValues["PROPERTY_VALUES"] = $arUpdatePropertyValues;
if ($bWorkflowIncluded && strlen($arParams["STATUS_NEW"]) > 0)
{
$arUpdateValues["WF_STATUS_ID"] = $arParams["STATUS_NEW"];
$arUpdateValues["ACTIVE"] = "Y";
}
else
{
if ($arParams["STATUS_NEW"] == "ANY")
{
$arUpdateValues["ACTIVE"] = "N";
}
elseif ($arParams["STATUS_NEW"] == "N")
{
$arUpdateValues["ACTIVE"] = "Y";
}
else
{
if ($arParams["ID"] <= 0 ) $arUpdateValues["ACTIVE"] = "N";
//$arUpdateValues["ACTIVE"] = $arParams["ID"] > 0 ? "Y" : "N";
}
}
// изменяем существующий элемент
$oElement = new CIBlockElement();
if ($arParams["ID"] > 0)
{
$sAction = "EDIT";
$bFieldProps = array();
foreach($arUpdateValues["PROPERTY_VALUES"] as $prop_id=>$v)
{
$bFieldProps[$prop_id]=true;
}
$dbPropV = CIBlockElement::GetProperty($arParams["IBLOCK_ID"], $arParams["ID"], "sort", "asc", Array("ACTIVE"=>"Y"));
while($arPropV = $dbPropV->Fetch())
{
if(!array_key_exists($arPropV["ID"], $bFieldProps) && $arPropV["PROPERTY_TYPE"] != "F")
{
if($arPropV["MULTIPLE"] == "Y")
{
if(!array_key_exists($arPropV["ID"], $arUpdateValues["PROPERTY_VALUES"]))
$arUpdateValues["PROPERTY_VALUES"][$arPropV["ID"]] = array();
$arUpdateValues["PROPERTY_VALUES"][$arPropV["ID"]][$arPropV["PROPERTY_VALUE_ID"]] = array(
"VALUE" => $arPropV["VALUE"],
"DESCRIPTION" => $arPropV["DESCRIPTION"],
);
}
else
{
$arUpdateValues["PROPERTY_VALUES"][$arPropV["ID"]] = array(
"VALUE" => $arPropV["VALUE"],
"DESCRIPTION" => $arPropV["DESCRIPTION"],
);
}
}
}
if (!$res = $oElement->Update($arParams["ID"], $arUpdateValues, $bWorkflowIncluded, true, $arParams["RESIZE_IMAGES"]))
{
$arResult["ERRORS"][] = $oElement->LAST_ERROR;
}
}
// добавляем новый элемент
else
{
$arUpdateValues["IBLOCK_ID"] = $arParams["IBLOCK_ID"];
// устанавливаем начало активности для новогоif (strlen($arUpdateValues["DATE_ACTIVE_FROM"]) <= 0)
{
$arUpdateValues["DATE_ACTIVE_FROM"] = ConvertTimeStamp(false, "FULL");
}
$sAction = "ADD";
if (!$arParams["ID"] = $oElement->Add($arUpdateValues, $bWorkflowIncluded, true, $arParams["RESIZE_IMAGES"]))
{
$arResult["ERRORS"][] = $oElement->LAST_ERROR;
}
if (!empty($_REQUEST["iblock_apply"]) && strlen($SEF_URL) > 0)
{
if (strpos($SEF_URL, "?") === false) $SEF_URL .= "?edit=Y";
elseif (strpos($SEF_URL, "edit=") === false) $SEF_URL .= "&edit=Y";
$SEF_URL .= "&CODE=".$arParams["ID"];
}
}
}
if (count($arResult["ERRORS"]) == 0)
{
if (!empty($_REQUEST["iblock_submit"]))
{
if (strlen($arParams["LIST_URL"]) > 0)
{
$sRedirectUrl = $arParams["LIST_URL"];
}
else
{
if (strlen($SEF_URL) > 0)
{
$SEF_URL = str_replace("edit=Y", "", $SEF_URL);
$SEF_URL = str_replace("?&", "?", $SEF_URL);
$SEF_URL = str_replace("&&", "&", $SEF_URL);
$sRedirectUrl = $SEF_URL;
}
else
{
$sRedirectUrl = $APPLICATION->GetCurPageParam("", array("edit", "CODE"), $get_index_page=false);
}
}
}
else
{
if (strlen($SEF_URL) > 0)
$sRedirectUrl = $SEF_URL;
else
$sRedirectUrl = $APPLICATION->GetCurPageParam("edit=Y&CODE=".$arParams["ID"], array("edit", "CODE"), $get_index_page=false);
}
$sAction = $sAction == "ADD" ? "ADD" : "EDIT";
$sRedirectUrl .= (strpos($sRedirectUrl, "?") === false ? "?" : "&")."strIMessage=";
$sRedirectUrl .= urlencode($arParams["USER_MESSAGE_".$sAction]);
//echo $sRedirectUrl;
LocalRedirect($sRedirectUrl);
exit();
}
}
//подготавливаем данные для формы
$arResult["PROPERTY_REQUIRED"] = is_array($arParams["PROPERTY_CODES_REQUIRED"]) ? $arParams["PROPERTY_CODES_REQUIRED"] : array();
if ($arParams["ID"] > 0)
{
// $arElement is defined before in elements rights check
$rsElementSections = CIBlockElement::GetElementGroups($arElement["ID"]);
$arElement["IBLOCK_SECTION"] = array();
while ($arSection = $rsElementSections->GetNext())
{
$arElement["IBLOCK_SECTION"][] = array("VALUE" => $arSection["ID"]);
}
$arResult["ELEMENT"] = array();
foreach($arElement as $key => $value)
{
$arResult["ELEMENT"]["~".$key] = $value;
if(!is_array($value) && !is_object($value))
$arResult["ELEMENT"][$key] = htmlspecialchars($value);
else
$arResult["ELEMENT"][$key] = $value;
}
if(
$arParams["DETAIL_TEXT_USE_HTML_EDITOR"]
&& array_key_exists("DETAIL_TEXT", $arResult["ELEMENT"])
&& strtolower($arResult["ELEMENT"]["DETAIL_TEXT_TYPE"]) == "html"
)
$arResult["ELEMENT"]["DETAIL_TEXT"] = $arResult["ELEMENT"]["~DETAIL_TEXT"];
if(
$arParams["PREVIEW_TEXT_USE_HTML_EDITOR"]
&& array_key_exists("PREVIEW_TEXT", $arResult["ELEMENT"])
&& strtolower($arResult["ELEMENT"]["PREVIEW_TEXT_TYPE"]) == "html"
)
$arResult["ELEMENT"]["PREVIEW_TEXT"] = $arResult["ELEMENT"]["~PREVIEW_TEXT"];
//$arResult["ELEMENT"] = $arElement;
// загружаем параметры properties
$rsElementProperties = CIBlockElement::GetProperty($arParams["IBLOCK_ID"], $arElement["ID"], $by="sort", $order="asc");
$arResult["ELEMENT_PROPERTIES"] = array();
while ($arElementProperty = $rsElementProperties->Fetch())
{
if(!array_key_exists($arElementProperty["ID"], $arResult["ELEMENT_PROPERTIES"]))
$arResult["ELEMENT_PROPERTIES"][$arElementProperty["ID"]] = array();
if(is_array($arElementProperty["VALUE"]))
{
$htmlvalue = array();
foreach($arElementProperty["VALUE"] as $k => $v)
{
if(is_array($v))
{
$htmlvalue[$k] = array();
foreach($v as $k1 => $v1)
$htmlvalue[$k][$k1] = htmlspecialchars($v1);
}
else
{
$htmlvalue[$k] = htmlspecialchars($v);
}
}
}
else
{
$htmlvalue = htmlspecialchars($arElementProperty["VALUE"]);
}
$arResult["ELEMENT_PROPERTIES"][$arElementProperty["ID"]][] = array(
"ID" => htmlspecialchars($arElementProperty["ID"]),
"VALUE" => $htmlvalue,
"~VALUE" => $arElementProperty["VALUE"],
"VALUE_ID" => htmlspecialchars($arElementProperty["PROPERTY_VALUE_ID"]),
"VALUE_ENUM" => htmlspecialchars($arElementProperty["VALUE_ENUM"]),
);
}
$arResult["ELEMENT_FILES"] = array();
foreach ($arResult["PROPERTY_LIST"] as $propertyID)
{
$arProperty = $arResult["PROPERTY_LIST_FULL"][$propertyID];
if ($arProperty["PROPERTY_TYPE"] == "F")
{
$arValues = array();
if (intval($propertyID) > 0)
{
foreach ($arResult["ELEMENT_PROPERTIES"][$propertyID] as $arProperty)
{
$arValues[] = $arProperty["VALUE"];
}
}
else
{
$arValues[] = $arResult["ELEMENT"][$propertyID];
}
foreach ($arValues as $value)
{
if ($arFile = CFile::GetFileArray($value))
{
$arFile["IS_IMAGE"] = CFile::IsImage($arFile["FILE_NAME"], $arFile["CONTENT_TYPE"]);
$arResult["ELEMENT_FILES"][$value] = $arFile;
}
}
}
}
$bShowForm = true;
}
else
{
$bShowForm = true;
}
if ($bShowForm)
{
if (count($arResult["ERRORS"]) > 0)
{
//echo "<pre>",htmlspecialchars(print_r($arUpdateValues, true)),"</pre>";
foreach ($arUpdateValues as $key => $value)
{
if ($key == "IBLOCK_SECTION")
{
$arResult["ELEMENT"][$key] = array();
if(!is_array($value))
{
$arResult["ELEMENT"][$key][] = array("VALUE" => htmlspecialchars($value));
}
else
{
foreach ($value as $vkey => $vvalue)
{
$arResult["ELEMENT"][$key][$vkey] = array("VALUE" => htmlspecialchars($vvalue));
}
}
}
elseif ($key != "PROPERTY_VALUES" && $arResult["PROPERTY_LIST_FULL"][$key]["PROPERTY_TYPE"] != "F")
{
$arResult["ELEMENT"][$key] = htmlspecialchars($value);
}
}
foreach ($arUpdatePropertyValues as $key => $value)
{
if ($arResult["PROPERTY_LIST_FULL"][$key]["PROPERTY_TYPE"] != "F")
{
$arResult["ELEMENT_PROPERTIES"][$key] = array();
if(!is_array($value))
{
$value = array(
array("VALUE" => $value),
);
}
foreach($value as $vv)
{
if(is_array($vv) && array_key_exists("VALUE", $vv))
$arResult["ELEMENT_PROPERTIES"][$key][] = array(
"VALUE" => htmlspecialchars($vv["VALUE"])
);
else
$arResult["ELEMENT_PROPERTIES"][$key][] = array(
"VALUE" => htmlspecialchars($vv)
);
}
}
}
}
// подготавливаем captcha
if ($arParams["USE_CAPTCHA"] == "Y" && $arParams["ID"] <= 0)
{
$arResult["CAPTCHA_CODE"] = htmlspecialchars($APPLICATION->CaptchaGetCode());
}
$arResult["MESSAGE"] = htmlspecialcharsex($_REQUEST["strIMessage"]);
if ($op==1)$this->IncludeComponentTemplate();
}
}
if (!$bAllowAccess && !$bHideAuth)
{
//echo ShowError(GetMessage("IBLOCK_ADD_ACCESS_DENIED"));
$APPLICATION->AuthForm("");
}
}
?>
Template.php
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
?>
<!--------------------------------------список вопросов---------------------->
<div class="news-list">
<?
if (CModule::IncludeModule("iblock")):
$IBLOCK_TYPE = $arParams[IBLOCK_TYPE]; // тип инфо-блока
$IBLOCK_ID = $arParams[IBLOCK_ID]; // ID инфо-блока
$CACHE_TIME = 3600; // кэшируем
$arSelect = Array("NAME","ID");
$arFilter = Array("IBLOCK_ID"=>IntVal($IBLOCK_ID), "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array(), $arSelect);
$i=0;
while($ar_fields = $res->GetNext())
{
$i++;
}
?>
<?if($arParams["DISPLAY_TOP_PAGER"]):?>
<?=$arResult["NAV_STRING"]?><br />
<?endif;?>
<?foreach($arResult["ITEMS"] as $arItem):?>
<p class="news-item">
<?if($arParams["DISPLAY_PICTURE"]!="N" && is_array($arItem["PREVIEW_PICTURE"])):?>
<?if(!$arParams["HIDE_LINK_WHEN_NO_DETAIL"] || ($arItem["DETAIL_TEXT"] && $arResult["USER_HAVE_ACCESS"])):?>
<a href="<?=$arItem["DETAIL_PAGE_URL"]?>"><img class="preview_picture" border="0" src="<?=$arItem["PREVIEW_PICTURE"]["SRC"]?>" width="<?=$arItem["PREVIEW_PICTURE"]["WIDTH"]?>" height="<?=$arItem["PREVIEW_PICTURE"]["HEIGHT"]?>" alt="<?=$arItem["NAME"]?>" title="<?=$arItem["NAME"]?>" style="float:left" /></a>
<?else:?>
<img class="preview_picture" border="0" src="<?=$arItem["PREVIEW_PICTURE"]["SRC"]?>" width="<?=$arItem["PREVIEW_PICTURE"]["WIDTH"]?>" height="<?=$arItem["PREVIEW_PICTURE"]["HEIGHT"]?>" alt="<?=$arItem["NAME"]?>" title="<?=$arItem["NAME"]?>" style="float:left" />
<?endif;?>
<?endif?>
<!--========================вывод даты==========================-->
<?if($arParams["DISPLAY_DATE"]!="N" && $arItem["DISPLAY_ACTIVE_FROM"]):?>
<span class="news-date-time"><?echo $arItem["DISPLAY_ACTIVE_FROM"]?></span>
<?endif?>
<!--========================вывод наименования==========================-->
<?if($arParams["DISPLAY_NAME"]!="N" && $arItem["NAME"]):?>
<?if(!$arParams["HIDE_LINK_WHEN_NO_DETAIL"] || ($arItem["DETAIL_TEXT"] && $arResult["USER_HAVE_ACCESS"])):?>
<?echo $arItem["NAME"]?>:<br />
<?else:?>
<span class="name_news"><?echo $arItem["NAME"]?>:</span><br />
<?endif;?>
<?endif;?>
<!--======================...
Подобные документы
Анализ состояния использования сайтов сайтостроения в профессиональном образовании. Особенности сайта училища. Обсуждение аудитории, схемы поведения пользователей. Требования к содержимому и внешнему виду сайта. Модульная сетка, навигация, каналы связи.
дипломная работа [3,3 M], добавлен 07.02.2014Требования к функциональности сайта, информационному и программному обеспечению. Концептуальная модель данных. Затраты на разработку программного изделия. Описание пользовательского интерфейса главной страницы и разделов. Создание контрольного примера.
отчет по практике [1,2 M], добавлен 03.06.2015Вопросы реализации шаблона типового сайта диссертационного совета СевКавГТУ. Разработка базы данных для шаблона сайта с помощью фреймворка Django и Aptana Studio 3. Обоснование требований к техническому обеспечению. Расчет цены программного продукта.
дипломная работа [2,5 M], добавлен 26.09.2012Разработка функциональной структуры, назначение и цели создания web-сайта. Требования к его работе и возможностям, принцип работы и содержание. Продвижение сайта и программа испытаний. Расчет затрат на разработку, обоснование экономической эффективности.
дипломная работа [9,5 M], добавлен 02.08.2015Разработка общей структуры проектируемого сайта. Выбор программных и аппаратных средств для реализации поставленной задачи. Описание дизайна будущего сайта. Рассмотрение основ регистрации, правил построения программной и эксплуатационной документации.
курсовая работа [5,3 M], добавлен 31.07.2014Обзор и анализ используемых технологий, содержания и дизайна сайтов ВУЗов, в том числе созданных на основе CMS. Исследование содержания сайта ПРИПИТ и информационных потребностей различных групп его потенциальных посетителей. Разработка дизайна сайта.
дипломная работа [129,4 K], добавлен 11.03.2010Технические характеристики компьютерных систем. Анализ интернет-сайта филиала предприятия и выявление основных проблем. Обновление структуры и подгонка сайта под современные стандарты с помощью программы WebSite X5. Создание дизайна веб-страницы.
отчет по практике [410,2 K], добавлен 14.01.2015Характеристика типового web-сайта, его роль в работе субъекта экономики, возможные типы и формы реализации, структура и элементы, программное обеспечение. Этапы разработки и создания сайта, его продвижение и поддержка. Требования к рабочему месту.
курсовая работа [38,3 K], добавлен 17.09.2014Анализ предметной области и функций сайта. Разработка структуры базы данных, структуры и дизайна web-сайта. Описание установки CMS "Joomla!" и программной оболочки Denwer, создание гостевой книги, галереи и карты Google, результаты их тестирования.
дипломная работа [2,3 M], добавлен 19.01.2017Правила создания Web-сайта по вопросам медицинского страхования: разработка главной страницы (фреймовая структура), разделов, посвященных вопросам обязательного и добровольного страхования, активной asp-страницы, содержащей опрос для посетителей.
курсовая работа [2,3 M], добавлен 20.06.2010Понятие веб-страницы, ее структура, содержание и назначение. Требования к оформлению страниц и обязательных элементов, особенности навигационной структуры. Разработка проекта веб-сайта для телеканала, публикация данного узла в Интернете и его поддержка.
курсовая работа [2,4 M], добавлен 16.11.2012Этапы создания веб-сайта "Синьор Пекарь": анализ сегмента потребителей и аналогов проекта. Разработка рабочего наброска и карты сайта, перечень требований по содержимому и функциям. Декомпозиция макета на структурные блоки, оптимизация контента и верстка.
курсовая работа [10,0 M], добавлен 19.04.2011Исследование принципов работы, технологии и стандартов IP–телефонии, оценка качества телефонной связи и сжатия речи. Анализ планирования структуры сайта, разработки дизайна, верстки макета. Характеристика регистрации доменного имени и хостинга сайта.
курсовая работа [52,7 K], добавлен 23.12.2011Характеристика деятельности, структуры и функций агентства. Анализ текущей структуры сайта заказа наружной рекламы. Описание функциональной архитектуры и архитектуры данных проектируемого автоматизированного модуля. Проектирование интерфейса пользователя.
дипломная работа [2,0 M], добавлен 22.07.2015Исследование технических возможностей Web Page Maker для проектирования и разработки сайта. Изучение современных Интернет-технологий. Анализ основных этапов создания сайта. Представление текста и графики на web-страницах. Управление объектами страницы.
курсовая работа [804,3 K], добавлен 16.01.2014Разработка структуры сайта: создание карты, макета страницы, обеспечение навигации, определение дополнительных сервисов, выбор технологии. Создание базы данных, написание скриптов и сценариев для реализации имеющихся на сайте функциональных возможностей.
дипломная работа [3,2 M], добавлен 19.02.2013Определение назначения и функций Web-сайта типографии. Характеристика целевой аудитории. Выбор средств разработки и элементов структуры сайта, описание его содержания и анимационных компонентов. Организация доступа к данным, порядок тестирования проекта.
курсовая работа [2,2 M], добавлен 13.01.2013Анализ существующих сайтов образовательный учреждений учебных сайтов Астраханской области. Обзор среды реализации разработки веб-сайта. Требования к официальным сайтам образовательных учреждений. Разработка логической структуры веб-сайта колледжа.
дипломная работа [6,1 M], добавлен 10.06.2014Выбор сред разработки для реализации сайта. Основная концепция и содержание веб-сайта. Роль дизайна сайта в его создании и определение основных требований к его содержанию и внешнему виду. Особенности разработки удобного и красивого интерфейса сайта.
курсовая работа [686,4 K], добавлен 13.06.2022Создание локальной версии Web-сайта компании, оказывающей услуги в сфере "Дизайн помещений". Логическая структура сайта – набор тематических рубрик с распределенными по разделам документами. HTML–коды Web-страниц. Теоретические аспекты создания сайта.
курсовая работа [94,0 K], добавлен 10.05.2011