New Map Menu (#15969)

* Map Menu
New top level Map menu.
Ability to group custom maps.
Ajax Select controller improvements

* Fix style
This commit is contained in:
Tony Murray
2024-04-25 15:32:33 -05:00
committed by GitHub
parent 51fa1887f9
commit f78edf4d11
15 changed files with 225 additions and 92 deletions

View File

@@ -32,7 +32,6 @@ use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Query\Builder;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Str;
abstract class SelectController extends PaginatedAjaxController
{
@@ -78,8 +77,15 @@ abstract class SelectController extends PaginatedAjaxController
*/
protected function formatResponse($paginator)
{
$results = collect($paginator->items())->map([$this, 'formatItem']);
// prepend the initial item, unless filtered out
if ($this->canPrependFirstItem(request())) {
$results->prepend($this->prependItem());
}
return response()->json([
'results' => collect($paginator->items())->map([$this, 'formatItem']),
'results' => $results,
'pagination' => ['more' => $paginator->hasMorePages()],
]);
}
@@ -111,11 +117,28 @@ abstract class SelectController extends PaginatedAjaxController
];
}
protected function includeGeneral(): bool
protected function prependItem(): ?array
{
if (request()->has('id') && request('id') !== 0) {
return null;
}
protected function canPrependFirstItem(Request $request): bool
{
$item = $this->prependItem();
if (empty($item)) {
return false;
} elseif (request()->has('term') && ! Str::contains('general', strtolower(request('term')))) {
}
if ($request->page > 1) {
return false;
}
if ($request->has('id') && $request->id != $item['id']) { // purposely loose comparison
return false;
}
if ($request->has('term') && ! str_contains(strtolower($item['text']), strtolower($request->term))) {
return false;
}