X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/222c665018cd7fc231d2970307e3a7423e4a377f..refs/pull/5293/head:/app/Entities/Repos/PageRepo.php diff --git a/app/Entities/Repos/PageRepo.php b/app/Entities/Repos/PageRepo.php index 74aed072a..1bc15392c 100644 --- a/app/Entities/Repos/PageRepo.php +++ b/app/Entities/Repos/PageRepo.php @@ -11,7 +11,7 @@ use BookStack\Entities\Models\PageRevision; use BookStack\Entities\Queries\EntityQueries; use BookStack\Entities\Tools\BookContents; use BookStack\Entities\Tools\PageContent; -use BookStack\Entities\Tools\PageEditorData; +use BookStack\Entities\Tools\PageEditorType; use BookStack\Entities\Tools\TrashCan; use BookStack\Exceptions\MoveOperationException; use BookStack\Exceptions\PermissionsException; @@ -27,7 +27,8 @@ class PageRepo protected RevisionRepo $revisionRepo, protected EntityQueries $entityQueries, protected ReferenceStore $referenceStore, - protected ReferenceUpdater $referenceUpdater + protected ReferenceUpdater $referenceUpdater, + protected TrashCan $trashCan, ) { } @@ -42,6 +43,7 @@ class PageRepo 'owned_by' => user()->id, 'updated_by' => user()->id, 'draft' => true, + 'editor' => PageEditorType::getSystemDefault()->value, ]); if ($parent instanceof Chapter) { @@ -76,7 +78,8 @@ class PageRepo $this->updateTemplateStatusAndContentFromInput($draft, $input); $this->baseRepo->update($draft, $input); - $this->revisionRepo->storeNewForPage($draft, trans('entities.pages_initial_revision')); + $summary = trim($input['summary'] ?? '') ?: trans('entities.pages_initial_revision'); + $this->revisionRepo->storeNewForPage($draft, $summary); $draft->refresh(); Activity::add(ActivityType::PAGE_CREATE, $draft); @@ -125,7 +128,9 @@ class PageRepo } $pageContent = new PageContent($page); - $currentEditor = $page->editor ?: PageEditorData::getSystemDefaultEditor(); + $defaultEditor = PageEditorType::getSystemDefault(); + $currentEditor = PageEditorType::forPage($page) ?: $defaultEditor; + $inputEditor = PageEditorType::fromRequestValue($input['editor'] ?? '') ?? $currentEditor; $newEditor = $currentEditor; $haveInput = isset($input['markdown']) || isset($input['html']); @@ -134,15 +139,17 @@ class PageRepo if ($haveInput && $inputEmpty) { $pageContent->setNewHTML('', user()); } elseif (!empty($input['markdown']) && is_string($input['markdown'])) { - $newEditor = 'markdown'; + $newEditor = PageEditorType::Markdown; $pageContent->setNewMarkdown($input['markdown'], user()); } elseif (isset($input['html'])) { - $newEditor = 'wysiwyg'; + $newEditor = ($inputEditor->isHtmlBased() ? $inputEditor : null) ?? ($defaultEditor->isHtmlBased() ? $defaultEditor : null) ?? PageEditorType::WysiwygTinymce; $pageContent->setNewHTML($input['html'], user()); } - if ($newEditor !== $currentEditor && userCan('editor-change')) { - $page->editor = $newEditor; + if (($newEditor !== $currentEditor || empty($page->editor)) && userCan('editor-change')) { + $page->editor = $newEditor->value; + } elseif (empty($page->editor)) { + $page->editor = $defaultEditor->value; } } @@ -184,10 +191,9 @@ class PageRepo */ public function destroy(Page $page) { - $trashCan = new TrashCan(); - $trashCan->softDestroyPage($page); + $this->trashCan->softDestroyPage($page); Activity::add(ActivityType::PAGE_DELETE, $page); - $trashCan->autoClearOld(); + $this->trashCan->autoClearOld(); } /**