From cd64eff552e376f63ffcc9c1710c324ff9406070 Mon Sep 17 00:00:00 2001 From: "Javi H. Gil" Date: Tue, 24 Feb 2026 14:16:31 +0100 Subject: [PATCH 1/4] Fix admin bug with sections preview --- cms/modules/section/render.html.twig | 22 +++++++++++++++++++--- src/Controller/SectionController.php | 22 +++++++++++++++++++--- 2 files changed, 38 insertions(+), 6 deletions(-) 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/Controller/SectionController.php b/src/Controller/SectionController.php index 5453d13..401866f 100644 --- a/src/Controller/SectionController.php +++ b/src/Controller/SectionController.php @@ -12,6 +12,7 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Translation\LocaleSwitcher; use Twig\Environment; class SectionController extends AbstractController @@ -21,6 +22,7 @@ public function __construct( protected SectionVersionManagerInterface $sectionVersionManager, protected Environment $twig, protected CmsConfig $cmsConfig, + protected LocaleSwitcher $localeSwitcher, protected ?LoggerInterface $cmsLogger, ) { } @@ -43,6 +45,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,13 +67,23 @@ 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')); + } else if ($request->query->has('_locale')) { $request->attributes->set('_locale', $request->query->get('_locale')); $request->setLocale($request->attributes->get('_locale')); } +// $this->localeSwitcher->setLocale($request->getLocale()); if (!$publishedVersion) { $publishedVersion = $section->getLastVersion(); From ab578b8bef939f20816414965b221bf37b6e1668 Mon Sep 17 00:00:00 2001 From: "Javi H. Gil" Date: Tue, 24 Feb 2026 14:20:24 +0100 Subject: [PATCH 2/4] Fix code style --- src/Admin/ActionListener/SectionVersion/PreviewListener.php | 4 ++-- src/Controller/SectionController.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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 401866f..bad6ac4 100644 --- a/src/Controller/SectionController.php +++ b/src/Controller/SectionController.php @@ -79,11 +79,11 @@ public function renderById(string $section, Request $request, bool $adminPreview if ($request->attributes->has('_locale')) { $request->setLocale($request->attributes->get('_locale')); - } else if ($request->query->has('_locale')) { + } elseif ($request->query->has('_locale')) { $request->attributes->set('_locale', $request->query->get('_locale')); $request->setLocale($request->attributes->get('_locale')); } -// $this->localeSwitcher->setLocale($request->getLocale()); + // $this->localeSwitcher->setLocale($request->getLocale()); if (!$publishedVersion) { $publishedVersion = $section->getLastVersion(); From fde9e6e0608812cfd17cc8e2c36f27b6d67b78e8 Mon Sep 17 00:00:00 2001 From: "Javi H. Gil" Date: Wed, 25 Feb 2026 08:36:07 +0100 Subject: [PATCH 3/4] Update SectionController.php --- src/Controller/SectionController.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Controller/SectionController.php b/src/Controller/SectionController.php index bad6ac4..46f6a47 100644 --- a/src/Controller/SectionController.php +++ b/src/Controller/SectionController.php @@ -22,7 +22,6 @@ public function __construct( protected SectionVersionManagerInterface $sectionVersionManager, protected Environment $twig, protected CmsConfig $cmsConfig, - protected LocaleSwitcher $localeSwitcher, protected ?LoggerInterface $cmsLogger, ) { } @@ -83,7 +82,6 @@ public function renderById(string $section, Request $request, bool $adminPreview $request->attributes->set('_locale', $request->query->get('_locale')); $request->setLocale($request->attributes->get('_locale')); } - // $this->localeSwitcher->setLocale($request->getLocale()); if (!$publishedVersion) { $publishedVersion = $section->getLastVersion(); From 164306117a2891690b2403245165c4e7e7546cd4 Mon Sep 17 00:00:00 2001 From: "Javi H. Gil" Date: Wed, 25 Feb 2026 08:37:43 +0100 Subject: [PATCH 4/4] Fix code style --- src/Controller/SectionController.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Controller/SectionController.php b/src/Controller/SectionController.php index 46f6a47..e469778 100644 --- a/src/Controller/SectionController.php +++ b/src/Controller/SectionController.php @@ -12,7 +12,6 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\Translation\LocaleSwitcher; use Twig\Environment; class SectionController extends AbstractController