diff --git a/app/Http/Controllers/PageController.php b/app/Http/Controllers/PageController.php index fd36b3158..c11355db5 100644 --- a/app/Http/Controllers/PageController.php +++ b/app/Http/Controllers/PageController.php @@ -324,9 +324,10 @@ class PageController extends Controller $page = $this->entityRepo->getBySlug('page', $pageSlug, $bookSlug); $book = $page->book; $this->checkOwnablePermission('page-delete', $page); + $this->entityRepo->destroyPage($page); + Activity::addMessage('page_delete', $book->id, $page->name); session()->flash('success', trans('entities.pages_delete_success')); - $this->entityRepo->destroyPage($page); return redirect($book->getUrl()); } diff --git a/app/Repos/EntityRepo.php b/app/Repos/EntityRepo.php index c2899b136..95ae2ed0e 100644 --- a/app/Repos/EntityRepo.php +++ b/app/Repos/EntityRepo.php @@ -4,6 +4,7 @@ use BookStack\Book; use BookStack\Chapter; use BookStack\Entity; use BookStack\Exceptions\NotFoundException; +use BookStack\Exceptions\NotifyException; use BookStack\Page; use BookStack\PageRevision; use BookStack\Services\AttachmentService; @@ -1073,6 +1074,7 @@ class EntityRepo /** * Destroy a given page along with its dependencies. * @param Page $page + * @throws NotifyException */ public function destroyPage(Page $page) { @@ -1084,6 +1086,12 @@ class EntityRepo $this->permissionService->deleteJointPermissionsForEntity($page); $this->searchService->deleteEntityTerms($page); + // Check if set as custom homepage + $customHome = setting('app-homepage', '0:'); + if (intval($page->id) === intval(explode(':', $customHome)[0])) { + throw new NotifyException(trans('errors.page_custom_home_deletion'), $page->getUrl()); + } + // Delete Attached Files $attachmentService = app(AttachmentService::class); foreach ($page->attachments as $attachment) { diff --git a/app/Services/SearchService.php b/app/Services/SearchService.php index 3eeaf32aa..a8784ded1 100644 --- a/app/Services/SearchService.php +++ b/app/Services/SearchService.php @@ -382,7 +382,7 @@ class SearchService protected function generateTermArrayFromText($text, $scoreAdjustment = 1) { $tokenMap = []; // {TextToken => OccurrenceCount} - $splitChars = " \n\t.,"; + $splitChars = " \n\t.,!?:;()[]{}<>`'\""; $token = strtok($text, $splitChars); while ($token !== false) { diff --git a/resources/assets/sass/_grid.scss b/resources/assets/sass/_grid.scss index b9a6ea53f..0f755e9f0 100644 --- a/resources/assets/sass/_grid.scss +++ b/resources/assets/sass/_grid.scss @@ -19,6 +19,7 @@ body.flexbox { display: flex; align-items: stretch; min-height: 0; + max-width: 100%; position: relative; &.rows { flex-direction: row; diff --git a/resources/lang/en/errors.php b/resources/lang/en/errors.php index 09158caac..572bec42b 100644 --- a/resources/lang/en/errors.php +++ b/resources/lang/en/errors.php @@ -41,6 +41,7 @@ return [ // Pages 'page_draft_autosave_fail' => 'Failed to save draft. Ensure you have internet connection before saving this page', + 'page_custom_home_deletion' => 'Cannot delete a page while it is set as a homepage', // Entities 'entity_not_found' => 'Entity not found', diff --git a/resources/views/books/show.blade.php b/resources/views/books/show.blade.php index 956dbaf16..ea4a079e8 100644 --- a/resources/views/books/show.blade.php +++ b/resources/views/books/show.blade.php @@ -91,7 +91,7 @@ @section('body') -
+

{{$book->name}}

{!! nl2br(e($book->description)) !!}

diff --git a/resources/views/chapters/show.blade.php b/resources/views/chapters/show.blade.php index e5a044aa7..8f3b91435 100644 --- a/resources/views/chapters/show.blade.php +++ b/resources/views/chapters/show.blade.php @@ -1,19 +1,19 @@ @extends('sidebar-layout') @section('toolbar') -
+
@include('chapters._breadcrumbs', ['chapter' => $chapter])
- -
{{ trans('entities.export') }}
- -
+ +
{{ trans('entities.export') }}
+ +
@if(userCan('page-create', $chapter)) {{ trans('entities.pages_new') }} @endif @@ -96,13 +96,13 @@ @section('body') -
-

{{ $chapter->name }}

+
+

{{ $chapter->name }}

-

{!! nl2br(e($chapter->description)) !!}

+

{!! nl2br(e($chapter->description)) !!}

@if(count($pages) > 0) -
+

@foreach($pages as $page) @include('pages/list-item', ['page' => $page]) @@ -110,7 +110,7 @@ @endforeach
@else -
+

{{ trans('entities.chapters_empty') }}

@if(userCan('page-create', $chapter)) diff --git a/resources/views/pages/form.blade.php b/resources/views/pages/form.blade.php index c4a639898..12f2f3e97 100644 --- a/resources/views/pages/form.blade.php +++ b/resources/views/pages/form.blade.php @@ -51,7 +51,7 @@

{{--Title input--}} -
+
@include('form/text', ['name' => 'name', 'placeholder' => trans('entities.pages_title')])
@@ -63,7 +63,7 @@ {{--WYSIWYG Editor--}} @if(setting('app-editor') === 'wysiwyg')
-
@@ -74,7 +74,7 @@ {{--Markdown Editor--}} @if(setting('app-editor') === 'markdown') -
+
diff --git a/resources/views/partials/activity-item.blade.php b/resources/views/partials/activity-item.blade.php index 3f162e0bd..185e68038 100644 --- a/resources/views/partials/activity-item.blade.php +++ b/resources/views/partials/activity-item.blade.php @@ -7,7 +7,7 @@
@endif -
+
@if($activity->user) {{ $activity->user->name }} @else diff --git a/resources/views/partials/book-tree.blade.php b/resources/views/partials/book-tree.blade.php index 867d9779c..b954a4952 100644 --- a/resources/views/partials/book-tree.blade.php +++ b/resources/views/partials/book-tree.blade.php @@ -1,4 +1,4 @@ -
+

{{ trans('entities.books_navigation') }}