Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
abills:docs:development:modules:html:ru [2017/01/26 15:19]
anton [Фильтры result_former]
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' })
  
 ====Сообщения (предупреждения)==== ====Сообщения (предупреждения)====
Строка 201: Строка 209:
  
 ==== Фильтры result_former ==== ==== Фильтры 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>​+<​code ​perl>
 { {
 ..., ...,
Строка 224: Строка 249:
  
 В LINK_NAME передаются значения из SELECT_VALUE,​ если они заданы. В 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>​