Events
Event publishing, registration, payments, tickets, check-in, attendance, and event management.
About
Complete event management for DivisionDesk organizations, from public event listings and registration through attendee management, payments, tickets, QR check-in, attendance, cancellations, refunds, reminders, options, guests, and event reporting.
Features
- Public event listings
- Online event registration
- Guests and registration options
- Paid and offline registrations
- QR tickets and check-in
- Attendance management
- Registration balances
- Cancellations and refunds
- Event confirmations and reminders
- Event reporting
What's New in 1.1.28
Fix Core 4.6.58 update lifecycle contract: Update::update() is now the update entry point; preserves camp-scoped event permissions and prior installation fixes.
View full package changelog
# 1.1.26 QA - Fix installation failure caused by `use PDO;` in the global-namespace event-scope migration. - Preserve 1.1.25 Camp-scoped event authorization and migration behavior. # Events 1.1.25 - Adds organization scope to events. Existing events converge to Division/default. - Camp Commander and Camp Adjutant may create, edit, publish/archive, and delete only events owned by their own Camp. - Camp-scoped authorization is enforced server-side for save, cancel/archive, and delete operations. - Camp officers see only their Camp events in Events administration; Division event administrators retain Division-wide authority. - Camp event saves use the module-owned scoped save action instead of the legacy global Core save endpoint. # Events 1.1.24 - Registration Closes remains a configurable date/time. - Leaving it blank now explicitly means registration closes when the event begins. - Existing registration-enabled events with no close time are converged to their event start so Core's server-side registration endpoint rejects late/direct submissions. - The module editor synchronizes Core and Events registration timing columns after each save. - Public registration shows a closed/not-yet-open message instead of a form outside the allowed window. - `Register Now` is not shown after registration closes. - Verified public Events list/upcoming/featured queries already exclude occurrences once their start time has passed. - No Core update required. # Events 1.1.23 - FIX: The blank public `Events` title area is now suppressed using the actual DivisionDesk Builder heading markup (`cms-block--heading`) on event-detail pages. - The previous 1.1.22 selector looked for a `cms-hero`, which is not what this page uses; therefore it could never hide the title shown in the test screenshot. - The Events listing page remains unchanged. - Retains 1.1.22 tab-scroll, registration UI, and Schedule editor toolbar fixes. - No Core change. # Events 1.1.22 - FIX: Public tab clicks no longer jump the browser back to the top of the event card; the native tab radio state is fixed to the viewport rather than positioned at the article top. - FIX: Event-detail pages hide the generic CMS `Events` hero/blank title area. The Events listing page is unchanged. - FIX: Schedule rich-text toolbar buttons have explicit contrasting backgrounds/text so formatting icons remain visible. - FIX: `Register & Pay Online` is shown only when the installed Finance module exposes the supported Events checkout contract. - Paid Events registrations work with Finance 1.2.9+; `Register — Pay Later` remains available independently. - No Core changes. # Events 1.1.21 - FIX: Public Overview / Schedule / Location / Registration tabs no longer depend on JavaScript. They use native radio/label state plus CSS, so exactly one panel is selected without a JS tab handler. - FIX: Register Now switches directly to the Registration panel using that same native mechanism. - FIX: Corrected an undefined `$eventId` reference in the generated registration JavaScript; the real event ID is now used. - FIX: Standalone Registration Button widget no longer inherits tab-only hidden styling. - No Core, Finance, or Membership Manager changes. # Events 1.1.20 - Removed attendee type selection from the new public registration flow. - Member number and Camp name/number are available on every registration and are optional except member number on explicitly members-only events. - Additional Guests is built in and defaults to $0 additional registration fee. - Event admins may explicitly apply the base registration fee to each additional guest. - Add-on quantities are independent of primary registrant/guest count. - Blank add-on quantity means zero. - Quantity add-ons with per-item choices allow blank choices after a confirmation warning. - Added a canonical Core rich-text Schedule editor and public Schedule rendering. - Preserves historical attendee-type data for existing registrations. - Requires Core 4.6.12+. # Events 1.1.19 - Public event tabs are now genuinely mutually exclusive. Overview, Schedule, Location and Registration occupy the same content region; inactive panels are both hidden and `display:none`. - `Register Now` activates the Registration panel instead of appending/scrolling to a second copy of event content. - Attendee types may be removed from active configuration even when historical registrations reference them; in that case the type is archived and history is preserved. - An active attendee type named `Guest` automatically creates an `Additional Guests` registration control using that Guest price. Selecting 2 guests creates exactly 2 required guest-name fields. - Priced Select/Radio options with choices are normalized to `quantity_choice`, so a Banquet priced per person gets a quantity selector and one Beef/Chicken/etc. selector per purchased unit. - Reducing a guest/option quantity removes excess DOM controls, so hidden stale names/choices are not submitted. - Requires Core 4.6.11+ because Core owns authoritative server-side quantity normalization and pricing. # Events 1.1.18 - Registration is now a true event tab instead of content appended below Overview. - Primary attendee collects full name, address, phone and email; member-only registrations also require member number and Camp name/number. - Logged-in members auto-fill from the Membership Manager provider when available. - Adds Guest Names options: selecting quantity N creates exactly N guest-name fields. - Adds Quantity + per-item choice options: quantity N creates exactly N choice selectors, e.g. Beef/Chicken for each meal. - Reducing a quantity removes and clears excess guest/choice inputs immediately. - Quantity pricing updates live and zero quantity means no charge. - Hides legacy duplicate `Registration Fee` add-ons when attendee type pricing already provides the base registration price. - Retains 1.1.17 pay-now/pay-later and duplicate-submit fixes. # Events 1.1.17 - Fixes duplicate registrations caused by Core and Events both submitting the same form. - Fixes Save/Publish redirecting to legacy Core Events admin. - Adds Register & Pay Online / Register — Pay Later and a live registration/add-on/total breakdown. - Finance completion marks the matching registration paid/confirmed. - My Events matches member ID or email and is moved before the site footer. - Retains 1.1.16 toggle persistence and 1.1.15 rich public detail restoration. # Events 1.1.16 - Fixes the Events module editor Registration switch turning itself back off after Save. - Core `registration_enabled` and Events `registration_mode` are now explicitly synchronized. - The module's post-save integration action writes both fields, so public registration becomes available immediately after enabling it. - Event reads treat Core's `registration_enabled` compatibility field as authoritative when an older/stale `registration_mode` disagrees. - Waitlist state is also carried through the same module extras save. - All 1.1.15 public detail/card/routing and 1.1.13 registration/check-in/refund functionality is retained. # Events 1.1.15 - Rebuilt from the untouched Events 1.1.13 package, not from 1.1.14. - Preserves the 1.1.13 rich registration, QR/check-in, cancellation/refund, My Events, attendee/options and Finance integration code. - Adds only the missing `days()`, `daysUntil()` and `startingPrice()` helpers required by the existing public detail renderer. - Upcoming/Next/Featured event cards are styled, clickable and show `Cost: Starting at $xx.xx` for paid events. - `/events?event=ID` now hands the Events page into the existing full Event Detail / Registration renderer instead of looping to the same list card. - Adds narrow duplicate-submit protection to the legacy and current event editors. # Changelog ## 1.1.13 - Fixed the false Core "Check-in code is invalid" toast after a successful short confirmation-code check-in by removing the native form-submit path entirely. The Events check-in control now uses one explicit AJAX action for short codes and only calls Core directly for signed credentials. - Quick Actions on the Events dashboard is now a working no-JavaScript dropdown with direct links to Check-in, Registrations, Attendees, Reports and Settings. - Removed the duplicated Core module title/card from Events administration and expanded the Events application shell to the available admin width without modifying Core. - Expanded My Events management: members can open registration details, add guests through Core Registration 2.0 (including required guest options/add-ons), add available zero-cost options, remove options only when cancellation/refund policy allows, and cancel the full registration when permitted. - Paid option additions are intentionally blocked before mutation when Core/Finance has no safe incremental-charge contract; the module will not silently add an unpaid charge to an already-paid registration. - Paid refundable option removal creates an itemized refund request for Finance review instead of silently changing historical payment data. ## 1.1.12 - Audited against DivisionDesk Core 4.4.4 without changing Core. - Fixed camera flow so permission is requested before decoder capability checks; added native BarcodeDetector + jsQR fallback scanning. - Check-in now accepts a full QR URL, signed token, or visible confirmation code such as `761A88ED8D`. - Bypassed the Core subdirectory QR double-prefix issue in the Events public flow by generating a correct module-owned QR from the signed credential. - Added SDK-based `/my-events` management/cancellation controls for signed-in members. - Aligned runtime data access with Core Registration 2.0 (`first_name`/`last_name`, `confirmed`/`waitlisted`, `price_cents`, `event_registration_options`, `event_registration_answers`). - Refund calculations now use Core paid totals and answer price snapshots when available. - Prevented Events uninstall from dropping Core-owned event/registration tables. ## 1.1.11 - Added attendee self-cancellation using confirmation code + registration email, with per-event cancellation controls and cutoff date. - Added event-level refund modes plus per-attendee-type and per-option refund policies (inherit/refundable/nonrefundable/manual). - Paid cancellations create auditable itemized refund requests; Events never moves money directly and leaves actual refund processing to Core/Finance. - Added optional automatic waitlist promotion when a confirmed registration cancels. - Reworked confirmation URL normalization so the configured DivisionDesk base path is never prepended twice by Events. - Expanded schema convergence and Diagnostics for cancellation/refund fields and refund-request storage. - Documented that the QR image on Core's confirmation/badge page is Core-owned; Events Check-in safely extracts the signed token even if a scanned QR contains a URL. ## 1.1.9 - Prevented duplicate public registration submissions with a single raw same-origin request, submit locking, button disabling, and a short post-success lock. - Public registration now explicitly renders every active option/add-on and labels each one Required or Optional; only required fields receive browser validation. - Successful registration stays in the Events registration experience rather than automatically following Core legacy redirects. - Confirmation URLs returned by Core are normalized to the configured DivisionDesk public base path for subdirectory installs. - QR check-in accepts a raw signed credential or extracts token/credential/checkin_token/code values from a scanned QR URL. - Removed the module link to undocumented `/events-badge.php`, which could produce a 404; registrations now link to the supported Check-in workspace. ## 1.1.8 - Removed duplicate Core/page heading presentation from Events module pages and widened the Events workspace. - Published one-off events are now immediately discoverable by public Events widgets even if an occurrence row has not yet been materialized. - Added an in-module public event preview so administrators can test the exact public event/registration experience before placing widgets. - The Registration Button widget now resolves the selected/next published event and exposes a working registration flow instead of an orphan anchor. - Event presentation fields (summary, featured image, city/state, timezone, all-day/featured flags) are persisted after the frozen Core save contract through an Events Smart Action. - Public widget queries now fall back safely to base event dates when occurrence materialization is not available. - Made event options/add-ons truly optional and removed invalid nested forms. - Added multiple option/type creation controls and remove actions. - Added cancel/archive and guarded permanent delete event actions. - Kept successful saves inside the polished Events module editor. - Expanded responsive layout to a centered wide workspace instead of a cramped Core column. ## 1.1.6 - Full runtime schema convergence for registration types, registration fields, and categories, including active/sort_order and every column referenced by current queries. - Diagnostics/schema health now verifies those query-critical columns before reporting current. # Changelog ## 1.1.6 - Fixed Dashboard/Events/Check-in compatibility with Core-created event rows that use `location` rather than `location_name`. - Added Core 4.3.4 event-contract compatibility fields non-destructively and synchronized legacy display fields. - Fixed partial output-buffer leakage so a caught page exception no longer duplicates the Events rail/layout. - Event saves now return to the DivisionDesk Events module editor instead of the legacy Core `/events-admin.php` screen. - Registration type/option saves stay inside the module UI instead of following Core legacy redirects. - Removed negative-margin module layout behavior that could collide with the Core admin shell. - Diagnostics now verifies both Core event-contract fields and Events display fields. ## 1.1.4 - Added request-time schema health checking and idempotent self-healing so Store replacements no longer depend on Install/Update lifecycle hooks. - Schema repair directly converges missing Events/Registration 2.0 tables and columns without deleting existing event data. - Diagnostics exposes automatic repair failures and retains the explicit Repair / Verify Events Schema Smart Action. - Schema version is verified and recorded as 1.1.4 only after required objects are confirmed present. ## 1.1.2 - Stabilized Dashboard, Venues, Categories and Settings with defensive data access. - Added module-owned exception handling so useful errors are visible instead of being swallowed by the Core page wrapper. - Added Diagnostics page for database driver, schema version, required tables and Registration 2.0 columns. - Added migration 003 to verify/repair required v1.1 schema columns and record schema version 1.1.2. - Preserved the approved Events v1.1 admin visual system and Platform 1.1 API/SDK architecture. # Events Changelog ## 1.1.0 — 2026-08-28 - Rebuilt administration around Developer Platform 1.1 module-owned admin pages and the approved Events dashboard visual language. - Added Registration 2.0 attendee types, priced options/add-ons, capacities, waitlists and member-only flags. - Added QR/manual check-in workspace and registration schema fields for signed check-in credentials, confirmation codes and check-in timestamps. - Added Reports, Attendees, Waitlists, Venues, Settings and API workspaces. - Added setup wizard, dashboard contribution, search provider, Smart Action, integration listeners and current SDK job registration. - Added public Event Detail / Registration and Registration Button Builder widgets. - Event mutations use Core Events / Registration 2.0 endpoints; payments/refunds remain owned by central Finance/Payments integration. - Removed legacy standalone admin chrome from the primary experience. ## 1.0.0 — 2026-08-14 - Initial Events module baseline. ## 1.1.2 - Schema repair release: install/update now explicitly converges partial Events schemas. - Creates missing categories, venues, settings, registration fields and registration types tables. - Adds missing Registration 2.0 columns including registration_mode, amounts, confirmation and QR check-in fields. - Adds Diagnostics Repair / Verify Events Schema action. - Clarifies recurring-event generation horizon setting.
Release History
2026-10-01T22:43:29+00:00
Fix Core 4.6.58 update lifecycle contract: Update::update() is now the update entry point; preserves camp-scoped event permissions and prior installation fixes.
2026-10-01T22:36:30+00:00
Adds the required Events Lifecycle::update() hook for Cubicle updates while preserving the 1.1.26 strict-PHP migration fix and Camp Commander/Adjutant scoped event authorization.
2026-10-01T22:33:43+00:00
Fixes Events 1.1.25 installation on strict DivisionDesk error handling by removing the redundant global PDO import from the event-scope migration. Preserves Camp Commander/Adjutant scoped event create, edit, publish, archive and delete authorization.
2026-09-25T21:34:00+00:00
Adds registration timing enforcement: configurable close time; blank defaults to event start; existing enabled events are converged to that default; public registration closes at deadline/start. Public event listings continue to exclude started/past occurrences.
2026-09-13T06:32:33+00:00
Adds registration timing enforcement: configurable close time; blank defaults to event start; existing enabled events are converged to that default; public registration closes at deadline/start. Public event listings continue to exclude started/past occurrences.