From df36be460a8260e9ecaafb5c20db079b66221f0c Mon Sep 17 00:00:00 2001
From: Oliver Hader <oliver@typo3.org>
Date: Wed, 15 Apr 2020 11:00:56 +0200
Subject: [PATCH] [BUGFIX] Reset clipboard state for files that have been
 deleted

Files that just have been deleted in filelist module need to be
removed from current clipboard state - otherwise the rendering
process will throw ResourceDoesNotExistException due to obviously
missing files.

Resolves: #91039
Releases: master, 9.5
Change-Id: Ic03cd8775ee4db40996e1152f4f0b1660323780f
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/64177
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
---
 .../filelist/Classes/Controller/FileListController.php    | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/typo3/sysext/filelist/Classes/Controller/FileListController.php b/typo3/sysext/filelist/Classes/Controller/FileListController.php
index 024dda378e00..e4b84381b13f 100644
--- a/typo3/sysext/filelist/Classes/Controller/FileListController.php
+++ b/typo3/sysext/filelist/Classes/Controller/FileListController.php
@@ -363,8 +363,9 @@ class FileListController extends ActionController implements LoggerAwareInterfac
                 if (!empty($items)) {
                     // Make command array:
                     $FILE = [];
-                    foreach ($items as $v) {
-                        $FILE['delete'][] = ['data' => $v];
+                    foreach ($items as $clipboardIdentifier => $combinedIdentifier) {
+                        $FILE['delete'][] = ['data' => $combinedIdentifier];
+                        $this->filelist->clipObj->removeElement($clipboardIdentifier);
                     }
                     // Init file processing object for deleting and pass the cmd array.
                     /** @var ExtendedFileUtility $fileProcessor */
@@ -373,6 +374,9 @@ class FileListController extends ActionController implements LoggerAwareInterfac
                     $fileProcessor->setExistingFilesConflictMode($this->overwriteExistingFiles);
                     $fileProcessor->start($FILE);
                     $fileProcessor->processData();
+                    // Clean & Save clipboard state
+                    $this->filelist->clipObj->cleanCurrent();
+                    $this->filelist->clipObj->endClipboard();
                 }
             }
             // Start up filelisting object, include settings.
-- 
GitLab