Различия

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

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

Следующая версия
Предыдущая версия
abills:docs:development:modules:html:ru [2016/11/16 10:21]
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' })
  
 ====Сообщения (предупреждения)==== ====Сообщения (предупреждения)====
Строка 166: Строка 174:
   );   );
   ​   ​
 +  ​
 +==== Напоминание ====
 +Создаёт напомнание,​ которое позже выносится в верхнюю часть страницы.\\
 +Можно задавать цвет через аттрибут ''​CLASS''​. По умолчанию,​ это ''​info''​.
 +<​code>​
 +  $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>​