Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
abills:docs:development:modules:html:ru [2016/11/16 10:24] anton [Таблицы] |
abills:docs:development:modules:html:ru [2017/06/28 23:53] (текущий) anton [Ссылка] |
||
---|---|---|---|
Строка 6: | Строка 6: | ||
^BUTTON | В виде кнопки. По умолчанию выводится в виде линка | | ^BUTTON | В виде кнопки. По умолчанию выводится в виде линка | | ||
- | ^GLOBAL_URL| Указать произволный URL. По умолчанию система к параметру линка добавляет префикс биллинговой системе https://yoursystem.com:9443/ | | + | ^GLOBAL_URL| Указать произвольный URL. По умолчанию система к параметру линка добавляет префикс биллинговой системе https://yoursystem.com:9443/ | |
^NEW_WINDOW| Открыть в новом окне | | ^NEW_WINDOW| Открыть в новом окне | | ||
^NEW_WINDOW_SIZE| Размер нового окна | | ^NEW_WINDOW_SIZE| Размер нового окна | | ||
^IMG | Картинка вместо текста | | ^IMG | Картинка вместо текста | | ||
- | ^MESSAGE | Вывести подтверждающее сообщение | | + | ^MESSAGE | строка, Вывести модальное окно для комментария и сообщением и перейти по ссылке только после ввода и подтверждения | |
+ | ^CONFIRM | строка, Вывести модальное окно с сообщением и кнопкой подтверждения перехода | | ||
^ex_params= | Дополнительные параметры \\ | | ^ex_params= | Дополнительные параметры \\ | | ||
Строка 17: | Строка 18: | ||
Вывод | Вывод | ||
<a href='$SELF_URL?LINK_PARAMS' class=new>NAME</a> | <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' }) | ||
====Сообщения (предупреждения)==== | ====Сообщения (предупреждения)==== | ||
Строка 172: | Строка 180: | ||
<code> | <code> | ||
$html->reminder($lang{REMINDER}, $lang{PLEASE_CHANGE_DEFAULT_PASSWORD}); | $html->reminder($lang{REMINDER}, $lang{PLEASE_CHANGE_DEFAULT_PASSWORD}); | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== Функциональные поля таблицы ==== | ||
+ | Набор кнопок, для возможных действий над обьектом, который представляет строка таблицы. | ||
+ | |||
+ | Возможные прописаные значения: | ||
+ | * **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 - вся строка ссылкой на хеш)\\ | ||
+ | \\ | ||
+ | **Пример :** | ||
+ | <code perl> | ||
+ | { | ||
+ | ..., | ||
+ | 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 }) } | ||
+ | }, | ||
+ | ... | ||
+ | } | ||
+ | </code> | ||
+ | === FILTER_COLS === | ||
+ | Задаются в виде хеша | ||
+ | <code perl> | ||
+ | { | ||
+ | ..., | ||
+ | FILTER_COLS => { | ||
+ | column => '$filter_fn[:$plain_params]:$params' | ||
+ | }, | ||
+ | ... | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Будет вызвана ''$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 должны присутствовать: | ||
+ | <code perl> | ||
+ | { | ||
+ | ... | ||
+ | DEFAULT_FIELDS => '...,TYPE_NAME,...', | ||
+ | HIDDEN_FIELDS => '...,TYPE_ID,...', | ||
+ | FILTER_COLS => { | ||
+ | type_name => 'make_chg_button::FUNCTION_NAME=module_types,TYPE_ID' | ||
+ | } | ||
+ | ... | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Пример реализации фильтра: | ||
+ | <code perl> | ||
+ | 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); | ||
+ | } | ||
</code> | </code> |