init_hooks(); HVAC_Logger::log('Hooks initialized successfully', 'Announcements Admin'); } /** * Initialize hooks */ private function init_hooks() { HVAC_Logger::log('Registering wp_enqueue_scripts hook with priority 20', 'Announcements Admin'); // Use priority 20 to ensure post object is available add_action('wp_enqueue_scripts', array($this, 'enqueue_admin_assets'), 20); HVAC_Logger::log('Hook registered successfully', 'Announcements Admin'); } /** * Enqueue admin assets on master trainer pages */ public function enqueue_admin_assets() { HVAC_Logger::log('enqueue_admin_assets called', 'Announcements Admin'); HVAC_Logger::log('is_master_trainer = ' . (HVAC_Announcements_Permissions::is_master_trainer() ? 'YES' : 'NO'), 'Announcements Admin'); HVAC_Logger::log('is_page_template check = ' . (is_page_template('page-master-announcements.php') ? 'YES' : 'NO'), 'Announcements Admin'); $queried = get_queried_object(); if ($queried) { HVAC_Logger::log('queried_object type = ' . get_class($queried), 'Announcements Admin'); if (is_a($queried, 'WP_Post')) { HVAC_Logger::log('post_name = ' . $queried->post_name, 'Announcements Admin'); HVAC_Logger::log('post_type = ' . $queried->post_type, 'Announcements Admin'); $template = get_post_meta($queried->ID, '_wp_page_template', true); HVAC_Logger::log('page_template meta = ' . $template, 'Announcements Admin'); } } // Only enqueue on master trainer announcement pages if ($this->is_master_trainer_announcement_page()) { HVAC_Logger::log('ENQUEUING SCRIPTS', 'Announcements Admin'); // Enqueue editor - dependencies handled automatically wp_enqueue_editor(); // Enqueue admin JavaScript - Load in footer after wp_editor inline scripts wp_enqueue_script( 'hvac-announcements-admin', plugin_dir_url(dirname(__FILE__)) . 'assets/js/hvac-announcements-admin.js', array('jquery', 'editor'), defined('HVAC_VERSION') ? HVAC_VERSION : '1.0.0', true // Load in footer after wp_editor inline scripts ); // Localize script with AJAX data wp_localize_script('hvac-announcements-admin', 'hvac_announcements', array( 'ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('hvac_announcements_nonce'), 'strings' => array( 'confirm_delete' => __('Are you sure you want to delete this announcement?', 'hvac'), 'error_loading' => __('Error loading announcements.', 'hvac'), 'error_saving' => __('Error saving announcement.', 'hvac'), 'success_deleted' => __('Announcement deleted successfully.', 'hvac'), ) )); // Enqueue WordPress media uploader wp_enqueue_media(); // Enqueue admin CSS wp_enqueue_style( 'hvac-announcements-admin', plugin_dir_url(dirname(__FILE__)) . 'assets/css/hvac-announcements-admin.css', array(), defined('HVAC_VERSION') ? HVAC_VERSION : '1.0.0' ); } } /** * Check if current page is master trainer announcement page * * Uses multi-layered detection approach for reliability during wp_enqueue_scripts * @see class-hvac-scripts-styles.php for pattern reference * * @return bool */ private function is_master_trainer_announcement_page() { // Check if user is master trainer first if (!HVAC_Announcements_Permissions::is_master_trainer()) { return false; } // PRIMARY: Check URL path (most reliable during wp_enqueue_scripts) $current_path = isset($_SERVER['REQUEST_URI']) ? trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/') : ''; $announcement_paths = array( 'master-trainer/announcements', 'master-trainer/master-announcements', 'master-trainer/manage-announcements' ); foreach ($announcement_paths as $path) { if (strpos($current_path, $path) !== false) { return true; } } // SECONDARY: Check page template (may not work during wp_enqueue_scripts) if (is_page_template('page-master-announcements.php')) { return true; } // TERTIARY: Check by page slug if (is_page('announcements') || is_page('master-announcements') || is_page('manage-announcements')) { return true; } // FALLBACK: Check queried object for announcement slugs $queried_object = get_queried_object(); if (is_a($queried_object, 'WP_Post')) { $announcement_slugs = array( 'announcements', 'master-announcements', 'master-manage-announcements', 'manage-announcements' ); return in_array($queried_object->post_name, $announcement_slugs); } return false; } /** * Render admin interface modal HTML * * @return string Modal HTML */ public function render_admin_interface() { // Check permissions if (!HVAC_Announcements_Permissions::is_master_trainer()) { return ''; } ob_start(); ?>
1 of 1