diff --git a/app/Http/Controllers/MusicProductionController.php b/app/Http/Controllers/MusicProductionController.php index 5953690..98347b6 100644 --- a/app/Http/Controllers/MusicProductionController.php +++ b/app/Http/Controllers/MusicProductionController.php @@ -19,10 +19,28 @@ class MusicProductionController extends Controller $settings->{$setting->key} = $setting->value; } - // Get active music productions - $productions = MusicProduction::active() - ->ordered() - ->paginate(9); // Using 9 for nice grid layout (3 per row) + $search = trim((string) request('q', '')); + + $productionsQuery = MusicProduction::active()->ordered(); + + if ($search !== '') { + $locale = app()->getLocale(); + + $productionsQuery->where(function ($query) use ($search, $locale) { + $query->where('title', 'like', "%{$search}%") + ->orWhere('client_name', 'like', "%{$search}%") + ->orWhere('slug', 'like', "%{$search}%") + ->orWhereHas('translations', function ($translationQuery) use ($search, $locale) { + $translationQuery + ->where('status', 'published') + ->whereIn('field_name', ['title', 'client_name', 'content']) + ->where('field_value', 'like', "%{$search}%") + ->where('language_code', $locale); + }); + }); + } + + $productions = $productionsQuery->paginate(9)->withQueryString(); // --- Footer Logic --- $renderedFooter = null; @@ -50,6 +68,7 @@ class MusicProductionController extends Controller return view('front.music-productions.index', [ 'productions' => $productions, + 'search' => $search, 'settings' => $settings, 'header' => 'partials.header-center-nav', 'renderedFooter' => $renderedFooter, diff --git a/lang/en/music_productions.php b/lang/en/music_productions.php index 2dcfebc..41ebb30 100644 --- a/lang/en/music_productions.php +++ b/lang/en/music_productions.php @@ -7,6 +7,8 @@ return [ 'meta-index-title' => 'Music production, soundtracks and corporate music projects.', 'meta-index-description' => 'Explore our albums, singles and production work published on Spotify, YouTube and digital platforms.', 'empty' => 'No music productions registered yet.', + 'search_placeholder' => 'Search by title or client name…', + 'search_no_results' => 'No results found for “:query”.', 'card_category_default' => 'Production', 'view_details_tooltip' => 'View details', 'project_details' => 'Project Details', diff --git a/lang/tr/music_productions.php b/lang/tr/music_productions.php index 6090a0f..24fbb83 100644 --- a/lang/tr/music_productions.php +++ b/lang/tr/music_productions.php @@ -7,6 +7,8 @@ return [ 'meta-index-title' => 'Müzik prodüksiyonu, film müzikleri ve kurumsal müzik çalışmalarımız.', 'meta-index-description' => 'Spotify, YouTube ve dijital platformlarda yayımlanan albüm, single ve prodüksiyon projelerimizi keşfedin.', 'empty' => 'Şu anda kayıtlı müzik prodüksiyonu bulunmuyor.', + 'search_placeholder' => 'Başlık veya müşteri adı ile ara…', + 'search_no_results' => '“:query” için sonuç bulunamadı.', 'card_category_default' => 'Prodüksiyon', 'view_details_tooltip' => 'Detayları görüntüle', 'project_details' => 'Proje Detayları', diff --git a/resources/views/front/music-productions/index.blade.php b/resources/views/front/music-productions/index.blade.php index 657594d..5108b0c 100644 --- a/resources/views/front/music-productions/index.blade.php +++ b/resources/views/front/music-productions/index.blade.php @@ -25,6 +25,22 @@
{{ __('music_productions.meta-index-description') }}
+ @@ -134,7 +150,13 @@ -{{ __('music_productions.empty') }}
++ @if(!empty($search)) + {{ __('music_productions.search_no_results', ['query' => $search]) }} + @else + {{ __('music_productions.empty') }} + @endif +