3 namespace BookStack\Entities\Controllers;
5 use BookStack\Entities\Queries\PageQueries;
6 use BookStack\Entities\Repos\PageRepo;
7 use BookStack\Exceptions\NotFoundException;
8 use BookStack\Http\Controller;
9 use Illuminate\Http\Request;
11 class PageTemplateController extends Controller
13 public function __construct(
14 protected PageRepo $pageRepo,
15 protected PageQueries $pageQueries,
20 * Fetch a list of templates from the system.
22 public function list(Request $request)
24 $page = $request->get('page', 1);
25 $search = $request->get('search', '');
28 $query = $this->pageQueries->visibleTemplates()
29 ->orderBy('name', 'asc')
30 ->skip(($page - 1) * $count)
34 $query->where('name', 'like', '%' . $search . '%');
37 $templates = $query->paginate($count, ['*'], 'page', $page);
38 $templates->withPath('/templates');
41 $templates->appends(['search' => $search]);
44 return view('pages.parts.template-manager-list', [
45 'templates' => $templates,
50 * Get the content of a template.
52 * @throws NotFoundException
54 public function get(int $templateId)
56 $page = $this->pageQueries->findVisibleByIdOrFail($templateId);
58 if (!$page->template) {
59 throw new NotFoundException();
62 return response()->json([
63 'html' => $page->html,
64 'markdown' => $page->markdown,