- Created hvac-navigation-fix.css to work with span.menu-toggle elements - Fixed hover states for menu items using spans instead of anchors - Ensured proper display/visibility/opacity transitions - Added z-index layering to prevent conflicts - Mobile responsive behavior maintained The issue was that the menu uses span.menu-toggle instead of anchor tags, so the CSS selectors needed to be updated to match the actual HTML structure.
1209 lines
No EOL
39 KiB
PHP
1209 lines
No EOL
39 KiB
PHP
<?php
|
|
/**
|
|
* HVAC Scripts and Styles Manager
|
|
*
|
|
* Centralized management of all plugin scripts and styles
|
|
*
|
|
* @package HVAC_Community_Events
|
|
* @since 2.0.0
|
|
*/
|
|
|
|
if (!defined('ABSPATH')) {
|
|
exit;
|
|
}
|
|
|
|
/**
|
|
* HVAC_Scripts_Styles class
|
|
*/
|
|
class HVAC_Scripts_Styles {
|
|
|
|
/**
|
|
* Instance
|
|
*
|
|
* @var HVAC_Scripts_Styles
|
|
*/
|
|
private static $instance = null;
|
|
|
|
/**
|
|
* Script version for cache busting
|
|
*
|
|
* @var string
|
|
*/
|
|
private $version;
|
|
|
|
/**
|
|
* Get instance
|
|
*
|
|
* @return HVAC_Scripts_Styles
|
|
*/
|
|
public static function instance() {
|
|
if (null === self::$instance) {
|
|
self::$instance = new self();
|
|
}
|
|
return self::$instance;
|
|
}
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
private function __construct() {
|
|
$this->version = HVAC_PLUGIN_VERSION;
|
|
$this->init_hooks();
|
|
}
|
|
|
|
/**
|
|
* Detect if user is using Safari browser
|
|
* Uses centralized browser detection service
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function is_safari_browser() {
|
|
return HVAC_Browser_Detection::instance()->is_safari_browser();
|
|
}
|
|
|
|
/**
|
|
* Get script path based on browser compatibility
|
|
* Uses centralized browser detection service
|
|
*
|
|
* @param string $script_name
|
|
* @return string
|
|
*/
|
|
public function get_compatible_script_path($script_name) {
|
|
$browser_detection = HVAC_Browser_Detection::instance();
|
|
|
|
// If Safari and doesn't support ES6, load Safari-compatible version
|
|
if ($browser_detection->is_safari_browser() && !$browser_detection->safari_supports_es6()) {
|
|
$safari_script = HVAC_PLUGIN_DIR . 'assets/js/' . $script_name . '-safari-compatible.js';
|
|
if (file_exists($safari_script)) {
|
|
if (defined('WP_DEBUG') && WP_DEBUG) {
|
|
error_log('[HVAC Scripts Styles] Loading Safari-compatible script: ' . $script_name . '-safari-compatible.js');
|
|
}
|
|
return HVAC_PLUGIN_URL . 'assets/js/' . $script_name . '-safari-compatible.js';
|
|
}
|
|
}
|
|
|
|
// Default to standard version
|
|
if (defined('WP_DEBUG') && WP_DEBUG) {
|
|
$browser_info = $browser_detection->get_browser_info();
|
|
error_log('[HVAC Scripts Styles] Loading standard script: ' . $script_name . '.js | Browser: ' . json_encode($browser_info));
|
|
}
|
|
return HVAC_PLUGIN_URL . 'assets/js/' . $script_name . '.js';
|
|
}
|
|
|
|
/**
|
|
* Initialize hooks
|
|
*
|
|
* @return void
|
|
*/
|
|
private function init_hooks() {
|
|
// Use consolidated CSS for all browsers now that foreign files are removed
|
|
add_action('wp_enqueue_scripts', array($this, 'enqueue_frontend_assets'));
|
|
|
|
// No longer need Safari-specific bypass since we're using consolidated CSS
|
|
|
|
// Admin scripts and styles
|
|
add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_assets'));
|
|
|
|
// Login page scripts and styles
|
|
add_action('login_enqueue_scripts', array($this, 'enqueue_login_assets'));
|
|
}
|
|
|
|
/**
|
|
* Enqueue minimal assets for Safari browsers to prevent resource cascade hanging
|
|
*
|
|
* @return void
|
|
*/
|
|
public function enqueue_safari_minimal_assets() {
|
|
// Only enqueue on plugin pages
|
|
if (!$this->is_plugin_page()) {
|
|
return;
|
|
}
|
|
|
|
if (defined('WP_DEBUG') && WP_DEBUG) {
|
|
error_log('[HVAC Scripts Styles] Loading Safari optimized consolidated assets');
|
|
}
|
|
|
|
// Load consolidated core CSS - single file instead of 15+
|
|
wp_enqueue_style(
|
|
'hvac-consolidated-core',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-consolidated-core.css',
|
|
array(),
|
|
$this->version
|
|
);
|
|
|
|
// Load page-specific consolidated bundle based on context
|
|
if ($this->is_dashboard_page() || $this->is_event_manage_page()) {
|
|
wp_enqueue_style(
|
|
'hvac-consolidated-dashboard',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-consolidated-dashboard.css',
|
|
array('hvac-consolidated-core'),
|
|
$this->version
|
|
);
|
|
}
|
|
|
|
// Load minimal JavaScript
|
|
wp_enqueue_script(
|
|
'hvac-safari-minimal-js',
|
|
HVAC_PLUGIN_URL . 'assets/js/hvac-community-events.js',
|
|
array('jquery'),
|
|
$this->version,
|
|
true
|
|
);
|
|
|
|
// Essential localization only
|
|
wp_localize_script('hvac-safari-minimal-js', 'hvac_ajax', array(
|
|
'ajax_url' => admin_url('admin-ajax.php'),
|
|
'nonce' => wp_create_nonce('hvac_ajax_nonce'),
|
|
'is_logged_in' => is_user_logged_in(),
|
|
'plugin_url' => HVAC_PLUGIN_URL,
|
|
));
|
|
|
|
// DISABLED - Using TEC Community Events 5.x instead
|
|
// if ($this->is_event_manage_page() || $this->is_create_event_page() || $this->is_edit_event_page()) {
|
|
// wp_enqueue_script(
|
|
// 'hvac-rest-api-event-submission',
|
|
// HVAC_PLUGIN_URL . 'assets/js/hvac-rest-api-event-submission.js',
|
|
// array('jquery'),
|
|
// $this->version,
|
|
// true
|
|
// );
|
|
//
|
|
// wp_localize_script('hvac-rest-api-event-submission', 'hvac_ajax', array(
|
|
// 'ajaxurl' => admin_url('admin-ajax.php'),
|
|
// 'nonce' => wp_create_nonce('hvac_ajax_nonce')
|
|
// ));
|
|
// }
|
|
}
|
|
|
|
/**
|
|
* Disable non-critical assets for Safari browsers to prevent resource overload
|
|
*
|
|
* @return void
|
|
*/
|
|
public function disable_non_critical_assets() {
|
|
// Only run on plugin pages
|
|
if (!$this->is_plugin_page()) {
|
|
return;
|
|
}
|
|
|
|
if (defined('WP_DEBUG') && WP_DEBUG) {
|
|
error_log('[HVAC Scripts Styles] Disabling non-critical assets for Safari');
|
|
}
|
|
|
|
// Dequeue all additional CSS files that may have been enqueued by other components
|
|
$css_handles_to_remove = [
|
|
'hvac-page-templates',
|
|
'hvac-layout',
|
|
'hvac-common',
|
|
'hvac-accessibility-fixes',
|
|
'hvac-mobile-responsive',
|
|
'hvac-dashboard',
|
|
'hvac-dashboard-enhanced',
|
|
'hvac-registration',
|
|
'communication-templates',
|
|
'hvac-certificates',
|
|
'hvac-certificates-enhanced',
|
|
'hvac-certificate-reports',
|
|
'hvac-generate-certificates',
|
|
'hvac-organizers',
|
|
'hvac-venues',
|
|
'hvac-trainer-profile',
|
|
'hvac-profile-sharing',
|
|
'hvac-event-manage'
|
|
];
|
|
|
|
foreach ($css_handles_to_remove as $handle) {
|
|
wp_dequeue_style($handle);
|
|
wp_deregister_style($handle);
|
|
}
|
|
|
|
// Dequeue non-essential JavaScript to reduce resource load
|
|
$js_handles_to_remove = [
|
|
'hvac-dashboard',
|
|
'hvac-dashboard-enhanced',
|
|
'hvac-registration',
|
|
'hvac-profile-sharing',
|
|
'hvac-help-system'
|
|
];
|
|
|
|
foreach ($js_handles_to_remove as $handle) {
|
|
wp_dequeue_script($handle);
|
|
wp_deregister_script($handle);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Enqueue frontend assets
|
|
*
|
|
* @return void
|
|
*/
|
|
public function enqueue_frontend_assets() {
|
|
// Only enqueue on plugin pages
|
|
if (!$this->is_plugin_page()) {
|
|
return;
|
|
}
|
|
|
|
// Always include mobile navigation fix
|
|
wp_enqueue_style(
|
|
'hvac-mobile-nav-fix',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-mobile-navigation-fix.css',
|
|
array(),
|
|
$this->version
|
|
);
|
|
|
|
// Check if CSS optimization is enabled and consolidated file exists
|
|
if ($this->should_use_consolidated_css()) {
|
|
$this->enqueue_consolidated_css();
|
|
return;
|
|
}
|
|
|
|
// Fallback to individual CSS files (original system)
|
|
$this->enqueue_individual_css_files();
|
|
}
|
|
|
|
/**
|
|
* Check if consolidated CSS should be used
|
|
*
|
|
* @return bool
|
|
*/
|
|
private function should_use_consolidated_css() {
|
|
// Check if consolidated CSS file exists
|
|
$consolidated_file = HVAC_PLUGIN_DIR . 'assets/css/hvac-consolidated.css';
|
|
return file_exists($consolidated_file) && !defined('HVAC_CSS_DEBUG');
|
|
}
|
|
|
|
/**
|
|
* Enqueue consolidated CSS file
|
|
*
|
|
* @return void
|
|
*/
|
|
private function enqueue_consolidated_css() {
|
|
// Load design system first
|
|
wp_enqueue_style(
|
|
'hvac-design-system',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-design-system.css',
|
|
array(),
|
|
$this->version
|
|
);
|
|
|
|
// Load component library
|
|
wp_enqueue_style(
|
|
'hvac-components',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-components.css',
|
|
array('hvac-design-system'),
|
|
$this->version
|
|
);
|
|
|
|
// Load enhanced navigation styles
|
|
wp_enqueue_style(
|
|
'hvac-navigation-enhanced',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-navigation-enhanced.css',
|
|
array('hvac-design-system', 'hvac-components'),
|
|
$this->version
|
|
);
|
|
|
|
// Load navigation fix with high priority
|
|
wp_enqueue_style(
|
|
'hvac-navigation-fix',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-navigation-fix.css',
|
|
array('hvac-navigation-enhanced', 'hvac-consolidated-core'),
|
|
$this->version
|
|
);
|
|
|
|
// Always load fixed core bundle
|
|
wp_enqueue_style(
|
|
'hvac-consolidated-core',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-consolidated-core-fixed.css',
|
|
array('hvac-design-system', 'hvac-components'),
|
|
$this->version
|
|
);
|
|
|
|
// Load fixed dashboard bundle for dashboard/management pages
|
|
if ($this->is_dashboard_page() || $this->is_event_manage_page()) {
|
|
wp_enqueue_style(
|
|
'hvac-consolidated-dashboard',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-consolidated-dashboard-fixed.css',
|
|
array('hvac-consolidated-core'),
|
|
$this->version
|
|
);
|
|
}
|
|
|
|
// Load fixed forms bundle for registration/profile pages
|
|
if ($this->is_registration_page() || $this->is_trainer_profile_page() ||
|
|
$this->is_organizers_page() || $this->is_venues_page()) {
|
|
wp_enqueue_style(
|
|
'hvac-consolidated-forms',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-consolidated-forms-fixed.css',
|
|
array('hvac-consolidated-core'),
|
|
$this->version
|
|
);
|
|
}
|
|
|
|
// Load certificates bundle for certificate pages
|
|
if ($this->is_certificate_page()) {
|
|
wp_enqueue_style(
|
|
'hvac-consolidated-certificates',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-consolidated-certificates.css',
|
|
array('hvac-consolidated-core'),
|
|
$this->version
|
|
);
|
|
}
|
|
|
|
// Note: page-specific JavaScript is still enqueued separately
|
|
$this->enqueue_page_specific_scripts();
|
|
}
|
|
|
|
/**
|
|
* Enqueue page-specific JavaScript
|
|
*
|
|
* @return void
|
|
*/
|
|
private function enqueue_page_specific_scripts() {
|
|
// Main plugin scripts
|
|
wp_enqueue_script(
|
|
'hvac-community-events',
|
|
HVAC_PLUGIN_URL . 'assets/js/hvac-community-events.js',
|
|
array('jquery'),
|
|
$this->version,
|
|
true
|
|
);
|
|
|
|
// Enhanced navigation functionality
|
|
wp_enqueue_script(
|
|
'hvac-navigation-enhanced',
|
|
HVAC_PLUGIN_URL . 'assets/js/hvac-navigation-enhanced.js',
|
|
array('jquery'),
|
|
$this->version,
|
|
true
|
|
);
|
|
|
|
// Mobile responsive functionality
|
|
wp_enqueue_script(
|
|
'hvac-mobile-responsive',
|
|
HVAC_PLUGIN_URL . 'assets/js/hvac-mobile-responsive.js',
|
|
array('jquery', 'hvac-community-events'),
|
|
$this->version,
|
|
true
|
|
);
|
|
|
|
// Dashboard scripts
|
|
if ($this->is_dashboard_page()) {
|
|
wp_enqueue_script(
|
|
'hvac-dashboard',
|
|
HVAC_PLUGIN_URL . 'assets/js/hvac-dashboard.js',
|
|
array('jquery', 'hvac-community-events'),
|
|
$this->version,
|
|
true
|
|
);
|
|
|
|
wp_enqueue_script(
|
|
'hvac-dashboard-enhanced',
|
|
HVAC_PLUGIN_URL . 'assets/js/hvac-dashboard-enhanced.js',
|
|
array('hvac-dashboard'),
|
|
$this->version,
|
|
true
|
|
);
|
|
}
|
|
|
|
// Registration scripts
|
|
if ($this->is_registration_page()) {
|
|
wp_enqueue_script(
|
|
'hvac-registration',
|
|
$this->get_compatible_script_path('hvac-registration'),
|
|
array('jquery', 'hvac-community-events'),
|
|
$this->version,
|
|
true
|
|
);
|
|
}
|
|
|
|
// Trainer profile scripts
|
|
if ($this->is_trainer_profile_page()) {
|
|
wp_enqueue_script(
|
|
'hvac-profile-sharing',
|
|
HVAC_PLUGIN_URL . 'assets/js/hvac-profile-sharing.js',
|
|
array('jquery', 'hvac-community-events'),
|
|
$this->version,
|
|
true
|
|
);
|
|
}
|
|
|
|
// Help system scripts
|
|
wp_enqueue_script(
|
|
'hvac-help-system',
|
|
HVAC_PLUGIN_URL . 'assets/js/hvac-help-system.js',
|
|
array('jquery'),
|
|
$this->version,
|
|
true
|
|
);
|
|
|
|
// Localize scripts
|
|
wp_localize_script('hvac-community-events', 'hvac_ajax', array(
|
|
'ajax_url' => admin_url('admin-ajax.php'),
|
|
'nonce' => wp_create_nonce('hvac_ajax_nonce'),
|
|
'is_logged_in' => is_user_logged_in(),
|
|
'plugin_url' => HVAC_PLUGIN_URL,
|
|
));
|
|
|
|
// Localize dashboard script
|
|
if ($this->is_dashboard_page()) {
|
|
wp_localize_script('hvac-dashboard', 'hvac_dashboard', array(
|
|
'ajax_url' => admin_url('admin-ajax.php'),
|
|
'nonce' => wp_create_nonce('hvac_dashboard_nonce'),
|
|
'strings' => array(
|
|
'loading' => __('Loading...', 'hvac-community-events'),
|
|
'error' => __('An error occurred. Please try again.', 'hvac-community-events'),
|
|
),
|
|
));
|
|
}
|
|
|
|
// Localize profile sharing script
|
|
if ($this->is_trainer_profile_page()) {
|
|
wp_localize_script('hvac-profile-sharing', 'hvac_sharing', array(
|
|
'ajax_url' => admin_url('admin-ajax.php'),
|
|
'nonce' => wp_create_nonce('hvac_profile_sharing'),
|
|
'strings' => array(
|
|
'loading' => __('Loading...', 'hvac-community-events'),
|
|
'error' => __('An error occurred. Please try again.', 'hvac-community-events'),
|
|
'copied' => __('Copied to clipboard!', 'hvac-community-events'),
|
|
'copy_error' => __('Unable to copy. Please select and copy manually.', 'hvac-community-events'),
|
|
'loading_error' => __('Unable to load profile card. Please try again.', 'hvac-community-events')
|
|
),
|
|
));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Enqueue individual CSS files (original system)
|
|
*
|
|
* @return void
|
|
*/
|
|
private function enqueue_individual_css_files() {
|
|
// Main plugin styles - load on ALL plugin pages
|
|
wp_enqueue_style(
|
|
'hvac-community-events',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-community-events.css',
|
|
array(),
|
|
$this->version
|
|
);
|
|
|
|
// Page templates styles - ensures proper layout for all HVAC pages
|
|
wp_enqueue_style(
|
|
'hvac-page-templates',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-page-templates.css',
|
|
array(),
|
|
$this->version
|
|
);
|
|
|
|
// Layout styles - ensure proper container width and padding
|
|
wp_enqueue_style(
|
|
'hvac-layout',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-layout.css',
|
|
array('hvac-community-events'),
|
|
$this->version
|
|
);
|
|
|
|
// Common styles for all trainer pages - ensures consistent styling
|
|
wp_enqueue_style(
|
|
'hvac-common',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-common.css',
|
|
array(),
|
|
$this->version
|
|
);
|
|
|
|
// Accessibility fixes
|
|
wp_enqueue_style(
|
|
'hvac-accessibility-fixes',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-accessibility-fixes.css',
|
|
array('hvac-common'),
|
|
$this->version
|
|
);
|
|
|
|
// Mobile responsive optimizations - Load after base styles
|
|
wp_enqueue_style(
|
|
'hvac-mobile-responsive',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-mobile-responsive.css',
|
|
array('hvac-common', 'hvac-accessibility-fixes'),
|
|
$this->version
|
|
);
|
|
|
|
// Load the rest of the page-specific CSS
|
|
$this->enqueue_page_specific_css();
|
|
}
|
|
|
|
/**
|
|
* Enqueue page-specific CSS (used by both consolidated and individual systems)
|
|
*
|
|
* @return void
|
|
*/
|
|
private function enqueue_page_specific_css() {
|
|
// Dashboard styles
|
|
if ($this->is_dashboard_page()) {
|
|
wp_enqueue_style(
|
|
'hvac-dashboard',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-dashboard.css',
|
|
array('hvac-community-events'),
|
|
$this->version
|
|
);
|
|
|
|
wp_enqueue_style(
|
|
'hvac-dashboard-enhanced',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-dashboard-enhanced.css',
|
|
array('hvac-dashboard'),
|
|
$this->version
|
|
);
|
|
}
|
|
|
|
// Registration styles
|
|
if ($this->is_registration_page()) {
|
|
wp_enqueue_style(
|
|
'hvac-registration',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-registration.css',
|
|
array('hvac-community-events'),
|
|
$this->version
|
|
);
|
|
}
|
|
|
|
// Communication templates styles
|
|
if ($this->is_communication_page()) {
|
|
wp_enqueue_style(
|
|
'communication-templates',
|
|
HVAC_PLUGIN_URL . 'assets/css/communication-templates.css',
|
|
array('hvac-community-events'),
|
|
$this->version
|
|
);
|
|
}
|
|
|
|
// Certificate pages styles
|
|
if ($this->is_certificate_page()) {
|
|
wp_enqueue_style(
|
|
'hvac-certificates',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-certificates.css',
|
|
array('hvac-community-events'),
|
|
$this->version
|
|
);
|
|
|
|
wp_enqueue_style(
|
|
'hvac-certificates-enhanced',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-certificates-enhanced.css',
|
|
array('hvac-certificates'),
|
|
$this->version
|
|
);
|
|
|
|
// Load specific certificate page styles
|
|
if (strpos($_SERVER['REQUEST_URI'], 'certificate-reports') !== false) {
|
|
wp_enqueue_style(
|
|
'hvac-certificate-reports',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-certificate-reports.css',
|
|
array('hvac-certificates'),
|
|
$this->version
|
|
);
|
|
}
|
|
|
|
if (strpos($_SERVER['REQUEST_URI'], 'generate-certificates') !== false) {
|
|
wp_enqueue_style(
|
|
'hvac-generate-certificates',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-generate-certificates.css',
|
|
array('hvac-certificates'),
|
|
$this->version
|
|
);
|
|
}
|
|
}
|
|
|
|
// Organizers pages styles
|
|
if ($this->is_organizers_page()) {
|
|
wp_enqueue_style(
|
|
'hvac-organizers',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-organizers.css',
|
|
array('hvac-community-events'),
|
|
$this->version
|
|
);
|
|
}
|
|
|
|
// Venues pages styles
|
|
if ($this->is_venues_page()) {
|
|
wp_enqueue_style(
|
|
'hvac-venues',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-venues.css',
|
|
array('hvac-community-events'),
|
|
$this->version
|
|
);
|
|
}
|
|
|
|
// Trainer profile pages styles
|
|
if ($this->is_trainer_profile_page()) {
|
|
wp_enqueue_style(
|
|
'hvac-trainer-profile',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-trainer-profile.css',
|
|
array('hvac-community-events'),
|
|
$this->version
|
|
);
|
|
|
|
// Profile sharing styles - includes modal and QR code display
|
|
wp_enqueue_style(
|
|
'hvac-profile-sharing',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-profile-sharing.css',
|
|
array('hvac-trainer-profile'),
|
|
$this->version
|
|
);
|
|
}
|
|
|
|
// Event manage page styles
|
|
if ($this->is_event_manage_page()) {
|
|
// First ensure common CSS is loaded
|
|
wp_enqueue_style(
|
|
'hvac-common',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-common.css',
|
|
array(),
|
|
$this->version
|
|
);
|
|
|
|
// Then dashboard CSS
|
|
wp_enqueue_style(
|
|
'hvac-dashboard',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-dashboard.css',
|
|
array('hvac-community-events', 'hvac-common'),
|
|
$this->version
|
|
);
|
|
|
|
// Layout CSS for proper container styling
|
|
wp_enqueue_style(
|
|
'hvac-layout',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-layout.css',
|
|
array('hvac-community-events'),
|
|
$this->version
|
|
);
|
|
|
|
// Finally event manage CSS
|
|
wp_enqueue_style(
|
|
'hvac-event-manage',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-event-manage.css',
|
|
array('hvac-community-events', 'hvac-common', 'hvac-dashboard', 'hvac-layout'),
|
|
$this->version
|
|
);
|
|
}
|
|
|
|
// Main plugin scripts
|
|
wp_enqueue_script(
|
|
'hvac-community-events',
|
|
HVAC_PLUGIN_URL . 'assets/js/hvac-community-events.js',
|
|
array('jquery'),
|
|
$this->version,
|
|
true
|
|
);
|
|
|
|
// Mobile responsive functionality - Load on all plugin pages
|
|
wp_enqueue_script(
|
|
'hvac-mobile-responsive',
|
|
HVAC_PLUGIN_URL . 'assets/js/hvac-mobile-responsive.js',
|
|
array('jquery', 'hvac-community-events'),
|
|
$this->version,
|
|
true
|
|
);
|
|
|
|
// Dashboard scripts
|
|
if ($this->is_dashboard_page()) {
|
|
wp_enqueue_script(
|
|
'hvac-dashboard',
|
|
HVAC_PLUGIN_URL . 'assets/js/hvac-dashboard.js',
|
|
array('jquery', 'hvac-community-events'),
|
|
$this->version,
|
|
true
|
|
);
|
|
|
|
wp_enqueue_script(
|
|
'hvac-dashboard-enhanced',
|
|
HVAC_PLUGIN_URL . 'assets/js/hvac-dashboard-enhanced.js',
|
|
array('hvac-dashboard'),
|
|
$this->version,
|
|
true
|
|
);
|
|
}
|
|
|
|
// DISABLED - Using TEC Community Events 5.x instead
|
|
// if ($this->is_event_manage_page() || $this->is_create_event_page() || $this->is_edit_event_page()) {
|
|
// wp_enqueue_script(
|
|
// 'hvac-rest-api-event-submission',
|
|
// HVAC_PLUGIN_URL . 'assets/js/hvac-rest-api-event-submission.js',
|
|
// array('jquery'),
|
|
// $this->version,
|
|
// true
|
|
// );
|
|
//
|
|
// // Localize script with necessary data
|
|
// wp_localize_script('hvac-rest-api-event-submission', 'hvac_ajax', array(
|
|
// 'ajaxurl' => admin_url('admin-ajax.php'),
|
|
// 'nonce' => wp_create_nonce('hvac_ajax_nonce')
|
|
// ));
|
|
// }
|
|
|
|
// Registration scripts
|
|
if ($this->is_registration_page()) {
|
|
wp_enqueue_script(
|
|
'hvac-registration',
|
|
$this->get_compatible_script_path('hvac-registration'),
|
|
array('jquery', 'hvac-community-events'),
|
|
$this->version,
|
|
true
|
|
);
|
|
}
|
|
|
|
// Trainer profile scripts
|
|
if ($this->is_trainer_profile_page()) {
|
|
wp_enqueue_script(
|
|
'hvac-profile-sharing',
|
|
HVAC_PLUGIN_URL . 'assets/js/hvac-profile-sharing.js',
|
|
array('jquery', 'hvac-community-events'),
|
|
$this->version,
|
|
true
|
|
);
|
|
}
|
|
|
|
// Help system scripts
|
|
wp_enqueue_script(
|
|
'hvac-help-system',
|
|
HVAC_PLUGIN_URL . 'assets/js/hvac-help-system.js',
|
|
array('jquery'),
|
|
$this->version,
|
|
true
|
|
);
|
|
|
|
// Safari debugging script - temporarily disabled to isolate other script issues
|
|
/*
|
|
if ($this->is_find_trainer_page()) {
|
|
wp_enqueue_script(
|
|
'hvac-safari-debug',
|
|
HVAC_PLUGIN_URL . 'assets/js/hvac-safari-debug.js',
|
|
array(), // No dependencies - load early
|
|
$this->version,
|
|
false // Load in head for early debugging
|
|
);
|
|
}
|
|
*/
|
|
|
|
// Localize main script
|
|
wp_localize_script('hvac-community-events', 'hvac_ajax', array(
|
|
'ajax_url' => admin_url('admin-ajax.php'),
|
|
'nonce' => wp_create_nonce('hvac_ajax_nonce'),
|
|
'is_logged_in' => is_user_logged_in(),
|
|
'plugin_url' => HVAC_PLUGIN_URL,
|
|
));
|
|
|
|
// Localize dashboard script
|
|
if ($this->is_dashboard_page()) {
|
|
wp_localize_script('hvac-dashboard', 'hvac_dashboard', array(
|
|
'ajax_url' => admin_url('admin-ajax.php'),
|
|
'nonce' => wp_create_nonce('hvac_dashboard_nonce'),
|
|
'strings' => array(
|
|
'loading' => __('Loading...', 'hvac-community-events'),
|
|
'error' => __('An error occurred. Please try again.', 'hvac-community-events'),
|
|
),
|
|
));
|
|
}
|
|
|
|
// Localize profile sharing script
|
|
if ($this->is_trainer_profile_page()) {
|
|
wp_localize_script('hvac-profile-sharing', 'hvac_sharing', array(
|
|
'ajax_url' => admin_url('admin-ajax.php'),
|
|
'nonce' => wp_create_nonce('hvac_profile_sharing'),
|
|
'strings' => array(
|
|
'loading' => __('Loading...', 'hvac-community-events'),
|
|
'error' => __('An error occurred. Please try again.', 'hvac-community-events'),
|
|
'copied' => __('Copied to clipboard!', 'hvac-community-events'),
|
|
'copy_error' => __('Unable to copy. Please select and copy manually.', 'hvac-community-events'),
|
|
'loading_error' => __('Unable to load profile card. Please try again.', 'hvac-community-events')
|
|
),
|
|
));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Enqueue admin assets
|
|
*
|
|
* @param string $hook Current admin page hook
|
|
* @return void
|
|
*/
|
|
public function enqueue_admin_assets($hook) {
|
|
// Global admin styles
|
|
wp_enqueue_style(
|
|
'hvac-admin',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-admin.css',
|
|
array(),
|
|
$this->version
|
|
);
|
|
|
|
// Global admin scripts
|
|
wp_enqueue_script(
|
|
'hvac-admin',
|
|
HVAC_PLUGIN_URL . 'assets/js/hvac-admin.js',
|
|
array('jquery'),
|
|
$this->version . '.2', // Force cache refresh for jQuery fix
|
|
true
|
|
);
|
|
|
|
// Localize admin script
|
|
wp_localize_script('hvac-admin', 'hvac_admin', array(
|
|
'ajax_url' => admin_url('admin-ajax.php'),
|
|
'nonce' => wp_create_nonce('hvac_admin_nonce'),
|
|
));
|
|
|
|
// Plugin-specific admin pages
|
|
if (strpos($hook, 'hvac-community-events') !== false) {
|
|
// Add any additional plugin-specific admin assets here
|
|
}
|
|
|
|
// Certificate admin scripts
|
|
if (strpos($hook, 'certificate') !== false) {
|
|
wp_enqueue_script(
|
|
'hvac-certificate-admin',
|
|
HVAC_PLUGIN_URL . 'assets/js/hvac-certificate-admin.js',
|
|
array('jquery'),
|
|
$this->version,
|
|
true
|
|
);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Enqueue login page assets
|
|
*
|
|
* @return void
|
|
*/
|
|
public function enqueue_login_assets() {
|
|
// Check if we're on the custom login page
|
|
if (!$this->is_custom_login_page()) {
|
|
return;
|
|
}
|
|
|
|
wp_enqueue_style(
|
|
'hvac-login',
|
|
HVAC_PLUGIN_URL . 'assets/css/hvac-login.css',
|
|
array(),
|
|
$this->version
|
|
);
|
|
|
|
wp_enqueue_script(
|
|
'hvac-login',
|
|
HVAC_PLUGIN_URL . 'assets/js/hvac-login.js',
|
|
array('jquery'),
|
|
$this->version,
|
|
true
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Check if current page is a plugin page
|
|
*
|
|
* @return bool
|
|
*/
|
|
private function is_plugin_page() {
|
|
// Check if we're in a page template context
|
|
if (defined('HVAC_IN_PAGE_TEMPLATE') && HVAC_IN_PAGE_TEMPLATE) {
|
|
return true;
|
|
}
|
|
|
|
// Check using template loader if available
|
|
if (class_exists('HVAC_Template_Loader')) {
|
|
return HVAC_Template_Loader::is_plugin_template();
|
|
}
|
|
|
|
// Check by page template
|
|
if (is_page_template()) {
|
|
$template = get_page_template_slug();
|
|
if (strpos($template, 'page-trainer') !== false ||
|
|
strpos($template, 'page-master') !== false ||
|
|
strpos($template, 'page-certificate') !== false ||
|
|
strpos($template, 'page-generate') !== false ||
|
|
strpos($template, 'page-manage-event') !== false) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
// Fallback: check URL path (more comprehensive)
|
|
$current_path = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
|
|
$plugin_paths = array(
|
|
'trainer',
|
|
'master-trainer',
|
|
'training-login',
|
|
'hvac-dashboard',
|
|
'manage-event',
|
|
'event-summary',
|
|
'certificate-reports',
|
|
'generate-certificates',
|
|
);
|
|
|
|
foreach ($plugin_paths as $path) {
|
|
if (strpos($current_path, $path) !== false) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Check if current page is a dashboard page
|
|
*
|
|
* @return bool
|
|
*/
|
|
private function is_dashboard_page() {
|
|
// Check by page slug
|
|
$dashboard_pages = array(
|
|
'trainer-dashboard',
|
|
'master-dashboard',
|
|
'hvac-dashboard',
|
|
'trainer/dashboard',
|
|
'master-trainer/dashboard',
|
|
'master-trainer/master-dashboard',
|
|
'trainer/event/manage',
|
|
'manage-event',
|
|
'trainer/certificate-reports',
|
|
'trainer/generate-certificates'
|
|
);
|
|
|
|
foreach ($dashboard_pages as $page_slug) {
|
|
if (is_page($page_slug)) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
// Also check URL path as fallback
|
|
$current_path = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
|
|
$dashboard_paths = array(
|
|
'trainer/dashboard',
|
|
'master-trainer/dashboard',
|
|
'master-trainer/master-dashboard',
|
|
'trainer/event/manage',
|
|
'manage-event',
|
|
'trainer/certificate-reports',
|
|
'trainer/generate-certificates'
|
|
);
|
|
|
|
foreach ($dashboard_paths as $path) {
|
|
if (strpos($current_path, $path) !== false) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
// Check if this is a community events submission page
|
|
if (function_exists('tribe_is_community_edit_event_page') && tribe_is_community_edit_event_page()) {
|
|
return true;
|
|
}
|
|
|
|
if (function_exists('tribe_is_community_my_events_page') && tribe_is_community_my_events_page()) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Check if current page is registration page
|
|
*
|
|
* @return bool
|
|
*/
|
|
private function is_registration_page() {
|
|
return is_page('trainer-registration') ||
|
|
is_page('trainer/registration');
|
|
}
|
|
|
|
/**
|
|
* Check if current page is communication page
|
|
*
|
|
* @return bool
|
|
*/
|
|
private function is_communication_page() {
|
|
return is_page('communication-templates') ||
|
|
is_page('trainer/communication-templates') ||
|
|
is_page('communication-schedules') ||
|
|
is_page('trainer/communication-schedules');
|
|
}
|
|
|
|
/**
|
|
* Check if current page is event manage page
|
|
*
|
|
* @return bool
|
|
*/
|
|
private function is_event_manage_page() {
|
|
// Check by page ID (most reliable)
|
|
global $post;
|
|
if ($post && $post->ID == 5344) { // Event manage page ID
|
|
return true;
|
|
}
|
|
|
|
// Check by page slug
|
|
if (is_page('manage') || is_page('trainer/event/manage') || is_page('manage-event') || is_page('trainer-event-manage')) {
|
|
return true;
|
|
}
|
|
|
|
// Check by page template
|
|
if (is_page_template('page-manage-event.php')) {
|
|
return true;
|
|
}
|
|
|
|
// Check URL path
|
|
$current_path = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
|
|
if ($current_path === 'trainer/event/manage' || $current_path === 'trainer/event/manage/') {
|
|
return true;
|
|
}
|
|
|
|
// Check if this is a community events submission page
|
|
if (function_exists('tribe_is_community_edit_event_page') && tribe_is_community_edit_event_page()) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Check if current page is create event page
|
|
*
|
|
* @return bool
|
|
*/
|
|
private function is_create_event_page() {
|
|
// Check by page slug
|
|
if (is_page('create-event') || is_page('trainer/create-event')) {
|
|
return true;
|
|
}
|
|
|
|
// Check by page template
|
|
if (is_page_template('page-create-event.php') || is_page_template('templates/page-create-event.php')) {
|
|
return true;
|
|
}
|
|
|
|
// Check URL path
|
|
$current_path = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
|
|
if ($current_path === 'trainer/create-event' || $current_path === 'trainer/create-event/') {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Check if current page is edit event page
|
|
*
|
|
* @return bool
|
|
*/
|
|
private function is_edit_event_page() {
|
|
// Check by page slug
|
|
if (is_page('edit-event') || is_page('trainer/edit-event')) {
|
|
return true;
|
|
}
|
|
|
|
// Check by page template
|
|
if (is_page_template('page-edit-event.php') || is_page_template('templates/page-edit-event.php')) {
|
|
return true;
|
|
}
|
|
|
|
// Check URL path
|
|
$current_path = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');
|
|
if ($current_path === 'trainer/edit-event' || $current_path === 'trainer/edit-event/') {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Check if current page is custom login page
|
|
*
|
|
* @return bool
|
|
*/
|
|
private function is_custom_login_page() {
|
|
return is_page('training-login') ||
|
|
is_page('community-login') ||
|
|
is_page('trainer/login');
|
|
}
|
|
|
|
/**
|
|
* Check if current page is certificate page
|
|
*
|
|
* @return bool
|
|
*/
|
|
private function is_certificate_page() {
|
|
return is_page('certificate-reports') ||
|
|
is_page('trainer/certificate-reports') ||
|
|
is_page('generate-certificates') ||
|
|
is_page('trainer/generate-certificates') ||
|
|
strpos($_SERVER['REQUEST_URI'], 'certificate-reports') !== false ||
|
|
strpos($_SERVER['REQUEST_URI'], 'generate-certificates') !== false;
|
|
}
|
|
|
|
/**
|
|
* Check if current page is organizers page
|
|
*
|
|
* @return bool
|
|
*/
|
|
private function is_organizers_page() {
|
|
return is_page('trainer-organizers-list') ||
|
|
is_page('trainer/organizer/list') ||
|
|
is_page('trainer-organizer-manage') ||
|
|
is_page('trainer/organizer/manage') ||
|
|
strpos($_SERVER['REQUEST_URI'], 'organizer') !== false;
|
|
}
|
|
|
|
/**
|
|
* Check if current page is venues page
|
|
*
|
|
* @return bool
|
|
*/
|
|
private function is_venues_page() {
|
|
return is_page('trainer-venues-list') ||
|
|
is_page('trainer/venue/list') ||
|
|
is_page('trainer-venue-manage') ||
|
|
is_page('trainer/venue/manage') ||
|
|
strpos($_SERVER['REQUEST_URI'], 'venue') !== false;
|
|
}
|
|
|
|
/**
|
|
* Check if current page is a trainer profile page
|
|
*
|
|
* @return bool
|
|
*/
|
|
private function is_trainer_profile_page() {
|
|
return is_page('trainer/profile') ||
|
|
is_page('trainer/profile/edit') ||
|
|
is_page('trainer/my-profile') ||
|
|
strpos($_SERVER['REQUEST_URI'], '/trainer/profile') !== false;
|
|
}
|
|
|
|
/**
|
|
* Check if current page is the find-a-trainer page
|
|
*
|
|
* @return bool
|
|
*/
|
|
private function is_find_trainer_page() {
|
|
return is_page('find-a-trainer') ||
|
|
strpos($_SERVER['REQUEST_URI'], 'find-a-trainer') !== false;
|
|
}
|
|
|
|
/**
|
|
* Get script version with cache busting
|
|
*
|
|
* @param string $file File path
|
|
* @return string
|
|
*/
|
|
public function get_asset_version($file = '') {
|
|
// In development, use file modification time
|
|
if (defined('WP_DEBUG') && WP_DEBUG && $file) {
|
|
$file_path = HVAC_PLUGIN_DIR . $file;
|
|
if (file_exists($file_path)) {
|
|
return filemtime($file_path);
|
|
}
|
|
}
|
|
|
|
return $this->version;
|
|
}
|
|
|
|
/**
|
|
* Localize sharing data for profile pages
|
|
*
|
|
* @param array $data Sharing data to localize
|
|
* @return void
|
|
*/
|
|
public function localize_sharing_data($data) {
|
|
if ($this->is_trainer_profile_page() && wp_script_is('hvac-profile-sharing', 'enqueued')) {
|
|
wp_localize_script('hvac-profile-sharing', 'hvac_sharing_data', $data);
|
|
}
|
|
}
|
|
} |