From d005d3fcd5a90be0f946fe0331067cbd11a795a1 Mon Sep 17 00:00:00 2001 From: grafst Date: Wed, 1 Oct 2025 18:50:00 +0200 Subject: [PATCH] add more configurability: icon, label, navigationGroup --- src/FilamentSpatieLaravelBackupPlugin.php | 64 +++++++++++++++++++++++ src/Pages/Backups.php | 19 +++++-- 2 files changed, 79 insertions(+), 4 deletions(-) diff --git a/src/FilamentSpatieLaravelBackupPlugin.php b/src/FilamentSpatieLaravelBackupPlugin.php index f829e8a..7dfe22a 100644 --- a/src/FilamentSpatieLaravelBackupPlugin.php +++ b/src/FilamentSpatieLaravelBackupPlugin.php @@ -7,6 +7,7 @@ use Filament\Panel; use Filament\Support\Concerns\EvaluatesClosures; use ShuvroRoy\FilamentSpatieLaravelBackup\Pages\Backups; +use function __; class FilamentSpatieLaravelBackupPlugin implements Plugin { @@ -23,6 +24,10 @@ class FilamentSpatieLaravelBackupPlugin implements Plugin protected bool $hasStatusListRecordsTable = true; protected ?int $timeout = null; + private Closure|string $navigationIcon; + private string|Closure|null $navigationLabel = null; + private Closure|string|null $navigationGroup = null; + private Closure|int $navigationSort = 1; public function register(Panel $panel): void { @@ -138,4 +143,63 @@ public function hasStatusListRecordsTable(): bool { return $this->hasStatusListRecordsTable; } + + public function getHeading(): string + { + return __('filament-spatie-backup::backup.pages.backups.heading'); + } + public function navigationGroup(string | Closure | null $navigationGroup): static + { + $this->navigationGroup = $navigationGroup; + $this->navigationGroupSet = true; + + return $this; + } + + public function getNavigationGroup(): ?string + { + $navigationGroup = $this->evaluate($this->navigationGroup); + + if ($navigationGroup === null && $this->navigationGroupSet === false) { + return __('filament-spatie-backup::backup.pages.navigation.group'); + } + + return $navigationGroup; + } + + public function navigationSort(int | Closure $navigationSort): static + { + $this->navigationSort = $navigationSort; + + return $this; + } + + public function getNavigationSort(): int + { + return $this->evaluate($this->navigationSort); + } + + public function navigationIcon(string | Closure $navigationIcon): static + { + $this->navigationIcon = $navigationIcon; + + return $this; + } + + public function getNavigationIcon(): string + { + return $this->evaluate($this->navigationIcon) ?? 'heroicon-o-cog'; + } + + public function navigationLabel(string | Closure | null $navigationLabel): static + { + $this->navigationLabel = $navigationLabel; + + return $this; + } + + public function getNavigationLabel(): string + { + return $this->evaluate($this->navigationLabel) ?? __('filament-spatie-backup::backup.pages.backups.navigation.label'); + } } diff --git a/src/Pages/Backups.php b/src/Pages/Backups.php index 31cc32c..78ef2d3 100644 --- a/src/Pages/Backups.php +++ b/src/Pages/Backups.php @@ -12,23 +12,34 @@ class Backups extends Page { - protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-cog'; protected string $view = 'filament-spatie-backup::pages.backups'; public function getHeading(): string | Htmlable { - return __('filament-spatie-backup::backup.pages.backups.heading'); + return FilamentSpatieLaravelBackupPlugin::get()->getHeading(); } + + public static function getNavigationGroup(): ?string { - return __('filament-spatie-backup::backup.pages.backups.navigation.group'); + return FilamentSpatieLaravelBackupPlugin::get()->getNavigationGroup(); } public static function getNavigationLabel(): string { - return __('filament-spatie-backup::backup.pages.backups.navigation.label'); + return FilamentSpatieLaravelBackupPlugin::get()->getNavigationLabel(); + } + + public static function getNavigationSort(): ?int + { + return FilamentSpatieLaravelBackupPlugin::get()->getNavigationSort(); + } + + public static function getNavigationIcon(): string + { + return FilamentSpatieLaravelBackupPlugin::get()->getNavigationIcon(); } protected function getActions(): array