Translations of this page:

Модули системы

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

Модуль для системы должны находиться в папке /usr/abills/Abills/modules. Название модуля лутше всего писать с заглавной буквы New_module. В каталоге модуля должно быть обязательно два файла webinterface, config.

  • webinterface - Библиотека функций модуля
  • config - Конфигурационный файл модуля

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 Список доступных функций в интерфейсе администратора. Каждая функция объявляется отдельной переменной хеш масива и имеет следующую структуру. Рассмотрим на примере:
 %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 - Профиль
  • %USER_FUNCTION_LIST - Список функций личного кабинета пользователя. Функции формируются за тем же правилом что и функции интерфейса администратора.
  • %RESELLER_FUNCTION_LIST - Список функций интерфейса реселлера. Интерфейс реселлера появляется только при включении модуля Multidoms
  • %PERIODIC - Список функций которые используются в периодических процессах системы. ОНи вызываются из программы abills/libexec/periodic.

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

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

пример объявления:

%PERIODIC = (daily   => [ 'dv_daily_fees', 'dv_users_warning_messages'],
             monthly => [ 'dv_monthly_fees', 'dv_periodic_logrotate'  ],
             report  => [ 'dv_report'       ]);
 

webinterface

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

Работа с базой данных

Для разделения работы с базой и элементов визуализации все функции работы с базой помещаются в каталог /usr/abills/Abills/[название базы данных]
Для СУБД mysql это /usr/abills/Abills/mysql.

HTML.pm

Модуль для вывода 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();

Полезные функции WEB интерфейса

  • get_function_index('form_info_fields')

Получить index функции.

 
abills/docs/development/modules/ru.txt · Последние изменения: 2011/01/30 12:25 — asmodeus
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki