Skip to content

Commit bfe1686

Browse files
committed
Added global and table search
1 parent ce05237 commit bfe1686

File tree

4 files changed

+39
-1
lines changed

4 files changed

+39
-1
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
namespace Statikbe\FilamentFlexibleContentBlockPages\Models\Concerns;
4+
5+
trait HasSearchFilterTrait
6+
{
7+
8+
public function scopeSearch($query, string $search): void
9+
{
10+
$search = strtolower($search);
11+
$query->when($search, function ($query, $search) {
12+
$locale = app()->getLocale();
13+
$query->where(function($query) use ($search, $locale) {
14+
$query->whereRaw("LOWER(title->>'$.{$locale}') LIKE ?", ["%{$search}%"])
15+
->orWhereRaw("LOWER(intro->>'$.{$locale}') LIKE ?", ["%{$search}%"])
16+
->orWhereRaw("LOWER(content_blocks->>'$.{$locale}') LIKE ?", ["%{$search}%"])
17+
->orWhereRaw("LOWER(seo_title->>'$.{$locale}') LIKE ?", ["%{$search}%"])
18+
->orWhereRaw("LOWER(seo_description->>'$.{$locale}') LIKE ?", ["%{$search}%"])
19+
->orWhereRaw("LOWER(overview_title->>'$.{$locale}') LIKE ?", ["%{$search}%"])
20+
->orWhereRaw("LOWER(overview_description->>'$.{$locale}') LIKE ?", ["%{$search}%"]);
21+
});
22+
});
23+
}
24+
}

src/Models/Page.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Illuminate\Database\Eloquent\Model;
88
use Spatie\MediaLibrary\HasMedia;
99
use Statikbe\FilamentFlexibleContentBlockPages\Facades\FilamentFlexibleContentBlockPages;
10+
use Statikbe\FilamentFlexibleContentBlockPages\Models\Concerns\HasSearchFilterTrait;
1011
use Statikbe\FilamentFlexibleContentBlockPages\Models\Concerns\HasTitleMenuLabelTrait;
1112
use Statikbe\FilamentFlexibleContentBlockPages\Models\Contracts\HasMenuLabel;
1213
use Statikbe\FilamentFlexibleContentBlockPages\Observers\PageObserver;
@@ -53,6 +54,7 @@ class Page extends Model implements HasCode, HasContentBlocks, HasHeroCallToActi
5354
use HasTranslatedPageAttributesTrait;
5455
use HasTranslatedSEOAttributesTrait;
5556
use HasTranslatedSlugAttributeTrait;
57+
use HasSearchFilterTrait;
5658

5759
const HOME_PAGE = 'HOME';
5860

src/Resources/PageResource.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,9 @@ public static function getGloballySearchableAttributes(): array
241241
'content_blocks',
242242
'seo_title',
243243
'seo_description',
244-
'seo_keywords'
244+
'seo_keywords',
245+
'overview_title',
246+
'overview_description',
245247
];
246248
}
247249

src/Resources/PageResource/Pages/ListPages.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Filament\Actions\CreateAction;
66
use Filament\Resources\Pages\ListRecords;
77
use Filament\Resources\Pages\ListRecords\Concerns\Translatable;
8+
use Illuminate\Database\Eloquent\Builder;
89
use Statikbe\FilamentFlexibleContentBlockPages\Facades\FilamentFlexibleContentBlockPages;
910
use Statikbe\FilamentFlexibleContentBlockPages\FilamentFlexibleContentBlockPagesConfig;
1011
use Statikbe\FilamentFlexibleContentBlocks\Filament\Actions\FlexibleLocaleSwitcher;
@@ -30,4 +31,13 @@ public function isTableSearchable(): bool
3031
{
3132
return true;
3233
}
34+
35+
protected function applySearchToTableQuery(Builder $query): Builder
36+
{
37+
if (filled($searchQuery = $this->getTableSearch())) {
38+
$query->search($searchQuery);
39+
}
40+
41+
return $query;
42+
}
3343
}

0 commit comments

Comments
 (0)