97 lines
2.8 KiB
Markdown
97 lines
2.8 KiB
Markdown
# Calendar Editor Requirements
|
|
|
|
## Purpose
|
|
Define implemented requirements for the authenticated calendar editor used from the `/calendar` UI.
|
|
|
|
## Scope
|
|
This document covers:
|
|
|
|
- Event CRUD in the modal editor
|
|
- Supported event fields and validation
|
|
- Implemented recurrence options
|
|
- Recurrence preview and single-occurrence deletion UX
|
|
|
|
## Access Model
|
|
- Public users are read-only.
|
|
- Plugin users in `active` status can create, update, and delete events.
|
|
- WordPress users with `edit_posts` capability can also perform write actions.
|
|
|
|
## CRUD Requirements
|
|
The editor must support:
|
|
|
|
- Create event
|
|
- Edit event
|
|
- Delete event
|
|
- Delete one occurrence from a recurring event (exception-based, no series split)
|
|
|
|
Behavior requirements:
|
|
|
|
- Create/edit use modal overlay forms.
|
|
- Save/update/delete actions show status feedback.
|
|
- Delete event requires explicit user confirmation.
|
|
- Single-occurrence delete requires selecting a specific occurrence key.
|
|
|
|
## Event Fields
|
|
Supported fields:
|
|
|
|
- `title` (required)
|
|
- `visibility` (`public` or `private`; default `public`)
|
|
- `description`
|
|
- `location`
|
|
- `category`
|
|
- `all_day_event`
|
|
- `start_datetime` (required)
|
|
- `end_datetime` (required, must be on/after start)
|
|
- `repeat_type`
|
|
- `repeat_interval`
|
|
- `repeat_range_mode`
|
|
- `repeat_count`
|
|
- `repeat_until`
|
|
- Monthly pattern fields: `repeat_nth_mode`, `repeat_nth_day`, `repeat_nth_pos`, `repeat_nth_weekday`
|
|
|
|
UI behavior requirements:
|
|
|
|
- Start and end use separate date and time controls.
|
|
- Date controls use date-picker inputs.
|
|
- Time controls hide when `all_day_event` is selected.
|
|
- Floating/persistent labels keep field purpose visible.
|
|
- Internal event ID is hidden from users.
|
|
- Editor must provide a control to mark events as `public` or `private`.
|
|
|
|
## Recurrence Model
|
|
Supported `repeat_type` values:
|
|
|
|
- `none`
|
|
- `daily`
|
|
- `weekly`
|
|
- `monthly`
|
|
- `yearly`
|
|
|
|
Supported monthly modes:
|
|
|
|
- `day_of_month` (nth day)
|
|
- `weekday_of_month` (nth weekday, including `last` via negative position)
|
|
|
|
Supported range modes:
|
|
|
|
- `none`
|
|
- `count`
|
|
- `until`
|
|
|
|
## Recurrence Preview and Occurrence Selection
|
|
- For recurring events, editor shows a 3-month occurrence chooser grid.
|
|
- Grid supports previous/next month paging.
|
|
- Selecting an occurrence sets the occurrence key used by `Delete Occurrence`.
|
|
- Deselect/reselect behavior must be supported.
|
|
- For `repeat_type=none`, occurrence controls remain hidden and delete-occurrence is disabled.
|
|
|
|
## Verification Requirements
|
|
Acceptance should verify:
|
|
|
|
- Approved/authenticated users can complete full CRUD.
|
|
- Recurring events render selectable occurrences in preview grid.
|
|
- Deleting one occurrence creates an exception while preserving the series.
|
|
- Monthly ordinal patterns save and reload correctly.
|
|
- Validation blocks invalid start/end ranges.
|
|
- Privacy visibility setting saves and reloads correctly.
|