32 lines
3.8 KiB
Markdown
32 lines
3.8 KiB
Markdown
|
|
# Ключевые моменты по проекту ERV (формa Багаж, ticket_dev, miniapp)
|
|||
|
|
|
|||
|
|
## Структура проектов
|
|||
|
|
- **miniapp** — основная форма (авиа + отель), эталон рабочей логики СМС и модалок.
|
|||
|
|
- **hotels** — форма только по риску «Неполучение услуг размещения (отель)», класс `form-hotels-only`.
|
|||
|
|
- **ticket_dev** — копия ticket с проверкой полиса через N8N, ios-оформление, тестовый СМС.
|
|||
|
|
- **luggage** — форма «Багаж» (задержка/утрата/повреждение), копия ticket_dev по структуре.
|
|||
|
|
|
|||
|
|
## Модалка СМС (подтверждение кода)
|
|||
|
|
- **Чтобы кнопка «Подтвердить» кликалась:** кнопка должна быть **внутри** элемента с классом `sms-checking` (как в miniapp). Разметка: внутри `.form-item.sms-checking` — инпут кода, затем `<div class="sms-checking sms-action">` с кнопками. Иначе селектор `$('.sms-checking .js-accept-sms')` не находит кнопку.
|
|||
|
|
- Открытие через **Fancybox**: `$.fancybox.open({ src: '#confirm_sms', type: 'inline' })`, закрытие `$.fancybox.close()`.
|
|||
|
|
- Обработчик — прямой: `$('.sms-checking .js-accept-sms').on('click', ...)` и `var code = $('.sms-checking input[type="text"]').val();`.
|
|||
|
|
- **Где правили:** luggage/index.php + luggage/js/common.js; ticket_dev/index.php (разметка по аналогии с miniapp).
|
|||
|
|
|
|||
|
|
## Куда уходит submit
|
|||
|
|
- **miniapp, hotels** → `https://n8n.clientright.pro/webhook/oldform_combine`
|
|||
|
|
- **ticket_dev, luggage, ticket** → URL берётся из **.env**: переменная **N8N_SEND_WEBHOOK**. В luggage/ticket_dev в submit.php подключается env_loader.php и `$webhook_url = trim(env('N8N_SEND_WEBHOOK', '...'));`. Пример в luggage/.env: `N8N_SEND_WEBHOOK=https://n8n.clientright.pro/webhook/oldform_combine`.
|
|||
|
|
|
|||
|
|
## Валидация и форма (luggage)
|
|||
|
|
- Форма с пошаговыми шагами: **novalidate** на `<form>`, чтобы браузер не ругался «invalid form control is not focusable» для полей с minlength на скрытых шагах.
|
|||
|
|
- Описание: минимум 20 символов, атрибут `data-minlen="20"`, проверка в JS при submit; при ошибке — показ сообщения и прокрутка к полю описания.
|
|||
|
|
- Поле «Задержка выдачи багажа (часов)»: обязательно при выборе типа «Задержка», только цифры — класс `js-delay-hours-mask`, inputmask `9{1,4}`, без `notvalidate`.
|
|||
|
|
|
|||
|
|
## Список файлов (длинные имена)
|
|||
|
|
- В .fileList длинное имя не должно наезжать на размер: у `.fileList li strong` — `flex: 1 1 auto`, `min-width: 0`, `overflow: hidden`, `text-overflow: ellipsis`, `white-space: nowrap`. Размер и крестик — `flex-shrink: 0`. Правили luggage, miniapp, ticket_dev, hotels в css/main.css.
|
|||
|
|
|
|||
|
|
## Тестовый СМС (без реальной отправки)
|
|||
|
|
- В .env: `SMS_ENABLED=false`. В sms-verify.php при action=send возвращается `demo_code`, при action=verify проверка локально (Redis/файл). В common.js при успешной отправке показывается код в модалке (`data.demo_code`) и подстановка в поле.
|
|||
|
|
|
|||
|
|
## Окружение
|
|||
|
|
- Ubuntu 22.04. Пользователь — Фёдор. Отвечать на русском.
|