PropertyContainer

Der PropertyContainer ist prinzipiell ein Container der eine oder mehrere Eigenschaften beinhaltet. PropertyContainer werden in SetaSite für Page-, User- und Blockobjekte  verwendet.

Die Konfiguration für alle Properties ist sehr ähnlich:

  • type -> Typ welche Property verwendet werden soll
  • value -> Standardwert
  • editable -> Standardmäßig 1; Falls 0 kann das Feld nicht bearbeitet werden. 
  • config.position -> Sortierung in GUI (Zahl)
  • config.group -> Name der Gruppe (mehr dazu unter Group)
  • config.displayName -> Anzeigename MultiLangString
  • config.onlyOnPage -> Property existiert nur für normale Seiten (nicht für Templateseiten)
  • config.onlyOnTemplate -> Property existiert nur für Templateseiten (nicht für normale Seiten)
  • validate -> Validierung vom Feld (vom Typ abhängig)

Boolean

Stellt ein boolschen Wert dar.

Integer

Stellt einen Integer Wert dar.

  • validate.min -> Wert muss mindestens diesem Wert entsprechen
  • validate.max -> Wert darf höchstens diesem Wert entsprechen
  • validate.empty -> Wenn 1 darf der Wert leer sein

Float

Stellt einen Float Wert.

Die verfügbaren Validatoren sind die gleichen wie bei Integer. 

  • config.precision -> Anzahl der Kommastellen; Standard ist 2 

String

Stellt einen einzeiligen Text dar.

  • validate.minLength -> Der Wert muss mindestens dieser Länge entsprechen
  • validate.maxLength -> Der Wert darf höchstens dieser Länge entsprechen
  • validate.empty -> Wenn 1 darf der Wert leer sein
  • validate.symbols -> Alle erlaubten Zeichen
  • validate.regex -> Der Wert muss auf diesen Regex matchen (Zusätzlich gibt es hierfür noch zwei Konfigurationen "regexModifier" und "regexMessage". Der Delimiter darf nicht angegeben werden. Der verwendete Delimiter ist "/")

Text

Stellt einen mehrzeiligen Text darf.

Verwendet die gleichen Validatoren wie String.

Besitzt zusätzlich noch folgende Konfiguration:

  • config.language -> Programmiersprache - unterstützte Werte sind:  'css', 'htmlembedded', 'htmlmixed', 'javascript', 'markdown', 'smarty', 'twig', 'sql', 'php', xml' 

Html

Stellt einen Html Text dar.

Unterstützt die gleichen Validatoren wie String. 

Es werden zusätzlich folgende Konfigurationen erlaubt:

  • config.cssDir -> Falls angegeben wird in der GUI im HTML Editor versucht aus diesem Ordner eine .css Datei zu laden mit dem Namen vom verwendeten Platzhalter. Konfigurationsbeispiel: _resource/block/$HASH$/styles/
    Notiz: AbstractBlock::PROVIDED_FILES muss überschrieben werden!
  • config.additionalHeadData -> Falls angegeben wird in der GUI diese Zeile in den html>head Teil geschrieben 
  • config.cssClasses.NAME-DER-CSS-KLASSE -> MultiLangString - Fügt der GUI ein Menü mit hinzufügbaren CSS-Klassen hinzu
  • config.enableCodeFormat  -> Falls 1 wird die Inline "<code>" Formatierung ermöglicht. Standardmäßig 0 
  • config.disableComputedStyles -> Falls 1 wird nicht versucht das verwendete Styling vom Block im Html-Editor anzuzeigen
  • config.computedStylesContainerSelector -> Falls die Html Property innerhalb eines Html-Containers im Block ausgegeben wird sollte ein CSS Selektor auf diesen Container gemacht werden.
  • config.replacements.NAME-DER-ERSETZUNG -> MultiLangString - Fügt Ersetzungsblock als Vorschlag der GUI hinzu. Die Ersetzung muss der HTML-Property noch "manuell" mitgegeben werden über Html::setReplacements() oder ::setReplacementCallback() 

 <a>-Tags und <img>-Tags mit Links die mit "setasite://" anfangen werden vom LinkHelper umgeschrieben.

Date

Stellt ein Datumsfeld dar. 

  • validate.empty -> Wenn 1 darf der Wert leer sein
  • validate.start_date -> Das Datum darf nicht vor diesem Datum sein.
  • validate.end_date -> Das Datum darf nicht nach diesem Datum sein.

DateTime

Stellt ein DateTime Feld dar.

  • validate.empty -> Wenn 1 darf der Wert leer sein
  • validate.start_datetime -> Das Datum darf nicht vor diesem Datum sein.
  • validate.end_datetime -> Das Datum darf nicht nach diesem Datum sein.

Select

Stellt ein Select-Feld dar.

  • config.options.{PROPERTY-NAME} -> Eine wählbare Option im Select. Gespeichert wird der PropertyName und nicht der Text. MultiLangString

Link

Stellt einen Link zu einer Webseite oder Ressource dar.

  • validate.empty -> Falls 1 darf der Wert leer sein
  • validate.onlyInternal -> Es darf nur noch auf interne SetaSite Seiten verlinkt werden

Falls auf eine externe Ressource ausserhalb von SetaSite verlinkt werden soll, muss der komplette Pfad inkls. Protokoll angegeben werden.

Template

Zeigt auf eine Template-Datei oder auf eine Template-Seite.

  •  validate.empty -> Wenn 1 darf der Wert leer sein

Password

Stellt ein Passwort-Feld darf.

File

Ein Textfeld das auf eine Datei im SetaSite-Dateisystem zeigt.

  • validate.empty -> Wenn 1 darf der Wert leer sein
  • validate.allowedExtensions -> eine kommaseparierte Liste mit erlaubten Dateiendungen
  • validate.forbidDirectories -> Falls 1 ist es nur erlaubt Dateien auszuwählen
  • valdiate.forbidFiles -> Falls 1 ist es nur erlaubt Ordner auszuwählen

Group

Ermöglicht es eine Gruppierung der Properties in der GUI einzubauen. Group ist momentan die einzige Property die nicht in der Datenbank gespeichert wird. 

Jede Property hat die Konfiguration "config.group", der Wert hiervon muss mit dem Namen der entsprechenden Group-Property übereinstimmen. Gruppen können auch verschachtelt werden. Hierfür muss die Group-Property lediglich selber einen "config.group" Eintrag haben.

BooleanGroup

BooleanGroup verhält sich wie Group. Nur dass zusätzlich noch ein boolscher Wert gespeichert wird. Das Boolsche Feld wird innerhalb des Headers der Gruppierung angezeigt.

Custom

Das Custom-Feld ist relativ speziell. Es ist prinzipiell einfach nur ein Blob der serialisiert wird und nicht weiter validiert wird. Der Verhalten von dem Custom-Feld wird komplett von "config.editor" bestimmt.

Es gibt momentan folgende Custom-Editor:

CustomProperties

Ein verschachtelter PropertyContainer dem zur Laufzeit jederzeit neue Properties hinzugefügt werden können.

HashMap

Eine Assoziative Liste (HashMap) die auf GUI Seite ein zweispaltige Tabelle anzeigt mit den Spalten "key" und "value".