Logical Theme System
- Anzeige der Revisionen in einem PDF Export
- URL mit Mausklick kopieren
- tabellarische Darstellung der Tags in einem PDF Export
- PDF Export mit QR-Code
- News-Seite / schwarzes Brett
- Regale zu denen ein Buch gehört anzeigen
Anzeige der Revisionen in einem PDF Export
getestet mit Version 24.02
Anforderung
Um die Revisionen und ggfs. den Changelog in einem PDF Export ganz zum Schluss anzeigen lassen zu können sind einige Anpassungen nötig.
Zuerst habe ich dafür einen zusätzlichen Link in das Export-Menü eingebaut um einmal eine Version ohne Revisionen und eine mit Revisionen exportieren zu können.
betroffene Dateien
Dateien müssen sich in der entsprechenden Struktur unterhalb des Themes befinden.
Ordner = kursiv
Dateien = fett
Inhalte der Dateien
revisions-index-row-compact.blade.php
Ich habe in dem Ordner eine weitere Datei angelegt und mit folgendem Inhalt gefüllt:
<tr>
<td>{{ $revision->created_at->isoFormat('D MMMM Y') }}</td>
<td>{{ $revision->revision_number == 0 ? '' : $revision->revision_number }}</td>
<td>@if($revision->createdBy) {{ $revision->createdBy->name }} @else {{ trans('common.deleted_user') }} @endif</td>
<td>{{ $revision->summary }}</td>
</tr>
page.blade.php
In dieser Datei habe ich an das Ende der Seite folgenden Code eingefügt und die alte Meta Ansicht deaktiviert. Der geänderte Code beginnt in Zeile 7 (in diesem Codeschnipsel).
[...]
<div style="clear:left;"></div>
{!! $page->renderedHTML ?? $page->html !!}
</div>
@if(request()->query('history'))
<hr>
<h2>Dokumentenhistorie</h2>
<table>
<tr>
<th>Datum</th>
<th>Version</th>
<th>Autor</th>
<th>Anmerkungen</th>
</tr>
@if(count($page->revisions) > 0)
@foreach($page->revisions as $index => $revision)
@include('exports.parts.revisions-index-row-compact', ['revision' => $revision, 'current' => $page->revision_count === $revision->revision_number])
@endforeach
@else
<p>{{ trans('entities.pages_revisions_none') }}</p>
@endif
</table>
@endif
<!-- <hr>
<div class="text-muted text-small">
@include('exports.parts.meta', ['entity' => $page])
</div> -->
@endsection
Der Codeabschnitt kann auch an jeder anderen Stelle hinterlegt werden, für mich hat es aber am Ende des Dokuments den meisten Sinn gemacht.
Ich habe bei den Anpassungen auf Übersetzungen verzichtet, das würde sich aber problemlos ändern lassen.
Screenshots
URL mit Mausklick kopieren
getestet mit Version 24.02
Anforderung
Wenn man Bookstack als PWA nutzt ist es nur umständlich möglich, die URL zu kopieren wenn man diese jemandem schicken möchte.
betroffene Dateien
Dateien müssen sich in der entsprechenden Struktur unterhalb des Themes befinden.
Ordner = kursiv
Dateien = fett
Inhalte der Dateien
show.blade.php (gleich für jede Datei)
Hier wurde die Zeile 10 hinzugefügt (Zeilennummer nur für diesen Ausschnitt)
@if($watchOptions->canWatch() && !$watchOptions->isWatching())
@include('entities.watch-action', ['entity' => $page])
@endif
@if(user()->hasAppAccess())
@include('entities.favourite-action', ['entity' => $page])
@endif
@if(userCan('content-export'))
@include('entities.export-menu', ['entity' => $page])
@endif
@include('entities.share-link', ['entity' => $page])
</div>
</div>
@stop
Screenshots
tabellarische Darstellung der Tags in einem PDF Export
getestet mit Version 24.02
Anforderung
Für diverse Zertifizierungsdokument wird ein "Dokumentenheader" benötigt. Da ich die Informationen in Tags versteckt habe lasse ich diese einfach als Tabelle bei einem PDF Export darstellen.
betroffene Dateien
Dateien müssen sich in der entsprechenden Struktur unterhalb des Themes befinden.
Ordner = kursiv
Dateien = fett
Inhalte der Dateien
page.blade.php
An der gewünschten Stelle muss folgender Code eingefügt werden:
@if($page->tags->count() > 0)
<h2>Dokumenteninformationen</h2>
<table>
@foreach($page->tags as $tag)
@include('exports.parts.tag-export-table', ['tag' => $tag])
@endforeach
</table>
</div>
<hr>
@endif
Screenshots
PDF Export mit QR-Code
getestet mit Version 24.02
Anforderung
Ich wollte gerne die Möglichkeit haben, exportierte Daten einfach wieder in der digitalen Welt zu finden. Was ist dazu besser geeignet als ein QR-Code.
betroffene Dateien
Dateien müssen sich in der entsprechenden Struktur unterhalb des Themes befinden.
Ordner = kursiv
Dateien = fett
Inhalte der Dateien
export-body-start.blade.php
Vor dem ersten div
-Container muss hier folgendes eingetragen werden:
@inject('totp', 'BookStack\Access\Mfa\TotpService')
@php
$qrCode = $totp->generateQrCodeSvg($page->getUrl());
$imgStr = 'data:image/svg+xml;base64,' . base64_encode($qrCode);
@endphp
Im Anschluss kann an einer beliebigen Stelle das Bild an die PDF übergeben werden.
Dazu muss folgender Abschnitt hinzugefügt werden:
@if(request()->query('qr'))
<div style="float: right;">
<img width="50" src="{{ $imgStr }}" alt="{{ $page->getUrl() }}">
</div>
@endif
export-menu.blade.php
Hier muss nun einfach nach der Zeile gesucht werden mit dem Inhalt /export/pdf
.
Danach die Zeile kopieren und den String ?qr=true anhängen an die selbe Stelle.
Es sollte dann wie folgt aussehen:
<ul refs="dropdown@menu" class="wide dropdown-menu" role="menu">
<li><a href="{{ $entity->getUrl('/export/html') }}" target="_blank" class="label-item"><span>{{ trans('entities.export_html') }}</span><span>.html</span></a></li>
<li><a href="{{ $entity->getUrl('/export/pdf') }}" target="_blank" class="label-item"><span>{{ trans('entities.export_pdf') }}</span><span>.pdf</span></a></li>
<li><a href="{{ $entity->getUrl('/export/pdf?qr=true') }}" target="_blank" class="label-item"><span>{{ trans('entities.export_pdf') }} + QR</span><span>.pdf</span></a></li>
<li><a href="{{ $entity->getUrl('/export/plaintext') }}" target="_blank" class="label-item"><span>{{ trans('entities.export_text') }}</span><span>.txt</span></a></li>
<li><a href="{{ $entity->getUrl('/export/markdown') }}" target="_blank" class="label-item"><span>{{ trans('entities.export_md') }}</span><span>.md</span></a></li>
</ul>
In diesem Ausschnitt ist in Zeile 4 der neue Export Link hinzugefügt.
Screenshots
News-Seite / schwarzes Brett
getestet mit Version 24.12
Anforderung
Zum Abbilden der Funktion eines schwarzen Bretts bzw. einer News-Seite um aktuelle Infos anzuzeigen.
betroffene Dateien
Dateien müssen sich in der entsprechenden Struktur unterhalb des Themes befinden.
Ordner = kursiv
Dateien = fett
Inhalte der Dateien
Screenshots
Regale zu denen ein Buch gehört anzeigen
getestet mit Version 25.02
Anforderung
Ich wollte sehen in welchen Regalen ein Buch steht, da ein Buch in mehreren Regalen stehen kann und weil die Brotkrumen Navigation das Regal nicht anzeigt wenn man nicht das Buch z.B. über die Suche öffnet.
betroffene Dateien
Dateien müssen sich in der entsprechenden Struktur unterhalb des Themes befinden.
Ordner = kursiv
Dateien = fett