This commit is contained in:
f4ilji
2024-11-20 20:21:16 +05:00
parent 431755ab9b
commit 083a115ada
6 changed files with 149 additions and 1 deletions
+70
View File
@@ -0,0 +1,70 @@
<?php
namespace App\Filament\Pages;
use App\Jobs\RunBackup;
use Filament\Actions\Action;
use Filament\Notifications\Notification;
use Filament\Pages\Page;
use Illuminate\Contracts\Support\Htmlable;
use ShuvroRoy\FilamentSpatieLaravelBackup\FilamentSpatieLaravelBackupPlugin;
use ShuvroRoy\FilamentSpatieLaravelBackup\Pages\Backups as BaseBackups;
class Backups extends BaseBackups
{
protected static ?string $navigationIcon = 'heroicon-o-cog';
protected static string $view = 'filament.pages.backup';
public function getHeading(): string | Htmlable
{
return __('filament-spatie-backup::backup.pages.backups.heading');
}
public static function getNavigationGroup(): ?string
{
return 'Settings';
}
public static function getNavigationLabel(): string
{
return __('filament-spatie-backup::backup.pages.backups.navigation.label');
}
protected function getActions(): array
{
return [
Action::make('Create Backup')
->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();
}
}
+38
View File
@@ -0,0 +1,38 @@
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Log;
class RunBackup implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*/
public function __construct()
{
//
}
/**
* Execute the job.
*/
public function handle(): void
{
$exitCode = Artisan::call('backup:run', [
'--quiet' => true, // Уберите это, если хотите видеть более подробный вывод
]);
// Логируем вывод
Log::info('Backup command output: ' . Artisan::output());
Log::error('Backup command exit code: ' . $exitCode);
}
}
@@ -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),
]);
}
}