Commit graph

64 commits

Author SHA1 Message Date
bengizmo
dcc1598e28 Implement comprehensive legacy URL redirect handling
- Added pre_get_posts hook to intercept legacy page queries
- Force 404 for legacy URLs to prevent WordPress from serving wrong pages
- Enhanced redirect handling to catch 404s that should redirect
- Moved template_redirect priority to 1 (very early)
- Ensures legacy URLs like /certificate-reports/ redirect properly

This follows WordPress best practices by intercepting queries early
in the request lifecycle before page templates are loaded.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-28 19:50:10 -03:00
bengizmo
81190ec4a0 Fix legacy URL redirects being intercepted by access control
- Added is_legacy_url() check in access control to allow redirects to happen first
- Legacy URLs like /hvac-dashboard/ now properly redirect to /trainer/dashboard/
- Prevents authentication check from blocking legacy URL redirects

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-28 19:45:43 -03:00
bengizmo
64260fca02 fix: Update activator to use new HVAC_Route_Manager class
- Replace deprecated register_legacy_rewrite_rules() call with HVAC_Route_Manager
- Ensures plugin activation works with new architecture

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-28 18:07:35 -03:00
bengizmo
005a35d89e refactor: Implement new plugin architecture with single-responsibility classes
- Create HVAC_Shortcodes class to centralize shortcode management
- Create HVAC_Scripts_Styles class for all script/style enqueuing
- Create HVAC_Route_Manager class for URL routing and redirects
- Update HVAC_Plugin to use new architecture components
- Remove duplicate functionality from HVAC_Community_Events
- Add comprehensive refactoring plan documentation

This refactoring resolves duplicate initialization issues and creates
a cleaner, more maintainable architecture with clear separation of concerns.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-28 18:04:48 -03:00
bengizmo
a58ea1603c fix: Resolve duplicate initialization and jQuery selector errors
- Implement singleton pattern for HVAC_Enhanced_Settings to prevent duplicate initialization
- Fix jQuery selector error by checking for valid hash selectors before using $(href)
- Add default email templates with professional copy for trainer notifications
- Update plugin version to 1.0.1 for cache busting
- Remove duplicate Enhanced Settings initialization from HVAC_Community_Events
- Add force cache refresh suffix to admin scripts

This resolves the duplicate content issue on email templates page and fixes
JavaScript errors in the admin interface.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-28 17:58:39 -03:00
bengizmo
f0edd05369 feat: Implement trainer approval workflow with status management
- Add trainer status system (pending, approved, active, inactive, disabled)
- Create access control system based on trainer status
- Refactor Master Dashboard with enhanced trainer table
  - Add status column and filtering
  - Implement search and pagination
  - Add bulk status update functionality
- Create status pages for pending and disabled trainers
- Implement approval workflow with email notifications
- Add email template management to settings page
- Include comprehensive test suite (unit, integration, E2E)

This allows Master Trainers to manage trainer accounts, approve new registrations,
and control access based on account status. Trainers must be approved before
accessing dashboard features.

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-28 12:38:34 -03:00
bengizmo
2a0d2d2f7d fix: Prevent event creation content from appearing on registration page
The manage event JavaScript was running on all pages and injecting "Create Event"
header and instructions into any page with matching content selectors. Added URL
path checking to ensure the JavaScript only runs on the actual manage event pages.

This fixes the issue where the registration page was showing event creation content
instead of just the registration form.

Co-Authored-By: Ben Reed <ben@tealmaker.com>
2025-07-28 10:42:53 -03:00
bengizmo
2cb37d0285 fix: Ensure trainer registration page is publicly accessible
- Added explicit checks to prevent authentication redirects on registration page
- Added ensure_registration_page_public() method with priority 1 to run before other auth checks
- Included registration-pending and training-login pages in public pages list
- Added fallback function in main plugin file to remove auth hooks on registration page

This ensures that users can access /trainer/registration/ without being logged in, as intended for new trainer signups.
2025-07-28 10:30:54 -03:00
bengizmo
cd93ed573e fix: Registration page content and event manage styling issues
- 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>
2025-07-25 16:58:34 -03:00
bengizmo
6142b4b2df fix: Registration page showing wrong content and event manage styling
- Fixed registration redirect URL to use hierarchical structure (/trainer/registration/)
- Fixed manage event page detection to be more specific (was matching any page with 'manage')
- Event creation content now only shows on actual event management pages

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-25 16:55:11 -03:00
bengizmo
3934b6353c fix: Prevent event creation content from appearing on registration page
The HVAC_Manage_Event class was using is_page('manage') which was too generic
and could match any page with 'manage' in its slug. Changed to check for
specific page slugs: 'manage-event' and 'trainer-event-manage' to ensure
the event creation content only appears on the actual event management page.

This resolves the issue where "Create Your Training Event" content was
incorrectly showing on the trainer registration page.

Ben Reed <ben@tealmaker.com>
2025-07-25 16:54:42 -03:00
bengizmo
0942bf19c8 fix: Emergency fix for syntax error in Zoho admin 2025-07-24 16:03:43 -03:00
bengizmo
92b8f9707c fix: Remove all remaining Zoho debug log statements
- Removed [HVAC Zoho] production/staging detection logs
- Removed flush rewrite rules debug logs
- Removed test_connection method called log
- Removed OAuth token exchange params log
- Removed all other error_log statements from Zoho admin

This completes the cleanup of production error logs.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-24 16:00:31 -03:00
bengizmo
e5d5b818ec fix: Remove remaining debug log statements from production
- Removed all CSS debug error_log statements from hvac-community-events.php
- Removed Request URI and OAuth callback debug messages from class-zoho-admin.php
- Updated gitignore to properly track plugin files

This eliminates the debug noise in production error logs.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-24 15:25:42 -03:00