__('HVAC Trainer Navigation', 'hvac-community-events'), )); } /** * Setup trainer menu on appropriate pages */ public function setup_trainer_menu() { // Menu will be rendered directly in templates, not injected via JavaScript } /** * Check if current page is a trainer page */ private function is_trainer_page() { global $wp; $current_url = home_url(add_query_arg(array(), $wp->request)); return (strpos($current_url, '/trainer/') !== false || strpos($current_url, '/master-trainer/') !== false); } /** * Check if user can access trainer area */ private function user_can_access_trainer_area() { if (!is_user_logged_in()) { return false; } return current_user_can('hvac_trainer') || current_user_can('hvac_master_trainer') || current_user_can('manage_options'); } /** * Render the trainer menu */ public function render_trainer_menu() { if (!$this->user_can_access_trainer_area()) { return; } // Check if we're already showing a navigation menu if (defined('HVAC_NAV_RENDERED') && HVAC_NAV_RENDERED) { return; } // Mark that navigation has been rendered define('HVAC_NAV_RENDERED', true); $menu_items = $this->get_menu_structure(); echo '
'; } /** * Get menu structure based on user capabilities */ private function get_menu_structure() { $user = wp_get_current_user(); $is_master = in_array('hvac_master_trainer', $user->roles) || current_user_can('manage_options'); // If user has master trainer role, ALWAYS show master menu // This prevents duplicate navigation for dual-role users if ($is_master) { return $this->get_master_menu_structure(); } $menu = array( array( 'title' => 'Events', 'url' => '#', 'icon' => 'dashicons-calendar-alt', 'children' => array( array( 'title' => 'Dashboard', 'url' => home_url('/trainer/dashboard/'), 'icon' => 'dashicons-dashboard' ), array( 'title' => 'New Event', 'url' => home_url('/trainer/event/manage/'), 'icon' => 'dashicons-plus-alt' ) ) ), array( 'title' => 'Certificates', 'url' => '#', 'icon' => 'dashicons-awards', 'children' => array( array( 'title' => 'Reports', 'url' => home_url('/trainer/certificate-reports/'), 'icon' => 'dashicons-analytics' ), array( 'title' => 'New Certificate', 'url' => home_url('/trainer/generate-certificates/'), 'icon' => 'dashicons-plus-alt' ) ) ), array( 'title' => 'Customize', 'url' => '#', 'icon' => 'dashicons-admin-customizer', 'children' => array( array( 'title' => 'Personal Profile', 'url' => home_url('/trainer/profile/'), 'icon' => 'dashicons-admin-users' ), array( 'title' => 'Training Organizers', 'url' => home_url('/trainer/organizer/list/'), 'icon' => 'dashicons-groups', 'children' => array( array( 'title' => 'Add New Organizer', 'url' => home_url('/trainer/organizer/manage/'), 'icon' => 'dashicons-plus-alt' ) ) ), array( 'title' => 'Training Venues', 'url' => home_url('/trainer/venue/list/'), 'icon' => 'dashicons-location-alt', 'children' => array( array( 'title' => 'Add New Venue', 'url' => home_url('/trainer/venue/manage/'), 'icon' => 'dashicons-plus-alt' ) ) ) ) ), array( 'title' => 'Help', 'url' => home_url('/trainer/documentation/'), 'icon' => 'dashicons-sos' ) ); // Add Master Dashboard for qualified users if ($is_master) { array_splice($menu, 0, 0, array( array( 'title' => 'Master Dashboard', 'url' => home_url('/master-trainer/master-dashboard/'), 'icon' => 'dashicons-star-filled' ) )); } // Add logout as last item $menu[] = array( 'title' => 'Logout', 'url' => wp_logout_url(home_url('/training-login/')), 'icon' => 'dashicons-exit' ); return $menu; } /** * Get master trainer menu structure */ private function get_master_menu_structure() { $menu = array( array( 'title' => 'Master Dashboard', 'url' => home_url('/master-trainer/master-dashboard/'), 'icon' => 'dashicons-dashboard' ), array( 'title' => 'Trainer Dashboard', 'url' => home_url('/trainer/dashboard/'), 'icon' => 'dashicons-admin-home' ), array( 'title' => 'Events', 'url' => '#', 'icon' => 'dashicons-calendar-alt', 'children' => array( array( 'title' => 'All Events', 'url' => home_url('/master-trainer/events/'), 'icon' => 'dashicons-list-view' ), array( 'title' => 'Create Event', 'url' => home_url('/trainer/create-event/'), 'icon' => 'dashicons-plus-alt' ), array( 'title' => 'My Events', 'url' => home_url('/trainer/dashboard/'), 'icon' => 'dashicons-calendar' ) ) ), array( 'title' => 'Certificates', 'url' => '#', 'icon' => 'dashicons-awards', 'children' => array( array( 'title' => 'Certificate Reports', 'url' => home_url('/trainer/certificate-reports/'), 'icon' => 'dashicons-analytics' ), array( 'title' => 'Generate Certificates', 'url' => home_url('/trainer/generate-certificates/'), 'icon' => 'dashicons-media-document' ) ) ), array( 'title' => 'Profile', 'url' => home_url('/trainer/profile/'), 'icon' => 'dashicons-admin-users' ), array( 'title' => 'Logout', 'url' => wp_logout_url(home_url('/training-login/')), 'icon' => 'dashicons-exit' ) ); return $menu; } /** * Render individual menu item */ private function render_menu_item($item, $level = 0) { $has_children = !empty($item['children']); $icon = !empty($item['icon']) ? '' : ''; $classes = array('menu-item'); if ($has_children) { $classes[] = 'has-children'; } if ($level > 0) { $classes[] = 'sub-menu-item'; $classes[] = 'level-' . $level; } echo '