]> BookStack Code Mirror - bookstack/blob - app/Http/Controllers/TagController.php
Added control-upon-access of the default favicon.ico file
[bookstack] / app / Http / Controllers / TagController.php
1 <?php
2
3 namespace BookStack\Http\Controllers;
4
5 use BookStack\Actions\TagRepo;
6 use BookStack\Util\SimpleListOptions;
7 use Illuminate\Http\Request;
8
9 class TagController extends Controller
10 {
11     protected TagRepo $tagRepo;
12
13     public function __construct(TagRepo $tagRepo)
14     {
15         $this->tagRepo = $tagRepo;
16     }
17
18     /**
19      * Show a listing of existing tags in the system.
20      */
21     public function index(Request $request)
22     {
23         $listOptions = SimpleListOptions::fromRequest($request, 'tags')->withSortOptions([
24             'name' => trans('common.sort_name'),
25             'usages' => trans('entities.tags_usages'),
26         ]);
27
28         $nameFilter = $request->get('name', '');
29         $tags = $this->tagRepo
30             ->queryWithTotals($listOptions, $nameFilter)
31             ->paginate(50)
32             ->appends(array_filter(array_merge($listOptions->getPaginationAppends(), [
33                 'name'   => $nameFilter,
34             ])));
35
36         $this->setPageTitle(trans('entities.tags'));
37
38         return view('tags.index', [
39             'tags'        => $tags,
40             'nameFilter'  => $nameFilter,
41             'listOptions' => $listOptions,
42         ]);
43     }
44
45     /**
46      * Get tag name suggestions from a given search term.
47      */
48     public function getNameSuggestions(Request $request)
49     {
50         $searchTerm = $request->get('search', '');
51         $suggestions = $this->tagRepo->getNameSuggestions($searchTerm);
52
53         return response()->json($suggestions);
54     }
55
56     /**
57      * Get tag value suggestions from a given search term.
58      */
59     public function getValueSuggestions(Request $request)
60     {
61         $searchTerm = $request->get('search', '');
62         $tagName = $request->get('name', '');
63         $suggestions = $this->tagRepo->getValueSuggestions($searchTerm, $tagName);
64
65         return response()->json($suggestions);
66     }
67 }