upskill-event-manager/templates/page-create-event.php
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

133 lines
No EOL
4.2 KiB
PHP

<?php
/**
* Template Name: Create Event
* Description: Template for creating new events with REST API (100% field control)
*/
// Define constant to indicate we are in a page template
define('HVAC_IN_PAGE_TEMPLATE', true);
get_header();
?>
<style>
.hvac-create-event-wrapper {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
}
.hvac-create-event-wrapper h1 {
color: #1a1a1a;
font-size: 28px;
margin-bottom: 20px;
}
.hvac-form-notice {
background: #f0f7ff;
border: 1px solid #0073aa;
border-radius: 4px;
padding: 12px;
margin-bottom: 20px;
}
.hvac-form-notice p {
margin: 0;
color: #0073aa;
}
</style>
<div class="hvac-create-event-wrapper">
<?php
// Display trainer navigation menu
if (class_exists('HVAC_Menu_System')) {
HVAC_Menu_System::instance()->render_trainer_menu();
}
?>
<h1>Create New Event</h1>
<div class="hvac-form-notice">
<p>Create your event with full control over all fields including excerpt, categories, featured images, and tags.</p>
</div>
<div class="hvac-page-content">
<?php
// Handle form submission
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['hvac_event_form_nonce'])) {
if (wp_verify_nonce($_POST['hvac_event_form_nonce'], 'hvac_event_form')) {
try {
// Create event form builder instance with template support
$event_form = new HVAC_Event_Form_Builder('hvac_event_form', true);
$event_form->create_event_form();
// Validate submitted data
$form_errors = $event_form->validate($_POST);
if (empty($form_errors)) {
// Sanitize data
$sanitized_data = $event_form->sanitize($_POST);
// Create event using native WordPress
$post_handler = HVAC_Event_Post_Handler::instance();
$event_id = $post_handler->create_event($sanitized_data);
if (!is_wp_error($event_id)) {
$success_message = "Event created successfully! Event ID: {$event_id}";
$form_submitted = true;
} else {
$form_errors['general'] = 'Event creation failed: ' . $event_id->get_error_message();
}
}
} catch (Exception $e) {
$form_errors['general'] = 'Form error: ' . $e->getMessage();
}
} else {
$form_errors['nonce'] = 'Security check failed. Please try again.';
}
}
// Display success message
if (isset($success_message)) {
echo '<div class="hvac-form-notice" style="background: #d4edda; border-color: #c3e6cb; color: #155724;">';
echo '<p>' . esc_html($success_message) . '</p>';
echo '</div>';
}
// Display errors
if (isset($form_errors['general'])) {
echo '<div style="background: #f8d7da; border: 1px solid #f5c6cb; padding: 12px; border-radius: 4px; margin-bottom: 20px;">';
echo esc_html($form_errors['general']);
echo '</div>';
}
// Create and display the event form with template support
try {
$event_form = new HVAC_Event_Form_Builder('hvac_event_form', true);
$event_form->create_event_form();
// Set any existing errors
if (!empty($form_errors)) {
$event_form->set_errors($form_errors);
}
// Set form data if submitted (for re-population on errors)
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$event_form->set_data($_POST);
}
echo $event_form->render();
} catch (Exception $e) {
echo '<div style="background: #f8d7da; border: 1px solid #f5c6cb; padding: 12px; border-radius: 4px;">';
echo 'Form Builder Error: ' . esc_html($e->getMessage());
echo '</div>';
}
?>
</div>
</div>
<?php
get_footer();
?>