Neos 8.1
This release of Neos comes with some great new features, bugfixes and a lot of modernisation of the existing code base.
As usual, we worked hard to keep this release as backwards compatible as possible but, since it’s a major release, some of the changes might require manual adjustments. So please make sure to carefully read the upgrade instructions below.
New Features
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>
}
Related issue: #3705
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:
The prototype
Neos.Fusion:Link.Action
is adjusted to useNeos.Fusion:ActionUri
instead ofNeos.Fusion:UriBuilder
for thehref
property.Documentation is added for
Neos.Fusion:Link.Action
andNeos.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.
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.
Related issue: #3792
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.
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.
Upgrade Instructions
See https://docs.neos.io/cms/references/upgrade-instructions/upgrade-instructions-8-0-8-1
Note
Additionally all changes in Flow 8.1 apply, see the release notes to further information. See https://flowframework.readthedocs.org/en/8.1/TheDefinitiveGuide/PartV/ReleaseNotes/810.html