Commit graph

17 commits

Author SHA1 Message Date
ben
ef206a7228 feat: complete event edit page modernization with feature parity
Major architectural upgrade replacing legacy iframe-based edit forms with
native HVAC form builder integration, achieving complete feature parity
with the create page.

## Core Infrastructure Extensions

### HVAC_Event_Form_Builder Extensions
- Added edit_event_form() method for edit mode initialization
- Added load_event_data() for fetching and formatting existing event data
- Added populate_form_fields() for pre-populating form with event data
- Added edit mode tracking with is_edit_mode and editing_event_id properties

### HVAC_Event_Form_Handler Extensions
- Added update_event() method for processing edit form submissions
- Added validate_update_permissions() for secure edit access control
- Added get_event_data_for_editing() for formatted data retrieval
- Added validate_and_sanitize_update() for edit-specific validation

## Template Modernization

### Legacy Architecture Replacement
- Replaced iframe embedding with native HVAC form builder
- Updated page-tec-edit-event.php with modern form integration
- Fixed template loading in class-hvac-community-events.php
- Resolved URL routing and content injection issues

### Security Enhancements
- Fixed nonce mismatch between form generation and validation
- Implemented proper permission checking for event editing
- Added comprehensive error handling and user feedback
- Ensured secure form submission processing

## Feature Parity Achievement

### Modern Features Integration
- AI-powered content generation for event descriptions
- Featured image editing with WordPress media integration
- Searchable selectors with autocomplete for venues/organizers
- Advanced options toggle with field visibility controls
- Modal creation forms for inline venue/organizer management
- TinyMCE rich text editor for event descriptions
- Comprehensive input validation with real-time feedback

### User Experience Improvements
- Consistent form styling and interaction patterns
- Pre-populated form fields with existing event data
- Modern navigation and breadcrumb integration
- Success/error feedback with user-friendly messages
- Quick action buttons for common workflows

## Technical Implementation

### Files Modified
- includes/class-hvac-event-form-builder.php (extended with edit methods)
- includes/class-hvac-event-form-handler.php (added update functionality)
- templates/page-tec-edit-event.php (complete modernization)
- includes/class-hvac-community-events.php (fixed template loading)
- Status.md (updated implementation status)
- docs/EDIT-PAGE-REFACTORING-ANALYSIS.md (comprehensive analysis)

### Architecture Improvements
- Native form builder replaces iframe limitations
- Event data pre-population and field mapping
- WordPress TinyMCE editor integration
- Modern JavaScript event handling
- Improved error handling and validation

## Testing & Validation

### Comprehensive Testing Completed
- Form rendering with real event data validation
- Form submission and update processing verification
- All modern features tested (AI, images, selectors, modals)
- Permission system verified with different user roles
- Security nonce validation and CSRF protection confirmed
- Template loading and URL routing validated

### Issues Resolved
- Security nonce mismatch causing form submission failures
- Template loading mechanism for edit page URL routing
- Event data pre-population and field mapping
- Form builder constructor parameter consistency
- Content injection system integration

## Impact & Results

### Refactoring Analysis Results
- 14 identified refactoring opportunities: ALL RESOLVED
- 4 Critical issues: FIXED (missing edit methods, update methods, legacy architecture, data pre-population)
- 5 High Priority gaps: IMPLEMENTED (AI assistance, featured images, searchable selectors, advanced options, modal creation)
- 4 Medium Priority issues: ADDRESSED (TinyMCE editor, form validation, error handling, styling consistency)
- 1 Low Priority item: COMPLETED

### Feature Parity Metrics
-  Native form builder replaces iframe approach
-  Complete feature parity with create page achieved
-  All 14 identified issues resolved
-  Backward URL compatibility maintained
-  TEC integration preserved
-  Modern features accessible (AI, images, advanced options)
-  Real-time validation and error feedback implemented

This modernization eliminates the legacy iframe limitations and provides
users with the same advanced functionality available on the create page,
ensuring a consistent and powerful event management experience.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-28 08:12:14 -03:00
ben
91873c6a9c feat: implement comprehensive featured image system for events, organizers, and venues
- Add featured image field to main event creation form with WordPress media uploader
- Implement featured image upload in organizer and venue creation modals
- Update AJAX handlers to process and validate featured image attachments
- Add comprehensive media upload UI with preview and removal functionality
- Include proper permission validation for administrator, trainer, and master trainer roles
- Create authoritative documentation for complete event creation page functionality

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 20:24:31 -03:00
ben
c3806f01c3 fix: resolve markdown list processing and TinyMCE timing issues
- Rewrite markdown conversion to handle lists before other formatting
- Fix conflict between * for lists and * for italic text formatting
- Improve list detection with proper "* " pattern matching
- Add WordPress tinymce-editor-init event listener for proper initialization
- Store editor reference globally for reliable content insertion
- Enhanced TinyMCE readiness detection with fallback mechanisms

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 19:13:21 -03:00
ben
875315e2f5 debug: add comprehensive TinyMCE timing and markdown testing
- Improved TinyMCE initialization detection with hvacTinyMCEReady flag
- Added robust retry mechanism for content insertion (20 attempts with 250ms intervals)
- Enhanced debugging with console logging for markdown conversion process
- Added global testMarkdownConversion() function for browser console testing
- Implemented proper timing coordination between WordPress editor and AI Assistant

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 19:03:52 -03:00
ben
d5239d7a3f fix: improve markdown conversion and advanced fields visibility
- 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>
2025-09-26 18:16:47 -03:00
ben
b7e5514e8e feat: replace custom rich text editor with WordPress TinyMCE and add markdown conversion
- Replace custom contenteditable rich text editor with WordPress native TinyMCE editor
- Implement comprehensive markdown to HTML conversion for AI responses
- Support headers (H1-H3), bold/italic text, bullet lists, and paragraphs
- Integrate markdown conversion into AI Assistant response handling
- Maintain backward compatibility with existing textarea fallback

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 16:18:02 -03:00
ben
00f88070b8 fix: resolve trainer event creation page issues and implement modal forms
- Fix AI Assistant timeout issue (frontend: 35s → 50s)
- Fix AJAX action name mismatch for categories (categorys → categories)
- Fix nonce mismatch (hvac_general_nonce → hvac_ajax_nonce)
- Add modal forms for creating new organizers, categories, and venues
- Add comprehensive AJAX endpoints with security validation
- Implement role-based permissions for category creation
- Fix searchable selectors action mapping

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 16:07:56 -03:00
ben
2353d8a4be feat: implement dynamic searchable selectors and fix AI Assistant description population
## 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>
2025-09-26 15:09:25 -03:00
ben
6039be6fb9 fix: resolve event form field rendering issues and JavaScript compatibility
- Fix missing CSS file causing 404 error (hvac-tec-tickets.css)
- Add custom field type handling in HVAC_Event_Form_Builder for venue/organizer/categories
- Restore missing form fields (venue, organizer, category dropdowns now populated)
- Fix cross-browser JavaScript loading restrictions (was Safari-only)
- Add jQuery noConflict mode compatibility for WordPress
- Add missing hvacToggleAdvancedOptions function for advanced options toggle
- Increment plugin version to 2.0.1 for cache busting

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-26 09:12:56 -03:00
ben
c0175f51e3 security: implement comprehensive security fixes for OWASP Top 10 vulnerabilities
**Critical Security Fixes:**
- Fix AJAX endpoints to require POST requests with proper nonce verification
- Implement XSS protection with wp_kses_post() and comprehensive data sanitization
- Add role-based access control with granular capability checks
- Secure debug logging with environment and user permission validation
- Add file inclusion security with path validation and directory traversal protection

**Specific Changes:**
- HVAC_Event_Form_Builder: Enhanced AJAX handlers with POST-only validation
- Template data sanitization to prevent stored XSS attacks
- Debug logging restricted to authorized users and development environments
- File inclusion protected against directory traversal and PHP injection
- Improved capability checks for template management operations

**Security Standards:**
- All user input properly sanitized using WordPress security functions
- Output escaped with appropriate WordPress functions (esc_html, wp_kses_post)
- Nonce verification implemented consistently across all AJAX endpoints
- File paths validated to prevent local file inclusion vulnerabilities
- Debug information exposure limited to development environments only

All changes tested and validated for syntax correctness.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 15:41:27 -03:00
ben
63d7f5efa3 fix: implement code review fixes for form builder
Critical fixes:
- Implement get_current_form_data() method for template saving functionality
- Add sanitize_field_value() method with comprehensive field sanitization

High priority fixes:
- Add pagination limits (100) to venue and organizer queries to prevent performance issues
- Add capability checks to AJAX template handler for proper access control

Medium priority fixes:
- Add comprehensive documentation for hvac_event_form_after_basic_fields integration hook
- Add debug logging for cache initialization failures when WP_DEBUG is enabled

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 14:36:41 -03:00
ben
9cc5624d0d feat: implement TEC ticketing integration and template system updates
- Add comprehensive TEC ticketing integration with HVAC_TEC_Tickets class
- Replace hardcoded sample templates with real template data from cleaned reference
- Extend HVAC_Event_Form_Builder with ticketing fields and integration hooks
- Add mandatory attendee information collection (first name, last name, fieldset integration)
- Implement complete ticketing UI with pricing, capacity, RSVP, and sales periods
- Add responsive CSS styling and JavaScript for ticket field management
- Update template modal with enhanced template cards showing duration, difficulty, pricing
- Integrate ticketing system with event creation workflow and form submission

Phase 2B TEC integration complete with real template data and full ticketing functionality.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 14:24:41 -03:00
ben
09a15f874c feat: complete Phase 2B template system enhancements
 Enhanced Template Selector:
- Grouped templates by category with descriptions
- Template preview modal with field data display
- Apply template functionality with AJAX loading
- Enhanced UI with preview icons and better UX

 Save as Template Functionality:
- Complete save template dialog with validation
- Template name, description, and category fields
- Public/private template sharing options
- AJAX integration with error handling and success feedback

 Progressive Disclosure:
- Advanced options toggle with smooth animations
- Fields marked as advanced (capacity, cost, timezone)
- Local storage for user preference persistence
- Staggered reveal animations for better UX

 Enhanced Auto-save:
- Intelligent auto-save with field-type specific delays
- Draft recovery with age information and user confirmation
- Error handling with fallback to essential fields only
- Visual feedback with status indicator and animations
- Auto-save on page visibility change

 AJAX Infrastructure:
- Template preview handler (hvac_get_template_preview)
- Template loading handler (hvac_load_template_data)
- Template saving handler (hvac_save_template)
- Comprehensive error handling and security validation

🎨 UI/UX Enhancements:
- Modern modal dialogs with backdrop overlays
- Responsive design for mobile devices
- Smooth animations and transitions
- Status indicators with rotating save icons
- Comprehensive styling for all new components

🚀 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 09:06:03 -03:00
ben
d0fe0c439d feat: complete Phase 2A template system integration and form builder fixes
Major accomplishments:
- Successfully integrated Phase 2A template functionality with Phase 1 foundation
- Fixed critical form builder inheritance and property visibility issues
- Resolved cache initialization and method accessibility problems
- Updated templates to use native form builder with template support

Technical fixes:
- Fixed null cache initialization in HVAC_Event_Form_Builder constructor
- Changed form builder properties from private to protected for inheritance
- Made critical methods (get_form_attributes, render_field, etc.) accessible to child classes
- Updated create-event template to use native form with template mode enabled
- Added null checks for cache operations to prevent fatal errors

Form builder improvements:
- Template-enabled forms now render correctly with data-template-enabled="1"
- Form output increased from 2,871 to 37,966 characters (full field set)
- Proper event_title, event_start_datetime, venue, and organizer fields
- Template selector and template actions integrated seamlessly

Testing results:
- Phase 2A comprehensive tests now successfully locate template-enabled forms
- All Phase 2A classes (Template Manager, Bulk Manager, Form Builder) operational
- TEC Core compatibility maintained with tribe_events post type
- Database schema and template management fully functional

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-25 07:02:36 -03:00
ben
e4b3940cce fix: remove non-existent HVAC_Event_Cache dependency
Resolves fatal error: 'Class "HVAC_Event_Cache" not found'
- Removed strict typing for cache property
- Made cache initialization optional with placeholder for future implementation
- Prevents deployment blocking error

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 20:15:18 -03:00
ben
b3a487a53f fix: implement Phase 2A code review fixes for production readiness
Applied comprehensive fixes identified in Kimi K2 code review:

1. **PHP Strict Typing**: Added `declare(strict_types=1);` to Bulk Event Manager
   for improved type safety and runtime error detection

2. **MySQL Compatibility**: Replaced ENUM fields with VARCHAR + CHECK constraints
   in database schema to ensure broader MySQL version compatibility

3. **Input Validation**: Added comprehensive validation for event creation with
   detailed error messages and security sanitization

4. **AJAX Reliability**: Implemented timeout (10s) and retry mechanisms with
   exponential backoff for improved network resilience

5. **Internationalization**: Added complete i18n support with __() functions
   for all user-facing messages in PHP and JavaScript localized strings

**Files Modified:**
- includes/class-hvac-event-template-manager.php: 25+ i18n strings
- includes/class-hvac-event-form-builder.php: 12+ i18n strings
- includes/class-hvac-bulk-event-manager.php: Strict typing + 15+ i18n strings
- assets/js/hvac-event-form-templates.js: Template name validation fix

**Production Impact:**
- Enhanced security through strict typing and validation
- Improved user experience with localized error messages
- Better network resilience for template operations
- Broader database compatibility for deployment environments

Ready for staging deployment and user testing.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 20:13:35 -03:00
ben
f127e33b03 feat: implement Phase 2A Event Templates & Bulk Operations foundation
Comprehensive template system implementation including:

HVAC_Event_Template_Manager (700+ lines):
- Full CRUD operations for event templates
- Security-first design with nonce verification and user permissions
- Performance-optimized with 15-minute caching and efficient data loading
- Template validation, sanitization, and version control
- Public/private template support with access control
- Usage tracking and popularity-based sorting
- Complete AJAX API for seamless UI interactions

HVAC_Event_Form_Builder (1000+ lines):
- Extended base form builder with event-specific functionality
- Full template integration with selection and population capabilities
- Comprehensive field types: datetime, venue, organizer, capacity, cost
- Template loading with AJAX-powered real-time updates
- Save-as-template functionality with modal interface
- Advanced validation including datetime and numeric ranges
- Venue/organizer creation with dynamic field visibility
- Timezone support with cached options

Key Features:
- Template schema with metadata, categories, and validation rules
- Field-level template population and validation rule inheritance
- Cache-optimized performance with 15-minute TTL
- Complete security framework with proper sanitization
- Modern PHP 8+ patterns with strict typing and singleton architecture
- Extensible design ready for bulk operations and UI components

Foundation complete for Phase 2A Week 1-2 implementation goals.
Next: UI components, JavaScript integration, and bulk operations.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 18:04:07 -03:00