diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index eed25b1f94..2289df27c4 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: true matrix: - php: [7.1, 7.2, 7.3, 7.4] + php: [7.4, 8.0] testsuite: ["functional", "unit", "installer"] name: PHPUnit - ${{ matrix.testsuite }} (PHP ${{ matrix.php }}) services: @@ -100,7 +100,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: 7.1 + php-version: 7.4 extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, bcmath, intl, gd, exif, iconv, imagick coverage: none @@ -134,7 +134,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: 7.1 + php-version: 7.4 extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, bcmath, intl, gd, exif, iconv, imagick coverage: none @@ -173,7 +173,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: 7.1 + php-version: 7.4 extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, bcmath, intl, gd, exif, iconv, imagick coverage: none diff --git a/.scrutinizer.yml b/.scrutinizer.yml index 11656cee08..6ee71fce11 100644 --- a/.scrutinizer.yml +++ b/.scrutinizer.yml @@ -3,7 +3,7 @@ build: analysis: environment: php: - version: 7.1 + version: 7.4 cache: disabled: false directories: diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ff91c76ca..0643036033 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,26 @@ +5.12.0 (2023-07-31) +------------------ + +Fixed: +* Core: Fix redirecting in parseWidget [#3513](https://github.com/forkcms/forkcms/pull/3513) +* Core: Make privacy consent dialog scrollable on mobile [#3507](https://github.com/forkcms/forkcms/pull/3507) +* Core: Make the old session clean-up method timezone aware [#3511](https://github.com/forkcms/forkcms/pull/3511) +* Core: Move the apple touch icon to the theme [#3512](https://github.com/forkcms/forkcms/pull/3512) +* Pages: Allow the use of install in a page title [#3533](https://github.com/forkcms/forkcms/pull/3533) +* Pages: Skip empty images while copying a page [#3545](https://github.com/forkcms/forkcms/pull/3545) + +Security: +* Core: Fix Open Redirect issue [#3547](https://github.com/forkcms/forkcms/pull/3547) + +Added: +* CLI: Reset password CLI command [#3491](https://github.com/forkcms/forkcms/pull/3491) +* Profiles: Autocomplete attributes [#3508](https://github.com/forkcms/forkcms/pull/3508)[#3548](https://github.com/forkcms/forkcms/pull/3548) + +Changed: +* Core: Added PHP8 support and bumped minimum to 7.4 [#3538](https://github.com/forkcms/forkcms/pull/3538) +* Core: Switched to symfony 4.4 [#3538](https://github.com/forkcms/forkcms/pull/3538) + + 5.11.1 (2022-03-24) ------------------ diff --git a/Dockerfile b/Dockerfile index 8fdcab2403..3c8cb674e6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM php:7.1-apache +FROM php:7.4-apache LABEL maintainer="Fork CMS " # Enable Apache mod_rewrite @@ -8,10 +8,11 @@ RUN a2enmod rewrite RUN apt-get update && apt-get install -y --no-install-recommends --allow-downgrades \ libfreetype6-dev \ libjpeg62-turbo-dev \ + libonig-dev \ libz-dev \ zlib1g-dev \ libpng-dev && \ - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ + docker-php-ext-configure gd --with-freetype --with-jpeg && \ docker-php-ext-install -j$(nproc) gd && \ rm -rf /var/lib/apt/lists/* @@ -22,7 +23,9 @@ RUN docker-php-ext-install pdo_mysql RUN docker-php-ext-install mbstring # Install zip & unzip -RUN apt-get update && apt-get install -y unzip && \ +RUN apt-get update && apt-get install -y \ + libzip-dev \ + unzip && \ docker-php-ext-install zip && \ rm -rf /var/lib/apt/lists/* diff --git a/README.md b/README.md index a2b5a4910c..8128d863bc 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,6 @@ [![Latest Stable Version](https://poser.pugx.org/forkcms/forkcms/v/stable)](https://packagist.org/packages/forkcms/forkcms) [![License](https://poser.pugx.org/forkcms/forkcms/license)](https://packagist.org/packages/forkcms/forkcms) [![Code Coverage](https://codecov.io/gh/forkcms/forkcms/branch/master/graph/badge.svg?token=ahj70hVO29)](http://codecov.io/github/forkcms/forkcms?branch=master) -[![Slack Status](https://fork-cms.herokuapp.com/badge.svg)](https://fork-cms.herokuapp.com/) [![Documentation Status](https://img.shields.io/badge/docs-latest-brightgreen.svg)](http://docs.fork-cms.com/) [![huntr.dev | the place to protect open source](https://cdn.huntr.dev/huntr_security_badge.svg)](https://huntr.dev) diff --git a/VERSION.md b/VERSION.md index 32447ce31d..dd0ad7ae60 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -5.11.1 +5.12.0 diff --git a/app/AppKernel.php b/app/AppKernel.php index db33dca52d..9d13a1040f 100644 --- a/app/AppKernel.php +++ b/app/AppKernel.php @@ -20,7 +20,6 @@ public function registerBundles(): array new \Symfony\Bundle\TwigBundle\TwigBundle(), new \Symfony\Bundle\MonologBundle\MonologBundle(), new \Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(), - new \Symfony\Bundle\AsseticBundle\AsseticBundle(), new \ForkCMS\Bundle\InstallerBundle\ForkCMSInstallerBundle(), new \ForkCMS\Bundle\CoreBundle\ForkCMSCoreBundle(), new \Doctrine\Bundle\DoctrineBundle\DoctrineBundle(), diff --git a/app/ForkController.php b/app/ForkController.php index 858064acee..ed6c629ffa 100644 --- a/app/ForkController.php +++ b/app/ForkController.php @@ -6,17 +6,17 @@ use Backend\Core\Engine\Backend; use Frontend\Core\Engine\Ajax as FrontendAjax; use Frontend\Core\Engine\Frontend; -use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Backend\Init as BackendInit; use Frontend\Init as FrontendInit; use Common\Exception\RedirectException; use Symfony\Component\HttpFoundation\Response; -use Twig_Error; +use Twig\Error\Error; /** * Application routing */ -class ForkController extends Controller +class ForkController extends AbstractController { const DEFAULT_APPLICATION = 'Frontend'; @@ -106,7 +106,7 @@ protected function handleApplication(ApplicationInterface $application): Respons return $application->display(); } catch (RedirectException $ex) { return $ex->getResponse(); - } catch (Twig_Error $twigError) { + } catch (Error $twigError) { if ($twigError->getPrevious() instanceof RedirectException) { return $twigError->getPrevious()->getResponse(); } diff --git a/app/config/config.yml b/app/config/config.yml index ec29007a48..73bbd3ade0 100644 --- a/app/config/config.yml +++ b/app/config/config.yml @@ -30,12 +30,12 @@ framework: default_lifetime: 3600 # Assetic Configuration -assetic: - debug: "%kernel.debug%" - use_controller: false - bundles: [ 'ForkCMSInstallerBundle' ] - filters: - cssrewrite: ~ +#assetic: +# debug: "%kernel.debug%" +# use_controller: false +# bundles: [ 'ForkCMSInstallerBundle' ] +# filters: +# cssrewrite: ~ twig: debug: "%kernel.debug%" @@ -77,8 +77,6 @@ liip_imagine: locator: filesystem_insecure cache: default data_loader: default - controller: - filter_action: ForkCMS\ImagineController:filterAction # your filter sets are defined here filter_sets: @@ -222,6 +220,10 @@ services: tags: - { name: kernel.event_listener, event: kernel.response, method: onKernelResponse } + ForkCMS\Imagine\Service\FilterService: + alias: 'liip_imagine.service.filter' + public: true + ForkCMS\Utility\Geolocation: public: true arguments: @@ -274,7 +276,3 @@ services: arguments: - "@fork.settings" - "@fork.cookie" - - ForkCMS\ImagineController: - public: true - autowire: true diff --git a/app/config/config_install.yml b/app/config/config_install.yml index 398febaedd..74d8badcaa 100644 --- a/app/config/config_install.yml +++ b/app/config/config_install.yml @@ -26,12 +26,12 @@ framework: default_lifetime: 3600 # Assetic Configuration -assetic: - debug: "%kernel.debug%" - use_controller: false - bundles: [ 'ForkCMSInstallerBundle' ] - filters: - cssrewrite: ~ +#assetic: +# debug: "%kernel.debug%" +# use_controller: false +# bundles: [ 'ForkCMSInstallerBundle' ] +# filters: +# cssrewrite: ~ monolog: handlers: diff --git a/app/config/doctrine.yml b/app/config/doctrine.yml index f57df9b77b..f48a3f4de9 100644 --- a/app/config/doctrine.yml +++ b/app/config/doctrine.yml @@ -24,6 +24,7 @@ doctrine: datetime: Common\Doctrine\Type\UTCDateTimeType datetimetz: Common\Doctrine\Type\UTCDateTimeType time: Common\Doctrine\Type\UTCTimeType + uuid: Ramsey\Uuid\Doctrine\UuidType orm: auto_generate_proxy_classes: "%kernel.debug%" diff --git a/app/config/parameters.yml.dist b/app/config/parameters.yml.dist index 01a5275524..513820f57d 100644 --- a/app/config/parameters.yml.dist +++ b/app/config/parameters.yml.dist @@ -10,7 +10,7 @@ parameters: fork.debug_email: fork.debug_message: 'Internal error.' - fork.version: '5.11.1' + fork.version: '5.12.0' session.cookie_secure: false site.protocol: diff --git a/app/config/parameters.yml.test b/app/config/parameters.yml.test index 060da33dd0..79ceb24042 100644 --- a/app/config/parameters.yml.test +++ b/app/config/parameters.yml.test @@ -10,7 +10,7 @@ parameters: fork.debug_email: '' fork.debug_message: 'Internal error.' - fork.version: '5.11.1' + fork.version: '5.12.0' session.cookie_secure: false site.protocol: http diff --git a/app/config/parameters_install.yml b/app/config/parameters_install.yml index 9488fbb434..9a8d150852 100644 --- a/app/config/parameters_install.yml +++ b/app/config/parameters_install.yml @@ -10,7 +10,7 @@ parameters: fork.debug_email: noreply@fork.com fork.debug_message: 'Internal error.' - fork.version: '5.11.1' + fork.version: '5.12.0' session.cookie_secure: false site.protocol: diff --git a/app/config/routing.yml b/app/config/routing.yml index 32173af4bf..a35cd4b692 100644 --- a/app/config/routing.yml +++ b/app/config/routing.yml @@ -1,7 +1,7 @@ # Add your custom routes for Symfony bundles above this line _liip_imagine: - resource: "@LiipImagineBundle/Resources/config/routing.xml" + resource: "@LiipImagineBundle/Resources/config/routing.yaml" backend: path: /private/{_locale}/{module}/{action} defaults: diff --git a/autoload.php b/autoload.php index e63c8b685a..ea338c52ba 100644 --- a/autoload.php +++ b/autoload.php @@ -2,12 +2,10 @@ // @TODO rename this file to bootstrap.php to better reflect its function -use Doctrine\Common\Annotations\AnnotationRegistry; use Symfony\Component\Dotenv\Dotenv; // use vendor generated autoloader $loader = require __DIR__ . '/vendor/autoload.php'; -AnnotationRegistry::registerLoader(array($loader, 'loadClass')); // Spoon is not autoloaded via Composer but uses its own old skool autoloader set_include_path(__DIR__ . '/vendor/spoon/library' . PATH_SEPARATOR . get_include_path()); diff --git a/composer.json b/composer.json index cf3b382c1f..6dcc4780c7 100644 --- a/composer.json +++ b/composer.json @@ -10,53 +10,53 @@ "blog", "php" ], - "homepage": "http://www.fork-cms.com/", + "homepage": "https://www.fork-cms.com/", "license": "MIT", "require": { - "php": "^7.1", + "php": "^7.4||^8.0", "ext-json": "*", "ext-zip": "*", "ext-gd": "*", "ext-intl": "*", "ext-simplexml": "*", "behat/transliterator": "~1.0", - "doctrine/doctrine-bundle": "^1.6", - "doctrine/orm": "^2.5", + "doctrine/doctrine-bundle": "^2.0", + "doctrine/orm": "^2.7", "google/apiclient": "~1.1.2", - "google/recaptcha": "~1.1", + "google/recaptcha": "^1.2", "jeroendesloovere/geolocation-php-api": "^2.1", "league/flysystem": "~1.0", "league/flysystem-aws-s3-v3": "^1.0.13", "league/flysystem-cached-adapter": "^1.0.6", - "liip/imagine-bundle": "^1.7", - "mailmotor/campaignmonitor-bundle": "^2.0", - "mailmotor/mailchimp-bundle": "^3.0", - "mailmotor/mailmotor-bundle": "^3.0", + "liip/imagine-bundle": "*", + "mailmotor/campaignmonitor-bundle": "^3.0", + "mailmotor/mailchimp-bundle": "^4.0", + "mailmotor/mailmotor-bundle": "^4.0", "matthiasmullie/minify": "~1.3", "matthiasmullie/scrapbook": "^1.3", "pimple/pimple": "^3.2", - "ramsey/uuid": "^3.5", - "ramsey/uuid-doctrine": "^1.2", - "simple-bus/doctrine-orm-bridge": "^4.0", - "simple-bus/symfony-bridge": "^4.1", + "ramsey/uuid": "^4.0", + "ramsey/uuid-doctrine": "^2.0", + "simple-bus/doctrine-orm-bridge": "6.2.*", + "simple-bus/symfony-bridge": "~6.2", "spoon/library": "^3.0", "swiftmailer/swiftmailer": "^6.0", - "symfony/assetic-bundle": "^2.8", "symfony/monolog-bundle": "^3.1", "symfony/swiftmailer-bundle": "^3.0", - "symfony/symfony": "^3.3", - "tijsverkoyen/akismet": "1.1.*", - "tijsverkoyen/css-to-inline-styles": "1.5.*", + "symfony/symfony": "^4.0", + "tijsverkoyen/css-to-inline-styles": "^2.0", "phpoffice/phpspreadsheet": "^1.12", "composer/package-versions-deprecated": "^1.11", + "guzzlehttp/guzzle": "^6.5", + "doctrine/annotations": "^1.14", "sentry/sentry-symfony": "^4.1", "tijsverkoyen/convert-to-junit-xml": "^1.9.0" }, "require-dev": { "jdorn/sql-formatter": "1.2.17", - "symfony/var-dumper": "^3.3", + "symfony/var-dumper": "^4.0", "squizlabs/php_codesniffer": "^3.5", - "symfony/phpunit-bridge": "*", + "symfony/phpunit-bridge": "^4.3", "phpstan/phpstan": "^0.12.52", "phpstan/phpstan-symfony": "^0.12.7", "deployer/deployer": "^7.0@beta", @@ -71,18 +71,19 @@ "issues": "https://github.com/forkcms/forkcms/issues" }, "scripts": { - "test": "./bin/simple-phpunit", + "test": [ + "Composer\\Config::disableProcessTimeout", + "./bin/simple-phpunit" + ], "post-install-cmd": [ - "@php bin/console assetic:dump .", - "@php bin/console forkcms:cache:clear", - "@php bin/console cache:clear --no-warmup", - "@php bin/console cache:warmup" + "php bin/console forkcms:cache:clear", + "php bin/console cache:clear --no-warmup", + "php bin/console cache:warmup" ], "post-update-cmd": [ - "@php bin/console assetic:dump .", - "@php bin/console forkcms:cache:clear", - "@php bin/console cache:clear --no-warmup", - "@php bin/console cache:warmup" + "php bin/console forkcms:cache:clear", + "php bin/console cache:clear --no-warmup", + "php bin/console cache:warmup" ] }, "autoload": { diff --git a/docs/07. media library/03. integrating in your module.md b/docs/07. media library/03. integrating in your module.md index c79313c25f..52b3a45aac 100644 --- a/docs/07. media library/03. integrating in your module.md +++ b/docs/07. media library/03. integrating in your module.md @@ -20,7 +20,7 @@ use Backend\Modules\MediaLibrary\Domain\MediaGroup\MediaGroup; * * @ORM\OneToOne( * targetEntity="Backend\Modules\MediaLibrary\Domain\MediaGroup\MediaGroup", - * cascade="persist", + * cascade={"persist"}, * orphanRemoval=true * ) * @ORM\JoinColumn( diff --git a/index.php b/index.php index 991895dd77..b4d63dbc3e 100644 --- a/index.php +++ b/index.php @@ -53,7 +53,7 @@ } if ($debug) { - Debug::enable(); + \Symfony\Component\ErrorHandler\Debug::enable(); } $kernel = new AppKernel($env, $debug); diff --git a/phpstan.neon b/phpstan.neon index 33388057da..b703f4b898 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -57,4 +57,4 @@ parameters: - '#Constant BACKEND_CACHE_PATH not found.#' - '#Constant SITE_DEFAULT_TITLE not found.#' symfony: - container_xml_path: var/cache/dev/appDevDebugProjectContainer.xml + container_xml_path: var/cache/dev/appForkCMS_App_AppKernelDevDebugContainer.xml diff --git a/phpunit.xml.dist b/phpunit.xml.dist index cd9dc9871b..bb586e3c43 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -2,12 +2,39 @@ + + + src + + + src/*/*Bundle/Resources + src/*/*Bundle/Tests + src/*/Bundle/*Bundle/Resources + src/*/Bundle/*Bundle/Tests + src/*Bundle/Resources + src/*Bundle/Tests + src/Backend/Cache + src/Backend/Core/Js + src/Backend/Core/Tests + src/Backend/Core/Installer + src/Backend/Modules/*/DataFixtures + src/Backend/Modules/*/Installer + src/Backend/Modules/*/Tests + src/Common/Tests + src/Frontend/Cache + src/Frontend/Core/Tests + src/Frontend/Modules/*/DataFixtures + src/Frontend/Modules/*/Tests + src/Common/WebTestCase.php + + + src/ForkCMS/Bundle/InstallerBundle/Tests @@ -53,7 +80,7 @@ src/Backend/Modules/Settings/Tests/Actions src/Backend/Modules/Tags/Tests/Actions src/Backend/Modules/Users/Tests/Actions - src/Frontend/Core/Tests/AjaxTest.php + src/Frontend/Core/Tests/Engine/AjaxTest.php @@ -62,37 +89,11 @@ src/*/Bundle/*Bundle/Tests/Controller src/*Bundle/Tests/Controller src/Frontend/Modules/*/Tests/Actions - src/Frontend/Core/Tests/AjaxTest.php + src/Frontend/Core/Tests/Engine/AjaxTest.php src/ForkCMS/Bundle/InstallerBundle/Tests - - - src - - src/*/*Bundle/Resources - src/*/*Bundle/Tests - src/*/Bundle/*Bundle/Resources - src/*/Bundle/*Bundle/Tests - src/*Bundle/Resources - src/*Bundle/Tests - src/Backend/Cache - src/Backend/Core/Js - src/Backend/Core/Tests - src/Backend/Core/Installer - src/Backend/Modules/*/DataFixtures - src/Backend/Modules/*/Installer - src/Backend/Modules/*/Tests - src/Common/Tests - src/Frontend/Cache - src/Frontend/Core/Tests - src/Frontend/Modules/*/DataFixtures - src/Frontend/Modules/*/Tests - src/Common/WebTestCase.php - - - diff --git a/src/Backend/Core/Engine/TwigTemplate.php b/src/Backend/Core/Engine/TwigTemplate.php index 89eb5e496c..11c6f42098 100644 --- a/src/Backend/Core/Engine/TwigTemplate.php +++ b/src/Backend/Core/Engine/TwigTemplate.php @@ -14,10 +14,10 @@ use Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\Form\FormRenderer; -use Twig_Environment; -use Twig_Extension_Debug; -use Twig_FactoryRuntimeLoader; -use Twig_Loader_Filesystem; +use Twig\Environment; +use Twig\Extension\DebugExtension; +use Twig\Loader\FilesystemLoader; +use Twig\RuntimeLoader\FactoryRuntimeLoader; /** * This is a twig template wrapper @@ -49,7 +49,7 @@ public function __construct(bool $addToReference = true) if ($this->debugMode) { $this->environment->enableAutoReload(); $this->environment->setCache(false); - $this->environment->addExtension(new Twig_Extension_Debug()); + $this->environment->addExtension(new DebugExtension()); } $this->language = BL::getWorkingLanguage(); $this->connectSymfonyForms(); @@ -80,16 +80,16 @@ public function getContent(string $template): string } /** - * @return Twig_Environment + * @return Environment */ - private function buildTwigEnvironmentForTheBackend(): Twig_Environment + private function buildTwigEnvironmentForTheBackend(): Environment { // path to TwigBridge library so we can locate the form theme files. $appVariableReflection = new ReflectionClass(AppVariable::class); $vendorTwigBridgeDir = dirname($appVariableReflection->getFileName()); // render the compiled File - $loader = new Twig_Loader_Filesystem( + $loader = new FilesystemLoader( [ BACKEND_MODULES_PATH, BACKEND_CORE_PATH, @@ -97,7 +97,7 @@ private function buildTwigEnvironmentForTheBackend(): Twig_Environment ] ); - return new Twig_Environment( + return new Environment( $loader, [ 'cache' => Model::getContainer()->getParameter('kernel.cache_dir') . '/twig', @@ -117,7 +117,7 @@ private function connectSymfonyForms(): void ); $csrfTokenManager = Model::get('security.csrf.token_manager'); $this->environment->addRuntimeLoader( - new Twig_FactoryRuntimeLoader( + new FactoryRuntimeLoader( [ FormRenderer::class => function () use ($rendererEngine, $csrfTokenManager): FormRenderer { return new FormRenderer($rendererEngine, $csrfTokenManager); @@ -254,8 +254,8 @@ private function parseDebug(): void { $this->assign('debug', Model::getContainer()->getParameter('kernel.debug')); - if ($this->debugMode === true && !$this->environment->hasExtension(Twig_Extension_Debug::class)) { - $this->environment->addExtension(new Twig_Extension_Debug()); + if ($this->debugMode === true && !$this->environment->hasExtension(DebugExtension::class)) { + $this->environment->addExtension(new DebugExtension()); } } diff --git a/src/Backend/Core/Layout/Templates/FormLayout.html.twig b/src/Backend/Core/Layout/Templates/FormLayout.html.twig index 7bae3a07f7..0ffbcf11f4 100644 --- a/src/Backend/Core/Layout/Templates/FormLayout.html.twig +++ b/src/Backend/Core/Layout/Templates/FormLayout.html.twig @@ -65,10 +65,10 @@ {% endblock checkbox_radio_label %} {%- block label_asterisk -%} - {% spaceless %} + {% apply spaceless %} {% import 'Layout/Templates/macros.html.twig' as macro %} {{ macro.required }} - {% endspaceless %} + {% endapply %} {%- endblock label_asterisk -%} {% block form_errors -%} @@ -241,7 +241,7 @@ {%- endblock meta_widget -%} {% block fork_image_widget %} - {% spaceless %} + {% apply spaceless %}
{% set show_preview = show_preview and data is not null and data.fileName is not empty %} {% if show_preview or show_remove_image %} @@ -262,12 +262,12 @@ {% endif %}
- {% endspaceless %} + {% endapply %} {% endblock %} {% block fork_file_widget %} {% import "Layout/Templates/macros.html.twig" as macro %} - {% spaceless %} + {% apply spaceless %}
{{ form_widget(form.file) }} {% if help_text_message %} @@ -289,11 +289,11 @@ {% endif %}
{% endif %} - {% endspaceless %} + {% endapply %} {% endblock %} {% block bootstrap_collection_row %} - {% spaceless %} + {% apply spaceless %} {% import "Layout/Templates/macros.html.twig" as macro %} {% if prototype is defined %} {% set prototype_vars = {} %} @@ -351,7 +351,7 @@ - {% endspaceless %} + {% endapply %} {% endblock bootstrap_collection_row %} {% block media_group_row %} diff --git a/src/Backend/Core/Layout/Templates/breadcrumb.html.twig b/src/Backend/Core/Layout/Templates/breadcrumb.html.twig index 7d5f4f87e8..f031ed966e 100644 --- a/src/Backend/Core/Layout/Templates/breadcrumb.html.twig +++ b/src/Backend/Core/Layout/Templates/breadcrumb.html.twig @@ -1,15 +1,15 @@