Update to FF Webpage V1.3.x

This commit is contained in:
Julian Krauser 2025-04-22 10:21:05 +02:00
parent 500ef6957f
commit 4f989d041c
11 changed files with 76 additions and 62 deletions

Binary file not shown.

View file

@ -4,8 +4,8 @@
#show: template.with(
logo: "../webpage/logo.png",
title: "Anleitung",
alttitle: "Anleitung zu FF Webpage bis v1.2.x",
subtitle: "bis v1.2.x",
alttitle: "Anleitung zu FF Webpage bis v1.3.x",
subtitle: "bis v1.3.x",
details: (
"Open Source Software",
"entwickelt durch JK Effects",

View file

@ -19,9 +19,9 @@
let __glossary_entries = __glossary_entries.final()
if key in __glossary_entries {
let entry = __glossary_entries.at(key)
let gloss = __query_labels_with_key(key, before: true)
let is_first = gloss == ()
let entlong = entry.at("long", default: "")
let textLink = if display != none {
@ -31,7 +31,7 @@
} else {
[#entry.short#suffix]
}
[#link(label(entry.key), textLink)#label(__glossary_label_prefix + entry.key)]
} else {
text(fill: red, "Glossary entry not found: " + key)
@ -80,72 +80,70 @@
entry,
)
}
x
})
let groups = entries.map(x => x.at("group", default: "")).dedup()
// move no group to the front
groups.insert(0, "")
groups.pop()
for group in groups.sorted() {
if group != "" [#heading(group, level: 2) ]
for entry in entries.sorted(key: x => x.short) {
if entry.group == group {
[
#show figure.where(kind: __glossary_figure): it => it.caption
#par(hanging-indent: 1em, first-line-indent: 0em)[
#figure(
supplement: "",
kind: __glossary_figure,
numbering: none,
caption: {
context {
set align(left)
set par(justify: true)
let term_references = __query_labels_with_key(entry.key)
if term_references.len() != 0 or show-all {
let desc = entry.at("desc", default: "")
let long = entry.at("long", default: "")
let hasLong = long != "" and long != []
let hasDesc = desc != "" and desc != []
{
set text(weight: 600)
if hasLong {
emph(entry.short) + [ -- ] + entry.long
} else {
emph(entry.short)
}
}
if hasDesc [: #desc ] else [ ]
if disable-back-references != true {
set text(weight: "bold")
box(width: 1fr, repeat[.])
[ ]
term_references.map(x => x.location()).sorted(key: x => x.page()).fold(
(values: (), pages: ()),
((values, pages), x) => if pages.contains(x.page()) {
(values: values, pages: pages)
} else {
values.push(x)
pages.push(x.page())
(values: values, pages: pages)
},
).values.map(x => link(x)[#numbering(x.page-numbering(), ..counter(page).at(x))]).join(", ")
#figure(
supplement: "",
kind: __glossary_figure,
numbering: none,
caption: {
context {
set align(left)
set par(justify: true)
let term_references = __query_labels_with_key(entry.key)
if term_references.len() != 0 or show-all {
let desc = entry.at("desc", default: "")
let long = entry.at("long", default: "")
let hasLong = long != "" and long != []
let hasDesc = desc != "" and desc != []
{
set text(weight: 600)
if hasLong {
emph(entry.short) + [ -- ] + entry.long
} else {
h(1fr)
emph(entry.short)
}
}
if hasDesc [: #desc ] else [ ]
if disable-back-references != true {
set text(weight: "bold")
box(width: 1fr, repeat[.])
[ ]
term_references.map(x => x.location()).sorted(key: x => x.page()).fold(
(values: (), pages: ()),
((values, pages), x) => if pages.contains(x.page()) {
(values: values, pages: pages)
} else {
values.push(x)
pages.push(x.page())
(values: values, pages: pages)
},
).values.map(x => link(x)[#numbering(x.page-numbering(), ..counter(page).at(x))]).join(", ")
} else {
h(1fr)
}
}
},
)[] #label(entry.key)
]
}
},
)[] #label(entry.key)
#parbreak()
]
}
}
if enable-group-pagebreak {pagebreak(weak: true)}
if enable-group-pagebreak {pagebreak(weak: true)}
}
};

View file

@ -8,11 +8,11 @@ ff-cms:
- DATABASE_NAME=ffcms
- DATABASE_USERNAME=cms
- DATABASE_PASSWORD=<dbuserpasswd>
- JWT_SECRET=<tobemodified>
- ADMIN_JWT_SECRET=<tobemodified>
- APP_KEYS=<tobemodified>,<tobemodified>
- API_TOKEN_SALT=<tobemodified>
- TRANSFER_TOKEN_SALT=<tobemodified>
- JWT_SECRET=<random string>
- ADMIN_JWT_SECRET=<random string>
- APP_KEYS=<random string> # oder<random string>,<random string>,...
- API_TOKEN_SALT=<random string>
- TRANSFER_TOKEN_SALT=<random string>
volumes:
- <volume|local path>:/app/public/uploads
ports:

View file

@ -161,10 +161,10 @@ Folgende Werte können zu einem Container konfiguriert werden:
"DB_USERNAME", "Nutzername für Zugang zu Datenbank", "", "💥",
"DB_PASSWORD", "Passwort zum Zugang zur Datenbank", "", "💥",
"JWT_SECRET", "", "", "💥",
"ADMIN_JWT_SECRET", "", "", "",
"APP_KEYS", "", "", "",
"API_TOKEN_SALT", "", "", "",
"TRANSFER_TOKEN_SALT", "", "", "",
"ADMIN_JWT_SECRET", "", "", "💥",
"APP_KEYS", "", "", "💥",
"API_TOKEN_SALT", "", "", "💥",
"TRANSFER_TOKEN_SALT", "", "", "💥",
"", "", "", "",
table.cell(colspan: 4)[⬇️ Database-Variablen],
"MYSQL_DATABASE", "Name der Datenbank, die bei Erstellung direkt angelegt wird.", "", "💥",

View file

@ -117,7 +117,12 @@ Damit eine Liste wie Artikel, Einsätze, Termine oder Fahrzeuge auf den Seiten v
#figure(
image("../../images/page.png", width: 100%),
)
Der @collection-type *Seiten* speichert alle Seiten, die erreicht werden können. Derzeit ist jede Seite - ob in der Navigation angegeben oder nicht - über den in der URL definierten @slug erreichbar, sofern nicht eine Navigationseinstellung den @slug überlagert. Standardmäßig ist die Erreichbarkeit auf `<meine Domain>/<slug>` gesetzt.
Der @collection-type *Seiten* speichert alle Seiten, die erreicht werden können. Jede Seite ist über den URL-Pfad, welche im @slug definiert ist, erreichbar, sofern `ref_only_access` auf `false` steht und eine Navigationseinstellung den @slug nicht überlagert. Standardmäßig ist die Erreichbarkeit auf `<meine Domain>/<slug>` gesetzt.
\
\
Der @slug kann auch vollständige Pfade beinhalten. Dabei wird ein Pfad wie `einsaetze` zu `<meine Domain>/einsaetze` oder `mach-mit_formular` zu `<meine Domain>/mach-mit/formular`. Ein `_` stellt dabei ein `/` dar.
\
Ist bei einer Seite `ref_only_access` auf `true` gesetzt, so ist eine Seite nur noch per Verlinkung über die Navigation erreichbar.
\
\
Der Identifier dient nur zur lesbaren Identifizierung der Seite, wenn sie einem Navigationslink zugeordnet ist. Der @slug speichert den Pfad, der in der URL angezeigt wird.

View file

@ -73,6 +73,17 @@ Neben dem 1-spaltigen Layout gibt es auch die Möglichkeit 2 Spalten nebeneinena
Erweitert kann auch ein Bild in einer Spalte links oder rechts angezeigt werden. Auch hier werden die Inhalte übereinander angezeigt, wenn die Webseite auf kleineren Bildschirmen angezeigt wird.
]
#wrap-content(
figure(
image("../../images/file-preview.png", width: 6.5cm),
),
align: right
)[
*Datei-Anzeige*
Diese Komponente ermöglicht die Einbettung von Bildern oder PDFs. Wird ein PDF oder ein Bild angegeben, so wird dieses angezeigt. Ist eine Datei nicht darstellbar, wird nur der Download-Button angezeigt, sofern dieser nicht ausgeblendet ist.
]
#wrap-content(
figure(
image("../../images/file-download.png", width: 6.5cm),
@ -82,7 +93,7 @@ Erweitert kann auch ein Bild in einer Spalte links oder rechts angezeigt werden.
*Datei-Download*
Es besteht auch die Möglichkeit, Dateien zum Download zur Verfügung zu stellen.
Diese Komponente ermöglicht die Einbettung von Bildern oder PDFs mit Downloadmöglichkeit. Wird ein PDF oder ein Bild angegeben, so wird dieses angezeigt. Ist eine Datei nicht darstellbar, wird nur der Download-Button angezeigt, sofern dieser nicht ausgeblendet ist.
Diese Komponente ermöglicht den Download einer jeden angegeben Datei.
]
#wrap-content(

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 50 KiB