Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Новая возможность: пользовательские закладки и действия

00 голосов
4
В версии 5.1.9 (в бете) модуля main появилась поддержка возможности добавления пользовательских закладок и действий в формы редактирования в административной части. В версии 5.1.5 модуля sale формы детальной информации о заказе и редактирования заказа поддерживают эту возможность.

Общая информация по добавлению пользовательских закладок и действий

Для подключения пользовательских закладок и действий необходимо:

1. Зарегистрировать обработчик события через AddEventHandler
Например,
КодAddEventHandler("main", "имя события", "callback метод", 100, "файл, где определен callback метод");
где "имя события" - имя события, на которое нужно вешать обработчик,
"callback метод" - это callback метод, который должен выполнится при возникновении события. Например, array("имя класса", "OnInit")
"файл, где определен callback метод" - скрипт, в котором определен пользовательский класс

Через AddEventHandler обработчик события регистрируется в рамках одного хита. Поэтому регистрировать можно в файле /bitrix/php_interface/init.php

2. Реализовать класс пользовательских закладок
Код <? 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>          <?       }    } } ?>
спросил 27 Июль, 13 от Orkus (240 баллов)

4 Ответы

00 голосов
Для того, чтобы добавить пользовательские закладки и действия в форму редактирования заказа необходимо

1. Зарегистрировать обработчик события OnAdminSaleOrderEdit через AddEventHandler
Например,
КодAddEventHandler("main", "OnAdminSaleOrderEdit", array("CMyCastomOrderEditTabs", "OnInit"), 100, $_SERVER["DOCUMENT_ROOT"]."/some_file.php");

2. Реализовать в файле $_SERVER["DOCUMENT_ROOT"]."/some_file.php" класс CMyCastomOrderEditTabs в виде
Код <? class CMyCastomOrderEditTabs {    function OnInit()    {       return array(          "TABSET" => "MyCompanyOrderEditTabs",          "GetTabs" => array("CMyCastomOrderEditTabs", "GetTabs"),          "ShowTab" => array("CMyCastomOrderEditTabs", "ShowTab"),          "Action" => array("CMyCastomOrderEditTabs", "Action"),          "Check" => array("CMyCastomOrderEditTabs", "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>          <?       }    } } ?>
ответил 27 Июль, 13 от Orkus (240 баллов)
00 голосов
Для того, чтобы добавить пользовательские закладки и действия в форму детальной информации о заказе необходимо

1. Зарегистрировать обработчик события OnAdminSaleOrderView через AddEventHandler
Например,
КодAddEventHandler("main", "OnAdminSaleOrderView", array("CMyCastomOrderViewTabs", "OnInit"), 100, $_SERVER["DOCUMENT_ROOT"]."/some_file.php");

2. Реализовать в файле $_SERVER["DOCUMENT_ROOT"]."/some_file.php" класс CMyCastomOrderViewTabs в виде
Код <? class CMyCastomOrderViewTabs {    function OnInit()    {       return array(          "TABSET" => "MyCompanyOrderViewTabs",          "GetTabs" => array("CMyCastomOrderViewTabs", "GetTabs"),          "ShowTab" => array("CMyCastomOrderViewTabs", "ShowTab"),       );    }    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>          <?       }    } } ?>
Пользовательские действия форма детальной информации о товаре не поддерживает. Соответственно их не нужно реализовывать.
ответил 23 Сен, 13 от Orkus (240 баллов)
00 голосов
В массиве $arArgs обе формы передают код текущего заказа в ассоциативном массиве
Код array(    "ID" => $ID )

$_GET, $_POST, $_REQUEST в методах доступны.
ответил 22 Дек, 13 от Orkus (240 баллов)
00 голосов
Нужно событие OnAdminMainUserEdit (добавление закладки на странице редактирования пользователя). Планируется?
ответил 07 Апр, 14 от Sage (460 баллов)

Похожие вопросы

0 голосов
3 ответов
0 голосов
5 ответов
спросил 23 Сен, 13 от Hellix (320 баллов)
0 голосов
3 ответов
спросил 21 Март, 14 от HeJIJIu (630 баллов)
0 голосов
3 ответов
0 голосов
5 ответов
спросил 03 Июль, 13 от Mowo (120 баллов)