956eb1308f
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
No EOL
1.8 KiB
PHP
67 lines
No EOL
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',
|
|
];
|
|
}
|
|
|
|
} |