rsvp-system / rsvp-system-module
Core Drupal module for the RSVP System. Implements hooks that must live in a module (not a theme), including Views query filters for the calendar event view.
Package info
gitlab.com/rsvp-system/rsvp-system-module
Type:drupal-module
pkg:composer/rsvp-system/rsvp-system-module
Requires
- php: >=8.3
- drupal/core: ^10.3 || ^11.0
- dev-main
- 1.0.61
- 1.0.60
- 1.0.58
- 1.0.57
- 1.0.56
- 1.0.55
- 1.0.54
- 1.0.53
- 1.0.52
- 1.0.51
- 1.0.50
- 1.0.49
- 1.0.48
- v1.0.47
- 1.0.46
- 1.0.45
- v1.0.44
- v1.0.43
- v1.0.42
- v1.0.41
- v1.0.40
- v1.0.38
- v1.0.37
- v1.0.35
- v1.0.34
- v1.0.33
- v1.0.32
- v1.0.31
- v1.0.30
- 1.0.29
- 1.0.28
- 1.0.27
- 1.0.26
- 1.0.25
- 1.0.24
- 1.0.23
- 1.0.22
- 1.0.21
- 1.0.20
- 1.0.19
- 1.0.18
- 1.0.17
- 1.0.16
- 1.0.15
- 1.0.14
- 1.0.13
- 1.0.12
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
This package is not auto-updated.
Last update: 2026-03-24 18:46:10 UTC
README
A Drupal module implementing the server-side hooks for the RSVP System — a recipe-based platform for building calendar and reservation sites with Drupal.
Drupal: ^10.3 || ^11.0
PHP: ^8.3
Part of: RSVP System
Why This Module Exists
Drupal's ModuleHandler::invokeAll() does not invoke theme implementations of
hooks like hook_views_query_alter or hook_views_post_render. Any hook that
must run as part of the server-side request lifecycle — rather than at theme
render time — requires a dedicated module. This module provides those hooks for
the RSVP System.
What It Does
Calendar Views Filtering
hook_views_query_alter injects month-range and community filters into two
Views:
rsvp_event_calendar— Filters one-offrsvp_eventnodes (Smart Date Unix timestamps) to the current calendar month and community. Applies the ADR-0015 owner-OR-audience community model.rsvp_recurring_events_block— Filterseventinstanceentities (ISO datetime strings) to the current month. Community filtering JOINs through the parent EventSeries, becausedrupal/field_inheritancepropagates community fields at display time only and does not write them to the EventInstance database tables.
FullCalendar Month Lock
hook_views_pre_render sets FullCalendar's initialDate and validRange
options dynamically so the calendar renders at the correct month for the current
page, rather than defaulting to today's date.
Unified Calendar Display — Recurring Events Injection
hook_views_post_render injects EventInstance events from
drupal/recurring_events into the same FullCalendar grid as rsvp_event
nodes, without a SQL UNION. The FullCalendar style plugin stores its event data
in drupalSettings inside the render array's #rows key. This hook appends a
second event source array in PHP before the render array reaches the browser.
FullCalendar.js merges all sources onto the same grid.
EventInstances receive the fc-recurring-event CSS class for visual
distinction. Community filtering uses the same EventSeries JOIN pattern as
the query alter hook.
Pathauto Support for Recurring Events Entities
hook_entity_base_field_info adds the path base field to both eventseries
and eventinstance entity types. drupal/recurring_events:^3.0 does not
implement path aliasing natively; this hook is what enables Pathauto to generate
URL aliases for recurring events entities.
Submodule: rsvp_reservation_widget
An AJAX cascading form widget for the rsvp_reservation node form.
Replaces the raw entity reference widgets for community and resource fields with
a two-step UX: a community selector (defaulting to the user's primary community)
followed by a resource selector filtered to that community. Resource options come
from the rsvp_resources_by_community View. Values are written back to the
underlying fields via #element_validate.
Enable separately:
vendor/bin/drush en rsvp_reservation_widget
Installation
This module is included automatically when a site requires the RSVP System requirements metapackage:
composer require rsvp-system/rsvp-requirements
vendor/bin/drush en rsvp_system_module
Or install directly:
composer require rsvp-system/rsvp-system-module
vendor/bin/drush en rsvp_system_module
No additional configuration is required. Hooks fire automatically when the
target Views (rsvp_event_calendar, rsvp_recurring_events_block) are present.
Dependencies
This module depends on:
drupal:viewsdrupal:node
The rsvp_reservation_widget submodule additionally requires:
drupal:taxonomy
Contrib module dependencies (drupal/recurring_events, drupal/field_inheritance,
drupal/fullcalendar, drupal/smart_date, drupal/pathauto) are pulled in via
the rsvp-system/rsvp-requirements metapackage.
Related Packages
| Package | Purpose |
|---|---|
rsvp-system/rsvp-requirements | Composer metapackage — all contrib dependencies + this module |
rsvp-system/rsvp-recipes | Drupal recipes — config for calendar, events, reservations, communities |
rsvp-system/rsvp-system-theme | Tailwind-based frontend theme |
License
GPL-2.0-or-later. See LICENSE.