`8.1.0 (2022-09-02) `_ ============================================================================================== Overview of merged pull requests ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ `FEATURE: Refresh the rawContentMode `_ ------------------------------------------------------------------------------------------------------ The raw content mode is implemented freshly and now only relies on the nodetype-configuration for rendering and not requiring a fusion integration. By default the raw mode will render all inline editable properties, previews of Images and all childnodes. This allows content first workflows with Neos or headless applications. !`Home_-_Neos_Demo_Site `_ It is possible to provide a special raw-mode rendering for nodetype by creating a prototype with the name of the nodetype + '.RawContentMode' as shown in the example below. ``` prototype(Neos.Demo:Content.Columns.Two.RawContentMode) < prototype(Neos.Neos:ContentComponent) { renderer = afx`
` } ``` * Resolves: `#3705 `_ * Packages: ``Fusion`` ``Neos`` `FEATURE: Introduce `Neos.Fusion:ActionUri` as replacement for `Neos.Fusion:UriBuilder` `_ --------------------------------------------------------------------------------------------------------------------------------------------------------- The name ``Neos.Fusion:UriBuilder`` stands out from other fusion prototypes because it describes what the prototype does instead of what will be the result. This contradicts the declarative nature of fusion. In addition it is not possible render links from a subrequests to other main-requests without manipulating the controllerContext. A common case for that is fusion-backend modules that want to render links to the content or other modules. This change adds the prototype ``Neos.Fusion:ActionUri`` as a 1:1 replacement that implements the same api but allows to configure the ``request`` the uri is to be built from. This allows to create links from subrequests into other contexts. ``Neos.Fusion:ActionUri``: - ``request``: (ActionRequest, defaults to the the current ``request``) The action request the uri is built from. - ... all other attributes equal ``Neos.Fusion:UriBuilder`` Examples: ``` uri = Neos.Fusion:ActionUri { package = 'My.Package' controller = 'Registration' action = 'new' } ``` This prototype allows to link between different backend modules like the content-module ``` cotentModuleUri = Neos.Fusion:ActionUri { request = ${request.mainRequest} package="Neos.Neos.Ui" controller="Backend" action = 'index' arguments.node = ${documentNode} } ``` or the sites-module which uses a subrequest of the ``Backend\\\Module`` controller. ``` siteModuleUri = Neos.Fusion:ActionUri { request = ${request.mainRequest} action = "index" package = "Neos.Neos" controller = "Backend\\\Module" arguments { module = 'administration/sites' moduleArguments { @action = 'edit' site = ${site} } } } ``` In addition: 1. The prototype ``Neos.Fusion:Link.Action`` is adjusted to use ``Neos.Fusion:ActionUri`` instead of ``Neos.Fusion:UriBuilder`` for the ``href`` property. 2. Documentation is added for ``Neos.Fusion:Link.Action`` and ``Neos.Fusion:Link.Resource`` **Review instructions** The change adds a new implementation instead of modifying or extending the UriBuilderImplementation to avoid breakiness as the ``UriBuilder`` uses the UriBuilder from the controllerContext while ``ActionUri`` creates a new UriBuilder. * Packages: ``Neos`` `FEATURE: Implement choice to sort properties for array objects `_ --------------------------------------------------------------------------------------------------------------------------------- The new meta property ``@sortProperties`` can now be used to define if properties should adhere to the ``@sorting`` meta and general order of definition or if that is irrelevant. Sorting itself is time consuming, and while that does not matter for a single sort, a bigger site might have so many fusion objects to render that the sorting can have massive influence on the render performance. Therefore it's advisable to disable it whenever possible. Specifically ``Neos.Fusion:Component`` as well as attributes in ``Neos.Fusion:Tag`` are now unsorted. Also http headers are unsorted. * Fixes: `#3792 `_ * Packages: ``Fusion`` `FEATURE: Display the rawContent-mode in the backend when neither documentType nor `/page` can be rendered `_ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The Neos backend will fallback to the RawContent mode as last resort if no other document rendering is possible. In the frontend a last try to render the via the ``documentType`` is done to create at least helpful error message that encourages good practices. To implement this the ``path`` option is added to the ``Neos.Fusion:CanRender`` prototype to check wether the ``/page`` is available. The whole feature is a building block to eventually allow content first workflows where no fusion rendering gas to be defined to edit content. * Packages: ``Neos`` ``Fusion`` `FEATURE: allow sorting in user management backend module `_ --------------------------------------------------------------------------------------------------------------------------- If you go to the User Management Backend Module: Administration -> User Management, it's now possible to sort by the Name, The Accounts, and the last login by clicking on the specific header. !`demo `_ * Packages: ``Neos`` `BUGFIX: Apply autorotate before image adjustments `_ -------------------------------------------------------------------------------------------------------------------- Applies the Imagine autorotate filter before doing image adjustments, so images are consistently rotated from metadata also for crop operations. * Fixes: `#3300 `_ * Packages: ``NodeTypes.BaseMixins`` ``Media`` `BUGFIX: Add raw content fallback renderer to prevent rendering exceptions `_ -------------------------------------------------------------------------------------------------------------------------------------------- Before Neos 5 it was only necessary to have a Fluid template and no Fusion prototype to work with nodes in Neos incl. the raw content mode. As the default Fusion prototype generator was disabled in Neos 5 and later removed in Neos 7, even a Fluid template was not enough anymore and this broke the old behaviour. Therefore a fallback renderer was added that will render a simple Fusion prototype which shows the elements label and editable properties and images. This way exceptions in the raw content mode due to missing prototypes should not happen anymore. The whole raw content mode will then be later refactored as new feature in `#376 `_ raw-content-fix-example * Packages: ``Neos`` `BUGFIX: Fusion Array.keys() on null if documentNode doesnt exist in GlobalCacheIdentifiers `_ ------------------------------------------------------------------------------------------------------------------------------------------------------------- https://neos-project.slack.com/archives/C050C8FEK/p1657807863902929 For example when using Fusion in an ajax request, with cache enabled - but no documentNode provided as context, then the calculation of the GlobalCacheIdentifiers fails due to the Eel helper beeing incorrectly used. * Packages: ``Neos`` `BUGFIX: Check for Imagick in DocumentThumbnailGenerator `_ -------------------------------------------------------------------------------------------------------------------------- The ``DocumentThumbnailGenerator`` will now (again) check for Imagick being the configured driver in ``canRefresh()``. If the ``imagick`` PHP extension is available and should be used even though Imagick is _not_ the driver for Imagine, a new feature flag can be turned on: ```yaml Neos: Media: thumbnailGenerators: Neos\\Media\\Domain\\Model\\ThumbnailGenerator\\DocumentThumbnailGenerator: # if set, the DocumentThumbnailGenerator will be used when possible, even if the # used Imagine driver would usually prohibit it's use (because GD doesn't do PDF) overrideImagineDriverCheck: true ``` If reading the source fails without an exception, an exception is raised and passed on from the ``refresh()`` method. This e.g. happens when the security policy of ImageMagick denies reading PDF files. * See: `#3678 `_ **Review instructions** To have ImageMagick deny reading of PDF, as is needed to check this, the policy must be changed to include - the policy is usually in a place like ``/etc/ImageMagick-6/policy.xml`` - for Local Beach it's inside the ``php`` container in ``/opt/flownative/php/build/extensions/imagick/policy.xml``. To be able to edit it, you must use ``docker exec -u root -it yourproject_php /bin/bash`` to become ``root`` inside the container. * Packages: ``Media.Browser`` ``Media`` `BUGFIX: Fix Dialog for user delete function on user-list `_ --------------------------------------------------------------------------------------------------------------------------- Since the introduction of the switch user feature the delete user function from the user-list did not work anymore. This was caused by adding the button by manipulating the inner html of the parent element. After that the confimation modal would not open anymore. This is solved by using ``appendChild`` instead of ``innerHtml +=`` to add the button. * Resolves: `#3830 `_ * Packages: ``Neos`` `BUGFIX: Adds missing documentation `_ ----------------------------------------------------------------------------------------------------- In Neos 7.0 we introduced the ``PropertyValue`` filter for node migrations. With this change, we extend the documentation as well. **Review instructions** Please proofread the documentation change. * Packages: ``Neos`` `BUGFIX: Do not treat every given value as string `_ ------------------------------------------------------------------------------------------------------------------- * Fixes: `#3801 `_ * Packages: ``ContentRepository`` `BUGFIX: Raise gedmo/doctrine-extensions dependency to ^3.5 `_ ----------------------------------------------------------------------------------------------------------------------------- This avoids errors caused by calls to the deprecated ``AbstractClassMetadataFactory::getCacheDriver()`` method. * Packages: ``Neos`` ``ContentRepository`` `BUGFIX: Apply array_filter to augmenter values to prevent rendering attributes for null values `_ ----------------------------------------------------------------------------------------------------------------------------------------------------------------- Originally the fusion augmenter only passed non falsy values to the HtmlAugmenter. This was changed by using the evaluateNestedProperties method (inherited from AbstractArrayFusionObject) instead ob the previously used sortNestedFusionKeys (inherited from JoinImplementation) plus custom loop. See: https://github.com/neos/neos-development-collection/pull/3645/files#diff-`40c9edd185fdb14a7c3b4b89b78f32b4fa58eba2 `_6d5e750b236ce730f45342b6 This is fixed by applying array_filter that will filter all falsy values (null | false). * Packages: ``Neos`` ``Fusion`` `TASK: Add new login wallpaper for Neos 8.1 `_ ------------------------------------------------------------------------------------------------------------- The image was chosen from the voting for 8.0, since we forgot to have a voting for 8.1. 😬 The image was placed second together with another one, but that was a bit too "springtime-y" for this release. 😇 Photo taken by Simon Schaufelberger, thanks! 📷 * Packages: ``Neos`` `TASK: Adjust Neos.DocTools settings `_ ------------------------------------------------------------------------------------------------------ See https://github.com/neos/doctools/pull/4 * Packages: ``Neos`` ``Media`` `TASK: Continue on error in ThumbnailGeneratorStrategy `_ ------------------------------------------------------------------------------------------------------------------------ This makes the ``ThumbnailGeneratorStrategy`` continue with the next available thumbnail generator in case ``refresh()`` failed. This allows for a "fallback" to be used in case thumbnail generation fails. Errors are logged to aid with debugging and if all generators fail another separate error is logged. See `#3678 `_ for some background info. **Upgrade instructions** * Packages: ``Media`` `TASK: Run checks against current database versions `_ --------------------------------------------------------------------------------------------------------------------- This change - updates the MariaDB version used for testing from 10.2 to 10.6. The former reaches EOL in May 2022 but 10.6 is the current LTS version supported until July 2026 - updates the PostgreSQL version used for testing from 9.5 (reached EOL in February 2021) to 10.x, the oldest still supported release - adds a nighty test against all supported PostgreSQL versions (10.x to 14.x) * Packages: ``Neos`` ``.github`` `TASK: Equalize indentation of Neos.Fusion:Match example in docs `_ ---------------------------------------------------------------------------------------------------------------------------------- - spaces and tabs were mixed up - came up while working on the neos fusion plugin for vscode No code changes. * Packages: ``Neos`` `TASK: fix typo in github issue template `_ ---------------------------------------------------------------------------------------------------------- * Packages: ``Neos`` ``.github`` `TASK: Delete apigen.yml `_ ------------------------------------------------------------------------------------------ The API documentation is discontinued, the tooling is outdated and no one cares for static documentation anymore. * Packages: ``Neos`` `TASK: Adjust issue and pr templates `_ ------------------------------------------------------------------------------------------------------ The templates now mention that the texts are used in change logs and explain the informations we need during review Should be merged together with: - https://github.com/neos/BuildEssentials/pull/61 - https://github.com/neos/flow-development-collection/pull/2837 * Packages: ``Neos`` ``.github`` `TASK: Destroy user sessions on certain actions `_ ----------------------------------------------------------------------------------------------------------------- This adds a new method UserService::destroyActiveSessionsForUser(User $user, bool $keepCurrentSession = false): void and calls the method when a user is deactivated, removed or when the password is changed. * Packages: ``Neos`` `TASK: Remove defaultInlineEditor setting `_ ----------------------------------------------------------------------------------------------------------- In version 8.0 the CKEditor 4 has been removed, and it is not possible to define a default editor anymore. * Packages: ``Neos`` `TASK: Add missing exclamation-triangle icon to error message `_ ------------------------------------------------------------------------------------------------------------------------------- When you see this error message style (``resource://Neos.Neos/Private/Templates/Error/Index.html``), an icon is missing. Before: !`screenshot-logopak localhost-2022 03 26-19_01_22 `_ After: !`screenshot-logopak localhost-2022 03 26-19_03_15 `_ * Packages: ``Neos`` `TASK: Add release notes `_ ------------------------------------------------------------------------------------------ * Packages: ``Neos`` `Detailed log `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~