From 6807ac606ca46c40c7b1cd76734a55b98ed8241e Mon Sep 17 00:00:00 2001 From: Denny Lubitz Date: Tue, 2 Jan 2024 20:10:06 +0100 Subject: [PATCH 1/5] FEATURE Add timeable node visibility --- Classes/Fusion/Helper/NodeInfoHelper.php | 4 ++-- .../Containers/LeftSideBar/NodeTree/Node/index.js | 12 +----------- 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/Classes/Fusion/Helper/NodeInfoHelper.php b/Classes/Fusion/Helper/NodeInfoHelper.php index 5ebbca8ef1..168e70e2a3 100644 --- a/Classes/Fusion/Helper/NodeInfoHelper.php +++ b/Classes/Fusion/Helper/NodeInfoHelper.php @@ -126,8 +126,8 @@ public function renderNodeWithMinimalPropertiesAndChildrenInformation( $node->nodeAggregateId )->isHidden, '_hiddenInIndex' => $node->getProperty('_hiddenInIndex'), - //'_hiddenBeforeDateTime' => $node->getHiddenBeforeDateTime() instanceof \DateTimeInterface, - //'_hiddenAfterDateTime' => $node->getHiddenAfterDateTime() instanceof \DateTimeInterface, + '_hiddenBeforeDateTime' => $node->getProperty('hiddenBeforeDateTime') instanceof \DateTimeInterface ? $node->getProperty('hiddenBeforeDateTime')->format(\DateTime::W3C) : '', + '_hiddenAfterDateTime' => $node->getProperty('hiddenAfterDateTime') instanceof \DateTimeInterface ? $node->getProperty('hiddenAfterDateTime')->format(\DateTime::W3C) : '', ]; if ($controllerContext !== null) { diff --git a/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js b/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js index 08e8510fc5..0e1c2edfc3 100644 --- a/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js +++ b/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js @@ -174,21 +174,11 @@ export default class Node extends PureComponent { const isHiddenBefore = node?.properties?._hiddenBeforeDateTime; const isHiddenAfter = node?.properties?._hiddenAfterDateTime; - if (isHidden) { - return ( - - - - - - ); - } - if (isHiddenBefore || isHiddenAfter) { let isCurrentlyHidden = false; isCurrentlyHidden = isHiddenBefore && moment(isHiddenBefore).isAfter(moment()) ? true : isCurrentlyHidden; isCurrentlyHidden = isHiddenAfter && moment(isHiddenAfter).isBefore(moment()) ? true : isCurrentlyHidden; - const circleColor = isCurrentlyHidden ? 'error' : 'primaryBlue'; + const circleColor = isCurrentlyHidden && isHidden ? 'error' : 'primaryBlue'; return ( From 47194e9cbc39274ff8dee0173aa0a84aa625556c Mon Sep 17 00:00:00 2001 From: Denny Lubitz Date: Wed, 3 Jan 2024 15:21:21 +0100 Subject: [PATCH 2/5] FEATURE Add timeable node visibility - Rename properties --- Classes/Fusion/Helper/NodeInfoHelper.php | 4 ++-- .../neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Classes/Fusion/Helper/NodeInfoHelper.php b/Classes/Fusion/Helper/NodeInfoHelper.php index 168e70e2a3..5faa5e3c27 100644 --- a/Classes/Fusion/Helper/NodeInfoHelper.php +++ b/Classes/Fusion/Helper/NodeInfoHelper.php @@ -126,8 +126,8 @@ public function renderNodeWithMinimalPropertiesAndChildrenInformation( $node->nodeAggregateId )->isHidden, '_hiddenInIndex' => $node->getProperty('_hiddenInIndex'), - '_hiddenBeforeDateTime' => $node->getProperty('hiddenBeforeDateTime') instanceof \DateTimeInterface ? $node->getProperty('hiddenBeforeDateTime')->format(\DateTime::W3C) : '', - '_hiddenAfterDateTime' => $node->getProperty('hiddenAfterDateTime') instanceof \DateTimeInterface ? $node->getProperty('hiddenAfterDateTime')->format(\DateTime::W3C) : '', + 'enableAfterDateTime' => $node->getProperty('enableAfterDateTime') instanceof \DateTimeInterface ? $node->getProperty('enableAfterDateTime')->format(\DateTime::W3C) : '', + 'disableAfterDateTime' => $node->getProperty('disableAfterDateTime') instanceof \DateTimeInterface ? $node->getProperty('disableAfterDateTime')->format(\DateTime::W3C) : '', ]; if ($controllerContext !== null) { diff --git a/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js b/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js index 0e1c2edfc3..a73e65c855 100644 --- a/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js +++ b/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js @@ -171,8 +171,8 @@ export default class Node extends PureComponent { const {node} = this.props; const isHidden = node?.properties?._hidden; - const isHiddenBefore = node?.properties?._hiddenBeforeDateTime; - const isHiddenAfter = node?.properties?._hiddenAfterDateTime; + const isHiddenBefore = node?.properties?.enableAfterDateTime; + const isHiddenAfter = node?.properties?.disableAfterDateTime; if (isHiddenBefore || isHiddenAfter) { let isCurrentlyHidden = false; From 43efd9c63709ecf87a029d2636b33b0a935d41f3 Mon Sep 17 00:00:00 2001 From: Denny Lubitz Date: Fri, 9 Feb 2024 17:09:00 +0100 Subject: [PATCH 3/5] FEATURE: Timeable node visibility --- .../LeftSideBar/NodeTree/Node/index.js | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js b/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js index a73e65c855..fbd193f07d 100644 --- a/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js +++ b/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js @@ -170,15 +170,12 @@ export default class Node extends PureComponent { getCustomIconComponent() { const {node} = this.props; - const isHidden = node?.properties?._hidden; - const isHiddenBefore = node?.properties?.enableAfterDateTime; - const isHiddenAfter = node?.properties?.disableAfterDateTime; + const isDisabled = node?.properties?._hidden; + const enableAfterDateTime = node?.properties?.enableAfterDateTime; + const disableAfterDateTime = node?.properties?.disableAfterDateTime; - if (isHiddenBefore || isHiddenAfter) { - let isCurrentlyHidden = false; - isCurrentlyHidden = isHiddenBefore && moment(isHiddenBefore).isAfter(moment()) ? true : isCurrentlyHidden; - isCurrentlyHidden = isHiddenAfter && moment(isHiddenAfter).isBefore(moment()) ? true : isCurrentlyHidden; - const circleColor = isCurrentlyHidden && isHidden ? 'error' : 'primaryBlue'; + if (enableAfterDateTime || disableAfterDateTime) { + const circleColor = isDisabled ? 'error' : 'primaryBlue'; return ( @@ -188,6 +185,15 @@ export default class Node extends PureComponent { ); } + if (isDisabled) { + return ( + + + + + + ); + } return null; } From d590f88ba5a3862ef365ab101d95c5c0c499db1a Mon Sep 17 00:00:00 2001 From: Denny Lubitz Date: Fri, 9 Feb 2024 17:14:43 +0100 Subject: [PATCH 4/5] FEATURE: Timeable node visibility --- packages/neos-ui/package.json | 1 - .../neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js | 1 - yarn.lock | 1 - 3 files changed, 3 deletions(-) diff --git a/packages/neos-ui/package.json b/packages/neos-ui/package.json index 73f1ed64f9..1719cefcbf 100644 --- a/packages/neos-ui/package.json +++ b/packages/neos-ui/package.json @@ -48,7 +48,6 @@ "lodash.memoize": "^4.1.2", "lodash.merge": "^4.6.0", "lodash.sortby": "^4.7.0", - "moment": "^2.20.1", "monet": "^0.9.2", "normalize.css": "^8.0.0", "notosans-fontface": "^1.3.0", diff --git a/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js b/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js index fbd193f07d..81cd81eeb8 100644 --- a/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js +++ b/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js @@ -12,7 +12,6 @@ import {isNodeCollapsed} from '@neos-project/neos-ui-redux-store/src/CR/Nodes/he import {neos} from '@neos-project/neos-ui-decorators'; import hashSum from 'hash-sum'; -import moment from 'moment'; import {urlWithParams} from '@neos-project/utils-helpers/src/urlWithParams'; const getContextPath = node => node?.contextPath; diff --git a/yarn.lock b/yarn.lock index 8d21b1afb4..8a023dabad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2644,7 +2644,6 @@ __metadata: lodash.memoize: ^4.1.2 lodash.merge: ^4.6.0 lodash.sortby: ^4.7.0 - moment: ^2.20.1 monet: ^0.9.2 normalize.css: ^8.0.0 notosans-fontface: ^1.3.0 From 5ab9c4fd453d3694f8d2db8a92fa733d2a64f0c8 Mon Sep 17 00:00:00 2001 From: Denny Lubitz Date: Fri, 9 Feb 2024 17:24:40 +0100 Subject: [PATCH 5/5] FEATURE: Timeable node visibility --- Classes/Fusion/Helper/NodeInfoHelper.php | 5 +++-- .../src/Containers/LeftSideBar/NodeTree/Node/index.js | 5 ++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Classes/Fusion/Helper/NodeInfoHelper.php b/Classes/Fusion/Helper/NodeInfoHelper.php index 5faa5e3c27..093598ba08 100644 --- a/Classes/Fusion/Helper/NodeInfoHelper.php +++ b/Classes/Fusion/Helper/NodeInfoHelper.php @@ -126,8 +126,9 @@ public function renderNodeWithMinimalPropertiesAndChildrenInformation( $node->nodeAggregateId )->isHidden, '_hiddenInIndex' => $node->getProperty('_hiddenInIndex'), - 'enableAfterDateTime' => $node->getProperty('enableAfterDateTime') instanceof \DateTimeInterface ? $node->getProperty('enableAfterDateTime')->format(\DateTime::W3C) : '', - 'disableAfterDateTime' => $node->getProperty('disableAfterDateTime') instanceof \DateTimeInterface ? $node->getProperty('disableAfterDateTime')->format(\DateTime::W3C) : '', + '_hasTimeableNodeVisibility' => + $node->getProperty('enableAfterDateTime') instanceof \DateTimeInterface + || $node->getProperty('disableAfterDateTime') instanceof \DateTimeInterface, ]; if ($controllerContext !== null) { diff --git a/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js b/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js index 81cd81eeb8..e030e4a919 100644 --- a/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js +++ b/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/Node/index.js @@ -170,10 +170,9 @@ export default class Node extends PureComponent { const {node} = this.props; const isDisabled = node?.properties?._hidden; - const enableAfterDateTime = node?.properties?.enableAfterDateTime; - const disableAfterDateTime = node?.properties?.disableAfterDateTime; + const hasTimeableNodeVisibility = node?.properties?._hasTimeableNodeVisibility; - if (enableAfterDateTime || disableAfterDateTime) { + if (hasTimeableNodeVisibility) { const circleColor = isDisabled ? 'error' : 'primaryBlue'; return (