2.4 KiB
2.4 KiB
Plugin Settings Requirements
Purpose
Define implemented setup/settings and diagnostics behavior for the calendar plugin admin pages.
Scope
This document covers:
- Admin menu structure for plugin management pages
- Setup page controls and persisted settings
- Diagnostics page and diagnostics download behavior
Admin Navigation
The plugin must provide a single WordPress admin menu entry with these pages:
- Top-level menu:
Calendar Plugin - Sub-pages:
Setup,Users,Diagnostics - Access capability:
manage_options
The top-level duplicate submenu entry should be removed so only the explicit pages appear in navigation.
Setup Page
The Setup page must support:
- Saving plugin settings
- Seeding default events
- Deleting all event and recurrence-exception data
Setup form controls:
CalDAV/ICS Calendar Name(caldav_calendar_name)URL Slug Prefix(url_slug)Verification Page Path(verification_page_path)Plugin Table Prefix(table_prefix)ICS Access Mode(ics_access_mode:public_readorauthenticated_read)Diagnostics Enabled(diagnostics_enabled)Uninstall Cleanup(uninstall_cleanup_mode:keeporremove)
Behavior requirements:
- Save, seed, and delete-all actions provide success/failure messaging on the Setup page.
- Setup POST actions are nonce-protected.
table_prefixupdates rename plugin tables (events, exceptions, users, tokens, audit log) without dropping existing data.- Prefix changes must fail safely if target tables already exist.
url_slugaffects canonical routed paths for ICS and CalDAV endpoints.
Settings Persistence
- Settings are persisted through plugin options storage and returned by the admin settings API (
/wp-json/calendar/v1/settings). - Runtime endpoints and UI links must reflect the latest saved settings.
Diagnostics Page
The Diagnostics page must be admin-only and show:
- Whether diagnostics are enabled
- Runtime metadata snapshot (generation time, endpoint paths, user context, table stem)
- Recent audit log rows when diagnostics are enabled
Diagnostics download behavior:
- Download action is available only when
diagnostics_enabled=1 - Download uses a nonce-protected admin-post action
- Response is JSON attachment (
calendar-diagnostics-*.json)
Security and Access
- Setup, Users, and Diagnostics pages require
manage_options. - Form actions must validate WordPress nonces.
- Inputs must be sanitized/normalized before persistence.