diff --git a/_docker/app/Dockerfile b/_docker/app/Dockerfile index c05abbc..50ac0aa 100644 --- a/_docker/app/Dockerfile +++ b/_docker/app/Dockerfile @@ -28,6 +28,8 @@ RUN apt-get update && apt-get install -y zlib1g-dev libicu-dev g++ RUN docker-php-ext-configure intl RUN docker-php-ext-install intl +RUN apt-get update && apt-get install -y default-mysql-client + # Копирование конфигурационного файла PHP COPY ./_docker/app/php.ini /usr/local/etc/php/conf.d/php.ini diff --git a/app/Filament/Pages/Backups.php b/app/Filament/Pages/Backups.php new file mode 100644 index 0000000..ba784fa --- /dev/null +++ b/app/Filament/Pages/Backups.php @@ -0,0 +1,70 @@ +button() + ->label(__('filament-spatie-backup::backup.pages.backups.actions.create_backup')) + ->action('create'), + ]; + } + + public function openOptionModal(): void + { + $this->dispatch('open-modal', id: 'backup-option'); + } + + public function create(string $option = ''): void + { + RunBackup::dispatch(); + + Notification::make() + ->title('Резервная копия создается в фоновом режиме') + ->success() + ->send(); + + $this->dispatch('close-modal', id: 'backup-option'); + } + + public function shouldDisplayStatusListRecords(): bool + { + /** @var FilamentSpatieLaravelBackupPlugin $plugin */ + $plugin = filament()->getPlugin('filament-spatie-backup'); + + return $plugin->hasStatusListRecordsTable(); + } +} diff --git a/app/Jobs/RunBackup.php b/app/Jobs/RunBackup.php new file mode 100644 index 0000000..fa8f693 --- /dev/null +++ b/app/Jobs/RunBackup.php @@ -0,0 +1,38 @@ + true, // Уберите это, если хотите видеть более подробный вывод + ]); + + // Логируем вывод + Log::info('Backup command output: ' . Artisan::output()); + Log::error('Backup command exit code: ' . $exitCode); + } +} diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 91ccf76..0d1bcf3 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -2,6 +2,7 @@ namespace App\Providers\Filament; +use App\Filament\Pages\Backups; use Filament\Http\Middleware\Authenticate; use Filament\Http\Middleware\DisableBladeIconComponents; use Filament\Http\Middleware\DispatchServingFilamentEvent; @@ -17,6 +18,7 @@ use Illuminate\Routing\Middleware\SubstituteBindings; use Illuminate\Session\Middleware\AuthenticateSession; use Illuminate\Session\Middleware\StartSession; use Illuminate\View\Middleware\ShareErrorsFromSession; +use ShuvroRoy\FilamentSpatieLaravelBackup\FilamentSpatieLaravelBackupPlugin; class AdminPanelProvider extends PanelProvider @@ -58,7 +60,8 @@ class AdminPanelProvider extends PanelProvider Authenticate::class, ]) ->plugins([ - \BezhanSalleh\FilamentShield\FilamentShieldPlugin::make() + \BezhanSalleh\FilamentShield\FilamentShieldPlugin::make(), + FilamentSpatieLaravelBackupPlugin::make()->usingPage(Backups::class), ]); } } diff --git a/composer.json b/composer.json index 2b4f2e4..93e8493 100644 --- a/composer.json +++ b/composer.json @@ -23,6 +23,7 @@ "nesbot/carbon": "^2.71", "protonemedia/laravel-cross-eloquent-search": "^3.4", "pxlrbt/filament-excel": "^2.3", + "shuvroroy/filament-spatie-laravel-backup": "^2.2", "spatie/laravel-sitemap": "^7.2", "symfony/filesystem": "^6.3", "tightenco/ziggy": "^1.0", diff --git a/resources/views/filament/pages/backup.blade.php b/resources/views/filament/pages/backup.blade.php new file mode 100644 index 0000000..cb27763 --- /dev/null +++ b/resources/views/filament/pages/backup.blade.php @@ -0,0 +1,34 @@ + +
+ @if($this->shouldDisplayStatusListRecords()) +
+ @livewire(ShuvroRoy\FilamentSpatieLaravelBackup\Components\BackupDestinationStatusListRecords::class) +
+ @endif +
+ @livewire(ShuvroRoy\FilamentSpatieLaravelBackup\Components\BackupDestinationListRecords::class) +
+ + + +

{{ __('filament-spatie-backup::backup.pages.backups.modal.label') }}

+
+ + +
+ + {{ __('filament-spatie-backup::backup.pages.backups.modal.buttons.only_db') }} + + + + {{ __('filament-spatie-backup::backup.pages.backups.modal.buttons.only_files') }} + + + + {{ __('filament-spatie-backup::backup.pages.backups.modal.buttons.db_and_files') }} + +
+
+
+
+