Files
jabali-panel/resources/views/filament/admin/pages/server-updates.blade.php
2026-02-02 03:11:45 +02:00

125 lines
5.1 KiB
PHP

<x-filament-panels::page>
<x-filament::section>
<x-slot name="heading">
{{ __('Jabali Panel Update') }}
</x-slot>
<x-slot name="description">
{{ __('Update the panel codebase and assets.') }}
</x-slot>
<div class="grid gap-4 md:grid-cols-3">
<x-filament::section class="h-full" compact>
<x-slot name="heading">{{ $currentVersion ?? 'unknown' }}</x-slot>
<x-slot name="description">{{ __('Current Version') }}</x-slot>
</x-filament::section>
<x-filament::section class="h-full" compact>
<x-slot name="heading">{{ $this->updateStatusLabel }}</x-slot>
<x-slot name="description">{{ __('Status') }}</x-slot>
</x-filament::section>
<x-filament::section class="h-full" compact>
<x-slot name="heading">{{ $lastCheckedAt ?? __('Not checked') }}</x-slot>
<x-slot name="description">{{ __('Last Checked') }}</x-slot>
</x-filament::section>
</div>
@if (! empty($recentChanges))
<x-filament::section class="mt-4" compact>
<div class="fi-section-header-heading">{{ __('Recent Changes') }}</div>
<ul class="mt-2 list-inside list-disc space-y-1 fi-section-header-description">
@foreach ($recentChanges as $change)
<li>{{ $change }}</li>
@endforeach
</ul>
</x-filament::section>
@endif
<div class="mt-4 flex flex-wrap items-center gap-2">
<x-filament::button
icon="heroicon-o-magnifying-glass"
color="gray"
wire:click="checkForUpdates"
wire:loading.attr="disabled"
wire:target="checkForUpdates"
>
{{ __('Check for updates') }}
</x-filament::button>
<x-filament::button
icon="heroicon-o-arrow-path-rounded-square"
color="primary"
wire:click="performUpgrade"
wire:loading.attr="disabled"
wire:target="performUpgrade"
>
{{ __('Upgrade now') }}
</x-filament::button>
</div>
@if ($jabaliOutput !== null)
<x-filament::section class="mt-4" collapsible>
<x-slot name="heading">
{{ $jabaliOutputTitle ?? __('Jabali Update Output') }}
</x-slot>
@if ($jabaliOutputAt)
<x-slot name="afterHeader">
<span class="fi-section-header-description">
{{ __('Last run at :time', ['time' => $jabaliOutputAt]) }}
</span>
</x-slot>
@endif
<div class="fi-section-header-description">
<pre class="whitespace-pre-wrap break-words rounded bg-gray-50 p-4 fi-section-header-description">{{ $jabaliOutput }}</pre>
</div>
</x-filament::section>
@endif
</x-filament::section>
<x-filament::section class="mt-6">
<x-slot name="heading">{{ __('System Packages') }}</x-slot>
<x-slot name="afterHeader">
<div class="flex flex-wrap items-center gap-2">
<x-filament::button
icon="heroicon-o-arrow-path"
color="gray"
wire:click="loadUpdates(true, true)"
wire:loading.attr="disabled"
wire:target="loadUpdates"
>
{{ __('Refresh') }}
</x-filament::button>
<x-filament::button
icon="heroicon-o-arrow-path-rounded-square"
color="primary"
wire:click="runUpdates"
wire:loading.attr="disabled"
wire:target="runUpdates"
>
{{ __('Run Updates') }}
</x-filament::button>
</div>
</x-slot>
@if ($refreshOutputAt)
<x-filament::section class="mt-4" compact>
<x-slot name="heading">{{ $refreshOutputTitle ?? __('Update Refresh Output') }}</x-slot>
<x-slot name="afterHeader">
<span class="fi-section-header-description">
{{ __('Last run at :time', ['time' => $refreshOutputAt]) }}
</span>
</x-slot>
<div class="fi-section-header-description">
@php
$outputLines = is_array($refreshOutput) ? $refreshOutput : [$refreshOutput];
@endphp
<pre class="whitespace-pre-wrap break-words rounded bg-gray-50 p-4 fi-section-header-description">{{ implode("\n", $outputLines) }}</pre>
</div>
</x-filament::section>
@endif
</x-filament::section>
{{ $this->table }}
<x-filament-actions::modals />
</x-filament-panels::page>