Skip to content

Calendar Event Item Occurrence List block — Registration links bypass page route #6989

Description

Description

The Obsidian Calendar Event Item Occurrence List block (Rock.Blocks/Event/EventItemOccurrenceList.cs) does not use the friendly route of the configured Registration Instance Page when linking to a registration instance.

Actual Behavior

On the Event Detail page (web/calendars/{id}/event/{id}), the "Calendar Event Item Occurrence List" block (Obsidian, BlockType 356, instance 656 on page 396) renders a grid of event occurrences. Its Registration column links to the configured Registration Instance Page (page 404) — but always as the fallback URL /page/404?RegistrationInstanceId=XYZ instead of the friendly route /RegistrationInstance/XYZ, even though page 404 has that route configured.

Root cause (in Rock's core block code, Rock.Blocks.Event.EventItemOccurrenceList):

Server-side, the block builds the base URL via GetLinkedPageUrl( "RegistrationInstancePage" ) without passing any parameters. Rock's PageReference.BuildUrl() only uses a page route when all of the route's {parameters} are supplied — with zero parameters, route matching fails and it falls back to the literal page/404.
Client-side (eventItemOccurrenceList.obs), the Registration link then hard-codes the ID as a query string: href = registrationInstancePageUrl + "?RegistrationInstanceId=" + row.registrationInstanceId.
Result: https://rocksolidchurchdemo.com/page/404?RegistrationInstanceId=QDAjpxdjB5 — correct destination, wrong URL shape. The setting pointing to page 404 is correct; the block simply never engages the route system for this link. (Notably, the same block does it correctly for row-click navigation to the occurrence Detail page, passing a ((Key)) placeholder through route substitution.)

Image

Expected Behavior

Accessing the registration instance from any other block seems to work. Such as the Calendar Item campus Detail.

Image

Steps to Reproduce

`

How to Link Registration Instances to Church Calendars

Made by Luke Quinlivan with Scribe

Learn how to efficiently link specific registration instances to your church calendar events. This guide streamlines the process of managing event details and registrations within your platform to keep your church activities organized.



Open Event Calendar

2. Click "Calendars"

3. Click "Public"

4. Click the Rock Solid Finances Class event.

5. Click the Rock Solid Finances Class occurrence.

Edit Event Occurrence

6. Click "Edit"

7. Click "Add Linkage"

8. Click "Use Existing Registration Instance"

9. Select Summer Camp as the registration template.

10. Type "Test" in the Public Name field.

11. Click "Save"

12. Click "Save"

Verify Registration Link

13. Click "Rock Solid Finances Class"

14. Click "Summer Camp 2019"


[Made with `Scribe](https://scribehow.com/o/8825UyLjTRSHptL1uR2n5g/viewer/How_to_Link_Registration_Instances_to_Church_Calendars__UbM2Rn_8TWK6kNpzrjHBmg)


``

Issue Confirmation

  • Perform a search on the Github Issues to see if your bug is already reported.
  • Reproduced the problem on a fresh install or on the demo site.

Rock Version

19.2

Client Culture Setting

en-AU

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions