markdown = new CommonMarkConverter([ 'html_input' => 'strip', 'allow_unsafe_links' => false, ]); } public function create() { return Inertia::render('Wiki/PageCreate', [ 'spaces' => WikiSpace::all(), ]); } public function store(Request $request) { $validated = $request->validate([ 'space_id' => 'required|exists:wiki_spaces,id', 'title' => 'required|string|max:255', 'content' => 'required|string', 'parent_id' => 'nullable|exists:wiki_pages,id', 'tags' => 'nullable|array', ]); $slug = \Str::slug($validated['title']); $page = WikiPage::create([ ...$validated, 'slug' => $slug, 'content_html' => $this->markdown->convert($validated['content'])->getContent(), 'created_by' => auth()->id(), 'updated_by' => auth()->id(), ]); return redirect()->route('wiki.pages.show', $page)->with('success', 'Page created.'); } public function show(WikiPage $page) { return Inertia::render('Wiki/PageShow', [ 'page' => $page->load('space', 'createdBy', 'updatedBy'), 'children' => $page->children()->get(), ]); } public function edit(WikiPage $page) { return Inertia::render('Wiki/PageEdit', [ 'page' => $page, 'spaces' => WikiSpace::all(), ]); } public function update(Request $request, WikiPage $page) { $validated = $request->validate([ 'title' => 'required|string|max:255', 'content' => 'required|string', ]); // Save revision $page->revisions()->create([ 'content' => $page->content, 'created_by' => auth()->id(), ]); $page->update([ ...$validated, 'content_html' => $this->markdown->convert($validated['content'])->getContent(), 'updated_by' => auth()->id(), ]); return redirect()->route('wiki.pages.show', $page)->with('success', 'Page updated.'); } public function destroy(WikiPage $page) { $page->delete(); return redirect()->route('wiki.index')->with('success', 'Page deleted.'); } }