'', 'filterType' => 'all', 'filterCollection' => '', 'viewMode' => 'grid', 'editingId' => null, 'editLocale' => 'de', 'altText' => '', 'mediaTitle' => '', 'collection' => '', 'showDetail' => false, 'selectedProfiles' => [], ]); $media = computed( fn () => CmsMedia::query() ->when( $this->filterType !== 'all', fn ($q) => match ($this->filterType) { 'image' => $q->images(), 'pdf' => $q->pdfs(), 'document' => $q->documents(), default => $q, }, ) ->when($this->filterCollection, fn ($q) => $q->inCollection($this->filterCollection)) ->when($this->search, fn ($q) => $q->where('filename', 'like', "%{$this->search}%")) ->orderByDesc('created_at') ->paginate(48), ); $collections = computed(fn () => CmsMedia::query()->whereNotNull('collection')->where('collection', '!=', '')->distinct()->pluck('collection')->sort()->values()->toArray()); $profiles = computed(fn () => config('flux-cms.media.profiles', [])); $stats = computed( fn () => [ 'total' => CmsMedia::count(), 'images' => CmsMedia::images()->count(), 'pdfs' => CmsMedia::pdfs()->count(), ], ); on([ 'media-library-uploaded' => function ($mediaId) { $media = CmsMedia::find($mediaId); if ($media) { Flux::toast(variant: 'success', heading: 'Hochgeladen', text: $media->filename . ' wurde erfolgreich hochgeladen.'); } }, ]); $startEdit = function (int $id) { $media = CmsMedia::find($id); if (! $media) { return; } $this->editingId = $id; $this->altText = $media->getTranslation('alt_text', $this->editLocale) ?? ''; $this->mediaTitle = $media->getTranslation('title', $this->editLocale) ?? ''; $this->collection = $media->collection ?? ''; $this->showDetail = true; }; $switchLocale = function (string $locale) { $this->editLocale = $locale; if ($this->editingId) { $media = CmsMedia::find($this->editingId); if ($media) { $this->altText = $media->getTranslation('alt_text', $locale) ?? ''; $this->mediaTitle = $media->getTranslation('title', $locale) ?? ''; } } }; $saveEdit = function () { $media = CmsMedia::find($this->editingId); if (! $media) { return; } $media->setTranslation('alt_text', $this->editLocale, $this->altText); $media->setTranslation('title', $this->editLocale, $this->mediaTitle); $media->collection = $this->collection; $media->save(); Flux::toast(variant: 'success', heading: 'Gespeichert', text: 'Medien-Details wurden aktualisiert.'); }; $generateConversion = function (string $profile) { $media = CmsMedia::find($this->editingId); if (! $media || ! $media->isImage()) { return; } $service = app(MediaConversionService::class); $result = $service->convert($media, $profile); if ($result) { $media->refresh(); Flux::toast(variant: 'success', heading: 'Conversion erstellt', text: "Profil \"{$profile}\" wurde generiert."); } else { Flux::toast(variant: 'danger', heading: 'Fehler', text: "Conversion \"{$profile}\" konnte nicht erstellt werden."); } }; $generateAllConversions = function () { $media = CmsMedia::find($this->editingId); if (! $media || ! $media->isImage()) { return; } $service = app(MediaConversionService::class); $results = $service->generateAllConversions($media); $count = count(array_filter($results)); $media->refresh(); Flux::toast(variant: 'success', heading: 'Alle Conversions erstellt', text: "{$count} Profile wurden generiert."); }; $deleteMedia = function (int $id) { $media = CmsMedia::find($id); if (! $media) { return; } $filename = $media->filename; $service = app(MediaConversionService::class); $service->deleteAll($media); $media->delete(); $this->editingId = null; $this->showDetail = false; Flux::toast(variant: 'success', heading: 'Gelöscht', text: "{$filename} wurde entfernt."); }; $closeDetail = function () { $this->showDetail = false; $this->editingId = null; }; ?>
{{ $item->filename }}
{{ $item->getHumanFileSize() }}
| Dateiname | Typ | Größe | Abmessungen | Sammlung | Datum | |
|---|---|---|---|---|---|---|
|
@if ($item->isImage())
|
{{ $item->filename }} |
|
{{ $item->getHumanFileSize() }} | {{ $item->getDimensionsLabel() ?: '—' }} |
@if ($item->collection)
|
{{ $item->created_at->format('d.m.Y') }} |
|
|
||||||
Datei: {{ $editMedia->filename }}
Typ: {{ $editMedia->mime_type }}
Größe: {{ $editMedia->getHumanFileSize() }}
@if ($editMedia->getDimensionsLabel())Abmessungen: {{ $editMedia->getDimensionsLabel() }} px
@endifHochgeladen: {{ $editMedia->created_at->format('d.m.Y H:i') }}