ZIP Imports: Added book content ordering to import preview

This commit is contained in:
Dan Brown 2024-11-22 21:03:04 +00:00
parent 59cfc087e1
commit c0dff6d4a6
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
5 changed files with 29 additions and 9 deletions

View File

@ -36,6 +36,20 @@ class ZipExportBook extends ZipExportModel
}
}
public function children(): array
{
$children = [
...$this->pages,
...$this->chapters,
];
usort($children, function ($a, $b) {
return ($a->priority ?? 0) - ($b->priority ?? 0);
});
return $children;
}
public static function fromModel(Book $model, ZipExportFiles $files): self
{
$instance = new self();

View File

@ -20,7 +20,7 @@ class ZipExportChapter extends ZipExportModel
public function metadataOnly(): void
{
$this->description_html = $this->priority = null;
$this->description_html = null;
foreach ($this->pages as $page) {
$page->metadataOnly();
@ -30,6 +30,11 @@ class ZipExportChapter extends ZipExportModel
}
}
public function children(): array
{
return $this->pages;
}
public static function fromModel(Chapter $model, ZipExportFiles $files): self
{
$instance = new self();

View File

@ -23,7 +23,7 @@ class ZipExportPage extends ZipExportModel
public function metadataOnly(): void
{
$this->html = $this->markdown = $this->priority = null;
$this->html = $this->markdown = null;
foreach ($this->attachments as $attachment) {
$attachment->metadataOnly();

View File

@ -5,7 +5,6 @@ namespace BookStack\Exports\ZipExports;
use BookStack\Exceptions\ZipExportException;
use BookStack\Exports\ZipExports\Models\ZipExportBook;
use BookStack\Exports\ZipExports\Models\ZipExportChapter;
use BookStack\Exports\ZipExports\Models\ZipExportModel;
use BookStack\Exports\ZipExports\Models\ZipExportPage;
use BookStack\Util\WebSafeMimeSniffer;
use ZipArchive;

View File

@ -16,11 +16,13 @@ $model - object
<span>@icon('tag'){{ count($model->tags) }}</span>
@endif
</div>
@foreach($model->chapters ?? [] as $chapter)
@include('exports.parts.import-item', ['type' => 'chapter', 'model' => $chapter])
@endforeach
@foreach($model->pages ?? [] as $page)
@include('exports.parts.import-item', ['type' => 'page', 'model' => $page])
@endforeach
@if(method_exists($model, 'children'))
@foreach($model->children() as $child)
@include('exports.parts.import-item', [
'type' => ($child instanceof \BookStack\Exports\ZipExports\Models\ZipExportPage) ? 'page' : 'chapter',
'model' => $child
])
@endforeach
@endif
</div>
</div>