label(__('admin.messages.ai_optimize')) ->action(function (): void { OptimizeArticleContentJob::dispatch($this->record->getKey()); Notification::make() ->title(__('admin.messages.ai_optimize_queued')) ->body(__('admin.messages.ai_optimize_queue_hint')) ->success() ->send(); }), DeleteAction::make(), ...Hook::collect('filament.article.actions'), ]; } /** * @param array $data * @return array */ protected function mutateFormDataBeforeFill(array $data): array { $filtered = Hook::filter('filament.article.mutate_before_fill', $data, $this->record); return is_array($filtered) ? $filtered : $data; } /** * @param array $data * @return array */ protected function mutateFormDataBeforeSave(array $data): array { $filtered = Hook::filter('filament.article.mutate_before_save', $data, $this->record); return is_array($filtered) ? $filtered : $data; } protected function afterSave(): void { Hook::dispatch('filament.article.after_save', $this->record, $this->form->getState()); } }