3 namespace Oxbow\Http\Controllers;
5 use Illuminate\Http\Request;
7 use Illuminate\Support\Str;
8 use Oxbow\Http\Requests;
9 use Oxbow\Repos\BookRepo;
10 use Oxbow\Repos\PageRepo;
12 class PageController extends Controller
19 * PageController constructor.
23 public function __construct(PageRepo $pageRepo, BookRepo $bookRepo)
25 $this->pageRepo = $pageRepo;
26 $this->bookRepo = $bookRepo;
31 * Display a listing of the resource.
35 public function index()
41 * Show the form for creating a new resource.
46 public function create($bookSlug)
48 $book = $this->bookRepo->getBySlug($bookSlug);
49 return view('pages/create', ['book' => $book]);
53 * Store a newly created resource in storage.
55 * @param Request $request
59 public function store(Request $request, $bookSlug)
61 $this->validate($request, [
62 'name' => 'required|string|max:255',
63 'html' => 'required|string',
64 'priority' => 'integer'
66 $book = $this->bookRepo->getBySlug($bookSlug);
67 $page = $this->pageRepo->newFromInput($request->all());
68 $slug = Str::slug($page->name);
69 while($this->pageRepo->countBySlug($slug, $book->id) > 0) {
73 $page->book_id = $book->id;
74 $page->text = strip_tags($page->html);
76 return redirect($page->getUrl());
80 * Display the specified resource.
86 public function show($bookSlug, $pageSlug)
88 $page = $this->pageRepo->getBySlug($pageSlug);
89 return view('pages/show', ['page' => $page]);
93 * Show the form for editing the specified resource.
99 public function edit($bookSlug, $pageSlug)
101 $page = $this->pageRepo->getBySlug($pageSlug);
102 return view('pages/edit', ['page' => $page]);
106 * Update the specified resource in storage.
108 * @param Request $request
113 public function update(Request $request, $bookSlug, $pageSlug)
115 $page = $this->pageRepo->getBySlug($pageSlug);
116 $book = $this->bookRepo->getBySlug($bookSlug);
117 $page->fill($request->all());
118 $slug = Str::slug($page->name);
119 while($this->pageRepo->countBySlug($slug, $book->id) > 0 && $slug != $pageSlug) {
122 $page->text = strip_tags($page->html);
124 return redirect($page->getUrl());
128 * Remove the specified resource from storage.
133 public function destroy($id)