@extends('backend.layouts.app') @section('title', __('Media Library')) @push('scripts') @php $mediaLibraryJsVersion = config('app.version') . '-' . filemtime(public_path('backend/js/media-library.js')); @endphp @endpush @section('content') @php $activeTab = request('tab') === 'storage' ? 'storage' : 'library'; $assetTypes = [ 'image' => __('Images'), 'document' => __('Documents'), 'video' => __('Videos'), 'audio' => __('Audio'), 'archive' => __('Archives'), 'other' => __('Other'), ]; @endphp

{{ __('Media Library') }}

{{ __('Upload reusable assets and route new files to local or S3-compatible storage.') }}

{{ __('Storage') }} @can('media-upload') @endcan
@if($activeTab === 'library')
{{ __('Total Assets') }} {{ $metrics['total'] }}
{{ __('Images') }} {{ $metrics['images'] }}
{{ __('Documents') }} {{ $metrics['documents'] }}
{{ __('Active Storage') }} {{ $activeProvider->name }}
@if($assets->isEmpty())
@else
@foreach($assets as $asset)
@if($asset->isImage()) {{ $asset->alt_text ?: $asset->displayTitle() }} @else $asset->aggregate_type === 'document', 'fa-file-archive' => $asset->aggregate_type === 'archive', 'fa-file-video' => $asset->aggregate_type === 'video', 'fa-file-audio' => $asset->aggregate_type === 'audio', 'fa-file' => ! in_array($asset->aggregate_type, ['document', 'archive', 'video', 'audio'], true), ])> @endif
{{ $asset->displayTitle() }}
{{ strtoupper((string) $asset->extension) }} {{ $asset->humanSize() }} {{ $asset->storageProvider?->name ?? __('Unknown') }}
@can('media-edit') @endcan @can('media-delete') @endcan
@can('media-edit') @endcan @endforeach
{{ $assets->links() }} @endif @else
{{ __('Active Provider') }} {{ $activeProvider->name }} {{ strtoupper($activeProvider->driver) }} / {{ strtoupper($activeProvider->visibility) }}

{{ __('New uploads use the active provider. Existing media keeps loading from the provider that originally stored it.') }}

@can('media-storage-manage')

{{ __('Add Storage Provider') }}

@csrf @include('backend.media.partials._provider_form', ['provider' => null])
@endcan
@forelse($providers as $provider) @can('media-storage-manage') @endcan @empty @endforelse
{{ __('Provider') }} {{ __('Driver') }} {{ __('Prefix') }} {{ __('Files') }} {{ __('Last Test') }} {{ __('Action') }}
{{ $provider->name }}
{{ $provider->slug }}
$provider->is_active, 'bg-secondary' => ! $provider->is_active])> {{ strtoupper($provider->driver) }} {{ $provider->resolvedPrefix() }} {{ $provider->assets_count }} @if($provider->last_checked_at) $provider->last_check_status === 'success', 'bg-danger' => $provider->last_check_status === 'failed'])> {{ $provider->last_check_status }}
{{ $provider->last_checked_at->diffForHumans() }}
@else {{ __('Not tested') }} @endif
@can('media-storage-manage') @if(! $provider->is_active)
@csrf
@endif
@csrf
@if(! $provider->is_active && $provider->assets_count === 0) @endif @endcan
@csrf @method('PUT') @include('backend.media.partials._provider_form', ['provider' => $provider])
@endif
@can('media-upload') @endcan @endsection