feat: Update help system with clearer content and recent improvements

- Revise welcome modal cards to focus on practical features
- Emphasize dashboard as central hub, no WordPress admin needed
- Highlight new certificate features including clickable links
- Rewrite documentation with simpler, action-oriented language
- Update FAQ section with common trainer questions
- Add tooltip text library for consistent help messages
- Include certificate clearing utility and scripts

Co-Authored-By: Ben Reed <ben@tealmaker.com>
This commit is contained in:
bengizmo 2025-05-24 16:36:28 -03:00
parent 9e44217c5e
commit 3d9599ef74
4 changed files with 713 additions and 57 deletions

View file

@ -0,0 +1,139 @@
#!/bin/bash
# Script to clear certificate test data on staging server
# This script should be run on the staging server
echo "=== Certificate Test Data Cleanup Script ==="
echo "This script will clear certificate test data from the staging server."
echo ""
# Check if wp-cli is available
if ! command -v wp &> /dev/null; then
echo "Error: wp-cli is not installed or not in PATH"
exit 1
fi
# Navigate to WordPress directory
cd /home/uberrxmprk/cloudwaysapps.com/rfymqitokx/public_html
echo "1. Checking current certificate count..."
CERT_COUNT=$(wp db query "SELECT COUNT(*) FROM wp_hvac_certificates" --skip-column-names 2>/dev/null || echo "0")
echo " Found $CERT_COUNT certificates in database"
echo ""
echo "2. Checking certificate files..."
CERT_DIR="/home/uberrxmprk/cloudwaysapps.com/rfymqitokx/public_html/wp-content/uploads/hvac-certificates"
if [ -d "$CERT_DIR" ]; then
FILE_COUNT=$(find "$CERT_DIR" -type f -name "*.pdf" 2>/dev/null | wc -l)
echo " Found $FILE_COUNT PDF files in certificate directory"
else
echo " Certificate directory not found"
FILE_COUNT=0
fi
echo ""
echo "What would you like to do?"
echo "1) Clear ALL certificates (database and files)"
echo "2) Clear only TEST certificates (generated by test_trainer)"
echo "3) Clear only certificate FILES (keep database records)"
echo "4) Clear only certificate DATABASE records (keep files)"
echo "5) Exit without changes"
echo ""
read -p "Enter your choice (1-5): " choice
case $choice in
1)
echo ""
echo "Clearing ALL certificates..."
# Clear database
wp db query "TRUNCATE TABLE wp_hvac_certificates"
echo "✓ Database cleared"
# Clear files
if [ -d "$CERT_DIR" ]; then
rm -rf "$CERT_DIR"/*
echo "✓ Certificate files cleared"
fi
# Clear any certificate tokens
wp db query "DELETE FROM wp_options WHERE option_name LIKE '_transient_hvac_cert_%' OR option_name LIKE '_transient_timeout_hvac_cert_%'"
echo "✓ Certificate tokens cleared"
echo ""
echo "All certificate data has been cleared!"
;;
2)
echo ""
echo "Clearing TEST certificates only..."
# Get test_trainer user ID
TEST_USER_ID=$(wp user get test_trainer --field=ID 2>/dev/null)
if [ -z "$TEST_USER_ID" ]; then
echo "Error: test_trainer user not found"
exit 1
fi
echo "Found test_trainer user ID: $TEST_USER_ID"
# Get certificate IDs for test_trainer
CERT_IDS=$(wp db query "SELECT certificate_id FROM wp_hvac_certificates WHERE generated_by = $TEST_USER_ID" --skip-column-names)
if [ -n "$CERT_IDS" ]; then
# Delete certificates from database
wp db query "DELETE FROM wp_hvac_certificates WHERE generated_by = $TEST_USER_ID"
echo "✓ Test certificates removed from database"
# Delete certificate files (if we can identify them)
# This is more complex as we need to match certificate numbers to files
echo "✓ Note: Certificate files should be manually reviewed in $CERT_DIR"
else
echo "No test certificates found"
fi
;;
3)
echo ""
echo "Clearing certificate FILES only..."
if [ -d "$CERT_DIR" ]; then
rm -rf "$CERT_DIR"/*
echo "✓ Certificate files cleared"
echo "Note: Database records remain intact"
else
echo "Certificate directory not found"
fi
;;
4)
echo ""
echo "Clearing certificate DATABASE records only..."
wp db query "TRUNCATE TABLE wp_hvac_certificates"
echo "✓ Database cleared"
echo "Note: Certificate files remain in $CERT_DIR"
;;
5)
echo ""
echo "Exiting without changes."
exit 0
;;
*)
echo ""
echo "Invalid choice. Exiting."
exit 1
;;
esac
echo ""
echo "=== Cleanup Complete ==="
echo ""
echo "To regenerate test certificates:"
echo "1. Log in as test_trainer"
echo "2. Navigate to Generate Certificates page"
echo "3. Select an event and attendees"
echo "4. Generate new certificates"

View file

@ -0,0 +1,203 @@
#!/bin/bash
# Script to regenerate certificate test data on staging server
# This script should be run on the staging server
echo "=== Certificate Test Data Regeneration Script ==="
echo ""
# Check if wp-cli is available
if ! command -v wp &> /dev/null; then
echo "Error: wp-cli is not installed or not in PATH"
exit 1
fi
# Navigate to WordPress directory
cd /home/uberrxmprk/cloudwaysapps.com/rfymqitokx/public_html
# Get test_trainer user ID
TEST_USER_ID=$(wp user get test_trainer --field=ID 2>/dev/null)
if [ -z "$TEST_USER_ID" ]; then
echo "Error: test_trainer user not found"
echo "Please run ./bin/create-test-users.sh first"
exit 1
fi
echo "Found test_trainer user (ID: $TEST_USER_ID)"
echo ""
# Get recent events
echo "Fetching recent events..."
EVENTS=$(wp db query "
SELECT p.ID, p.post_title,
DATE_FORMAT(m.meta_value, '%Y-%m-%d') as event_date
FROM wp_posts p
JOIN wp_postmeta m ON p.ID = m.post_id AND m.meta_key = '_EventStartDate'
WHERE p.post_type = 'tribe_events'
AND p.post_status = 'publish'
ORDER BY m.meta_value DESC
LIMIT 5
" --skip-column-names)
if [ -z "$EVENTS" ]; then
echo "No events found. Please create some test events first."
exit 1
fi
echo "Recent events:"
echo "$EVENTS" | nl
echo ""
read -p "Enter the event number to use for test certificates (1-5): " EVENT_NUM
EVENT_ID=$(echo "$EVENTS" | sed -n "${EVENT_NUM}p" | awk '{print $1}')
EVENT_TITLE=$(echo "$EVENTS" | sed -n "${EVENT_NUM}p" | cut -f2- -d$'\t' | cut -f1 -d$'\t')
if [ -z "$EVENT_ID" ]; then
echo "Invalid selection"
exit 1
fi
echo ""
echo "Selected event: $EVENT_TITLE (ID: $EVENT_ID)"
echo ""
# Get attendees for this event
echo "Fetching attendees for this event..."
ATTENDEE_COUNT=$(wp db query "
SELECT COUNT(*)
FROM wp_posts
WHERE post_type IN ('tec_tc_attendee', 'tribe_tpp_attendees', 'tribe_rsvp_attendees')
AND post_parent = $EVENT_ID
" --skip-column-names)
echo "Found $ATTENDEE_COUNT attendees"
if [ "$ATTENDEE_COUNT" -eq 0 ]; then
echo ""
echo "No attendees found. Would you like to create test attendees?"
read -p "Create test attendees? (y/n): " CREATE_ATTENDEES
if [ "$CREATE_ATTENDEES" = "y" ]; then
echo ""
read -p "How many test attendees to create? (1-10): " NUM_ATTENDEES
if [ "$NUM_ATTENDEES" -gt 0 ] && [ "$NUM_ATTENDEES" -le 10 ]; then
echo "Creating $NUM_ATTENDEES test attendees..."
# This is a simplified version - in reality, creating attendees is complex
# and depends on the ticket system being used
echo "Note: Automatic attendee creation requires the ticket system to be properly configured."
echo "For now, please create attendees manually through the WordPress admin."
exit 0
fi
fi
exit 0
fi
echo ""
echo "Ready to generate test certificates"
echo ""
echo "Options:"
echo "1) Generate certificates for ALL attendees"
echo "2) Generate certificates for first 5 attendees only"
echo "3) Generate certificates for checked-in attendees only"
echo "4) Exit without generating"
echo ""
read -p "Enter your choice (1-4): " GEN_CHOICE
case $GEN_CHOICE in
1)
ATTENDEE_IDS=$(wp db query "
SELECT ID
FROM wp_posts
WHERE post_type IN ('tec_tc_attendee', 'tribe_tpp_attendees', 'tribe_rsvp_attendees')
AND post_parent = $EVENT_ID
" --skip-column-names)
;;
2)
ATTENDEE_IDS=$(wp db query "
SELECT ID
FROM wp_posts
WHERE post_type IN ('tec_tc_attendee', 'tribe_tpp_attendees', 'tribe_rsvp_attendees')
AND post_parent = $EVENT_ID
LIMIT 5
" --skip-column-names)
;;
3)
ATTENDEE_IDS=$(wp db query "
SELECT p.ID
FROM wp_posts p
JOIN wp_postmeta m ON p.ID = m.post_id
WHERE p.post_type IN ('tec_tc_attendee', 'tribe_tpp_attendees', 'tribe_rsvp_attendees')
AND p.post_parent = $EVENT_ID
AND m.meta_key = '_tribe_tickets_attendee_checked_in'
AND m.meta_value = '1'
" --skip-column-names)
;;
4)
echo "Exiting without generating certificates."
exit 0
;;
*)
echo "Invalid choice"
exit 1
;;
esac
if [ -z "$ATTENDEE_IDS" ]; then
echo "No attendees found matching criteria"
exit 0
fi
ATTENDEE_COUNT=$(echo "$ATTENDEE_IDS" | wc -l)
echo ""
echo "Generating certificates for $ATTENDEE_COUNT attendees..."
echo ""
# Generate certificates using WP-CLI eval-file
cat > /tmp/generate_certs.php << 'EOF'
<?php
// Load certificate generator
require_once HVAC_CE_PLUGIN_DIR . 'includes/certificates/class-certificate-generator.php';
$generator = HVAC_Certificate_Generator::instance();
$event_id = $args[0];
$attendee_ids = explode("\n", trim($args[1]));
$generated_by = $args[2];
$success = 0;
$failed = 0;
foreach ($attendee_ids as $attendee_id) {
if (empty($attendee_id)) continue;
$result = $generator->generate_certificate($event_id, $attendee_id, array(), $generated_by);
if ($result) {
$success++;
echo "✓ Generated certificate for attendee $attendee_id\n";
} else {
$failed++;
echo "✗ Failed to generate certificate for attendee $attendee_id\n";
}
}
echo "\nSummary:\n";
echo "Successful: $success\n";
echo "Failed: $failed\n";
EOF
wp eval-file /tmp/generate_certs.php "$EVENT_ID" "$ATTENDEE_IDS" "$TEST_USER_ID"
rm -f /tmp/generate_certs.php
echo ""
echo "=== Certificate Generation Complete ==="
echo ""
echo "To view the generated certificates:"
echo "1. Log in as test_trainer"
echo "2. Navigate to Certificate Reports page"
echo "3. Or check the uploads directory at:"
echo " /wp-content/uploads/hvac-certificates/"

View file

@ -0,0 +1,266 @@
<?php
/**
* Clear Test Certificates Script
*
* This script clears test certificate data from the staging server.
* Access it at: https://yourdomain.com/wp-content/plugins/hvac-community-events/clear-test-certificates.php
*/
// Load WordPress
require_once dirname(__FILE__) . '/../../../../wp-load.php';
// Check if user is logged in and has permission
if (!is_user_logged_in() || !current_user_can('manage_options')) {
die('Access denied. Please log in as an administrator.');
}
// Get action from URL parameter
$action = isset($_GET['action']) ? $_GET['action'] : '';
$confirm = isset($_GET['confirm']) ? $_GET['confirm'] : '';
?>
<!DOCTYPE html>
<html>
<head>
<title>Clear Test Certificates</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
line-height: 1.6;
color: #333;
max-width: 800px;
margin: 40px auto;
padding: 20px;
background: #f5f5f5;
}
.container {
background: white;
padding: 30px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
h1 {
color: #23282d;
margin-bottom: 30px;
}
.stats {
background: #f9f9f9;
padding: 20px;
border-radius: 4px;
margin-bottom: 30px;
}
.stat-item {
margin: 10px 0;
font-size: 16px;
}
.stat-label {
font-weight: bold;
display: inline-block;
width: 200px;
}
.actions {
margin-top: 30px;
}
.button {
display: inline-block;
padding: 10px 20px;
margin: 5px;
text-decoration: none;
border-radius: 4px;
font-weight: 500;
}
.button-primary {
background: #007cba;
color: white;
}
.button-danger {
background: #dc3545;
color: white;
}
.button-secondary {
background: #6c757d;
color: white;
}
.button:hover {
opacity: 0.9;
}
.alert {
padding: 15px;
margin: 20px 0;
border-radius: 4px;
}
.alert-success {
background: #d4edda;
color: #155724;
border: 1px solid #c3e6cb;
}
.alert-warning {
background: #fff3cd;
color: #856404;
border: 1px solid #ffeeba;
}
.alert-danger {
background: #f8d7da;
color: #721c24;
border: 1px solid #f5c6cb;
}
</style>
</head>
<body>
<div class="container">
<h1>Clear Test Certificates</h1>
<?php
// Get current statistics
global $wpdb;
// Get certificate count
$total_certs = $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}hvac_certificates");
// Get test user certificates
$test_user = get_user_by('login', 'test_trainer');
$test_user_id = $test_user ? $test_user->ID : 0;
$test_certs = 0;
if ($test_user_id) {
$test_certs = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->prefix}hvac_certificates WHERE generated_by = %d",
$test_user_id
));
}
// Get certificate file count
$upload_dir = wp_upload_dir();
$cert_dir = $upload_dir['basedir'] . '/hvac-certificates';
$file_count = 0;
if (is_dir($cert_dir)) {
$files = glob($cert_dir . '/*/*.pdf');
$file_count = $files ? count($files) : 0;
}
// Handle actions
if ($action && $confirm === 'yes') {
echo '<div class="alert alert-warning">Processing...</div>';
switch ($action) {
case 'clear_all':
// Clear all certificates
$wpdb->query("TRUNCATE TABLE {$wpdb->prefix}hvac_certificates");
// Clear files
if (is_dir($cert_dir)) {
$files = glob($cert_dir . '/*/*.pdf');
foreach ($files as $file) {
unlink($file);
}
}
// Clear transients
$wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE '_transient_hvac_cert_%' OR option_name LIKE '_transient_timeout_hvac_cert_%'");
echo '<div class="alert alert-success">All certificates have been cleared!</div>';
break;
case 'clear_test':
if ($test_user_id) {
// Get certificate IDs
$cert_ids = $wpdb->get_col($wpdb->prepare(
"SELECT certificate_id FROM {$wpdb->prefix}hvac_certificates WHERE generated_by = %d",
$test_user_id
));
if ($cert_ids) {
// Delete from database
$wpdb->query($wpdb->prepare(
"DELETE FROM {$wpdb->prefix}hvac_certificates WHERE generated_by = %d",
$test_user_id
));
echo '<div class="alert alert-success">Test certificates have been cleared from the database!</div>';
}
}
break;
case 'clear_files':
if (is_dir($cert_dir)) {
$files = glob($cert_dir . '/*/*.pdf');
$deleted = 0;
foreach ($files as $file) {
if (unlink($file)) {
$deleted++;
}
}
echo '<div class="alert alert-success">' . $deleted . ' certificate files have been deleted!</div>';
}
break;
}
// Refresh stats
echo '<script>setTimeout(function() { window.location.href = "' . $_SERVER['PHP_SELF'] . '"; }, 2000);</script>';
}
?>
<div class="stats">
<h2>Current Statistics</h2>
<div class="stat-item">
<span class="stat-label">Total Certificates:</span>
<span><?php echo $total_certs; ?></span>
</div>
<div class="stat-item">
<span class="stat-label">Test Certificates:</span>
<span><?php echo $test_certs; ?> (by test_trainer)</span>
</div>
<div class="stat-item">
<span class="stat-label">Certificate Files:</span>
<span><?php echo $file_count; ?> PDF files</span>
</div>
<div class="stat-item">
<span class="stat-label">Certificate Directory:</span>
<span><?php echo $cert_dir; ?></span>
</div>
</div>
<?php if (!$action): ?>
<div class="actions">
<h2>Actions</h2>
<p>Choose an action to perform:</p>
<a href="?action=clear_all" class="button button-danger" onclick="return confirm('Are you sure you want to clear ALL certificates? This cannot be undone!');">Clear All Certificates</a>
<?php if ($test_certs > 0): ?>
<a href="?action=clear_test" class="button button-warning" onclick="return confirm('Clear all test certificates generated by test_trainer?');">Clear Test Certificates Only</a>
<?php endif; ?>
<?php if ($file_count > 0): ?>
<a href="?action=clear_files" class="button button-warning" onclick="return confirm('Delete all certificate PDF files?');">Clear Certificate Files Only</a>
<?php endif; ?>
<a href="/hvac-dashboard/" class="button button-secondary">Back to Dashboard</a>
</div>
<?php elseif (!$confirm): ?>
<div class="alert alert-danger">
<h3>Confirm Action</h3>
<p>You are about to: <strong><?php echo str_replace('_', ' ', $action); ?></strong></p>
<p>This action cannot be undone!</p>
<a href="?action=<?php echo $action; ?>&confirm=yes" class="button button-danger">Yes, Proceed</a>
<a href="<?php echo $_SERVER['PHP_SELF']; ?>" class="button button-secondary">Cancel</a>
</div>
<?php endif; ?>
<hr style="margin-top: 40px;">
<div style="margin-top: 30px;">
<h3>Regenerate Test Data</h3>
<p>After clearing certificates, you can regenerate test data by:</p>
<ol>
<li>Log in as <strong>test_trainer</strong></li>
<li>Go to <a href="/generate-certificates/">Generate Certificates</a></li>
<li>Select an event and attendees</li>
<li>Click "Generate Selected Certificates"</li>
</ol>
</div>
</div>
</body>
</html>

View file

@ -165,23 +165,23 @@ class HVAC_Help_System {
return array(
array(
'icon' => 'fas fa-chalkboard-teacher',
'title' => 'Verified Expert Platform',
'description' => 'You\'re part of our vetted community of HVAC training experts. Our screening process ensures only qualified professionals can host events on the platform.'
'title' => 'Welcome to Your Training Hub',
'description' => 'As a verified HVAC trainer, you have access to powerful tools for managing your training business. Your dashboard shows real-time stats, upcoming events, and revenue tracking.'
),
array(
'icon' => 'fas fa-calendar-plus',
'title' => 'Create & Manage Events',
'description' => 'Easily create training events, set pricing, and manage registrations. All events are reviewed by our in-house trainers before publishing to ensure quality.'
),
array(
'icon' => 'fas fa-dollar-sign',
'title' => 'Keep 100% Revenue',
'description' => 'You keep 100% of your ticket sales (minus standard Stripe processing fees). Track your earnings and progress toward your revenue goals right from your dashboard.'
'title' => 'Create Events in Minutes',
'description' => 'Click "Create Event" to set up new trainings. Add details, set pricing, and manage capacity. Your events appear immediately in your dashboard - no WordPress admin needed!'
),
array(
'icon' => 'fas fa-certificate',
'title' => 'Professional Certificates',
'description' => 'Generate and send professional certificates of completion to your attendees. Build your reputation and provide value that keeps trainees coming back.'
'title' => 'Professional Certificates Made Easy',
'description' => 'After your event, generate beautiful certificates with your name, attendee details, and the Upskill HVAC logo. Click "Certificate Issued" to view any certificate instantly.'
),
array(
'icon' => 'fas fa-users',
'title' => 'Manage Everything in One Place',
'description' => 'Email attendees, track registrations, generate reports, and monitor your progress. Use the navigation menu to access all features - tooltips guide you every step of the way.'
)
);
}
@ -247,19 +247,19 @@ class HVAC_Help_System {
<h2><i class="fas fa-play-circle"></i> Getting Started</h2>
<div class="hvac-doc-grid">
<div class="hvac-doc-card">
<h3>1. Complete Your Profile</h3>
<p>Update your trainer profile with your credentials, business information, and training specialties. This helps trainees find and trust your expertise.</p>
<a href="/trainer-profile" class="hvac-doc-btn">Edit Profile</a>
<h3>1. Your Dashboard is Home Base</h3>
<p>Everything starts at your dashboard. See your total events, upcoming trainings, revenue progress, and quick links to all features. No need to access WordPress admin!</p>
<a href="/hvac-dashboard" class="hvac-doc-btn">Go to Dashboard</a>
</div>
<div class="hvac-doc-card">
<h3>2. Create Your First Event</h3>
<p>Use our event creation form to set up your training. Include detailed descriptions, pricing, and capacity limits.</p>
<p>Click "Create Event" from any page. Fill in the simple form - event title, description, date, and pricing. Your event saves as a draft automatically.</p>
<a href="/manage-event" class="hvac-doc-btn">Create Event</a>
</div>
<div class="hvac-doc-card">
<h3>3. Monitor Your Dashboard</h3>
<p>Track your events, revenue, and performance metrics from your centralized dashboard.</p>
<a href="/hvac-dashboard" class="hvac-doc-btn">View Dashboard</a>
<h3>3. Complete Your Profile</h3>
<p>Add your credentials and business info to build trust with trainees. A complete profile helps your events get found and booked faster.</p>
<a href="/trainer-profile" class="hvac-doc-btn">Edit Profile</a>
</div>
</div>
</section>
@ -268,25 +268,26 @@ class HVAC_Help_System {
<h2><i class="fas fa-calendar-alt"></i> Managing Events</h2>
<div class="hvac-feature-list">
<div class="hvac-feature">
<h3>Event Creation Process</h3>
<h3>Creating Events is Simple</h3>
<ol>
<li><strong>Draft:</strong> Create your event with all details</li>
<li><strong>Review:</strong> Our team reviews for quality and compliance</li>
<li><strong>Published:</strong> Event goes live for registration</li>
<li><strong>Click "Create Event"</strong> from your dashboard or navigation menu</li>
<li><strong>Fill the form:</strong> Title, description, date/time, venue, and pricing</li>
<li><strong>Save as Draft:</strong> Review and edit anytime before publishing</li>
<li><strong>Publish:</strong> Your event goes live immediately</li>
</ol>
</div>
<div class="hvac-feature">
<h3>Key Event Features</h3>
<h3>What You Can Do</h3>
<ul>
<li>Multiple ticket types and pricing tiers</li>
<li>Capacity management and waitlists</li>
<li>Custom registration fields</li>
<li>Automated confirmation emails</li>
<li><strong>Edit Events:</strong> Click any event title to modify details</li>
<li><strong>Set Capacity:</strong> Control how many can register</li>
<li><strong>Track Sales:</strong> See registrations in real-time</li>
<li><strong>Quick Actions:</strong> View, edit, or check attendees with one click</li>
</ul>
</div>
<div class="hvac-feature">
<h3>Event Summary Page</h3>
<p>Access detailed event information including attendee lists, sales data, and check-in capabilities. Each event has its own summary page accessible from your dashboard.</p>
<p>Click "View Summary" on any event to see everything at a glance: attendee list, revenue, check-in status, and quick links to email attendees or generate certificates.</p>
</div>
</div>
</section>
@ -295,38 +296,40 @@ class HVAC_Help_System {
<h2><i class="fas fa-users"></i> Attendee Management</h2>
<div class="hvac-feature-list">
<div class="hvac-feature">
<h3>Registration Tracking</h3>
<p>View all registrations, payment status, and attendee information from your event summary page. Export attendee lists for your records.</p>
<h3>See Who\'s Coming</h3>
<p>Your dashboard shows registration counts. Click "View Attendees" on any event to see the full list with names, emails, and check-in status.</p>
</div>
<div class="hvac-feature">
<h3>Communication Tools</h3>
<p>Send emails to all attendees or specific groups. Use our email templates or create custom messages for updates and reminders.</p>
<h3>Easy Email Communication</h3>
<p>Click "Email Attendees" to send updates. Select all attendees or just those who are checked in. Add CC recipients and your message is sent instantly.</p>
</div>
<div class="hvac-feature">
<h3>Check-in System</h3>
<p>Mark attendees as present during your event. This data is used for certificate generation and completion tracking.</p>
<h3>Quick Check-In</h3>
<p>During your event, use the attendee list to check people in. This helps track completion for certificates and keeps accurate records.</p>
</div>
</div>
</section>
<section id="certificates" class="hvac-doc-section">
<h2><i class="fas fa-certificate"></i> Professional Certificates</h2>
<h2><i class="fas fa-certificate"></i> Professional Certificates - NEW!</h2>
<div class="hvac-feature-list">
<div class="hvac-feature">
<h3>Certificate Generation</h3>
<p>Create professional certificates for attendees who completed your training. Certificates include event details, your signature, and completion date.</p>
<h3>Beautiful Certificates Automatically</h3>
<p>Generate professional certificates with the Upskill HVAC logo, your name as instructor, and attendee details. Each certificate has a unique number and can be verified.</p>
</div>
<div class="hvac-feature">
<h3>Distribution Options</h3>
<h3>Simple Generation Process</h3>
<ul>
<li>Email directly to attendees</li>
<li>Download PDF files for printing</li>
<li>Bulk generation for multiple attendees</li>
<li><strong>Go to "Generate Certificates"</strong> from the menu</li>
<li><strong>Select your event</strong> from the dropdown</li>
<li><strong>Choose attendees</strong> (or select all)</li>
<li><strong>Click Generate</strong> - certificates are created instantly!</li>
<li><strong>Click "Certificate Issued"</strong> text to view any certificate</li>
</ul>
</div>
<div class="hvac-feature">
<h3>Certificate Management</h3>
<p>Track which certificates have been issued and manage your certificate templates from the Certificate Reports page.</p>
<h3>Track Everything</h3>
<p>The Certificate Reports page shows all certificates you\'ve issued. Filter by event, search by name, and download certificates anytime.</p>
</div>
</div>
</section>
@ -335,32 +338,40 @@ class HVAC_Help_System {
<h2><i class="fas fa-question-circle"></i> Frequently Asked Questions</h2>
<div class="hvac-faq-list">
<div class="hvac-faq-item">
<h3>How do I get paid for my events?</h3>
<p>Payments are processed through Stripe and deposited directly to your account. You keep 100% of ticket sales minus standard Stripe processing fees (typically 2.9% + 30¢ per transaction).</p>
<h3>Where do I start?</h3>
<p>Start at your dashboard! It shows everything you need. Click "Create Event" to add your first training, or "My Events" to see what you\'ve already created.</p>
</div>
<div class="hvac-faq-item">
<h3>How long does event review take?</h3>
<p>Our review process typically takes 1-2 business days. We check for content quality, appropriate pricing, and compliance with industry standards.</p>
<h3>How do I edit an event?</h3>
<p>From your dashboard, find the event and click its title. You\'ll go straight to the edit page. Make changes and click "Update Event" to save.</p>
</div>
<div class="hvac-faq-item">
<h3>Can I modify events after they\'re published?</h3>
<p>Yes, you can edit event details, but significant changes may require re-review. We recommend finalizing details before initial submission.</p>
<h3>How do certificates work?</h3>
<p>After your event, go to "Generate Certificates" and select your event. Choose which attendees get certificates (usually those who were checked in). Click generate and they\'re ready! Each certificate shows your name, the attendee\'s name, and has the Upskill HVAC logo.</p>
</div>
<div class="hvac-faq-item">
<h3>What if I need to cancel an event?</h3>
<p>Contact our support team immediately. We\'ll help you manage refunds and communicate with registered attendees.</p>
<h3>Can attendees view their certificates?</h3>
<p>Yes! On the Generate Certificates page, you\'ll see "Certificate Issued" under each attendee who has one. Click this text to open their certificate - you can share this link with them.</p>
</div>
<div class="hvac-faq-item">
<h3>How do I improve my event visibility?</h3>
<p>Complete your profile thoroughly, use detailed event descriptions, competitive pricing, and maintain high attendance rates. Quality events get featured prominently.</p>
<h3>What\'s the revenue target on my dashboard?</h3>
<p>This is your annual goal to maintain your trainer status. The progress bar shows how close you are. Keep creating quality events and you\'ll reach it!</p>
</div>
<div class="hvac-faq-item">
<h3>Can I offer different types of training?</h3>
<p>Yes! You can offer in-person, virtual, hybrid, and on-demand training formats. Set your preferred training locations and formats in your profile.</p>
<h3>How do I email my attendees?</h3>
<p>Click "Email Attendees" from the menu or from any event summary. Select who to email, write your message, and send. You can CC yourself or others too.</p>
</div>
<div class="hvac-faq-item">
<h3>What support is available?</h3>
<p>Access this documentation anytime, use the help tooltips throughout the platform, or contact our support team for personalized assistance.</p>
<h3>Do I need to use WordPress admin?</h3>
<p>No! Everything you need is in your trainer dashboard and the connected pages. The system is designed so you never need to access the WordPress backend.</p>
</div>
<div class="hvac-faq-item">
<h3>How do payments work?</h3>
<p>Attendees pay through Stripe when they register. You receive 100% of ticket sales (minus Stripe\'s standard 2.9% + 30¢ fee) directly to your connected account.</p>
</div>
<div class="hvac-faq-item">
<h3>Need more help?</h3>
<p>Look for the (?) tooltips throughout the site - hover over them for quick help. This documentation is always available from the Help link. For urgent issues, contact support.</p>
</div>
</div>
</section>';
@ -377,6 +388,43 @@ class HVAC_Help_System {
$content
);
}
/**
* Get common tooltip texts for consistent help messaging
*/
public static function get_tooltip_text($key) {
$tooltips = array(
// Dashboard tooltips
'total_events' => 'All events you\'ve created, including past and future trainings',
'upcoming_events' => 'Events scheduled for the future that attendees can register for',
'total_revenue' => 'Your total earnings from all ticket sales (after Stripe fees)',
'revenue_target' => 'Annual revenue goal to maintain your trainer status',
// Event management tooltips
'create_event' => 'Start here to add a new training event',
'event_status' => 'Draft = not published yet, Published = live for registration',
'edit_event' => 'Click to modify event details like date, price, or description',
'view_attendees' => 'See who registered and their check-in status',
// Certificate tooltips
'generate_certificates' => 'Create professional completion certificates for your attendees',
'certificate_issued' => 'Click to view or download the certificate PDF',
'select_attendees' => 'Choose who receives certificates - typically checked-in attendees',
'bulk_generate' => 'Generate multiple certificates at once to save time',
// Profile tooltips
'trainer_profile' => 'Your public profile that attendees see when browsing events',
'credentials' => 'Add certifications and experience to build trust',
'business_info' => 'Company name and contact details for professional appearance',
// Email tooltips
'email_attendees' => 'Send updates or reminders to your event registrants',
'cc_recipients' => 'Add email addresses separated by commas to receive copies',
'email_preview' => 'Preview how your email will look before sending'
);
return isset($tooltips[$key]) ? $tooltips[$key] : '';
}
}
// Initialize the help system