@extends('backend.landings.layout')
@section('title', __('All Landing Pages'))
@section('sub_title', __('Landing Pages'))
@section('sub_subtitle', __('Manage published campaign landings, HTML edits, and the active homepage experience.'))
@section('sub_icon', 'custom-landing')
@section('sub_action')
{{ __('Guide') }}
{{ __('Add Landing') }}
@endsection
@section('sub_content')
@php
$landingCollection = $landings instanceof \Illuminate\Pagination\AbstractPaginator
? $landings->getCollection()
: collect($landings);
$formatBytes = static function (int|float|null $bytes): string {
$bytes = (float) ($bytes ?? 0);
if ($bytes >= 1048576) {
return number_format($bytes / 1048576, 1).' MB';
}
if ($bytes >= 1024) {
return number_format($bytes / 1024, 1).' KB';
}
return number_format($bytes).' B';
};
@endphp
@lang('Total Landings')
{{ number_format($metrics['total'] ?? $landingCollection->count()) }}
@lang('Active')
{{ number_format($metrics['active'] ?? $landingCollection->where('status', true)->count()) }}
@lang('Files')
{{ number_format($metrics['files'] ?? $landingCollection->sum('file_count')) }}
@lang('Storage')
{{ $formatBytes($metrics['storageSize'] ?? $landingCollection->sum('total_size')) }}
| @lang('Landing') |
@lang('Status') |
@lang('Files') |
@lang('Updated') |
@lang('Actions') |
@forelse($landings as $landing)
|
{{ Str::of($landing->name)->substr(0, 1)->upper() }}
{{ $landing->name }}
{{ $landing->folder }}
|
{{ $landing->status ? __('Active') : __('Inactive') }}
|
{{ number_format((int) $landing->file_count) }}
{{ $formatBytes($landing->total_size) }}
|
{{ $landing->updated_at?->format('M d, Y') ?? __('Not updated') }}
{{ $landing->last_validated_at?->diffForHumans() ?? __('Validation pending') }}
|
|
@empty
|
@lang('No landing pages uploaded yet.')
@lang('Upload a ZIP package to publish your first custom landing page.')
|
@endforelse
@lang('No matching landing pages')
@lang('Adjust the search text or status filter.')
@if(method_exists($landings, 'links'))
@endif
@endsection
@push('scripts')
@endpush