Files
Jacek Pyziak 508623c642 feat(03-registration-form-settings): editable form settings, additional info field, codebase map
Phase 3 complete (2 plans):

- 03-01: RegistrationFormSettings helper + admin Ustawienia formularza page; public form and server-side pricing driven by wp_setup/mf_parameters settings; SQL seed + PHP runner for production deployment
- 03-02: Dodatkowe informacje textarea field added to form/DB/confirmations/admin; admin Reg table reversed; codebase map written to .paul/codebase/ (8 docs)

Milestone v0.1 XXXV Konferencja Registration Update — complete.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 18:00:34 +02:00

152 lines
6.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
phase: 03-registration-form-settings
plan: 01
subsystem: ui
tags: [php, smarty, wp_setup, mf_parameters, admin, registration, pricing]
requires:
- phase: 02-registration-dictionary-phrases
provides: dictionary-backed phrase system for registration text
provides:
- RegistrationFormSettings helper (centralized editable day/price values)
- Admin "Ustawienia formularza" page with full CRUD for days and prices
- Public registration form reading all values from settings (no hardcoded prices)
- SQL + PHP deployment seed for new wp_setup variables
affects: [any future phase touching registration pricing or public form flow]
tech-stack:
added: []
patterns: [wp_setup as key-value store for scalar/list settings, mf_parameters for price rows]
key-files:
created:
- _rejestracja/core/class/RegistrationFormSettings.class.php
- _rejestracja/Admin/controller/FormSettingsController.php
- _rejestracja/Admin/template/partial/FormSettings/Index.tpl
- _rejestracja/sql/2026-04-24-registration-form-settings.sql
- _rejestracja/sql/apply-2026-04-24-registration-form-settings.php
modified:
- _rejestracja/Admin/controller/DictionaryController.php
- _rejestracja/Admin/controller/SetupController.php
- _rejestracja/controller/IndexController.php
- _rejestracja/template/partial/Index/Index.tpl
key-decisions:
- "Day labels stored as newline-separated text in wp_setup — avoids schema changes"
- "One-day prices stored in wp_setup; full conf/surcharge prices kept in mf_parameters rows (IDs 15)"
- "Gross price in JS computed as net * VAT multiplier — not hardcoded"
patterns-established:
- "wp_setup used for new scalar/list settings with registration_form_ prefix"
- "mf_parameters rows referenced by stable IDs 15 for existing calculator prices"
duration: ~2h
started: 2026-04-24T21:00:00Z
completed: 2026-04-24T23:04:32Z
---
# Phase 3 Plan 01: Registration Form Settings Summary
**Admin "Ustawienia formularza" page built with RegistrationFormSettings helper; public form and server-side pricing fully driven by configurable values from wp_setup and mf_parameters.**
## Performance
| Metric | Value |
|--------|-------|
| Duration | ~2h |
| Started | 2026-04-24T21:00:00Z |
| Completed | 2026-04-24T23:04:32Z |
| Tasks | 3 completed |
| Files modified | 9 |
## Acceptance Criteria Results
| Criterion | Status | Notes |
|-----------|--------|-------|
| AC-1: Admin Menu Entry | Pass | "Ustawienia formularza" added to Dictionary, Setup, and FormSettings controllers |
| AC-2: Editable Participation Days | Pass | Day labels from wp_setup drive Smarty loops in Index.tpl |
| AC-3: Editable Calculation Prices | Pass | JS calculatePrice and server-side saved price use configured values |
| AC-4: Deployment Seed | Pass | SQL + PHP runner inserts defaults only when missing (idempotent) |
## Accomplishments
- Created `RegistrationFormSettings` (211 lines) centralizing day lists, VAT multiplier, one-day prices, and mf_parameters price rows
- Built admin `FormSettingsController` + `Index.tpl` grouped by participation days, main prices, surcharges, one-day prices, VAT
- Replaced all hardcoded day labels and prices in public `Index.tpl` and `IndexController.php` with settings-driven values
- Added SQL seed + guarded PHP runner for production deployment
## Task Commits
| Task | Commit | Type | Description |
|------|--------|------|-------------|
| Task 1: Shared Settings Helper | `ed2f895` | feat | RegistrationFormSettings + SQL seed files |
| Task 2: Admin Form Settings Page | `ed2f895` | feat | FormSettingsController, Index.tpl, menu links |
| Task 3: Public Form Settings Use | `ed2f895` | feat | IndexController + Index.tpl using settings |
All three tasks landed in single commit `ed2f895` (committed together as part of manual apply session).
## Files Created/Modified
| File | Change | Purpose |
|------|--------|---------|
| `_rejestracja/core/class/RegistrationFormSettings.class.php` | Created (211 lines) | Centralized read/write helper for all editable form values |
| `_rejestracja/Admin/controller/FormSettingsController.php` | Created (61 lines) | GET/POST handler for the new admin settings page |
| `_rejestracja/Admin/template/partial/FormSettings/Index.tpl` | Created (72 lines) | Admin form UI grouped by value category |
| `_rejestracja/sql/2026-04-24-registration-form-settings.sql` | Created (22 lines) | Raw SQL seed for wp_setup variables |
| `_rejestracja/sql/apply-2026-04-24-registration-form-settings.php` | Created (145 lines) | Guarded PHP runner for production deployment |
| `_rejestracja/Admin/controller/DictionaryController.php` | Modified | Added "Ustawienia formularza" menu entry |
| `_rejestracja/Admin/controller/SetupController.php` | Modified | Added "Ustawienia formularza" menu entry |
| `_rejestracja/controller/IndexController.php` | Modified | Loads settings, passes to Smarty/JS, saves one-day price from settings |
| `_rejestracja/template/partial/Index/Index.tpl` | Modified | Smarty foreach loops for day options; JS prices from settings |
## Decisions Made
| Decision | Rationale | Impact |
|----------|-----------|--------|
| Day labels as newline-separated text in wp_setup | Avoids schema changes while supporting list values | Admin edits plain text area; split on render |
| Keep IDs 15 in mf_parameters for full conf/surcharge prices | Preserves compatibility with existing calculator/admin | No migration needed for prices already stored |
| Gross = net × VAT multiplier (computed) | VAT multiplier now configurable; no hardcoded gross values | Changing VAT multiplier updates JS preview automatically |
## Deviations from Plan
### Summary
| Type | Count | Impact |
|------|-------|--------|
| Auto-fixed | 0 | — |
| Scope additions | 1 | Minor — KSeF ID helper note added under NIP field |
| Deferred | 0 | — |
**Total impact:** Minimal — single cosmetic addition, no scope creep on core functionality.
### Scope Addition
**KSeF NIP helper note** (in-plan follow-up noted in APPLY.md)
- A small informational note was added under the public NIP field
- Did not change field names or form behavior
- Committed as part of Task 3
## Issues Encountered
None — plan executed cleanly.
## Next Phase Readiness
**Ready:**
- All four ACs satisfied; admin page fully functional
- SQL seed and PHP runner ready for production deployment (`_rejestracja/sql/apply-2026-04-24-registration-form-settings.php?run=20260424`)
- Public form completely decoupled from hardcoded day/price values
- Phase 3 plan 01 complete; plan 02 (codebase map) also complete
**Concerns:**
- Production must apply the seed runner before new wp_setup settings are visible/editable
**Blockers:**
- None (same production note applies as Phase 2)
---
*Phase: 03-registration-form-settings, Plan: 01*
*Completed: 2026-04-24*