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 public function __construct(
12 protected TagRepo $tagRepo
17 * Show a listing of existing tags in the system.
19 public function index(Request $request)
21 $listOptions = SimpleListOptions::fromRequest($request, 'tags')->withSortOptions([
22 'name' => trans('common.sort_name'),
23 'usages' => trans('entities.tags_usages'),
26 $nameFilter = $request->get('name', '');
27 $tags = $this->tagRepo
28 ->queryWithTotals($listOptions, $nameFilter)
30 ->appends(array_filter(array_merge($listOptions->getPaginationAppends(), [
31 'name' => $nameFilter,
34 $this->setPageTitle(trans('entities.tags'));
36 return view('tags.index', [
38 'nameFilter' => $nameFilter,
39 'listOptions' => $listOptions,
44 * Get tag name suggestions from a given search term.
46 public function getNameSuggestions(Request $request)
48 $searchTerm = $request->get('search', '');
49 $suggestions = $this->tagRepo->getNameSuggestions($searchTerm);
51 return response()->json($suggestions);
55 * Get tag value suggestions from a given search term.
57 public function getValueSuggestions(Request $request)
59 $searchTerm = $request->get('search', '');
60 $tagName = $request->get('name', '');
61 $suggestions = $this->tagRepo->getValueSuggestions($searchTerm, $tagName);
63 return response()->json($suggestions);