Skip to content

Commit 6e121e1

Browse files
committed
Added resource and global search on page resource
1 parent 71edb66 commit 6e121e1

File tree

1 file changed

+46
-2
lines changed

1 file changed

+46
-2
lines changed

src/Resources/PageResource.php

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
use Filament\Tables\Columns\TextColumn;
1313
use Filament\Tables\Table;
1414
use Illuminate\Database\Eloquent\Builder;
15+
use Illuminate\Database\Eloquent\Model;
16+
use Illuminate\Support\Str;
1517
use Statikbe\FilamentFlexibleContentBlockPages\Actions\LinkedToMenuItemBulkDeleteAction;
1618
use Statikbe\FilamentFlexibleContentBlockPages\Facades\FilamentFlexibleContentBlockPages;
1719
use Statikbe\FilamentFlexibleContentBlockPages\Resources\PageResource\Pages\CreatePage;
@@ -47,6 +49,10 @@ class PageResource extends Resource
4749

4850
protected static ?string $recordTitleAttribute = 'title';
4951

52+
protected static int $globalSearchResultsLimit = 10;
53+
54+
protected static ?bool $isGlobalSearchForcedCaseInsensitive = true;
55+
5056
public static function getModel(): string
5157
{
5258
return FilamentFlexibleContentBlockPages::config()->getPageModel()::class;
@@ -179,12 +185,18 @@ public static function table(Table $table): Table
179185
{
180186
return $table
181187
->columns([
182-
TitleColumn::create(),
188+
TitleColumn::create()
189+
->searchable(query: function($query, $search) {
190+
$locale = app()->getLocale();
191+
$search = strtolower($search);
192+
return $query->whereRaw("LOWER(title->>'$.{$locale}') LIKE ?", ["%{$search}%"]);
193+
}),
183194
TextColumn::make('created_at')
184195
->label(flexiblePagesTrans('pages.table.created_at_col'))
185196
->dateTime(FilamentFlexibleBlocksConfig::getPublishingDateFormatting())
186197
->sortable(),
187-
PublishedColumn::create(),
198+
PublishedColumn::create()
199+
->sortable(),
188200
])
189201
->filters([
190202
PublishedFilter::create(),
@@ -220,4 +232,36 @@ public static function getPages(): array
220232
'edit' => EditPage::route('/{record:id}/edit'),
221233
];
222234
}
235+
236+
public static function getGloballySearchableAttributes(): array
237+
{
238+
return [
239+
'title',
240+
'intro',
241+
'content_blocks',
242+
'seo_title',
243+
'seo_description',
244+
'seo_keywords'
245+
];
246+
}
247+
248+
public static function getGlobalSearchResultTitle(Model $record): string
249+
{
250+
return $record->getTranslation('title', app()->getLocale());
251+
}
252+
253+
public static function getGlobalSearchResultDetails(Model $record): array
254+
{
255+
$published = trans('filament-flexible-content-blocks::filament-flexible-content-blocks.columns.is_published_state_unpublished');
256+
if ($record->isPublished()) {
257+
$published = trans(
258+
'filament-flexible-content-blocks::filament-flexible-content-blocks.columns.is_published_state_published'
259+
);
260+
}
261+
262+
return [
263+
trans('filament-flexible-content-blocks::filament-flexible-content-blocks.form_component.intro_lbl') => Str::limit(strip_tags($record->intro)),
264+
trans('filament-flexible-content-blocks::filament-flexible-content-blocks.columns.is_published') => $published
265+
];
266+
}
223267
}

0 commit comments

Comments
 (0)