167 lines
8.4 KiB
PHP
167 lines
8.4 KiB
PHP
@extends('admin.layout')
|
|
|
|
@section('title', 'Edit Video')
|
|
@section('page_title', 'Edit Video')
|
|
|
|
@section('content')
|
|
<!-- Alerts -->
|
|
@if(session('success'))
|
|
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
|
{{ session('success') }}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
|
|
</div>
|
|
@endif
|
|
|
|
@if(session('error'))
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
|
{{ session('error') }}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
|
|
</div>
|
|
@endif
|
|
|
|
<div class="row">
|
|
<div class="col-lg-8">
|
|
<!-- Edit Video Form -->
|
|
<div class="admin-card">
|
|
<div class="admin-card-header">
|
|
<h5 class="admin-card-title">Edit Video</h5>
|
|
<a href="{{ route('admin.videos') }}" class="btn btn-outline-light btn-sm">
|
|
<i class="bi bi-arrow-left"></i> Back to Videos
|
|
</a>
|
|
</div>
|
|
|
|
<form method="POST" action="{{ route('admin.videos.update', $video->id) }}">
|
|
@csrf
|
|
@method('PUT')
|
|
|
|
<div class="mb-3">
|
|
<label for="title" class="form-label">Title</label>
|
|
<input type="text" class="form-control @error('title') is-invalid @enderror" id="title" name="title" value="{{ old('title', $video->title) }}" required>
|
|
@error('title')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="description" class="form-label">Description</label>
|
|
<textarea class="form-control @error('description') is-invalid @enderror" id="description" name="description" rows="4">{{ old('description', $video->description) }}</textarea>
|
|
@error('description')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
|
|
<div class="row mb-3">
|
|
<div class="col-md-4">
|
|
<label for="visibility" class="form-label">Visibility</label>
|
|
<select class="form-select @error('visibility') is-invalid @enderror" id="visibility" name="visibility" required>
|
|
<option value="public" {{ old('visibility', $video->visibility) == 'public' ? 'selected' : '' }}>Public</option>
|
|
<option value="unlisted" {{ old('visibility', $video->visibility) == 'unlisted' ? 'selected' : '' }}>Unlisted</option>
|
|
<option value="private" {{ old('visibility', $video->visibility) == 'private' ? 'selected' : '' }}>Private</option>
|
|
</select>
|
|
@error('visibility')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
|
|
<div class="col-md-4">
|
|
<label for="type" class="form-label">Type</label>
|
|
<select class="form-select @error('type') is-invalid @enderror" id="type" name="type" required>
|
|
<option value="generic" {{ old('type', $video->type) == 'generic' ? 'selected' : '' }}>Generic</option>
|
|
<option value="music" {{ old('type', $video->type) == 'music' ? 'selected' : '' }}>Music</option>
|
|
<option value="match" {{ old('type', $video->type) == 'match' ? 'selected' : '' }}>Match</option>
|
|
</select>
|
|
@error('type')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
|
|
<div class="col-md-4">
|
|
<label for="status" class="form-label">Status</label>
|
|
<select class="form-select @error('status') is-invalid @enderror" id="status" name="status" required>
|
|
<option value="pending" {{ old('status', $video->status) == 'pending' ? 'selected' : '' }}>Pending</option>
|
|
<option value="processing" {{ old('status', $video->status) == 'processing' ? 'selected' : '' }}>Processing</option>
|
|
<option value="ready" {{ old('status', $video->status) == 'ready' ? 'selected' : '' }}>Ready</option>
|
|
<option value="failed" {{ old('status', $video->status) == 'failed' ? 'selected' : '' }}>Failed</option>
|
|
</select>
|
|
@error('status')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
|
|
<div class="d-flex gap-2">
|
|
<button type="submit" class="btn btn-primary">
|
|
<i class="bi bi-check-circle"></i> Update Video
|
|
</button>
|
|
<a href="{{ route('admin.videos') }}" class="btn btn-outline-light">Cancel</a>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-lg-4">
|
|
<!-- Video Info -->
|
|
<div class="admin-card">
|
|
<div class="admin-card-header">
|
|
<h5 class="admin-card-title">Video Info</h5>
|
|
</div>
|
|
|
|
@if($video->thumbnail)
|
|
<img src="{{ asset('storage/thumbnails/' . $video->thumbnail) }}" alt="{{ $video->title }}" class="img-fluid rounded mb-3" style="width: 100%;">
|
|
@else
|
|
<div class="bg-secondary rounded d-flex align-items-center justify-content-center mb-3" style="height: 180px;">
|
|
<i class="bi bi-play-circle text-white" style="font-size: 3rem;"></i>
|
|
</div>
|
|
@endif
|
|
|
|
<hr style="border-color: var(--border-color);">
|
|
|
|
<div class="d-flex justify-content-between mb-2">
|
|
<span class="text-secondary">Video ID</span>
|
|
<span>#{{ $video->id }}</span>
|
|
</div>
|
|
<div class="d-flex justify-content-between mb-2">
|
|
<span class="text-secondary">Owner</span>
|
|
<a href="{{ route('channel', $video->user->id) }}" target="_blank">{{ $video->user->name }}</a>
|
|
</div>
|
|
<div class="d-flex justify-content-between mb-2">
|
|
<span class="text-secondary">Uploaded</span>
|
|
<span>{{ $video->created_at->format('M d, Y') }}</span>
|
|
</div>
|
|
<div class="d-flex justify-content-between mb-2">
|
|
<span class="text-secondary">File Size</span>
|
|
<span>{{ number_format($video->size / 1024 / 1024, 2) }} MB</span>
|
|
</div>
|
|
<div class="d-flex justify-content-between mb-2">
|
|
<span class="text-secondary">Duration</span>
|
|
<span>{{ $video->duration ? gmdate('H:i:s', $video->duration) : 'N/A' }}</span>
|
|
</div>
|
|
<div class="d-flex justify-content-between mb-2">
|
|
<span class="text-secondary">Orientation</span>
|
|
<span class="text-capitalize">{{ $video->orientation }}</span>
|
|
</div>
|
|
<div class="d-flex justify-content-between mb-2">
|
|
<span class="text-secondary">Dimensions</span>
|
|
<span>{{ $video->width ?? 'N/A' }} x {{ $video->height ?? 'N/A' }}</span>
|
|
</div>
|
|
<div class="d-flex justify-content-between mb-2">
|
|
<span class="text-secondary">Views</span>
|
|
<span>{{ number_format(\DB::table('video_views')->where('video_id', $video->id)->count()) }}</span>
|
|
</div>
|
|
<div class="d-flex justify-content-between">
|
|
<span class="text-secondary">Likes</span>
|
|
<span>{{ number_format(\DB::table('video_likes')->where('video_id', $video->id)->count()) }}</span>
|
|
</div>
|
|
|
|
<hr style="border-color: var(--border-color);">
|
|
|
|
<div class="d-grid gap-2">
|
|
<a href="{{ route('videos.show', $video->id) }}" target="_blank" class="btn btn-outline-light btn-sm">
|
|
<i class="bi bi-play-circle"></i> View Video
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endsection
|