В данном разделе будет описано как создавать собственные модули для системы 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 - Профиль |
%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;
Работа с языковыми файлами.
По умолчанию система использует файлы language/english.pl и региональные ukraine.pl,russian.pl и т.д. Если нужно для модуля создать собственные словари они должны размещаться в папке модуля с названиями lng_xxx.pl.
Например:
Если модуль имеет свои собственные языковые файлы система автоматически их подгружает
Создание быстрых отчётов для первой страницы
На первой страницы системы можно разместить несколько быстрых отчётов. Какие отчёты размещать определяет администратор в меню профайл. Ниже будет описано как создать быстрый отчёт в созданном вами модуле.
Для того чтобы сообщить системе что модуль (в нашем примере название модуля New_module) имеет быстрые отчёты нужно создать функцию
под названием New_module_start_page Данная функция должна возвращать ссылку на ассоциированный массив значений в котором ключ это название функции выводящей быстрое меню а значение её описание.
Пример:
sub new_module_start_page { my ($attr) = @_; my %START_PAGE_F = ('new_module_sp_report' => 1 ); return \%START_PAGE_F; }
создаём сам отчёт
sub new_module_sp_report { print "Hello, World"; }