version = HVAC_PLUGIN_VERSION; $this->init_hooks(); } /** * Initialize hooks * * @return void */ private function init_hooks() { // Frontend scripts and styles add_action('wp_enqueue_scripts', array($this, 'enqueue_frontend_assets')); // 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 frontend assets * * @return void */ public function enqueue_frontend_assets() { // Only enqueue on plugin pages if (!$this->is_plugin_page()) { return; } // Main plugin styles wp_enqueue_style( 'hvac-community-events', HVAC_PLUGIN_URL . 'assets/css/hvac-community-events.css', array(), $this->version ); // 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 ); } // Main plugin scripts wp_enqueue_script( 'hvac-community-events', HVAC_PLUGIN_URL . 'assets/js/hvac-community-events.js', array('jquery'), $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', HVAC_PLUGIN_URL . 'assets/js/hvac-registration.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 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'), ), )); } } /** * 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 using template loader if available if (class_exists('HVAC_Template_Loader')) { return HVAC_Template_Loader::is_plugin_template(); } // Fallback: check URL path $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', ); 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() { return is_page('trainer-dashboard') || is_page('master-dashboard') || is_page('hvac-dashboard') || is_page('trainer/dashboard') || is_page('master-trainer/dashboard'); } /** * 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 custom login page * * @return bool */ private function is_custom_login_page() { return is_page('training-login') || is_page('community-login') || is_page('trainer/login'); } /** * 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; } }