|
||
---|---|---|
flask | ||
.gitignore | ||
LICENSE | ||
README.md | ||
requirements.txt |
Website auf Jinja2-Basis
Die Website auf Mason2-Basis (bzw. Mason1 auf der digi-Instanz) soll durch eine Eigenimplementierung auf Jinja2 migriert werden.
Jinja2 läuft auf Django- oder auf Flask-Basis. Wir bevorzugen Flask, da wir mutmaßlich keine Datenbank brauchen werden, worauf das mächtigere Django stark ausgerichtet ist. Flask ist in der Beziehung leichtgewichtiger.
flask
Unser auf Jinja2-basierter Application Server mit flask.
templates
und Layoutkaskaden
**/layout.jtml
heißen die kaskadenartig angewendeten Layoutdateien. Wird eine normale Seite mit der
Dateinamensendung .html
aufgerufen, wird zunächst versucht, eine Datei namens layout.jtml
aus dem
gleichen Verzeichnis zu laden. Schlägt dies fehl, wird die Suche auf der nächsthöheren Verzeichnisebene
fortgesetzt, und so weiter. Das gleiche geschieht, wenn für eine layout.jtml
wiederum die nächsthöhere
gefunden werden soll, aber nur solange jeweils die erste Zeile darin lautet:
{% extends layout() %}
Anstelle von layout()
kann auch der Dateipfad von einem beliebigen anderen Template stehen.
Dieses wird dann verwendet. Enthält es aber selbst wiederum {% extends layout() %}
, wird zu derselben
Kaskade zurückgekehrt, als würde es in der eigentlich aufgerufenen Seite stehen.
Jedwedes direkt angegebene Template außer layout()
schiebt sich gewissermaßen zwischen
die aufgerufene Seite und die weitere, normale Layoutkaskade.
DSL.*
Jinja2-Migrationen der Mason-Snippets (<& /nav1/img, name => "neu" &>
) sind aufrufbar wie folgt:
`{{ DSL.img(name="neu") }}`
Sprachinfix
Der Dateiendung der aufgerufenen Seite kann ein de.
, en.
, fr.
oder it.
vorangehen. Weitere
Sprachen können jederzeit hinzugefügt werden. Da es aber auch Top-Level-Verzeichnisse mit zwei
Buchstaben langen Namen geben kann (z.B. nc/
), werden nur registrierte Sprachkürzel nach dieser
Logik berücksichtigt.
Erscheint in der URL als erstes Pfadsegment nach der Domain ein Sprachinfix (statt "en" geht auch "Englisch/", "English", groß oder klein geschrieben), so wird bevorzugt die entsprechende Fassung aufgerufen.
Alternativ, sollte die angefragte Fassung der Seite nicht gefunden werden, wird die englische bzw. die deutsche Fassung genommen.
Aufrufe der Funktion DSL.i18n(de="Text in deutscher Sprache", en="...", ...)
lösen sich entsprechend
der gefundenen Fassung auf, wenn der Textstring in der angefragten Sprache nicht verfügbar ist. Danach
wird die englische, dann die deutsche Fassung probiert.
Gleiches gilt für DSL.i18n
im Filtermodus: {% filter DSL.i18n %}...{% endfilter %}
kann immer dann
benutzt werden, wenn für unterschiedliche Sprachen verschiedene HTML-Markups verwendet werden sollen. Alle
von diesem Filter umfassten Inhalte werden gefiltert nach Elementen mit lang-Attribut. Nur diejenigen
dieser Elemente, die auf die angefragte bzw. gefundene Sprachfassung passen, werden samt Inhalt angezeigt.
Markdown
Es wird ein Filter markdown
definiert. In der Layout-Datei kann man diesen wie folgt nutzen:
{% filter markdown %}
{% block content %}Diese Seite hat keinen Inhalt, denn es ist nur die layout.jtml-Datei.{% endblock %}
{% endfilter %}