From 7526aa4c97a5aa9bac9c77537e96e916a8b3ba71 Mon Sep 17 00:00:00 2001 From: Abraham Date: Fri, 10 Apr 2026 11:52:25 +0200 Subject: [PATCH] Show detail button for items in media library --- .../Domain/MediaItem/MediaItemDataGrid.php | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/Backend/Modules/MediaLibrary/Domain/MediaItem/MediaItemDataGrid.php b/src/Backend/Modules/MediaLibrary/Domain/MediaItem/MediaItemDataGrid.php index 9a7b2f5d4e..709c799d3c 100644 --- a/src/Backend/Modules/MediaLibrary/Domain/MediaItem/MediaItemDataGrid.php +++ b/src/Backend/Modules/MediaLibrary/Domain/MediaItem/MediaItemDataGrid.php @@ -26,6 +26,13 @@ public function __construct(Type $type, ?int $folderId = null, ?string $searchQu $this->getParameters($type, $folderId, $searchQuery) ); + $this->addColumn('detail'); + $this->setColumnFunction( + [__CLASS__, 'getDetailUrl'], + ['[sharding_folder_name]', '[url]', '[storage_type]'], + 'detail' + ); + // filter on folder? if ($folderId !== null) { $this->setURL('&folder=' . $folderId, true); @@ -212,4 +219,21 @@ private function setExtras(Type $type, ?int $folderId = null): void $this->setRowAttributes(['id' => 'row-[id]']); $this->setColumnFunction('htmlspecialchars', ['[title]'], 'title', false); } + + public static function getDetailUrl(string $shardingFolderName, string $url, string $storageType): string + { + if ($storageType === 'youtube') { + $link = 'https://youtube.com/watch?v=' . $url; + } elseif ($storageType === 'vimeo') { + $link = 'https://www.vimeo.com/' . $url; + } else { + $link = '/src/Frontend/Files/MediaLibrary/' . $shardingFolderName . '/' . $url; + } + + $html = ''; + $html .= '' . ucfirst(Language::lbl('View')); + $html .= ''; + + return $html; + } }