- Add remaining AI assistant CSS styling for event creation page
- Include comprehensive AI system documentation and test reports
- Update Claude settings to reflect completed deployment commands
- Finalize template loader and router modifications for enhanced functionality
This completes the comprehensive event creation system v3.2.0 with:
- Featured image support for events, organizers, and venues
- AI-powered event population with URL parsing and text extraction
- Dynamic searchable selectors with real-time AJAX
- Modal creation forms with role-based permissions
- Complete deprecation of 27+ legacy files
- Authoritative technical documentation
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Enhanced markdown to HTML conversion with proper list handling
- Added support for H4, H5, H6 headers in TinyMCE editor configuration
- Improved bullet list processing with proper <ul> wrapping
- Fixed advanced fields visibility by adding CSS display:none default
- Timezone selector and advanced options (capacity, cost) now properly hidden
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
## AI Assistant Fixes
- Fix description population for rich text editor by syncing contenteditable div
- AI now properly populates both hidden textarea and visible rich text editor
## Dynamic Searchable Selectors
- Convert organizer field to multi-select with autocomplete (max 3 selections)
- Convert category field to multi-select with role-based permissions
- Convert venue field to single-select with autocomplete and modal creation
- Add comprehensive search, filtering, and selection management
## Advanced Options Toggle
- Fix invisible timezone selector by implementing progressive disclosure
- Add functional "Advanced Options" toggle with proper JavaScript and CSS
- Advanced fields now properly show/hide with smooth animations
## Technical Implementation
- Create reusable HVACSearchableSelector JavaScript class
- Implement comprehensive styling with accessibility features
- Add role-based permissions (trainers vs master trainers)
- Include responsive design and high contrast mode support
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
## TEC Integration Fixes
- **FIXED**: Iframe infinite loop resolved by user correcting TEC Community URLs from /network/ to /community/
- **CREATED**: hvac-tec-integration.css with comprehensive styling for TEC forms
- **VALIDATED**: TEC edit forms now load properly with all fields visible and styled
## Investigation Results
- ✅ Template rendering issue resolved - iframe no longer creates redirect loop
- ✅ CSS 404 errors eliminated with proper stylesheet creation
- ✅ Form accessibility confirmed - all TEC fields display correctly
- ❌ Form submission still returns "Security check failed" - requires custom form approach
## Technical Implementation
- Added comprehensive CSS styling for TEC integration pages
- Implemented proper form field styling matching HVAC design system
- Enhanced responsive design for mobile compatibility
- Added loading states and error handling styles
## Files Modified
- `assets/css/hvac-tec-integration.css` (new): Complete TEC integration stylesheet
- `.claude/settings.local.json`: Updated SSH permissions for debugging
## Root Cause Analysis
The original iframe loop was caused by URL mismatch between plugin configuration
(/events/network/) and actual TEC Community URLs (/events/community/).
Form submission issues indicate need for custom WordPress form implementation.
## Next Steps
Implement custom WordPress event form following best practices to eliminate
dependency on TEC Community Events plugin limitations and provide complete
field control with native WordPress security.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed registration form not displaying due to missing HVAC_Security_Helpers dependency
- Added require_once for dependencies in class-hvac-shortcodes.php render_registration()
- Fixed event edit HTTP 500 error by correcting class instantiation to HVAC_Event_Manager
- Created comprehensive E2E test suite with MCP Playwright integration
- Achieved 70% test success rate with both issues fully resolved
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Systematic audit and implementation of missing Master Trainer functionality
with comprehensive WordPress best practices and security implementation.
## Features Implemented
- Master Events Overview (/master-trainer/events/) - KPI dashboard with filtering
- Import/Export Data Management (/master-trainer/import-export/) - CSV operations
- Communication Templates (/trainer/communication-templates/) - Professional templates
- Enhanced Announcements (/master-trainer/announcements/) - Dynamic shortcode integration
- Pending Approvals System (/master-trainer/pending-approvals/) - Workflow management
## Navigation & UX Improvements
- Removed redundant Events link from top-level navigation menu
- Reorganized administrative functions under Tools dropdown
- Enhanced navigation clarity and professional appearance
- Full responsive design with accessibility compliance
## Architecture & Security
- 5 new singleton manager classes following WordPress patterns
- Comprehensive role-based access control (hvac_master_trainer)
- Complete security implementation (nonces, sanitization, escaping)
- Performance optimizations with transient caching and conditional loading
- Professional error handling and user feedback systems
## Files Added (16 new files)
- 4 manager classes: Import/Export, Events Overview, Pending Approvals, Communication Templates
- 4 CSS files with responsive design and accessibility features
- 4 JavaScript files with AJAX functionality and error handling
- 2 new templates: Import/Export, Pending Approvals
- 2 enhanced templates: Events Overview, Communication Templates
## Files Modified (14 files)
- Core system integration in Plugin, Page Manager, Scripts/Styles classes
- Navigation system cleanup in Master Menu System
- Enhanced access control and role management
- Template updates for dynamic content integration
## Testing & Deployment
- Comprehensive testing with Playwright automation
- Successful staging deployment and verification
- All 5 missing pages now fully functional
- Navigation improvements verified working
Resolves master trainer area audit requirements with production-ready implementation.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added template loading for master-trainer/communication-templates in class-hvac-community-events.php
- Created page-master-communication-templates.php template with proper auth and navigation
- Fixed URL redirect issue preventing access to master trainer communication templates
- All master trainer pages now accessible without redirects
- Completed comprehensive master trainer dashboard fixes
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed critical security vulnerability with incorrect capability checks
- Fixed hardcoded redirect path from /community-login/ to /training-login/
- Moved dashboard shortcode registration to centralized location
- Fixed duplicate class loading with proper singleton checks
- Fixed incorrect edit URLs in dashboard
- Removed debug HTML comments from production templates
- Moved inline CSS to external stylesheets for better maintainability
- Added caching mechanism for dashboard statistics queries (1 hour cache)
- Implemented pagination JavaScript handlers for AJAX navigation
- Added comprehensive error handling and logging throughout
- Fixed role-based access control (checking roles not capabilities)
- Improved performance with cached database queries
- Added desktop media query (min-width: 993px) to hvac-menu-system.css
- Fixed critical issue where menu was hidden on desktop due to missing CSS rule
- Re-enabled CSS enqueue in class-hvac-menu-system.php after previous debugging
- Navigation now displays as horizontal navbar with working dropdown menus
- Verified working on staging: dropdowns open/close correctly on desktop
- Maintained mobile hamburger menu functionality
Root cause: Mobile CSS rules hid menu at ≤992px but no desktop rule showed it at ≥993px
Solution: Added display:flex !important for desktop breakpoint
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Created hvac-navigation-simple.css with simplified, reliable dropdown styles
- Added hvac-navigation-robust.js with comprehensive click handlers and fallbacks
- Removed complex CSS that could conflict with theme styles
- Added multiple initialization methods and error recovery
- Enhanced debugging with console logging for troubleshooting
- Simplified mobile responsive behavior
- Added periodic visibility checks and click handler verification
This addresses user-reported navigation issues with a more robust, simple solution.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Created hvac-navigation-fix.css to work with span.menu-toggle elements
- Fixed hover states for menu items using spans instead of anchors
- Ensured proper display/visibility/opacity transitions
- Added z-index layering to prevent conflicts
- Mobile responsive behavior maintained
The issue was that the menu uses span.menu-toggle instead of anchor tags,
so the CSS selectors needed to be updated to match the actual HTML structure.
- Created hvac-navigation-enhanced.css with modern dropdown styles
- Pure CSS hover dropdowns for desktop (no JS needed)
- Smooth animations with 300ms transitions
- Professional hover effects with bottom border animation
- Proper z-index layering (z-index: 9999 for dropdowns)
- Keyboard navigation support
- Added hvac-navigation-enhanced.js for enhanced UX
- Mobile hamburger menu with smooth animations
- Keyboard navigation (arrow keys, escape, enter)
- Click outside to close
- Accessibility improvements with ARIA attributes
- Smooth scroll for anchor links
- Fixed menu toggle visibility issue
- Removed conflicting Astra theme buttons
- Using pure CSS :hover for desktop dropdowns
- Better mobile responsive behavior
- Updated class-hvac-scripts-styles.php
- Added new CSS and JS files to build pipeline
- Proper dependency management
Best practices implemented:
- WCAG 2.1 AA compliant keyboard navigation
- Focus management for accessibility
- Smooth 300ms transitions for professional feel
- Mobile-first responsive design
- No JavaScript required for desktop dropdowns
BREAKING CHANGE: Removed Astra theme integration and all theme-specific code
- Removed class-hvac-astra-integration.php (584 lines of theme-specific code)
- Removed 500+ theme-specific CSS files (ast-*, astra-*, divi-*)
- Removed 15+ theme-specific JavaScript files
- Created theme-agnostic HVAC_Layout_Manager class
- Added generic hvac-layout.css with universal styling
- Plugin now works with ANY WordPress theme
This refactoring ensures the plugin complies with WordPress.org plugin
guidelines which require plugins to be theme-independent. The new layout
system uses standard WordPress hooks and filters that work universally.
Key changes:
- Body classes: hvac-plugin-page, hvac-no-sidebar, hvac-full-width
- Generic post meta: _sidebar_layout, page_layout (widely supported)
- Standard WordPress hooks: body_class, wp_enqueue_scripts, is_active_sidebar
- CSS uses generic selectors: .site-content, .content-area, #primary
Removed monitoring infrastructure files that were causing PHP segfaults:
- class-hvac-background-jobs.php
- class-hvac-health-monitor.php
- class-hvac-error-recovery.php
- class-hvac-security-monitor.php
- class-hvac-performance-monitor.php
- class-hvac-backup-manager.php
- class-hvac-cache-optimizer.php
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Add interactive modal popup for announcement 'Read More' functionality
- Fix nonce conflict by creating separate hvac_announcements_ajax object
- Implement secure AJAX handler with rate limiting and permission checks
- Add comprehensive modal CSS with smooth animations and responsive design
- Include accessibility features (ARIA, keyboard navigation, screen reader support)
- Create detailed documentation in docs/ANNOUNCEMENT-MODAL-SYSTEM.md
- Update API-REFERENCE.md with new modal endpoints and security details
- Add automated Playwright E2E testing for modal functionality
- All modal interactions working: click to open, X to close, ESC to close, outside click
- Production-ready with full error handling and content sanitization
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit introduces a complete announcement management system for HVAC trainers
with enterprise-grade security, performance optimization, and email notifications.
## Core Features
- Custom post type for trainer announcements with categories and tags
- Role-based permissions (master trainers can create/edit, all trainers can read)
- AJAX-powered admin interface with real-time updates
- Modal popup viewing for announcements on frontend
- Automated email notifications when announcements are published
- Google Drive integration for training resources
## Security Enhancements
- Fixed critical capability mapping bug preventing proper permission checks
- Added content disclosure protection for draft/private announcements
- Fixed XSS vulnerabilities with proper output escaping and sanitization
- Implemented permission checks on all AJAX endpoints
- Added rate limiting to prevent abuse (30 requests/minute)
- Email validation before sending notifications
## Performance Optimizations
- Implemented intelligent caching for user queries (5-minute TTL)
- Added cache versioning for announcement lists (2-minute TTL)
- Automatic cache invalidation on content changes
- Batch email processing to prevent timeouts (50 emails per batch)
- Retry mechanism for failed email sends (max 3 attempts)
## Technical Implementation
- Singleton pattern for all manager classes
- WordPress coding standards compliance
- Proper nonce verification on all AJAX requests
- Comprehensive error handling and logging
- Mobile-responsive UI with smooth animations
- WCAG accessibility compliance
## Components Added
- 6 PHP classes for modular architecture
- 2 page templates (master announcements, trainer resources)
- Admin and frontend JavaScript with jQuery integration
- Comprehensive CSS for both admin and frontend
- Email notification system with HTML templates
- Complete documentation and implementation plans
This system provides a secure, scalable foundation for trainer communications
while following WordPress best practices and maintaining high code quality.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed z-index layering with !important rules for proper navigation stacking
- Enhanced CSS file loading detection with multiple page identification methods
- Added comprehensive header overlap prevention for all Astra theme header elements
- Improved event edit page detection to handle URL patterns and page IDs
- Verified all fixes working on staging with proper navigation visibility
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Redesigned event edit form to match registration page styling patterns
- Added professional card-based layout with proper shadows and borders
- Implemented consistent color scheme using HVAC brand colors (#0274be)
- Added proper spacing, typography, and form field styling
- Improved responsive design for mobile devices
- Enhanced form sections with dashed underlines and proper hierarchy
- Styled buttons to match registration page (primary/secondary)
- Added proper focus states and transitions for accessibility
- Implemented CSS custom properties for consistent theming
- Added print styles and reduced motion support
Event edit page now has polished, professional appearance matching other trainer pages.
🤖 Generated with Claude Code (https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed permission check in canUserEditEvent() method to properly check user roles
- Changed from checking non-existent 'hvac_trainer' capability to in_array('hvac_trainer', $user->roles)
- Trainers can now create new events and edit their own events
- Security maintained: trainers cannot edit others' events
- Added initial CSS file to fix narrow width and navigation z-index issues
- Page now displays at proper 1200px max width matching other trainer pages
- Navigation menu no longer hidden under site header (z-index: 100)
🤖 Generated with Claude Code (https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added mobile navigation fix CSS to resolve overlapping elements
- Created TEC integration pages (create, edit, my events)
- Implemented comprehensive Playwright E2E test suites
- Fixed mobile navigation conflicts with z-index management
- Added test runners with detailed reporting
- Achieved 70% test success rate (100% on core features)
- Page load performance optimized to 3.8 seconds
- Cross-browser compatibility verified
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove hardcoded template override in class-hvac-community-events.php forcing old shortcode-based template
- Update dashboard to use refactored page-trainer-dashboard.php template with proper WordPress integration
- Fix navigation menu rendering by removing conflicting HVAC_NAV_RENDERED constant checks
- Add missing hvac-menu-system.css file to resolve navigation styling
- Update deployment script to automatically assign correct page template
- Clean up template files to use consistent navigation rendering approach
- Update documentation with dashboard refactoring details
The dashboard now displays correctly with working navigation across all trainer pages.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add 13 critical CSS files that were missing from repository
- Fixes deployment issues on other machines/environments
- Files include dashboard, templates, certificates, and common styles
- All files force-added to override .gitignore CSS exclusions
🔧 Generated with Claude Code
Co-Authored-By: Ben Reed <ben@tealmaker.com>
- Added display:none !important, visibility:hidden !important, opacity:0 !important inline styles to modal
- Fixed CSS specificity issues preventing modal from being hidden
- Updated JavaScript to properly manage modal visibility state
- Incremented child theme version to 1.2.0 for cache busting
This resolves the non-functional Apply button overlay issue on mobile devices.
Root cause: CSS was setting display: flex by default which overrode
inline style="display: none" attribute on the modal element.
Solution: Changed .hvac-filter-modal default display to 'none' and
only show as 'flex' when .active or .show classes are present.
This ensures the modal respects inline styles and only appears
when explicitly activated by JavaScript.
Fixes modal overlay showing permanently on find-trainer page.
- CRITICAL: Reduce mobile padding waste from 30% to <10% screen usage
- Global mobile container padding: 20px → 10px → 5px (responsive breakpoints)
- Plugin content areas: 20px → 12px → 8px aggressive reduction
- Cards/panels: 15px → 8px → 6px minimal spacing
FIND-A-TRAINER PAGE MOBILE FIXES:
- Complete mobile layout redesign with vertical stacking
- Map height reduced to 200px on mobile devices
- Trainer cards: horizontal layout with 50px avatars
- Touch-optimized filters with 44px+ touch targets
- Search input: full-width with proper iOS zoom prevention
- Typography: compact sizing (16px → 13-15px)
- Ultra-tight spacing: 8px, 6px, 4px based on breakpoints
CHILD THEME INTEGRATION:
- hvac-mobile-responsive.css: Base aggressive mobile optimizations
- hvac-find-trainer-mobile.css: Find-a-trainer specific mobile fixes
- functions.php: Conditional loading and ultra-mobile body classes
- Progressive enhancement with content-based detection
MOBILE BREAKPOINT STRATEGY:
- 768px: 10px padding, stacked layout, single-column grids
- 480px: 8px padding, reduced typography, compact elements
- 375px: 5px padding, ultra-compact spacing, maximized content
FEATURES:
- Ultra-mobile body class system for maximum space usage
- Touch-optimized interface with proper accessibility
- Horizontal scrolling prevention and overflow fixes
- Mobile-first progressive enhancement approach
Deployed to staging with cache cleared and CSS files verified accessible.
Addresses user report of excessive mobile padding and find-a-trainer overflow issues.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Performance Improvements:
- Created CSS consolidation build process with 87KB combined file
- Reduces HTTP requests from 20+ CSS files to 1 consolidated file
- Added build script for automated CSS optimization
Background Job System:
- Implemented HVAC_Background_Jobs class with WordPress cron integration
- Supports geocoding batches, CSV imports, profile migrations, cache warming
- Queue management with priority, retry logic, and failure handling
- AJAX endpoints for job status monitoring and cancellation
Database Query Monitoring:
- Added HVAC_Query_Monitor for development and performance analysis
- Tracks slow queries (>0.1s), execution times, and memory usage
- Generates optimization recommendations automatically
- Admin interface for query analysis and debugging
- WP-CLI integration for command-line monitoring
Technical Details:
- Background jobs process 5 per batch with 3 retry attempts
- Query monitor logs only HVAC plugin queries to reduce noise
- Consolidated CSS maintains dependency order and includes 7 core files
- All systems include proper error handling and logging integration
Co-Authored-By: Claude <noreply@anthropic.com>
• Add user role field to registration, profile display, and profile edit
- 10 role options: technician, installer, supervisor, manager, trainer, consultant, sales rep, engineer, business owner, other
- Required field with server-side validation
- Radio buttons in registration, dropdown in profile edit
- Displays in profile with proper capitalization
• Implement advanced certification tracking system
- Date Certified: HTML5 date picker with validation (no future dates)
- Certification Type: dropdown with "Certified measureQuick Trainer" and "Certified measureQuick Champion"
- Certification Status: color-coded status badges (Active/Expired/Pending/Disabled)
• Add sophisticated role-based access control
- Regular trainers: read-only access to certification fields
- Administrators & master trainers: full edit access to certification fields
- Visual indicators for read-only fields
- Server-side permission validation
• Enhance plugin activation system
- Initialize all 36 user meta fields for existing users
- Smart default assignment based on user capabilities
- Backward compatibility maintained
• Add professional UI styling
- Blue-bordered certification section with trophy icon
- Color-coded status badges with proper contrast
- Read-only field styling with visual indicators
- Enhanced form controls with focus states
• Comprehensive testing and documentation
- E2E test coverage with visual verification
- Updated API reference with new meta fields
- Access control patterns documented
- 100% test pass rate on staging environment
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Implemented comprehensive trainer navigation system:
* Horizontal and vertical navigation layouts
* Multi-level menu with dropdowns for Events, Venues, Organizers, Profile
* Responsive mobile navigation with hamburger menu
* Keyboard navigation support (Arrow keys, Enter, Escape)
* Active page highlighting
* Master trainer menu items for users with appropriate role
- Created breadcrumb system:
* Automatic breadcrumb generation based on URL structure
* Shortcode support [hvac_breadcrumbs]
* SEO-friendly with structured data (Schema.org)
* Multiple style options (default, pills, arrows)
* Responsive design
- Technical implementation:
* HVAC_Trainer_Navigation class for menu management
* HVAC_Breadcrumbs class for breadcrumb generation
* CSS for both navigation and breadcrumbs
* JavaScript for interactive menu behaviors
* Template part for easy inclusion
Navigation provides easy access to all trainer features and improves UX.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Refactored registration form:
* Moved Application Details to Personal Information section
* Renamed Business Information to Training Organization Information
* Added required Organization Logo upload with media library integration
* Added Headquarters location fields (City, State/Province, Country)
* Moved training-related fields into Organization section
* Created conditional Training Venue Information section with auto-population
- Created comprehensive venue management system:
* Training Venues List page (/trainer/venue/list) with filtering and pagination
* Manage Venue page (/trainer/venue/manage) for create/edit operations
* Full integration with The Events Calendar venue post type
* AJAX-powered forms with real-time validation
- Created trainer profile system:
* Trainer Profile view page (/trainer/profile) with stats and certifications
* Profile Edit page (/trainer/profile/edit) with photo upload
* Years of experience tracking and professional information
* Integration with user meta and custom fields
- Created training organizers management:
* Organizers List page (/trainer/organizer/list) with search functionality
* Manage Organizer page (/trainer/organizer/manage) for CRUD operations
* Organization logo upload and headquarters tracking
* Full integration with The Events Calendar organizer post type
- Technical improvements:
* Modular PHP class architecture for each feature
* Comprehensive AJAX handlers with security nonces
* Responsive CSS design for all new pages
* JavaScript form validation and dynamic behavior
* Proper WordPress and TEC API integration
All new features follow hierarchical URL structure and include breadcrumb navigation.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Scoped all CSS rules to .hvac-event-manage-wrapper to prevent theme conflicts
- Moved navigation header directly into page template to avoid duplication
- Disabled duplicate header hook in HVAC_Event_Manage_Header class
- Added theme override styles to enforce 1200px max-width and 20px padding
- Updated CSS methodology to use consistent spacing and remove CSS variables
- Added HVAC_Page_Content_Fixer class to clean escaped HTML comments
- Updated documentation with CSS architecture details
- Enhanced theme compatibility with higher specificity selectors
The event manage page now displays correctly with:
- Single navigation header (no duplicates)
- Proper white background and shadows
- Consistent button styling matching other pages
- Clean 1200px max-width layout with 20px padding
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed registration form redirect to use hierarchical URL (/trainer/registration/)
- Removed inline styles from event manage page that were breaking theme layout
- Added proper CSS styles for event manage header navigation
- Created header component to properly display navigation on event manage page
- Fixed manage event page detection to be more specific
The event manage page now uses external CSS instead of inline styles that conflict with the theme.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>