From 1b17327d7ad86bde4f40df9e93b5ba408d0d14f3 Mon Sep 17 00:00:00 2001 From: Oliver Bartsch Date: Fri, 18 Jun 2021 10:15:34 +0200 Subject: [PATCH] [BUGFIX] Respect offline storages on context menu initialization The FileProvider tries to retrieve the file / folder object on initialization. In case the requested folder or storage is temporarily offline, a ResourceDoesNotExistException is thrown. This is now fixed by catching the exception an setting the $record to NULL. This allows to still render the context menu with the remaining options, such as edit the storage record or display the records information. Resolves: #94372 Releases: master, 10.4 Change-Id: I2ef6437b0d6e22462d73c9536433d7dc1914f680 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/69517 Tested-by: core-ci Tested-by: Benni Mack Tested-by: Jochen Tested-by: Oliver Bartsch Reviewed-by: Benni Mack Reviewed-by: Jochen Reviewed-by: Oliver Bartsch --- .../Classes/ContextMenu/ItemProviders/FileProvider.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/typo3/sysext/filelist/Classes/ContextMenu/ItemProviders/FileProvider.php b/typo3/sysext/filelist/Classes/ContextMenu/ItemProviders/FileProvider.php index 515d21cfd210..f5d3f79b7f4f 100644 --- a/typo3/sysext/filelist/Classes/ContextMenu/ItemProviders/FileProvider.php +++ b/typo3/sysext/filelist/Classes/ContextMenu/ItemProviders/FileProvider.php @@ -19,6 +19,7 @@ use TYPO3\CMS\Backend\ContextMenu\ItemProviders\AbstractProvider; use TYPO3\CMS\Backend\Utility\BackendUtility; +use TYPO3\CMS\Core\Resource\Exception\ResourceDoesNotExistException; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\Folder; use TYPO3\CMS\Core\Resource\ResourceFactory; @@ -116,9 +117,11 @@ public function canHandle(): bool protected function initialize() { parent::initialize(); - $fileObject = GeneralUtility::makeInstance(ResourceFactory::class) - ->retrieveFileOrFolderObject($this->identifier); - $this->record = $fileObject; + try { + $this->record = GeneralUtility::makeInstance(ResourceFactory::class)->retrieveFileOrFolderObject($this->identifier); + } catch (ResourceDoesNotExistException $e) { + $this->record = null; + } } /**