init_hooks(); } /** * Initialize hooks */ private function init_hooks() { add_action('wp_enqueue_scripts', array($this, 'enqueue_admin_assets')); } /** * Enqueue admin assets on master trainer pages */ public function enqueue_admin_assets() { // Only enqueue on master trainer announcement pages if ($this->is_master_trainer_announcement_page()) { // Enqueue admin JavaScript wp_enqueue_script( 'hvac-announcements-admin', plugin_dir_url(dirname(__FILE__)) . 'assets/js/hvac-announcements-admin.js', array('jquery', 'wp-editor'), defined('HVAC_VERSION') ? HVAC_VERSION : '1.0.0', true ); // 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_admin_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 * * @return bool */ private function is_master_trainer_announcement_page() { global $post; if (!is_a($post, 'WP_Post')) { return false; } // Check if user is master trainer if (!HVAC_Announcements_Permissions::is_master_trainer()) { return false; } // Check for announcement pages $announcement_slugs = array( 'master-announcements', 'master-manage-announcements' ); return in_array($post->post_name, $announcement_slugs); } /** * 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(); ?>