22
33namespace SolutionForest \InspireCms \Base \Filament \RelationManagers ;
44
5+ use Filament \Actions \Action ;
56use Filament \Actions \CreateAction ;
67use Filament \Actions \EditAction ;
8+ use Filament \Actions \ViewAction ;
79use Filament \Resources \RelationManagers \RelationManager ;
810use Filament \Schemas \Schema ;
911use Filament \Tables \Table ;
@@ -32,7 +34,9 @@ public function table(Table $table): Table
3234 ->pluralModelLabel (lcfirst (__ ('inspirecms::inspirecms.children.plural ' )))
3335 ->emptyStateHeading (null )
3436 ->headerActions ([
35- CreateAction::make (),
37+ CreateAction::make ()
38+ ->slideOver ()
39+ ->modalWidth ('7xl ' ),
3640 ]);
3741 }
3842
@@ -41,44 +45,55 @@ public static function getTitle(Model $ownerRecord, string $pageClass): string
4145 return __ ('inspirecms::inspirecms.children.plural ' );
4246 }
4347
44- protected function configureCreateAction ( CreateAction $ action ): void
48+ public function getDefaultActionUrl ( Action $ action ): ? string
4549 {
46- parent :: configureCreateAction ( $ action );
50+ $ relatedResource = static :: getRelatedResource () ?? $ this -> getPageClass ():: getResource ( );
4751
48- if ($ this ->isRedirectToCreatePage ()) {
52+ if (! $ relatedResource ) {
53+ return null ;
54+ }
4955
50- $ resource = $ this ->getPageClass ()::getResource ();
56+ if (
57+ ($ action instanceof CreateAction)
58+ ) {
5159
52- $ parameters = [ ' parent ' => $ this ->getOwnerRecord ()-> getKey ()];
60+ if ( $ this ->isRedirectToCreatePage ()) {
5361
54- $ url = FilamentResourceHelper:: attemptToGetUrl ( $ resource , [ ' create ' ], $ parameters , false ) ;
62+ $ parameters = [ ' parent ' => $ this -> getOwnerRecord ()-> getKey ()] ;
5563
56- if ($ url ) {
57- $ action ->url ($ url );
64+ return FilamentResourceHelper::attemptToGetUrl ($ relatedResource , ['create ' ], $ parameters , false );
5865 }
5966
67+ if ($ relatedResource ::hasPage ('create ' )) {
68+ return $ relatedResource ::getUrl ('create ' , shouldGuessMissingParameters: true );
69+ }
6070 }
6171
62- $ action
63- ->slideOver ()
64- ->modalWidth ('7xl ' );
65- }
66-
67- protected function configureEditAction (EditAction $ action ): void
68- {
69- parent ::configureEditAction ($ action );
72+ if ($ action instanceof EditAction) {
73+
74+ if ($ this ->isRedirectToDetailPage ()) {
75+ return FilamentResourceHelper::attemptToGetUrl ($ relatedResource , 'edit ' , ['record ' => $ action ->getRecord ()], false );
76+ } elseif ($ relatedResource ::hasPage ('edit ' )) {
77+ return $ relatedResource ::getUrl ('edit ' , ['record ' => $ action ->getRecord ()], shouldGuessMissingParameters: true );
78+ }
7079
71- if ($ this ->isRedirectToDetailPage ()) {
72- $ resource = $ this ->getPageClass ()::getResource ();
80+ }
7381
74- $ action ->url (
75- fn ($ record ) => FilamentResourceHelper::attemptToGetUrl ($ resource , 'edit ' , ['record ' => $ record ], false )
76- );
82+ // if (
83+ // ($action instanceof EditAction) &&
84+ // ($relatedResource::hasPage('edit'))
85+ // ) {
86+ // return $relatedResource::getUrl('edit', ['record' => $action->getRecord()], shouldGuessMissingParameters: true);
87+ // }
88+
89+ if (
90+ ($ action instanceof ViewAction) &&
91+ ($ relatedResource ::hasPage ('view ' ))
92+ ) {
93+ return $ relatedResource ::getUrl ('view ' , ['record ' => $ action ->getRecord ()], shouldGuessMissingParameters: true );
7794 }
7895
79- $ action
80- ->slideOver ()
81- ->modalWidth ('7xl ' );
96+ return null ;
8297 }
8398
8499 protected function isRedirectToDetailPage (): bool
0 commit comments