# Trainer Announcements System Specification ## Overview A comprehensive announcement system enabling Master Trainers to communicate important updates to all HVAC Trainers through a dedicated post type, management interface, and automated email notifications. ## 1. Custom Post Type: Trainer Announcements ### Post Type Configuration - **Name**: `hvac_announcement` - **Labels**: Trainer Announcements (plural), Trainer Announcement (singular) - **Capabilities**: Custom capability set to restrict access - **Public**: False (not publicly queryable) - **Show in REST**: True (for Gutenberg support) - **Menu Icon**: `dashicons-megaphone` ### Post Type Features - Title - Editor (rich content with Gutenberg blocks) - Featured Image - Author - Publish Date/Time - Post Status (draft, published, private) - Custom Taxonomies: - Announcement Categories (`hvac_announcement_category`) - Announcement Tags (`hvac_announcement_tag`) ### Permissions Model - **Create/Edit/Delete**: Only users with `hvac_master_trainer` role - **Read**: Users with `hvac_trainer` OR `hvac_master_trainer` roles - **Custom Capabilities**: - `create_hvac_announcements` - `edit_hvac_announcements` - `delete_hvac_announcements` - `read_hvac_announcements` - `publish_hvac_announcements` ## 2. Master Trainer Announcements Management Page ### URL Structure - **Path**: `/master-trainer/announcements/` - **Template**: `templates/page-master-announcements.php` - **Page Slug**: `master-announcements` ### Interface Components #### Announcements Table - **Columns**: - Title (linked to edit modal) - Status (Draft/Published/Private) - Categories - Author - Date Published - Actions (Edit, Delete, View) - **Features**: - Sortable columns - Status filters (All, Published, Draft) - Bulk actions - Pagination (20 per page) - Search functionality #### Add Announcement Modal - **Trigger**: "Add New Announcement" button - **Form Fields**: - Title (required, text input) - Content (TinyMCE editor with Gutenberg blocks) - Publish Date/Time (datetime picker, defaults to now) - Status (dropdown: draft, published, private) - Categories (multi-select or checkboxes) - Tags (comma-separated text input) - Featured Image (WordPress media uploader) - **Actions**: - Save as Draft - Publish - Cancel #### Edit Announcement Modal - **Trigger**: Edit action in table or title click - **Form Fields**: Same as Add modal, pre-populated with existing data - **Additional Actions**: - Update - Move to Trash - Cancel ### AJAX Implementation - **Endpoints**: - `hvac_get_announcements` - Fetch paginated announcements - `hvac_create_announcement` - Create new announcement - `hvac_update_announcement` - Update existing announcement - `hvac_delete_announcement` - Delete announcement - `hvac_get_announcement` - Get single announcement for editing - **Security**: Nonce verification, capability checks ## 3. Trainer Resources Page ### URL Structure - **Path**: `/trainer/resources/` - **Template**: `templates/page-trainer-resources.php` - **Page Slug**: `trainer-resources` ### Page Components #### Announcements Section - **Block Type**: UAGB Post Timeline block - **Configuration**: ``` ``` - **Display**: Latest 10 announcements with load more functionality - **Fields Shown**: Title, excerpt, date, featured image thumbnail #### Google Drive Section - **Title**: "Training Resources Library" - **Implementation**: Embedded iframe - **URL**: `https://drive.google.com/drive/folders/16uDRkFcaEqKUxfBek9VbfbAIeFV77nZG?usp=drive_link` - **Iframe Attributes**: - Width: 100% - Height: 600px minimum - Responsive sizing - Border: none - Allow: fullscreen ### Access Control - Verify user has `hvac_trainer` or `hvac_master_trainer` role - Redirect unauthorized users to login ## 4. Navigation Menu Updates ### Master Trainer Navigation - **Parent Menu**: Trainer Management (existing) - **New Item**: "Announcements" - Position: After "Trainer Performance" - URL: `/master-trainer/announcements/` - Icon: megaphone or announcement icon ### Trainer Navigation - **Parent Menu**: Main navigation - **New Item**: "Resources" - Position: After "Training Leads" (under Profile) - URL: `/trainer/resources/` - Icon: folder or resource icon ### Implementation - Update `HVAC_Menu_System::get_trainer_menu_items()` - Update `HVAC_Menu_System::get_master_trainer_menu_items()` - Maintain existing dropdown structure and mobile responsiveness ## 5. Email Notification System ### Trigger - On announcement status change to "published" - Only for new publications (not updates to published posts) ### Recipients - All users with `hvac_trainer` OR `hvac_master_trainer` roles - Exclude users with status: disabled, deactivated, or pending - Use batch processing for large recipient lists (50 per batch) ### Email Template #### Subject Line ``` Upskill HVAC Trainer Announcement: [announcement_title] ``` #### HTML Template Structure ```html
Posted on [publish_date]
[featured_image]You received this email because you are registered as an HVAC Trainer.