@@ -50,6 +50,18 @@ public function booted(): void
5050 }
5151 }
5252
53+ public function mountTranslatable (): void
54+ {
55+ // Call trait implementation (if trait provides it)
56+ if (method_exists ($ this , 'traitMountTranslatable ' )) {
57+ $ this ->traitMountTranslatable ();
58+ }
59+ // Ensure query string param takes precedence if present
60+ if ($ locale = request ()->query ('activeLocale ' )) {
61+ $ this ->activeLocale = $ locale ;
62+ }
63+ }
64+
5365 protected function getHeaderActions (): array
5466 {
5567 return [
@@ -63,36 +75,36 @@ protected function getHeaderActions(): array
6375 ViewAction::make (),
6476
6577 DeleteAction::make ()
66- ->visible (fn (Model $ record ) => ! $ record ->isLocked ()),
78+ ->visible (fn (Model $ record ) => ! $ record ->isLocked ()),
6779
6880 RestoreAction::make (),
6981
7082 ForceDeleteAction::make (),
7183
7284 LockContentAction::make ()
73- ->successRedirectUrl (fn ($ record ) => $ this ->getUrl (array_merge (['record ' => $ record ], $ this ->getRedirectUrlParameters ()))),
85+ ->successRedirectUrl (fn ($ record ) => $ this ->getUrl (array_merge (['record ' => $ record ], $ this ->getRedirectUrlParameters ()))),
7486
7587 UnlockContentAction::make ()
76- ->successRedirectUrl (fn ($ record ) => $ this ->getUrl (array_merge (['record ' => $ record ], $ this ->getRedirectUrlParameters ()))),
88+ ->successRedirectUrl (fn ($ record ) => $ this ->getUrl (array_merge (['record ' => $ record ], $ this ->getRedirectUrlParameters ()))),
7789 ])
7890 ->dropdown (false )
79- ->hidden (fn (ActionGroup $ action ) => FilamentActionHelper::isAnyVisibleActionInActionGroup ($ action )),
91+ ->hidden (fn (ActionGroup $ action ) => FilamentActionHelper::isAnyVisibleActionInActionGroup ($ action )),
8092
8193 ActionGroup::make ([
8294 UpdateContentRouteAction::make (),
8395 ContentHistoryAction::make (),
8496 AdjustChildOrderAction::make ()
85- ->nodeParentId (fn (Content | Model $ record ) => $ record ->nestable_tree_id ?? ($ record ->nestableTree ?->getKey() ?? 0 ))
97+ ->nodeParentId (fn (Content | Model $ record ) => $ record ->nestable_tree_id ?? ($ record ->nestableTree ?->getKey() ?? 0 ))
8698 ->hidden (
87- fn (?Model $ record ) => ! $ record instanceof Content ||
88- $ record ->trashed ()
99+ fn (?Model $ record ) => ! $ record instanceof Content ||
100+ $ record ->trashed ()
89101 )
90102 ->successRedirectUrl (function ($ record ) {
91103 return $ this ->getUrl (['record ' => $ record , ...$ this ->getRedirectUrlParameters ()]);
92104 }),
93105 ])
94106 ->dropdown (false )
95- ->hidden (fn (ActionGroup $ action ) => FilamentActionHelper::isAnyVisibleActionInActionGroup ($ action )),
107+ ->hidden (fn (ActionGroup $ action ) => FilamentActionHelper::isAnyVisibleActionInActionGroup ($ action )),
96108 ]),
97109 ];
98110 }
@@ -132,7 +144,7 @@ protected function handleRecordUpdate(Model $record, array $data): Model
132144 $ record ->fill (Arr::except ($ data , $ translatableAttributes ));
133145
134146 $ currentFieldsForType = $ record instanceof Content
135- ? $ record ->documentType ?->fieldGroups->whereInstanceOf (FieldGroup::class)->mapWithKeys (fn (FieldGroup $ fg ) => [$ fg ->name => $ fg ->fields ->pluck ('name ' )->all ()])->all ()
147+ ? $ record ->documentType ?->fieldGroups->whereInstanceOf (FieldGroup::class)->mapWithKeys (fn (FieldGroup $ fg ) => [$ fg ->name => $ fg ->fields ->pluck ('name ' )->all ()])->all ()
136148 : [];
137149 // Limit the propertyData to the current fields for the type
138150 $ propertyData = Arr::only ($ data ['propertyData ' ] ?? [], array_keys ($ currentFieldsForType ));
@@ -151,14 +163,7 @@ protected function handleRecordUpdate(Model $record, array $data): Model
151163 $ record ->setTranslation ('propertyData ' , '' , $ propertyData );
152164
153165 foreach (Arr::only ($ data , $ translatableAttributes ) as $ key => $ value ) {
154- // Handle nested locale arrays (e.g., title.en, title.fr from Group with statePath)
155- if (is_array ($ value ) && $ key === 'title ' ) {
156- foreach ($ value as $ locale => $ localizedValue ) {
157- $ record ->setTranslation ($ key , $ locale , $ localizedValue );
158- }
159- } else {
160- $ record ->setTranslation ($ key , $ this ->activeLocale , $ value );
161- }
166+ $ record ->setTranslation ($ key , $ this ->activeLocale , $ value );
162167 }
163168
164169 $ originalData = $ this ->data ;
@@ -167,7 +172,7 @@ protected function handleRecordUpdate(Model $record, array $data): Model
167172
168173 foreach ($ this ->otherLocaleData as $ locale => $ localeData ) {
169174 $ existingLocales ??= collect ($ translatableAttributes )
170- ->map (fn (string $ attribute ): array => array_keys ($ record ->getTranslations ($ attribute )))
175+ ->map (fn (string $ attribute ): array => array_keys ($ record ->getTranslations ($ attribute )))
171176 ->flatten ()
172177 ->unique ()
173178 ->all ();
@@ -196,14 +201,7 @@ protected function handleRecordUpdate(Model $record, array $data): Model
196201 $ localeData = $ this ->mutateFormDataBeforeSave ($ localeData );
197202
198203 foreach (Arr::only ($ localeData , $ translatableAttributes ) as $ key => $ value ) {
199- // Handle nested locale arrays for otherLocaleData as well
200- if (is_array ($ value ) && $ key === 'title ' ) {
201- foreach ($ value as $ otherLoc => $ localizedValue ) {
202- $ record ->setTranslation ($ key , $ otherLoc , $ localizedValue );
203- }
204- } else {
205- $ record ->setTranslation ($ key , $ locale , $ value );
206- }
204+ $ record ->setTranslation ($ key , $ locale , $ value );
207205 }
208206 }
209207
0 commit comments