C3D2-Web
| C3D2-Web status: stable | |
|---|---|
| Beschreibung | magic+xml static website(s) and other stuff |
| URL | https://c3d2.de/ |
| Eigentümer | c3d2 |
| Gitea | https://gitea.c3d2.de/c3d2/c3d2-web/ |
| Hostname | c3d2-web.flpk.zentralwerk.org |
Über C3D2-Web
C3D2-Web ist der Source Code für die statische Website unter https://www.c3d2.de/ . Alle Member der C3D2 Gitea Orga können in das Repo pushen. Bei fehlenden Berechtigungen wendet man sich bitte an die Owner des Teams.
Wir haben uns bewusst gegen ein CMS wie Wordpress entschieden, da statische Websites unschlagbar in Speed, Sicherheit und Wartungsarmut sind.
Leider wird XSLT aktuell nur von sehr wenigen Personen aktiv ausprobiert und es führt oft zu Diskussionen es zu ersetzen. Allerdings sind das im Wesentlichen Ausreden, denen gerne mit einem übersichtlichen Beispielprojekt begegenet wird. Dazu gibt es dieses nekische Meme:

Tor
Das c3d2-web ist per Tor Hidden Service unter http://c3d2deccoolwjnqsuy6e2f5f7d75nxnib5o6o75pekzc23zjteojkoad.onion/ erreichbar. Die Adressen ist ebenfalls als Onion-Location Header auf der Clearnet Domain abrufbar. [1]
Quickstart
- Repo clonen/pullen
git clone gitea@gitea.c3d2.de:c3d2/c3d2-web.git - Änderungen lokal vornehmen
- lokal Testen mit
makeundxdg-open www/news.html - Änderungen committen/adden und pushen
Aktualisieren der Webseite
Das Neubauen der Webseite wird über Woodpecker angestoßen und regelmäßig über einen Cron neu gebaut, um den Kalender aktuell zu halten, neue Daten von externen Quellen und vorbereitete News zu aktualisieren.
Bearbeiten
Während das hier alles nach viel aussieht, gibt es den entscheidenden Vorteil: XML ist selbsterklärend! Ist es auch!
Es schadet nicht, mal einen Blick in die Best Practises zu werfen.
Grundlegendes zum Umgang
| Verzeichnis | Bedeutung |
|---|---|
| build | temporäres Verzeichnis, in dem alle erstellten html-Dateien landen |
| content/datenspuren | Datenspuren-Seiten. |
| content/pages | XML-Dateien mit einzelnen Seiten (Wiki, SILC, Mailingliste etc.) |
| content/static | Statische Inhalte (Bilder, Styles etc.), mit Struktur, wie sie später unter www/ landen sollen. (Datenspuren-Sachen sind auch hier!) |
| dtd | Dokumenttypdefinitionen aufgrund derer einen xmllint anmeckern wird, wenn man Tags falsch benutzt. |
| scripts | Hilfsskripte zum Bauen |
| xslfo | XSL:FO-Geraffel für den imaginären DS-Guide, für welchen kein Inhalt zustande kam |
| www | Das ist nach dem Bauen das fertige Verzeichnis, in dem die Site liegt, wie sie ins htdocs exportiert werden kann. |
| xsl | Hier residieren die Definitionen, aus dem XML-Inhalt XHTML-Webseiten und RSS-Feeds zu bauen. |
Den gewöhnlichen Autor interessieren eigentlich nur die Dateien in content/. Dort kann er die XML-Dateien nach unten genannten Schemata bearbeiten. Wenn kein gültiges XML eingefüttert wird, spuckt xmllint (bzw. xsltproc) schon erklärende Fehlermeldungen.
Sonderzeichen
Neben UTF-8 können (und müssen teils) Sonderzeichen als XML Entity notiert werden
- Für
&schreibe&, auch im href-Attribut von Links! - Optionaler Bindestrich:
­ - Schmales Leerzeichen:
  - Festes Leerzeichen:
 oder  - Deutsche Anführungszeichen:
„Text in Anführungszeichen“ - Englische Quotes:
"quoted text" - Französische Guillemets:
»Qui n’avance pas, recule«(Pfeilspitzen zeigen… Schweizer Verwendung: links, rechts, Deutsche Verwendung: rechts, links)
Build
Um zu schauen, wie sich die eigenen Änderungen machen, gibt man im c3d2-web/-Verzeichnis make (unter *BSD: gmake) ein. Dann werden mithilfe xsltproc in build/ die html- und rss-Dateien gebaut. Wenn alles fertig ist kopiert rsync alles zusammen mit dem Inhalt von content/static nach www/, das ist ganz nützlich um zu sehen, welche Dateien sich tatsächlich verändert haben.
Kalendereintrag anlegen
git clone- Editiere content/events.xml mit deinem Editor. Neue Events gehören ans Ende!
- Lokal testen:
makexdg-open www/calendar.html
git add -p content/events.xmlgit commit -m "Add ..."git push- wait a minute
xdg-open https://c3d2.de/calendar.html
News schreiben
Siehe Termin#News/Ankündigung
Neue Seite erstellen
Siehe auch: Schritt-für-Schritt-Anleitung
Zuerst erstellt man eine neue XML-Datei in content/pages nach folgendem Schema (oder man kopiert eine bereits vorhandene):
<page title="Kontakt" pagetitle="E-Mail">
<p>
Anfragen an den Chaostreff Dresden bitte an <link href="mailto:mail@c3d2.de">mail@c3d2.de</link>.
</p>
<p>
Diese Adresse geht moderiert an unsere Mailingliste, d. h. an alle dort eingetragenen E-Mailadressen.
</p>
</page>Natürlich sind mehrere <p/>-Elemente möglich.
Diese Datei muss dann mit git add dem Repository hinzugefügt werden, womit sie beim nächsten git commit hochgeladen wird.
<page/>-Attribute
| Attribut | Beschreibung |
|---|---|
| title | Allgemeiner Seitentitel |
| pagetitle | Optionaler langer Seitentitel |
Seite in Navigationsleiste aufnehmen
Dazu bearbeitet man content/navigation.xml. Dort erstellt man ein neues <file/>-Element mit dem Pfad zur Datei unter content aber ohne Erweiterung, z.B. <file>content/kontakt</file>. Als Linktitel wird automatisch das pagetitle-Attribut der entsprechenden Seite verwendet.
Seiten bearbeiten
- c3d2-web/content/wasichbearbeitenwill.xml öffnen
- Gewünschte Änderungen vornehmen
makeund im Browser testengit add geänderte Dateigit commit -m "Änderungsnachricht"git push
In <page/> dürfen die Elemente welche hier aufgelistet sind Termin#Hinweise_zu_XML_Entities auftauchen.
Microformats

News zu bestimmten Anlässen kann man mit <event/> versehen. Durch bestimmte standardisierte CSS-Klassen können die Daten dann auch im XHTML gefunden werden.
Historisches
- https://web.archive.org/web/20031030072603/http://www.c3d2.de/
- https://web.archive.org/web/20031030230028/http://www.c3d2.de/?id=13
- https://web.archive.org/web/20060816060515/http://www.c3d2.de/
- https://web.archive.org/web/20070204000020/http://www.c3d2.de/news-archiv.html
- ↑ Nix Config für c3d2-web