@extends('admin.panel.layout') @section('admin_title', 'Apps & Releases') @php $platMeta = [ 'android' => ['label' => 'Android', 'icon' => 'fa-android', 'store' => 'Google Play', 'file' => true, 'color' => '#0f9d58'], 'ios' => ['label' => 'iOS', 'icon' => 'fa-apple', 'store' => 'App Store', 'file' => false, 'color' => '#111827'], 'windows' => ['label' => 'Windows', 'icon' => 'fa-windows', 'store' => 'Microsoft Store', 'file' => true, 'color' => '#2563eb'], ]; $fmtSize = function (?int $bytes) { if (!$bytes) return '—'; $mb = $bytes / 1048576; return $mb >= 1 ? number_format($mb, 1, ',', '.') . ' MB' : number_format($bytes / 1024, 0, ',', '.') . ' KB'; }; @endphp @section('admin_content')
App-Verwaltung

Apps & Releases

Neue APK/Installer hochladen (wird automatisch die aktuelle Version — der Download-Link bleibt gleich, egal wie die Datei heißt), Store-Links pflegen und den Versionsverlauf verwalten. Direktes Hochladen bis {{ $uploadLimit }}; größere Dateien per Server-Import.

@include('admin.licenses._flash') @forelse ($apps as $slug => $app)
@if ($app['icon']) @endif

{{ $app['name'] }}

{{ $slug }}
@foreach ($platMeta as $pk => $meta) @php $pdata = $app['platforms'][$pk]; $setting = $pdata['setting']; $releases = $pdata['releases']; $current = $releases->firstWhere('is_current', true); $storeUrl = $setting->store_url ?? ($pdata['config']['store_url'] ?? ''); $minLabel = $setting->min_label ?? ($pdata['config']['min'] ?? ''); $status = $setting->status ?? ($pdata['config']['status'] ?? ''); $dlEnabled = $setting ? $setting->download_enabled : ($pdata['config']['enabled'] ?? true); @endphp
{{-- Plattform-Kopf --}}
{{ $meta['label'] }} @if ($current && $current->version) v{{ $current->version }} @elseif ($current) Datei #{{ $current->id }} @else keine Datei @endif
@if ($current) Öffentlicher Download-Link @endif
{{-- Einstellungen: Store-Link + Meta --}}
@csrf
@if ($meta['file']) @endif
@if ($meta['file']) {{-- Upload + Server-Import --}}
@csrf Neue Datei hochladen

max. {{ $uploadLimit }} pro Datei

@csrf Datei vom Server importieren

Pfad unter public/downloads/… oder storage/app/release_staging/…

{{-- Versionsverlauf --}}
Versionsverlauf @if ($releases->isEmpty())

Noch keine hochgeladene Version. @if (($pdata['config']['download'] ?? null) && is_file(public_path($pdata['config']['download']))) Aktuell wird die bisherige Datei {{ $pdata['config']['download'] }} ausgeliefert — importiere sie oben, um sie in den Verlauf aufzunehmen. @endif

@else
@foreach ($releases as $r) @endforeach
VersionDateiGrößeHochgeladen
@if ($r->is_current) aktuell @endif {{ $r->version ? 'v' . $r->version : '#' . $r->id }}@if($r->notes)
{{ \Illuminate\Support\Str::limit($r->notes, 70) }}@endif
{{ \Illuminate\Support\Str::limit($r->original_filename, 34) }} {{ $fmtSize($r->file_size) }} {{ $r->created_at?->format('d.m.Y H:i') }} @unless ($r->is_current)
@csrf
@endunless
@csrf @method('DELETE')
@endif
@else

iOS wird über den App Store verteilt — hier nur Store-Link & Meta pflegen (kein Datei-Download).

@endif
@endforeach
@empty

Keine Apps in config/cross_apps.php definiert.

@endforelse @endsection