X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/ee24635e06a8c01d751f80caba47c57f76e8989d..refs/pull/4252/head:/app/Http/Controllers/SearchController.php diff --git a/app/Http/Controllers/SearchController.php b/app/Http/Controllers/SearchController.php index 4a002298c..8df5cfafb 100644 --- a/app/Http/Controllers/SearchController.php +++ b/app/Http/Controllers/SearchController.php @@ -3,15 +3,15 @@ namespace BookStack\Http\Controllers; use BookStack\Entities\Queries\Popular; -use BookStack\Entities\Tools\SearchOptions; -use BookStack\Entities\Tools\SearchResultsFormatter; -use BookStack\Entities\Tools\SearchRunner; use BookStack\Entities\Tools\SiblingFetcher; +use BookStack\Search\SearchOptions; +use BookStack\Search\SearchResultsFormatter; +use BookStack\Search\SearchRunner; use Illuminate\Http\Request; class SearchController extends Controller { - protected $searchRunner; + protected SearchRunner $searchRunner; public function __construct(SearchRunner $searchRunner) { @@ -69,7 +69,7 @@ class SearchController extends Controller * Search for a list of entities and return a partial HTML response of matching entities. * Returns the most popular entities if no search is provided. */ - public function searchEntitiesAjax(Request $request) + public function searchForSelector(Request $request) { $entityTypes = $request->filled('types') ? explode(',', $request->get('types')) : ['page', 'chapter', 'book']; $searchTerm = $request->get('term', false); @@ -83,7 +83,25 @@ class SearchController extends Controller $entities = (new Popular())->run(20, 0, $entityTypes); } - return view('search.parts.entity-ajax-list', ['entities' => $entities, 'permission' => $permission]); + return view('search.parts.entity-selector-list', ['entities' => $entities, 'permission' => $permission]); + } + + /** + * Search for a list of entities and return a partial HTML response of matching entities + * to be used as a result preview suggestion list for global system searches. + */ + public function searchSuggestions(Request $request) + { + $searchTerm = $request->get('term', ''); + $entities = $this->searchRunner->searchEntities(SearchOptions::fromString($searchTerm), 'all', 1, 5)['results']; + + foreach ($entities as $entity) { + $entity->setAttribute('preview_content', ''); + } + + return view('search.parts.entity-suggestion-list', [ + 'entities' => $entities->slice(0, 5) + ]); } /**