Add massive collection of CSS, JavaScript and theme assets that were previously excluded: **CSS Files (681 total):** - HVAC plugin-specific styles (hvac-*.css): 34 files including dashboard, certificates, registration, mobile nav, accessibility fixes, animations, and welcome popup - Theme framework files (Astra, builder systems, layouts): 200+ files - Plugin compatibility styles (WooCommerce, WPForms, Elementor, Contact Form 7): 150+ files - WordPress core and editor styles: 50+ files - Responsive and RTL language support: 200+ files **JavaScript Files (400+ total):** - HVAC plugin functionality (hvac-*.js): 27 files including menu systems, dashboard enhancements, profile sharing, mobile responsive features, accessibility, and animations - Framework and library files: jQuery plugins, GSAP, AOS, Swiper, Chart.js, Lottie, Isotope - Plugin compatibility scripts: WPForms, WooCommerce, Elementor, Contact Form 7, LifterLMS - WordPress core functionality: customizer, admin, block editor compatibility - Third-party integrations: Stripe, SMTP, analytics, search functionality **Assets:** - Certificate background images and logos - Comprehensive theme styling infrastructure - Mobile-responsive design systems - Cross-browser compatibility assets - Performance-optimized minified versions **Updated .gitignore:** - Fixed asset directory whitelisting patterns to properly include CSS/JS/images - Added proper directory structure recognition (!/assets/css/, !/assets/js/, etc.) - Maintains security by excluding sensitive files while including essential assets This commit provides the complete frontend infrastructure needed for: - Full theme functionality and styling - Plugin feature implementations - Mobile responsiveness and accessibility - Cross-browser compatibility - Performance optimization - Developer workflow support
299 lines
No EOL
14 KiB
JavaScript
299 lines
No EOL
14 KiB
JavaScript
/**
|
|
* HVAC Welcome Popup System
|
|
*
|
|
* Handles the welcome popup modal for new users with carousel functionality
|
|
*/
|
|
(function($) {
|
|
'use strict';
|
|
|
|
var HVACWelcomePopup = {
|
|
|
|
init: function() {
|
|
this.currentCard = 0;
|
|
this.totalCards = 4;
|
|
this.bindEvents();
|
|
this.checkAndShowPopup();
|
|
},
|
|
|
|
bindEvents: function() {
|
|
var self = this;
|
|
|
|
// Close popup handlers
|
|
$(document).on('click', '.hvac-welcome-close', function(e) {
|
|
e.preventDefault();
|
|
self.closePopup();
|
|
});
|
|
|
|
$(document).on('click', '.hvac-welcome-overlay', function(e) {
|
|
if (e.target === this) {
|
|
self.closePopup();
|
|
}
|
|
});
|
|
|
|
// Navigation handlers
|
|
$(document).on('click', '.hvac-welcome-nav-prev', function(e) {
|
|
e.preventDefault();
|
|
self.previousCard();
|
|
});
|
|
|
|
$(document).on('click', '.hvac-welcome-nav-next', function(e) {
|
|
e.preventDefault();
|
|
self.nextCard();
|
|
});
|
|
|
|
// Dot navigation
|
|
$(document).on('click', '.hvac-welcome-dot', function(e) {
|
|
e.preventDefault();
|
|
var cardIndex = $(this).data('card');
|
|
self.goToCard(cardIndex);
|
|
});
|
|
|
|
// Dismiss permanently
|
|
$(document).on('click', '.hvac-welcome-dismiss', function(e) {
|
|
e.preventDefault();
|
|
self.dismissPermanently();
|
|
});
|
|
|
|
// Keyboard navigation
|
|
$(document).on('keydown', function(e) {
|
|
if ($('.hvac-welcome-popup').is(':visible')) {
|
|
switch(e.which) {
|
|
case 27: // ESC
|
|
self.closePopup();
|
|
break;
|
|
case 37: // Left arrow
|
|
self.previousCard();
|
|
break;
|
|
case 39: // Right arrow
|
|
self.nextCard();
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
},
|
|
|
|
checkAndShowPopup: function() {
|
|
var self = this;
|
|
|
|
// Check if user has dismissed the popup
|
|
$.ajax({
|
|
url: hvac_welcome.ajax_url,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'hvac_check_welcome_dismissed',
|
|
nonce: hvac_welcome.nonce
|
|
},
|
|
success: function(response) {
|
|
if (response.success && !response.data.dismissed) {
|
|
self.showPopup();
|
|
}
|
|
}
|
|
});
|
|
},
|
|
|
|
showPopup: function() {
|
|
if ($('.hvac-welcome-popup').length === 0) {
|
|
this.createPopup();
|
|
}
|
|
|
|
$('body').addClass('hvac-welcome-open');
|
|
$('.hvac-welcome-popup').fadeIn(300);
|
|
this.updateCardDisplay();
|
|
},
|
|
|
|
closePopup: function() {
|
|
$('.hvac-welcome-popup').fadeOut(300);
|
|
$('body').removeClass('hvac-welcome-open');
|
|
},
|
|
|
|
dismissPermanently: function() {
|
|
var self = this;
|
|
var shouldDismiss = $('#hvac-welcome-dont-show').is(':checked');
|
|
|
|
if (shouldDismiss) {
|
|
$.ajax({
|
|
url: hvac_welcome.ajax_url,
|
|
type: 'POST',
|
|
data: {
|
|
action: 'hvac_dismiss_welcome_popup',
|
|
nonce: hvac_welcome.nonce
|
|
},
|
|
success: function(response) {
|
|
if (response.success) {
|
|
self.closePopup();
|
|
}
|
|
}
|
|
});
|
|
} else {
|
|
// Just close without permanently dismissing
|
|
self.closePopup();
|
|
}
|
|
},
|
|
|
|
previousCard: function() {
|
|
this.currentCard = (this.currentCard - 1 + this.totalCards) % this.totalCards;
|
|
this.updateCardDisplay();
|
|
},
|
|
|
|
nextCard: function() {
|
|
this.currentCard = (this.currentCard + 1) % this.totalCards;
|
|
this.updateCardDisplay();
|
|
},
|
|
|
|
goToCard: function(cardIndex) {
|
|
this.currentCard = cardIndex;
|
|
this.updateCardDisplay();
|
|
},
|
|
|
|
updateCardDisplay: function() {
|
|
var self = this;
|
|
var $cards = $('.hvac-welcome-card');
|
|
var $dots = $('.hvac-welcome-dot');
|
|
|
|
// Hide all cards
|
|
$cards.removeClass('active');
|
|
$dots.removeClass('active');
|
|
|
|
// Show current card with animation
|
|
setTimeout(function() {
|
|
$cards.eq(self.currentCard).addClass('active');
|
|
$dots.eq(self.currentCard).addClass('active');
|
|
}, 150);
|
|
|
|
// Update navigation button states
|
|
$('.hvac-welcome-nav-prev').toggleClass('disabled', this.currentCard === 0);
|
|
$('.hvac-welcome-nav-next').toggleClass('disabled', this.currentCard === this.totalCards - 1);
|
|
},
|
|
|
|
createPopup: function() {
|
|
var popupHTML = this.getPopupHTML();
|
|
$('body').append(popupHTML);
|
|
},
|
|
|
|
getPopupHTML: function() {
|
|
return `
|
|
<div class="hvac-welcome-popup" style="display: none;">
|
|
<div class="hvac-welcome-overlay"></div>
|
|
<div class="hvac-welcome-modal">
|
|
<button class="hvac-welcome-close" aria-label="Close">×</button>
|
|
|
|
<div class="hvac-welcome-content">
|
|
<div class="hvac-welcome-carousel">
|
|
|
|
<!-- Card 1: Welcome -->
|
|
<div class="hvac-welcome-card" data-card="0">
|
|
<div class="hvac-welcome-icon">
|
|
<span class="dashicons dashicons-welcome-learn-more"></span>
|
|
</div>
|
|
<h2>Welcome to Upskill HVAC!</h2>
|
|
<p class="hvac-welcome-subtitle">You're one of the first trainers to be welcomed into our comprehensive training platform.</p>
|
|
<div class="hvac-welcome-description">
|
|
<p>Our goal is to make it easier for HVAC Trainers to:</p>
|
|
<ul>
|
|
<li>Get discovered by potential students</li>
|
|
<li>Share training events and programs</li>
|
|
<li>Build professional reputation</li>
|
|
<li>Connect with the HVAC community</li>
|
|
</ul>
|
|
<p><strong>Note:</strong> We've done our best to customize your personal information, but you may need to make some corrections.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Card 2: Event Management -->
|
|
<div class="hvac-welcome-card" data-card="1">
|
|
<div class="hvac-welcome-icon">
|
|
<span class="dashicons dashicons-calendar-alt"></span>
|
|
</div>
|
|
<h2>Manage Your Events!</h2>
|
|
<p class="hvac-welcome-subtitle">Create and manage your training events with our integrated event system.</p>
|
|
<div class="hvac-welcome-description">
|
|
<p>Get started by creating your first training event:</p>
|
|
<ul>
|
|
<li><strong>Events:</strong> Training sessions with pricing and capacity</li>
|
|
<li><strong>Venues:</strong> Physical or virtual training locations</li>
|
|
<li><strong>Organizers:</strong> Business entities with logos</li>
|
|
<li>Track revenue and attendance</li>
|
|
</ul>
|
|
<p><strong>Good news:</strong> We've tried to auto-create training venues and organizers for you!</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Card 3: Profile & Directory -->
|
|
<div class="hvac-welcome-card" data-card="2">
|
|
<div class="hvac-welcome-icon">
|
|
<span class="dashicons dashicons-admin-users"></span>
|
|
</div>
|
|
<h2>Update & Share Your Profile!</h2>
|
|
<p class="hvac-welcome-subtitle">Your trainer profile is your professional showcase in our directory.</p>
|
|
<div class="hvac-welcome-description">
|
|
<p>Your profile includes powerful features:</p>
|
|
<ul>
|
|
<li><strong>Directory Listing:</strong> Appears in "Find A Trainer" search</li>
|
|
<li><strong>Map Integration:</strong> Shows location and service areas</li>
|
|
<li><strong>QR Code Sharing:</strong> Easy sharing at events</li>
|
|
<li><strong>Direct Contact:</strong> Students reach out directly</li>
|
|
</ul>
|
|
<p><strong>Pro tip:</strong> The more you share your profile, the more training leads you can generate!</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Card 4: More Features -->
|
|
<div class="hvac-welcome-card" data-card="3">
|
|
<div class="hvac-welcome-icon">
|
|
<span class="dashicons dashicons-star-filled"></span>
|
|
</div>
|
|
<h2>And Much More!</h2>
|
|
<p class="hvac-welcome-subtitle">We're continuously adding features to enhance your training business.</p>
|
|
<div class="hvac-welcome-description">
|
|
<p>Current features available now:</p>
|
|
<ul>
|
|
<li><strong>Certificate Generation:</strong> Create completion certificates</li>
|
|
<li><strong>Revenue Tracking:</strong> Monitor training income</li>
|
|
<li><strong>Analytics:</strong> View performance metrics</li>
|
|
</ul>
|
|
<p>Coming soon: Direct messaging with attendees, lead history tracking, advanced certificates, and more!</p>
|
|
<p><strong>Get started:</strong> Update your profile first, then create your first event!</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="hvac-welcome-navigation">
|
|
<button class="hvac-welcome-nav hvac-welcome-nav-prev" aria-label="Previous">
|
|
<span class="dashicons dashicons-arrow-left-alt2"></span>
|
|
</button>
|
|
|
|
<div class="hvac-welcome-dots">
|
|
<button class="hvac-welcome-dot" data-card="0" aria-label="Card 1"></button>
|
|
<button class="hvac-welcome-dot" data-card="1" aria-label="Card 2"></button>
|
|
<button class="hvac-welcome-dot" data-card="2" aria-label="Card 3"></button>
|
|
<button class="hvac-welcome-dot" data-card="3" aria-label="Card 4"></button>
|
|
</div>
|
|
|
|
<button class="hvac-welcome-nav hvac-welcome-nav-next" aria-label="Next">
|
|
<span class="dashicons dashicons-arrow-right-alt2"></span>
|
|
</button>
|
|
</div>
|
|
|
|
<div class="hvac-welcome-footer">
|
|
<label class="hvac-welcome-checkbox">
|
|
<input type="checkbox" id="hvac-welcome-dont-show">
|
|
Don't show this again
|
|
</label>
|
|
<button class="hvac-welcome-dismiss button button-primary wp-element-button">Get Started</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
`;
|
|
}
|
|
};
|
|
|
|
// Initialize when document is ready
|
|
$(document).ready(function() {
|
|
// Only initialize on dashboard page
|
|
if ($('.hvac-trainer-dashboard-page').length > 0) {
|
|
HVACWelcomePopup.init();
|
|
}
|
|
});
|
|
|
|
})(jQuery); |