Overview of merged pull requests
Previously autocreated childnodes like ContentCollections were ignored when discarding selected nodes via the workspace module.
When deleting a node and discarding the change the auto created children would then stay deleted in the database and the backend would show no content/errors.
The behaviour is now the same as for publishing nodes and the direct child nodes are included in the discard if the node has auto-created child nodes or is a document.
What I did
The first level node cache stores non existing nodes as null. This should have prevented repeated queries for the same non existing nodes. But isset returns false for a stored value of null in this case therefore saying that the node is unknown unstead of non existing, which triggers another db query. With this change, null is now returned and no additional query triggered by the context.
How I did it
The node cache returns the stored value of null instead of false.
How to verify it
Run test or manually query a CR context for non existing identifiers multiple times.
When rendering the Breadcrumb menu in a Content node, the Content node itself is no longer added to the menu.
This is done by replacing q(node).add(…) with q(documentNode).add(…)
What I did I suspected my problems described in #3382 are the result of outdated code in compiled sources. So I tried to rebuild them.
How I did it
``` cd Packages/Neos/Neos.Neos/ git clone -b 4.3 https://github.com/neos/neos-development-collection /tmp/neos-development-collection cp -a /tmp/neos-development-collection/Scripts/ Scripts/ cd Scripts/
mkdir gems bundler install –path gems
sed -i “s/ContentModuleBootstrap/LegacyUiBootstrap/; s/ContentModule-built/LegacyUiBootstrap-built/; s/Content\/Inspector\/.*,//g” build.js
and for the yarn part:
If you run removeUndefinedProperties of the ./flow node:repair command not all undefined properties get removed.
Currently the affected nodes get indexed by the node identifier. But this identifier is the same for all dimensions. So the list of nodes reflects all dimensions, but the actual removal just run on ONE node of any dimension. So you have to run the command n-times (n = number of dimensions).
Expected behavior Remove all undefined properties in all dimensions
Actual behavior Removes just undefinded properties of a node in one dimension
How to test
* Set up with more than one dimension
* Create a node with properties in more than one dimension
* Remove a property definition of that node
* run ./flow node:repair
* run again to see, if it had removed all properties in the run before
This enables a PHP 8 build and adjusts some things to achieve PHP8-compatibility of the code-base.
Thanks a lot to @gerdemann !
#3341 build failures made me aware of this
The comparison in this is wrong. Because the depth is 0-based, but the nodes returned by getNodesOnPath(…) contain the root node, less-than-or-equal must be used.
What I did and how I did it
Prevent node queries when is is clear that there would be an empty result
Prevent childnode count queries, when the children are already known due to previously cached query results for the same children
How to verify it
In the Neos page /en/features.html this reduces the number of queries from 138 to 133. In larger projects with more complex components this has a larger effect.
In a large project this reduced the SQL query count on one page from 1379 to 1115 (~23%) and the resulting rendering time by ~20%.
[x ] The PR is created against the lowest maintained branch
The condition in fluid evaluates the „referenceNodes“ and the result is not cached. Therefore when the variable is used for the output the whole code is evaluated again.
This has obviously been forgotten in the past… and since it’s not used by the new UI, that wasn’t noticed yet.
Updates the ClassMetadata Namespace from Doctrine\Common\Persistence\Mapping\ClassMetadata to
Removes optional parameters after mandatory parameters.