Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
abills:docs:development:modules:ru [2016/08/19 11:31]
andriy [Функция изменения]
abills:docs:development:modules:ru [2019/01/26 11:22] (текущий)
asmodeus [Структурная схема]
Строка 10: Строка 10:
   * **config** - Конфигурационный файл модуля   * **config** - Конфигурационный файл модуля
  
 +Включение модуля в конфигурационном файле: ​ **libexec/​config.pl**
 +
 +  @MODULES = (
 +    '​Modulename'​
 +  );
  
 =====config===== =====config=====
Строка 128: Строка 133:
 Для ​ СУБД mysql это /​usr/​abills/​Abills/​mysql. ​ Для ​ СУБД mysql это /​usr/​abills/​Abills/​mysql. ​
  
-==== Функции работы с базой ==== +==== Функция добавления ​====
- +
-=== Функция добавления ===+
  
 **query_add($table,​ $values, $attr)** - Добавление данных в базу. **query_add($table,​ $values, $attr)** - Добавление данных в базу.
Строка 190: Строка 193:
       }       }
     );     );
-=====HTML.pm===== +     
-Модуль для вывода HTML  ​контента+==== Другие команды в базу ​==== 
 +**query2($query,​ $type, $attr)** - выполнение своих команд в базу
  
-====Ссылка==== +** Параметры: ** 
-  $html->button('​NAME'​'​LINK_PARAMS'​{ %PARAMS });+^ $query | запрос | 
 +$type  | тип запроса,​ undef with fetch result like SELECT, do    - do query without fetch (INSERTUPDATEDELETE
 +^ $attr  | дополнительные параметры|
  
 +** Дополнительные параметры:​ **
 +^ COLS_NAME ​  | Возвращает ссылку на хеш. Имя колонки как ключ хеша |
 +^ COLS_UPPER ​ | Сделать ключи большими буквами |
 +^ INFO        | Return fields as objects parameters $self->​{LOGIN} |
 +^ LIST2HASH ​  | Возвращает хеш, вместо листа {KEY=>​VAL} |
 +^ MULTI_QUERY | Мультизапросы (только для INSERT, UPDATE) |
 +^ Bind        | Массив или бинд значений ​  [ 10, 12, 33 ] |
 +^ DB_REF ​     | Обьект БД. Используется когда работа идет с несколькими ДБ северами |
 +^ test        | Исполняется без запроса. Если исползуется $self->​{debug} показывается запрос. |
  
-^BUTTON ​ | В виде кнопки. По умолчанию выводится в виде линка | +**Пример:** 
-^GLOBAL_URL| Указать произволный URL. По умолчанию система к параметру линка добавляет префикс биллинговой системе https://​yoursystem.com:​9443/​ | +  $self->query2
-^NEW_WINDOW| Открыть в новом окне | +    "SELECT * FROM table_name;", 
-^NEW_WINDOW_SIZE| Размер нового окна | +    ​undef
-^IMG | Картинка вместо текста | +    {}
-^MESSAGE | Вывести подтверждающее сообщение | +
-^ex_params= | Дополнительные параметры \\  |  +
- +
-** Пример ** \\  +
-  $html->button('​NAME',​ '​LINK_PARAMS',​ { ex_params => "​class=new" ​ }); +
-Вывод ​  +
-  <a href='​$SELF_URL?​LINK_PARAMS'​ class=new>​NAME</​a>​  +
- +
- +
-====Сообщения (предупреждения)==== +
-Информация о выполненной операции или предупреждение об ошибке +
- +
-  $html->​message('​TYPE',​ '​CAPTION',​ '​MESSAGE',​ { PARAMS }); +
- +
-^TYPE | Тип сообщения \\ **info** - Информация \\ **err** - ошибка \\ **warn** - Предупреждение | +
-^CAPTION | Оглавление сообщения | +
-^MESSAGE | Текст сообщения. \\ Для переноса строк используется '​\n'​ | +
-^PARAMS ​ | Дополнительные параметры | +
-^  | ID | Вывести номер сообщения (см. [[abills:​docs:​development:​errors_list:​ru|Систематизация ошибок]]) |  +
-====Формы==== +
-контейнер формы +
-   ​$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| поле значения. Можно указывать несколько полей через запятую | +
- +
-**Пример** \\ +
- +
-Список тарифных планов ключ поле 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'​ +
-    ​}+
   );   );
 +=====HTML.pm=====
  
-Масив: +[[abills:​docs:​development:​modules:html:ru|Модуль для вывода HTML контента]]
-^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"​ | 
- 
-**Пример** 
- 
-  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'​ 
-                            } ); 
-Заполнение строк таблицы 
- 
-**Пример** 
-  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) 
-  ); 
-  ​ 
 ====Шаблоны==== ====Шаблоны====
 Для визуализации используется система шаблонов Для визуализации используется система шаблонов
Строка 377: Строка 241:
 ==== Дополнительные возможности ==== ==== Дополнительные возможности ====
 === Проверка значения input на соответствие шаблону === === Проверка значения input на соответствие шаблону ===
-Если указать атрибут ''​check_for_pattern="​RegExp"'',​ где RegExp - JavaScript шаблон,​ то при вводе значение будет проверяться на соответствие патерну.\\+Если указать атрибут ''​data-check-for-pattern="​RegExp"'',​ где RegExp - JavaScript шаблон,​ то при вводе значение будет проверяться на соответствие патерну.\\
 Если значение не соответствует патерну,​ родительскому элементу добавляется класс ''​has-error''​. Текст label и рамка input меняют цвет на красный.\\ Если значение не соответствует патерну,​ родительскому элементу добавляется класс ''​has-error''​. Текст label и рамка input меняют цвет на красный.\\
  
Строка 386: Строка 250:
  
 === Ввод значения в один input при доступных нескольких === === Ввод значения в один input при доступных нескольких ===
-Добавить атрибут ''​input-disables=%ID%''​ в <​input>​ \\+Добавить атрибут ''​data-input-disables=%ID%''​ в <​input> ​(<​select>,​ <input type='​checkbox'>​) ​\\
 При вводе значения,​ удаляет значение в <input id='​%ID%'>​ и добавляет свойство ''​disabled''​. \\ При вводе значения,​ удаляет значение в <input id='​%ID%'>​ и добавляет свойство ''​disabled''​. \\
 \\ \\
Строка 392: Строка 256:
 \\ \\
 Можно указать несколько Id через запятую (**без пробелов**).\\ Можно указать несколько Id через запятую (**без пробелов**).\\
 +\\
 +Обратное поведение ( включить поле ввода по значению ), можно используя атрибут ''​data-input-enables=%ID%''​
 +\\
  
 === Всплывающая подсказка при наведении мыши === === Всплывающая подсказка при наведении мыши ===
Строка 432: Строка 299:
   );   );
 </​code>​ </​code>​
 +
 +=== Условное скрытие/​показ элемента ===
 +Доступно через аттрибут ''​data-visible''​.\\
 + ​Любое значение интерпретируемое в JS как ''​false''​ добавит **display : none**\\
 + ​Любое значение интерпретируемое в JS как ''​true''​ добавит **display : block**\\
 +
 +=== Отображение даты в человекочитаемом формате ===
 +Отобразить время от/до наступления даты (''​3 часа назад'',​ ''​5 дней назад'',​ ''​Через 3 дня''​)
 +<​code>​
 +<span class='​moment-insert'​ data-value='​YYYY-MM-DD hh:​mm:​ss'></​span>​
 +</​code> ​
 +
 +Отобразить временной интервал (''​3 часа'',​ ''​5 дней''​)
 +<​code>​
 +<span class='​moment-range'​ data-value='​ss'></​span>​
 +</​code>​
 +
 +=== Подтверждение действий в кабинете пользователя ===
 +Есть возможность добавить в кабинете пользователя подтверждение действий паролем. Для этого необходимо добавить форме класс ''​pswd-confirm''​. При попытке сабмита формы с этим классом,​ откроется модальное окно для ввода пароля. Введенный пароль добавится к данным формы.
 +(работает при включенной опции $conf{user_confirm_changes}=1;​)
 ====result_former==== ====result_former====
  
 Функция формирование результирующей таблицы используя SQL, XML JSON или HASH данные Функция формирование результирующей таблицы используя SQL, XML JSON или HASH данные
  
-<​code>​+<​code ​perl>
   my ($table, $list) = result_former({   my ($table, $list) = result_former({
      ​INPUT_DATA ​     => $Dv,      ​INPUT_DATA ​     => $Dv,
Строка 565: Строка 452:
 **$val** -  список значений для отображения \\ **$val** -  список значений для отображения \\
  
-Если задана ​переменная chartPeriod, то в зависимости от значения,​ формируются категории (X_TEXT) и корректируется длина массива.+Если задана ​$attr->​{PERIOD}, то в зависимости от значения,​ формируются категории (X_TEXT) и корректируется длина массива ​(отрезается 0-ой индекс).
 | '​week_stats'​ | ['​Mon',​ '​Tue',​ '​Wed',​ '​Thu',​ '​Fri',​ '​Sat',​ '​Sun'​] | 7 | | '​week_stats'​ | ['​Mon',​ '​Tue',​ '​Wed',​ '​Thu',​ '​Fri',​ '​Sat',​ '​Sun'​] | 7 |
 | '​month_stats'​ | [1,​2,​3,​4,​5,​6,​7,​8,​9,​...,​31] | 31 | | '​month_stats'​ | [1,​2,​3,​4,​5,​6,​7,​8,​9,​...,​31] | 31 |
Строка 582: Строка 469:
  
 ===== Maps ===== ===== Maps =====
- 
 [[abills:​docs:​development:​modules:​maps | Документация разработчика Maps]] [[abills:​docs:​development:​modules:​maps | Документация разработчика Maps]]
  
-===== Modals ​===== +===== JavaScript ​===== 
- +[[abills:​docs:​development| Документация по JS библиотекам ​]]
-[[abills:​docs:​development:​modules:​modals | Документация по модальным окнам ]] +
- +
-===== AColorPalette ===== +
- +
-[[abills:​docs:​development:​modules:​colorpalette ​| Документация по JS цветовой палитре ]] +
- +
-===== "​Липучие"​ панели ===== +
- +
-Добавьте к любому HTML элементу класс ''​sticky'' ​и он прикрепится к верху страницы,​ если прокрутить страницу ниже положения элемента.+
  
 ===== Статические значения qindex ===== ===== Статические значения qindex =====
Строка 602: Строка 479:
   * 100001 - msgs_register_push_client   * 100001 - msgs_register_push_client
   * 100002 - form_events (Клиентский интерфейс)   * 100002 - form_events (Клиентский интерфейс)
 +
 +
 +===== Подсказки к шаблонам =====
 +Начиная с версии 0.77.66 можно заполнять дополнительные подсказки для полей шаблона. \\ 
 +При использовании новой схемы отображения шаблона
 +<code perl>
 +$html->​tpl_show('',​ {
 +  VAR1 => '​VAL1',​
 +},
 +{
 +  TPL    => '​module_entity',​
 +  MODULE => '​Module',​
 +  HELP   => 1
 +});
 +</​code>​
 +
 +Если задан ключ ''​HELP => 1'',​ к шаблону добавится контент файла ''​module_entity_help.tpl'',​ который будет обработан на странице.\\
 +Формат файла шаблона подсказок:​ ID:​комментарий.\\
 +Пример:​
 +<​code>​
 +MODULE:​Имя модуля
 +EXTRA:​Ссылка для получения доп. информации
 +COMMENTS_id:​Коментарии (текст уведомления)
 +</​code>​
 +