diff --git a/lib/RoadizRozierBundle/src/TwigExtension/RozierExtension.php b/lib/RoadizRozierBundle/src/TwigExtension/RozierExtension.php index be7b5186c..bb183c5a7 100644 --- a/lib/RoadizRozierBundle/src/TwigExtension/RozierExtension.php +++ b/lib/RoadizRozierBundle/src/TwigExtension/RozierExtension.php @@ -17,6 +17,7 @@ use RZ\Roadiz\RozierBundle\TranslateAssistant\NullTranslateAssistant; use RZ\Roadiz\RozierBundle\TranslateAssistant\TranslateAssistantInterface; use RZ\Roadiz\RozierBundle\Vite\JsonManifestResolver; +use Symfony\Component\HttpFoundation\RequestStack; use Twig\Extension\AbstractExtension; use Twig\Extension\GlobalsInterface; use Twig\TwigFunction; @@ -30,12 +31,17 @@ public function __construct( private readonly TranslateAssistantInterface $translateAssistant, private readonly BookmarkCollection $bookmarkCollection, private readonly BreadcrumbsItemFactoryInterface $breadcrumbItemFactory, + private readonly RequestStack $requestStack, ) { } #[\Override] public function getGlobals(): array { + $request = $this->requestStack->getCurrentRequest(); + /* @phpstan-ignore-next-line */ + $isIframe = '1' === $request?->query->get('iframe') ?? false; + return [ 'rozier' => $this->rozierServiceRegistry, 'nodeStatuses' => NodeStatus::allLabelsAndValues(), @@ -52,6 +58,7 @@ public function getGlobals(): array ], 'translateAssistantEnabled' => !$this->translateAssistant instanceof NullTranslateAssistant, 'translateAssistantSupportRephrase' => $this->translateAssistant->supportRephrase(), + 'isIframe' => $isIframe, ]; } diff --git a/lib/RoadizRozierBundle/templates/iframe.html.twig b/lib/RoadizRozierBundle/templates/iframe.html.twig new file mode 100644 index 000000000..747e58077 --- /dev/null +++ b/lib/RoadizRozierBundle/templates/iframe.html.twig @@ -0,0 +1,213 @@ +{% set formattedLocale = app.request.locale|replace({'_': '-'})|lower %} + + + + + + {% block title %}{% trans %}back_office{% endtrans %}: {{ meta.siteName }}{% endblock %} + + + {% include '@RoadizRozier/admin/meta-icon.html.twig' %} + {# CSS scripts inclusions / Using webpack #} + {{ manifest_preload_tags('shared') }} + {{ manifest_preload_tags('main') }} + + {{ manifest_style_tags('shared') }} + {{ manifest_style_tags('main') }} + + {% if main_color %} + + {% endif %} + {% block customStyles %}{% endblock %} + {% if additionalStylesheets %} + {% for additionalStylesheet in additionalStylesheets %} + + {% endfor %} + {% endif %} + + +{% include '@RoadizRozier/includes/messages.html.twig' %} +
+
+
+
+ {% block permanentComponents %} + + {% endblock %} + {% block content %}{% endblock %} +
+
+
+
+
+ + +
+ + + + +
+
+ + +{# JS scripts inclusions / Using Vite manifest #} +{{ manifest_script_tags('@vite/client') }} +{{ manifest_script_tags('shared') }} +{{ manifest_script_tags('main') }} +{% block customScripts %}{% endblock %} +{% if additionalScripts %} + {% for additionalScript in additionalScripts %} + + {% endfor %} +{% endif %} + + diff --git a/lib/RoadizRozierBundle/templates/layout.html.twig b/lib/RoadizRozierBundle/templates/layout.html.twig index c69d02611..4d9bf00fa 100644 --- a/lib/RoadizRozierBundle/templates/layout.html.twig +++ b/lib/RoadizRozierBundle/templates/layout.html.twig @@ -1 +1,7 @@ -{% extends '@RoadizRozier/base.html.twig' %} +{% if (isIframe) %} + {% set parentTemplate = '@RoadizRozier/iframe.html.twig' %} +{% else %} + {% set parentTemplate = '@RoadizRozier/base.html.twig' %} +{% endif %} + +{% extends parentTemplate %} diff --git a/lib/Rozier/app/main.js b/lib/Rozier/app/main.js index 0640e81c5..3dfb0a8d6 100644 --- a/lib/Rozier/app/main.js +++ b/lib/Rozier/app/main.js @@ -58,7 +58,12 @@ ready(() => { * init generic bulk actions widget */ GenericBulkActions() - new Mobile() + if ( + !new URLSearchParams(window.location.search).has('iframe') || + new URLSearchParams(window.location.search).get('iframe') !== '1' + ) { + new Mobile() + } window.addEventListener('pageshowend', () => { GenericBulkActions()