• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/comp_parameters.php
  • Класс: CIBlockParameters
  • Вызов: CIBlockParameters::GetInheritedPropertyTemplateElementMenuItems
static function GetInheritedPropertyTemplateElementMenuItems($iblock_id, $action_function, $menuID, $inputID = "")
{
	$result = array();
	$result["this"] = array(
		"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_ELEMENT"),
		"MENU" => array(
			array(
				"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_ELEMENT_NAME"),
				"ONCLICK" => "$action_function('{=this.Name}', '$menuID', '$inputID')",
			),
			array(
				"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_ELEMENT_LOWER_NAME"),
				"ONCLICK" => "$action_function('{=lower this.Name}', '$menuID', '$inputID')",
			),
			array(
				"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_ELEMENT_CODE"),
				"ONCLICK" => "$action_function('{=this.Code}', '$menuID', '$inputID')",
			),
			array(
				"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_ELEMENT_PREVIEW_TEXT"),
				"ONCLICK" => "$action_function('{=this.PreviewText}', '$menuID', '$inputID')",
			),
			array(
				"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_ELEMENT_DETAIL_TEXT"),
				"ONCLICK" => "$action_function('{=this.DetailText}', '$menuID', '$inputID')",
			),
		),
	);
	if ($iblock_id > 0)
	{
		$result["properties"] = array(
			"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_PROPERTIES"),
			"MENU" => array(
			),
		);
		foreach (self::getIblockElementProperties($iblock_id) as $property)
		{
			if ($property["PROPERTY_TYPE"] != "F")
			{
				$result["properties"]["MENU"][] = array(
					"TEXT" => $property["NAME"],
					"ONCLICK" => "$action_function('{=this.property.".($property["CODE"]!=""? $property["CODE"]: $property["ID"])."}', '$menuID', '$inputID')",
				);
			}
		}
	}
	$result["parent"] = array(
		"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_PARENT"),
		"MENU" => array(
			array(
				"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_PARENT_NAME"),
				"ONCLICK" => "$action_function('{=parent.Name}', '$menuID', '$inputID')",
			),
			array(
				"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_PARENT_CODE"),
				"ONCLICK" => "$action_function('{=parent.Code}', '$menuID', '$inputID')",
			),
			array(
				"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_PARENT_TEXT"),
				"ONCLICK" => "$action_function('{=parent.PreviewText}', '$menuID', '$inputID')",
			),
		),
	);
	$result["iblock"] = array(
		"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_IBLOCK"),
		"MENU" => array(
			array(
				"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_IBLOCK_NAME"),
				"ONCLICK" => "$action_function('{=iblock.Name}', '$menuID', '$inputID')",
			),
			array(
				"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_IBLOCK_CODE"),
				"ONCLICK" => "$action_function('{=iblock.Code}', '$menuID', '$inputID')",
			),
			array(
				"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_IBLOCK_TEXT"),
				"ONCLICK" => "$action_function('{=iblock.PreviewText}', '$menuID', '$inputID')",
			),
		),
	);
	$arCatalog = false;
	$showCatalogSeo = false;
	if (self::$catalogIncluded === null)
		self::$catalogIncluded = Loader::includeModule('catalog');
	if (self::$catalogIncluded)
	{
		if ($iblock_id > 0)
			$arCatalog = CCatalogSku::GetInfoByIBlock($iblock_id);
		if (is_array($arCatalog))
		{
			$showCatalogSeo = ($arCatalog['CATALOG_TYPE'] != CCatalogSku::TYPE_PRODUCT);
			if ($arCatalog['CATALOG_TYPE'] == CCatalogSku::TYPE_PRODUCT || $arCatalog['CATALOG_TYPE'] == CCatalogSku::TYPE_FULL)
			{
				$result["sku_properties"] = array(
					"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_SKU_PROPERTIES"),
					"MENU" => array(),
				);
				$rsProperty = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $arCatalog["IBLOCK_ID"]));
				while ($property = $rsProperty->fetch())
				{
					if ($property["PROPERTY_TYPE"] != "F")
					{
						$result["sku_properties"]["MENU"][] = array(
							"TEXT" => $property["NAME"],
							"ONCLICK" => "$action_function('{=concat {=distinct this.catalog.sku.property.".($property["CODE"] != "" ? $property["CODE"] : $property["ID"])." ", "}}', '$menuID', '$inputID')",
						);
					}
				}
				$result["sku_price"] = array(
					"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_SKU_PRICE"),
					"MENU" => array(),
				);
				foreach (self::getCatalogPrices() as $price)
				{
					if (preg_match("/^[a-zA-Z0-9]+$/", $price["NAME"]))
					{
						$result["sku_price"]["MENU"][] = array(
							"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_MIN_PRICE")." ".$price["NAME"],
							"ONCLICK" => "$action_function('{=min this.catalog.sku.price.".$price["NAME"]."}', '$menuID', '$inputID')",
						);
						$result["sku_price"]["MENU"][] = array(
							"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_MAX_PRICE")." ".$price["NAME"],
							"ONCLICK" => "$action_function('{=max this.catalog.sku.price.".$price["NAME"]."}', '$menuID', '$inputID')",
						);
					}
					else
					{
						$result["sku_price"]["MENU"][] = array(
							"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_MIN_PRICE")." ".$price["NAME"],
							"ONCLICK" => "$action_function('{=min this.catalog.sku.price.".$price["ID"]."}', '$menuID', '$inputID')",
						);
						$result["sku_price"]["MENU"][] = array(
							"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_MAX_PRICE")." ".$price["NAME"],
							"ONCLICK" => "$action_function('{=max this.catalog.sku.price.".$price["ID"]."}', '$menuID', '$inputID')",
						);
					}
				}
			}

			if ($showCatalogSeo)
			{
				$result["catalog"] = array(
					"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_CATALOG"),
					"MENU" => array(
						array(
							"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_CATALOG_WEIGHT"),
							"ONCLICK" => "$action_function('{=this.catalog.weight}', '$menuID', '$inputID')",
						),
						array(
							"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_CATALOG_MEASURE"),
							"ONCLICK" => "$action_function('{=this.catalog.measure}', '$menuID', '$inputID')",
						),
					),
				);
				$result["price"] = array(
					"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_PRICE"),
					"MENU" => array(),
				);
				foreach (self::getCatalogPrices() as $price)
				{
					if (preg_match("/^[a-zA-Z0-9]+$/", $price["NAME"]))
						$result["price"]["MENU"][] = array(
							"TEXT" => $price["NAME"],
							"ONCLICK" => "$action_function('{=this.catalog.price.".$price["NAME"]."}', '$menuID', '$inputID')",
						);
					else
						$result["price"]["MENU"][] = array(
							"TEXT" => $price["NAME"],
							"ONCLICK" => "$action_function('{=this.catalog.price.".$price["ID"]."}', '$menuID', '$inputID')",
						);
				}
				$result["store"] = array(
					"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_STORE"),
					"MENU" => array(),
				);
				foreach (self::getCatalogStores() as $store)
				{
					$result["store"]["MENU"][] = array(
						"TEXT" => ($store["TITLE"] != '' ? $store["TITLE"] : $store["ADDRESS"]),
						"ONCLICK" => "$action_function('{=catalog.store.".$store["ID"].".name}', '$menuID', '$inputID')",
					);
				}
			}
		}
	}
	$result["misc"] = array(
		"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_MISC"),
		"MENU" => array(),
	);
	$result["misc"]["MENU"][] =  array(
		"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_SECTIONS_PATH"),
		"ONCLICK" => "$action_function('{=concat this.sections.name " / "}', '$menuID', '$inputID')",
	);
	if (self::$catalogIncluded)
	{
		if ($showCatalogSeo)
		{
			$result["misc"]["MENU"][] = array(
				"TEXT" => Loc::getMessage("IB_COMPLIB_POPUP_STORE_LIST"),
				"ONCLICK" => "$action_function('{=concat catalog.store ", "}', '$menuID', '$inputID')",
			);
		}
	}
	$r = array();
	foreach($result as $category)
	{
		if (!empty($category) && !empty($category["MENU"]))
		{
			$r[] = $category;
		}
	}
	return $r;
}