36 lines
1.9 KiB
Markdown
36 lines
1.9 KiB
Markdown
# PLAN 09-01: Blokada dat i godzin wstecznych
|
|
|
|
## Cel
|
|
Uniemożliwić użytkownikowi wybranie daty/godziny z przeszłości w formularzach rezerwacji (modal + hero search form). Wyświetlić komunikat błędu jeśli wybrana data/godzina już minęła.
|
|
|
|
## Kontekst
|
|
- Inputy `datetime-local`: `#carei-date-from`, `#carei-date-to` (modal), `#carei-search-date-from`, `#carei-search-date-to` (hero)
|
|
- Widget PHP: `class-elementor-widget.php` linie 86, 93
|
|
- JS: `carei-reservation.js` — walidacja w `validateForm()` (linia ~607), eventy w `initDynamicLoading()` (linia ~1073), search form `initSearchForm()` (linia ~1108)
|
|
|
|
## Taski
|
|
|
|
### Task 1: Ustawienie atrybutu `min` na inputach datetime-local
|
|
**Plik:** `assets/js/carei-reservation.js`
|
|
**Akcja:** Dodać funkcję `enforceDateMin()` która:
|
|
1. Ustawia `min` na bieżący datetime (format `YYYY-MM-DDTHH:MM`) na inputach `dateFrom` i `searchDateFrom`
|
|
2. Przy zmianie `dateFrom` ustawia `min` na `dateTo` = wartość `dateFrom`
|
|
3. Analogicznie dla search form (`searchDateFrom` → `searchDateTo`)
|
|
4. Wywoływana przy init modala i init search form
|
|
**Weryfikacja:** Przeglądarka blokuje wybór dat wcześniejszych niż teraz
|
|
**Done:** Atrybuty `min` dynamicznie ustawione na wszystkich 4 inputach
|
|
|
|
### Task 2: Walidacja w `validateForm()` — komunikat błędu
|
|
**Plik:** `assets/js/carei-reservation.js`
|
|
**Akcja:** W `validateForm()` po sprawdzeniu `dateTo > dateFrom` dodać sprawdzenie:
|
|
- Jeśli `dateFrom < now` → error "Data lub godzina rozpoczęcia już minęły"
|
|
- Jeśli `dateTo < now` → error "Data lub godzina zakończenia już minęły"
|
|
**Weryfikacja:** Komunikat wyświetla się pod polem z czerwonym obramowaniem
|
|
**Done:** Walidacja blokuje submit z datami wstecznymi + pokazuje polski komunikat
|
|
|
|
## Pliki do modyfikacji
|
|
1. `wp-content/plugins/carei-reservation/assets/js/carei-reservation.js`
|
|
|
|
## Ryzyko
|
|
- Brak — zmiana czysto frontendowa, walidacja klient-side
|