3 namespace BookStack\Activity\Controllers;
5 use BookStack\Activity\TagRepo;
6 use BookStack\Http\Controllers\Controller;
7 use BookStack\Util\SimpleListOptions;
8 use Illuminate\Http\Request;
10 class TagController extends Controller
12 public function __construct(
13 protected TagRepo $tagRepo
18 * Show a listing of existing tags in the system.
20 public function index(Request $request)
22 $listOptions = SimpleListOptions::fromRequest($request, 'tags')->withSortOptions([
23 'name' => trans('common.sort_name'),
24 'usages' => trans('entities.tags_usages'),
27 $nameFilter = $request->get('name', '');
28 $tags = $this->tagRepo
29 ->queryWithTotals($listOptions, $nameFilter)
31 ->appends(array_filter(array_merge($listOptions->getPaginationAppends(), [
32 'name' => $nameFilter,
35 $this->setPageTitle(trans('entities.tags'));
37 return view('tags.index', [
39 'nameFilter' => $nameFilter,
40 'listOptions' => $listOptions,
45 * Get tag name suggestions from a given search term.
47 public function getNameSuggestions(Request $request)
49 $searchTerm = $request->get('search', '');
50 $suggestions = $this->tagRepo->getNameSuggestions($searchTerm);
52 return response()->json($suggestions);
56 * Get tag value suggestions from a given search term.
58 public function getValueSuggestions(Request $request)
60 $searchTerm = $request->get('search', '');
61 $tagName = $request->get('name', '');
62 $suggestions = $this->tagRepo->getValueSuggestions($searchTerm, $tagName);
64 return response()->json($suggestions);