22
33namespace Eclipse \Core \Providers ;
44
5- use Astrotomic \Translatable \Translatable ;
65use BezhanSalleh \FilamentLanguageSwitch \LanguageSwitch ;
76use BezhanSalleh \FilamentShield \Facades \FilamentShield ;
87use BezhanSalleh \FilamentShield \FilamentShieldPlugin ;
98use BezhanSalleh \FilamentShield \Middleware \SyncShieldTenant ;
10- use CactusGalaxy \FilamentAstrotomic \FilamentAstrotomicTranslatablePlugin ;
119use DutchCodingCompany \FilamentDeveloperLogins \FilamentDeveloperLoginsPlugin ;
1210use Eclipse \Core \Filament \Pages \EditProfile ;
1311use Eclipse \Core \Http \Middleware \SetupPanel ;
1715use Eclipse \Core \Models \User \Permission ;
1816use Eclipse \Core \Models \User \Role ;
1917use Eclipse \Core \Policies \User \RolePolicy ;
18+ use Eclipse \Core \Services \PluginRegistry ;
2019use Eclipse \World \EclipseWorld ;
2120use Filament \Http \Middleware \Authenticate ;
2221use Filament \Http \Middleware \DisableBladeIconComponents ;
3130use Filament \Support \Enums \MaxWidth ;
3231use Filament \Support \Enums \Platform ;
3332use Filament \Support \Facades \FilamentView ;
34- use Filament \Tables ;
33+ use Filament \Tables \ Columns \ Column ;
3534use Filament \Widgets ;
3635use Illuminate \Cookie \Middleware \AddQueuedCookiesToResponse ;
3736use Illuminate \Cookie \Middleware \EncryptCookies ;
38- use Illuminate \Database \Eloquent \Builder ;
3937use Illuminate \Foundation \Http \Middleware \VerifyCsrfToken ;
4038use Illuminate \Routing \Middleware \SubstituteBindings ;
4139use Illuminate \Session \Middleware \AuthenticateSession ;
4240use Illuminate \Session \Middleware \StartSession ;
4341use Illuminate \Support \Facades \Blade ;
4442use Illuminate \Support \Facades \Config ;
4543use Illuminate \Support \Facades \Gate ;
46- use Illuminate \Support \Str ;
4744use Illuminate \View \Middleware \ShareErrorsFromSession ;
4845use pxlrbt \FilamentEnvironmentIndicator \EnvironmentIndicatorPlugin ;
4946
@@ -53,7 +50,7 @@ public function panel(Panel $panel): Panel
5350 {
5451 $ package_src = __DIR__ .'/../../src/ ' ;
5552
56- return $ panel
53+ $ panel
5754 ->default ()
5855 ->id ('admin ' )
5956 ->path ('admin ' )
@@ -115,7 +112,6 @@ public function panel(Panel $panel): Panel
115112 ->enabled (app ()->isLocal ())
116113 ->modelClass (User::class)
117114 ->users (config ('eclipse.developer_logins ' ) ?: []),
118- FilamentAstrotomicTranslatablePlugin::make (),
119115 EclipseWorld::make (),
120116 ])
121117 ->navigationGroups ([
@@ -138,13 +134,24 @@ public function panel(Panel $panel): Panel
138134 // Always visible for local env, otherwise the viewHorizon permission is required
139135 ->visible (fn (User $ user ): bool => app ()->isLocal () || $ user ->can ('viewHorizon ' )),
140136 ]);
137+
138+ // Add plugins from the plugin registry
139+ foreach (app (PluginRegistry::class)->getPlugins () as $ plugin ) {
140+ $ panel ->plugin ($ plugin )->getPlugin ();
141+ }
142+
143+ return $ panel ;
141144 }
142145
143146 public function register (): void
144147 {
145148 parent ::register ();
146149
147150 FilamentView::registerRenderHook ('panels::body.end ' , fn (): string => Blade::render ("@vite('resources/js/app.js') " ));
151+
152+ $ this ->app ->singleton (PluginRegistry::class, function () {
153+ return new PluginRegistry ;
154+ });
148155 }
149156
150157 /**
@@ -163,28 +170,19 @@ public function boot(): void
163170 ->setPermissionClass (Permission::class)
164171 ->setRoleClass (Role::class);
165172
173+ // Set common settings for Filament table columns
174+ Column::configureUsing (function (Column $ column ) {
175+ $ column
176+ ->toggleable ()
177+ ->sortable ();
178+ });
179+
166180 // Prohibit Filament Shield's destructive commands in production
167181 FilamentShield::prohibitDestructiveCommands ($ this ->app ->isProduction ());
168182
169183 // Load customized translations for Filament Shield
170184 $ this ->loadTranslationsFrom (__DIR__ .'/../../resources/lang/vendor/filament-shield ' , 'filament-shield ' );
171185
172- // Configure search for translatable model attributes
173- Tables \Columns \TextColumn::configureUsing (function (Tables \Columns \TextColumn $ column ): void {
174- if (Str::match ('@^translations?\.(\w+)$@ ' , $ column ->getName ())) {
175- $ column
176- ->searchable (query: function (Builder $ query , string $ search ) use ($ column ): Builder {
177- $ columnName = Str::after ($ column ->getName (), '. ' );
178- if ($ query ->hasNamedScope ('whereTranslationLike ' )) {
179- /* @var Translatable $query */
180- return $ query ->whereTranslationLike ($ columnName , "% {$ search }% " );
181- }
182-
183- return $ query ->where ($ columnName , 'like ' , "% {$ search }% " );
184- });
185- }
186- });
187-
188186 // Configure language switcher
189187 LanguageSwitch::configureUsing (function (LanguageSwitch $ switch ) {
190188 $ availableLocales = Locale::getAvailableLocales ();
0 commit comments