]> BookStack Code Mirror - bookstack/blob - app/Http/Controllers/PageController.php
Added page editing
[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         $page = $this->pageRepo->getBySlug($pageSlug);
89         return view('pages/show', ['page' => $page]);
90     }
91
92     /**
93      * Show the form for editing the specified resource.
94      *
95      * @param $bookSlug
96      * @param $pageSlug
97      * @return Response
98      */
99     public function edit($bookSlug, $pageSlug)
100     {
101         $page = $this->pageRepo->getBySlug($pageSlug);
102         return view('pages/edit', ['page' => $page]);
103     }
104
105     /**
106      * Update the specified resource in storage.
107      *
108      * @param  Request $request
109      * @param $bookSlug
110      * @param $pageSlug
111      * @return Response
112      */
113     public function update(Request $request, $bookSlug, $pageSlug)
114     {
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) {
120             $slug .= '1';
121         }
122         $page->text = strip_tags($page->html);
123         $page->save();
124         return redirect($page->getUrl());
125     }
126
127     /**
128      * Remove the specified resource from storage.
129      *
130      * @param  int  $id
131      * @return Response
132      */
133     public function destroy($id)
134     {
135         //
136     }
137 }