19
19
use Ibexa \AdminUi \Form \Factory \FormFactory ;
20
20
use Ibexa \AdminUi \Form \SubmitHandler ;
21
21
use Ibexa \AdminUi \Form \Type \Content \Translation \MainTranslationUpdateType ;
22
- use Ibexa \AdminUi \Form \Type \Preview \SiteAccessChoiceType ;
22
+ use Ibexa \AdminUi \Form \Type \Preview \VersionPreviewUrlChoiceType ;
23
23
use Ibexa \AdminUi \Permission \LookupLimitationsTransformer ;
24
24
use Ibexa \AdminUi \Siteaccess \SiteAccessNameGeneratorInterface ;
25
25
use Ibexa \AdminUi \Siteaccess \SiteaccessResolverInterface ;
29
29
use Ibexa \Contracts \AdminUi \Event \ContentEditEvent ;
30
30
use Ibexa \Contracts \AdminUi \Event \ContentProxyCreateEvent ;
31
31
use Ibexa \Contracts \AdminUi \Notification \TranslatableNotificationHandlerInterface ;
32
+ use Ibexa \Contracts \AdminUi \PreviewUrlResolver \VersionPreviewUrlResolverInterface ;
32
33
use Ibexa \Contracts \Core \Limitation \Target ;
33
34
use Ibexa \Contracts \Core \Repository \ContentService ;
34
35
use Ibexa \Contracts \Core \Repository \Exceptions \UnauthorizedException ;
36
+ use Ibexa \Contracts \Core \Repository \LanguageService ;
35
37
use Ibexa \Contracts \Core \Repository \LocationService ;
36
38
use Ibexa \Contracts \Core \Repository \PermissionResolver ;
37
39
use Ibexa \Contracts \Core \Repository \UserService ;
42
44
use Ibexa \Contracts \Core \SiteAccess \ConfigResolverInterface ;
43
45
use Ibexa \Core \Base \Exceptions \BadStateException ;
44
46
use Ibexa \Core \Helper \TranslationHelper ;
47
+ use Ibexa \Core \MVC \Symfony \SiteAccess \SiteAccessServiceInterface ;
45
48
use JMS \TranslationBundle \Annotation \Desc ;
46
49
use Symfony \Component \Form \FormFactoryInterface ;
47
50
use Symfony \Component \HttpFoundation \JsonResponse ;
@@ -67,7 +70,10 @@ public function __construct(
67
70
private readonly ConfigResolverInterface $ configResolver ,
68
71
private readonly SiteAccessNameGeneratorInterface $ siteAccessNameGenerator ,
69
72
private readonly EventDispatcherInterface $ eventDispatcher ,
70
- private readonly FormFactoryInterface $ baseFormFactory
73
+ private readonly FormFactoryInterface $ baseFormFactory ,
74
+ private readonly VersionPreviewUrlResolverInterface $ previewUrlResolver ,
75
+ private readonly LanguageService $ languageService ,
76
+ private readonly SiteAccessServiceInterface $ siteAccessService
71
77
) {
72
78
}
73
79
@@ -309,14 +315,13 @@ public function previewAction(
309
315
$ versionNo = null ;
310
316
}
311
317
312
- if (null === $ location ) {
318
+ if (! $ location instanceof Location ) {
313
319
$ location = $ this ->locationService ->loadLocation (
314
320
$ content ->getContentInfo ()->getMainLocationId ()
315
321
);
316
322
}
317
323
318
324
$ siteAccesses = $ this ->siteaccessResolver ->getSiteAccessesListForLocation ($ location , $ versionNo , $ languageCode );
319
-
320
325
if (empty ($ siteAccesses )) {
321
326
throw new BadStateException (
322
327
'siteaccess ' ,
@@ -329,30 +334,28 @@ public function previewAction(
329
334
$ siteAccessesList [$ siteAccess ->name ] = $ this ->siteAccessNameGenerator ->generate ($ siteAccess );
330
335
}
331
336
332
- $ preselectedSiteAccess = $ request ->query ->get ('preselectedSiteAccess ' , reset ($ siteAccessesList ));
333
-
334
- if (!array_key_exists ($ preselectedSiteAccess , $ siteAccessesList )) {
335
- $ preselectedSiteAccess = reset ($ siteAccessesList );
337
+ $ preselectedSiteAccessName = $ request ->query ->get ('preselectedSiteAccessName ' , reset ($ siteAccessesList ));
338
+ if (!array_key_exists ($ preselectedSiteAccessName , $ siteAccessesList )) {
339
+ $ preselectedSiteAccessName = reset ($ siteAccessesList );
336
340
}
337
341
338
- $ urlValue = $ this ->generateUrl (
339
- ' ibexa.version.preview ' ,
340
- [
341
- ' contentId ' => $ content -> getId (),
342
- ' versionNo ' => $ versionNo ?? $ content -> getVersionInfo ()-> getVersionNo () ,
343
- ' language ' => $ languageCode ,
344
- ' siteAccessName ' => $ preselectedSiteAccess ,
345
- ]
342
+ $ versionInfo = $ this ->contentService -> loadVersionInfo ( $ content -> getContentInfo (), $ versionNo );
343
+ $ language = $ this -> languageService -> loadLanguage ( $ languageCode );
344
+
345
+ $ previewUrl = $ this -> previewUrlResolver -> resolveUrl (
346
+ $ versionInfo ,
347
+ $ location ,
348
+ $ language ,
349
+ $ this -> siteAccessService -> get ( $ preselectedSiteAccessName )
346
350
);
347
351
348
352
$ siteAccessSelector = $ this ->baseFormFactory ->create (
349
- SiteAccessChoiceType ::class,
350
- $ urlValue ,
353
+ VersionPreviewUrlChoiceType ::class,
354
+ $ previewUrl ,
351
355
[
352
356
'location ' => $ location ,
353
- 'content ' => $ content ,
354
- 'versionNo ' => $ versionNo ?? $ content ->getVersionInfo ()->getVersionNo (),
355
- 'languageCode ' => $ languageCode ,
357
+ 'version_info ' => $ versionInfo ,
358
+ 'language ' => $ language ,
356
359
]
357
360
);
358
361
@@ -363,8 +366,9 @@ public function previewAction(
363
366
'siteaccesses ' => $ siteAccessesList ,
364
367
'site_access_form ' => $ siteAccessSelector ,
365
368
'version_no ' => $ versionNo ?? $ content ->getVersionInfo ()->getVersionNo (),
366
- 'preselected_site_access ' => $ preselectedSiteAccess ,
369
+ 'preselected_site_access ' => $ preselectedSiteAccessName ,
367
370
'referrer ' => $ referrer ?? 'content_draft_edit ' ,
371
+ 'preview_url ' => $ previewUrl ,
368
372
]);
369
373
}
370
374
0 commit comments