5.2.0 (2020-05-04)

Overview of merged pull requests

BUGFIX: Don’t override default button style in modules

The standard module stylesheet applied a lot of styles to <button>. With this change this only happens when using the backwards compatible „Full“ stylesheet as the Lite and Minimal (introduced with 5.2) shouldn’t interfere with the modules styles.

  • Packages: Neos

BUGFIX: Respect super types in CreateNodePrivilege

Fixes the createdNodeIsOfType() matcher so that it works respects the inheritance chain:

privilegeTargets:
‘Neos\ContentRepository\Security\Authorization\Privilege\Node\CreateNodePrivilege’:
‘Cornelsen.Webkatalog:Nodes.DisableCreation’:
matcher: ‘createdNodeIsOfType(“Some.Package:Some.Mixin”)’

Fixes: #2960

  • Packages: ContentRepository

TASK: Replace login wallpaper

Picture contributed by Matthias Widmer.

See: https://discuss.neos.io/t/neos-5-2-login-wallpaper/4912/8

  • Packages: Neos

BUGFIX: Fix rendering of URLs in link- end reference editors

This replaces the preview URL by a “breadcrumb” to the homepage node.

Note: Due to a separate bug in neos/neos-ui the breadcrumb is currently rendered twice, neos/neos-ui#2711 will fix that.

Fixes: #2965

  • Packages: AssetList BaseMixins Browser ColumnLayouts ContentReferences ContentRepository Form Html Navigation Neos NodeTypes

BUGFIX: NodeType inheritance is not working correct

FIXES: #2663

  • Packages: ContentRepository Neos

BUGFIX: Prevent black shapes in document thumbnails

What I did Tested with the following imagick versions:

    1. 6.7.8
    1. 6.9
    1. 7.0

How I did it

See below How to verify it

You can verifiy it by running this small code local:

```php <?php $filePath = ‘pdf.pdf[0]’; $width = 500; $height = 500;

$im = new \Imagick(); $im->setResolution(120, 120); $im->readImage($filePath); $im->setImageFormat(‘png’); $im->setImageBackgroundColor(‘white’); $im->setImageCompose(\Imagick::COMPOSITE_OVER);

if (method_exists($im, ‘mergeImageLayers’)) {
// Replace flattenImages in imagick 3.3.0 // @see https://pecl.php.net/package/imagick/3.3.0RC2 $im = $im->mergeImageLayers(\Imagick::LAYERMETHOD_MERGE);
} else {
$im->flattenImages();

}

if (defined(‘\Imagick::ALPHACHANNEL_OFF’)) {
// ImageMagick >= 7.0, Imagick >= 3.4.3RC1 // @see https://pecl.php.net/package/imagick/3.4.3RC1 $im->setImageAlphaChannel(\Imagick::ALPHACHANNEL_OFF);
} else {
$im->setImageAlphaChannel(\Imagick::ALPHACHANNEL_RESET);

}

$im->thumbnailImage($width, $height, true);

$im->writeImage(‘thumb.png’); $im->destroy(); ` * Packages: ``Media

BUGFIX: Neos.NodeTypes:Menu has no default class attribute

This fixes a previous breaking change where “Menu” node-type is not getting a default class attribute rendered for instance ‘neos-nodetypes-menu’ where a website’s stylesheet is relying on this CSS class

What I did In fusion prototype Neos.NodeTypes.Navigation:Navigation loaded fusion path ‘attributes.class.@process’ from Neos.Neos:Content. How I did it

How to verify it Add the Menu node type on the page and check in the console/page source it should have css class ‘neos-nodetypes-menu’ * Packages: Navigation

BUGFIX: change regex for selecting `<a href=”“>` Tag

fixe the behaviour when the a Tag is inside a Tag with the name beginning with a

Example: <article> test <a target=”_blank” href=”http://localhost/_Resources/01”>example1</a></article>

the function replaceLinkTargets returned <a target=”_blank”rticle> test <a target=”_blank” href=”http://localhost/_Resources/01”>example1</a></article>

create new test evaluateReplaceResourceLinkTargetsInsideTag

this issue was already fixed in 4.2 release on 5 Nov 2018

Fixes #2395

  • Packages: Neos

BUGFIX: Use correct default value for redirect in Neos SitesController

https://github.com/neos/flow-development-collection/commit/0cd533a64b44961fbe9e4b43ccc3fcf8e8325ab6 changed the default value of the $arguments parameter from null to [], so we must change it here too.

I found nowhere else where AbstractController->redirect() may be called with $arguments = null.

  • Packages: AssetList BaseMixins Browser ColumnLayouts ContentReferences ContentRepository Form Html Navigation Neos NodeTypes

Revert 2940 task/adjust to account interface

Reverts neos/neos-development-collection#2940 as it depends on neos/flow-development-collection#1939 which is not merged yet and it is unclear if this will land in 6.2 as is

  • Packages: Fusion Neos

FEATURE: Fusion performance optimization (lazy Component props)

What I did

  • Components provide a nice way to structure Fusion code but prevent lazy evaluation as Fusion does by default by eagerly evaluating all properties as props
  • If conditions are used inside the renderer, it’s quite probable that not all props are used - so a large amount of unnecessary evaluations could be performed (we measured that to be in the range of 20-30% in a larger project)

How I did it

  • Introduced a LazyProps object implementing ArrayAccess that evaluates the actually accessed props lazily (and caches the results)

How to verify it

  • Components work as before (there could be edge-cases where explicit array type annotations are used for props)
  • props are only evaluated if used (verified by test)

Resolves: #2793

  • Packages: Fusion

BUGFIX: Only count local assets within collections

Since collections only show up if the current asset source is local (“Neos”), we should not sum up all assets from external asset sources.

We do not support collections for external asset sources and the possibly much larger number is irritating, because when clicking the “All” link the user will only see the local assets.

  • Packages: Browser Neos

FEATURE: Reduced stylesheet for backend modules

The old stylesheets from pre-react times override a lot of basic styles for backend modules. This makes it hard to implement custom styles there or use our react ui components.

With this change it’s possible to configure a “Lite” and a “Minimal” variant of the Neos backend stylesheet via the module configuration.

The old “Main” stylesheet variant is kept for compatibility reasons.

The “Lite” stylesheet should be used with almost all modules and will also be used for the core modules. It also provides all relevant Neos CSS variables and is about 50% smaller than the old one.

The “Minimal” stylesheet should be used for modules that bring their own styles. For example modules that use the Neos react-components library. It also provides all relevant Neos CSS variables and is about 70% smaller than the old one.

Example:

```
Neos:
modules:
management: # Or any other module group
submodules:
myModule:
controller: \My\Site\Controller\MyModuleController label: ‘My module’ description: ‘My module’ icon: ‘fas fa-camera’ privilegeTarget: ‘My.Site:ManageMyModule’ mainStylesheet: ‘Lite’ # Or ‘Minimal’, default is ‘Main’

```

  • Packages: Neos

FEATURE: Nested Tags

This adds a naive implementation of nested tags using a parent field. It is intentionally not exposed in the UI, as nested Tags will be a feature of the new Media UI only.

#solves: https://github.com/Flowpack/media-ui/issues/3

  • Packages: Media

FEATURE: Reduce backend load time with nodetype schema cache

This prevents the generation of the nodetype schema on every backend reload.

Load times for Neos instances with lots of nodetypes are reduced by several seconds depending on the setup. Also the response has a cache header to allow the browser to keep the result longer.

This also helps in development context as the version parameter changes when the nodetypes change. Therefore changing Fusion and reloading is faster ;)

What I did

Cache the generated nodetype and vie schema

How I did it

Use the same caching behaviour as is already used for the xliff translations.

How to verify it

Load the backend twice and check response times. The difference in projects with many nodetypes is much larger.

  • Packages: Neos

FEATURE: Sortable NodeType Post processors

Allows a position to be specified in the NodeType postprocessors configuration:

```yaml ‘Some.Custom:NodeType’:

# … postprocessors:

SomeCustomTypePostprocessor:
position: ‘end’ postprocessor: ‘Some\TypePostprocessor’

```

Resolves: #2868

  • Packages: ContentRepository

FEATURE: Icons and description for asset sources

Icons and descriptions can now be provided by the asset source. The icon makes the asset source easier to identify while the description can provide further information or a link to the asset source as required by some free asset source API guidelines.

To make your AssetSources compatible with Neos 6.x add the methods * public function getIcon(): string * public function getDescription(): string;

to your asset source.

![image](https://user-images.githubusercontent.com/642226/76680571-e612d280-65e9-11ea-999b-e6e5932b6cdd.png)

solves: https://github.com/Flowpack/media-ui/issues/2 solves: https://github.com/Flowpack/media-ui/issues/1

  • Packages: Media

FEATURE: Upgrade to fontawesome 5.12.1

Fixes: #2880

  • Packages: BaseMixins Neos

FEATURE: Allow more than one authentication provider

What I did

Currently, only one authentication provider can be used with Neos as described in #940. I implemented the changes proposed by the issue creator to allow more than one authentication provider.

Although I tested it successfully, I might not be aware of all possible implications; it would be great if someone with a deeper insight into the security layer / user handling of Neos could have a look.

Please note: This PR does not cover the issues that arise when more than one account is associated with a single Neos user. It only allows one account per user (a limitation that already exists right now, though).

How I did it

Instead of always using the default authentication provider (Neos.Neos:Backend) to retrieve a user or username, the authentication provider associated with the respective account is used (also see #940).

  • Packages: BaseMixins Browser Neos

BUGFIX: Ensure node query by identifier uses strings

Due to how the query is handled using an integer node identifier in a query by identifier will not break but result in severe performance problems as the query will not use the index for identifier anymore. Casting to string prevents that.

To expose the problem you can simply try to run such a query with an integer instead of a string and you will see extreme performance degradation. Not giving numbers because it depends on the amount of nodes but it is VERY noticeable.

  • Packages: ContentRepository Neos

TASK: Adjust codebase to support new Account and Roles API

This change is to support the AccountInterface introduced in neos/flow-development-collection#1939

Cases covered is mentioned in #2938

Resolves #2938

  • Packages: Neos

TASK: Add Fusion performance benchmarks

What I did

  • Implemented performance benchmarks for the Fusion runtime with PHPBench

How I did it

  • Slight modification in Runtime to have an optional ControllerContext (since it’s hard to create outside of the bootstraped framework)
  • Created PHPBench benchmarks to measure evaluation times and to verify further performance improvements

How to verify it

Resolves: #2795

  • Packages: AssetList BaseMixins Browser ContentReferences Form Fusion Navigation Neos

BUGFIX: Only allow content nodetypes in content collections

This change makes sure that only nodetypes that inherit from Neos.Neos:Content are addable to Neos.Neos:ContentCollection as the comment of the nodetype specifically mentions.

Without this other nodetypes are reported as valid child types when getting the configuration from the NodeType class.

This caused only a problem when interacting with nodetypes via PHP as the UI already made sure you could not add something else than Content.

Resolves: #2894

  • Packages: Neos

TASK: update documentation link for formatCldr formats

The link given in the documentation leads to a 404, I have set the correct link

  • Packages: BaseMixins Neos

FEATURE: Keep tags and collections of assets when exporting sites

With this change tags and collections of assets are included in site exports to XML and are imported properly, too.

See also #2503 and #2537. Fixes #1097

  • Packages: BaseMixins Browser Media Neos

FEATURE: Freely position content collections

Together with https://github.com/neos/neos-ui/pull/2609 and https://github.com/neos/neos-ui/pull/2667 this change allows to have a Neos.Neos:Content nodetype that is also a Neos.Neos:ContentCollection and have one or more wrapping tags around the Fusion Neos.Neos:ContentCollection.

To specify the point for inserting children of a content collection in your markup, you add an attribute on the container element: data-__neos-insertion-anchor. If found, that container will be used for inserting new items, otherwise the parent element (as usual).

Without the change in the UI new nodes are added into the outermost div instead of the collection div.

  • Packages: Neos

TASK: Cleanup thumbnail service code

Fixes some code smells and does some code cleanup.

  • Packages: Media

BUGFIX: Fix version constraint after upmerge

Did miss that while up merging