Skip to content

Commit 8e762c7

Browse files
committed
Add ArticleResource,
1 parent 2445882 commit 8e762c7

File tree

3 files changed

+113
-0
lines changed

3 files changed

+113
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
namespace App\Filament\Resources\Articles;
4+
5+
use App\Filament\Resources\Articles\Pages\ListArticles;
6+
use App\Filament\Resources\Articles\Tables\ArticlesTable;
7+
use App\Models\Article;
8+
use BackedEnum;
9+
use Filament\Resources\Resource;
10+
use Filament\Support\Icons\Heroicon;
11+
use Filament\Tables\Table;
12+
13+
class ArticleResource extends Resource
14+
{
15+
protected static ?string $model = Article::class;
16+
17+
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedNewspaper;
18+
19+
protected static ?string $recordTitleAttribute = 'title';
20+
21+
public static function table(Table $table): Table
22+
{
23+
return ArticlesTable::configure($table);
24+
}
25+
26+
public static function getRelations(): array
27+
{
28+
return [
29+
//
30+
];
31+
}
32+
33+
public static function getPages(): array
34+
{
35+
return [
36+
'index' => ListArticles::route('/')
37+
];
38+
}
39+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
namespace App\Filament\Resources\Articles\Pages;
4+
5+
use App\Filament\Resources\Articles\ArticleResource;
6+
use Filament\Resources\Pages\ListRecords;
7+
8+
class ListArticles extends ListRecords
9+
{
10+
protected static string $resource = ArticleResource::class;
11+
12+
protected function getHeaderActions(): array
13+
{
14+
return [];
15+
}
16+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
3+
namespace App\Filament\Resources\Articles\Tables;
4+
5+
use App\Models\Article;
6+
use Filament\Actions\Action;
7+
use Filament\Actions\BulkActionGroup;
8+
use Filament\Actions\DeleteBulkAction;
9+
use Filament\Tables\Columns\ImageColumn;
10+
use Filament\Tables\Columns\TextColumn;
11+
use Filament\Tables\Filters\Filter;
12+
use Filament\Tables\Table;
13+
use Illuminate\Database\Eloquent\Builder;
14+
15+
class ArticlesTable
16+
{
17+
public static function configure(Table $table): Table
18+
{
19+
return $table
20+
->defaultSort('submitted_at', 'desc')
21+
->openRecordUrlInNewTab()
22+
->columns([
23+
ImageColumn::make('authorRelation.github_id')
24+
->label('Author')
25+
->circular()
26+
->width('1%')
27+
->defaultImageUrl(fn(?string $state): string => $state ? sprintf('https://avatars.githubusercontent.com/u/%s', $state) : asset('images/laravelio-icon-gray.svg')),
28+
29+
TextColumn::make('authorRelation.name')
30+
->label('')
31+
->description(fn(Article $article): ?string => $article->authorRelation->username),
32+
33+
TextColumn::make('title')
34+
->searchable(['title', 'slug', 'body']),
35+
36+
TextColumn::make('submitted_at')
37+
->label('Submitted on')
38+
->dateTime()
39+
->sortable(),
40+
])
41+
->filters([
42+
Filter::make('awaiting_approvals')
43+
->query(fn(Builder $query): Builder => $query->awaitingApproval())
44+
->default()
45+
])
46+
->recordActions([
47+
Action::make('view')
48+
->url(fn(Article $article): string => route('articles.show', $article->slug()))
49+
->openUrlInNewTab()
50+
->icon('heroicon-s-eye'),
51+
])
52+
->toolbarActions([
53+
BulkActionGroup::make([
54+
DeleteBulkAction::make(),
55+
]),
56+
]);
57+
}
58+
}

0 commit comments

Comments
 (0)