AdminPanelProvider.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace App\Providers\Filament;
  3. use App\Filament\Pages\Integrations\KnowledgeGraphExplorer;
  4. use App\Filament\Pages\KnowledgePoints;
  5. use App\Filament\Pages\KnowledgeGraphManagement;
  6. use App\Filament\Pages\MistakeBook;
  7. use App\Filament\Pages\QuestionManagement;
  8. use App\Filament\Pages\PromptManagement;
  9. use App\Filament\Pages\RecommendationList;
  10. use App\Filament\Pages\StudentDashboard;
  11. use App\Filament\Pages\StudentManagement;
  12. use App\Filament\Pages\StudentManagementQuickAccess;
  13. use App\Filament\Pages\TextbookImport\TextbookExcelImportPage;
  14. use App\Filament\Widgets\DashboardQuickLinks;
  15. use Filament\Http\Middleware\Authenticate;
  16. use Filament\Http\Middleware\AuthenticateSession;
  17. use Filament\Http\Middleware\DisableBladeIconComponents;
  18. use Filament\Http\Middleware\DispatchServingFilamentEvent;
  19. use Filament\Pages\Dashboard;
  20. use Filament\Panel;
  21. use Filament\PanelProvider;
  22. use App\Filament\Auth\Pages\CustomLogin;
  23. use Filament\Support\Colors\Color;
  24. use Filament\Widgets\AccountWidget;
  25. use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
  26. use Illuminate\Cookie\Middleware\EncryptCookies;
  27. use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
  28. use Illuminate\Routing\Middleware\SubstituteBindings;
  29. use Illuminate\Session\Middleware\StartSession;
  30. use Illuminate\View\Middleware\ShareErrorsFromSession;
  31. use Filament\Support\Facades\FilamentView;
  32. class AdminPanelProvider extends PanelProvider
  33. {
  34. public function panel(Panel $panel): Panel
  35. {
  36. return $panel
  37. ->default()
  38. ->id('admin')
  39. ->path('admin')
  40. ->login(CustomLogin::class)
  41. ->colors([
  42. 'primary' => Color::hex('#0ea5e9'), // 使用DaisyUI的primary色
  43. 'gray' => Color::hex('#6b7280'),
  44. 'warning' => Color::hex('#f59e0b'),
  45. 'success' => Color::hex('#10b981'),
  46. 'danger' => Color::hex('#ef4444'),
  47. ])
  48. ->defaultAvatarProvider(\App\Providers\Filament\AvatarProviders\DiceBearAvatarProvider::class)
  49. ->darkMode(false) // 默认使用浅色模式,保留DaisyUI主题
  50. ->discoverResources(in: app_path('Filament/Resources'), for: 'App\Filament\Resources')
  51. ->discoverPages(in: app_path('Filament/Pages'), for: 'App\Filament\Pages')
  52. ->pages([
  53. Dashboard::class,
  54. StudentManagement::class,
  55. StudentDashboard::class,
  56. MistakeBook::class,
  57. StudentManagementQuickAccess::class,
  58. KnowledgePoints::class,
  59. KnowledgeGraphManagement::class,
  60. QuestionManagement::class,
  61. PromptManagement::class,
  62. RecommendationList::class,
  63. KnowledgeGraphExplorer::class,
  64. TextbookExcelImportPage::class,
  65. ])
  66. ->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\Filament\Widgets')
  67. ->widgets([
  68. DashboardQuickLinks::class,
  69. AccountWidget::class,
  70. ])
  71. ->renderHook('panels::head.end', fn (): string =>
  72. view('filament.layout.vite-styles')->render() . view('filament.layout.vite-scripts')->render()
  73. )
  74. ->renderHook('global::head.start', fn (): string => view('filament.layout.vite-styles')->render())
  75. ->renderHook('panels::body.end', fn (): string => view('filament.layout.math-renderer')->render())
  76. ->renderHook(
  77. 'panels::page.header.actions.after',
  78. fn () => view('filament.components.menu-visibility-toggle')
  79. )
  80. ->navigationGroups([
  81. '教材管理',
  82. '卷子导入流程',
  83. '知识图谱管理',
  84. '题库管理',
  85. '卷子生成管理',
  86. '学生管理',
  87. 'API 管理',
  88. '其他',
  89. ])
  90. ->middleware([
  91. EncryptCookies::class,
  92. AddQueuedCookiesToResponse::class,
  93. StartSession::class,
  94. AuthenticateSession::class,
  95. ShareErrorsFromSession::class,
  96. VerifyCsrfToken::class,
  97. SubstituteBindings::class,
  98. DisableBladeIconComponents::class,
  99. DispatchServingFilamentEvent::class,
  100. ])
  101. ->authMiddleware([
  102. Authenticate::class,
  103. ]);
  104. }
  105. }