{{Project Info|
About=Die Homepage www.c3d2.de|
Home=https://www.c3d2.de/|
Documentation=https://wiki.c3d2.de/C3D2-Web|
Source=http://git.c3d2.de/cgit.cgi/c3d2-web/tree/|
Repository_type=git|
Repository=gitolite@git.c3d2.de:c3d2-web.git
http://www.c3d2.de/c3d2-web.git/|
Lang=XSLT, Makefile, Bash|
}}
== Über C3D2-Web ==
[[C3D2-Web]] ist die neue Website für http://www.c3d2.de/
=== Propaganda ===
[[Bild:XML Sit-Ups.png|right|XML Sit-Ups sind gar nicht schwer]]
Wir verlassen uns hier nicht auf irgendein CMS, sondern verwenden standardisierte, etablierte Techniken. Für XSLT gibt es mehr als eine Implementation. Des weiteren ist es bereits so, dass das System schon von mehr als einer Person kapiert wird.
Sämtliche Seiten sind statisch. Wir sind also gegen SQL-Injection gefeit. Passwortabfragen können wir immernoch mit ''.htaccess'' lösen.
=== Fragen? Probleme? ===
Oder einfach keinen Bock auf spitze Klammern nur um einen Podcast zu publizieren? Schicks [[Benutzer:Astro|Astro]], der hilft dir!
=== Zugang ===
..hat jede Person des Vertrauens mit einem Pubkey auf dem Webserver.
Zugang gibt es auf Antrag an
* _john
* eri!
* oder Astro
== Wie und Wo? ==
# Repo clonen/pullen
# Änderungen lokal vornehmen
# lokal Testen mit make
# Änderungen committen/adden und pushen
=== Quickstart ===
Sobald du Änderungen pushen möchtest, gebe deinen SSH Pubkey an einen derer die das [[Gitloite]] auf [[git.c3d2.de]] verwalten. Dann ersetzt du noch den git remote durch gitolite@git.c3d2.de:c3d2-web.git
== Aktualisieren der Webseite ==
Das Neubauen der Webseite wird einerseits über einen Githook angestoßen und
andererseits mit Hilfe täglich über einen Systemd Timer (/etc/systemd/system/webbuild.(timer|service)), um neue Daten
von externen Quellen zu aktualisieren.
== Bearbeiten ==
Während das hier alles nach ''viel'' aussieht, gibt es den entscheidenden Vorteil: '''XML ist selbsterklärend!'''
Es schadet nicht, mal einen Blick in die [[C3D2-Web/Best Practises|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.
==== Zeichensätze ====
Die sind wichtig. Alle XML-Dateien werden als '''UTF-8''' kodiert. Für ''vim''-Benutzer mit ''ISO8859''-Terminal:
:set termencoding=latin1
:set fileencoding=utf8
==== 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''' (oft in ''libxslt'' paketiert) in Windeseile 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.
Beim Build-Prozess wird http://www.ccc.de/updates/chaosupdates.rdf für die Seitenleiste gesaugt. Das passiert aber nur einmal, bis man ''make clean'' ausführt.
Damit das ganze unter dem super coolen Non-Nerd-Os Mac OS X funktioniert, muss bei der Installation von libxslt die Datei /opt/local/var/macports/sources/rsync.macports.org/release/ports/textproc/libxslt/Portfile abgeändert werden, dass da anstelle --without-crypto --with-crypto steht, sonst klappt das nicht, und man muss Astro bemühen die Arbeit zu erledigen...
=== News schreiben ===
# Irgendeine vorhandene News-Seite in c3d2-web/content/news auf '''c3d2-web/content/news/
dürfen die Elemente folgender Abschnitte auftauchen.
====
werden Inhalte so formatiert, wie sie einzugeben sind. Dies ist geeignet für Skripte, Konsolenausgaben, ….
<'''pre'''>% uname -sr
FreeBSD 6.0-STABLE'''pre'''>
; Hinweis: Laut XHTML darf <''pre''/>
'''nicht''' in <''p''/>
vorkommen!
====