Начало создания плагина
1) Создать папку Plugins в нужном модуле. В ней будут храниться модули.
2) Создать файл в формате: ModuleName_PluginName.pm
Пример: Maps2_Msgs.pm
3) Базовая структура плагина:
Code Block | ||||
---|---|---|---|---|
| ||||
package ModuleName::Plugins::PluginName; use strict; use warnings FATAL => 'all'; my ($admin, $CONF, $db); my $json; my Abills::HTML $html; my $lang; my $Msgs; my $Maps_view; #********************************************************** =head2 new($html, $lang) =cut #********************************************************** sub new { my $class = shift; $db = shift; $admin = shift; $CONF = shift; my $attr = shift; $html = $attr->{HTML} if $attr->{HTML}; $lang = $attr->{LANG} if $attr->{LANG}; $Msgs = $attr->{MSGS} if $attr->{MSGS}; my $self = { MODULE => 'MODULE_NAME' }; #Если нужно подключить другой пакет, то используем следующий вид #use Maps2::Maps_view; #$Maps_view = Maps2::Maps_view->new($db, $admin, $CONF, { HTML => $html, LANG => $lang }); bless($self, $class); return $self; } #********************************************************** =head2 plugin_info() =cut #********************************************************** sub plugin_info { return { NAME => 'Название плагина', DESCR => 'Описание плагина' }; } 1; |
Создания плагина вида "в колонке Управление/внизу тикета"
Эти виды плагинов создати для отображения/изменения информации
1) Нужно изменить функцию plugin_info на:
Code Block | ||||
---|---|---|---|---|
| ||||
#********************************************************** =head2 plugin_info() =cut #********************************************************** sub plugin_info { return { NAME => 'Название плагина', POSITION => 'RIGHT', DESCR => 'Описание плагина' }; } |
Где POSITION может быть двох типов:
- RIGHT - Плагины в колонке Управление
- BOTTOM - Плагины внизу тикета в виде таблиц
2) Создать функцию plugin_show. Функция должна возвращать строку.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
#********************************************************** =head2 plugin_show($attr) Arguments: Return: =cut #********************************************************** sub plugin_show { my $self = shift; my ($attr) = @_; $attr->{index} ||= $attr->{qindex}; return '' if !$attr->{index}; $attr->{UID} ||= 0; $Msgs->{ID} ||= 0; my $url = "qindex=$attr->{index}&UID=$attr->{UID}&ID=$Msgs->{ID}&header=2"; $url .= ($CONF->{DOCS_PDF_PRINT}) ? '&pdf=1' : ''; $url .= "&PLUGIN=$self->{PLUGIN_NAME}"; return $html->button('', $url, { class => 'btn btn-default', ICON => 'glyphicon glyphicon-print print', TITLE => $lang->{PRINT}, ex_params => 'target=new, data-button-group=1' }); } |
Создания плагина вида "перед добавлением заявки/перед отправкой ответа на зявку"
При создании плагина, который будет срабатывать перед добавлением заявки нужно добавить параметр BEFORE_CREATE значение которого равно масиву из названий функций, которые будут выполняться.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
#********************************************************** =head2 plugin_info() =cut #********************************************************** sub plugin_info { return { NAME => 'Название плагина', BEFORE_CREATE => [ 'Function1_name', 'Function2' ], DESCR => 'Описание плагина' }; } |