## Summary - move the Laravel application into `apps/platform` and keep the repository root for orchestration, docs, and tooling - update the local command model, Sail/Docker wiring, runtime paths, and ignore rules around the new platform location - add relocation quickstart/contracts plus focused smoke coverage for bootstrap, command model, routes, and runtime behavior ## Validation - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/PlatformRelocation` - integrated browser smoke validated `/up`, `/`, `/admin`, `/admin/choose-workspace`, and tenant route semantics for `200`, `403`, and `404` ## Remaining Rollout Checks - validate Dokploy build context and working-directory assumptions against the new `apps/platform` layout - confirm web, queue, and scheduler processes all start from the expected working directory in staging/production - verify no legacy volume mounts or asset-publish paths still point at the old root-level `public/` or `storage/` locations Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #213
83 lines
4.0 KiB
PHP
83 lines
4.0 KiB
PHP
@php
|
|
$contextBanner = $this->canonicalContextBanner();
|
|
$blockedBanner = $this->blockedExecutionBanner();
|
|
$lifecycleBanner = $this->lifecycleBanner();
|
|
$restoreContinuationBanner = $this->restoreContinuationBanner();
|
|
$pollInterval = $this->pollInterval();
|
|
@endphp
|
|
|
|
<x-filament-panels::page>
|
|
<div
|
|
@if ($pollInterval !== null) wire:poll.{{ $pollInterval }} @endif
|
|
>
|
|
@if ($contextBanner !== null)
|
|
@php
|
|
$bannerClasses = match ($contextBanner['tone']) {
|
|
'amber' => 'border-amber-200 bg-amber-50 text-amber-900 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-100',
|
|
'slate' => 'border-slate-200 bg-slate-50 text-slate-900 dark:border-slate-500/30 dark:bg-slate-500/10 dark:text-slate-100',
|
|
default => 'border-sky-200 bg-sky-50 text-sky-900 dark:border-sky-500/30 dark:bg-sky-500/10 dark:text-sky-100',
|
|
};
|
|
@endphp
|
|
|
|
<div class="mb-6 rounded-lg border px-4 py-3 text-sm {{ $bannerClasses }}">
|
|
<p class="font-semibold">{{ $contextBanner['title'] }}</p>
|
|
<p class="mt-1">{{ $contextBanner['body'] }}</p>
|
|
</div>
|
|
@endif
|
|
|
|
@if ($blockedBanner !== null)
|
|
@php
|
|
$blockedBannerClasses = 'border-amber-200 bg-amber-50 text-amber-900 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-100';
|
|
@endphp
|
|
|
|
<div class="mb-6 rounded-lg border px-4 py-3 text-sm {{ $blockedBannerClasses }}">
|
|
<p class="font-semibold">{{ $blockedBanner['title'] }}</p>
|
|
<p class="mt-1">{{ $blockedBanner['body'] }}</p>
|
|
</div>
|
|
@endif
|
|
|
|
@if ($lifecycleBanner !== null)
|
|
@php
|
|
$lifecycleBannerClasses = match ($lifecycleBanner['tone']) {
|
|
'rose' => 'border-rose-200 bg-rose-50 text-rose-900 dark:border-rose-500/30 dark:bg-rose-500/10 dark:text-rose-100',
|
|
default => 'border-amber-200 bg-amber-50 text-amber-900 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-100',
|
|
};
|
|
@endphp
|
|
|
|
<div class="mb-6 rounded-lg border px-4 py-3 text-sm {{ $lifecycleBannerClasses }}">
|
|
<p class="font-semibold">{{ $lifecycleBanner['title'] }}</p>
|
|
<p class="mt-1">{{ $lifecycleBanner['body'] }}</p>
|
|
</div>
|
|
@endif
|
|
|
|
@if ($restoreContinuationBanner !== null)
|
|
@php
|
|
$restoreContinuationClasses = match ($restoreContinuationBanner['tone']) {
|
|
'amber' => 'border-amber-200 bg-amber-50 text-amber-900 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-100',
|
|
default => 'border-sky-200 bg-sky-50 text-sky-900 dark:border-sky-500/30 dark:bg-sky-500/10 dark:text-sky-100',
|
|
};
|
|
@endphp
|
|
|
|
<div class="mb-6 rounded-lg border px-4 py-3 text-sm {{ $restoreContinuationClasses }}">
|
|
<p class="font-semibold">{{ $restoreContinuationBanner['title'] }}</p>
|
|
<p class="mt-1">{{ $restoreContinuationBanner['body'] }}</p>
|
|
@if ($restoreContinuationBanner['url'] !== null && $restoreContinuationBanner['link_label'] !== null)
|
|
<p class="mt-3">
|
|
<a href="{{ $restoreContinuationBanner['url'] }}" class="font-semibold underline underline-offset-2">
|
|
{{ $restoreContinuationBanner['link_label'] }}
|
|
</a>
|
|
</p>
|
|
@endif
|
|
</div>
|
|
@endif
|
|
|
|
@if ($this->redactionIntegrityNote())
|
|
<div class="mb-6 rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-900 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-100">
|
|
{{ $this->redactionIntegrityNote() }}
|
|
</div>
|
|
@endif
|
|
|
|
{{ $this->infolist }}
|
|
</div>
|
|
</x-filament-panels::page>
|