FEATURE: add search form with results
This commit is contained in:
@@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Admin;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Http\Requests;
|
||||||
|
use Illuminate\Support\Facades\App;
|
||||||
|
use Illuminate\Support\Facades\Input;
|
||||||
|
|
||||||
|
class Search extends Controller
|
||||||
|
{
|
||||||
|
public function getSearch()
|
||||||
|
{
|
||||||
|
|
||||||
|
$results = [];
|
||||||
|
$term = Input::get('search');
|
||||||
|
|
||||||
|
if (!is_null($term)) {
|
||||||
|
$results = $this->performSearch($term);
|
||||||
|
}
|
||||||
|
|
||||||
|
return view('admin.search.page', ['search' => $term, 'results' => $results]);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function performSearch($term)
|
||||||
|
{
|
||||||
|
$engines = App::make('registerSearchEngine')
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$resultsParts = [];
|
||||||
|
foreach ($engines as $engine) {
|
||||||
|
list ($search, $presenter) = $engine;
|
||||||
|
|
||||||
|
$results = $search->search($term);
|
||||||
|
|
||||||
|
$resultsParts[$search->getId()] = [
|
||||||
|
'name' => $search->getName(),
|
||||||
|
'content' => $presenter->render($results),
|
||||||
|
'count' => count($results)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $resultsParts;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -222,6 +222,9 @@ Route::group([
|
|||||||
Route::post('settings', 'Settings@saveSettings')
|
Route::post('settings', 'Settings@saveSettings')
|
||||||
->name('settings.save');
|
->name('settings.save');
|
||||||
|
|
||||||
|
Route::get('search', 'Search@getSearch')->name('search');
|
||||||
|
|
||||||
|
|
||||||
// custom fields
|
// custom fields
|
||||||
// ------------------------------
|
// ------------------------------
|
||||||
|
|
||||||
|
|||||||
Vendored
+4
@@ -26,6 +26,10 @@ code {
|
|||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.top-bar input {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
.login-form {
|
.login-form {
|
||||||
margin-top: 4em;
|
margin-top: 4em;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<form action="{{route('search')}}" method="get">
|
||||||
|
<div class="input-group">
|
||||||
|
<input type="text" class="input-group-field" value="@if(isset($search)) {{old('search', $search)}} @else {{old('search')}} @endif" placeholder="@lang('search.term')" name="search" />
|
||||||
|
|
||||||
|
<div class="input-group-button">
|
||||||
|
<button class="button success"><i class="fa fa-search"></i></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
@include('admin.search.form')
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
@extends('admin.layout')
|
||||||
|
|
||||||
|
@section('pageName', @trans('search.pageTitle'))
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<h2>@lang('search.pageTitle')</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@if ($search)
|
||||||
|
<div class="row">
|
||||||
|
<div class="column large-8">
|
||||||
|
<h3>@lang('search.results')</h3>
|
||||||
|
@include('admin.search.results')
|
||||||
|
</div>
|
||||||
|
<div class="column large-4">
|
||||||
|
<h3>@lang('search.term')</h3>
|
||||||
|
@include('admin.search.form')
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@else
|
||||||
|
<div class="row">
|
||||||
|
@include('admin.search.form')
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
|
||||||
|
@stop
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
@foreach($results as $id => $result)
|
||||||
|
<div class="search-result" id="{{$id}}">
|
||||||
|
<h4>{{$result['name']}} ({{$result['count']}})</h4>
|
||||||
|
{!! $result['content'] !!}
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<div class="content search-result">
|
||||||
|
<h3>{{$page->title}}</h3>
|
||||||
|
</div>
|
||||||
Reference in New Issue
Block a user