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(array_merge($listOptions->getPaginationAppends(), [
33 'name' => $nameFilter,
36 $this->setPageTitle(trans('entities.tags'));
38 return view('tags.index', [
40 'nameFilter' => $nameFilter,
41 'listOptions' => $listOptions,
46 * Get tag name suggestions from a given search term.
48 public function getNameSuggestions(Request $request)
50 $searchTerm = $request->get('search', '');
51 $suggestions = $this->tagRepo->getNameSuggestions($searchTerm);
53 return response()->json($suggestions);
57 * Get tag value suggestions from a given search term.
59 public function getValueSuggestions(Request $request)
61 $searchTerm = $request->get('search', '');
62 $tagName = $request->get('name', '');
63 $suggestions = $this->tagRepo->getValueSuggestions($searchTerm, $tagName);
65 return response()->json($suggestions);