В данном разделе описано как создавать собственные модули для системы.
Модуль для системы должны находиться в папке /usr/abills/Abills/modules. Название модуля лутше всего писать с заглавной буквы New_module. В каталоге модуля должно быть обязательно два файла webinterface, config.
Пример файла:
#Iner_ID : Main or Sub or if -1 user menu func list
%FUNCTIONS_LIST = ("01:0:$_ICARDS:cards_main:" => 5,
"04:1:BRUTE FORCE:cards_bruteforce:" => 5,
"05:1:$_ICARDS:cards_main:" => 5,
"06:1:$_DILLERS $_TARIF_PLANS:cards_dillers_tp:" => 5,
"06:5:$_ADD:cards_add:" => 5,
"08:0:$_ICARDS:cards_user_payment:UID" => 2,
"09:0:$_ICARDS:cards_report:" => 4,
"11:8:$_DILLERS:cards_report_dillers:" => 4,
"12:0:$_DILLERS:cards_dillers_list:" => 1,
"13:0:$_DILLERS:cards_diller:UID" => 15,
);
%USER_FUNCTION_LIST = ("01:0:$_ICARDS:cards_user_payment:" => 0,
);
%RESELLER_FUNCTION_LIST = ("01:0:$_ICARDS:cards_reseller_face:defaultindex" => 0,
"02:1:$_REPORTS:cards_diller_stats:" => 1
);
%PERIODIC = (daily => [ 'cards_bruteforce_clean' ] );
В данном файле можно объявлять следующие переменные которые влияют на работу и отображение модуля в системе.
%FUNCTIONS_LIST = ("01:0:$_ICARDS:cards_main:UID" => 5);
В данном примере обявлена одна функция визуализации.
| 01 | Номер функции в данном модуле |
|---|---|
| 0 | Номер родительской функции. Если 0 (ноль) функция является корневой. Если значение больше нуля то функция располагается в меню под родительской функцией |
| $_ICARDS | Название функции в меню панели управления |
| cards_main | Название фукции которая выполняется при нажатии соответственного меню |
| UID | Дополнительные параметры. Они могут быть и не объявлены. Если объявляются тогда меню показывается только если данные доп параметры присутствуют HTTP запросе. Например ели объявлен параметр UID то данная функция будет отображаться только если в запросе он присутствует. Пример запроса: http://your.host:9443/index.cgi?UID=15 |
| 5 | Номер корневого каталога в котором разместить меню. Номера корневых меню: 1 - Клиенты 2 - Оплаты 3 - Снятие денег 4 - Отчёт 5 - Система 6 - Мониторинг 7 - Поиск 8 - Другое 9 - Профиль |
В системе доступно несколько видов функций:
| daily | Дневные переодические функции |
|---|---|
| monthly | Месячные переодические функции |
| reports | Функции составления дневные отчётов |
пример объявления:
%PERIODIC = (daily => [ 'dv_daily_fees', 'dv_users_warning_messages'],
monthly => [ 'dv_monthly_fees', 'dv_periodic_logrotate' ],
report => [ 'dv_report' ]);
В данном файле должны располагаться функции модуля
Для разделения работы с базой и элементов визуализации все функции работы с базой помещаются в каталог /usr/abills/Abills/[название базы данных]
Для СУБД mysql это /usr/abills/Abills/mysql.
Модуль для вывода HTML контента
Ссылка:
$html->button('NAME', 'LINK_PARAMS', { %PARAMS });
| BUTTON | В виде кнопки. По умолчанию выводится в виде линка |
|---|---|
| GLOBAL_URL | Указать произволный URL. По умолчанию система к параметру линка добавляет префикс биллинговой системе https://yoursystem.com:9443/ |
| NEW_WINDOW | Открыть в новом окне |
| NEW_WINDOW_SIZE | Размер нового окна |
| IMG | Картинка вместо текста |
| MESSAGE | Вывести подтверждающее сообщение |
| ex_params= | Дополнительные параметры |
Пример
$html->button('NAME', 'LINK_PARAMS', { ex_params => "class=new" });
Вывод
<a href='$SELF_URL?LINK_PARAMS' class=new>NAME</a>
Форма предупреждения:
$html→message('TYPE', 'CAPTION', 'MESSAGE', { PARAMS });
| ID | Вывести номер |
|---|
контейнер формы
$html->form_main({ %PARAMS })
Параметры:
| CONTENT | Тело контейнера форм |
|---|---|
| HIDDEN | Сыылка на массив скрытых полей ввода. HIDDEN ⇒ { index ⇒ $index } |
| NAME | Название формы |
Форма ввода
$html->form_input('NAME', 'VALUE', { %PARAMS });
Спадающее меню
$html->form_select("NAME", { %PARAMS });
Параметры:
| SELECTED | активное значение |
|---|
| SEL_OPTIONS | Дополнительные параметры, списка не указанные в главном значении |
|---|---|
| NO_ID | Не показывать идентификатор элемента списка только его значение |
Много уровневый масив
| SEL_MULTI_ARRAY | ссылка на масив |
|---|---|
| MULTI_ARRAY_KEY | Поле для ключа |
| MULTI_ARRAY_VALUE | поле значения. Можно указывать несколько полей через запятую |
Масив:
| SEL_ARRAY | ссылка на масив |
|---|---|
| ARRAY_NUM_ID | ид элементов в виде цифр. По умолчанию равно значниею |
Хеш:
| SEL_HASH | Ссылка на хеш |
|---|
Создание элемента таблицы
$table = $html->table({ %PARAMS });
^width | Ширина таблицы. Можно задавать как в пикселях так и в процентах |
| caption | Названеи таблицы |
|---|---|
| border | Отображать границу таблицы |
| title | Масив значений для заголовков колонок |
| cols_align | Масив выравнивания колонок. Значения: left right center center:noprint - Не выводить при печати страницы |
| pages | Количество сстрок передаваемых таблице. Используется для формирования строки переходов страниц |
| qs | Дополнительные URL параметры для элементов таблицы |
| ID | ИД таблицы |
Пример
my $table = $html->table( { width => '100%',
caption => $_COMPANIES,
border => 1,
title => [$_NAME, $_DEPOSIT, $_REGISTRATION, $_USERS, $_STATUS, '-', '-'],
cols_align => ['left', 'right', 'right', 'right', 'center', 'center'],
pages => $company->{TOTAL},
qs => $pages_qs,
ID => 'COMPANY_ID'
} );
Заполнение строк таблицы
Пример
foreach my $line (@$list) {
$table->addrow($line->[0],
$line->[1],
$line->[2],
$html->button($line->[3], "index=13&COMPANY_ID=$line->[5]"),
"$status[$line->[4]]",
$html->button($_INFO, "index=13&COMPANY_ID=$line->[5]", { BUTTON => 1 }),
(defined($permissions{0}{5})) ? $html->button($_DEL, "index=13&del=$line->[5]", { MESSAGE => "$_DEL $line->[0]?", BUTTON => 1 }) : ''
);
}
Вывод содержимого таблицы
print $table->show();
Формирование таблицы с заполненными строками
Пример
$table = $html->table( { width => '100%',
cols_align => ['right', 'right'],
rows => [ [ "$_TOTAL:", $html->b($company->{TOTAL}) ] ]
} );
print $table->show();
Получить index функции.