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>
133 lines
No EOL
4.2 KiB
PHP
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();
|
|
?>
|