spezifikationen für die verwendung von dynamo content management

Datenbank | Templates | Verlinkung | Diverses


Datenbank

Die Datenbank (Textdatei) für jede Liste heisst [listname].txt .

Beispiel Telefonnummern-Datenbank:

Name|Hat ein Handy|Telefonnummer
##|checkbox|small
##
##1
##Martin|true|123456789
Beispiel Webseiten-Datenbank:

Titel|Inhalt
##small|wysiwyg big
##adminpwd=hacGs6GsDNdDY
##1
##Hauptseite|hallo<br><b>test</b>
Beispiel Dateiaustausch-Seite:

Autor|Datei
##|file
##notify=m.jaggi@gmx.net
##1
##Martin|cv.doc

Erste Zeile der Textdatei:

Namen der Felder, durch | getrennt.

Zweite Zeile der Textdatei:

Typen der Datenfelder, durch | getrennt.

Mögliche Typen:

[nichts] normales Textfeld.
small kleines Textfeld.
textbox mehrzeilige Textbox.
wysiwyg
wysiwyg big
online WYSIWYG-Editor für formatierten Text, Bilder und Links (TinyMCE 3.0, mindestens so gut wie Microsoft Word :-)).
checkbox Checkbox zum anklicken, kann für die <if>-Bedingungen benutzt werden.
radio []..[].. Radio-Buttons zum anklicken, Werte durch je 2 Punkte getrennt.
select []..[].. Dropdown-Menu, Einträge durch je 2 Punkte getrennt.
url ein Web-Link.
file beliebige Datei (Upload).
weitere Informationen zum verwenden von hochgeladenen Dateien.
listentry [listname].[feldname] ein Eintrag aus einer anderen Liste [listname]. Als Standard-Auswahlmenu wird das Feld [feldname] verwendet. Im Datenbank-Sprachgebrauch entspricht dies einer 1-zu-1-Relation.
Option: bidirektionale Verbindungen erlauben automatisch synchronisierte Verknüpfungen zweier Listen.
listentries [listname].[feldname] ein oder mehrere Einträge einer anderen Liste [listname] können ausgewählt werden. Als Auswahl-Menu* wird das Feld [feldname] verwendet. Im Datenbank-Sprachgebrauch entspricht dies einer 1-zu-n-Relation.
Option: bidirektionale Verbindungen erlauben automatisch synchronisierte Verknüpfungen zweier Listen.
list [template] eine Liste (mit Namen [feldname]) im Verzeichnis der aktuellen Liste. [template] wird als Template zum Bearbeiten dieser untergeordneten Listen verwendet.
weitere Informationen zur Handhabung von "Listen von Listen".
email confirm falls der Eintragende seine Emailadresse angibt, wird ihm an diese Emailadresse ein Konfirmations-Email geschickt, womit er (und nur er) seinen Eintrag jederzeit verändern oder löschen kann.

Dritte Zeile der Textdatei:

Optionen für diese Liste, durch | getrennt.

Mögliche Optionen:

adminpwd=[verschlüsselter wert] das Passwort zum Administrieren der Liste.
Gewünschtes Passwort:
viewpwd=[verschlüsselter wert] falls ein Passwort auch zum Ansehen der Liste gewünscht ist.
notify=email@domain.com email-adresse, falls eine Benachrichtigung über neue (unauthorisierte) Einträge gewünscht wird.
allauthorize=true falls keine neuen Einträge ohne Authentifikation erlaubt werden sollen.
multifileupload=true um gleichzeitige Uploads von mehreren Dateien zu erlauben.
listentries-by-checkboxes=true erlaubt das Auswählen von Listeneinträgen per Checkboxes anstelle des standardmässigen Auswahlmenus (Mehrfachauswahl bleibt bei beiden Arten möglich).

Vierte Zeile der Textdatei:

die Anzahl der Listeneinträge dieser Liste (automatisch)

Templates

Es können gewöhnliche HTML, XHTML, XML, Text und CSS-Dateien verwendet werden, mit einigen zusätzlichen TAGs:

Zwei Arten:

{for all entries [varname] in list [listname]}
{/for}

Was dazwischensteht wird für jeden Datensatz der Liste wiederholt.
Optionen: {for all entries [varname] in list [listname], optionen}
show max [zahl] bewirkt dass die Einträge seitenweise zu je [zahl] Einträgen angezeigt werden.
order by [felder] bewirkt die Sortierung der Einträge nach den angegebenen Feldern (siehe Sortieren).
{for this entry [varname] in list [listname]}
{/for}

Was dazwischensteht wird für einen in der URL spezifizierten Datensatz eingefüllt.
Aufruf: <a href="dynamo.pl?[auswahl-angabe]&template=[template]">, wobei die Auswahl-Angabe den Datensatz bestimmt:
Beispiele für Auswahl-Angaben:
number=[wert]
[varname].number=[wert]
[varname].[feld]=[wert]

Innerhalb dieser beiden ist erlaubt:

{[varname].[feldname]}

wird zum Feld [feldname] des aktuellen Datensatzes.
Übrigens: falls es sich beim Feld wieder um einen ganzen Datensatz handelt (d.h. Typ ist listentry), so kann danach einfach erneut ein Punkt gesetzt werden: z.B. {person.Bester Freund.Telefonnummer}
Optionen: {[varname].[feldname] option}
resize to [bildgrösse] erstellt automatische Tumbnails für Bilder, siehe Tumbnails.
show max [zahl] bewirkt das Anzeigen nur der ersten [zahl] Zeichen des Feldes.
{if [Ausdruck]}...{/if}

wird zu ... , falls der Ausdruck wahr ist. der Ausdruck (Perl) kann natürlich ebenfalls dynamische Inhalte enthalten.
Beispiel mit einem Checkbox-Feld:
{if [varname].[feldname]}
      <p>Checkbox wurde angekreuzt
{/if}
Beispiel für dynamisches Layout (wechselnde Farben):
{if [varname].number % 2 == 0}
      <tr bgcolor="#ABCDEF">
{/if}

{[varname].date}

wird zum Datum der letzten Änderung bzw. Erstellungsdatum des aktuellen Datensatzes.
Varianten:
Letztes Änderungsdatum:   Erstellungsdatum:
formatiertes Datum[varname].date[varname].datecreated
kurzes formatiertes Datum[varname].short-date[varname].short-datecreated
korrektes RSS Datum[varname].rss-date[varname].rss-datecreated
Tag[varname].date.day[varname].datecreated.day
Wochentag[varname].date.weekday[varname].datecreated.weekday
Monat[varname].date.month[varname].datecreated.month
Monatsname[varname].date.monthname[varname].datecreated.monthname
Jahr[varname].date.year[varname].datecreated.year
Stunde[varname].date.hour[varname].datecreated.hour
Minute[varname].date.min[varname].datecreated.min
Sekunde[varname].date.sec[varname].datecreated.sec
{[varname].ip}

wird zur IP-Adresse von der aus die letzte Änderung gemacht wurde.
{[varname].id}

wird zur eindeutigen, unveränderlichen ID des aktuellen Datensatzes.
{[varname].number}

wird zur Nummer des aktuellen Datensatzes.
{[varname].number of entries}

wird zur Anzahl Datensätze der Liste. Funktioniert insbesondere auch für listentries Felder, d.h. zeigt an wieviele Einträge einer anderen Liste ausgewählt sind.
{size of [varname].[feldname]}

wird zur Dateigrösse der (hochgeladenen) Datei.
{[varname].dataurl}

wird zum URL-Pfad zum Sitz der Dateien einer Liste (Upload-Verzeichnis). Um eine hochgeladene Datei in einer HTML-Seite zu verwenden (z.b. als Link oder als Bild) schreibt man also {[varname].$dataurl}{[varname].[feldname]}
{calc}[perl code]{/calc}

wird zum Resultat des Perl-Codes. Ermöglicht das definieren und rechnen mit eigenen Variablen etc.
{url.[feldname]}

wird zum URL-Parameter [feldname]. (Etwas technisch) Ermöglicht es mittels URL-Parametern weitere Funktionalitäten in derselben Template zu realisieren.
{marker select}

Admin: wird zur Checkbox zum löschen.
{marker edit}

Admin: wird zum Button zum bearbeiten des Eintrags.
{marker insert [varname]}
...{insert}...

{/marker}

Admin: wie und wo der "+"-Knopf (hinzufügen) dargestellt werden soll.
Option: {insert v} ergibt vertikalen bzw runden (normalen) Pfeil-Cursor.

zusätzlich für die Administration (fakultativ, falls nicht die Standard-Administrationsansicht sondern eine eigene Administrationsansicht gewünscht wird):

{adminmarker [varname]}

{/adminmarker}

notwendig falls die Template das Administrieren der Liste zulassen soll.
der Bereich zwischen diesen beiden Tags wird zum Darstellen der Formulare verwendet.
{on admin}
{/on}

was zwischen diesen beiden Tags steht wird nur angezeigt falls der Benutzer sich im Admin-modus befindet.

Verlinkung

Link zu einer beliebigen Template:
      <a href="dynamo.pl?template=[template]">

Link zur Detaildarstellung eines Listeneintrags:
siehe detaillayout

Link zum Administrationsbereich (mit oder ohne eigene Template):
      <a href="dynamo.pl?action=admin&list=[listname]&template=[template]">
      <a href="dynamo.pl?action=admin&list=[listname]">

Link um einer éiste einen neuen Eintrag hinzuzufügen: (öffentlich)
      <a href="dynamo.pl?action=addform&list=[listname]&template=[template]">

Eigenes Formular um einer Liste direkt einen neuen Eintrag hinzuzufügen:
      <form method=POST action="dynamo.pl">
            <input type="hidden" name="list" value="[listname]">
            <input type="hidden" name="action" value="addit">
            <input type="hidden" name="thanks" value="thanks.html">
            <input name="field0">
            <input name="field1">
            ...
      </form>


Diverses

Konfiguration des Perl-Programms

die Pfad- und URL-Angaben in der Konfigurations-Datei dynamo-config.pl müssen richtig angepasst werden (es können auch relative Pfadangaben auf dem Server verwendet werden). Weitere Einstellungsmöglichkeiten: Sprache (momentan Deutsch oder Englisch), erlaubte Dateierweiterungen für Upload, System-Name (Email-Absender), gewünschte Datumsformate, Konfiguration für den WYSIWYG-Editor, und regelmässige automatische Backups der Daten.

Automatische Tumbnails für Bilder

für Datei-Felder die Bild-Dateien enthalten kann man mit der Option resize to [grösse] automatisch ein Tumbnail (kleineres Voransichts-Bild) der angegebenen Grösse erstellen und verwenden. (Funktioniert wenn der Server ImageMagick unterstützt, d.h. auf den meisten momentan erhältlichen Hostings.)
Beispiel:
Ursprüngliches Bild: {[varname].[feldname]}
Breite und Höhe maximal 120: {[varname].[feldname] resize to 120x120}

Bidirektionale Verknüpfungen zwischen Listen

Die Feldtypen listentry und listentries erlauben bereits 1-zu-1 wie auch 1-zu-n -Relationen zwischen verschiedenen Listen. Dynamo bietet zusätzlich noch die Option solche Verknüpfungen bidirektional zu halten, d.h. immer automatisch zu aktualisieren. Diese Option wird aktiviert durch das wort bidirectional im Feldtyp:
listentries bidirectional [listname].[feldname]

Sortierfunktionen

Andere Sortierung während der Anzeige in einer Template: mit der folgenden Option: {for all entries [varname] in list [listname], order by [feld1]*[feld2]*[feld3]} sortiert die Liste (alphabetisch) nach Feld1, danach nach Feld2 und danach Feld3. Es können auch weniger als 3 Felder angeben werden. Ein Minuszeichen vor einem Feld erzwingt eine absteigende statt austeigende Sortierung. Statt der Angabe von Feldern kann auch zufällig 'sortiert' werden (order by random).

Definitive Umsortierung der Liste per Link (z.B. innerhalb des Administrationsbereichs):       <a href="dynamo.pl?action=sort&by=[feld1]*[feld2]*[feld3]&list=[listname]&template=[template]">. Es können auch weniger als 3 Felder angeben werden.

Benutzerdefinierte Reihenfolge (vertauschen der Position zweier Einträge):       <a href="dynamo.pl?action=swap&a=[position A]&b=[position B]&list=[listname]&template=[template]"> .

Listen von Listen

Untergeordnete Listen heissen so wie das Feld heisst (siehe Beschreibung Datenbank) und sind im Verzeichnis gleichen Namens wie die Mutterliste platziert, d.h. [listname]/. In diesem Verzeichnis muss man bereits eine Datei [feldname].txt anlegen, die als (meistens leere) Vorlage und Definition für die neuen Listen verwendet wird. Die automatisch erzeugten Listen sind also [listname]/[feldname][nummer].
Das Feld [feldname] selber hat diese Listennamen als Wert, wird aber als normale Liste behandelt, d.h. dieselben Anzeige-Varianten ({for each...} etc.) können auch problemlos für solche Felder verwendet werden.
Die Felder können aber auch für eine direkte Verlinkung benützt werden: <a href="dynamo.pl?list={[varname].[feldname]}&template=[template]"> Eine Template gleich für alle automatischen Listen eine Typs lässt sich wie folgt schreiben: man verwendet darin einfach den 'generischen' Listennamen [listname]/[feldname] (ohne [nummer])

 



Zurück zur Übersicht