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; + } }