From 0c496202dcea0da46e715bf77023d82bf34e2128 Mon Sep 17 00:00:00 2001 From: Karsten Dambekalns Date: Fri, 15 Nov 2019 12:58:47 +0100 Subject: [PATCH 1/2] TASK: Assign error instead of 404 status return When an asset is not found, some actions threw an 404 status, which leads to Neos showing the "404 page" under certain circumstances. This changes assigns the exception just like in the case of a connection error, leaving handling to the media browser. --- .../Classes/Controller/AssetController.php | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/Neos.Media.Browser/Classes/Controller/AssetController.php b/Neos.Media.Browser/Classes/Controller/AssetController.php index af8f2fa72f3..318ef8dcee6 100644 --- a/Neos.Media.Browser/Classes/Controller/AssetController.php +++ b/Neos.Media.Browser/Classes/Controller/AssetController.php @@ -348,9 +348,7 @@ public function showAction(string $assetSourceIdentifier, string $assetProxyIden 'assetProxy' => $assetProxy, 'assetCollections' => $this->assetCollectionRepository->findAll() ]); - } catch (AssetNotFoundExceptionInterface $e) { - $this->throwStatus(404, 'Asset not found'); - } catch (AssetSourceConnectionExceptionInterface $e) { + } catch (AssetNotFoundExceptionInterface | AssetSourceConnectionExceptionInterface $e) { $this->view->assign('connectionError', $e); } } @@ -403,9 +401,7 @@ public function editAction(string $assetSourceIdentifier, string $assetProxyIden 'assetSource' => $assetSource, 'canShowVariants' => ($assetProxy instanceof NeosAssetProxy) && ($assetProxy->getAsset() instanceof VariantSupportInterface) ]); - } catch (AssetNotFoundExceptionInterface $e) { - $this->throwStatus(404, 'Asset not found'); - } catch (AssetSourceConnectionExceptionInterface $e) { + } catch (AssetNotFoundExceptionInterface | AssetSourceConnectionExceptionInterface $e) { $this->view->assign('connectionError', $e); } } @@ -448,9 +444,7 @@ public function variantsAction(string $assetSourceIdentifier, string $assetProxy 'originalInformation' => (new ImageMapper($asset))->getMappingResult(), 'variantsInformation' => $variantInformation ]); - } catch (AssetNotFoundExceptionInterface $e) { - $this->throwStatus(404, 'Original asset not found'); - } catch (AssetSourceConnectionExceptionInterface $e) { + } catch (AssetNotFoundExceptionInterface | AssetSourceConnectionExceptionInterface $e) { $this->view->assign('connectionError', $e); } } From fa9cbb7ca6560805e536a4403474cc23748c0880 Mon Sep 17 00:00:00 2001 From: Karsten Dambekalns Date: Fri, 15 Nov 2019 13:03:21 +0100 Subject: [PATCH 2/2] BUGFIX: Handle unavailable assets in edit view When an asset is not available, the template now reacts to the connectionError. This avoids an error with the relativeDate VH and informs the user correctly about the fact an asset could not be found. --- .../Private/Templates/Asset/Edit.html | 310 +++++++++--------- 1 file changed, 159 insertions(+), 151 deletions(-) diff --git a/Neos.Media.Browser/Resources/Private/Templates/Asset/Edit.html b/Neos.Media.Browser/Resources/Private/Templates/Asset/Edit.html index ffb0a0abea4..c7a098878a4 100644 --- a/Neos.Media.Browser/Resources/Private/Templates/Asset/Edit.html +++ b/Neos.Media.Browser/Resources/Private/Templates/Asset/Edit.html @@ -5,167 +5,175 @@ Edit view + + +

{neos:backend.translate(id: 'connectionError', package: 'Neos.Media.Browser')}

+

{connectionError.message} ({connectionError.code})

+
+ - - - + + + -
-
- -
-
-
- - - {neos:backend.translate(id: 'basics', package: 'Neos.Media.Browser')} - - - - - - - - - {neos:backend.translate(id: 'basics', package: 'Neos.Media.Browser')} - - - - - - - - - - - - - - - - - - - - -
-
- {neos:backend.translate(id: 'metadata', package: 'Neos.Media.Browser')} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
+
+ +
+
+
+ + + {neos:backend.translate(id: 'basics', package: 'Neos.Media.Browser')} + + + + + + + + + {neos:backend.translate(id: 'basics', package: 'Neos.Media.Browser')} + + + + + + + + + + + + + + + + + + + + +
+
+ {neos:backend.translate(id: 'metadata', package: 'Neos.Media.Browser')} +
{neos:backend.translate(id: 'mediaSource', package: 'Neos.Media.Browser')}{assetProxy.assetSource.label}
{neos:backend.translate(id: 'metadata.filename', package: 'Neos.Media.Browser')}{assetProxy.filename}
{neos:backend.translate(id: 'metadata.lastModified', package: 'Neos.Media.Browser')}{assetProxy.lastModified -> m:format.relativeDate()}
{neos:backend.translate(id: 'metadata.fileSize', package: 'Neos.Media.Browser')}{assetProxy.fileSize -> f:format.bytes()}
{neos:backend.translate(id: 'metadata.iptcProperties.CopyrightNotice', package: 'Neos.Media.Browser')}{assetProxy.iptcProperties.CopyrightNotice}
{neos:backend.translate(id: 'metadata.dimensions', package: 'Neos.Media.Browser')}{assetProxy.widthInPixels} x {assetProxy.heightInPixels}
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{neos:backend.translate(id: 'mediaSource', package: 'Neos.Media.Browser')}{assetProxy.assetSource.label}
{neos:backend.translate(id: 'metadata.filename', package: 'Neos.Media.Browser')}{assetProxy.filename}
{neos:backend.translate(id: 'metadata.lastModified', package: 'Neos.Media.Browser')}{assetProxy.lastModified -> m:format.relativeDate()}
{neos:backend.translate(id: 'metadata.fileSize', package: 'Neos.Media.Browser')}{assetProxy.fileSize -> f:format.bytes()}
{neos:backend.translate(id: 'metadata.iptcProperties.CopyrightNotice', package: 'Neos.Media.Browser')}{assetProxy.iptcProperties.CopyrightNotice}
{neos:backend.translate(id: 'metadata.dimensions', package: 'Neos.Media.Browser')}{assetProxy.widthInPixels} x {assetProxy.heightInPixels}
{neos:backend.translate(id: 'metadata.type', package: 'Neos.Media.Browser')}{assetProxy.mediaType}
{neos:backend.translate(id: 'metadata.identifier', package: 'Neos.Media.Browser')}{assetProxy.localAssetIdentifier}
+ + + {neos:backend.translate(id: 'relatedNodes', quantity: '{assetProxy.asset.usageCount}', arguments: {0: assetProxy.asset.usageCount}, package: 'Neos.Media.Browser')} + + +
+
+
+ +
+
+ -
- -
-
- -
-
-
-
- -
- {neos:backend.translate(id: 'message.reallyDeleteAsset', arguments: {0: assetProxy.label}, package: 'Neos.Media.Browser')} -
-
-
-

- {neos:backend.translate(id: 'message.willBeDeleted', package: 'Neos.Media.Browser')}
- {neos:backend.translate(id: 'message.operationCannotBeUndone', package: 'Neos.Media.Browser')} -

+
+
+
+
+
+ +
+ {neos:backend.translate(id: 'message.reallyDeleteAsset', arguments: {0: assetProxy.label}, package: 'Neos.Media.Browser')} +
+
+
+

+ {neos:backend.translate(id: 'message.willBeDeleted', package: 'Neos.Media.Browser')}
+ {neos:backend.translate(id: 'message.operationCannotBeUndone', package: 'Neos.Media.Browser')} +

+
+
+
+
- +
-
-
+ +
- - -
-
+
+ +