4.0.0 (2018-04-25)

Overview of merged pull requests

TASK: Fix icons in filter menu


  • Packages: Browser

TASK: Missing replace label


  • Packages: Browser

TASK: Fix the pencil icon in the mediabrowser

Look like pencil is only available in the pro version, we need to use pencil-alt

  • Packages: Browser ContentRepository

!!! TASK: Add very basic document prototype and template

Add very basic prototype and template to ensure Neos.NodeTypes:Page works out of the box.

This is marked breaking since it can lead to unexpected behaviour if you only have the page path defined. But it is fairly easy to get your project up to speed with minimal code changes. See: https://github.com/neos/Neos.Demo/pull/42 (page = Neos.NodeTypes:Page as a fallback)

  • Packages: NodeTypes

!!! FEATURE: Update auto-created ``Root.fusion`` to use prototypes instead of the ``page`` object

A freshly created site package will now create a page protoype that extends Neos.Neos:Page. Using /page can be seen as deprecated and packages that rely on extending page should be updated to extend the page prototype instead.

As a workaround the line page = Neos.NodeTypes:Page can be added to the Root.fusion as a fallback so extension points using the the page path as well as layout properties will still be in effect.

For further information see: http://neos.readthedocs.io/en/stable/HowTos/RenderingCustomDocumentTypes.html

  • Packages: Fusion SiteKickstarter

TASK: Larger ramfs for PostgreSQL builds on Travis CI

This switches builds using PostgreSQL to be sudo-enabled and enlarges the RAM disk at /var/ramfs to avoid “out of disk space” errors during the test runs.

Fixes: #2016

  • Packages: ContentRepository

Task/core migrations Neos.Neos

I run the core migrations for Neos.Neos


  • Packages: Neos

TASK: core migration for fontawesome5 usage and new icons for the old UI

<!– Thanks for your contribution, we appreciate it!

Please read through our pull request guidelines, there are some interesting things there: https://discuss.neos.io/t/creating-a-pull-request/506

And one more thing… Don’t forget about the tests! –>

Core Migration to adjust all icon names in YAML-Files to new fontawesome 5 icon names. Needed to review and test the PR which updates the Neos.Neos.Ui to fontawesome 5.

This PR can’t be merged until it adjusts the old Ui to support fontawesome5.


  • Packages: Neos

FEATURE: Support search by property & exact value in NodeDataRepository

Currently it is only possible to search through the properties by giving a string that matches for any key or value found in the jsonified properties field.

With this change, the term can also be an array to match exactly on a given key / value combination. The search term could be given as [‘key’ => ‘value’].

NEOS-1460 #close

  • Packages: Neos

DOCS: Disable editors

This PR adds documentation regarding the ability to disable Editors, which is added in this PR: https://github.com/neos/neos-ui/pull/1665

  • Packages: Neos

FEATURE: Assets sources support for Neos Media

This change introduces low-level support for third-party “asset sources” which allow for seamless integration of external asset management services.

The intention of this change is to establish a beta version of the API which can be used for developing first asset source plugins. The newly introduced API might change slightly during that process and thus should not be considered as stable. The native Neos asset source, which is part of this change, should work like it did before the introduction of this new feature.

  • Packages: Browser Neos

TASK: Adjust usage of packages to changes in Flow

  • Packages: ContentRepository Fusion

!!!TASK: Change default charset and collation to utf8mb4

This changes the charset and collation to create table statements in the existing migrations. This make sure the tables are set up correctly independent of the database default configuration.

This is breaking if you have existing tables that do not use ut8mb4 as charset and utf8mb4_unicode_ci as collation. To solve this you need to convert the existing tables. This can be done using the command:

./flow database:setcharset

This will convert the database configured in the settings and all tables inside to use a default character set of utf8mb4 and a default collation of utf8mb4_unicode_ci. It will also convert all character type columns to that combination of charset and collation.

Background information on why this is done can be found in https://medium.com/@adamhooper/in-mysql-never-use-utf8-use-utf8mb4-11761243e434

  • Packages: Neos

TASK: Add rel=”noopener” to external links with target=”_blank”

Check if an external link has a target="_blank" and if so add the attribute rel="noopener" to the tag for improved security.

More info https://mathiasbynens.github.io/rel-noopener/

TASK: Improve login screen accessibility

  • Added aria-label attributes to form fields
  • Added role=alert to error message to improve screen reader accessibility
  • Changed header tag to h1 (could break custom CSS that relies on the header tag)
  • Packages: Neos

TASK: Don’t show protected package property as that will go away

The protected property of packages doesn’t make much sense anymore now that disabling is gone. It will be removed in Flow and in preparation should no longer be shown here.

  • Packages: Media Neos

!!! FEATURE: Add `documentType` matcher to default-fusion that is evaluated before `default`

Add a documentType matcher before default matcher of the default fusion that checks wether a fusion-prototype named like the nodeType of the current documentNode exists and is renderable. If that is the case this prototype is rendered instead of default.

In addition the pr removes the prototype generators for ‘Neos.Neos:Node and Neos.Neos:Document. Those generators are neither actively used or promoted and since this feature is hardly usable it should be save to remove them. The reason to deactivate those fusion generators now is that the invisible fusion code got in the way of the protoype based document rendering we want to establish here.

Attention: If you use fusion-prototypes that have the same name as your documents but do not inherit from Neos.Neos:Page you will have to adjust your code. Same goes if you rely on the fusion prototypes that were autogenerated for ‘Neos.Neos:Node and Neos.Neos:Document.

  • Packages: ContentRepository Neos

BUGFIX: Adjustments after Doctrine updates

This adjusts some code in Neos to match the updated Doctrine DBAL and ORM libraries.

  • Packages: ContentRepository

TASK: Adjust to changed CacheAwareInterface

Adds the string return type declaration to getCacheEntryIdentifier().

TASK: Update to Doctrine DBAL 2.7 and ORM 2.6

  • Packages: Browser ContentRepository Fusion Media

TASK: Add translation for aria-labels of buttons introduced in neos/neos-ui#1595

<!– Thanks for your contribution, we appreciate it!

Please read through our pull request guidelines, there are some interesting things there: https://discuss.neos.io/t/creating-a-pull-request/506

And one more thing… Don’t forget about the tests! –>

What I did Added label translations for button aria labels How to verify it Check labels introduced in neos/neos-ui#1595

  • Packages: Neos

BUGFIX: NodeTemplateConverter::convertFrom must respect parent method…

This throw an error in PHP 7.2 (at least on the RC2)

  • Packages: ContentRepository

BUGFIX: Exclude shadow nodes in findOneByIdentifier

Added a filtering for movedTo like we already do in filterNodeDataByBestMatchInContext.

See description of the discovered behavior in https://github.com/neos/neos-ui/issues/1523#issuecomment-379247165.

Closes #1986

BUGFIX: Dynamic cache entries should be evaluated via runtime

Dynamic cache entries are complex and need a lot of information to be evaluated correctly, therefore the runtime should always take care of this. This is potentially a bit slower than the original code but definitely more correct in outcome. Before tags were definitely wrong as they were based on the parent elements configuration.

TASK: Remove deprecated methods

Removes deprecated methods that were marked for remove with Neos 4.0

Includes: Drop support for the .ts2 suffix especially the root.ts2 as fusion root file

  • Packages: Neos

BUGFIX: Avoid getPath() on null in LinkingService

When the context of the “resolved” node does not have a “current” site in LinkingService.createNodeUri() a fatal error was triggered. This adds a check and handles the case like a site node path mismatch.

  • Packages: Neos

BUGFIX: Skip CSRF protection in logout action

Since we overwrite the logoutAction from Flow, we need to annotate it with @Flow\SkipCsrfProtection here too.

see neos/flow-development-collection#1014

FEATURE: Expose NodeType.isOfType in Node eel helper

This introduces the Node.isOfType() eel method to check if a node is of a given type

  • Packages: Neos

TASK: Fix incorrect child node types in ``node:repair`` command

When checking for missing child nodes it doesn’t check if the existing child nodes are the correct node type. This can happen when a node has been changed to the fallback node type or if the child node type is changed in the configuration.

!!! TASK: Extract the `layout` root matcher from Neos.Neos and move it over to Neos.NodeTypes

Since the layout property is defined in Neos.NodeTypes, the layout-matcher is moved to Neos.NodeTypes aswell.

If your project relies on the layout or subpageLayout property but does not use Neos.NodeTypes you have to configure the layout matcher on your own.

  • Packages: Neos

TASK: Remove base prototype and template path from autogenerated fusion for Node and Document

The base prototypes and templatePathes are not set by the prototypeGenrator for Neos.Neos:Node and Neos.Neos:Document any more. For convenience reasons the prototypes for each NodeTypes are declared without base prototype and template all node properties are made accessible as fusion props.

  • Packages: Neos

FEATURE: Add `CanRender` Fusion prototype

The prototype checks wether the given type is renderable by fusion. Which means that the prototype exists and has an implementation class or is based on a prototype that has one.

  • Packages: Neos

BUGFIX: Fix Fusion exception after login to Neos

The Fusion configuration of neosBackendMetaData.attributes.data-preview-uri lacked a fully qualified Fusion object name, leading to an expansion to Neos.Fusion:NodeUri. That does not exist, leading to an exception right after login.

Fixes #1971

  • Packages: ContentRepository Neos

FEATURE: Add createMissingSitesNode to node:repair

When the /sites node is missing, Neos can work quite well, but at least removeOrphanNodes will wreck havoc! So this adds a task to create the sites node if missing.

Note: since removeOrphanNodes is in the CR, which has no notion of what the nodes inside it mean, this check was added “separately”.

  • Packages: Neos

BUGFIX: Fix asset references detection for nodes even more

Even after #1762 showing asset usage sometimes fails, with an error that can only be explained by documentNode being null when trying to render a reference.

This change adds another safety net for that case.

BUGFIX: Only move children with the same dimensionHash in setPath()

This changes the code in setPath() to no longer move all children across all dimension value combinations. Instead only children with the same dimensionsHash as the currently moved node will be moved along.

This avoids errors like the one described in #1696.

Fixes #1696

TASK: Also search for $searchTerm as identifier

What I did Added a search for NodeIdentifier when calling \Neos\Neos\Controller\Service\NodesController::indexAction().

That is very helpful, if you have to find one node under thousands (with same NodeType).

How I did it See the diff…

How to verify it Put an Identifier into a reference/references field in inspector. You should get the correct Node back. ![bildschirmfoto 2018-02-13 um 17 00 23](https://user-images.githubusercontent.com/9807101/36159821-ff9fb058-10df-11e8-831e-6a9c01b12736.png)

  • Packages: Neos

BUGFIX: Dynamic cache segments not correctly re-evaluated

… Only a test to expose the wrong behavior at this point.

Fixes: #1958

FEATURE: Allow custom attributes to be added to `ContentElementWrapping`

This extends the ContentElementWrapping in order to allow additional attributes to be added via Fusion or PHP.

This is useful to augment content and/or to affect its styling in the Neos backend.

Example (Fusion): Add the wrapped node’s type to a new data-_node-type attribute for all ContentElementWrapping instances:

prototype(Neos.Neos:ContentElementWrapping) {
    additionalAttributes {
        'data-_node-type' = ${node.nodeType.name}

Example (Fusion): Add a custom class attribute to a single instance:

@process.contentElementWrapping = Neos.Neos:ContentElementWrapping {
    additionalAttributes.class = 'some-additional-class'

Example (PHP):

$this->contentElementWrappingService->wrapContentObject($node, $output, $fusionPath, ['custom-attribute' => 'attribute-value']);

Resolves: #1879

  • Packages: Neos

TASK: Pass affected entities to flush as array, not one-by-one

The NodeDataRepository.persistEntities() method looped over the entities and passed them to flush() one-by-one. They can be passed as the array at hand directly.

  • Packages: ContentRepository

TASK: Make sure documentnodeidentifier index is not overlooked

The documentnodeidentifier index defined in NodeEvent is not picked up by Doctrine Migrations when generating a migration. This leads to it’s removal being included in new migrations, and it has actually been removed unnoticed in the past.

This change adds it to the Event class as well, so it is picked up correctly. See https://github.com/doctrine/doctrine2/issues/6248

  • Packages: Neos

TASK: Change NodeData movedTo from ManyToOne to OneToOne

A node can only be moved to one other node, so ManyToOne was never correct.

See https://github.com/neos/neos-development-collection/issues/1908

  • Packages: ContentRepository Neos

FEATURE: Add globbing to `site`,`user` and `domain` cli-commands

Add globbing to the follwing cli-commands:

  • site:prune
  • site:activate
  • site:deactivate
  • domain:delete
  • domain:activate
  • domain:deactivate
  • user:delete
  • user:activate
  • user:deactivate
  • user:addrole
  • user:removerole

Additionally the siteNode is made a required argument for site:prune. To still remove all sites ./flow site:prune “*” can be used.

  • Packages: Neos

!!! TASK: Scope fusion-namespaces to current file and remove default `Neos.Neos`-namespace

Namespaces were previously transported over include boundaries and thus could end up being declared in packages differently depending on how the Fusion code was included. This could easily lead to confusion.

With this change namespaces are handled like in PHP and are only valid for the Fusion file they are declared in.

In addition this removes the overwriting of the default namespace Neos.Fusion with Neos.Neos inside of Neos wich could lead to Fusion code failing if used in another context.

  • Packages: Fusion

BUGFIX: Add null check in getOtherNodeVariants()

This avoids a fatal error in case variants of the node are not accessible for some reason.

Fixes #1896

BUGFIX: Call `getAvailablePackages` in packages-module

The previously called method getActivePackages has been removed in a previous commit.

  • Packages: Neos

TASK: Improvements to the UserInitials view helper

Improves the UserInitials view helper a bit by removing the odd dot and the end of “fullFirstName” and trims the result. Additionally strips special characters from “initials”.

BUGFIX: Filtering of baseNodeType for create new dialog in trees

The “baseNodeType” filtering of allowed child node types was not implemented correctly leading to issues when using multiple allow node type filters.

Fixes: #1933

BUGFIX: Ensure account identifier is always added to events

For some events (e.g. copying) the account identifier is not set since it’s not initialized. Instead of doing it manually for each event type it’s done before generating an event so it’s always done.

Resolves: #1914

TASK: Improve history module event labels

Improves the labels by adding “the” to give it a better flow. Additionally ensures all labels are in quotation marks.

TASK: Remove whitespace from history module node link

Without it a space is inserted at first in the quoted link.

TASK: Order event log child events by their uid

Ensure that child events are ordered by their uid to ensure chronological order

BUGFIX: Fix two errors in media management caused by upmerge

This change adds a missing namespace import to AssetUsageInNodePropertiesStrategy and fixes references to label translations and a partial in the RelatedNodes template.

  • Packages: Browser Neos

BUGFIX: Enforce NodeTreePrivilege when filtering node tree

When using the search field or node type filter in the node tree, the NodeTreePrivilege policies aren’t taken into account.

Resolves #1867

BUGFIX: Fix asset references detection for nodes

This solves several issues with the implementation of asset usages

  • Can be used without logged in user (CLI)
  • Lists all references without resulting in errors
  • Speed gain if the usages are not actually needed (eg. only counted).

Gives minimal information about “inaccessible” references for now.

Also resolves #1599

DOCS: document creationDialog

Resolves: #1469

  • Packages: Neos

BUGFIX: Fix VH call quote escaping in RelatedAssets.html

A call to a VH inside another VH call was not using correctly escaped single quotes, breaking parsing.

TASK: Enable i18n for node creation dialog

In the same time, the “Title” label for a new Document node is added to the language files. The creationDialog configuration for this node type is inside Neos.Neos.Ui.

Fixes: neos/neos-ui#1539

  • Packages: Neos

BUGFIX: Declare mixin node types as abstract

The mixins in this package are not declared abstract. This leads to issues with Elasticsearch indexing. Abstract node types are not mapped, but these mixins are not abstract, thus they are mapped. Any mapping configuration that is applied to Neos.Neos:Node must therefore also be applied to all mixins, if any conflicts appear between fields (e.g. _all).

  • Packages: Neos NodeTypes

TASK: Improve NodePrivilege performance

Node privileges did a lot of unnecessary initialization and didn’t properly fetch the CompilingEvaluator instance possibly wasting cache hits.

This fixes some of those problems which should improve Node security performance quite a bit.

  • Packages: ContentRepository

TASK: ``ReadNodePrivilege`` evaluates EEL expression only once

The ReadNodePrivilege evaluates it’s EEL evaluator twice unnecessarily, there’s some caching however it should optimize some cases.

BUGFIX: Avoid errors on undefined array index

The use of the ternary operator with a potentially undefined array index leads to errors, this change uses the null-coalesce operator (??) instead.

> In particular, this operator does not emit a notice if the left-hand > side value does not exist, just like isset(). This is especially useful > on array keys.


  • Packages: ContentRepository

BUGFIX: Context structure tree only shows content

Changes the base node type filter used in the context structure tree to explicitly include content collections and content elements instead of everything that’s not a document node type.

Resolves #1784

BUGFIX: Use XliffService label override for Neos UI

Recently (Flow 4.2) introduced the feature to override labels from other packages or add own translations for other packages via neos/flow-development-collection#894. This was formerly suggested in JIRA-issue FLOW-61.

This works nicely but the Neos UI is not using \Neos\Neos\Service\XliffService. This Service deliveres a xliff-json that contains labels e.g. for the property editor. Currently you cannot override labels from other packages that are used in the property editor. \Neos\Neos\Service\XliffService::parseXliffToArray is annotated (todo) to be changed when FLOW-61 is resolved.

This change refactors the class to make use of \Neos\Flow\I18n\Xliff\Service\XliffFileProvider::getFile which handles the overrides.

  • Packages: Neos SiteKickstarter

BUGFIX: Let fusion render preview URIs for the Neos backend

Preview links are now generated via Fusion instead of Javascript

TASK: Rename folder for Node Migrations

With this change node migrations are expected to be located in a directory Migrations/ContentRepository.

For backwards compatibility migrations in Migrations/TYPO3CR are still supported.

Fixes: #1861

  • Packages: Browser ContentRepository Fusion Media Neos NodeTypes SiteKickstarter

BUGFIX: Adjust the flow command for generatexsd

The generatexsd command has a little typo in the documentation. So this fixes the command in the documentation.

Fixes: #1857

  • Packages: Neos

TASK: Remove any notion of `active` packages in package module

In preparation of removing active/deactivated states for packages we remove notion of that in the Neos package module.

TASK: Display changes in workspaces module when setting/unsetting a DateTime values

When a DateTime property value is either set for the first time or unset the workspace module will now show that change. Previously it would only display the change if the time was set changed to a different time.

BUGFIX: Corrected ContentReferences translation namespace

#1659 splits the Neos.NodeTypes package into separate packaged. In the translation rewrite script I had an error, so the Neos.NodeTypes.ContentReferences was set as Neos.NodeTypes.ContentReferences.ContentReferences instead of Neos.NodeTypes.ContentReferences. This bug makes sure that labels are correctly available.

  • Packages: ContentReferences

BUGFIX: Allow node transformations without setting

This change allows to create/use node transformations that do not use settings.

Without this change, one always had to provide dummy settings.

  • Packages: Browser ContentRepository NodeTypes

TASK: Document canvas width and height in editPreviewMode

What I did I added missing components in documentation for custom preview modes

How I did it I analysed the react frontend and found some editable variables for height and width. After searching the code for it, I found some optional variables, which were missing in the documentation. These variables are new and came with the new UI.

  • Packages: BaseMixins Browser Neos

TASK: Fix dependency version constraints

Following up the changes in Flow and the gedmo/doctrine-extensions update this change adjusts the required version of doctrine/dbal and raises the php version to 7.1 to match Flow.

TASK: Raise gedmo/doctrine-extensions requirement to ~2.4.0

After the required version of some dependencies have been raised in Flow, Neos cannot be installed as dev-master, since no installable set of dependencies can be computed.

This raises one suspect blocking this.

TASK: Check node migration filename before use

This makes sure node migrations not named as expected are detected and rejected properly.

  • Packages: Browser ContentRepository

TASK: Adjust Travis CI build matrix to use PHP 7.1+

As of https://github.com/neos/flow-development-collection/pull/1160 Flow requires PHP 7.1 or higher.

The master of Neos needs to follow, so this adjusts the Travis CI build matrix to skip PHP 7.0.

Additionally it removes some options no longer needed, since the required PostgreSQL versions are meanwhile available without any use of sudo in the default container infrastructure, as shown in

TASK: Tweak Travis CI build matrix

This removes some options no longer needed, since the required PostgreSQL versions are meanwhile available without any use of sudo in the default container infrastructure, as shown in

BUGFIX Inject missing ImageService into AssetService

PR #1597 has introduced a missing service injection.

The ImageService is used but never injected into AssetService.

See: https://github.com/neos/neos-development-collection/blob/master/Neos.Media/Classes/Domain/Service/AssetService.php#L269

  • Packages: Media Neos

TASK: Fix legacy mentions of TYPO3 in the documentation

Fixes documentation examples.

  • Packages: Neos

BUGFIX: Load thumbs in media browser asynchronous

When you open the media module with a lot of high-res images while the thumbnails are not already generated and cached, loading can take a long time without noticable feedback.

The templates use a setting not available since the media browser was split into it’s own package. Instead the setting needs to be read from the Media package.

  • Packages: Browser Neos

TASK: merge in labels from the new UI

We need to bring all UI labels in one place again to allow them to be translated. After this PR is merged, there’ll be a follow-up PR to update the labels used there.

  • Packages: Neos

TASK: define missing schema for the creation dialog elements

The creation dialog has been introduced in the new UI, for more details see here: https://github.com/neos/neos-ui/issues/1469

  • Packages: Neos

BUGFIX: Initialize overrideConfiguration in Fusion

Initialize overrideConfiguration as empty array so it’s not null when passed to the form template.

  • Packages: Form Neos

BUGFIX: Add missing dependency to Neos.NodeTypes.Form to Neos.NodeTypes

Add missing dependency for neos/nodetypes-form

  • Packages: Form NodeTypes

BUGFIX: Add index that should exist but does not

Adds an index that should exist but is not picked up by Doctrine, and thus was deleted by accident in 20170110130253.

See https://github.com/neos/neos-development-collection/pull/1375

  • Packages: Neos

BUGFIX: Off-by-one error in FlashMessage parameters

The title parameter was missing, so the other parameters were used in strange ways.

  • Packages: Neos

BUGFIX: Add missing neos/form dependency

This dependency was forgotten in the NodeTypes split.

  • Packages: Form Neos

BUGFIX: Add missing default value for weight of InterDimension/ContentSubgraph

Without that accessing getWeight caused a TypeError if no dimensions were configured since the getWeight method enforces the return-type array.

  • Packages: ContentRepository

BUGFIX: Add missing dependencies for Neos.NodeTypes.BaseMixins

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

BUGFIX: Fix Flow dev dependency for 3.2

Maybe we can automate that within the create-branch script