Вот что нашел.
В файле lib.php[CODE] class Ingredient
{
// инициализация пользовательского свойства для инфоблока
function GetIBlockPropertyDescription()
{
return array(
"PROPERTY_TYPE" => "E",
"USER_TYPE" => "ingredient",
"DESCRIPTION" => "Ингредиент",
'GetPropertyFieldHtml' => array('Ingredient', 'GetPropertyFieldHtml'),
"ConvertToDB" => array("Ingredient","ConvertToDB"),
"ConvertFromDB" => array("Ingredient","ConvertFromDB"),
);
}
function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
{
$value["DESCRIPTION"]=unserialize($value["DESCRIPTION"]);
$arItem = Array(
"ID" => 0,
"IBLOCK_ID" => 0,
"NAME" => ""
);
if(intval($value["VALUE"]) > 0)
{
$arFilter = Array(
"ID" => intval($value["VALUE"]),
"IBLOCK_ID" => $arProperty["LINK_IBLOCK_ID"],
);
$rsItem = CIBlockElement::GetList(Array(), $arFilter, false, false, Array("ID", "IBLOCK_ID", "NAME"));
$arItem = $rsItem->GetNext();
}
$html.=
'Выберите ингредиент: <input name="'.$strHTMLControlName["VALUE"].'" id="'.$strHTMLControlName["VALUE"].'" value="'.htmlspecialcharsex($value["VALUE"]).'" size="5" type="text">'.
' <span id="sp_'.md5($strHTMLControlName["VALUE"]).'_'.$key.'" >'.$arItem["NAME"].'</span>'.
'<input type="button" value="Выбрать" onCl ick="jsUtils.OpenWindow(\'/bitrix/admin/iblock_element_search.php?lang='.LANG.'&IBLOCK_ID='.$arProperty["LINK_IBLOCK_ID"].'&n='.$strHTMLControlName["VALUE"].'\', 600, 500);">'.
' Единица измерения:<input type="text" id="meas" name="'.$strHTMLControlName["DESCRIPTION"].'[0]" value="'.htmlspecialcharsex($value["DESCRIPTION"][0]).'" />'.
' Количество:<input type="text" id="quan" name="'.$strHTMLControlName["DESCRIPTION"].'[1]" value="'.htmlspecialcharsex($value["DESCRIPTION"][1]).'" />'
;
return $html;
}
function GetAdminListViewHTML($arProperty, $value, $strHTMLControlName)
{
return;
}
function ConvertToDB($arProperty, $value) // сохранение в базу
{
$return = false;
if(is_array($value)&& array_key_exists("VALUE", $value))
{
$return = array("VALUE" => serialize($value["VALUE"]));
}
if(is_array($value)&& array_key_exists("DESCRIPTION", $value)) $return["DESCRIPTION"]=serialize($value["DESCRIPTION"]);
return $return;
}
function ConvertFromDB($arProperty, $value) //извлечение из БД
{
$return = false;
if(!is_array($value["VALUE"]))
{
$return = array("VALUE" => unserialize($value["VALUE"]));
}
return $return;
}
}
[/CODE]В файле init.php [CODE]AddEventHandler('iblock', 'OnIBlockPropertyBuildList', array('Ingredient', 'GetIBlockPropertyDescription'));
[/CODE]
Все остальное уже не буду искать. Но думаю разберетесь что Вам надо, что не надо...
В файле lib.php[CODE] class Ingredient
{
// инициализация пользовательского свойства для инфоблока
function GetIBlockPropertyDescription()
{
return array(
"PROPERTY_TYPE" => "E",
"USER_TYPE" => "ingredient",
"DESCRIPTION" => "Ингредиент",
'GetPropertyFieldHtml' => array('Ingredient', 'GetPropertyFieldHtml'),
"ConvertToDB" => array("Ingredient","ConvertToDB"),
"ConvertFromDB" => array("Ingredient","ConvertFromDB"),
);
}
function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
{
$value["DESCRIPTION"]=unserialize($value["DESCRIPTION"]);
$arItem = Array(
"ID" => 0,
"IBLOCK_ID" => 0,
"NAME" => ""
);
if(intval($value["VALUE"]) > 0)
{
$arFilter = Array(
"ID" => intval($value["VALUE"]),
"IBLOCK_ID" => $arProperty["LINK_IBLOCK_ID"],
);
$rsItem = CIBlockElement::GetList(Array(), $arFilter, false, false, Array("ID", "IBLOCK_ID", "NAME"));
$arItem = $rsItem->GetNext();
}
$html.=
'Выберите ингредиент: <input name="'.$strHTMLControlName["VALUE"].'" id="'.$strHTMLControlName["VALUE"].'" value="'.htmlspecialcharsex($value["VALUE"]).'" size="5" type="text">'.
' <span id="sp_'.md5($strHTMLControlName["VALUE"]).'_'.$key.'" >'.$arItem["NAME"].'</span>'.
'<input type="button" value="Выбрать" onCl ick="jsUtils.OpenWindow(\'/bitrix/admin/iblock_element_search.php?lang='.LANG.'&IBLOCK_ID='.$arProperty["LINK_IBLOCK_ID"].'&n='.$strHTMLControlName["VALUE"].'\', 600, 500);">'.
' Единица измерения:<input type="text" id="meas" name="'.$strHTMLControlName["DESCRIPTION"].'[0]" value="'.htmlspecialcharsex($value["DESCRIPTION"][0]).'" />'.
' Количество:<input type="text" id="quan" name="'.$strHTMLControlName["DESCRIPTION"].'[1]" value="'.htmlspecialcharsex($value["DESCRIPTION"][1]).'" />'
;
return $html;
}
function GetAdminListViewHTML($arProperty, $value, $strHTMLControlName)
{
return;
}
function ConvertToDB($arProperty, $value) // сохранение в базу
{
$return = false;
if(is_array($value)&& array_key_exists("VALUE", $value))
{
$return = array("VALUE" => serialize($value["VALUE"]));
}
if(is_array($value)&& array_key_exists("DESCRIPTION", $value)) $return["DESCRIPTION"]=serialize($value["DESCRIPTION"]);
return $return;
}
function ConvertFromDB($arProperty, $value) //извлечение из БД
{
$return = false;
if(!is_array($value["VALUE"]))
{
$return = array("VALUE" => unserialize($value["VALUE"]));
}
return $return;
}
}
[/CODE]В файле init.php [CODE]AddEventHandler('iblock', 'OnIBlockPropertyBuildList', array('Ingredient', 'GetIBlockPropertyDescription'));
[/CODE]
Все остальное уже не буду искать. Но думаю разберетесь что Вам надо, что не надо...