diff --git a/app/Filament/Resources/TenantFeedbackResource.php b/app/Filament/Resources/TenantFeedbackResource.php index b7c9a495..e5f96f23 100644 --- a/app/Filament/Resources/TenantFeedbackResource.php +++ b/app/Filament/Resources/TenantFeedbackResource.php @@ -56,7 +56,7 @@ class TenantFeedbackResource extends Resource public static function getNavigationGroup(): UnitEnum|string|null { - return __('admin.nav.feedback_support'); + return __('admin.nav.infrastructure'); } public static function getEloquentQuery(): Builder diff --git a/app/Filament/SuperAdmin/Pages/InternalDocsPage.php b/app/Filament/SuperAdmin/Pages/InternalDocsPage.php new file mode 100644 index 00000000..9a2ef282 --- /dev/null +++ b/app/Filament/SuperAdmin/Pages/InternalDocsPage.php @@ -0,0 +1,42 @@ +knowledgeBasePath(); + return $panel ->id('superadmin-kb') ->path('super-admin/docs') ->viteTheme('resources/css/filament/superadmin-kb/theme.css') ->plugins([ - KnowledgeBasePlugin::make(base_path('docs/superadmin-kb')), + KnowledgeBasePlugin::make($knowledgeBasePath), ]) ->login(Login::class) ->profile(EditProfile::class, isSimple: false) @@ -47,4 +49,11 @@ class SuperAdminKbPanelProvider extends PanelProvider ]) ->authGuard('super_admin'); } + + protected function knowledgeBasePath(): string + { + $path = realpath(base_path('docs/superadmin-kb')) ?: base_path('docs/superadmin-kb'); + + return str_replace(['\\', '/'], DIRECTORY_SEPARATOR, $path); + } } diff --git a/app/Providers/Filament/SuperAdminPanelProvider.php b/app/Providers/Filament/SuperAdminPanelProvider.php index 114ba30c..ec7679e9 100644 --- a/app/Providers/Filament/SuperAdminPanelProvider.php +++ b/app/Providers/Filament/SuperAdminPanelProvider.php @@ -50,8 +50,7 @@ class SuperAdminPanelProvider extends PanelProvider ->navigationSort(20), KnowledgeBaseCompanionPlugin::make() ->knowledgeBasePanelId('superadmin-kb') - ->helpMenuRenderHook(PanelsRenderHook::TOPBAR_START) - ->disableKnowledgeBasePanelButton(), + ->helpMenuRenderHook(PanelsRenderHook::TOPBAR_START), ]) ->navigationGroups([ NavigationGroup::make() @@ -62,8 +61,6 @@ class SuperAdminPanelProvider extends PanelProvider ->label(__('admin.nav.tenants')), NavigationGroup::make() ->label(__('admin.nav.billing')), - NavigationGroup::make() - ->label(__('admin.nav.feedback_support')), NavigationGroup::make() ->label(__('admin.nav.platform')), NavigationGroup::make() diff --git a/docs/superadmin-kb/de/01-grundlagen.md b/docs/superadmin-kb/de/01-grundlagen.md index 45edfa01..7cae634e 100644 --- a/docs/superadmin-kb/de/01-grundlagen.md +++ b/docs/superadmin-kb/de/01-grundlagen.md @@ -2,5 +2,4 @@ title: Grundlagen type: group order: 10 -icon: heroicon-o-book-open --- diff --git a/docs/superadmin-kb/de/02-incidents-dr.md b/docs/superadmin-kb/de/02-incidents-dr.md index 1ccef404..774221f3 100644 --- a/docs/superadmin-kb/de/02-incidents-dr.md +++ b/docs/superadmin-kb/de/02-incidents-dr.md @@ -2,5 +2,4 @@ title: Incidents & DR type: group order: 20 -icon: heroicon-o-exclamation-triangle --- diff --git a/docs/superadmin-kb/de/03-medien-upload.md b/docs/superadmin-kb/de/03-medien-upload.md index bf553641..a964ac7b 100644 --- a/docs/superadmin-kb/de/03-medien-upload.md +++ b/docs/superadmin-kb/de/03-medien-upload.md @@ -2,5 +2,4 @@ title: Medien & Upload type: group order: 30 -icon: heroicon-o-cloud-arrow-up --- diff --git a/docs/superadmin-kb/de/04-photobooth.md b/docs/superadmin-kb/de/04-photobooth.md index 5bfebd23..6c97fede 100644 --- a/docs/superadmin-kb/de/04-photobooth.md +++ b/docs/superadmin-kb/de/04-photobooth.md @@ -2,5 +2,4 @@ title: Photobooth type: group order: 40 -icon: heroicon-o-camera --- diff --git a/docs/superadmin-kb/de/05-billing.md b/docs/superadmin-kb/de/05-billing.md index cb0fc75c..4646b59f 100644 --- a/docs/superadmin-kb/de/05-billing.md +++ b/docs/superadmin-kb/de/05-billing.md @@ -2,5 +2,4 @@ title: Billing type: group order: 50 -icon: heroicon-o-credit-card --- diff --git a/docs/superadmin-kb/de/06-ai-operations.md b/docs/superadmin-kb/de/06-ai-operations.md index a28a7bca..61fe140b 100644 --- a/docs/superadmin-kb/de/06-ai-operations.md +++ b/docs/superadmin-kb/de/06-ai-operations.md @@ -2,5 +2,4 @@ title: AI Operations type: group order: 60 -icon: heroicon-o-sparkles --- diff --git a/docs/superadmin-kb/de/07-dsgvo-compliance.md b/docs/superadmin-kb/de/07-dsgvo-compliance.md index 976f7f05..26260a0e 100644 --- a/docs/superadmin-kb/de/07-dsgvo-compliance.md +++ b/docs/superadmin-kb/de/07-dsgvo-compliance.md @@ -2,5 +2,4 @@ title: DSGVO & Compliance type: group order: 70 -icon: heroicon-o-shield-check --- diff --git a/docs/superadmin-kb/de/08-deployment.md b/docs/superadmin-kb/de/08-deployment.md index 39aedb92..9496354d 100644 --- a/docs/superadmin-kb/de/08-deployment.md +++ b/docs/superadmin-kb/de/08-deployment.md @@ -2,5 +2,4 @@ title: Deployment type: group order: 80 -icon: heroicon-o-server-stack --- diff --git a/docs/superadmin-kb/de/09-releases-tests.md b/docs/superadmin-kb/de/09-releases-tests.md index b3b16e65..143de1a5 100644 --- a/docs/superadmin-kb/de/09-releases-tests.md +++ b/docs/superadmin-kb/de/09-releases-tests.md @@ -2,5 +2,4 @@ title: Releases & Tests type: group order: 90 -icon: heroicon-o-rocket-launch --- diff --git a/docs/superadmin-kb/de/10-monitoring-diagramme.md b/docs/superadmin-kb/de/10-monitoring-diagramme.md index 290de1d2..373d298d 100644 --- a/docs/superadmin-kb/de/10-monitoring-diagramme.md +++ b/docs/superadmin-kb/de/10-monitoring-diagramme.md @@ -2,5 +2,4 @@ title: Monitoring & Diagramme type: group order: 100 -icon: heroicon-o-chart-bar --- diff --git a/resources/lang/de/admin.php b/resources/lang/de/admin.php index fc6d8411..544c2062 100644 --- a/resources/lang/de/admin.php +++ b/resources/lang/de/admin.php @@ -20,6 +20,7 @@ return [ 'infrastructure' => 'Infrastruktur', 'storage' => 'Speicher', 'feedback_support' => 'Feedback & Support', + 'internal_docs' => 'Interne Doku', 'branding' => 'Branding', 'security' => 'Sicherheit', ], diff --git a/resources/lang/en/admin.php b/resources/lang/en/admin.php index 1b43bbe0..59e026ab 100644 --- a/resources/lang/en/admin.php +++ b/resources/lang/en/admin.php @@ -20,6 +20,7 @@ return [ 'infrastructure' => 'Infrastructure', 'storage' => 'Storage', 'feedback_support' => 'Feedback & Support', + 'internal_docs' => 'Internal Docs', 'branding' => 'Branding', 'security' => 'Security', ], diff --git a/tests/Feature/Auth/UserRoleAccessTest.php b/tests/Feature/Auth/UserRoleAccessTest.php index 06ea52c7..1d6f6dc9 100644 --- a/tests/Feature/Auth/UserRoleAccessTest.php +++ b/tests/Feature/Auth/UserRoleAccessTest.php @@ -89,6 +89,20 @@ class UserRoleAccessTest extends TestCase $this->assertStringStartsWith('/super-admin/docs', (string) $redirectPath); } + public function test_super_admin_docs_panel_page_renders_after_redirect(): void + { + $user = User::factory()->create(['role' => 'super_admin']); + + $response = $this + ->followingRedirects() + ->actingAs($user, 'super_admin') + ->get('/super-admin/docs'); + + $response + ->assertOk() + ->assertSee('Grundlagen'); + } + public function test_non_super_admin_cannot_access_super_admin_docs_panel(): void { $user = User::factory()->create(['role' => 'tenant_admin']); diff --git a/tests/Unit/SuperAdminNavigationGroupsTest.php b/tests/Unit/SuperAdminNavigationGroupsTest.php index 5563a7c7..fe432c31 100644 --- a/tests/Unit/SuperAdminNavigationGroupsTest.php +++ b/tests/Unit/SuperAdminNavigationGroupsTest.php @@ -39,10 +39,11 @@ class SuperAdminNavigationGroupsTest extends TestCase \App\Filament\Resources\TenantPackageResource::class => 'admin.nav.commercial', \App\Filament\Resources\Coupons\CouponResource::class => 'admin.nav.commercial', \App\Filament\Resources\GiftVoucherResource::class => 'admin.nav.commercial', - \App\Filament\Resources\TenantFeedbackResource::class => 'admin.nav.feedback_support', + \App\Filament\Resources\TenantFeedbackResource::class => 'admin.nav.infrastructure', \App\Filament\Resources\InfrastructureActionLogs\InfrastructureActionLogResource::class => 'admin.nav.infrastructure', \App\Filament\SuperAdmin\Pages\WatermarkSettingsPage::class => 'admin.nav.branding', \App\Filament\SuperAdmin\Pages\DokployDeployments::class => 'admin.nav.infrastructure', + \App\Filament\SuperAdmin\Pages\InternalDocsPage::class => 'admin.nav.infrastructure', \App\Filament\SuperAdmin\Pages\OpsHealthDashboard::class => 'admin.nav.infrastructure', \App\Filament\SuperAdmin\Pages\IntegrationsHealthDashboard::class => 'admin.nav.infrastructure', \App\Filament\Clusters\DailyOps\Pages\JoinTokenAnalyticsDashboard::class => 'admin.nav.security', @@ -82,6 +83,7 @@ class SuperAdminNavigationGroupsTest extends TestCase \App\Filament\Blog\Resources\CategoryResource::class => RareAdminCluster::class, \App\Filament\SuperAdmin\Pages\WatermarkSettingsPage::class => RareAdminCluster::class, \App\Filament\SuperAdmin\Pages\DokployDeployments::class => RareAdminCluster::class, + \App\Filament\SuperAdmin\Pages\InternalDocsPage::class => RareAdminCluster::class, ]; foreach ($clusterExpectations as $resourceClass => $clusterClass) { @@ -100,4 +102,12 @@ class SuperAdminNavigationGroupsTest extends TestCase $this->assertTrue($panel->hasTopNavigation()); } + + public function test_internal_docs_page_navigation_url_points_to_knowledge_base_panel(): void + { + $this->assertSame( + url('/super-admin/docs'), + \App\Filament\SuperAdmin\Pages\InternalDocsPage::getNavigationUrl() + ); + } }