@extends('layouts.app', ['title' => 'DMS | Dokumenten-Explorer']) @section('content')
{{-- Header --}}

Dokumenten-Explorer

@if($search) × @endif
{{-- ── Linke Spalte: Ordnerbaum ── --}}
Ordner
    @foreach($rootFolders as $root) @include('dms._folder_node', ['folder' => $root, 'depth' => 0, 'currentFolderId' => $folderId]) @endforeach
{{-- ── Rechte Spalte: Inhalt ── --}}
{{-- Breadcrumb --}} {{-- Moderner Pfad-Navigator --}} {{-- ── Explorer-Tabelle (Ordner + Dateien unified) ── --}}
@if($search) Suchergebnisse für „{{ $search }}" ({{ $searchFolders->count() }} Ordner · {{ $files->total() }} Datei{{ $files->total() !== 1 ? 'en' : '' }}) @else Inhalt ({{ $subFolders->count() }} Ordner · {{ $files->total() }} Datei{{ $files->total() !== 1 ? 'en' : '' }}) @endif @if($folderId) ZIP @endif
@if($subFolders->isEmpty() && $files->isEmpty() && (!$search || ($searchFolders->isEmpty() && $files->isEmpty())))
{{ $search ? 'Keine Ergebnisse für „' . $search . '".' : 'Dieser Ordner ist leer.' }}
@else
@php $sortParams = array_filter(['folder' => $folderId, 'search' => $search]); $nameDir = ($sort === 'name' && $dir === 'asc') ? 'desc' : 'asc'; $dateDir = ($sort === 'created_at' && $dir === 'asc') ? 'desc' : 'asc'; $nameUrl = route('dms.index', array_merge($sortParams, ['sort' => 'name', 'dir' => $nameDir])); $dateUrl = route('dms.index', array_merge($sortParams, ['sort' => 'created_at', 'dir' => $dateDir])); @endphp {{-- ── Ordner-Suchtreffer (nur bei aktiver Suche) ── --}} @if($search && $searchFolders->count()) @foreach($searchFolders as $sf) @endforeach @if($files->count()) @endif @endif {{-- ── Ordner zuerst (normale Ansicht) ── --}} @if(!$search) @foreach($subFolders as $sf) @endforeach @endif {{-- ── Dateien danach ── --}} @foreach($files as $file) @php $ext = strtolower(pathinfo($file->original_name ?: $file->filename ?: '', PATHINFO_EXTENSION)); @endphp @endforeach
Name @if($sort === 'name') @else @endif Typ Größe Datum @if($sort === 'created_at') @else @endif Aktionen
Ordner ({{ $searchFolders->count() }})
{!! preg_replace('/(' . preg_quote($search, '/') . ')/i', '$1', e($sf->name)) !!} Ordner {{ $sf->created_at?->format('d.m.Y') ?? '—' }}
Dateien ({{ $files->total() }})
{{ $sf->name }} Ordner {{ $sf->created_at?->format('d.m.Y') ?? '—' }}
@if($ext === 'pdf') @elseif(in_array($ext, ['jpg','jpeg','png','gif','webp'])) @elseif(in_array($ext, ['doc','docx'])) @elseif(in_array($ext, ['xls','xlsx','csv'])) @elseif(in_array($ext, ['ppt','pptx'])) @elseif(in_array($ext, ['zip','rar','7z'])) @else @endif {{ $file->original_name ?? $file->filename }} @if(($file->version ?? 1) > 1) v{{ $file->version }} @endif
{{ match($file->category) { 'invoice_out' => 'Ausgangsrechnung', 'invoice_in' => 'Eingangsrechnung', 'dunning' => 'Mahnung', 'rechnung_invoice' => 'PMS-Rechnung', 'storno_invoice' => 'Stornorechnung', 'angebot' => 'Angebot', 'auftragsbestaetigung' => 'Auftragsbestätigung', 'anhang' => 'Anhang', default => $file->category, } }} {{ $file->filesize ? number_format($file->filesize / 1024, 0, ',', '.') . ' KB' : '—' }} {{ $file->created_at?->format('d.m.Y') }} @if($file->existsOnDisk()) @else fehlend @endif
{{-- Pagination --}} @if($files->hasPages())
{{ $files->links() }}
@endif @endif
{{-- /col-md-9 --}}
{{-- /row --}}
{{-- Vorschau-Modal --}} @push('scripts') @endpush @endsection