@@ -174,18 +174,31 @@ public function siteMenuItems(
174174
175175 $ totalSites += count ($ groupSites );
176176
177- $ groupSiteItems = $ groupSites ->map (fn (Site $ site ) => [
178- 'status ' => $ sites [$ site ->id ]['status ' ] ?? null ,
179- 'label ' => t ($ site ->getName (), category: 'site ' ),
180- 'url ' => Url::cpUrl ($ path , ['site ' => $ site ->handle ] + $ params ),
181- 'hidden ' => ! isset ($ sites [$ site ->id ]),
182- 'selected ' => $ site ->id === $ selectedSite ?->id,
183- 'attributes ' => [
184- 'data ' => [
185- 'site-id ' => $ site ->id ,
177+ $ groupSiteItems = $ groupSites ->map (function (Site $ site ) use ($ sites , $ path , $ params , $ selectedSite ) {
178+ if (isset ($ params ['returnUrl ' ])) {
179+ // swap the `site` param in the `returnUrl` URL too
180+ $ params ['returnUrl ' ] = str_replace (':QS: ' , '? ' , $ params ['returnUrl ' ], $ count );
181+ $ params ['returnUrl ' ] = Url::url ($ params ['returnUrl ' ], [
182+ 'site ' => $ site ->handle ,
183+ ]);
184+ if ($ count !== 0 ) {
185+ $ params ['returnUrl ' ] = str_replace ('? ' , ':QS: ' , $ params ['returnUrl ' ]);
186+ }
187+ }
188+
189+ return [
190+ 'status ' => $ sites [$ site ->id ]['status ' ] ?? null ,
191+ 'label ' => t ($ site ->getName (), category: 'site ' ),
192+ 'url ' => Url::cpUrl ($ path , ['site ' => $ site ->handle ] + $ params ),
193+ 'hidden ' => ! isset ($ sites [$ site ->id ]),
194+ 'selected ' => $ site ->id === $ selectedSite ?->id,
195+ 'attributes ' => [
196+ 'data ' => [
197+ 'site-id ' => $ site ->id ,
198+ ],
186199 ],
187- ],
188- ] );
200+ ];
201+ } );
189202
190203 if ($ config ['showSiteGroupHeadings ' ]) {
191204 $ items [] = [
0 commit comments