C3D2-Web: Unterschied zwischen den Versionen
Astro (Diskussion | Beiträge) (→Inhalt: Update) |
|||
Zeile 43: | Zeile 43: | ||
!Bedeutung | !Bedeutung | ||
|- | |- | ||
|'' | |''build'' | ||
| | |temporäres Verzeichnis, in dem alle erstellten html-Dateien landen | ||
|- | |- | ||
|''xsl | |''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'' | |||
|XXX | |||
|- | |||
|''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. | |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 '''xsltproc''' schon erklärende Fehlermeldungen. | 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=== | ===Zeichensätze=== | ||
Zeile 61: | Zeile 79: | ||
===Build=== | ===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 '' | 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. | 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. |
Version vom 1. Juni 2006, 07:01 Uhr
Über C3D2-Web
C3D2-Web ist die neue Website für http://www.c3d2.de/
Bevor zu viele Leute enttäuscht werden, soll diese erstmal testweise ausgerollt werden, damit an der Seite interessierte Leute damit rumexperimentieren können.
Propaganda
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.
Als Side-effect sollte noch gesagt werden, dass sämtliche Seiten statisch sind. Wir sind also gegen XSS und xyz-Injection gefeit. Passwortabfragen können wir immernoch mit .htaccess lösen.
Wo?
SVN
Subversion bietet uns praktisch Wiki-Funktionalität:
- Jeder darf bearbeiten
- Änderungen sind verfolgbar
Um mitzumachen kann man sich das ganze Paket mit folgendem Befehl holen:
svn co svn://svn.cccv.de/c3d2-web/trunk c3d2-web
Danach hat man ein Verzeichnis c3d2-web/ auf Platte, mit dem man herumexperimentieren kann. Um es auf den neuesten Stand zu bringen, reicht es in diesem Verzeichnis den folgenden Befehl auszuführen:
svn up
Für die aktive Beteiligung braucht man natürlich einen Account mit Schreibrechten. Für einen solchen muss man nur Sven benachrichtigen. Nach diesem Account wird beim nächsten svn ci gefragt.
Web
Stündlich gebaut: http://ωωω.c3d2.de/ (bzw. http://newwww.c3d2.de/)
Wenn zudem etwas in das SVN eingecheckt wird, dann werden Commit-Messages per Jabber empfangen. Ein spezieller Triggerbot empfängt diese ebenfalls, wird dann die Homepage sofort neubauen und publizieren.
Zu diesem Bot kann man sich auch subscriben, einfach c3d2-web-trigger@pentabarf.org zum Roster hinzufügen. Einzige Funktion ist die Anzeige der letzten Neubauzeit.
Bearbeiten
Während das hier alles nach viel aussieht, gibt es den entscheidenden Vorteil: XML ist selbsterklärend!
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 | XXX |
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.
News schreiben
- c3d2-web/content/news.xml öffnen
- Oberstes <item/>-Element kopieren
- Gewünschte Attribute und Inhalt eingeben
- make und im Browser anschauen
- svn commit
Das sieht dann so aus:
<?xml version="1.0" encoding="UTF-8"?> <page title="News"> <news> <item title="Atom-Powered Robots Run Amok" date="Tue, 23 May 2038 23:05:23 CEST" nicedate="Dienstag, 23. Mai" author="Fnordic walker" category="Allgemein"> <p> <image class="left" title="Robots running amok">http://www.cnn.com/breaking_news/20380523_23.png</image> Asimov's First Law horribly violated! </p> </item> [alte news-items] </news> </page>
<item/>-Attribute
Attribut | Beschreibung |
---|---|
title | News-Titel |
date | News-Datum in standardisierter Form, z.B. für RSS-Feeds und automatisierte Verarbeitung |
nicedate | News-Datum, wie es auf der Website angezeigt werden soll |
author | Wer hats geschrieben? |
category | Eine Kategorie (sowas hatte die alte Seite auch) |
Inhalt
Den sollte man in ein <p/> einschliessen. Bilder werden automatisch linksbündig oder rechtsbündig angeordnet. Für weitere, erlaubte Elemente, siehe Seiten bearbeiten.
Erweiterter Inhalt
Seit r324 wird für jede News noch eine Extraseite angelegt. Für Text der dort erscheinen, aber nicht in der Übersicht stehen soll, darf in <item/> noch zusätzlich ein <addendum/> geschrieben werden. Dort können dann weitere <p/>, <ul/>, <dl/> und andere rein.
Neue Seite erstellen
Siehe auch: Schritt-für-Schritt-Anleitung
Zuerst erstellt man eine neue XML-Datei in content/ nach folgendem Schemata:
<?xml version="1.0" encoding="UTF-8"?> <page title="Warum wir leete Haxxorz sind" pagetitle="Warum?"> <p> Wir sind einfach cool! </p> </page>
Natürlich sind mehrere <p/>-Elemente möglich.
Diese Datei muss dann mit svn add dem Repository hinzugefügt werden, womit sie beim nächsten svn commit hochgeladen wird.
<page/>-Attribute
Attribut | Beschreibung |
---|---|
title | Allgemeiner Seitentitel |
pagetitle | Optionaler langer Seitentitel |
Makefile bearbeiten
In der Makefile fügt man seinen Dateinamen ohne Pfad und Erweiterung an die Zeile mit CONTENT= an. Weiterhin kopiert man eine Regel für eine andere Seite für seine, zum Beispiel die für www/wiki.html.
Dazu bearbeitet man content/navigation.xml. Dort erstellt man ein neues <file/>-Element mit dem Dateinamen der Seite ohne Pfad und Erweiterung. Als Linktitel wird das pagetitle-Attribut der entsprechenden Seite verwendet.
Seiten bearbeiten
- c3d2-web/content/wasichbearbeitenwill.xml öffnen
- Gewünschte Änderungen vornehmen
- make und im Browser testen
- svn commit
In <page/> dürfen folgende Elemente auftauchen:
<pre/>
Hier werden Inhalte wie eingegeben formatiert. Geeignet für Skripte, Konsolenausgaben, ...
<pre>% uname -sr FreeBSD 6.0-STABLE</pre>
Hinweis: Laut XHTML darf <pre/> nicht in <p/> vorkommen!
<p/>
<p>Ein Absatz. Mindestens einer wird empfohlen.</p>
<image/>
<image class="right" title="Linux-Unfug-Tag">http://www.linux-unfug-tag.de/logo.png</image>
Attribut | Beschreibung |
---|---|
class | Art der Darstellung, entweder left oder right |
title | Hinweis, wird in title und alt gesteckt |
Bild hochladen
cp /home/hacker/bild.png www/images/bild_vom_hacker.png svn add www/images/bild_vom_hacker.png svn ci # Braucht Account mit Schreibrechten
<link/>
<link>http://www.ccc.de/</link> <link href="http://www.ccc.de/">CCC</link>
Attribut | Beschreibung |
---|---|
href | Linkziel, falls ausgelassen wird der Inhalt verwendet |
Entwicklung
Es gibt verschiedene Branches, in denen Testversuche ausgeführt werden. Diese werden dann in den Hauptentwicklungszweig trunk zurückgeführt.
Die Planung erfolgt unter http://trac.cccv.de/c3d2-web
Dort existiert auch ein Trac, wo man sich die aktuellen Bugreports per RSS zukommen lassen kann: http://trac.cccv.de/c3d2-web/report/1?format=rss
Datenspuren-Schedule
content/datenspuren/schedule.xml kommt von https://pentabarf.cccv.de/~sven/schedule/DS2006/days