/** * Enqueue calendar assets with correct paths * This method should be in your LINS_Notary_Dashboard class */ public function enqueue_calendar_assets() { // Only load on pages with our shortcodes if ( ! is_user_logged_in() || ! current_user_can('notary') ) { return; } global $post; if ( ! $post || ( ! has_shortcode($post->post_content, 'notary_calendar') && ! has_shortcode($post->post_content, 'notary_dashboard') ) ) { return; } // Get the base plugin directory URL (one level up from includes/) // Since this file is in /includes/, we need to go up one level $plugin_url = plugin_dir_url( dirname(__FILE__) ); // This gets the parent directory $plugin_path = plugin_dir_path( dirname(__FILE__) ); // For filemtime // Enqueue dashboard CSS $css_file = $plugin_path . 'assets/css/lins-dashboard.css'; if ( file_exists($css_file) ) { wp_enqueue_style( 'usvn-dashboard', $plugin_url . 'assets/css/lins-dashboard.css', [], filemtime($css_file) ); } else { error_log('LINS Dashboard CSS not found at: ' . $css_file); } // Enqueue FullCalendar CSS wp_enqueue_style( 'fullcalendar-core', 'https://cdn.jsdelivr.net/npm/fullcalendar@6.1.8/main.min.css', [], '6.1.8' ); // Enqueue FullCalendar JS wp_enqueue_script( 'fullcalendar-core', 'https://cdn.jsdelivr.net/npm/fullcalendar@6.1.8/main.min.js', ['jquery'], '6.1.8', true ); // Enqueue calendar initializer JS $js_file = $plugin_path . 'assets/js/lins-calendar.js'; if ( file_exists($js_file) ) { wp_enqueue_script( 'usvn-calendar', $plugin_url . 'assets/js/lins-calendar.js', ['fullcalendar-core', 'jquery'], filemtime($js_file), true ); // Pass event data to JavaScript wp_localize_script( 'usvn-calendar', 'USVN_CalendarData', [ 'events' => self::get_calendar_events_json(), 'ajaxurl' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('usvn_calendar_nonce') ] ); } else { error_log('LINS Calendar JS not found at: ' . $js_file); } }