bx:tools
Das Tag tools vereint kleine Hilfen, um häufig auftretende Aufgaben zu vereinfachen.
Hilfsmittel für Requestparameter
tools.request
<bx:tools.request name="{param}" />
<bx:tools.request name="{param}" [value="{text}"] [not]> Inhalt </bx:tools.request>
Es wird ein Request-Parameter ausgegeben oder dieser ausgewertet.
Die erste Form gibt den Inhalt von <param> aus, falls vorhanden.
In der zweiten Form wird der Tag-Inhalt nur ausgegeben, wenn der Request-Parameter existiert, oder, falls zusätzlich "value" angegeben ist, einen bestimmten Wert enthält. Die Bedingung ist mit not umkehrbar.
Eine vergleichbare Funktion beinhaltet bx:pagedata.
tools.listrequest
<bx:tools.listrequest [include="{filter}" | exclude="{filter}"] />
Alle Parameter aus dem Request werden als Formularfelder vom Typ "hidden" in die Seite geschrieben. Falls nur bestimmte Request-Parameter ausgegeben (include) oder bestimmte Parameter ausgeschlossen (exclude) werden sollen, können diese als Komma-getrennte Liste angegeben werden (z.B.: include="artikelID,kundenID").
tools.querystring
<bx:tools.querystring [include="{filter}" | exclude="{filter}"] />
Diese Funktion wandelt alle Request-Parameter in einen QueryString um. Falls nur bestimmte Request-Parameter umgewandelt (include) oder bestimmte Parameter ausgeschlossen (exclude) werden sollen, können diese als Komma-getrennte Liste angegeben werden (z.B.: exclude="counter,index").
Kodierung (Encodings)
tools.htmlencode
<bx:tools.htmlencode> Inhalt </bx:tools.htmlencode>
Der Tag-Inhalt wird HTML-kodiert. Wenn man nur < > & " encoden möchte, muß man <bx:tools.xmlencode> nehmen.
Es werden folgende Ersetzungen vorgenommen:
| Originalwert | ausgegebener Wert |
|---|---|
| < | < |
| > | > |
| " | " |
| & | & |
| ' | ' |
| äöüÄÖÜß§€, deutsche Anführungszeichen unten und oben und langen Bindestrich |
|
| alles ab ASCII-Code 128 |
zu "&#[code];" |
tools.urlencode
<bx:tools.urlencode [charset="{set}"]> Inhalt </bx:tools.urlencode>
Es wird eine URL-Kodierung des Tag-Inhalts vorgenommen.
Mit dem Parameter charset kann eine andere Zeichenkodierung angegeben werden (Standard ist "iso-8859-1"). Es wird java.net.URLEncoder benutzt.
tools.urlpathencode
<bx:tools.urlpathencode [charset="{set}"]> Inhalt </bx:tools.urlencode>
Zum Kodieren von Pfadbestandteilen (z. B. Dateiname). Führt ein URL-Encoding des Tag-Bodys aus. Mit dem Parameter 'charset' kann ein anderes Encoding angegeben werden (Standard=iso-8859-1). Zum encoden wird URLEncoder.encode(String, String) verwendet.
tools.entityencode
<bx:tools.entityencode> Inhalt </bx:tools.entityencode>
Es werden alle Zeichen mit einem ASCII-Code > 127 (0x80) in die Form &#nnn; gebracht, wobei nnn für den ASCII-Code in dezimaler Schreibweise steht. Ab v2.5.9 werden auch eventuelle Steuerzeichen (0x00-0x1F) entfernt.
tools.xmlencode
<bx:tools.xmlencode> Inhalt </bx:tools.xmlencode>
Dieses Tag führt zunächst ein .htmlencode aus und lässt das Ergebnis nochmals durch .entityencode laufen. * Ab v2.5.9 werden auch eventuelle Steuerzeichen (0x00-0x1F) entfernt.*
tools.removectrlchars
<![CDATA[<bx:tools.removectrlchars> Inhalt mit seltsamen Zeichen </bx:tools.removectrlchars>]]>
Dieses Tag entfernt eventuelle Steuerzeichen (0x00-0x1F, außer Tab und Zeilenumbruch). Das Ergebnis kann dann innerhalb eines CDATA-Blocks verwendet werden (ab Version 2.5.9).
tools.html2plain
<bx:tools.html2plain> Inhalt </bx:tools.html2plain>
Der Inhalt wird zunächst durch .htmlencode umgewandelt, danach werden folgende Ersetzungen vorgenommen:
| Originalwert | ausgegebener Wert | Originalwert | ausgegebener Wert | |
|---|---|---|---|---|
| \r | nichts | \n | Leerzeichen | |
| <br> | \r\n | <br /> | \r\n | |
| <BR> | \r\n | <p> | \r\n\r\n | |
<sonstige Tags> |
nichts | | Leerzeichen | |
| ü | ü | Ü | Ü | |
| ä | ä | Ä | Ä | |
| ö | ö | Ö | Ö | |
| ß | ß | " | " (gerade Anführungsz. oben) | |
| < | < | > | > | |
| & | & | „ | " (dopp. Anführungsz. unten) | |
| “ | " (dopp. Anführungsz.oben) | – | - (Breite n) | |
| … | ... | – | - (Breite n) | |
| € | € | ´ | ´ | |
| ’ | ' | § | § |
Zuletzt wird noch eventueller Whitespace am Anfang und Ende des Textes entfernt.
tools.plain2html
<bx:tools.plain2html> Inhalt </bx:tools.plain2html>
Wandelt den plain-Text im body in HTML-Code um, indem er HTML encoded wird und bei jeden Zeilenumbruch ein
oder
gesetzt wird
Wirkungsweise
<bx:tools.plain2html>Erste Zeile Zweite Zeile Dritte Zeile Vierte Zeile Fünfte Zeile</bx:tools.plain2html>
Wird zu
«Erste Zeile<br> Zweite Zeile<br> Dritte Zeile<br> Vierte Zeile<br> Fünfte Zeile»
tools.csvfield
<bx:tools.csvfield> Inhalt </bx:tools.csvfield>
Der Text wird mit " umgeben und allen " im Text wird ein zusätzliches " vorangestellt. (ab v2.5.9)
tools.scriptencode
<bx:tools.scriptencode> Inhalt </bx:tools.scriptencode>
Diese Funktion dient zum Encoden eines Textes, damit dieser direkt als String in JavaScript verwendet werden kann. (ab v2.5.9)
| Originalwert | ausgegebener Wert |
|---|---|
| \n | \\n |
| \r | \\r |
| " | \" |
| ' | \' |
| \t | \\t |
Zusätzlich wird jeder Backslash (), der nicht zum Escapen verwendet wird (also nicht vor folgenden Zeichen steht: n r t " ') verdoppelt.
tools.scripteventencode
<bx:tools.scripteventencode > Inhalt </bx:tools.scripteventencode >
Hier wird ein String so encoded, dass er direkt als Event-Code für ein HTML-Element festgelegt werden kann. (ab v2.5.9)
| Originalwert | ausgegebener Wert |
|---|---|
| \n | \\n |
| \r | \\r |
| & | & |
| " | " |
| ' | \' |
| \t | \\t |
| \ | \\ |
tools.umlautencode
<bx:tools.umlautencode > Inhalt </bx:tools.umlautencode >
Deutsche Umlaute werden hier in die Schreibweise mit normalen Buchstaben überführt. (ab v2.5.9)
| Originalwert | ausgegebener Wert |
|---|---|
| ß | ss |
| Ä | Ae |
| ä | ae |
| Ö | Oe |
| ö | oe |
| Ü | Ue |
| ü | ue |
tools.mysqlencode
<bx:tools.mysqlencode>Gasthaus 'Zur Tanne'</bx:tools.mysqlencode>
Escaped einige Zeichen, die für SQL-Injections verwendet werden könnten. (ab v2.5.9)
Beispiel im Quellcode: wird in Gasthaus \'Zur Tanne\' umgewandelt
tools.mysqlencodeall
... WHERE KEYWORDS LIKE '%<bx:tools.mysqlencodeall><bx:pagedata.request name="suche"></bx:tools.mysqlencodeall>%' ...
Escaped einige Zeichen, die für SQL-Injections verwendet werden könnten (auch % und _). (ab v2.5.9)
Dies ist zur Verwendung in einem SQL-LIKE-Befehl gedacht (siehe Quellcode)
Das %-Zeichen ist im LIKE ein Platzhalter für beliebig viele Zeichen. Ohne diesen Befehl würde z. B. im LIKE-Ausdruck WHERE Feld LIKE '100%' alles gefunden werden, das mit "100" beginnt.
Sonstige Tools
tools.lastmodified
<bx:tools.lastmodified [pattern="{format}"] />
Gibt Datum/Zeit der letzten Änderung des aktuellen Menüpunktes aus (Meta-Wert "dataPublished" oder "contentPublished").
Das Format der Ausgabe lässt sich über pattern steuern (Standard ist "dd.MM.yyyy HH:mm").
tools.positiontracker
<bx:tools.positiontracker [boundary="{text}"] [showall] [startlevel="{n}"] />
boundary
Text zwischen den einzelnen Ausgaben (Standard-Wert ist " >> ")
showall
auch inaktive Hauptmenüpunkte werden ausgegeben
startlevel
Angabe, wenn in einem anderen Level gestartet werden soll (Hauptmenü = Level 0)
Beispiele
<bx:tools.positiontracker boundary=" | " startlevel="1"/>
Ausgabe der Menüpunkte ab der 2. Ebene, Trenner ist ein Pipe-Zeichen zwischen zwei Leerzeiche.
tools.datum
<bx:tools.datum [show="{month-begin | month-end}" |
[year="{mod}"] [month|month1="{mod}"] [day="{mod}"] [hour="{mod}"] [minute="{mod}"] [second="{mod}"]]
[locale="{lang}"] [pattern="{format}"] />
Dieses Tag kann benutzt werden, um das aktuelle oder ein bestimmtes Datum auszugeben. Das Datum kann auch manipuliert werden (siehe bei bx:recordfield)
Achtung: Monate laufen von 0-11.
show
month-begin: 1. des aktuellen Monats (0.00.00) month-end: letzter des aktuellen Monats (23.59.59) ohne Angabe von show: jetzt
year, month, day, hour, minute, second
mit diesen Parametern kann ein Datum manipuliert werden n: das entsprechende Feld wird auf den Wert n gesetzt +n: das entsprechende Feld wird um den Wert n erhöht -n: das entsprechende Feld wird um den Wert n verringert
locale
Sprachformatierung (z.B. "de" oder "en_US")
locale sollte immer angegeben werden, da sonst die Standardeinstellung vom Server genutzt wird, die sich aber nach Updates oder Umzügen ändern kann.
month1
wie bei month, aber beginnt nicht bei 0 sondern bei 1, d.h. bei month1="1" wird Januar und nicht Februar ausgegeben
pattern
legt die Formatierung des Datums fest (Standard ist "dd.MM.yyyy")
Beispiele
<bx:tools.datum/> <-- "heute", z.B. 08.06.2014 -->
<bx:tools.datum pattern="d. MMM yy HH:mm:ss"/> <-- "jetzt" wird ausgegeben, z.B. 3. Feb 12 13:42:55 -->
<bx:tools.datum show="month-end" pattern="dd"/> <-- Tag des Monatsende vom aktuellen Monat, z.B. beim Aufruf im Februar: 28 -->
<bx:tools.datum lang="en_US"/> <-- Ausgabe von "heute" im US-Format, z.B. 2001-07-04 -->
xml
<bx:tools.datum month="+1" day="1"/> <-- nächster Monats-Erster -->
<bx:tools.datum month=+1 day=1 hour=-24"/> <-- Monatsletzter -->
<bx:tools.datum day="+7"/> <-- in einer Woche -->
<bx:tools.datum day="-1" hour="12" minute="0" second="0"/> <-- gestern Mittag -->
<bx:tools.datum year="-1" month="11" day="31"/> <-- Silvester letztes Jahr -->
tools.timeframe
<bx:tools.timeframe after="{zeit}" before="{zeit}" week="{bits}" [not] [now={...}]> Inhalt </bx:tools.timeframe>
Zeigt den Inhalt an, wenn die aktuelle Serverzeit in einem bestimmten Rahmen liegt. Wenn before kleiner als after ist, wird der Uhrzeitbereich außerhalb der Angaben verwendet (ab v2.6.8. - vorher wäre es nie ausgeführt worden, weil keine Uhrzeit vor 7 und nach 20 Uhr sein kann)
after
wird im 24h-Format angegeben (HH:mm)
before
wird im 24h-Format angegeben (HH:mm)
week
Angabe als eine sogenannte Bitmaske, d.h. jede Stelle steht für einen Tag. So steht z.B. "1111100" für nur werktags oder "1010100" für montags, mittwochs, freitags.
not
zur Umkehrung der Uhrzeitangaben. Es beeinflußt nur die Uhrzeit und nicht den Parameter week
now
Mit dem Parameter now kann man eine andere Uhrzeit testen, ohne bis zu dieser Uhrzeit warten zu müssen. (siehe Beispiel 3)
Beispiele
Beispiel 1
<bx:tools.timeframe after="06:00" before="18:00" week="1000000">Wir haben geöffnet.</bx:tools.timeframe>
Inhalt wird nur Montags von 6.00 bis 18.00 Uhr angezeigt.
Beispiel 2
<bx:tools.timeframe before="6:00" after="18:00">Wir haben geschlossen.</bx:tools.timeframe>
entspricht: <bx:tools.timeframe not before="18:00" after="6:00">
Beispiel 3
<bx:tools.timeframe after="22:00" now="7.3.2018 22:01">Bettruhe!!!</bx:tools.timeframe>
tools.for / tools.forchar
<bx:tools.for start="{n}" end="{n}" [inkrement="{n}"]> Inhalt </bx:tools.for> <!-- für Zahlen -->
<bx:tools.forchar start="{zeichen}" end="{n}"> Inhalt </bx:tools.forchar> <!-- für Buchstaben -->
Dieses Tag führt den Inhalt einer Schleife mehrfach aus und ersetzt jedesmal einen Platzhalter durch eine laufende Nummer. Im Inhalt des Tags können dann "{i}" und "{ii}" verwendet werden (ii = vorangestellte 0, wenn kleiner als 10)
start
Startet bei angegebener Zahl bzw. angegebenem Zeichen (z.B. a)
end
Endet bei angegebener Zahl bzw. angegebenem Zeichen (z.B. z)
inkrement
der Wert, um den erhöht werden soll (Standard: 1)
falls start > end ist, muss hier eine negative Zahl eingetragen werden!
Beispiele
<bx:clipboard.cut name="anzTage"><bx:tools.datum show="month-end" pattern="dd"/></bx:clipboard.cut>
<select>
<bx:tools.for start="1" end="clipboard:anzTage">
<option value="{ii}">{i}</option>
</bx:tools.for>
</select>
Die Tage des aktuellen Monats (Anzahl wurde vorher mit bx:tools.datum ermittelt und in einem Clipboard zwischengespeichert) werden in einem Drop-Down ausgegeben (value mit vorangestellter 0, wenn unter 10)
Ergebnisse finden beginnend mit:<br>
|
<bx:tools.forchar start="A" end="Z">
<a href="suche.act?init={i}">{i}</a>|
</bx:tools.forchar>
Es wurd eine verlinkte Buchstabenleiste mit den Großbuchstaben von "A" bis "Z" erzeugt.
tools.for-split
<bx:tools.for-split source="[Daten]" regex="[Trenner]" clipboard="[key]" attribute="[key]" placeholder="[Platzhalter]"> Auswertung mit [Platzhalter] </bx:tools.for-split>
Dieses Tag führt den Inhalt einer Schleife mehrfach aus und ersetzt jedesmal einen Platzhalter durch eine laufende Nummer. Im Inhalt des Tags können dann "{i}" und "{ii}" verwendet werden (ii = vorangestellte 0, wenn kleiner als 10)
source
Quelle
regex
Angabe des Trenners, z.B. Komma, Leerzeichen oder Semikolon
clipboard
Wert kann wird im Clipboard gespeichert
attribute
Wert kann wird im Request-Attribute gespeichert
placeholder
Es kann ein anderer Platzhalter definiert werden, ansonsten lautet der Platzhalter {i}
Beispiele
<bx:tools.for-split source="Hallo Welt" regex=" "> :{i}: </bx:tools.for-split>
ergibt " :Hallo: :Welt: "
<bx:clipboard.cut name="idliste">AAA,BBB,CCC</bx:clipboard.cut>
<bx:tools.for-split source="clipboard:idliste" regex="," clipboard="einzelneID">
<bx:record id="clipboard:einzelneID">
... <bx:recordfield...> ...
</bx:record>
</bx:tools.for-split>
tools.random
<bx:tools.random/> <-- zufälliger double-Wert zwischen 0 und 1, ca. 15 Nachkommastellen -->
<bx:tools.random max="{zahl}"/> <-- zufälliger int-Wert zwischen 0 und {zahl} -->
<bx:tools.random chance="{zahl}"> [Inhalt] </bx:tools.random> <-- zeigt den Inhalt mit der Wahrscheinlichkeit von {zahl} Prozent an (1≤{zahl}≤99) -->
Dieser Befehl zeigt eine Zufallszahl an bzw. zeigt einen Inhalt mit einer bestimmten Wahrscheinlichkeit an.
tools.randstring
<bx:tools.randstring [length={len}] [lower] [upper] [num] [alphanum] [extra] [extra2] [all] />
Dieser Befehl erzeugt einen zufälligen String aus bestimmten Charakter-Klassen. Dies ist z.B. für Passwortgenerierung nützlich.
Es muss mindestens eine Charakter-Klasse angegeben werden.
length
Länge des zu erzeugenden Strings (Standard 12 Zeichen)
lower
Kleinbuchstaben a-z
upper
Großbuchstaben A-Z
num
Ziffern 0-9
alphanum
lower + upper + num
extra
! ? - _ ( ) + * \ / | $ ~ # @
extra2
< > { } [ ] " § % & ' ^ ° ; . : =
all
alphanum + extra + extra2
Beispiele
<bx:tools.randstring length=10 alphanum/>
Es wird ein Paßwort mit 10 Zeichen erzeugt, das Groß- und Kleinbuchstaben sowie Zahl enthält.
tools.uuid
<bx:tools.uuid />
Hiermit wird eine zufällige UUID (Typ 4) erzeugt (z.B. f3910a2f-63cf-433b-8117-1ac0d22bb4f5).
tools.id
<bx:tools.id />
Dieses Tag erzeugt eine neue Batix-ID und gibt diese aus (z.B. 12E241E47CB).
Fehlersuche (Debugging)
tools.showrequest
<bx:tools.showrequest/>
Erzeugt eine Debug-Ausgabe des Request-Typs sowie sämtlicher Parameter, die im Request enthalten sind.
tools.duration
<bx:tools.duration save="{name}"/>
<bx:tools.duration show="{name"/>
Erzeugt eine Debug-Ausgabe der Bearbeitungszeit einer im Aufbau befindlichen Seite.
save
Anfang der Zeitmarke wird gesetzt Durch die Benennung sind mehrere Zeitmarken möglich
show
verstrichene Zeit seit save wird angezeigt (in Sekunden mit 3 Nachkommastellen) Weitere show-Tags liefern fortlaufende Messungen.
Beispiele
<html>
<head></head>
<body>
... Quelltext ...
<bx:tools.duration save="dauer1"/>
... komplizierte SQL ...
Verarbeitungsdauer SQL1: <bx:tools.duration show="dauer1"/>
<bx:tools.duration save="dauer2"/>
... zu vergleichende SQL ...
Verarbeitungsdauer SQL2: <bx:tools.duration show="dauer2"/>
... Quelltext ...
</body>
</html>
Für beide SQL-Aufrufe wird die Ausführungszeit gemessen und ausgegeben - ein direkter Vergleich ist möglich.
tools.log
<bx:tools.log level="{stufe}" [copy]>zu loggender Text</bx:tools.log>
Schreibt den Inhalt in die Logdatei, anstatt in die Seite.
level
Logstufe error, warn, info oder debug
Standard: info
copy
Text soll auch auf der Seite angezeigt werden
Beispiele
<bx:tools.duration save="dauer"/>
... aufwändige Filterungen ...
<bx:tools.log>Verarbeitungsdauer: <bx:tools.duration show="dauer"/></bx:tools.log>
Die Zeit, die die "aufwändige Filterung" braucht, wird in die Log-Datei geschrieben
Zeichenketten-Funktionen
tools.replacetext
Ersetzen-Modus
<bx:tools.replacetext regex="<ausdruck>" replacement="<text>"> Inhalt </bx:tools.replacetext>
Es wird nach bestimmten Ausdrücken im Tag-Inhalt gesucht und diese werden durch den gewünschten Text ersetzt. Es wird die Java-Methode String.replaceAll verwendet, dadurch ergeben sich vielfältige Möglichkeiten.
regex
regulärer Ausdruck, nach dem im Text gesucht werden soll
replacement
Ersetzungs-Text
Beispiele
<bx:tools.replacetext regex="World" replacement="Batix">Hello, World!</bx:tools.replacetext>
Hier wird aus "Hello, World!" der Text "Hello, Batix!"
<bx:tools.replacetext regex="(.+?),(.+?),(.+?)" replacement="Wert 2=$2; Wert 1=$1; Wert 3=$3">
Alice,123,ABC
</bx:tools.replacetext>
Umwandeln von CSV-Daten: Das Ergebnis wäre hier der Text "Wert 2=123; Wert 1=Alice; Wert 3=ABC".
<bx:clipboard.cut name="temp"><a href="$1">$1<a></bx:clipboard.cut>
<bx:tools.replacetext regex="(http://[^\ ]+)" replacement="clipboard:temp">
Einen Text mit http://einer.url/zu/einem Text mit einem Link machen.
</bx:tools.replacetext>
Um in einen Text mit einer URL einen Link um die URL einzufügen: Das bx:clipboard wird benötigt, weil im replacement-Parameter die Zeichen ", < und > nicht verwendet werden können. ab v2.5.9
*Allgemeine Hilfe und Beispiele zu regulären Ausdrücken gibt es u.a. auf http://www.regular-expressions.info (englisch). *
Schleifen-Modus
<bx:tools.replacetext regex="<ausdruck>" source="<quelle>">
Inhalt
</bx:tools.replacetext>
Durch die Angabe von source schaltet das Tag in den Schleifen-Modus. Hierbei wird der Tag-Inhalt für jeden Match ausgeführt. Ausgaben, die im Tag-Inhalt erfolgen werden ignoriert (stattdessen kann ein Clipboard geschrieben werden, um den Match zu modifizieren). Es werden Informationen (Match-Index, Match-Gruppen) über Clipboards bereitgestellt, der gematchte Text kann so auch ersetzt / verändert werden.
Folgende Clipboards werden pro Durchlauf gesetzt:
| Clipboard-Name | Beschreibung |
|---|---|
| replacetext_match | Der komplette gematchte String. In dieses Clipboard kann im Tag-Inhalt auch geschrieben werden, die gematchte Textstelle wird nach jedem Durchlauf mit dem Inhalt dieses Clipboards ersetzt. |
| replacetext_index | Laufende Nummerierung der Matches, beginnend bei Null. Im ersten Durchlauf steht also "0" im Clipboard, danach "1", usw.. |
replacetext_group_<n> |
<n> ist eine ZahlFür jede Gruppe des Regexes (mit runden Klammern umschlossen) werden die gematchten Textstellen pro Durchlauf in nummerierte Clipboards gepackt, wobei - wie bei Regex üblich - replacetext_group_0 noch mal den kompletten Match enthält, replacetext_group_1 die erste Gruppe, replacetext_group_2 die zweite usw.. |
Man kann sich den Tag-Inhalt wie eine Funktion vorstellen, die pro Match aufgerufen wird: Parameter werden über die Clipboards übergeben, der Rückgabewert läuft auch über ein Clipboard (replacetext_match).
Beispiele
Batix Quelltext:
<bx:clipboard.cut name="zutaten" trim>
300#g#Mehl
5##Eier
150#ml#Milch
</bx:clipboard.cut>
<bx:tools.replacetext regex="(\d+)#([^#]+)?#(.*)" source="clipboard:zutaten">
1 = Anzahl
2 = Einheit
3 = Zutat
<bx:clipboard.cut name="replacetext_match">
Zutat <bx:clipboard.paste name="replacetext_index" />:
<bx:clipboard.paste name="replacetext_group_3" />
(<bx:clipboard.paste name="replacetext_group_1" />
<bx:clipboard.paste name="replacetext_group_2" />)
<br>
</bx:clipboard.cut>
</bx:tools.replacetext>
Ausgabe:
Zutat 0: Mehl (300 g)
Zutat 1: Eier (5 )
Zutat 2: Milch (150 ml)
Erkärung:
- Der zu durchsuchende Text wird in das Clipboard "zutaten" geschrieben, welches als
sourceanreplacetextübergeben wird. - Der Regex lautet:
(\d+)#([^#]+)?#(.*)- Gruppe:
\d+(nur Ziffern) [^#]+(alles außer #).*(egal was)
- Gruppe:
- Beispielhaft die Clipboards im ersten Durchlauf:
| replacetext_match | 300#g#Mehl |
| replacetext_index | 0 |
| replacetext_group_0 | 300#g#Mehl |
| replacetext_group_1 | 300 |
| replacetext_group_2 | g |
| replacetext_group_3 | Mehl |
- Nach dem Durchlauf wird in das Clipboard "replacetext_match" zurückgeschrieben, was die Zeile im Original ersetzt.
- Hinweis: Da die zweite Gruppe mit einem Fragezeichen quantifiziert ist, ist sie optional. Im zweiten Durchlauf (die 5 Eier) ist das Clipboard "replacetext_group_2" also leer.
tools.uppercase
<bx:tools.uppercase> bring mich gross raus </bx:tools.uppercase>
Wandelt alle Buchstaben im Body in Großbuchstaben um und gibt diese aus.
tools.lowercase
<bx:tools.lowercase> jetzt werd ich ganz klein </bx:tools.lowercase>
Wandelt alle Buchstaben im Body in Kleinbuchstaben um und gibt diese aus.
tools.substring
<bx:tools.substring maxlength="{Zahl}" [startindex="{Zahl}"] [fillbefore="{ein Zeichen}" | fillafter="{ein Zeichen}"]>
Schneidet aus dem übergebenen Tagbody den durch Indexpositionen angegebenen Bereich heraus und gibt nur diesen zurück.
maxlength
muß mindestens 1 sein
startindex
Stelle, ab wann der Substring herausgelöst werden soll (startet mit 0) Standard: 0 (bei Fehlen des Parameters)
fillbefore, fillafter
optionales Füllzeichen (keine Entity)
wenn Text kürzer ist als bei maxlength angegeben, wird er mit dem angegeben Zeichen aufgefüllt
Beispiele
<bx:tools.substring maxlength="5" startindex="6">Hello World</bx:tools.substring>
Gibt "World" aus
<bx:tools.substring maxlength="5" fillbefore="0">7318</bx:tools.substring>
gibt "07318" aus (wenn z. B. PLZ als Zahl gespeichert ist und demzufolge nur 4 Ziffern hat)
bx:tools.trim
<bx:tools.trim [lines] [spaces] [single-line]> Inhalt </bx:tools.trim>
Entfernt alle Whitespace-Zeichen (Zeilenumbrüche, Leerzeichen, Tabulator) am Anfang und Ende des inneren Bereiches
lines
reduziert mehrfache Zeilen zu einem Einzelnen (siehe Beispiel)
spaces
reduziert mehrfache Leerzeichen zu einem einzelnen
single-line
entfernt alle Zeilenumbrüche und schreibt alles leerzeichengetrennt in eine Zeile
Beispiele
<bx:tools.trim lines> Hallo
Welt
</bx:tools.trim>
reduziert mehrfache Zeilenumbrüche zu einem Einzelnen würde also nur „Hallo“ und darunter „Welt“ schreiben
Links erzeugen
tools.absoluteurl
<bx:tools.absoluteurl> Pfadangabe </bx:tools.absoluteurl>
Erzeugt aus dem relativen URL-Pfad im Tag-Body eine absolute URL und schreibt sie anstelle des Tags in die Seite.
Beispiele
<bx:tools.absoluteurl>../test.htm</bx:tools.absoluteurl>
Im Beispiel würde das Tag in der Seite durch eine URL "http[s]://{hostname}/www/{pfad}/test.htm" ersetzt werden, die auf die Seite test.htm im übergeordneten Menüpunkt verweist.
tools.rooturl
<bx:tools.rooturl> Pfadangabe </bx:tools.rooturl>
Erzeugt aus dem relativen URL-Pfad im Tag-Body eine absolute URL und schreibt einen absoluten Pfad beginnend mit "/" anstelle des Tags in die Seite.
Beispiele
<bx:tools.rooturl> ../test.htm</bx:tools.rooturl>
Im diesem Beispiel würde das Tag in der Seite durch eine URL "/www/{pfad}/test.htm" ersetzt werden, die auf die Seite test.htm im übergeordneten Menüpunkt verweist.