@php $serverRouteParameters = ['server_uuid' => $server->uuid]; $serverPageItems = [ [ 'label' => 'Configuration', 'route' => 'server.show', 'active' => request()->routeIs('server.show', 'server.advanced', 'server.private-key', 'server.cloud-provider-token', 'server.ca-certificate', 'server.cloudflare-tunnel', 'server.docker-cleanup', 'server.destinations', 'server.log-drains', 'server.metrics', 'server.swarm', 'server.delete'), ], [ 'label' => 'Proxy', 'route' => 'server.proxy', 'active' => request()->routeIs('server.proxy', 'server.proxy.*'), 'visible' => ! $server->isSwarmWorker() && ! $server->settings->is_build_server, ], [ 'label' => 'Sentinel', 'route' => 'server.sentinel', 'active' => request()->routeIs('server.sentinel', 'server.sentinel.*'), 'visible' => $server->isFunctional() && ! $server->isSwarm() && ! $server->settings->is_build_server && auth()->user()?->can('viewSentinel', $server), ], [ 'label' => 'Resources', 'route' => 'server.resources', 'active' => request()->routeIs('server.resources'), ], [ 'label' => 'Terminal', 'route' => 'server.command', 'active' => request()->routeIs('server.command'), 'navigate' => false, 'visible' => auth()->user()?->can('canAccessTerminal'), ], [ 'label' => 'Security', 'route' => 'server.security.patches', 'active' => request()->routeIs('server.security.patches'), 'visible' => auth()->user()?->can('update', $server), ], ]; $serverMenuItems = [ [ 'label' => 'General', 'route' => 'server.show', 'active' => $activeMenu === 'general', ], [ 'label' => 'Advanced', 'route' => 'server.advanced', 'active' => $activeMenu === 'advanced', 'visible' => $server->isFunctional(), ], [ 'label' => 'Private Key', 'route' => 'server.private-key', 'active' => $activeMenu === 'private-key', ], [ 'label' => 'Cloud Token', 'route' => 'server.cloud-provider-token', 'active' => $activeMenu === 'cloud-provider-token', 'visible' => (bool) ($server->hetzner_server_id || $server->vultr_instance_id), ], [ 'label' => 'CA Certificate', 'route' => 'server.ca-certificate', 'active' => $activeMenu === 'ca-certificate', ], [ 'label' => 'Cloudflare Tunnel', 'route' => 'server.cloudflare-tunnel', 'active' => $activeMenu === 'cloudflare-tunnel', 'visible' => ! $server->isLocalhost(), ], [ 'label' => 'Docker Cleanup', 'route' => 'server.docker-cleanup', 'active' => $activeMenu === 'docker-cleanup', 'visible' => $server->isFunctional(), ], [ 'label' => 'Destinations', 'route' => 'server.destinations', 'active' => $activeMenu === 'destinations', 'visible' => $server->isFunctional(), ], [ 'label' => 'Log Drains', 'route' => 'server.log-drains', 'active' => $activeMenu === 'log-drains', 'visible' => $server->isFunctional(), ], [ 'label' => 'Metrics', 'route' => 'server.metrics', 'active' => $activeMenu === 'metrics', 'visible' => $server->isFunctional(), ], [ 'label' => 'Swarm', 'route' => 'server.swarm', 'active' => $activeMenu === 'swarm', 'visible' => ! $server->isBuildServer() && ! $server->settings->is_cloudflare_tunnel, ], [ 'label' => 'Danger', 'route' => 'server.delete', 'active' => $activeMenu === 'danger', 'visible' => ! $server->isLocalhost(), ], ]; $serverPageItems = array_values(array_filter( $serverPageItems, fn (array $item): bool => $item['visible'] ?? true, )); $serverMenuItems = array_values(array_filter( $serverMenuItems, fn (array $item): bool => $item['visible'] ?? true, )); $activeServerMenuItem = collect($serverMenuItems)->firstWhere('active', true); $activeServerPageItem = collect($serverPageItems)->firstWhere('active', true); $activeServerMobileItem = $activeServerMenuItem ?? $activeServerPageItem ?? $serverMenuItems[0]; $activeServerMobileGroup = $activeServerMenuItem ? 'configuration' : 'server'; $activeServerMobileNavigation = ($activeServerMobileItem['navigate'] ?? true) ? 'navigate' : 'location'; $activeServerMenuValue = $activeServerMobileNavigation.'|'.$activeServerMobileGroup.'|'.route($activeServerMobileItem['route'], $serverRouteParameters); @endphp