В данном разделе будет описано как создавать собственные модули для системы Abills.

Структурная схема системы.


Начало создания модуля.

Все модули системы находятся в папке /usr/abills/Abills/modules/

Название модуля лучше всего делать с заглавной буквы New_module

Название модуля модуля не должно быть длиннее 14 символов


В каталоге модуля обязательно должны находится 2 файла: webinterface и config.

webinterface - Библиотека функций модуля

config            Конфигурационный файл модуля

Включение модуля в конфигурационном файле: libexec/config.pl

@MODULES = (
  'New_module'
);



Примеры работы с файлом config

%FUNCTIONS_LIST список доступных функций в интерфейсе администратора. Каждая функция объявляется отдельной переменной хеш маcива и имеет следующую структуру. 


Рассмотрим пример:


%FUNCTIONS_LIST = ( 
  "01:0:Главное меню модуля:null:"                                 => 5,
  "02:1:Главная функция:main_function:"                            => 5, 
  "10:1:Вторая функция:null"                                       => 5, 
  "11:10:1 вложенная во вторую функцию:second_main_function:"      => 5, 
  "12:10:2 вложенная во вторую функцию:second_second_function:UID" => 5, 
);













%FUNCTIONS_LIST список доступных функций в интерфейсе администратора. Каждая функция объявляется отдельной переменной хеш масива и имеет следующую структуру. 


Рассмотрим пример:

"12:10:2 вложенная во вторую функцию:second_second_function:UID" => 5,


ПараметрОписание
12Номер функции в меню в данном модуле
10Номер родительской функции. Если 0 (ноль) функция является корневой. Если значение больше нуля то функция располагается в меню под родительской функцией
2 вложенная во вторую функцию
Название функции в меню панели управления. Можно использовать %lang переменные для локализации.
second_second_function
Название фукции которая выполняется при нажатии соответственного меню
UIDДополнительные параметры. Они могут быть и не объявлены. Если объявляются тогда меню показывается только если данные доп параметры присутствуют HTTP запросе. 
Например ели объявлен параметр UID то данная функция будет отображаться только если в запросе он присутствует. Пример запроса: http://your.host:9443/index.cgi?UID=15
5Номер корневого каталога в котором разместить меню. Номера корневых меню: 
1 - Клиенты 
2 - Оплаты 
3 - Снятие денег 
4 - Отчёт 
5 - Настройка 
6 - Мониторинг 
7 - Поиск 
8 - Обслуживание 
9 - Профиль



%FUNCTIONS_LIST = (
  "01:0:Главное меню модуля:null:"                                 => 5,
  "02:1:Главная функция:main_function:"                            => 5,
  "10:1:Вторая функция:null"                                       => 5,
  "11:10:1 вложенная во вторую функцию:second_main_function:"      => 5,
  "12:10:2 вложенная во вторую функцию:second_second_function:UID" => 5,
);


%USER_FUNCTION_LISTСписок функций личного кабинета пользователя. Функции формируются за тем же правилом что и функции интерфейса администратора.


%USER_FUNCTION_LIST = (
  "01:0:Главное меню в клиентском кабинете:null:"  => 0,
  "02:1:Главная функция в меню:client_main_function:"  => 1,
);


%PERIODIC - Список функций которые используются в периодических процессах системы. Они вызываются из программы /usr/abills/libexec/periodic.


В системе доступно несколько видов функций:

ТипОписание
dailyДневные периодические функции.
montlyМесячные периодические функции.
reportsФункции составления дневные отчётов.



%PERIODIC = (
daily   => [ 'daily_periodic_function' ],
montly  => [ 'monthly_periodic_function' ],
reports => [ 'reports_function' ],
);



Пример работы с файлом webinterface

В данном файле должны располагаться функции модуля, которые вы прописали в файле config.


use strict;
use warnings;



#**********************************************************
=head2 main_function() - Описание функции

=cut
#**********************************************************
sub main_function {
  my ($attr) = @_;
  return 1;
}

#**********************************************************
=head2 second_main_function() - Описание функции

=cut
#**********************************************************
sub second_main_function {
  my ($attr) = @_;
  return 1;
}

#**********************************************************
=head2 second_second_function() - Описание функции

=cut
#**********************************************************
sub second_second_function {
  my ($attr) = @_;
  return 1;
}

#**********************************************************
=head2 client_main_function() - Описание функции

=cut
#**********************************************************
sub client_main_function {
  my ($attr) = @_;
  return 1;
}

#**********************************************************
=head2 daily_periodic_function() - Описание функции

=cut
#**********************************************************
sub daily_periodic_function {
  my ($attr) = @_;
  return 1;
}

#**********************************************************
=head2 monthly_periodic_function() - Описание функции

=cut
#**********************************************************
sub monthly_periodic_function {
  my ($attr) = @_;
  return 1;
}

#**********************************************************
=head2 reports_function() - Описание функции

=cut
#**********************************************************
sub reports_function {
  my ($attr) = @_;
  return 1;
}

1;



Работа с языковыми файлами.