Skip to content

Commit 03fa3ee

Browse files
feat:[LAR-129] Add Filament resource Thread in Admin (#244)
2 parents 1965690 + 95c1a16 commit 03fa3ee

File tree

7 files changed

+3168
-309
lines changed

7 files changed

+3168
-309
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Filament\Resources;
6+
7+
use App\Filament\Resources\ThreadResource\Pages;
8+
use App\Models\Thread;
9+
use Filament\Resources\Resource;
10+
use Filament\Tables;
11+
use Filament\Tables\Actions\Action;
12+
use Filament\Tables\Actions\ActionGroup;
13+
use Filament\Tables\Columns\IconColumn;
14+
use Filament\Tables\Columns\TextColumn;
15+
use Filament\Tables\Filters\SelectFilter;
16+
use Filament\Tables\Table;
17+
18+
final class ThreadResource extends Resource
19+
{
20+
protected static ?string $model = Thread::class;
21+
22+
protected static ?string $navigationIcon = 'heroicon-o-chat-bubble-left-right';
23+
24+
public static function getNavigationGroup(): string
25+
{
26+
return __('Forum');
27+
}
28+
29+
public static function table(Table $table): Table
30+
{
31+
return $table
32+
->columns([
33+
TextColumn::make('title')
34+
->label('Titre')
35+
->sortable(),
36+
TextColumn::make('user.name')
37+
->label('Auteur'),
38+
IconColumn::make('locked')
39+
->label('Vérrouillé')
40+
->boolean()
41+
->trueIcon('heroicon-s-lock-closed')
42+
->trueColor('warning')
43+
->falseIcon('heroicon-s-lock-open')
44+
->falseColor('success'),
45+
TextColumn::make('resolved_by')
46+
->label('Résolu')
47+
->badge()
48+
->getStateUsing(fn ($record) => $record->resolved_by == null ? 'Non' : 'Oui')
49+
->color(fn ($record) => ($record?->resolved_by == null) ? 'gray' : 'success'),
50+
TextColumn::make('created_at')
51+
->label('Date de publication')
52+
->dateTime(),
53+
])
54+
->filters([
55+
SelectFilter::make('Channels')->relationship('channels', 'name')->searchable()->preload(),
56+
])
57+
->actions([
58+
ActionGroup::make([
59+
Action::make('view')
60+
->label('Voir le thread')
61+
->icon('heroicon-o-eye')
62+
->color('success')
63+
->url(fn (Thread $record): string => route('forum.show', $record))
64+
->openUrlInNewTab(),
65+
Tables\Actions\DeleteAction::make(),
66+
]),
67+
])
68+
->bulkActions([
69+
Tables\Actions\BulkActionGroup::make([
70+
Tables\Actions\DeleteBulkAction::make(),
71+
]),
72+
]);
73+
}
74+
75+
public static function getPages(): array
76+
{
77+
return [
78+
'index' => Pages\ListThreads::route('/'),
79+
];
80+
}
81+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Filament\Resources\ThreadResource\Pages;
6+
7+
use App\Filament\Resources\ThreadResource;
8+
use Filament\Resources\Pages\ListRecords;
9+
10+
final class ListThreads extends ListRecords
11+
{
12+
protected static string $resource = ThreadResource::class;
13+
}

0 commit comments

Comments
 (0)