В версии 5.1.9 (в бете) модуля [B]main[/B] появилась поддержка возможности добавления пользовательских закладок и действий в формы редактирования в административной части. В версии 5.1.5 модуля [B]sale[/B] формы детальной информации о заказе и редактирования заказа поддерживают эту возможность.
Общая информация по добавлению пользовательских закладок и действий
Для подключения пользовательских закладок и действий необходимо:
1. Зарегистрировать обработчик события через [I]AddEventHandler[/I]
Например,
[I][CODE]AddEventHandler("main", "имя события", "callback метод", 100, "файл, где определен callback метод");[/CODE][/I]
где [I]"имя события"[/I] - имя события, на которое нужно вешать обработчик,
[I]"callback метод"[/I] - это callback метод, который должен выполнится при возникновении события. Например, [I]array("имя класса", "OnInit")[/I]
[I]"файл, где определен callback метод"[/I] - скрипт, в котором определен пользовательский класс
Через [I]AddEventHandler[/I] обработчик события регистрируется в рамках одного хита. Поэтому регистрировать можно в файле [I]/bitrix/php_interface/init.php[/I]
2. Реализовать класс пользовательских закладок
[I][CODE]
<?
class <имя класса>
{
function OnInit()
{
return array(
"TABSET" => "уникальное в рамках события имя",
"GetTabs" => array("<имя класса>", "GetTabs"),
"ShowTab" => array("<имя класса>", "ShowTab"),
"Action" => array("<имя класса>", "Action"),
"Check" => array("<имя класса>", "Check"),
);
}
function Action($arArgs)
{
// Основные данные сохранены. Делаем тут действия.
// Возвращаем True в случае успеха и False - в случае ошибки
// В случае ошибки делаем так же $GLOBALS["APPLICATION"]->ThrowException("Ошибка!!!", "ERROR");
}
function Check($arArgs)
{
// Основные данные еще не сохранялись. Делаем тут разные проверки.
// Возвращаем True, если можно все схранять, иначе False
// В случае False делаем так же $GLOBALS["APPLICATION"]->ThrowException("Ошибка!!!", "ERROR");
}
function GetTabs($arArgs)
{
// SORT - после какого стандартного таба вставлять. Не установлено - после последнего
$arTabs = array(
array("DIV" => "edit1", "TAB" => "Кастом11", "ICON" => "sale", "TITLE" => "Кастомная закладка 11", "SORT" => 1),
);
return $arTabs;
}
function ShowTab($divName, $arArgs, $bVarsFromForm)
{
if ($divName == "edit1")
{
?>
<tr>
<td width="40%">Кастомное поле 11:</td>
<td width="60%"><input type="text" name="zzzzzzzzz"></td>
</tr>
<?
}
}
}
?>
[/CODE][/I]