Templates
Templates
Ein kurze Erklärung
Ein Programmteil im CacheWolf kann die sogenannten Templates (Dateien mit der Erweiterung .tpl) verarbeiten und entsprechend den darin enthaltenen Definitionen die unterschiedlichsten Ausgaben erzeugen.
Was alles in einer tpl-Datein drin stehen kann
1. Die Kommentare
Die Kommentare können beliebig in die tpl - Datei eingebaut werden.
<#-- TomTom ASC or POI --> | Alles zwischen "<#--" and "-->" ist ein Kommentar |
2. Die Parameter
Die Parameter bilden den Konfigurationsbereich der tpl-Datei. Diese Informationen erscheinen nicht in der Ausgabedatei.
Hier stehen Zeilen der Form <tmpl_par name="<Name des Parameters>" value="<Wert des Parameters>">.
Die Namen der Parameter und deren mögliche Werte sind im CacheWolf vorgegeben. Folgendes ist möglich:
Beispielzeile | Bedeutung | mögliche Werte | Erklärung |
---|---|---|---|
<tmpl_par name="charset" value="ASCII"> | Zeichensatz | ASCII, UTF8, UNICODE | |
<tmpl_par name="badchars" value=","> | zu entfernende Zeichen | These chars are removed from the cachename, hints and notes. for example the value="," if ',' is used as a separator. Regular expressions possible. | |
<tmpl_par name="newline" value="CRLF"> | Zeilen Trennzeichen | CR, LF, CRLF | These defines, what should be used for replacing |
<tmpl_par name="decsep" value=","> | Decimaltrennzeichen | "." , "," | Defines, which decimal separator is used |
<tmpl_par name="ShortNameLength" value="30"> | Anzahl Zeichen der Variablen SHORTNAME | ||
<tmpl_par name="WaypointLength" value="3"> | Anzahl Zeichen der Variablen SHORTWAYPOINT | ||
<tmpl_par name="Out" value=".gpx"> | Ausgabe Dateiname oder Erweiterung | ||
<tmpl_par name="NrLogs" value="-1"> | -1, .. | Anzahl logs (-1 = alle) | |
<tmpl_par name="singleFile" value="yes"> | ”yes”, ”no” | Eine einzige Ausgabedatei oder eine Datei pro Cache (use a dummy / not existing name for Out par) | |
<tmpl_par name="formatModifier" value="0"> | 0, 1, 2 | 0 is xml as gpx generation before, 1 is html for local use 2 is html for export use | |
<tmpl_par name="takeOnlyWp" value="all"> | all, main, addi, parking | process only this Cachetypegroups “” else all (here all = default ) is assumed | |
<tmpl_par name="CopyCacheImages" value="yes"> | yes, no, CBX | CacheImages are copied to the output directory (copy attribs and icons manually, they are fix). Value=”CBX” for CacheBox | |
<tmpl_par name="inputEingabe" value="default"> | !!keine Umlaute | Bei der Ausführung kann der Variablenname eingegeben werden. Erstellt die Variable <Eingabe> | |
<tmpl_par name="constKonstante" value="value"> | !!keine Umlaute | Erstellt die Variable <Konstante> | |
<tmpl_par name="sortedBy" value="-1"> | Sortierung | 1..19 | Setzt die Variable sortedBy auf (4=Waypoint,5=Name,9=Status,10=Distance… see myComparer.java) |
3. Der Ausgabebereich
Der Inhalt der tpl-Datei wird ohne die Kommentare und Parameter unter Ersetzung der Variablentags durch die aktuellen Werte in die Ausgabedatei(en) geschrieben. Die Variablentags sehen so aus <tmpl_var name=LON>. Am Ende jeder Zeile der tpl-Datei muss ein <br /> Tag stehen, welches bei der Ausgabe entspreched dem Parameter newline ersetzt wird.
3.1. Cachedaten
Die Cachedaten Variablen stehen in der Schleife zwischen <tmpl_loop cache_index> und </tmpl_loop> zur Verfügung.
Das ist sozusagen die Hauptschleifen. Die unten folgenden Schleifen für die Attribute , die Logs , die Wegpunkte und die Bilder eines Cache können hier eingebaut werden. Die Variablenwerte der übergeordneten Schleife stehen in der untergeordneten Schleife nicht zur Verfügung.
Folgende Variablen können dort referenziert werden:
3.2. Die Attribute
Die Attribute Variablen stehen in der Schleife zwischen <tmpl_loop ATTRIBUTES> und </tmpl_loop> zur Verfügung.
Siehe das Beispiel in der GCTemplate.html ( show cache in browser offline )
Folgende Variablen können dort referenziert werden:
PATHANDIMAGE | path an imagename of the attribute |
IMAGE | imagename of the attribute |
INFO | description of the attribute from language config |
GCINFO | description of the attribute as from gc.com |
BR | contains <br/> every 5th attribute else empty (can be used with <tmp_if>) |
GCID | ID of gc.com |
INC | 0 .. 2 yes / no / neutral |
3.3. Die Logs
Die Logs Variablen stehen in der Schleife zwischen <tmpl_loop LOGS > und </tmpl_loop> zur Verfügung.
Siehe das Beispiel in der GCTemplate.html ( show cache in browser offline )
Folgende Variablen können dort referenziert werden:
ICON | name of the log picture |
LOGTYPE | Text : found it etc….( gc.com compatible string representation) |
DATE | date of the log |
LOGGER | name |
MESSAGE | logtext |
3.4. Die zusätzlichen Wegpunkte
Die Wegpunkt Variablen stehen in der Schleife zwischen <tmpl_loop ADDIS> und </tmpl_loop> zur Verfügung.
Siehe das Beispiel in der GCTemplate.html ( show cache in browser offline )
Folgende Variablen können dort referenziert werden:
WAYPOINT | der Addi |
NAME | Name des Addi |
LATLON | Koordinaten des Addi |
LAT | |
LON | |
IMG | Name des Addi Icons png (resources oder exporticons) |
ICON | <type> as number string (see CacheType.java e.g : …,50=Parking ….) |
TYPENAME | Typename des Addi wie in der GUI |
TYPE | tag <type> Type of Addi |
SYM | tag <sym> |
GSTYPE | tag <groundspeak:type> |
LONGDESC | Beschreibungstext für den Addi |
3.5. Die Bilder
Die Bilder Variablen stehen in der Schleife zwischen <tmpl_loop cacheImg> und </tmpl_loop> zur Verfügung.
Siehe das Beispiel in der GCTemplate.html ( show cache in browser offline )
Folgende Variablen können dort referenziert werden:
PROFILDIR | Das Datenverzeichnis |
FILENAME | the filename in the profile directory |
TEXT | caption |
COMMENT | description |
URL | original source of the image |
4. Ein Beispiel
<#-- Microsoft AutoRoute --> <#-- Codecs: ASCII, UTF8 --> <tmpl_par name="charset" value="ASCII"> <#-- somme chars should not appear in the cachename --> <tmpl_par name="badchars" value=";""> <#-- newline: CR, LF, CRLF --> <tmpl_par name="newline" value="CRLF"> <#-- decimal seperator: . or , --> <tmpl_par name="decsep" value=","> Name;Breitengrad;Längengrad;Typ1;Typ2;Waypoint;Datum;Hyperlink<br /> <tmpl_loop cache_index> "<tmpl_var name=SHORTTYPE>-<tmpl_var name=SHORTSIZE>-<tmpl_var name=DIFFICULTY>-<tmpl_var name=TERRAIN> <tmpl_var name=NAME>";<tmpl_var name=LAT>;<tmpl_var name=LON>;"<tmpl_var name=TYPE>";"<tmpl_var name=SIZE>";" <tmpl_var name=WAYPOINT>";"<tmpl_var name=DATE>";"<tmpl_var name=URL>"<br /> </tmpl_loop>
5. Die Tags (Erklärung)
Die Originalbeschreibung der template library findest du unter http://html-tmpl-java.sourceforge.net/.
tmpl_var
You can set default values for your template variables, which will be used if no value has been set through the setParam method.
<TMPL_VAR name="var_name" default="my value">
If var_name is set using setParam (or setParams), then it's value will be whatever it was set to, else it will be "my value" (without the quotes).
You can also "escape" certain strings. The following escape modes are possible.
none: String unchanged (this is the default if escape is not specified) html: Encode special characters: & > < ". They are changed to & < > and " respectively url: Encode special characters in URL, e.g. space becomes %20 quote: Change quotation marks: " becomes \" and ' becomes \'
Example: <TMPL_VAR name="var_name" escape="html">
tmpl_if
The <tmpl_if> tag allows you to include or not include a block of the template based on the value of a given parameter name. If the parameter is given a value that is true, then the block is included in the output. If the value is false, then it is skipped.
The tmpl_if must be closed with a corresponding /tmpl_if, e.g.
<tmpl_if ...>
...
</tmpl_if>
Parameter values for conditions are Strings in java, and not boolean values, hence, what evaluates to true and false needs to be specifically defined.
As of now, the following values evaluate to false:
"" - the empty string
"0" - the string containing only the number zero
null - the null value
tmpl_else
While the if block allows us to display some output if a condition is true, we may also need to display content if the condition is false. This can be done by using the optional else branch of the if block.
tmpl_unless
This tag is the exact opposite of the <tmpl_if> tag. A <tmpl_unless> block is displayed if its control variable evaluates to false. If the control variable evaluates to true, then the else block, if any, is displayed instead.
tmpl_loop
The <tmpl_loop> tag is a bit more complicated than the other tags. It allows you to create a section of text that will be displayed repeatedly for every item in the loop control variable. Inside the <tmpl_loop>, you place <tmpl_var>s. The only loop used by the template exporter is 'cache_index', see example above.
Loop context variables
If you set loop_context_vars to true in your Template's constructor, then you will have access to five special variables in all your loops. These are:
__FIRST__ True for the first run of the loop, false otherwise
__LAST__ True for the last run of the loop, false otherwise
__ODD__ True for every other iteration of the loop - a loop starts at 1
__INNER__ True if both __FIRST__ and __LAST__ are false
__COUNTER__ Which iteration is currently on. Starts at 1
You may use these like any other <TMPL_VAR> inside your loop.
tmpl_include
The <tmpl_include> tag is the next simplest tag after <tmpl_var>, however, it will not do what you expect it to do inside a <tmpl_if>
<tmpl_include> is used to include the contents of another template within this template, at the position of the tag.
Processing then continues, as if the included template were always a part of the current template.