Начало создания плагина
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'
});
} |