use Bitrix\Catalog\Access\AccessController;
use Bitrix\Catalog\Access\ActionDictionary;
use Bitrix\Iblock\PropertyTable;
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
/** @global CMain $APPLICATION */
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/catalog/prolog.php");
IncludeModuleLangFile(__FILE__);
if(!CModule::IncludeModule("catalog"))
{
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
ShowError(GetMessage("CAT_CEDIT_CATALOG_MODULE_IS_MISSING"));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
}
$selfFolderUrl = $adminPage->getSelfFolderUrl();
$strWarning = "";
$bVarsFromForm = false;
$IBLOCK_ID = intval($_REQUEST["IBLOCK_ID"]);
$arIBlock = CIBlock::GetArrayByID($IBLOCK_ID);
if($arIBlock)
{
$bBadBlock = !(
CIBlockRights::UserHasRightTo($IBLOCK_ID, $IBLOCK_ID, "iblock_edit")
|| AccessController::getCurrent()->check(ActionDictionary::ACTION_CATALOG_SETTINGS_ACCESS)
);
}
else
{
$bBadBlock = true;
}
if($bBadBlock)
{
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
ShowError(GetMessage("CAT_CEDIT_BAD_IBLOCK"));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
}
$aTabs = array(
array(
"DIV" => "edit1",
"TAB" => GetMessage("CAT_CEDIT_MAIN_TAB"),
"ICON" => "iblock_section",
"TITLE" => GetMessage("CAT_CEDIT_MAIN_TAB_TITLE"),
),
array(
"DIV" => "edit3",
"TAB" => GetMessage("CAT_CEDIT_PROPERTY_TAB"),
"ICON" => "iblock_section",
"TITLE" => GetMessage("CAT_CEDIT_PROPERTY_TAB_TITLE"),
),
);
$tabControl = new CAdminForm("form_catalog_edit_".$IBLOCK_ID, $aTabs);
if(
$_SERVER["REQUEST_METHOD"] == "POST"
&& (
(isset($_REQUEST["save"]) && $_REQUEST["save"] <> '')
|| (isset($_REQUEST["apply"]) && $_REQUEST["apply"] <> '')
)
&& check_bitrix_sessid()
)
{
if($_POST["NAME"] != $arIBlock["NAME"])
{
$ib = new CIBlock;
$res = $ib->Update($IBLOCK_ID, array(
"NAME" => $_POST["NAME"],
));
if(!$res)
{
$strWarning .= $ib->LAST_ERROR."
";
$bVarsFromForm = true;
}
}
if($arIBlock["SECTION_PROPERTY"] != "Y")
{
$ib = new CIBlock;
$res = $ib->Update($IBLOCK_ID, array(
"SECTION_PROPERTY" => "Y",
));
if(!$res)
{
$strWarning .= $ib->LAST_ERROR."
";
$bVarsFromForm = true;
}
}
$arCatalog = CCatalogSku::GetInfoByProductIBlock($IBLOCK_ID);
if(is_array($arCatalog) && CIBlock::GetArrayByID($arCatalog["IBLOCK_ID"], "SECTION_PROPERTY") != "Y")
{
$ib = new CIBlock;
$res = $ib->Update($arCatalog["IBLOCK_ID"], array(
"SECTION_PROPERTY" => "Y",
));
if(!$res)
{
$strWarning .= $ib->LAST_ERROR."
";
$bVarsFromForm = true;
}
}
if($strWarning === "")
{
$TextParser = new CBXSanitizer();
$TextParser->SetLevel(CBXSanitizer::SECURE_LEVEL_LOW);
$TextParser->ApplyDoubleEncode(false);
$props = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $IBLOCK_ID, "CHECK_PERMISSIONS" => "N"));
while($p = $props->Fetch())
{
if(
isset($_POST["SECTION_PROPERTY"])
&& is_array($_POST["SECTION_PROPERTY"])
&& array_key_exists($p["ID"], $_POST["SECTION_PROPERTY"])
&& $_POST["SECTION_PROPERTY"][$p["ID"]]["SHOW"] === "Y"
)
{
$filterHint = trim($_POST["SECTION_PROPERTY"][$p["ID"]]["FILTER_HINT"]);
if ($filterHint)
{
$filterHint = $TextParser->SanitizeHtml($filterHint);
}
CIBlockSectionPropertyLink::Set(0, $p["ID"], array(
"SMART_FILTER" => $_POST["SECTION_PROPERTY"][$p["ID"]]["SMART_FILTER"],
"DISPLAY_TYPE" => $_POST["SECTION_PROPERTY"][$p["ID"]]["DISPLAY_TYPE"],
"DISPLAY_EXPANDED" => $_POST["SECTION_PROPERTY"][$p["ID"]]["DISPLAY_EXPANDED"],
"FILTER_HINT" => $filterHint,
));
}
else
{
CIBlockSectionPropertyLink::Delete(0, $p["ID"]);
}
}
if (is_array($arCatalog))
{
$props = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $arCatalog["IBLOCK_ID"], "CHECK_PERMISSIONS" => "N"));
while($p = $props->Fetch())
{
if(
isset($_POST["SECTION_PROPERTY"])
&& is_array($_POST["SECTION_PROPERTY"])
&& array_key_exists($p["ID"], $_POST["SECTION_PROPERTY"])
&& $_POST["SECTION_PROPERTY"][$p["ID"]]["SHOW"] === "Y"
)
{
$filterHint = trim($_POST["SECTION_PROPERTY"][$p["ID"]]["FILTER_HINT"]);
if ($filterHint)
{
$filterHint = $TextParser->SanitizeHtml($filterHint);
}
CIBlockSectionPropertyLink::Set(0, $p["ID"], array(
"SMART_FILTER" => $_POST["SECTION_PROPERTY"][$p["ID"]]["SMART_FILTER"],
"DISPLAY_TYPE" => $_POST["SECTION_PROPERTY"][$p["ID"]]["DISPLAY_TYPE"],
"DISPLAY_EXPANDED" => $_POST["SECTION_PROPERTY"][$p["ID"]]["DISPLAY_EXPANDED"],
"IBLOCK_ID" => $IBLOCK_ID,
"FILTER_HINT" => $filterHint,
));
}
else
{
CIBlockSectionPropertyLink::Delete(0, $p["ID"]);
}
}
}
$redirectUrl = $selfFolderUrl."cat_catalog_edit.php?lang=".LANGUAGE_ID."&IBLOCK_ID=".$IBLOCK_ID."&".$tabControl->ActiveTabParam();
$adminSidePanelHelper->reloadPage($redirectUrl, ($_REQUEST["apply"] <> '' ? "apply" : "save"));
$redirectUrl = $adminSidePanelHelper->setDefaultQueryParams($redirectUrl);
LocalRedirect($redirectUrl);
}
}
ClearVars("str_");
if($bVarsFromForm)
$str_NAME = $_POST["NAME"];
else
$str_NAME = $arIBlock["NAME"];
$APPLICATION->SetTitle(GetMessage("CAT_CEDIT_EDIT_TITLE", array("#IBLOCK_NAME#"=>$arIBlock["NAME"])));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
if($strWarning)
CAdminMessage::ShowOldStyleError($strWarning."
");
$tabControl->BeginEpilogContent();
echo bitrix_sessid_post();
$tabControl->EndEpilogContent();
$actionUrl = $selfFolderUrl."cat_catalog_edit.php?lang=".LANGUAGE_ID."&IBLOCK_ID=".$IBLOCK_ID."";
$actionUrl = $adminSidePanelHelper->setDefaultQueryParams($actionUrl);
$tabControl->Begin(array("FORM_ACTION" => $actionUrl));
$tabControl->BeginNextFormTab();
$tabControl->AddEditField("NAME", GetMessage("IBLOCK_FIELD_NAME").":", true, array("size" => 50, "maxlength" => 255), $str_NAME);
$tabControl->BeginNextFormTab();
$tabControl->BeginCustomField("SECTION_PROPERTY", GetMessage("CAT_CEDIT_SECTION_PROPERTY_FIELD"));
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/iblock/admin_tools.php");
$editor = new CEditorPopupControl();
?>
][SHOW]" id="hidden_SECTION_PROPERTY_" value=""> | if($arProp['PROPERTY_TYPE'] == "S" && !$arProp['USER_TYPE']) echo GetMessage("IBLOCK_PROP_S"); elseif($arProp['PROPERTY_TYPE'] == "N" && !$arProp['USER_TYPE']) echo GetMessage("IBLOCK_PROP_N"); elseif($arProp['PROPERTY_TYPE'] == "L" && !$arProp['USER_TYPE']) echo GetMessage("IBLOCK_PROP_L"); elseif($arProp['PROPERTY_TYPE'] == "F" && !$arProp['USER_TYPE']) echo GetMessage("IBLOCK_PROP_F"); elseif($arProp['PROPERTY_TYPE'] == "G" && !$arProp['USER_TYPE']) echo GetMessage("IBLOCK_PROP_G"); elseif($arProp['PROPERTY_TYPE'] == "E" && !$arProp['USER_TYPE']) echo GetMessage("IBLOCK_PROP_E"); elseif($arProp['USER_TYPE'] && is_array($ar = CIBlockProperty::GetUserType($arProp['USER_TYPE']))) echo htmlspecialcharsbx($ar["DESCRIPTION"]); else echo GetMessage("IBLOCK_PROP_S"); ?> | echo ''; ?> | $displayTypes = CIBlockSectionPropertyLink::getDisplayTypes($arProp["PROPERTY_TYPE"], $arProp["USER_TYPE"]); if ($displayTypes) { echo SelectBoxFromArray('SECTION_PROPERTY['.$arProp['ID'].'][DISPLAY_TYPE]', array( "REFERENCE_ID" => array_keys($displayTypes), "REFERENCE" => array_values($displayTypes), ), $linkExists ? $arLink["DISPLAY_TYPE"] : '', '', ''); } else { echo ' '; } ?> | echo ''; ?> | if ($fileProperty) { echo ' '; } elseif (!$linkExists || $arLink["INHERITED"] == "N") { $filterHint = ($linkExists ? (string)$arLink['FILTER_HINT'] : ''); echo $editor->getControlHtml('SECTION_PROPERTY['.$arProp['ID'].'][FILTER_HINT]', $filterHint, 255); } elseif ($linkExists && $arLink['FILTER_HINT'] <> '') { echo CTextParser::closeTags($arLink['FILTER_HINT']); } else { echo ' '; } ?> | if(!$linkExists || $arLink["INHERITED"] == "N") echo ''.GetMessage("CAT_CEDIT_PROP_TABLE_ACTION_HIDE").''; else echo ' '; ?> |