Filter
Um mittels Code einfacher zu filtern, gibt es die Hilfsklasse Records (siehe Beschreibung).
Filter können z.B. in Zusammenhang mit bx:containerfilter oder Container-Filteraction verwendet werden, um bestimmte Datensätze anzuzeigen.
Aufbau eines Filters
Filter werden in XML angegeben. Der grundlegende Aufbau ist folgender:
<filter>
<filter-object>
...
</filter-object>
<filter-object>
...
</filter-object>
<order/> <!-- ab Version 2.5.7 -->
<limit/> <!-- ab Version 2.5.7 -->
<status/> <!-- ab Version 2.6.1 -->
</filter>
Eine Mehrfachverwendung von "filter-object" bewirkt eine UND-Verknüpfung dieser Objekte.
Objekte
Ein "filter-object" ist folgendermaßen aufgebaut:
<filter-object [required="true"]>
<field>...</field>
<field>...</field>
<type>...</type>
[
<request-value>...</request-value>
|<static-value>...</static-value>
|<special-value>...</special-value>
|<request-attribute>...</request-attribute>
|<session-attribute>...</session-attribute>
]
</filter-object>
Eine Mehrfachverwendung von "field" bewirkt eine ODER-Verknüpfung der Felder. Die optionale Angabe von required="true" bewirkt, dass ein Wert, der zum Vergleichen übergeben wird (z.B. bei "request-value") auch vorhanden sein muss, d.h. wenn nichts übergeben wird, wird die Bedingung auch nicht erfüllt.
field
Der Name des zu überprüfenden Feldes wird angegeben. Falls das Feld eine Verknüpfung darstellt (Untercontainer, Einzelverknüpfung, Mehrfachverknüpfung), kann auch der Wert eines Feldes der Verknüpfung abgefragt werden, dazu einfach das gesuchte Unter-Feld mit einem Schrägstrich anfügen.
<field>feldname</field>
<field>feldname/unterfeld</field> <!-- Untercontainerfeld -->
type
Hier wird die Art des Vergleiches angegeben. Je nach Typ des Feldes, das geprüft wird, sind verschiedene Vergleiche möglich. Diese sind der folgenden Tabelle zu entnehmen. Verglichen wird dabei der Feldwert mit dem Testwert, so ließt sich z.B. die erste Zeile der Tabelle "Feldwert enthält Testwert" oder die Zeile bei Bildern/Dokumenten "Feldwert ist leer".
| Feld-Typ | Type |
Art des Vergleiches: Feldwert ... [Testwert] |
|---|---|---|
| einzeiliger oder mehrzeiliger Text | 1 | enthält |
| 2 | beginnt mit | |
| 3 | endet mit | |
| 4 | ist gleich | |
| 5 | ist leer (Feld soll leer sein: static-value: 1, Feld soll nicht leer sein: static-value: 0) | |
| 6 | Mustervergleich (Regex) | |
| 7 | enthält eines der Wörter von (Wörter durch Leerzeichen oder Kommas trennen, findet auch Teilstrings) |
|
| 8 | ist eines der Wörter von (Wörter durch Leerzeichen oder Kommas trennen, nur ganze Wörter) |
|
| 9 | enthält alle Wörter (Wörter durch Leerzeichen oder Kommas trennen) |
|
| 11 - 19 | leer ODER Bedingung Bedingung auch erfüllen, falls Feld leer ist (außer für type 5) z.B.: type 14 für "ist gleich oder leer" |
|
| 21 - 29 | NICHT-Bedingung kehrt die Bedingung um (außer für type 5) z.B.: type 23 für "endet nicht mit" |
|
| 31 - 39 | leer ODER NICHT-Bedingung Kombination von 11 - 19 und 21 - 29 z.B.: type 32 für "beginnt nicht mit oder ist leer" |
|
| Datum mit oder ohne Zeit | 1 | Feld ist größer (neuer) als übergebener Wert |
| 2 | Feld ist kleiner (älter) als übergebener Wert | |
| 3 | ist gleich (Uhrzeit wird ignoriert) | |
| 4 | ist ungleich (Uhrzeit wird ignoriert) | |
| 5 | ist leer (Feld soll leer sein: static-value: 1, Feld soll nicht leer sein: static-value: 0) | |
| 6 | ist im Jahr (vierstellig angeben) | |
| 7 | ist im Monat (gültige Werte: 1-12) | |
| 8 | ist am Tag (gültige Werte: 1-31) | |
| 11 | Feld ist größer oder gleich als übergebener Wert | |
| 12 | Feld ist kleiner oder gleich als übergebener Wert | |
| 21 | Feld ist leer oder größer/gleich als übergebener Wert | |
| 22 | Feld ist leer oder kleiner/gleich als übergebener Wert | |
| 31 | Feld ist größer/gleich als heute + Testwert Tage | |
| 32 | Feld ist kleiner/gleich als heute + Testwert Tage | |
| nur (Uhr)Zeit | 1 | Feld ist größer (später) |
| 2 | Feld ist kleiner (früher) | |
| 3 | Feld ist gleich | |
| 4 | Feld ist ungleich | |
| 11 | Feld ist größer/gleich | |
| 12 | Feld ist kleiner/gleich | |
| 21 | Feld ist leer oder größer/gleich | |
| 22 | Feld ist leer oder kleiner/gleich | |
| 6 | Feld ist in Stunde (0-23) | |
| 7 | Feld ist in Minute (0-59) | |
| 8 | Feld ist in Sekunde (0-59) | |
| 5 | Feld ist leer (Feld soll leer sein: static-value: 1, Feld soll nicht leer sein: static-value: 0) | |
| Zahl oder Preis | 1 | Feld ist größer gleich als übergebener Wert |
| 2 | Feld ist kleiner gleich als übergebener Wert | |
| 11 | Feld größer als übergebener Wert | |
| 12 | Feld kleiner als übergebener Wert | |
| 3 | ist gleich | |
| 4 | ist ungleich | |
| 5 | ist leer (Feld soll leer sein: static-value: 1, Feld soll nicht leer sein: static-value: 0) | |
| 21 - 24 | leer ODER Bedingung (1 bis 4) | |
| 31 - 32 | leer ODER Bedingung (11 und 12) | |
| Wahrheitswert (Boolean) | 4 | ist angehakt/gesetzt |
| 5 | ist leer (null) | |
| Bild | 1 | bestimmte ID ist verknüpft |
| 4 | nicht-gelöschtes Bild ist verknüpft (ab v2.6.2) | |
| 5 | ist leer (Feld soll leer sein: static-value: 1, Feld soll nicht leer sein: static-value: 0) | |
| Dokument | 5 | ist leer |
| 8 | bestimmte ID ist verknüpft | |
| Kartenkoordinaten | 21 | x ist gleich |
| 26 | y ist gleich | |
| 5 | ist leer (Feld soll leer sein: static-value: 1, Feld soll nicht leer sein: static-value: 0) | |
| Einzelverknüpfung | 8 | Datensatz-ID ist gleich |
| 10 | Datensatz-ID ist ungleich Bei mehreren IDs, Filter mehrmals verwenden. |
|
| 9 | Datenlisten-ID ist gleich (nur bei alten Containern) | |
| 12 | enthält eine der Datensatz-IDs von (IDs durch Leerzeichen, Komma oder Semikolon trennen) |
|
| 5 | ist leer (Feld soll leer sein: static-value: 1, Feld soll nicht leer sein: static-value: 0) | |
| 4 | ist verknüpft (ab 2.6.2) | |
| 3 | ist aktiviert (ab 2.6.2) | |
| Mehrfachverknüpfung | 8 | enthält Datensatz-ID |
| 10 | enthält Datensatz-ID nicht (ab v2.6.2) | |
| 12 | enthält eine der Datensatz-IDs von (IDs durch Leerzeichen, Komma oder Semikolon trennen) |
|
| 14 | enthält alle der angegebenen IDs | |
| 5 | ist leer (Feld soll leer sein: static-value: 1, Feld soll nicht leer sein: static-value: 0) | |
| Untercontainer | 5 | ist leer (Feld soll leer sein: static-value: 1, Feld soll nicht leer sein: static-value: 0) |
value
Der gesuchte Wert kann auf unterschiedliche Weise übergeben werden. Für <value>...</value> können die folgenden Abfragen eingesetzt werden.
request-value
Der Vergleich findet mit dem Wert eines Request-Parameters statt.
<request-value>Request-Parameter-Name</request-value>
request-attribute
Der Vergleich findet mit dem Wert eines Request-Attributes statt.
<request-attribute>Request-Attribut-Name</request-attribute>
session-attribute
Ein Session-Attribut wird mit dem Feld verglichen.
<session-attribute>Session-Attribut-Name</session-attribute>
static-value
Der Wert zum Vergleichen wird direkt übergeben.
<static-value>gesuchter Wert</static-value>
special-value
Es wird ein spezieller Wert zum Vergleich herangezogen.
| TODAY | Es wird mit dem heutigen Datum im Format dd.MM.yyyy verglichen. Um Tage dazu zu addieren (oder abzuziehen) kann das Attribut days verwendet werden (ganze Zahl, die auch negativ sein kann).<special-value [days="n"]>TODAY</special-value> |
| NOW | Es wird mit der aktuellen Zeit im Format dd.MM.yyyy mm:HH verglichen. Um Tage, Stunden oder Minuten dazu zu addieren (oder abzuziehen) können die Attribute days, hours oder minutes verwendet werden (ganze Zahl, die auch negativ sein kann).<special-value [days="n"] [hours="n"] [minutes="n"]>NOW</special-value> |
| USERID | Es wird mit der UserID des aktuellen (eingeloggten) Betrachters verglichen.<special-value>USERID</special-value> |
| SESSIONID | Die aktuelle SessionID wird abgeglichen.<special-value>SESSIONID</special-value> |
| USERGROUPS | Dieser Spezialwert erzeugt eine Zeichenkette, welche die ID des Users sowie die IDs der Gruppen, denen er angehört, enthält (jeweils durch Leerzeichen getrennt).<special-value>USERGROUPS</special-value> |
| PARENTCONTAINER | Es wird mit der ID des übergeordneten Containers verglichen.<special-value>PARENTCONTAINER</special-value> |
clipboard-value
Es wird ein spezieller Clipboard-Wert zum Vergleich herangezogen.
system-value
Es wird der Wert einer Systemvariablen zum Vergleich herangezogen. Die Systemvariable wird unter "Systemeinstellungen" angelegt und gespeichert.