X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/1b46c19849820d4d500f0d9e7424228ab5f0712c..refs/pull/234/head:/app/Http/Controllers/ChapterController.php diff --git a/app/Http/Controllers/ChapterController.php b/app/Http/Controllers/ChapterController.php index 69e9488b9..849835185 100644 --- a/app/Http/Controllers/ChapterController.php +++ b/app/Http/Controllers/ChapterController.php @@ -3,9 +3,9 @@ use Activity; use BookStack\Repos\UserRepo; use Illuminate\Http\Request; -use BookStack\Http\Requests; use BookStack\Repos\BookRepo; use BookStack\Repos\ChapterRepo; +use Illuminate\Http\Response; use Views; class ChapterController extends Controller @@ -38,7 +38,7 @@ class ChapterController extends Controller { $book = $this->bookRepo->getBySlug($bookSlug); $this->checkOwnablePermission('chapter-create', $book); - $this->setPageTitle('Create New Chapter'); + $this->setPageTitle(trans('entities.chapters_create')); return view('chapters/create', ['book' => $book, 'current' => $book]); } @@ -59,7 +59,7 @@ class ChapterController extends Controller $input = $request->all(); $input['priority'] = $this->bookRepo->getNewPriority($book); - $chapter = $this->chapterRepo->createFromInput($request->all(), $book); + $chapter = $this->chapterRepo->createFromInput($input, $book); Activity::add($chapter, 'chapter_create', $book->id); return redirect($chapter->getUrl()); } @@ -99,7 +99,7 @@ class ChapterController extends Controller $book = $this->bookRepo->getBySlug($bookSlug); $chapter = $this->chapterRepo->getBySlug($chapterSlug, $book->id); $this->checkOwnablePermission('chapter-update', $chapter); - $this->setPageTitle('Edit Chapter' . $chapter->getShortName()); + $this->setPageTitle(trans('entities.chapters_edit_named', ['chapterName' => $chapter->getShortName()])); return view('chapters/edit', ['book' => $book, 'chapter' => $chapter, 'current' => $chapter]); } @@ -115,9 +115,11 @@ class ChapterController extends Controller $book = $this->bookRepo->getBySlug($bookSlug); $chapter = $this->chapterRepo->getBySlug($chapterSlug, $book->id); $this->checkOwnablePermission('chapter-update', $chapter); + if ($chapter->name !== $request->get('name')) { + $chapter->slug = $this->chapterRepo->findSuitableSlug($request->get('name'), $book->id, $chapter->id); + } $chapter->fill($request->all()); - $chapter->slug = $this->chapterRepo->findSuitableSlug($chapter->name, $book->id, $chapter->id); - $chapter->updated_by = auth()->user()->id; + $chapter->updated_by = user()->id; $chapter->save(); Activity::add($chapter, 'chapter_update', $book->id); return redirect($chapter->getUrl()); @@ -134,7 +136,7 @@ class ChapterController extends Controller $book = $this->bookRepo->getBySlug($bookSlug); $chapter = $this->chapterRepo->getBySlug($chapterSlug, $book->id); $this->checkOwnablePermission('chapter-delete', $chapter); - $this->setPageTitle('Delete Chapter' . $chapter->getShortName()); + $this->setPageTitle(trans('entities.chapters_delete_named', ['chapterName' => $chapter->getShortName()])); return view('chapters/delete', ['book' => $book, 'chapter' => $chapter, 'current' => $chapter]); } @@ -154,6 +156,64 @@ class ChapterController extends Controller return redirect($book->getUrl()); } + /** + * Show the page for moving a chapter. + * @param $bookSlug + * @param $chapterSlug + * @return mixed + * @throws \BookStack\Exceptions\NotFoundException + */ + public function showMove($bookSlug, $chapterSlug) { + $book = $this->bookRepo->getBySlug($bookSlug); + $chapter = $this->chapterRepo->getBySlug($chapterSlug, $book->id); + $this->setPageTitle(trans('entities.chapters_move_named', ['chapterName' => $chapter->getShortName()])); + $this->checkOwnablePermission('chapter-update', $chapter); + return view('chapters/move', [ + 'chapter' => $chapter, + 'book' => $book + ]); + } + + /** + * Perform the move action for a chapter. + * @param $bookSlug + * @param $chapterSlug + * @param Request $request + * @return mixed + * @throws \BookStack\Exceptions\NotFoundException + */ + public function move($bookSlug, $chapterSlug, Request $request) { + $book = $this->bookRepo->getBySlug($bookSlug); + $chapter = $this->chapterRepo->getBySlug($chapterSlug, $book->id); + $this->checkOwnablePermission('chapter-update', $chapter); + + $entitySelection = $request->get('entity_selection', null); + if ($entitySelection === null || $entitySelection === '') { + return redirect($chapter->getUrl()); + } + + $stringExploded = explode(':', $entitySelection); + $entityType = $stringExploded[0]; + $entityId = intval($stringExploded[1]); + + $parent = false; + + if ($entityType == 'book') { + $parent = $this->bookRepo->getById($entityId); + } + + if ($parent === false || $parent === null) { + session()->flash('error', trans('errors.selected_book_not_found')); + return redirect()->back(); + } + + $this->chapterRepo->changeBook($parent->id, $chapter, true); + Activity::add($chapter, 'chapter_move', $chapter->book->id); + session()->flash('success', trans('entities.chapter_move_success', ['bookName' => $parent->name])); + + return redirect($chapter->getUrl()); + } + /** * Show the Restrictions view. * @param $bookSlug @@ -185,7 +245,7 @@ class ChapterController extends Controller $chapter = $this->chapterRepo->getBySlug($chapterSlug, $book->id); $this->checkOwnablePermission('restrictions-manage', $chapter); $this->chapterRepo->updateEntityPermissionsFromRequest($request, $chapter); - session()->flash('success', 'Chapter Restrictions Updated'); + session()->flash('success', trans('entities.chapters_permissions_success')); return redirect($chapter->getUrl()); } }