Consolidate CE + art supplies callouts onto rows; drop legacy Event columns#1996
Merged
Conversation
…yout Removes the duplicated back-eyebrow + branded-header chrome both pages hand-rolled. Scholarship now renders through the shared layout, so it picks up @builtin_intro (the materialized row's 'Callout page text'), which the old bespoke markup silently dropped. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…lumns Finishes migrating the CE and art-supplies built-ins fully onto their materialized callout rows, and deletes the two now-orphaned standalone pages. - Rename the event_details built-in to art_supplies and make it a *content* callout, so it renders on the generic callout page (like handouts/FAQ) with no dedicated action/view. Default title 'Art supplies & what to bring'. - Drop the legacy Event columns event_details(_label) and ce_hours_details(_label) (two reversible migrations, no backfill). The heading + copy live on the row now; the CE heading reads from the row via Event#ce_hours_label (used by the CE card, the CE page, and the CE-deadlines mailer). - Delete the orphaned events#ce_hours / events#details pages, routes, controller actions, policy rules, and their specs — superseded by the callout pages. - Remove the dead editor branch, the event_details_card builder, and the now-unused _builtin_callout_card partial. - Seed the built-in callouts on every dev event and move the demo CE / art-supplies copy onto their rows. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…f event config #1992 added config_gap guards to the callout card builders but didn't exempt the admin sample-ticket preview, so its 'every option turned on' view could no longer show the scholarship / CE cards on an event lacking a scholarship form or CE hours (and events_spec's sample_ticket ?options=all has failed since). The preview illustrates a hypothetical registrant's options, so it now bypasses config_gap for those two cards while a real ticket still applies it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This was referenced Jul 15, 2026
maebeale
added a commit
that referenced
this pull request
Jul 15, 2026
…1997) Salvaged from the closed #1984 (superseded by #1996), ported to current builtin_key vocabulary. #1996 landed the structural cleanup but left these two behavioral assertions uncovered at their respective layers: - Model: art_supplies is a *content* built-in (behavioral_builtin? == false), unlike a behavioral built-in like certificate. - Request: the CE and scholarship pages render the intro copy from their materialized callout row's description (FAQ already covered; handouts has no description intro). Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3 tasks
maebeale
added a commit
that referenced
this pull request
Jul 15, 2026
… specs
- Remove EventRegistration#checked_in? — a stub with no backing column and
no history of ever being implemented; deletes the unreachable "Checked in"
badge branch on the ticket too. Day 1/Day N attendance already covers this
via completed_day_N.
- Fix a real double-query on every ticket render: registration_ticket_callouts
was queried once in the view and again in BuiltinCalloutCards#materialized?,
plus a resources.any? query per visible callout. Preload
event: { registration_ticket_callouts: :resources } and read the loaded
association in Ruby instead of re-scoping it.
- Move HANDOUT_RESOURCE_TITLES from Events::CalloutsController into
BuiltinCallouts, which actually owns the callout catalog; the controller
had it backwards.
- Delete BuiltinCallouts.seedable_keys — dead code with no callers anywhere.
- Add request specs for CalloutsController's three previously-uncovered
actions (certificate, update_ce_license, request_ce), and a spec pinning
that the sample-ticket preview's config_gap bypass only applies to
scholarship/CE (registrant-level), never payment/videoconference
(event-level) — guards against a repeat of the #1992/#1996 regression.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
maebeale
added a commit
that referenced
this pull request
Jul 15, 2026
… specs (#1999) - Remove EventRegistration#checked_in? — a stub with no backing column and no history of ever being implemented; deletes the unreachable "Checked in" badge branch on the ticket too. Day 1/Day N attendance already covers this via completed_day_N. - Fix a real double-query on every ticket render: registration_ticket_callouts was queried once in the view and again in BuiltinCalloutCards#materialized?, plus a resources.any? query per visible callout. Preload event: { registration_ticket_callouts: :resources } and read the loaded association in Ruby instead of re-scoping it. - Move HANDOUT_RESOURCE_TITLES from Events::CalloutsController into BuiltinCallouts, which actually owns the callout catalog; the controller had it backwards. - Delete BuiltinCallouts.seedable_keys — dead code with no callers anywhere. - Add request specs for CalloutsController's three previously-uncovered actions (certificate, update_ce_license, request_ce), and a spec pinning that the sample-ticket preview's config_gap bypass only applies to scholarship/CE (registrant-level), never payment/videoconference (event-level) — guards against a repeat of the #1992/#1996 regression. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 suggested review level: 5 Inspect 🔬 drops two Event columns (migrations), deletes two standalone pages, renames a built-in, and reworks the callout system
Salvages the still-relevant parts of #1984 (which had gone stale — main since merged the de-magic rename #1977 and materialized per-resource copy #1990). Superseded rendering changes were dropped; this keeps the structural cleanup, re-applied on top of current
main.FAQ + scholarship onto the shared
_callout_pageevents/callouts/_callout_page.@builtin_intro(the materialized row's "Callout page text"), which its bespoke markup silently dropped.Delete the orphaned
events#ce_hours/events#detailspagesevent_details_card.event_details→art_supplies+ drop legacy columnsart_suppliesis now a content callout — renders on the generic callout page like handouts/FAQ, no dedicated action/view. Default title "Art supplies & what to bring".event_details(_label)andce_hours_details(_label)(two reversible migrations, no backfill, per the original product call). The heading + copy live on the row now; the CE heading reads from the row viaEvent#ce_hours_label(CE card, CE page, CE-deadlines mailer).event_details_cardbuilder, and the unused_builtin_callout_cardpartial.Drive-by fix (unblocks CI)
events_spec"sample_ticket ?options=all" had been red since Guard payment/scholarship/CE ticket callouts against missing event config #1992 addedconfig_gapguards without exempting the admin preview, so the "every option" preview could no longer show the scholarship / CE cards. The preview illustrates a hypothetical registrant's options, so it now bypassesconfig_gapfor those two cards; a real ticket still applies it.