то ждем ваше обращение в нашей службе тех поддержки.
Использование событий
Для дополнения и неявного изменения (без вмешательства в код компонента) логики работы используйте технологию Событий. Рассмотрим пример использования событий.
Прямое назначение ответственного в Техподдержке
Есть потребность напрямую назначать ответственного за обращение в техподдержку. Такое бывает, когда сотрудники компании хорошо знают друг друга, либо когда клиенты ТП желают общаться с конкретным сотрудником.
Есть два варианта решения данной задачи:
- Модифицируется код стандартного компонента support.wizard в файлах component.php и .description.php. Также, для большей гибкости, можно установить переменную-флаг в файле .parameters.php.
Такой подход для непосвященного в такие понятия, как События в Bitrix Framework наиболее очевиден. В результате, задача резко усложняется - нужно разбираться в логике кода компонента, чтобы понять, где нужно добавить свой функционал, а также, не стоит забывать о том, что Bitrix Framework постоянно обновляется. Решение довольно трудоёмкое.
- Достаточно будет использовать События и модифицировать шаблон.
Теория Событий вам знакома. Вкратце повторимся: в код ядра, обычно в начало и конец вызова системной функции, разработчики уже вставили вызов системной функции, в нашем случае это: CTicket::ExecuteEvents. Если мы хотим дополнить эту функцию своей, то в файле /bitrix/php_intrface/init.php
пишем:
AddEventHandler("support", "OnAfterTicketAdd", "MyHandler");
Если вызываемая функция принадлежит классу, то нужно вместо MyHandler написать array("","");
. Код файла init.php:
<? // В массиве $arFields передаются все параметры, которые были переданы созданному тикету + ID и MID тикета // $_REQUEST["PERSONAL"] - Значение, которое мы получаем из нашего шаблона (тега select) function AfterTicketAdd($arFields) { if ($_REQUEST["PERSONAL"]>0) { //Добавляем к уже созданому тикету свойство "RESPONSIBLE_USER_ID"=>CTicket::Set(array( "RESPONSIBLE_USER_ID"=>$_REQUEST["PERSONAL"]), $intMessage, $arFields['ID'], "N" ); } } ?>
$intMessage
- ID нового сообщения, нам не нужно, "N"
- здесь указывается, что права на добавление нам проверять не надо.
Модификация шаблона
- Скопируйте шаблон системного компонента
- Добавьте в шаблон следующий код:
<? use Bitrix\Main\Localization\Loc; // список всех сотрудников техподдержки // полученный через CTicket::GetSupportTeamList() $teamList = $arResult['TEAM_LIST']; ?> <select name="PERSONAL" id="PERSONAL"> <option><?= Loc::getMessage('select_any') ?></option> <? foreach ($teamList as $item): ?> <option value="<?= $item['REFERENCE_ID'] ?>"><?= $item['REFERENCE'] ?></option> <? endforeach ?> </select>
- При необходимости допишите локализацию на вашем родном языке.
- Добавьте шаблон в файл ticket_edit.php.
Назад в раздел