Skip to content

Commit 6a02aa4

Browse files
committed
add delete button on template table
1 parent e3a29bf commit 6a02aa4

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

src/Filament/Resources/TemplateResource/Pages/ListTemplates.php

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,23 @@
22

33
namespace SolutionForest\InspireCms\Filament\Resources\TemplateResource\Pages;
44

5+
use Filament\Infolists\Components\TextEntry;
6+
use Filament\Infolists\Infolist;
57
use Filament\Notifications\Notification;
68
use Filament\Support\Facades\FilamentIcon;
79
use Filament\Tables;
810
use Filament\Tables\Table;
911
use Illuminate\Database\Eloquent\Model;
12+
use Illuminate\Database\Eloquent\SoftDeletingScope;
1013
use SolutionForest\InspireCms\Base\Filament\Resources\Pages\BaseListRecords;
14+
use SolutionForest\InspireCms\Filament\Resources\ContentResource;
15+
use SolutionForest\InspireCms\Filament\Resources\DocumentTypeResource;
1116
use SolutionForest\InspireCms\Filament\Resources\Helpers\TemplateResourceHelper;
1217
use SolutionForest\InspireCms\Filament\Resources\TemplateResource;
1318
use SolutionForest\InspireCms\Filament\Widgets\TemplateInfo;
1419
use SolutionForest\InspireCms\Filament\Widgets\ThemeInfo;
20+
use SolutionForest\InspireCms\Helpers\FilamentResourceHelper;
21+
use SolutionForest\InspireCms\Helpers\UIHelper;
1522
use SolutionForest\InspireCms\InspireCmsConfig;
1623
use SolutionForest\InspireCms\Models\Contracts\Template;
1724

@@ -34,6 +41,7 @@ public static function getResource(): string
3441
public function table(Table $table): Table
3542
{
3643
return parent::table($table)
44+
->modifyQueryUsing(fn ($query) => $query->with(['documentTypes', 'contents' => fn ($query) => $query->withoutGlobalScopes([SoftDeletingScope::class])]))
3745
->headerActions([
3846
Tables\Actions\SelectAction::make('theme')
3947
->options(TemplateResourceHelper::getThemeSelectOptions())
@@ -68,6 +76,61 @@ public function table(Table $table): Table
6876
'theme' => $this->theme,
6977
'content' => $record->getContent(theme: $this->theme),
7078
]),
79+
Tables\Actions\DeleteAction::make()
80+
->requiresConfirmation()
81+
->visible(function (Model | Template $record) {
82+
return count($record->documentTypes ?? []) <= 0 &&
83+
count($record->contents ?? []) <= 0;
84+
}),
85+
Tables\Actions\Action::make('viewUsage')
86+
->modalSubmitAction(fn () => false) // Disable the form submission
87+
->color('gray')
88+
->icon(FilamentIcon::resolve('actions::view-action') ?? 'heroicon-m-eye')
89+
->infolist(fn (Infolist $infolist) => $infolist
90+
->schema([
91+
TextEntry::make('id')
92+
->label(__('inspirecms::inspirecms.id')),
93+
TextEntry::make('slug')
94+
->label(__('inspirecms::resources/template.slug.label'))
95+
->badge(),
96+
TextEntry::make('documentTypes')
97+
->label(__('inspirecms::inspirecms.document_type'))
98+
->getStateUsing(fn (Template | Model $record) => $record->documentTypes)
99+
->formatStateUsing(function ($state) {
100+
if (!$state instanceof Model) {
101+
return __('inspirecms::inspirecms.n/a');
102+
}
103+
$url = FilamentResourceHelper::attemptToGetUrl(
104+
InspireCmsConfig::getFilamentResource('document_type', DocumentTypeResource::class),
105+
['edit', 'view'],
106+
['record' => $state],
107+
false
108+
);
109+
return UIHelper::generateLink($state->slug, $url, [
110+
'target' => '_blank',
111+
]);
112+
})
113+
->listWithLineBreaks(),
114+
TextEntry::make('contents')
115+
->label(__('inspirecms::inspirecms.content'))
116+
->getStateUsing(fn (Template | Model $record) => $record->contents)
117+
->formatStateUsing(function ($state) {
118+
if (!$state instanceof Model) {
119+
return __('inspirecms::inspirecms.n/a');
120+
}
121+
$url = FilamentResourceHelper::attemptToGetUrl(
122+
InspireCmsConfig::getFilamentResource('content', ContentResource::class),
123+
['edit', 'view'],
124+
['record' => $state],
125+
false
126+
);
127+
return UIHelper::generateLink($state->slug, $url, [
128+
'target' => '_blank',
129+
]);
130+
})
131+
->listWithLineBreaks(),
132+
])
133+
),
71134
]);
72135
}
73136

0 commit comments

Comments
 (0)