Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
abills:docs:development:modules:ru [2016/08/31 12:55] anton [Дополнительные возможности] |
abills:docs:development:modules:ru [2019/01/26 11:22] (текущий) asmodeus [Структурная схема] |
||
---|---|---|---|
Строка 10: | Строка 10: | ||
* **config** - Конфигурационный файл модуля | * **config** - Конфигурационный файл модуля | ||
+ | Включение модуля в конфигурационном файле: **libexec/config.pl** | ||
+ | |||
+ | @MODULES = ( | ||
+ | 'Modulename' | ||
+ | ); | ||
=====config===== | =====config===== | ||
Строка 214: | Строка 219: | ||
); | ); | ||
=====HTML.pm===== | =====HTML.pm===== | ||
- | Модуль для вывода HTML контента | ||
- | ====Ссылка==== | + | [[abills:docs:development:modules:html:ru|Модуль для вывода HTML контента]] |
- | $html->button('NAME', 'LINK_PARAMS', { %PARAMS }); | + | |
- | |||
- | ^BUTTON | В виде кнопки. По умолчанию выводится в виде линка | | ||
- | ^GLOBAL_URL| Указать произволный URL. По умолчанию система к параметру линка добавляет префикс биллинговой системе https://yoursystem.com:9443/ | | ||
- | ^NEW_WINDOW| Открыть в новом окне | | ||
- | ^NEW_WINDOW_SIZE| Размер нового окна | | ||
- | ^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' | ||
- | } | ||
- | ); | ||
- | |||
- | Масив: | ||
- | ^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) | ||
- | ); | ||
- | | ||
====Шаблоны==== | ====Шаблоны==== | ||
Для визуализации используется система шаблонов | Для визуализации используется система шаблонов | ||
Строка 400: | Строка 241: | ||
==== Дополнительные возможности ==== | ==== Дополнительные возможности ==== | ||
=== Проверка значения input на соответствие шаблону === | === Проверка значения input на соответствие шаблону === | ||
- | Если указать атрибут ''check_for_pattern="RegExp"'', где RegExp - JavaScript шаблон, то при вводе значение будет проверяться на соответствие патерну.\\ | + | Если указать атрибут ''data-check-for-pattern="RegExp"'', где RegExp - JavaScript шаблон, то при вводе значение будет проверяться на соответствие патерну.\\ |
Если значение не соответствует патерну, родительскому элементу добавляется класс ''has-error''. Текст label и рамка input меняют цвет на красный.\\ | Если значение не соответствует патерну, родительскому элементу добавляется класс ''has-error''. Текст label и рамка input меняют цвет на красный.\\ | ||
Строка 409: | Строка 250: | ||
=== Ввод значения в один input при доступных нескольких === | === Ввод значения в один input при доступных нескольких === | ||
- | Добавить атрибут ''input-disables=%ID%'' в <input> \\ | + | Добавить атрибут ''data-input-disables=%ID%'' в <input> (<select>, <input type='checkbox'>) \\ |
При вводе значения, удаляет значение в <input id='%ID%'> и добавляет свойство ''disabled''. \\ | При вводе значения, удаляет значение в <input id='%ID%'> и добавляет свойство ''disabled''. \\ | ||
\\ | \\ | ||
Строка 415: | Строка 256: | ||
\\ | \\ | ||
Можно указать несколько Id через запятую (**без пробелов**).\\ | Можно указать несколько Id через запятую (**без пробелов**).\\ | ||
+ | \\ | ||
+ | Обратное поведение ( включить поле ввода по значению ), можно используя атрибут ''data-input-enables=%ID%'' | ||
+ | \\ | ||
=== Всплывающая подсказка при наведении мыши === | === Всплывающая подсказка при наведении мыши === | ||
Строка 460: | Строка 304: | ||
Любое значение интерпретируемое в JS как ''false'' добавит **display : none**\\ | Любое значение интерпретируемое в JS как ''false'' добавит **display : none**\\ | ||
Любое значение интерпретируемое в JS как ''true'' добавит **display : block**\\ | Любое значение интерпретируемое в 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, | ||
Строка 593: | Строка 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 | | ||
Строка 610: | Строка 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 ===== | ||
Строка 630: | Строка 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> | ||
+ |