Bei den NPSOBJ-Anweisungen insertvalue
meta
und var
können Sie das CMS während des Exports eine Tcl-Prozedur ausführen lassen, um das Ergebnis der NPSOBJ-Anweisung zu modifizieren, bevor es in das Ausgabedokument eingefügt wird. Eine solche Tcl-Prozedur wird Formatter genannt.
Der anzuwendende Formatter kann mit einem formatter
-Tag in der NPSOBJ-Anweisung spezifiziert werden. Beispiel:
<npsobj insertvalue="var" name="title" formatter="formatter_procedure_alias" />
Auch bei insertvalue
dynamiclink
kann ein Formatter angegeben werden. Link-Formatter sind jedoch ein spezieller Formatter-Typ, weil ihnen andere Argumente übergeben werden als den Standard-Formattern (letztere werden normalerweise auf Feldwerte angewendet).
Die Standard-Formatter befinden sich im Verzeichnis share/script/cm/serverCmds
. Sie müssen im Systemkonfigurationseintrag export
.tclFormatterCommands
registriert worden sein, bevor sie verwendet werden können.
Die Prozedur, deren Alias formatter_procedure_alias
ist, wird aufgerufen, wenn die NPSOBJ-Anweisung ausgewertet wird. Die Anweisung wird durch den Rückgabewert der Prozedur ersetzt.
Definition der Formatter-Prozedur
Eine Standard-Formatter-Prozedur wird folgendermaßen definiert (die Standard-Formatter befinden sich erst ab Version 6.7.1 im Namensraum formatter
):
namespace eval ::formatter {
proc meinFormatter {value type params} {
return "meinFormatter wurde mit dem Wert $value, dem Typ $type\
und den Parametern $params aufgerufen ."
}
}
Das CMS übergibt der Prozedur die folgenden Argumente in der angegebenen Reihenfolge:
Das erste Argument, value
, ist der Wert des
durch name
referenzierten Feldes; enthält die
NPSOBJ-Anweisung auch das Tag-Attribut format
oder
separator
, so wird der formatierte Wert
verwendet.
Als zweites Argument, type
, wird der Typ des
Wertes übergeben. Hier gilt:
children
oder superlinks
,
aber auch bei parent
usw.), ist der Typ
list
.npsobj modifyVar
zugewiesen
worden, ist der Typ html
.link
.date
.string
.Das dritte Argument, params
, ist eine Liste mit
allen anderen Tag-Attributen und ihren Werten (einschließlich
name
, jedoch ohne insertvalue
,
formatter
, format
und
separator
); die Liste enthält paarweise die
Tag-Attribut-Namen mit ihren jeweiligen Werten.
CMS Fiona wird mit den im Folgenden beschriebenen Formatter-Prozeduren ausgeliefert. Es sind hier die Alias-Namen aufgeführt, die in der NPSOBJ-Anweisung als Wert des formatter
-Attributs angegeben werden können.
Aufgabe
Formatiert Dateigrößen menschenlesbar. Das Ergebnis ist eine möglichst kleine Zahl (<1000), die mit der entsprechenden Maßeinheit (KByte, MByte etc.) versehen ist.
Parameter (ab Version 6.7.1)
useBinaryPrefix
: Ein Wahrheitswert (true
oder false
), mit dem die Art des Präfixes für die Maßeinheit bestimmt wird. Ist dieser Wert wahr (true
), wird die Dateigröße (Bytes) durch 1024 geteilt und es werden binäre Präfixe verwendet (Ki
, Mi
, Gi
, Ti
). Ist der Wert false
oder nicht angegeben, ist der Divisor 1000 und es werden SI-Präfixe verwendet (K
, M
, G
, T
).
maxSteps
: Gibt die Anzahl der maximal durchgeführten Divisionen an. Wird hier beispielsweise 2
angegeben, werden auch Werte von mehr als 1000 (bzw. 1024) M(i)Bytes weiterhin als M(i)Byte angezeigt. Der Standardwert ist 2
.
precision
: Gibt die Anzahl der Nachkommastellen an. Der Standardwert ist 0
.
separators
: Gibt die Zeichen an, die als 1000er-Trennzeichen und Dezimalpunkt verwendet werden sollen (in dieser Reihenfolge). Wird nur ein Trennzeichen angegeben, wird es als Zeichen für den Dezimalpunkt verwendet, und es werden keine 1000er-Trennzeichen eingefügt. Der Standardwert ist ’.
’.
Beispiele
<npsobj … formatter="formatBlobLength"/>
Diese NPSOBJ-Anweisung erzeugt aus dem ermittelten Wert 12345678
die Ausgabe 12 MByte
.
Das folgende Beispiel erzeugt aus dem ermittelten Wert 12345678
die Ausgabe 12.056,3 KiByte
.
<npsobj … formatter="formatBlobLength" useBinaryPrefix="true" maxSteps="1" precision="1" separators=".,"/>
Aufgabe
Erzeugt eine PHP-Variablendefinition, mit der PHP-Variablen auf Werte gesetzt werden können, die während des Exports berechnet wurden.
Parameter
name
: Der Name des Feldes, dessen Wert ermittelt werden soll. Dieser Name wird zugleich als Variablenname in der erzeugten PHP-Zuweisung verwendet.Beispiel
<npsobj insertvalue="var" name="title" formatter="phpVarDef" />
Mit der obigen Anweisung wird die Variablendefinition <?php $title = "
Dokumenttitel
"; ?>
erzeugt.
Aufgabe
Formatiert ein Datum nach RFC-822. Dieses Standardformat wird beispielsweise in RSS-Feeds verwendet.
Parameter (ab Version 6.7.1)
withSeconds
: Ein Wahrheitswert (yes
oder no
), der bestimmt, ob die Sekunden mit ausgegeben werden. Die Standardeinstellung ist no
. Da der Standard ein sekundengenaues Format fordert, werden die Sekunden mit 00
angegeben, wenn dieser Wert no
ist.
withTwoDigitYear
: Ein Wahrheitswert (yes
oder no
), der bestimmt, ob die Jahreszahl zwei- statt vierstellig ausgegeben werden soll. Die Standardeinstellung ist no
.
Beispiele
<npsobj … formatter="formatToRFC822"/>
Diese Anweisung erzeugt ein Datum der Form 15 Apr 2011 14:36:00 GMT
.
Die folgende Anweisung erzeugt ein Datum der Form 15 Apr 11 14:36:23 GMT
.
<npsobj … formatter="formatToRFC822" withSeconds="yes" withTwoDigitYear="yes"/>
Aufgabe
Wandelt die HTML-Entitäten <
, >
, "
und &
in ihre Textform <
, >
, "
und &
um.
Parameter
Dieser Formatter hat keine Parameter.
Beispiel
<npsobj … formatter="dehtmlize"/>
Die obige Anweisung konvertiert den Eingabewert <div>Groß & "klein"</div>
zu <div>Groß & "klein"</div>
.