* Modules, themes, and extensions * Publisher profiles and verification metadata * Installed-package tracking * Semantic version compatibility checks * PHP, Laravel, and Content Manager compatibility checks * Dependency resolution * SHA-256 checksum validation * Package signature requirements * Installation and update history * Enable and disable controls * Removal handling * Rollback records * Licence records * Marketplace administration UI * Authenticated REST endpoints * Console audit and synchronisation commands * Permissions and sidebar integration * Feature tests
105 lines
4.6 KiB
PHP
105 lines
4.6 KiB
PHP
<x-layouts.app :title="__('Installed Packages')">
|
|
<div class="flex h-full w-full flex-1 flex-col gap-6 rounded-xl">
|
|
<div class="flex flex-wrap items-center justify-between gap-3">
|
|
<div>
|
|
<flux:heading size="xl">Installed Packages</flux:heading>
|
|
<flux:subheading>
|
|
Manage package state, updates and removals.
|
|
</flux:subheading>
|
|
</div>
|
|
|
|
<flux:button
|
|
:href="route('administration.marketplace.index')"
|
|
wire:navigate
|
|
>
|
|
Browse marketplace
|
|
</flux:button>
|
|
</div>
|
|
|
|
<div class="overflow-hidden rounded-xl border">
|
|
<table class="w-full text-sm">
|
|
<thead>
|
|
<tr class="border-b text-left">
|
|
<th class="p-3">Package</th>
|
|
<th>Version</th>
|
|
<th>Status</th>
|
|
<th>Update</th>
|
|
<th class="p-3 text-right">Actions</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
@forelse ($packages as $package)
|
|
<tr class="border-b">
|
|
<td class="p-3">
|
|
<div class="font-medium">{{ $package->package_name }}</div>
|
|
<div class="text-xs text-zinc-500">
|
|
{{ \Illuminate\Support\Str::headline($package->type) }}
|
|
</div>
|
|
</td>
|
|
|
|
<td>{{ $package->version }}</td>
|
|
<td>{{ ucfirst($package->status) }}</td>
|
|
<td>
|
|
{{ $package->hasUpdate() ? $package->package->latest_version : 'Current' }}
|
|
</td>
|
|
|
|
<td class="p-3">
|
|
<div class="flex justify-end gap-2">
|
|
@can('marketplace.update')
|
|
<form
|
|
method="POST"
|
|
action="{{ route('administration.marketplace.toggle', $package) }}"
|
|
>
|
|
@csrf
|
|
|
|
<flux:button type="submit" size="sm">
|
|
{{ $package->is_enabled ? 'Disable' : 'Enable' }}
|
|
</flux:button>
|
|
</form>
|
|
|
|
@if ($package->hasUpdate())
|
|
<form
|
|
method="POST"
|
|
action="{{ route('administration.marketplace.update', $package->package) }}"
|
|
>
|
|
@csrf
|
|
|
|
<flux:button type="submit" size="sm" variant="primary">
|
|
Update
|
|
</flux:button>
|
|
</form>
|
|
@endif
|
|
@endcan
|
|
|
|
@can('marketplace.remove')
|
|
<form
|
|
method="POST"
|
|
action="{{ route('administration.marketplace.remove', $package) }}"
|
|
>
|
|
@csrf
|
|
@method('DELETE')
|
|
|
|
<flux:button type="submit" size="sm" variant="danger">
|
|
Remove
|
|
</flux:button>
|
|
</form>
|
|
@endcan
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
@empty
|
|
<tr>
|
|
<td colspan="5" class="p-8 text-center text-zinc-500">
|
|
No packages installed through the marketplace.
|
|
</td>
|
|
</tr>
|
|
@endforelse
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
{{ $packages->links() }}
|
|
</div>
|
|
</x-layouts.app>
|