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 <https://user-images.githubusercontent.com/1309380/175993575-986fed63-9c9d-4a06-ac95-d51296b96530.png>`_

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`
<div style=”display:grid; grid-template-columns: 1fr 1fr; grid-gap: 16px;”>

<div><Neos.Neos:RawContent.NodeChildren @context.node={q(node).children(‘column0’).get(0)} /></div> <div><Neos.Neos:RawContent.NodeChildren @context.node={q(node).children(‘column1’).get(0)} /></div>

</div>

`

}

  • Resolves: #3705

  • Packages: Fusion Neos

FEATURE: Introduce `Neos.Fusion:ActionUri as replacement for Neos.Fusion:UriBuilder <https://github.com/neos/neos-development-collection/pull/3826>`_

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 <https://github.com/neos/neos-development-collection/pull/3814>`_

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 <https://user-images.githubusercontent.com/39345336/166480201-c1c43309-0c9d-453f-9722-aca812809b12.gif>`_

  • 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

<img width=”852” alt=”raw-content-fix-example” src=”https://user-images.githubusercontent.com/596967/168566285-56f42c40-4cf5-4108-b907-05bd472550b9.png”>

  • 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.

Review instructions

To have ImageMagick deny reading of PDF, as is needed to check this, the policy must be changed to include

<policy domain=”coder” rights=”none” pattern=”PDF” />

  • 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 <https://github.com/neos/neos-development-collection/commit/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 <https://user-images.githubusercontent.com/1208133/160251760-a96f989b-0491-4f24-8c7b-a50cb4c07351.png>`_

After: !`screenshot-logopak localhost-2022 03 26-19_03_15 <https://user-images.githubusercontent.com/1208133/160251805-7bc2c476-af00-44b7-a202-b2fa07081708.png>`_

  • Packages: Neos

TASK: Add release notes

  • Packages: Neos

Detailed log