This commit is contained in:
Benjamin Takats
2023-01-21 18:52:25 +01:00
parent 0b98651728
commit d61b24dc32
2 changed files with 29 additions and 17 deletions

View File

@@ -15,6 +15,7 @@ class LibraryTable extends Component
public Country $country;
public array $filters = [];
public Collection $libraryItems;
public bool $isLecturerPage = false;
public string $search = '';
@@ -23,19 +24,22 @@ class LibraryTable extends Component
protected $queryString = [
'currentTab' => ['except' => '*'],
'filters' => ['except' => ''],
'search' => ['except' => ''],
'search' => ['except' => ''],
];
public function mount()
{
if (str(request()
->route()
->getName())->contains(['.lecturer'])) {
$this->isLecturerPage = true;
}
$this->loadLibraryItems($this->search);
}
public function loadLibraryItems($term = null)
{
$shouldBePublic = request()
->route()
->getName() !== 'library.table.lecturer';
$shouldBePublic = !$this->isLecturerPage;
if (!$shouldBePublic && !auth()->user()->is_lecturer) {
abort(403);
}
@@ -61,8 +65,9 @@ class LibraryTable extends Component
->when($term, fn($query) => $query
->where('name', 'ilike', '%'.$term.'%')
->orWhere(fn($query) => $query
->when(count($searchTags) > 0, fn($query) => $query->whereHas('tags',
fn($query) => $query->whereIn('tags.id', $searchTags)))
->when(count($searchTags) > 0 && count($this->filters) < 1,
fn($query) => $query->whereHas('tags',
fn($query) => $query->whereIn('tags.id', $searchTags)))
)
)
->when($this->currentTab !== '*', fn($query) => $query
@@ -88,11 +93,18 @@ class LibraryTable extends Component
$this->loadLibraryItems($value);
}
public function resetFiltering($isLecturerPage = false)
{
if ($isLecturerPage) {
return to_route('library.table.lecturer', ['country' => $this->country, 'currentTab' => '*']);
} else {
return to_route('library.table.libraryItems', ['country' => $this->country, 'currentTab' => '*']);
}
}
public function render()
{
$shouldBePublic = request()
->route()
->getName() !== 'library.table.lecturer';
$shouldBePublic = !$this->isLecturerPage;
$libraries = \App\Models\Library::query()
->whereNull('parent_id')
->where('is_public', $shouldBePublic)

View File

@@ -17,6 +17,8 @@
@else
<h3 class="text-2xl font-medium leading-6 text-gray-200">{{ __('Libraries') }}</h3>
@endif
<x-button wire:click="resetFiltering({{ $isLecturerPage }})"
xs>{{ __('Reset filtering and search') }}</x-button>
</div>
<div class="mt-4">
<!-- Dropdown menu on small screens -->
@@ -37,14 +39,12 @@
@php
$currentLibraryClass = $currentTab === $library['name'] ? 'border-amber-500 text-amber-600' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300';
@endphp
@if(!request()->isXmlHttpRequest())
@if(str(request()->route()->getName())->contains(['.lecturer']))
<a href="{{ route('library.table.lecturer', ['country' => $country, 'currentTab' => $library['name']]) }}"
class="{{ $currentLibraryClass }} whitespace-nowrap pb-4 px-1 border-b-2 font-medium text-sm">{{ $library['name'] }}</a>
@else
<a href="{{ route('library.table.libraryItems', ['country' => $country, 'currentTab' => $library['name']]) }}"
class="{{ $currentLibraryClass }} whitespace-nowrap pb-4 px-1 border-b-2 font-medium text-sm">{{ $library['name'] }}</a>
@endif
@if($isLecturerPage)
<a href="{{ route('library.table.lecturer', ['country' => $country, 'currentTab' => $library['name']]) }}"
class="{{ $currentLibraryClass }} whitespace-nowrap pb-4 px-1 border-b-2 font-medium text-sm">{{ $library['name'] }}</a>
@else
<a href="{{ route('library.table.libraryItems', ['country' => $country, 'currentTab' => $library['name']]) }}"
class="{{ $currentLibraryClass }} whitespace-nowrap pb-4 px-1 border-b-2 font-medium text-sm">{{ $library['name'] }}</a>
@endif
@endforeach
</nav>