From 374c3e968d7e7769879c8e67f120e528853248f5 Mon Sep 17 00:00:00 2001 From: Tymoteusz Motylewski <t.motylewski@gmail.com> Date: Thu, 7 Dec 2017 14:46:48 +0100 Subject: [PATCH] [BUGFIX] Allow users without delete permissions to drag pages in page tree BE users without delete rights can now drag-drop pages in the page tree. The drag - delete area is not shown. Resolves: #25135 Releases: 8.7, 7.6 Change-Id: Icc82675a783f19ae72b6d00ac2809ad76b93dd67 Reviewed-on: https://review.typo3.org/55535 Tested-by: TYPO3com <no-reply@typo3.com> Reviewed-by: Susanne Moog <susanne.moog@typo3.org> Tested-by: Susanne Moog <susanne.moog@typo3.org> --- typo3/sysext/backend/Classes/Tree/Pagetree/Commands.php | 1 - typo3/sysext/backend/Classes/Tree/Pagetree/PagetreeNode.php | 1 + .../JavaScript/extjs/components/pagetree/javascript/tree.js | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/typo3/sysext/backend/Classes/Tree/Pagetree/Commands.php b/typo3/sysext/backend/Classes/Tree/Pagetree/Commands.php index 2e67ef13fd39..6c05d3de4b6b 100644 --- a/typo3/sysext/backend/Classes/Tree/Pagetree/Commands.php +++ b/typo3/sysext/backend/Classes/Tree/Pagetree/Commands.php @@ -372,7 +372,6 @@ class Commands } if ( !$subNode->canBeEdited() - || !$subNode->canBeRemoved() || VersionState::cast($record['t3ver_state'])->equals(VersionState::DELETE_PLACEHOLDER) ) { $subNode->setDraggable(false); diff --git a/typo3/sysext/backend/Classes/Tree/Pagetree/PagetreeNode.php b/typo3/sysext/backend/Classes/Tree/Pagetree/PagetreeNode.php index 82b39f58f3e1..c70371b43d6b 100644 --- a/typo3/sysext/backend/Classes/Tree/Pagetree/PagetreeNode.php +++ b/typo3/sysext/backend/Classes/Tree/Pagetree/PagetreeNode.php @@ -424,6 +424,7 @@ class PagetreeNode extends \TYPO3\CMS\Backend\Tree\ExtDirectNode $arrayRepresentation['realId'] = $this->getId(); $arrayRepresentation['nodeData']['id'] = $this->getId(); $arrayRepresentation['readableRootline'] = $this->getReadableRootline(); + $arrayRepresentation['canBeRemoved'] = $this->canBeRemoved(); $arrayRepresentation['nodeData']['readableRootline'] = $this->getReadableRootline(); $arrayRepresentation['nodeData']['mountPoint'] = $this->getMountPoint(); $arrayRepresentation['nodeData']['workspaceId'] = $this->getWorkspaceId(); diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/extjs/components/pagetree/javascript/tree.js b/typo3/sysext/backend/Resources/Public/JavaScript/extjs/components/pagetree/javascript/tree.js index abcbd0d7a63d..3ec1e5dbd32c 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/extjs/components/pagetree/javascript/tree.js +++ b/typo3/sysext/backend/Resources/Public/JavaScript/extjs/components/pagetree/javascript/tree.js @@ -462,7 +462,7 @@ TYPO3.Components.PageTree.Tree = Ext.extend(Ext.tree.TreePanel, { */ initDd: function(treePanel, node) { var nodeHasChildNodes = (node.hasChildNodes() || node.isExpandable()); - if (this.deletionDropZoneId && + if (this.deletionDropZoneId && node.attributes.canBeRemoved && (!nodeHasChildNodes || (nodeHasChildNodes && TYPO3.Components.PageTree.Configuration.canDeleteRecursivly) )) { -- GitLab