diff --git a/Neos.ContentRepository.LegacyNodeMigration/Classes/NodeDataToEventsProcessor.php b/Neos.ContentRepository.LegacyNodeMigration/Classes/NodeDataToEventsProcessor.php
index e49d935dd6d..bb80143d9db 100644
--- a/Neos.ContentRepository.LegacyNodeMigration/Classes/NodeDataToEventsProcessor.php
+++ b/Neos.ContentRepository.LegacyNodeMigration/Classes/NodeDataToEventsProcessor.php
@@ -373,9 +373,9 @@ public function extractPropertyValuesAndReferences(array $nodeDataRow, NodeType
}
}
- // hiddenInIndex is stored as separate column in the nodedata table, but we need it as (internal) property
+ // hiddenInIndex is stored as separate column in the nodedata table, but we need it as property
if ($nodeDataRow['hiddeninindex']) {
- $properties['_hiddenInIndex'] = true;
+ $properties['hiddenInMenu'] = true;
}
if ($nodeType->isOfType(NodeTypeName::fromString('Neos.TimeableNodeVisibility:Timeable'))) {
diff --git a/Neos.ContentRepository.NodeAccess/Classes/FlowQueryOperations/FilterOperation.php b/Neos.ContentRepository.NodeAccess/Classes/FlowQueryOperations/FilterOperation.php
index 97d586a8e92..ea12e20c0b1 100644
--- a/Neos.ContentRepository.NodeAccess/Classes/FlowQueryOperations/FilterOperation.php
+++ b/Neos.ContentRepository.NodeAccess/Classes/FlowQueryOperations/FilterOperation.php
@@ -122,7 +122,7 @@ protected function getPropertyPath($element, $propertyPath)
if ($propertyPath === '_identifier') {
// TODO: deprecated (Neos <9 case)
return $element->nodeAggregateId->value;
- } elseif ($propertyPath[0] === '_' && $propertyPath !== '_hiddenInIndex') {
+ } elseif ($propertyPath[0] === '_') {
return ObjectAccess::getPropertyPath($element, substr($propertyPath, 1));
} else {
return $element->getProperty($propertyPath);
diff --git a/Neos.Neos/Classes/Fusion/AbstractMenuItemsImplementation.php b/Neos.Neos/Classes/Fusion/AbstractMenuItemsImplementation.php
index 23f8055dc8a..7595c4f060e 100644
--- a/Neos.Neos/Classes/Fusion/AbstractMenuItemsImplementation.php
+++ b/Neos.Neos/Classes/Fusion/AbstractMenuItemsImplementation.php
@@ -24,15 +24,10 @@
* Base class for Menu and DimensionsMenu
*
* Main Options:
- * - renderHiddenInIndex: if TRUE, hidden-in-index nodes will be shown in the menu. FALSE by default.
+ * - renderHiddenInMenu: if TRUE, nodes with the property ``hiddenInMenu`` will be shown in the menu. FALSE by default.
*/
abstract class AbstractMenuItemsImplementation extends AbstractFusionObject
{
- public const STATE_NORMAL = 'normal';
- public const STATE_CURRENT = 'current';
- public const STATE_ACTIVE = 'active';
- public const STATE_ABSENT = 'absent';
-
/**
* An internal cache for the built menu items array.
*
@@ -46,11 +41,11 @@ abstract class AbstractMenuItemsImplementation extends AbstractFusionObject
protected $currentNode;
/**
- * Internal cache for the renderHiddenInIndex property.
+ * Internal cache for the renderHiddenInMenu property.
*
* @var boolean
*/
- protected $renderHiddenInIndex;
+ protected $renderHiddenInMenu;
/**
* Internal cache for the calculateItemStates property.
@@ -76,17 +71,15 @@ public function isCalculateItemStatesEnabled(): bool
}
/**
- * Should nodes that have "hiddenInIndex" set still be visible in this menu.
- *
- * @return boolean
+ * Should nodes that have "hiddenInMenu" set still be visible in this menu.
*/
- public function getRenderHiddenInIndex()
+ public function getRenderHiddenInMenu(): bool
{
- if ($this->renderHiddenInIndex === null) {
- $this->renderHiddenInIndex = (bool)$this->fusionValue('renderHiddenInIndex');
+ if ($this->renderHiddenInMenu === null) {
+ $this->renderHiddenInMenu = (bool)$this->fusionValue('renderHiddenInMenu');
}
- return $this->renderHiddenInIndex;
+ return $this->renderHiddenInMenu;
}
/**
@@ -139,7 +132,7 @@ abstract protected function buildItems(): array;
/**
* Return TRUE/FALSE if the node is currently hidden or not in the menu;
- * taking the "renderHiddenInIndex" configuration of the Menu Fusion object into account.
+ * taking the "renderHiddenInMenu" configuration of the Menu Fusion object into account.
*
* This method needs to be called inside buildItems() in the subclasses.
*
@@ -148,14 +141,14 @@ abstract protected function buildItems(): array;
*/
protected function isNodeHidden(Node $node)
{
- if ($this->getRenderHiddenInIndex() === true) {
- // Please show hiddenInIndex nodes
+ if ($this->getRenderHiddenInMenu() === true) {
+ // Please show hiddenInMenu nodes
// -> node is *never* hidden!
return false;
}
- // Node is hidden depending on the _hiddenInIndex property
- return $node->getProperty('_hiddenInIndex');
+ // Node is hidden depending on the hiddenInMenu property
+ return $node->getProperty('hiddenInMenu');
}
protected function buildUri(Node $node): string
diff --git a/Neos.Neos/Classes/Fusion/Helper/NodeHelper.php b/Neos.Neos/Classes/Fusion/Helper/NodeHelper.php
index 33c5e84c6ce..f79add7ba04 100644
--- a/Neos.Neos/Classes/Fusion/Helper/NodeHelper.php
+++ b/Neos.Neos/Classes/Fusion/Helper/NodeHelper.php
@@ -21,6 +21,7 @@
use Neos\ContentRepository\Core\Projection\ContentGraph\Filter\FindAncestorNodesFilter;
use Neos\ContentRepository\Core\Projection\ContentGraph\Node;
use Neos\ContentRepository\Core\Projection\ContentGraph\NodePath;
+use Neos\ContentRepository\Core\Projection\NodeHiddenState\NodeHiddenStateFinder;
use Neos\ContentRepositoryRegistry\ContentRepositoryRegistry;
use Neos\Eel\ProtectedContextAwareInterface;
use Neos\Flow\Annotations as Flow;
diff --git a/Neos.Neos/Documentation/References/NeosFusionReference.rst b/Neos.Neos/Documentation/References/NeosFusionReference.rst
index 113099e9115..bc26a54be82 100644
--- a/Neos.Neos/Documentation/References/NeosFusionReference.rst
+++ b/Neos.Neos/Documentation/References/NeosFusionReference.rst
@@ -927,7 +927,7 @@ The following properties are passed over to :ref:`Neos_Neos__MenuItems` internal
:maximumLevels: (integer) Restrict the maximum depth of items in the menu (relative to ``entryLevel``)
:startingPoint: (optional, Node) The node where the menu hierarchy starts. If not specified explicitly the startingPoint is calculated from (``node`` and ``entryLevel``), defaults to ``null``
:filter: (string) Filter items by node type (e.g. ``'!My.Site:News,Neos.Neos:Document'``), defaults to ``'Neos.Neos:Document'``. The filter is only used for fetching subItems and is ignored for determining the ``startingPoint``
-:renderHiddenInIndex: (boolean) Whether nodes with ``hiddenInIndex`` should be rendered, defaults to ``false``
+:renderHiddenInMenu: (boolean) Whether nodes with the property ``hiddenInMenu`` should be rendered, defaults to ``false``
:calculateItemStates: (boolean) activate the *expensive* calculation of item states defaults to ``false``.
:itemCollection: (optional, array of Nodes) Explicitly set the Node items for the menu (taking precedence over ``startingPoints`` and ``entryLevel`` and ``lastLevel``). The children for each ``Node`` will be fetched taking the ``maximumLevels`` property into account.
@@ -957,7 +957,7 @@ The following properties are passed over to :ref:`Neos_Neos__BreadcrumbMenuItems
:node: (Node) The current node to render the menu for. Defaults to ``documentNode`` from the fusion context
:maximumLevels: (integer) Restrict the maximum depth of items in the menu, defaults to ``0``
-:renderHiddenInIndex: (boolean) Whether nodes with ``hiddenInIndex`` should be rendered (the current documentNode is always included), defaults to ``false``.
+:renderHiddenInMenu: (boolean) Whether nodes with the property ``hiddenInMenu`` should be rendered (the current documentNode is always included), defaults to ``false``.
:calculateItemStates: (boolean) activate the *expensive* calculation of item states defaults to ``false``
Example::
@@ -986,7 +986,7 @@ The following fusion properties are passed over to :ref:`Neos_Neos__DimensionsMe
:dimension: (optional, string): name of the dimension which this menu should be based on. Example: "language".
:presets: (optional, array): If set, the presets rendered will be taken from this list of preset identifiers
:includeAllPresets: (boolean, default **false**) If TRUE, include all presets, not only allowed combinations
-:renderHiddenInIndex: (boolean, default **true**) If TRUE, render nodes which are marked as "hidded-in-index"
+:renderHiddenInMenu: (boolean, default **true**) Whether nodes with the property ``hiddenInMenu`` should be rendered
:calculateItemStates: (boolean) activate the *expensive* calculation of item states defaults to ``false``
.. note:: The ``items`` of the ``DimensionsMenu`` are internally calculated with the prototype :ref:`Neos_Neos__DimensionsMenuItems` which
@@ -1017,7 +1017,7 @@ Create a list of menu-items items for nodes.
:maximumLevels: (integer) Restrict the maximum depth of items in the menu (relative to ``entryLevel``)
:startingPoint: (optional, Node) The node where the menu hierarchy starts. If not specified explicitly the startingPoint is calculated from (``node`` and ``entryLevel``), defaults to ``null``
:filter: (string) Filter items by node type (e.g. ``'!My.Site:News,Neos.Neos:Document'``), defaults to ``'Neos.Neos:Document'``. The filter is only used for fetching subItems and is ignored for determining the ``startingPoint``
-:renderHiddenInIndex: (boolean) Whether nodes with ``hiddenInIndex`` should be rendered, defaults to ``false``
+:renderHiddenInMenu: (boolean) Whether nodes with the property ``hiddenInMenu`` should be rendered, defaults to ``false``
:calculateItemStates: (boolean) activate the *expensive* calculation of item states defaults to ``false``.
:itemCollection: (optional, array of Nodes) Explicitly set the Node items for the menu (taking precedence over ``startingPoints`` and ``entryLevel`` and ``lastLevel``). The children for each ``Node`` will be fetched taking the ``maximumLevels`` property into account.
@@ -1084,7 +1084,7 @@ Create a list of of menu-items for the breadcrumb (ancestor documents).
:node: (Node) The current node to render the menu for. Defaults to ``documentNode`` from the fusion context
:maximumLevels: (integer) Restrict the maximum depth of items in the menu, defaults to ``0``
-:renderHiddenInIndex: (boolean) Whether nodes with ``hiddenInIndex`` should be rendered (the current documentNode is always included), defaults to ``false``.
+:renderHiddenInMenu: (boolean) Whether nodes with the property ``hiddenInMenu`` should be rendered (the current documentNode is always included), defaults to ``false``.
:calculateItemStates: (boolean) activate the *expensive* calculation of item states defaults to ``false``
Example::
@@ -1107,7 +1107,7 @@ If no node variant exists for the preset combination, a ``NULL`` node will be in
:dimension: (optional, string): name of the dimension which this menu should be based on. Example: "language".
:presets: (optional, array): If set, the presets rendered will be taken from this list of preset identifiers
:includeAllPresets: (boolean, default **false**) If TRUE, include all presets, not only allowed combinations
-:renderHiddenInIndex: (boolean, default **true**) If TRUE, render nodes which are marked as "hidded-in-index"
+:renderHiddenInMenu: (boolean, default **true**) If TRUE, render nodes which are marked as "hidded-in-menu"
:calculateItemStates: (boolean) activate the *expensive* calculation of item states defaults to ``false``
Each ``item`` has the following properties:
diff --git a/Neos.Neos/NodeTypes/Mixin/Document.yaml b/Neos.Neos/NodeTypes/Mixin/Document.yaml
index 6fdfbaf2eda..c3277bf4344 100644
--- a/Neos.Neos/NodeTypes/Mixin/Document.yaml
+++ b/Neos.Neos/NodeTypes/Mixin/Document.yaml
@@ -59,7 +59,7 @@
_hidden:
ui:
reloadPageIfChanged: true
- _hiddenInIndex:
+ hiddenInMenu:
type: boolean
ui:
label: i18n
diff --git a/Neos.Neos/Resources/Private/Fusion/Prototypes/BreadcrumbMenu.fusion b/Neos.Neos/Resources/Private/Fusion/Prototypes/BreadcrumbMenu.fusion
index 0da25707ac1..2c0be2b2649 100644
--- a/Neos.Neos/Resources/Private/Fusion/Prototypes/BreadcrumbMenu.fusion
+++ b/Neos.Neos/Resources/Private/Fusion/Prototypes/BreadcrumbMenu.fusion
@@ -11,8 +11,8 @@ prototype(Neos.Neos:BreadcrumbMenu) < prototype(Neos.Fusion:Component) {
# (integer) Restrict the maximum depth of items in the menu, defaults to ``0``
maximumLevels = 0
- # (boolean) Whether nodes with ``hiddenInIndex`` should be rendered (the current documentNode is always included), defaults to ``false``.
- renderHiddenInIndex = true
+ # (boolean) Whether nodes with the property ``hiddenInMenu`` should be rendered (the current documentNode is always included), defaults to ``false``.
+ renderHiddenInMenu = true
# (boolean) activate the *expensive* calculation of item states defaults to ``false``
calculateItemStates = false
@@ -21,7 +21,7 @@ prototype(Neos.Neos:BreadcrumbMenu) < prototype(Neos.Fusion:Component) {
items = Neos.Neos:BreadcrumbMenuItems {
node = ${props.node}
maximumLevels = ${props.maximumLevels}
- renderHiddenInIndex = ${props.renderHiddenInIndex}
+ renderHiddenInMenu = ${props.renderHiddenInMenu}
calculateItemStates = ${props.calculateItemStates}
}
}
diff --git a/Neos.Neos/Resources/Private/Fusion/Prototypes/BreadcrumbMenuItems.fusion b/Neos.Neos/Resources/Private/Fusion/Prototypes/BreadcrumbMenuItems.fusion
index 8b128ba4eb8..1fe593d93d5 100644
--- a/Neos.Neos/Resources/Private/Fusion/Prototypes/BreadcrumbMenuItems.fusion
+++ b/Neos.Neos/Resources/Private/Fusion/Prototypes/BreadcrumbMenuItems.fusion
@@ -6,8 +6,8 @@ prototype(Neos.Neos:BreadcrumbMenuItems) < prototype(Neos.Fusion:Component) {
# (integer) Restrict the maximum depth of items in the menu, defaults to ``0``
maximumLevels = 0
- # (boolean) Whether nodes with ``hiddenInIndex`` should be rendered (the current documentNode is always included), defaults to ``false``.
- renderHiddenInIndex = true
+ # (boolean) Whether nodes with the property ``hiddenInMenu`` should be rendered (the current documentNode is always included), defaults to ``false``.
+ renderHiddenInMenu = true
# (boolean) activate the *expensive* calculation of item states defaults to ``false``
calculateItemStates = false
@@ -16,7 +16,7 @@ prototype(Neos.Neos:BreadcrumbMenuItems) < prototype(Neos.Fusion:Component) {
parentItems = Neos.Neos:MenuItems {
node = ${props.node}
calculateItemStates = ${props.calculateItemStates}
- renderHiddenInIndex = ${props.renderHiddenInIndex}
+ renderHiddenInMenu = ${props.renderHiddenInMenu}
maximumLevels = ${props.maximumLevels}
itemCollection = ${Array.reverse(q(documentNode).parents('[instanceof Neos.Neos:Document]').get())}
}
@@ -24,7 +24,7 @@ prototype(Neos.Neos:BreadcrumbMenuItems) < prototype(Neos.Fusion:Component) {
currentItem = Neos.Neos:MenuItems {
node = ${props.node}
calculateItemStates = ${props.calculateItemStates}
- renderHiddenInIndex = true
+ renderHiddenInMenu = true
maximumLevels = ${props.maximumLevels}
itemCollection = ${[documentNode]}
}
diff --git a/Neos.Neos/Resources/Private/Fusion/Prototypes/DimensionsMenu.fusion b/Neos.Neos/Resources/Private/Fusion/Prototypes/DimensionsMenu.fusion
index d5a75fb9ff6..599746ba283 100644
--- a/Neos.Neos/Resources/Private/Fusion/Prototypes/DimensionsMenu.fusion
+++ b/Neos.Neos/Resources/Private/Fusion/Prototypes/DimensionsMenu.fusion
@@ -6,8 +6,8 @@ prototype(Neos.Neos:DimensionsMenu) < prototype(Neos.Fusion:Component) {
# html attributes for the rendered list
attributes = Neos.Fusion:DataStructure
- # (boolean, default **true**) If TRUE, render nodes which are marked as "hidded-in-index"
- renderHiddenInIndex = true
+ # (boolean, default **true**) Whether nodes with the property ``hiddenInMenu`` should be rendered
+ renderHiddenInMenu = true
# (optional, string): name of the dimension which this menu should be based on. Example: "language".
dimension = null
@@ -24,7 +24,7 @@ prototype(Neos.Neos:DimensionsMenu) < prototype(Neos.Fusion:Component) {
@private {
items = Neos.Neos:DimensionsMenuItems {
node = ${props.node}
- renderHiddenInIndex = ${props.renderHiddenInIndex}
+ renderHiddenInMenu = ${props.renderHiddenInMenu}
dimension = ${props.dimension}
presets = ${props.presets}
includeAllPresets = ${props.includeAllPresets}
diff --git a/Neos.Neos/Resources/Private/Fusion/Prototypes/DimensionsMenuItems.fusion b/Neos.Neos/Resources/Private/Fusion/Prototypes/DimensionsMenuItems.fusion
index 55629907ada..d45f3d09083 100644
--- a/Neos.Neos/Resources/Private/Fusion/Prototypes/DimensionsMenuItems.fusion
+++ b/Neos.Neos/Resources/Private/Fusion/Prototypes/DimensionsMenuItems.fusion
@@ -4,8 +4,8 @@ prototype(Neos.Neos:DimensionsMenuItems) {
# (Node) The current node. Defaults to ``node`` from the fusion context
node = ${documentNode}
- # (boolean, default **true**) If TRUE, render nodes which are marked as "hidded-in-index"
- renderHiddenInIndex = true
+ # (boolean, default **true**) Whether nodes with the property ``hiddenInMenu`` should be rendered
+ renderHiddenInMenu = true
# (optional, string): name of the dimension which this menu should be based on. Example: "language".
dimension = null
diff --git a/Neos.Neos/Resources/Private/Fusion/Prototypes/Menu.fusion b/Neos.Neos/Resources/Private/Fusion/Prototypes/Menu.fusion
index c435eb45e3c..4c0e00360da 100644
--- a/Neos.Neos/Resources/Private/Fusion/Prototypes/Menu.fusion
+++ b/Neos.Neos/Resources/Private/Fusion/Prototypes/Menu.fusion
@@ -22,8 +22,8 @@ prototype(Neos.Neos:Menu) < prototype(Neos.Fusion:Component) {
# (string) Filter items by node type (e.g. ``'!My.Site:News,Neos.Neos:Document'``), defaults to ``'Neos.Neos:Document'``. The filter is only used for fetching subItems and is ignored for determining the ``startingPoint``
filter = 'Neos.Neos:Document'
- # (boolean) Whether nodes with ``hiddenInIndex`` should be rendered, defaults to ``false``
- renderHiddenInIndex = false
+ # (boolean) Whether nodes with the property ``hiddenInMenu`` should be rendered, defaults to ``false``
+ renderHiddenInMenu = false
# (boolean) activate the *expensive* calculation of item states defaults to ``false``.
calculateItemStates = false
@@ -40,7 +40,7 @@ prototype(Neos.Neos:Menu) < prototype(Neos.Fusion:Component) {
maximumLevels = ${props.maximumLevels}
startingPoint = ${props.startingPoint}
filter = ${props.filter}
- renderHiddenInIndex = ${props.renderHiddenInIndex}
+ renderHiddenInMenu = ${props.renderHiddenInMenu}
calculateItemStates = ${props.calculateItemStates}
itemCollection = ${props.itemCollection}
}
diff --git a/Neos.Neos/Resources/Private/Fusion/Prototypes/MenuItems.fusion b/Neos.Neos/Resources/Private/Fusion/Prototypes/MenuItems.fusion
index edf6bc37c60..c11b9762844 100644
--- a/Neos.Neos/Resources/Private/Fusion/Prototypes/MenuItems.fusion
+++ b/Neos.Neos/Resources/Private/Fusion/Prototypes/MenuItems.fusion
@@ -19,8 +19,8 @@ prototype(Neos.Neos:MenuItems) {
# (string) Filter items by node type (e.g. ``'!My.Site:News,Neos.Neos:Document'``), defaults to ``'Neos.Neos:Document'``. The filter is only used for fetching subItems and is ignored for determining the ``startingPoint``
filter = 'Neos.Neos:Document'
- # (boolean) Whether nodes with ``hiddenInIndex`` should be rendered, defaults to ``false``
- renderHiddenInIndex = false
+ # (boolean) Whether nodes with the property ``hiddenInMenu`` should be rendered, defaults to ``false``
+ renderHiddenInMenu = false
# (boolean) activate the *expensive* calculation of item states defaults to ``false``.
calculateItemStates = false
diff --git a/Neos.Neos/Resources/Private/Styles/_Tree.scss b/Neos.Neos/Resources/Private/Styles/_Tree.scss
index bdf01001691..ee25d121a8b 100644
--- a/Neos.Neos/Resources/Private/Styles/_Tree.scss
+++ b/Neos.Neos/Resources/Private/Styles/_Tree.scss
@@ -54,6 +54,7 @@ ul.neos-tree-container {
}
}
+ /* todo legacy, should now be named hiddenInMenu */
&.neos-hiddenInIndex {
span + span {
opacity: 0.5;
diff --git a/Neos.Neos/Resources/Private/Translations/ar/NodeTypes/Document.xlf b/Neos.Neos/Resources/Private/Translations/ar/NodeTypes/Document.xlf
index 74a8a479afe..d7c188cdda8 100644
--- a/Neos.Neos/Resources/Private/Translations/ar/NodeTypes/Document.xlf
+++ b/Neos.Neos/Resources/Private/Translations/ar/NodeTypes/Document.xlf
@@ -14,9 +14,9 @@
جزء من مسار URL
-
-
- إخفاء في القوائم
+
+
+ إخفاء في القوائم