3 namespace BookStack\Http\Controllers;
5 use BookStack\Actions\TagRepo;
6 use BookStack\Util\SimpleListOptions;
7 use Illuminate\Http\Request;
9 class TagController extends Controller
11 protected TagRepo $tagRepo;
13 public function __construct(TagRepo $tagRepo)
15 $this->tagRepo = $tagRepo;
19 * Show a listing of existing tags in the system.
21 public function index(Request $request)
23 $listOptions = SimpleListOptions::fromRequest($request, 'tags')->withSortOptions([
24 'name' => trans('common.sort_name'),
25 'usages' => trans('entities.tags_usages'),
28 $nameFilter = $request->get('name', '');
29 $tags = $this->tagRepo
30 ->queryWithTotals($listOptions, $nameFilter)
32 ->appends(array_filter([
33 ...$listOptions->getPaginationAppends(),
34 'name' => $nameFilter,
37 $this->setPageTitle(trans('entities.tags'));
39 return view('tags.index', [
41 'nameFilter' => $nameFilter,
42 'listOptions' => $listOptions,
47 * Get tag name suggestions from a given search term.
49 public function getNameSuggestions(Request $request)
51 $searchTerm = $request->get('search', '');
52 $suggestions = $this->tagRepo->getNameSuggestions($searchTerm);
54 return response()->json($suggestions);
58 * Get tag value suggestions from a given search term.
60 public function getValueSuggestions(Request $request)
62 $searchTerm = $request->get('search', '');
63 $tagName = $request->get('name', '');
64 $suggestions = $this->tagRepo->getValueSuggestions($searchTerm, $tagName);
66 return response()->json($suggestions);