mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-08-28 21:22:30 +00:00
![Dan Brown](/assets/img/avatar_default.png)
Extracted page editor view data gathering to its own class for alignment. Updated the data used in views as part of the process to use view-specific variables instead of custom attributes added to models. Also moved tinymce library loading so it's not loaded when not using the wysiwyg editor.
67 lines
1.8 KiB
PHP
67 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace BookStack\Entities\Tools;
|
|
|
|
use BookStack\Entities\Models\Page;
|
|
use BookStack\Entities\Repos\PageRepo;
|
|
|
|
class PageEditorData
|
|
{
|
|
protected Page $page;
|
|
protected PageRepo $pageRepo;
|
|
|
|
protected array $viewData;
|
|
protected array $warnings;
|
|
|
|
public function __construct(Page $page, PageRepo $pageRepo)
|
|
{
|
|
$this->page = $page;
|
|
$this->pageRepo = $pageRepo;
|
|
$this->viewData = $this->build();
|
|
}
|
|
|
|
public function getViewData(): array
|
|
{
|
|
return $this->viewData;
|
|
}
|
|
|
|
public function getWarnings(): array
|
|
{
|
|
return $this->warnings;
|
|
}
|
|
|
|
protected function build(): array
|
|
{
|
|
$page = clone $this->page;
|
|
$isDraft = boolval($this->page->draft);
|
|
$templates = $this->pageRepo->getTemplates(10);
|
|
$draftsEnabled = auth()->check();
|
|
|
|
$isDraftRevision = false;
|
|
$this->warnings = [];
|
|
$editActivity = new PageEditActivity($page);
|
|
|
|
if ($editActivity->hasActiveEditing()) {
|
|
$this->warnings[] = $editActivity->activeEditingMessage();
|
|
}
|
|
|
|
// Check for a current draft version for this user
|
|
$userDraft = $this->pageRepo->getUserDraft($page);
|
|
if ($userDraft !== null) {
|
|
$page->forceFill($userDraft->only(['name', 'html', 'markdown']));
|
|
$isDraftRevision = true;
|
|
$this->warnings[] = $editActivity->getEditingActiveDraftMessage($userDraft);
|
|
}
|
|
|
|
return [
|
|
'page' => $page,
|
|
'book' => $page->book,
|
|
'isDraft' => $isDraft,
|
|
'isDraftRevision' => $isDraftRevision,
|
|
'draftsEnabled' => $draftsEnabled,
|
|
'templates' => $templates,
|
|
'editor' => setting('app-editor') === 'wysiwyg' ? 'wysiwyg' : 'markdown',
|
|
];
|
|
}
|
|
|
|
} |