Some checks failed
		
		
	
	HVAC Plugin CI/CD Pipeline / Code Quality & Standards (push) Has been cancelled
				
			HVAC Plugin CI/CD Pipeline / Unit Tests (push) Has been cancelled
				
			Security Monitoring & Compliance / Secrets & Credential Scan (push) Has been cancelled
				
			Security Monitoring & Compliance / WordPress Security Analysis (push) Has been cancelled
				
			HVAC Plugin CI/CD Pipeline / Security Analysis (push) Has been cancelled
				
			HVAC Plugin CI/CD Pipeline / Integration Tests (push) Has been cancelled
				
			Security Monitoring & Compliance / Dependency Vulnerability Scan (push) Has been cancelled
				
			Security Monitoring & Compliance / Static Code Security Analysis (push) Has been cancelled
				
			Security Monitoring & Compliance / Security Compliance Validation (push) Has been cancelled
				
			HVAC Plugin CI/CD Pipeline / Deploy to Staging (push) Has been cancelled
				
			HVAC Plugin CI/CD Pipeline / Deploy to Production (push) Has been cancelled
				
			HVAC Plugin CI/CD Pipeline / Notification (push) Has been cancelled
				
			Security Monitoring & Compliance / Security Summary Report (push) Has been cancelled
				
			Security Monitoring & Compliance / Security Team Notification (push) Has been cancelled
				
			- Deploy 6 simultaneous WordPress specialized agents using sequential thinking and Zen MCP - Resolve all critical issues: permissions, jQuery dependencies, CDN mapping, security vulnerabilities - Implement bulletproof jQuery loading system with WordPress hook timing fixes - Create professional MapGeo Safety system with CDN health monitoring and fallback UI - Fix privilege escalation vulnerability with capability-based authorization - Add complete announcement admin system with modal forms and AJAX handling - Enhance import/export functionality (54 trainers successfully exported) - Achieve 100% operational master trainer functionality verified via MCP Playwright E2E testing 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			92 lines
		
	
	
		
			No EOL
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			No EOL
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Template Name: Master Announcements
 | |
|  * Description: Template for the master trainer announcements page
 | |
|  */
 | |
| 
 | |
| // Define constant to indicate we are in a page template
 | |
| define('HVAC_IN_PAGE_TEMPLATE', true);
 | |
| 
 | |
| get_header();
 | |
| 
 | |
| // Authentication handled by centralized HVAC_Access_Control system
 | |
| // Redundant template-level auth check removed to prevent content blocking
 | |
| 
 | |
| echo '<div class="hvac-page-wrapper hvac-master-announcements-page">';
 | |
| echo '<div class="container">';
 | |
| 
 | |
| // Render master trainer navigation inside the wrapper
 | |
| if (class_exists('HVAC_Master_Menu_System')) {
 | |
|     $master_menu = HVAC_Master_Menu_System::instance();
 | |
|     $master_menu->render_master_menu();
 | |
| }
 | |
| 
 | |
| // Render breadcrumbs inside the wrapper
 | |
| if (class_exists('HVAC_Breadcrumbs')) {
 | |
|     // Fix: The method is render_breadcrumbs(), not render()
 | |
|     $breadcrumbs_instance = HVAC_Breadcrumbs::instance();
 | |
|     echo $breadcrumbs_instance->render_breadcrumbs();
 | |
| }
 | |
| ?>
 | |
| 
 | |
| <div class="hvac-master-announcements">
 | |
|     <h1 class="page-title">Announcements</h1>
 | |
|     
 | |
|     <div class="announcements-intro">
 | |
|         <p>Manage system-wide announcements for all trainers.</p>
 | |
|     </div>
 | |
|     
 | |
|     <div class="announcement-actions">
 | |
|         <button class="button button-primary hvac-add-announcement">Add New Announcement</button>
 | |
|     </div>
 | |
|     
 | |
|     <div class="announcements-content">
 | |
|         <?php
 | |
|         // Render admin interface for master trainers
 | |
|         if (class_exists('HVAC_Announcements_Admin') && HVAC_Announcements_Permissions::is_master_trainer()) {
 | |
|             $admin_interface = HVAC_Announcements_Admin::get_instance();
 | |
|             echo $admin_interface->render_admin_interface();
 | |
|         }
 | |
|         
 | |
|         // Also display the announcements timeline for viewing
 | |
|         echo '<div class="announcements-display-section">';
 | |
|         echo '<h2>' . __('Published Announcements', 'hvac') . '</h2>';
 | |
|         
 | |
|         // First try the_content() to get any shortcode from post_content
 | |
|         ob_start();
 | |
|         if (have_posts()) {
 | |
|             while (have_posts()) {
 | |
|                 the_post();
 | |
|                 the_content();
 | |
|             }
 | |
|         }
 | |
|         $post_content = ob_get_clean();
 | |
| 
 | |
|         // If post_content is empty or just contains the shortcode without rendering, try direct shortcode
 | |
|         if (empty(trim(strip_tags($post_content))) || strpos($post_content, '[hvac_announcements_timeline]') !== false) {
 | |
|             // Ensure the shortcode class is initialized
 | |
|             if (class_exists('HVAC_Announcements_Display')) {
 | |
|                 $instance = HVAC_Announcements_Display::get_instance();
 | |
|                 if (method_exists($instance, 'render_timeline_shortcode')) {
 | |
|                     echo $instance->render_timeline_shortcode();
 | |
|                 } else {
 | |
|                     echo do_shortcode('[hvac_announcements_timeline]');
 | |
|                 }
 | |
|             } else {
 | |
|                 echo '<div class="hvac-notice">Announcements system is not available. Please contact an administrator.</div>';
 | |
|             }
 | |
|         } else {
 | |
|             echo $post_content;
 | |
|         }
 | |
|         
 | |
|         echo '</div>'; // .announcements-display-section
 | |
|         ?>
 | |
|     </div>
 | |
| </div>
 | |
| 
 | |
| <?php
 | |
| echo '</div>'; // .container
 | |
| echo '</div>'; // .hvac-page-wrapper
 | |
| 
 | |
| get_footer();
 | |
| ?>
 |