Skip to end of metadata
Go to start of metadata

Ссылка

$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);
}

Панель с быстрыми кнопками

У вас есть два варианта использовать панель быстрых кнопок, первый просто как панель с кнопками и второй как панель с выпадающим списком и в нем уже будут нужные кнопки 

Drop Down
$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'
   },
];



  • No labels