HasNewsPreview.php 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. namespace App\Filament\Resources\NewsResource\Pages;
  3. use Filament\Actions\ActionGroup;
  4. use Filament\Forms\Components\Select;
  5. use Pboivin\FilamentPeek\Pages\Actions\PreviewAction;
  6. use Pboivin\FilamentPeek\Pages\Concerns\HasPreviewModal;
  7. trait HasNewsPreview
  8. {
  9. use HasPreviewModal;
  10. protected function getActions(): array
  11. {
  12. return [
  13. ActionGroup::make([
  14. PreviewAction::make('tw')
  15. ->label('中文(台灣)')
  16. ->previewModalData(fn() => ['locale' => 'zh_TW']),
  17. PreviewAction::make('en')
  18. ->label('English')
  19. ->previewModalData(fn() => ['locale' => 'en']),
  20. PreviewAction::make('jp')
  21. ->label('jp')
  22. ->previewModalData(fn() => ['locale' => 'jp']),
  23. ])
  24. ->label('預覽')
  25. ->icon('heroicon-m-chevron-down')
  26. ->color('primary')
  27. ->button()
  28. ];
  29. }
  30. protected function getPreviewModalView(): ?string
  31. {
  32. return 'previews.news.show';
  33. }
  34. protected function getPreviewModalDataRecordKey(): ?string
  35. {
  36. return 'news';
  37. }
  38. protected function mutatePreviewModalData(array $data): array
  39. {
  40. // relations
  41. $data['paragraphs'] = $this->data['paragraphs'];
  42. $data['extraImages'] = $this->data['extra_images'];
  43. return $data;
  44. }
  45. }