- Fix AJAX 400 error on master dashboard by adding missing handler - Fix Google Sheets folder verification JSON parse error - Fix certificate reports permission check for master trainers - Update all navigation links to use new hierarchical URL structure - Remove 11 duplicate/legacy WordPress pages - Fix Google Sheets page redirect loop - Update profile edit link behavior - Document all URL mapping changes and fixes 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
154 lines
No EOL
5.3 KiB
Markdown
154 lines
No EOL
5.3 KiB
Markdown
# Master Trainer Permission & Navigation Fixes
|
|
**Date**: June 17, 2025
|
|
**Developer**: Ben Reed (ben@tealmaker.com)
|
|
|
|
## Overview
|
|
This document summarizes the fixes applied to resolve Master Trainer permission issues, AJAX errors, and navigation problems reported by the user.
|
|
|
|
## Issues Fixed
|
|
|
|
### 1. Master Dashboard AJAX 400 Error ✅
|
|
**Problem**: Master dashboard was making AJAX call to `hvac_master_dashboard_events` but no handler existed.
|
|
|
|
**Solution**:
|
|
- Added missing AJAX handler registration in `includes/class-hvac-community-events.php`
|
|
- Added `ajax_master_dashboard_events()` method to handle the AJAX request
|
|
- The handler properly checks permissions and returns events table data
|
|
|
|
**Files Modified**:
|
|
- `includes/class-hvac-community-events.php`
|
|
|
|
### 2. Google Sheets Folder Verification JSON Error ✅
|
|
**Problem**: AJAX call returned "JSON.parse: unexpected character" error.
|
|
|
|
**Solution**:
|
|
- Fixed incorrect file path in `ajax_verify_folder_structure()` method
|
|
- Added error handling and output buffering
|
|
- Temporarily returns mock data until Google Sheets auth is configured
|
|
- Prevents PHP errors from breaking JSON response
|
|
|
|
**Files Modified**:
|
|
- `includes/google-sheets/class-google-sheets-admin.php`
|
|
|
|
### 3. Certificate Reports Permission Error ✅
|
|
**Problem**: Master trainers saw "You do not have permission to view certificate reports."
|
|
|
|
**Solution**:
|
|
- Fixed capability check from `current_user_can('hvac_trainer')` to `current_user_can('manage_hvac_events')`
|
|
- Master trainers have the `manage_hvac_events` capability
|
|
|
|
**Files Modified**:
|
|
- `includes/class-hvac-community-events.php`
|
|
|
|
### 4. Navigation Links to Old URLs ✅
|
|
**Problem**: Links throughout the plugin pointed to old URLs like `/hvac-dashboard/` instead of new hierarchical URLs.
|
|
|
|
**Solution**:
|
|
- Updated 44+ URL references in template files
|
|
- Updated all URLs in includes directory
|
|
- Fixed hardcoded links
|
|
- Implemented proper URL mapping:
|
|
- `/hvac-dashboard/` → `/trainer/dashboard/`
|
|
- `/certificate-reports/` → `/trainer/certificate-reports/`
|
|
- `/generate-certificates/` → `/trainer/generate-certificates/`
|
|
- And many more...
|
|
|
|
**Files Modified**:
|
|
- All template files in `templates/` directory
|
|
- Multiple files in `includes/` directory
|
|
- `clear-test-certificates.php`
|
|
|
|
### 5. Duplicate/Legacy WordPress Pages ✅
|
|
**Problem**: Multiple duplicate pages existed with old slugs causing confusion.
|
|
|
|
**Solution**:
|
|
- Deleted 11 duplicate pages (IDs: 5297, 5298, 5299, 5300, 5502, 5503, 5504, 5505, 5517, 5518, 5519)
|
|
- Kept only the properly structured hierarchical pages
|
|
- Legacy redirect system handles old URLs automatically
|
|
|
|
### 6. Google Sheets Redirect Loop ✅
|
|
**Problem**: `/master-trainer/google-sheets/` was causing infinite redirect loop.
|
|
|
|
**Solution**:
|
|
- Added redirect loop prevention in `hvac_ce_handle_legacy_redirects()` function
|
|
- Checks if already on target path before redirecting
|
|
- Fixed OAuth callback redirect URLs
|
|
|
|
**Files Modified**:
|
|
- `hvac-community-events.php`
|
|
- `includes/google-sheets/class-google-sheets-auth.php`
|
|
|
|
### 7. Profile Edit Link ✅
|
|
**Problem**: "Edit Profile" button opened wp-admin in new tab.
|
|
|
|
**Solution**:
|
|
- Removed `target="_blank"` from edit profile link
|
|
- Now opens in same tab for better UX
|
|
|
|
**Files Modified**:
|
|
- `templates/template-trainer-profile.php`
|
|
|
|
### 8. Master Dashboard Template Rendering ✅
|
|
**Problem**: Master dashboard had jQuery undefined errors and Quirks Mode.
|
|
|
|
**Solution**:
|
|
- Added missing `get_header()` call for authenticated users
|
|
- Fixed template structure to include proper WordPress header
|
|
|
|
**Files Modified**:
|
|
- `templates/template-hvac-master-dashboard.php`
|
|
|
|
## Technical Details
|
|
|
|
### AJAX Handler Implementation
|
|
```php
|
|
public function ajax_master_dashboard_events() {
|
|
check_ajax_referer('hvac_master_dashboard_nonce', 'nonce');
|
|
|
|
if (!current_user_can('view_master_dashboard')) {
|
|
wp_die('Insufficient permissions');
|
|
}
|
|
|
|
// Load master dashboard data class
|
|
if (!class_exists('HVAC_Master_Dashboard_Data')) {
|
|
require_once HVAC_CE_PLUGIN_DIR . 'includes/class-hvac-master-dashboard-data.php';
|
|
}
|
|
|
|
$dashboard_data = new HVAC_Master_Dashboard_Data();
|
|
$data = $dashboard_data->get_events_table_data($args);
|
|
|
|
wp_send_json_success($data);
|
|
}
|
|
```
|
|
|
|
### Redirect Loop Prevention
|
|
```php
|
|
// Get current URL path to prevent redirect loops
|
|
$current_path = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
|
|
$target_path = $legacy_redirects[$current_slug];
|
|
|
|
// Skip redirect if we are already on the target path
|
|
if ($current_path === $target_path) {
|
|
return;
|
|
}
|
|
```
|
|
|
|
## Testing Recommendations
|
|
|
|
1. **Master Dashboard**: Verify events table loads without AJAX errors
|
|
2. **Google Sheets**: Check that folder verification shows appropriate message
|
|
3. **Certificate Reports**: Confirm master trainers can access reports
|
|
4. **Navigation**: Test all navigation links go to correct hierarchical URLs
|
|
5. **Legacy URLs**: Verify old URLs redirect properly to new ones
|
|
|
|
## Pending Issues
|
|
|
|
1. **Trainer Documentation Login**: Still showing "Please log in to access the documentation" - may need further investigation
|
|
2. **Google Sheets Authentication**: Full folder verification will work once OAuth is configured
|
|
|
|
## Deployment Notes
|
|
|
|
- All changes are live on staging server
|
|
- WordPress cache has been flushed
|
|
- No database schema changes required
|
|
- Backward compatibility maintained through redirect system |