В данном разделе будет описано как создавать собственные модули для системы Abills.
Структурная схема системы.
Начало создания модуля.
Все модули системы находятся в папке /usr/abills/Abills/modules/
Название модуля лучше всего делать с заглавной буквы.
Название модуля модуля не должно быть длинее 14 символов
В каталоге модуля обязательно должны находится 2 файла: webinterface и config.
webinterface - Библиотека функций модуля
config - Конфигурационный файл модуля
Примеры работы с файлом config
%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;