diff --git a/cms/modules/section/render.html.twig b/cms/modules/section/render.html.twig
index 52a72f9..c357c06 100644
--- a/cms/modules/section/render.html.twig
+++ b/cms/modules/section/render.html.twig
@@ -1,12 +1,24 @@
{% import '@SfsCms/macros/modules_render.html.twig' as module %}
+{% set is_admin_preview = app.request.attributes.has('_cms_preview') and app.request.attributes.get('_cms_preview') %}
+
{% if section %}
{% if id|default(false) or class|default(false) %}
{% endif %}
{% if mode == 'esi' %}
-
+ {% if is_admin_preview %}
+ {% set controller_params = {'section':section.id, '_locale':app.request.locale, 'adminPreview': true, '_site': app.request.attributes.get('_site')} %}
+ {% else %}{# is render #}
+ {% set controller_params = {'section':section.id, '_locale':app.request.locale} %}
+ {% endif %}
+
{% elseif mode == 'ajax' %}
{% set section_div_id = 's'~random() %}
-
+ {% if is_admin_preview %}
+ {% set section_url = url('sfs_cms_section_render', {'section': section.id, '_locale':app.request.locale, '_site': app.request.attributes.get('_site'), 'admin_preview': true}) %}
+ {% else %}{# is render #}
+ {% set section_url = url('sfs_cms_section_render', {'section': section.id, '_locale':app.request.locale}) %}
+ {% endif %}
+
{% else %}
- {{ render(url('sfs_cms_section_render', {'section': section.id, '_locale':app.request.locale, 'do_not_throw_not_found': true})) }}
+ {% if is_admin_preview %}
+ {{ render(url('sfs_cms_section_render', {'section': section.id, '_locale':app.request.locale, 'do_not_throw_not_found': true, '_site': app.request.attributes.get('_site'), 'admin_preview': true})) }}
+ {% else %}{# is render #}
+ {{ render(url('sfs_cms_section_render', {'section': section.id, '_locale':app.request.locale, 'do_not_throw_not_found': true})) }}
+ {% endif %}
{% endif %}
{% if id|default(false) or class|default(false) %}
{% endif %}
{% endif %}
diff --git a/src/Admin/ActionListener/SectionVersion/PreviewListener.php b/src/Admin/ActionListener/SectionVersion/PreviewListener.php
index d81323f..5f89fd6 100644
--- a/src/Admin/ActionListener/SectionVersion/PreviewListener.php
+++ b/src/Admin/ActionListener/SectionVersion/PreviewListener.php
@@ -92,8 +92,8 @@ protected function getContentResponse(Request $request, SectionVersionInterface
if (!$compiledData->hasErrors()) {
return new Response($compiledData->getDataPart('content'));
- } else {
- return new Response($compiledData->getDataPart('content') ?? '', Response::HTTP_INTERNAL_SERVER_ERROR);
}
+
+ return new Response($compiledData->getDataPart('content') ?? '', Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
diff --git a/src/Controller/SectionController.php b/src/Controller/SectionController.php
index 5453d13..e469778 100644
--- a/src/Controller/SectionController.php
+++ b/src/Controller/SectionController.php
@@ -43,6 +43,10 @@ public function renderById(string $section, Request $request, bool $adminPreview
$response->headers->set('Access-Control-Allow-Origin', '*');
$response->headers->set('Access-Control-Allow-Methods', 'GET, OPTIONS');
+ if ($request->query->has('admin_preview') && $request->query->get('admin_preview')) {
+ $adminPreview = true;
+ }
+
try {
/** @var ?SectionInterface $section */
$section = $this->sectionManager->getRepository()->findOneById($section);
@@ -61,10 +65,19 @@ public function renderById(string $section, Request $request, bool $adminPreview
$publishedVersion = $section->getPublishedVersion();
if ($adminPreview) {
- if (!$request->attributes->has('_sfs_cms_site') && $request->query->has('_sfs_cms_site')) {
- $request->attributes->set('_sfs_cms_site', $this->cmsConfig->getSite($request->query->get('_sfs_cms_site')));
+ if (!$request->attributes->has('_sfs_cms_site')) {
+ if ($request->query->has('_sfs_cms_site')) {
+ $request->attributes->set('_sfs_cms_site', $this->cmsConfig->getSite($request->query->get('_sfs_cms_site')));
+ } elseif ($request->query->has('_site')) {
+ $request->attributes->set('_sfs_cms_site', $this->cmsConfig->getSite($request->query->get('_site')));
+ } elseif ($request->attributes->has('_site')) {
+ $request->attributes->set('_sfs_cms_site', $this->cmsConfig->getSite($request->attributes->get('_site')));
+ }
}
- if (!$request->attributes->has('_locale') && $request->query->has('_locale')) {
+
+ if ($request->attributes->has('_locale')) {
+ $request->setLocale($request->attributes->get('_locale'));
+ } elseif ($request->query->has('_locale')) {
$request->attributes->set('_locale', $request->query->get('_locale'));
$request->setLocale($request->attributes->get('_locale'));
}