diff --git a/Neos.Workspace.Ui/Classes/Controller/WorkspaceController.php b/Neos.Workspace.Ui/Classes/Controller/WorkspaceController.php index daed6f3ac2..eb1c909dd1 100644 --- a/Neos.Workspace.Ui/Classes/Controller/WorkspaceController.php +++ b/Neos.Workspace.Ui/Classes/Controller/WorkspaceController.php @@ -1117,6 +1117,16 @@ protected function prepareBaseWorkspaceOptions( $user = $this->userService->getCurrentUser(); $baseWorkspaceOptions = []; $workspaces = $contentRepository->findWorkspaces(); + $editedWorkspace = $editedWorkspaceName ? $workspaces->get($editedWorkspaceName) : null; + if ($editedWorkspace?->baseWorkspaceName !== null) { + // ensure that the current base workspace is always part of the list even if permissions are not granted + $workspaceMetadata = $this->workspaceService->getWorkspaceMetadata( + $contentRepository->id, + $editedWorkspace->baseWorkspaceName + ); + $baseWorkspaceOptions[$editedWorkspace->baseWorkspaceName->value] = $workspaceMetadata->title->value; + } + foreach ($workspaces as $workspace) { if ($editedWorkspaceName !== null) { if ($workspace->workspaceName->equals($editedWorkspaceName)) { @@ -1210,7 +1220,6 @@ protected function getWorkspaceListItems( continue; } - // TODO: If user is allowed to edit child workspace, we need to at least show the parent workspaces in the list if ($workspacesPermissions->read === false) { continue; } diff --git a/Neos.Workspace.Ui/Resources/Private/Fusion/Features/Workspace/Components/WorkspaceTable.fusion b/Neos.Workspace.Ui/Resources/Private/Fusion/Features/Workspace/Components/WorkspaceTable.fusion index d6314f39be..89d2838df2 100644 --- a/Neos.Workspace.Ui/Resources/Private/Fusion/Features/Workspace/Components/WorkspaceTable.fusion +++ b/Neos.Workspace.Ui/Resources/Private/Fusion/Features/Workspace/Components/WorkspaceTable.fusion @@ -46,7 +46,10 @@ prototype(Neos.Workspace.Ui:Component.WorkspaceTable) < prototype(Neos.Fusion:Co