Files
huntingclubroster/CLUB-MODALS-2026-10-20.md
T

3.0 KiB

Club summary action dialogs

Club add/edit forms now open in Bootstrap modals. The summary shows club details, tables, history and action buttons; it no longer displays editing fields inline.

Dialogs cover club editing/archiving, membership edits, existing-account assignment, invitations, invitation revocation, new seasons, recording dues and payments, dues corrections and payment reversals. The Invite members header action opens its dialog directly. Existing-record dialogs identify the selected member, dues or payment row. Separate club creation and ticket pages retain their existing workflows.

classes/ClubFormModals.php transforms only the club forms the server has already authorized for the viewer. It moves dialogs outside the tables, supplies unique IDs, labelled headings, close and cancel controls, and scrollable phone-friendly layouts. Members receive no administrator forms or action dialogs.

js/club-modals.js submits these forms through the existing protected club controller. Validation and permission errors appear inside the dialog without clearing entered values. Saving disables action buttons and prevents dismissal until the response returns; existing financial request keys are retained. Successful saves reload the club summary and display its success notice. Cancel, close and Escape dismiss an idle dialog without submitting changes. Bootstrap provides focus containment and returns focus to the opening action.

classes/Roster.php renders the dialog layout and returns a JSON success result only for the modal's explicitly marked AJAX requests. Existing ordinary POST flows retain their redirects. All existing CSRF, tenant access, recent MFA, validation, audit and financial safeguards continue to run on the server.

Browser regressions exercise the real dialogs rather than hidden forms, including cancellation, validation failures, membership changes, invitation delivery feedback, seasons, dues, payments, corrections and reversals. Release packaging checks require both new files. No new dependency or database migration is required.

Validation passed 262 targeted checks: 99 project HTTP, 19 onboarding HTTP, 33 general browser, 19 tenant browser, 16 deployment tooling, 24 MFA/session HTTP, 41 security/capacity service and 11 paging/export HTTP checks. Source validation passed for 66 PHP files, 58 JavaScript files and 39 XSL stylesheets. Browser tests also verify club edits, cancellation of invitation revocation, phone dialog width, first-field focus and focus restoration after Escape.

The three application files were deployed to development and their hashes verified. A protected temporary runtime check confirmed server-side dialog rendering, and the new script was fetched successfully; the probe was removed. Prior files were saved under .tools/deployment-backups/club-modals-07cbd8d9f91242e19f5501609489e35a. No existing development database records were changed. Tests used disposable local databases and generated accounts with external email disabled; the local test database server was stopped after cleanup.