diff --git a/app/Http/Livewire/Library/LibraryTable.php b/app/Http/Livewire/Library/LibraryTable.php index dd6f0db3..2655c02e 100644 --- a/app/Http/Livewire/Library/LibraryTable.php +++ b/app/Http/Livewire/Library/LibraryTable.php @@ -25,8 +25,8 @@ class LibraryTable extends Component protected $queryString = [ 'currentTab' => ['except' => '*'], - 'filters' => ['except' => ''], - 'search' => ['except' => ''], + 'filters' => ['except' => ''], + 'search' => ['except' => ''], ]; public function loadMore() @@ -54,7 +54,7 @@ class LibraryTable extends Component public function render() { - $shouldBePublic = ! $this->isLecturerPage; + $shouldBePublic = !$this->isLecturerPage; $libraries = \App\Models\Library::query() ->whereNull('parent_id') ->where('is_public', $shouldBePublic) @@ -84,32 +84,32 @@ class LibraryTable extends Component } return view('livewire.library.library-table', [ - 'libraries' => $tabs, + 'libraries' => $tabs, 'libraryItems' => LibraryItem::query() ->with([ 'lecturer', 'tags', ]) - ->when($this->search, fn ($query) => $query + ->when($this->search, fn($query) => $query ->where('name', 'ilike', '%'.$this->search.'%') - ->orWhere(fn ($query) => $query + ->orWhere(fn($query) => $query ->when(count($searchTags) > 0 && count($this->filters) < 1, - fn ($query) => $query->whereHas('tags', - fn ($query) => $query->whereIn('tags.id', $searchTags))) + fn($query) => $query->whereHas('tags', + fn($query) => $query->whereIn('tags.id', $searchTags))) ) ) - ->when($this->currentTab !== '*', fn ($query) => $query + ->when($this->currentTab !== '*', fn($query) => $query ->whereHas('libraries', - fn ($query) => $query + fn($query) => $query ->where('libraries.name', $this->currentTab) ) ) - ->when(isset($this->filters['tag']), fn ($query) => $query->whereHas('tags', - fn ($query) => $query->whereIn('tags.id', $this->filters['tag']))) + ->when(isset($this->filters['tag']), fn($query) => $query->whereHas('tags', + fn($query) => $query->whereIn('tags.id', $this->filters['tag']))) ->when(isset($this->filters['language']), - fn ($query) => $query->whereIn('language_code', $this->filters['language'])) + fn($query) => $query->whereIn('language_code', $this->filters['language'])) ->whereHas('libraries', - fn ($query) => $query->where('libraries.is_public', $shouldBePublic)) + fn($query) => $query->where('libraries.is_public', $shouldBePublic)) ->orderByDesc('library_items.created_at') ->paginate($this->perPage), ])->layout('layouts.app', [ diff --git a/app/Http/Livewire/Library/PodcastEpisodesTable.php b/app/Http/Livewire/Library/PodcastEpisodesTable.php new file mode 100644 index 00000000..d6675ae9 --- /dev/null +++ b/app/Http/Livewire/Library/PodcastEpisodesTable.php @@ -0,0 +1,50 @@ + ['except' => ''], + 'search' => ['except' => ''], + ]; + + public function loadMore() + { + $this->perPage += 9; + } + + public function resetFiltering($isLecturerPage = false) + { + return to_route('library.table.podcastsEpisodes', ['country' => $this->country]); + } + + public function render() + { + return view('livewire.library.podcast-episodes-table', [ + 'episodes' => Episode::query() + ->with(['podcast']) + ->when($this->search, + fn($query, $search) => $query + ->where('data->title', 'ilike', "%{$search}%") + ->orWhere('data->description', 'ilike', "%{$search}%") + ) + ->orderByDesc('data->datePublished') + ->paginate($this->perPage), + ]); + } +} diff --git a/resources/lang/de.json b/resources/lang/de.json index 018eed34..ede1742c 100644 --- a/resources/lang/de.json +++ b/resources/lang/de.json @@ -792,5 +792,11 @@ "Manage cities\/areas": "Verwalte Städte\/Gebiete", "Manage venues": "Verwalte Veranstaltungsorte", "Image deleted!": "Bild gelöscht!", - "Current pictures": "Derzeitige Bilder" + "Current pictures": "Derzeitige Bilder", + "PubKey copied!": "Public Key kopiert!", + "Nostr": "", + "Podcast Episodes": "Podcast-Episoden", + "Language": "Sprache", + "minutes": "Minuten", + "Recurring appointment \/ monthly": "Wiederkehrende Termine \/ monatlich" } diff --git a/resources/lang/en.json b/resources/lang/en.json index 0dcf1d05..d6901e0b 100644 --- a/resources/lang/en.json +++ b/resources/lang/en.json @@ -789,5 +789,11 @@ "Manage cities\/areas": "", "Manage venues": "", "Image deleted!": "", - "Current pictures": "" + "Current pictures": "", + "PubKey copied!": "", + "Nostr": "", + "Podcast Episodes": "", + "Language": "", + "minutes": "", + "Recurring appointment \/ monthly": "" } \ No newline at end of file diff --git a/resources/lang/es.json b/resources/lang/es.json index 1ae8088c..6cdac6ce 100644 --- a/resources/lang/es.json +++ b/resources/lang/es.json @@ -789,5 +789,11 @@ "Manage cities\/areas": "", "Manage venues": "", "Image deleted!": "", - "Current pictures": "" + "Current pictures": "", + "PubKey copied!": "", + "Nostr": "", + "Podcast Episodes": "", + "Language": "", + "minutes": "", + "Recurring appointment \/ monthly": "" } \ No newline at end of file diff --git a/resources/lang/fr.json b/resources/lang/fr.json index ebba0a6d..482807df 100644 --- a/resources/lang/fr.json +++ b/resources/lang/fr.json @@ -790,5 +790,11 @@ "Manage cities\/areas": "", "Manage venues": "", "Image deleted!": "", - "Current pictures": "" + "Current pictures": "", + "PubKey copied!": "", + "Nostr": "", + "Podcast Episodes": "", + "Language": "", + "minutes": "", + "Recurring appointment \/ monthly": "" } \ No newline at end of file diff --git a/resources/lang/hr.json b/resources/lang/hr.json index 1fe01fea..0e603db1 100644 --- a/resources/lang/hr.json +++ b/resources/lang/hr.json @@ -790,5 +790,11 @@ "Manage cities\/areas": "", "Manage venues": "", "Image deleted!": "", - "Current pictures": "" + "Current pictures": "", + "PubKey copied!": "", + "Nostr": "", + "Podcast Episodes": "", + "Language": "", + "minutes": "", + "Recurring appointment \/ monthly": "" } \ No newline at end of file diff --git a/resources/lang/it.json b/resources/lang/it.json index c8162481..3c9d0237 100644 --- a/resources/lang/it.json +++ b/resources/lang/it.json @@ -790,5 +790,11 @@ "Manage cities\/areas": "", "Manage venues": "", "Image deleted!": "", - "Current pictures": "" + "Current pictures": "", + "PubKey copied!": "", + "Nostr": "", + "Podcast Episodes": "", + "Language": "", + "minutes": "", + "Recurring appointment \/ monthly": "" } \ No newline at end of file diff --git a/resources/lang/mk.json b/resources/lang/mk.json index fafe61ee..f39d0958 100644 --- a/resources/lang/mk.json +++ b/resources/lang/mk.json @@ -790,5 +790,11 @@ "Manage cities\/areas": "", "Manage venues": "", "Image deleted!": "", - "Current pictures": "" + "Current pictures": "", + "PubKey copied!": "", + "Nostr": "", + "Podcast Episodes": "", + "Language": "", + "minutes": "", + "Recurring appointment \/ monthly": "" } \ No newline at end of file diff --git a/resources/lang/pl.json b/resources/lang/pl.json index 195ba4f7..d1c78bfc 100644 --- a/resources/lang/pl.json +++ b/resources/lang/pl.json @@ -790,5 +790,11 @@ "Manage cities\/areas": "", "Manage venues": "", "Image deleted!": "", - "Current pictures": "" + "Current pictures": "", + "PubKey copied!": "", + "Nostr": "", + "Podcast Episodes": "", + "Language": "", + "minutes": "", + "Recurring appointment \/ monthly": "" } \ No newline at end of file diff --git a/resources/lang/pt.json b/resources/lang/pt.json index 428331f2..1c449f9a 100644 --- a/resources/lang/pt.json +++ b/resources/lang/pt.json @@ -790,5 +790,11 @@ "Manage cities\/areas": "", "Manage venues": "", "Image deleted!": "", - "Current pictures": "" + "Current pictures": "", + "PubKey copied!": "", + "Nostr": "", + "Podcast Episodes": "", + "Language": "", + "minutes": "", + "Recurring appointment \/ monthly": "" } \ No newline at end of file diff --git a/resources/lang/sv.json b/resources/lang/sv.json index 7200cc1b..3746f760 100644 --- a/resources/lang/sv.json +++ b/resources/lang/sv.json @@ -752,5 +752,11 @@ "Manage cities\/areas": "", "Manage venues": "", "Image deleted!": "", - "Current pictures": "" + "Current pictures": "", + "PubKey copied!": "", + "Nostr": "", + "Podcast Episodes": "", + "Language": "", + "minutes": "", + "Recurring appointment \/ monthly": "" } \ No newline at end of file diff --git a/resources/lang/tr.json b/resources/lang/tr.json index 1c701569..5c098ad6 100644 --- a/resources/lang/tr.json +++ b/resources/lang/tr.json @@ -764,5 +764,11 @@ "Manage cities\/areas": "", "Manage venues": "", "Image deleted!": "", - "Current pictures": "" + "Current pictures": "", + "PubKey copied!": "", + "Nostr": "", + "Podcast Episodes": "", + "Language": "", + "minutes": "", + "Recurring appointment \/ monthly": "" } \ No newline at end of file diff --git a/resources/views/livewire/frontend/navigation/library.blade.php b/resources/views/livewire/frontend/navigation/library.blade.php index a452df0a..0aaf1c0a 100644 --- a/resources/views/livewire/frontend/navigation/library.blade.php +++ b/resources/views/livewire/frontend/navigation/library.blade.php @@ -33,6 +33,12 @@ {{ __('Search') }} + + + {{ __('Podcast Episodes') }} + + @auth diff --git a/resources/views/livewire/library/podcast-episodes-table.blade.php b/resources/views/livewire/library/podcast-episodes-table.blade.php new file mode 100644 index 00000000..127e2c5e --- /dev/null +++ b/resources/views/livewire/library/podcast-episodes-table.blade.php @@ -0,0 +1,130 @@ + + {{-- HEADER --}} + + + + + + + + + + + + + + + {{-- MAIN --}} + + + + + + {{ __('Podcast Episodes') }} + + {{ __('Reset filtering and search') }} + + + + + + + + + @foreach($episodes as $episode) + + + + + + + + + + {{ __('Language') }}: {{ $episode->data['feedLanguage'] }} + + + {{ $episode->data['title'] }} + {{ strip_tags($episode->data['description']) }} + + + + + + {{ $episode->podcast->title }} + + + + + + {{ $episode->podcast->title }} + + + {{ \App\Support\Carbon::parse($episode->data['datePublished'])->asDateTime() }} + · + {{ round($episode->data['duration'] / 60) }} {{ __('minutes') }} + + + + + + @endforeach + + + + @if($episodes->hasMorePages()) + {{ __('load more...') }} + @endif + + + + + + + {{-- FOOTER --}} + + + + + + + diff --git a/routes/web.php b/routes/web.php index cb450ccc..ffb38bd4 100644 --- a/routes/web.php +++ b/routes/web.php @@ -202,6 +202,9 @@ Route::middleware([]) Route::get('/library-item', \App\Http\Livewire\Library\LibraryTable::class) ->name('table.libraryItems'); + Route::get('/podcast-episodes', \App\Http\Livewire\Library\PodcastEpisodesTable::class) + ->name('table.podcastsEpisodes'); + Route::get('/content-creator', \App\Http\Livewire\Library\LibraryTable::class) ->name('table.lecturer'); });
{{ $episode->data['title'] }}
{{ strip_tags($episode->data['description']) }}