Das Script findet sich im Repo der Seite als layouts/ftpedia/ftp-extras.html
.
Sein Zweck ist es vollautomatisch aus den Download-Dateien zu den diversen
ft:pedia-Ausgaben eine Übersichtsseite aufzubauen. Es tritt in Aktion,
wenn im Frontmatter das layout: ftp-extras
eingetragen ist. Das sollte nur
einmal auf der ganzen Site vorkommen.
Die Seite beginnt mit dem üblichen Intro und einer Fehlerbehandlung, falls mal der Titel abhanden kommen sollte.
{{ define "main" }}
{{ if not .Title }}
{{ errorf "Oh oh, der Seitentitel 'title' fehlt oder ist leer in Seite %q" .Path }}
{{ end }}
Danach kommt etwas Javascript.
<script language="javascript" type="text/javascript">
<!--
...
-->
</script>
Diese Zeilen ermöglichen dem späteren Besucher, die Spalten der Tabelle nach seinen Wünschen zu sortieren. Dabei ist die Spalte mit den Download-Links von der Sortierung ausgeschlossen.
$date_format_string := "02.01.2006"
sorgt für eine angenehme Darstellung der
Datümer.
Die Seite bekommt ihren Rahmen, die Brotkrumen, den inneren Bereich und ihre
Überschrift aus dem Titel. Dazu kommt noch der Text (.Content
).
<div class="padding highlightable" style="overflow: scroll;">
{{ partial "topbar.html" . }}
<div id="body-inner">
<h2>{{.Title}}</h2>
{{ .Content }}
Sofort im Anschluss ist die Tabelle mit den Dateien angeordnet. Sie bekommt
fünf Spalten (‘Jahr’, ‘Heft’, ‘Thema’, ‘Download-Link’ und ‘Autor(en)').
Außer der Spalte ‘Download-Link’, dargestellt durch ein Icon, können alle
Spalten aufsteigend oder absteigend sortiert werden. Der Cursor zeigt das
optisch durch ein anderes Symbol an (n-resize
).
<table>
<thead>
<tr>
<th style = "cursor: n-resize; text-align: center;">Jahr</th>
<th style = "cursor: n-resize; text-align: center;">Heft</th>
<th style = "cursor: n-resize">Thema</th>
<th style = "text-align: center;"><i class="fas fa-download"></i></th>
<th style = "cursor: n-resize">Autor(en)</th>
</tr>
</thead>
Ausgehend vom section Wurzelknoten (with .Parent
) sucht das Script durch
alle Jahrgänge und dort durch alle Einzelausgaben hinweg. Das sind die beiden
range .Sections.ByTitle.Reverse
Zeilen.
<tbody>
{{ with .Parent }}
{{ range .Sections.ByTitle.Reverse }}
{{ range .Sections.ByTitle.Reverse }}
Nur Download-Dateien zu einer veröffentlichten Ausgabe sind zugelassen. Was
bei einem Teaser steht, muss ignoriert werden. if eq .Layout "issue"
kümmert
sich genau darum.
{{ if eq .Layout "issue" }}
{{ $AusgabeJahr := delimit (findRE "[0-9]*$" .Title) " " }}
{{ $AusgabeNummer := delimit (findRE "^[0-9]*" .Title) " " }}
{{ range .Pages.ByDate.Reverse }}
Aus dem Hefttitel holen zwei findRE
das Jahr und die Heftnummer heraus.
Danach schaut range .Pages.ByDate.Reverse
sich die ‘Extras’ an. Für jedes
Extra gibt es eine Zeile in der Tabelle (<tr>
). In den ersten beiden Spalten
werden Ausgabe (Jahr) und Heftnummer im Jahr eingetragen. Die dritte Spalte
bekommt den Link zur Downloadseite basierend auf dem Titel des ‘Extras’.
<tr>
<td>{{ $AusgabeJahr}}</td>
<td>{{ $AusgabeNummer }}</td>
<td>
<a href = "{{ .RelPermalink }}">
{{ .Title }}
</a>
</td>
Spalte vier bekommt ein Icon für die Download-Datei, den Hyperlink zum direkten Download und eine Angabe zur Größe. Dabei helfen bereits vorhandene Partials ungemein.
<td style = "text-align: center;">
<a style = "display: block;"
href="{{.Parent.RelPermalink}}{{.Params.File}}">
{{ partial "download-icon.html" . }}
</a>
{{ partial "download-size.html" . }}
</td>
Die fünfte Spalte erhält noch eine Auskunft über die Autoren des ‘Extras,
ebenfalls durch ein partial aus dem Fundus. Danach endet die Tabellenzeile
per </tr>
.
<td>{{ partial "authors-list.html" . }}</td>
</tr>
{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
</tbody>
</table>
</div>
</div>
{{ end }}
Weitere Seiteninhalte gibt es nicht, so dass der Reihe nach die Schleifenkonstrukte, die Tabelle sowie die beiden Darstellungsbereiche geschlossen werden.
Eine Navigation ist bislang weder vorgesehen noch nötig.
Stand: 28. Oktober 2019