Ссылка
$html->button('NAME', 'LINK_PARAMS', { %PARAMS });
BUTTON | В виде кнопки. По умолчанию выводится в виде линка |
---|---|
GLOBAL_URL | Указать произвольный URL. По умолчанию система к параметру линка добавляет префикс биллинговой системе https://yoursystem.com:9443/ |
NEW_WINDOW | Открыть в новом окне |
NEW_WINDOW_SIZE | Размер нового окна |
IMG | Картинка вместо текста |
MESSAGE | строка, Вывести модальное окно для комментария и сообщением и перейти по ссылке только после ввода и подтверждения |
CONFIRM | строка, Вывести модальное окно с сообщением и кнопкой подтверждения перехода |
ex_params= | Дополнительные параметры |
TWO_CONFIRMATION | Языковая переменная $lang{DEL}, активирует систему двойной проверки при удалении |
Пример
$html->button('NAME', 'LINK_PARAMS', { ex_params => "class=new" });
Вывод
<a href='$SELF_URL?LINK_PARAMS' class=new>NAME</a>
Кнопка с иконкой
$html->button($lang{ADD}, "index=$index&form_add=1", { ADD_ICON => 'glyphicon glyphicon-plus', BUTTON => 1 }) <a href='?index=245&form_add=1' class=new><span class='glyphicon glyphicon-plus'></span>Добавить</a>
Пример кнопки для копирования текста в буфер обмена
$html->button('COPY TEXT', '', { COPY => 'text for copy' })
Сообщения (предупреждения)
Информация о выполненной операции или предупреждение об ошибке
$html->message('TYPE', 'CAPTION', 'MESSAGE', { PARAMS });
TYPE | Тип сообщения info - Информация err - ошибка warn - Предупреждение | |
---|---|---|
CAPTION | Оглавление сообщения | |
MESSAGE | Текст сообщения. Для переноса строк используется '\n' | |
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_LIST | ссылка на масив |
---|---|
SEL_KEY | Поле для ключа |
SEL_VALUE | поле значения. Можно указывать несколько полей через запятую |
Элемент CheckBox/Toggle
my $checkbox = $html->form_input("$input_name", "$input_value", { TYPE => 'checkbox', STATE => (($groups_settings{$input_name}) ? 'checked' : ''), EX_PARAMS => 'data-toggle="toggle"' });
$input_name | Имя при передачи в передачи в форму |
---|---|
$input_value | Значение в форме |
TYPE | Тип елемента (checkbox, text, submit) |
STATE | Статус, только для checkbox |
EX_PARAMS | Дополнительные параметры (data-toggle="toggle" - toggle) |
Пример
Список тарифных планов ключ поле id значение поле name
$html->form_select( 'TP_ID', { SELECTED => $FORM{TP_ID} || q{}, SEL_LIST => $tariffs->list({ MODULE => 'Dv', COLS_NAME => 1 }), SEL_KEY => 'id', SEL_VALUE=> 'name' } );
Масив:
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 | ИД таблицы |
COLS_NAME | Возврат значений не массивом, а хешем |
EXPORT | кнопки экспорта содержимого таблицы |
IMPORT | форма импорта данных. Указывает на линк вызова функции Пример: IMPORT ⇒ «$SELF_URL?get_index=form_users&import=1&header=2» |
DATA_TABLE | добавить плагин Data Table c быстрым поиском данных по таблице, выводом количества строк на странице, перемещение колонок |
Пример
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', DATA_TABLE => 1, } );
Заполнение строк таблицы
Пример
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();
Вывод таблицы используя вывод хешем
Список администраторов
$list = $admin->list({ %LIST_PARAMS, COLS_NAME => 1 }); foreach my $line (@$list) { $table->addrow( $line->{aid}, $line->{login}, $line->{name}, $line->{raddate} ); } print $table->show();
Добавление ячеек таблицы
$table->addtd( $table->td($value, { bgcolor => 'red', valign => 'top', align => 'center' }), $table->td($value) );
Напоминание
Создаёт напомнание, которое позже выносится в верхнюю часть страницы.
Можно задавать цвет через аттрибут CLASS
. По умолчанию, это info
.
$html->reminder($lang{REMINDER}, $lang{PLEASE_CHANGE_DEFAULT_PASSWORD});
Функциональные поля таблицы
Набор кнопок, для возможных действий над обьектом, который представляет строка таблицы.
Возможные прописаные значения:
form_payments - переход на страницу оплат
*_stats - имя функции для показа статистики
change - перейти по тому же индексу с параметром
chg=$line→{id}
info - перейти по тому же индексу с параметром
info=$line→{id}
company_id - перейти по тому же индексу с параметром
COMPANY_ID=$line→{id}
ex_info - Информация в модуле Info
del - спросить подтверждение и перейти по тому же индексу с параметром
del=$line→{id}&COMMENTS=%COMMENTS%
Добавить свою кнопку:
Формат : $function_name:$name:$param:$ex_param
Если $name
совпадает с ('del', 'change', 'add'), будет присвоена соответсвующая иконка.
или будет произведена попытка перевести $name
с помощью _translate()
Если не совпадает с указаным форматом, будет считаться, что $function_name
и $name
равны указаной строке.
В ссылку кнопки, передается index=(get_function_index($function_name
) || индекс текущей страницы).
Если в строке базы есть $uid
, так же к ссылке добавится UID=$line→{uid}
.
Фильтры result_former
FILTER_VALUES
Задаются ссылкой на функцию, передаются 2 параметра ($value - значение строки, $line - вся строка ссылкой на хеш)
Пример :
{ ..., FILTER_VALUES => { name => sub { my ($name, $line) = @_; $html->button($name, "get_index=foo_main&full=1&chg=$line->{id}") }, url => sub { my $link = shift; $html->button($link, $link) }, comments => sub { my $comments = shift; $html->element('abbr', $lang{COMMENTS}, { title => $comments }) } }, ... }
FILTER_COLS
Задаются в виде хеша
{ ..., FILTER_COLS => { column => '$filter_fn[:$plain_params]:$params' }, ... }
Будет вызвана $filter_fn
с аргументами (значение $line→{column}, { VALUES ⇒ …, PARAMS ⇒ …, LINK_NAME ⇒ … );
В PARAMS передается ссылка на масив в котором лежат $plain_params(если указаны), $params:
В VALUES, в зависимости от заполнения $params, могут передаваться:
значения из $line
пример NAME,VALUE
⇒ { NAME ⇒ $line→{name}, VALUE ⇒ $line→{value} }
значения указаные через
=
, заранее определённые значения
пример TYPE=1,LAST=5
⇒ { TYPE ⇒ 1, LAST ⇒ 5 }
В LINK_NAME передаются значения из SELECT_VALUE, если они заданы.
Пример FILTER_COLS
Отобразить ссылку на функцию типа обьекта.
Для формирования ссылки необходимо знать Имя типа (для текст в ссылке), Название/Индекс функции для перехода на функцию, ID (для перехода на редактирование/просмотр именно этого типа).
Если прописан фильтр для type_name
, то название типа у нас уже есть в первом аргументе ($line→{column}).
Название равны для всех строк таблицы, поэтому можно передать через предзаданный аргумент VALUES FUNCTION_NAME=module_types
Остаётся получить ID типа. Предположим, он отдаётся из list в поле $line→{type_id}
. Добавляем в HIDDEN_FIELDS TYPE_ID
, и добавляем в строку фильтра TYPE_ID
;
Получается, что в аргументах result_former должны присутствовать:
{ ... DEFAULT_FIELDS => '...,TYPE_NAME,...', HIDDEN_FIELDS => '...,TYPE_ID,...', FILTER_COLS => { type_name => 'make_chg_button::FUNCTION_NAME=module_types,TYPE_ID' } ... }
Пример реализации фильтра:
sub make_chg_button { my ($name, $attr) = @_; return '' unless ($name); my $fn_name = $attr->{VALUES}{FUNCTION_NAME}; my $id = $attr->{VALUES}{TYPE_ID}; my $fn_index = get_function_index($fn_name); return $html->button($name, '?index=' . $fn_index . '&chg=' . $id); }
Панель с быстрыми кнопками
У вас есть два варианта использовать панель быстрых кнопок, первый просто как панель с кнопками и второй как панель с выпадающим списком и в нем уже будут нужные кнопки
$html->button_isp_express({ INFO => \@button_value, DROPDOWN => 1 # Если этот параметр не передать тогда будут обычные кнопки });
DropDown panel
Хеш отдадим в таком формате
[ { 'Button_1' => { 'Sub_button_1' => 'http://abills.net.ua' } }, { 'Button_2' => { 'Sub_button_1' => 'http://abills.net.ua', 'Sub_button_2' => 'http://abills.net.ua' } } ];
Обычные кнопки на панели
Для обычных кнопок нам не надо делать вложения в объект хеша, мы можем передать обычный хеш ключ - значения
[ { 'Button_1' => 'http://abills.net.ua', }, { 'Button_2' => 'http://abills.net.ua', }, { 'Button_3' => 'http://abills.net.ua' }, ];