upskill-event-manager/docs/TEMPLATE-SYSTEM-REFACTOR-PLAN.md
bengizmo a1abbf1577 fix: Resolve duplicate content and raw shortcode display on manage event page
- Strip WordPress block editor comments (<\!-- wp:shortcode -->) from content
- Prevent duplicate header rendering when using page template vs shortcode
- Add conditional header rendering based on URL path to avoid duplication
- Header now only renders for non-hierarchical URLs where template isn't used

The manage event page was showing duplicate "Create and Manage Your HVAC Training Events"
sections and raw block editor comments because both the template and the header class
were outputting content, and block editor wrapper comments weren't being stripped.

Co-Authored-By: Ben Reed <ben@tealmaker.com>
2025-07-30 10:06:49 -03:00

159 lines
No EOL
4.8 KiB
Markdown

# Template System Refactor Plan
## Current Issues
1. **Master Dashboard Bug**: The master dashboard page (ID: 5505) is showing trainer dashboard content instead of master dashboard content
2. **Competing Systems**: Both page templates and shortcodes are trying to render the same content
3. **Complex Routing**: Multiple redirect systems and rewrite rules causing confusion
4. **CSS Loading Issues**: Styles not consistently applied to logged-in pages
5. **Debug Code**: Production code contains debug statements
## Root Cause Analysis
The plugin uses two competing systems:
- **Page Templates**: Custom PHP templates that override theme templates
- **Shortcodes**: WordPress shortcodes that render content within pages
When a page has both a custom template AND a shortcode, conflicts arise. The master dashboard page has:
- Page template: `page-master-dashboard.php`
- Page content: `[hvac_master_dashboard]`
- But somehow the trainer dashboard content is being rendered
## Recommended Solution: Shortcode-Only Architecture
### Phase 1: Remove Template System (Immediate Fix)
1. **Update class-hvac-community-events.php**:
- Remove `load_custom_templates()` method
- Remove `add_filter('template_include', ...)` hook
- Keep all shortcode registrations
2. **Update class-hvac-page-manager.php**:
- Change all page definitions to use 'default' template
- Ensure content includes appropriate shortcode
3. **Delete template files**:
- Remove all `page-*.php` files from templates/
- Keep `template-*.php` files as they're view partials
4. **Remove class-hvac-template-loader.php**:
- This entire class becomes unnecessary
### Phase 2: Clean Up Authentication (Immediate)
1. **Consolidate authentication in shortcodes**:
- Each shortcode callback handles its own authentication
- Remove redundant `template_redirect` authentication hooks
- Keep access control for non-page routes only
2. **Standardize authentication pattern**:
```php
public function render_[feature]($atts = array()) {
if (!is_user_logged_in()) {
return '<p>Please log in to view this content.</p>';
}
if (!current_user_can('required_capability')) {
return '<div class="hvac-error">Access denied.</div>';
}
// Render content
}
```
### Phase 3: Fix CSS Loading (Next Priority)
1. **Remove conditional CSS loading**:
- Enqueue base styles globally for consistency
- Use CSS classes to show/hide elements rather than conditional loading
2. **Consolidate CSS files**:
- Merge `hvac-harmonized.css` and `hvac-common.css`
- Remove duplicate style definitions
### Phase 4: Clean Up Routing (Lower Priority)
1. **Simplify rewrite rules**:
- Remove complex regex patterns
- Use WordPress's built-in page hierarchy
- Keep only essential redirects for backwards compatibility
2. **Update legacy redirects**:
- Move from PHP redirects to .htaccess/nginx rules
- Document all redirects for future removal
### Phase 5: Remove Debug Code (Final)
1. **Remove all debug statements**:
- `error_log()` calls
- HTML comments with DEBUG
- Console.log statements in JS
2. **Add proper logging system**:
- Use the existing HVAC_Logger class consistently
- Add environment-based logging levels
## Implementation Order
1. **Fix Master Dashboard (Today)**:
- Disable template loading for master dashboard page
- Ensure shortcode renders correct content
- Test with all user roles
2. **Refactor Templates (This Week)**:
- Implement Phase 1 completely
- Update all existing pages
- Run comprehensive tests
3. **Clean Up (Next Week)**:
- Implement Phases 2-5
- Remove deprecated code
- Update documentation
## Testing Plan
1. **Functional Tests**:
- Login as each user role
- Verify all dashboards show correct content
- Test all CRUD operations
- Verify email notifications
2. **Visual Tests**:
- Check CSS loads on all pages
- Verify responsive design
- Test in multiple browsers
3. **Performance Tests**:
- Measure page load times
- Check database query count
- Verify caching works correctly
## Rollback Plan
1. Keep backup of current code
2. Document all database changes
3. Test rollback procedure on staging
4. Have quick revert script ready
## Success Metrics
- Master dashboard shows correct content for master trainers
- No template-related errors in logs
- Page load time improves by 20%
- Code complexity reduced by 30%
- All existing functionality preserved
## Timeline
- Day 1: Fix master dashboard bug
- Day 2-3: Remove template system
- Day 4-5: Clean up authentication and CSS
- Week 2: Complete remaining phases
- Week 3: Documentation and training
## Notes
- This refactor aligns with WordPress best practices
- Reduces maintenance burden significantly
- Makes future features easier to implement
- Improves theme compatibility