]> BookStack Code Mirror - bookstack/blob - app/Http/Controllers/PageController.php
Vastly improved design
[bookstack] / app / Http / Controllers / PageController.php
1 <?php
2
3 namespace Oxbow\Http\Controllers;
4
5 use Illuminate\Http\Request;
6
7 use Illuminate\Support\Str;
8 use Oxbow\Http\Requests;
9 use Oxbow\Repos\BookRepo;
10 use Oxbow\Repos\PageRepo;
11
12 class PageController extends Controller
13 {
14
15     protected $pageRepo;
16     protected $bookRepo;
17
18     /**
19      * PageController constructor.
20      * @param $pageRepo
21      * @param $bookRepo
22      */
23     public function __construct(PageRepo $pageRepo, BookRepo $bookRepo)
24     {
25         $this->pageRepo = $pageRepo;
26         $this->bookRepo = $bookRepo;
27     }
28
29
30     /**
31      * Display a listing of the resource.
32      *
33      * @return Response
34      */
35     public function index()
36     {
37         //
38     }
39
40     /**
41      * Show the form for creating a new resource.
42      *
43      * @param $bookSlug
44      * @return Response
45      */
46     public function create($bookSlug)
47     {
48         $book = $this->bookRepo->getBySlug($bookSlug);
49         return view('pages/create', ['book' => $book]);
50     }
51
52     /**
53      * Store a newly created resource in storage.
54      *
55      * @param  Request $request
56      * @param $bookSlug
57      * @return Response
58      */
59     public function store(Request $request, $bookSlug)
60     {
61         $this->validate($request, [
62             'name' => 'required|string|max:255',
63             'html' => 'required|string',
64             'priority' => 'integer'
65         ]);
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) {
70             $slug .= '1';
71         }
72         $page->slug =$slug;
73         $page->book_id = $book->id;
74         $page->text = strip_tags($page->html);
75         $page->save();
76         return redirect($page->getUrl());
77     }
78
79     /**
80      * Display the specified resource.
81      *
82      * @param $bookSlug
83      * @param $pageSlug
84      * @return Response
85      */
86     public function show($bookSlug, $pageSlug)
87     {
88         $book = $this->bookRepo->getBySlug($bookSlug);
89         $page = $this->pageRepo->getBySlug($pageSlug, $book->id);
90         return view('pages/show', ['page' => $page]);
91     }
92
93     /**
94      * Show the form for editing the specified resource.
95      *
96      * @param $bookSlug
97      * @param $pageSlug
98      * @return Response
99      */
100     public function edit($bookSlug, $pageSlug)
101     {
102         $book = $this->bookRepo->getBySlug($bookSlug);
103         $page = $this->pageRepo->getBySlug($pageSlug, $book->id);
104         return view('pages/edit', ['page' => $page]);
105     }
106
107     /**
108      * Update the specified resource in storage.
109      *
110      * @param  Request $request
111      * @param $bookSlug
112      * @param $pageSlug
113      * @return Response
114      */
115     public function update(Request $request, $bookSlug, $pageSlug)
116     {
117         $book = $this->bookRepo->getBySlug($bookSlug);
118         $page = $this->pageRepo->getBySlug($pageSlug, $book->id);
119         $page->fill($request->all());
120         $slug = Str::slug($page->name);
121         while($this->pageRepo->countBySlug($slug, $book->id) > 0 && $slug != $pageSlug) {
122             $slug .= '1';
123         }
124         $page->text = strip_tags($page->html);
125         $page->save();
126         return redirect($page->getUrl());
127     }
128
129     /**
130      * Remove the specified resource from storage.
131      *
132      * @param  int  $id
133      * @return Response
134      */
135     public function destroy($id)
136     {
137         //
138     }
139 }