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:

BeispielzeileBedeutungmögliche WerteErklärung
<tmpl_par name="charset" value="ASCII">ZeichensatzASCII, 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 TrennzeichenCR, LF, CRLFThese 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, 20 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, parkingprocess only this Cachetypegroups “” else all (here all = default ) is assumed
<tmpl_par name="CopyCacheImages" value="yes"> yes, no, CBXCacheImages 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 UmlauteBei der Ausführung kann der Variablenname eingegeben werden. Erstellt die Variable <Eingabe>
<tmpl_par name="constKonstante" value="value"> !!keine UmlauteErstellt die Variable <Konstante>
<tmpl_par name="sortedBy" value="-1">Sortierung1..19Setzt 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:

VariableBedeutung <gpx-Tag>
PROGDIRFileBase.getProgramDirectory()
PROFILDIR 
ALIAS 
TYPEType of cache, e.g. Regular, Multi
TYPENOas number string (see CacheType.java e.g : 0=Custom , 2=Tradi ,50=Parking 104=Earth)
SYM<sym>
GSTYPE<groundspeak:type>
SHORTTYPEFirst Letter of <type>
SIZESize of Cache, e.g. Regular, Micro
SHORTSIZEFirst letter of size
MAINWPCode des Caches des zusätzlichen Wegpunktes, sonst leer
MAINWPNAMEName des Caches des zusätzlichen Wegpunktes, sonst leer
WAYPOINT<name> GCXXXX, OCXXXX
PREFIXDie ersten 2 Zeichen des Code (GC, OC, ...)
SSHORTWAYPOINTCode ohne die ersten beiden Zeichen
SHORTWAYPOINTdie letzten ShortNameLength Zeichen des Wegpunktes
OWNERCacheowner
DIFFICULTY 
SHORTDIFFICULTYDifficulty mal 10 also 15 statt 1.5
SHDIFFICULTYDifficulty abgerundet also 1 statt 1.5
TERRAIN
SHORTTERRAINTerrain mal 10
SHTERRAINTerrain abgerundet
DISTANCEDie Entfernung vom Zentrum
BEARINGdie Peilungsrichtung in Grad vom Zentrum
LATLONKoordinaten in der Form N 50° 31.234 E 008° 45.267
LAT<wpt lat=”xx.yyyy” ……..> Latitude in der Form 50.20147
LON<wpt …… lon=”xx.yyyy” > Longitude in der Form 008.58132
STATUSaus dem Statusfeld: gefunden etc...
GC_LOGTYPEDie englischen Statustexte (für den GPX – Export)
STATUS_DATEDatumsteil des Statusfeldes (falls vorhanden)
STATUS_TIMEZeitteil des Statusfeldes (falls vorhanden)
DATEDatum versteckt
CACHE_NAMEName des Cache
NAMEName des Cache (ohne die badchars) (neuerdings bei ASCII Simplifizierung von Zeichen)
SHORTNAMEName der durch Weglassen von Vokalen von hinten und wenn das nicht reicht durch Weglassen von Kleinbuchstaben von hinten auf eine in den Einstellungen vorgegebene Länge gekürzt wird. (Hintergrund: das Notes -Feld der meisten Garmins kann nur 30 Buchstaben) Dann kriegen sie noch Infos wie Difficulty etc. rein)
CACHEID 
ARCHIVEDTRUE oder FALSE
AVAILABLETRUE oder FALSE
SOLVEDTRUE oder FALSE
FOUNDTRUE oder FALSE
OWNTRUE oder FALSE
PMTRUE oder FALSE
IFARCHIVED- oder nicht definiert
IFNOTAVAILABLE- oder nicht definiert
IFSOLVED* oder nicht definiert
IFFOUND+ oder nicht definiert
IFOWN~ oder nicht definiert
IFPM? oder nicht definiert
TRAVELBUGY or N für Anwesenheit/Abwesenheit von TBs im Cache
GMTYPEType aus der Garminmap.xml, also z.B. Custom 1, zur Verwendung der Benutzerdefinierten Icons
NOW_DATEaktuelles Datum
NOW_TIMEaktuelle Zeit
URL 
DESCRIPTIONCache Beschreibung (möglicherweise im HTML Format)
NOTESNotizen (ohne die badchars)
HINTSverschlüsselte Hinweise (ohne die badchars)
DECRYPTEDHINTSlesbare Hinweise (ohne die badchars)
BUGSListe der TBs
SOLVERIm Löser enthaltene Eingaben
COUNTRYStaat
STATEBundesland
HTMLTRUE / FALSE wenn die Beschreibung in html ist
VOTEBewertung von gcvote oder OC
IFTRADITIONALTR oder nicht definiert
IFMULTIMU oder nicht definiert
IFMYSTERYUN oder nicht definiert
IFEVENTEV oder nicht definiert
IFCITOCI oder nicht definiert
IFEARTHEA oder nicht definiert
IFMEGAME oder nicht definiert
IFGIGAGI oder nicht definiert
IFLABLA oder nicht definiert
IFLETTERBOXLB oder nicht definiert
IFWEBCAMWC oder nicht definiert
IFWHEREIGOWG oder nicht definiert
IFPARKINGPA oder nicht definiert
IFSTAGEST oder nicht definiert
IFQUESTIONQU oder nicht definiert
IFFINALFI oder nicht definiert
IFTRAILHEADTH oder nicht definiert
IFREFERENCERE oder nicht definiert
ATTRIBUTESZusammenfassung für POI-Export
LOGSZusammenfassung aus LOGGER, LOGTYPE, DATE und MESSAGE für POI-Export
PIC#Gibt es nur bei POI-Export zur Unterscheidung verschiedener Bilder eines Caches
LASTFOUNDDatum des letzten Fundes
LASTFIVE5 Zeichen für die letzten 5 Logs (-/+ = nicht/gefunden, U/! = un/archiviert, D/E=dis-/en-abled, P=published, o=other )
  

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:

PATHANDIMAGEpath an imagename of the attribute
IMAGEimagename of the attribute
INFOdescription of the attribute from language config
GCINFOdescription of the attribute as from gc.com
BRcontains <br/> every 5th attribute else empty (can be used with <tmp_if>)
GCIDID of gc.com
INC0 .. 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:

ICONname of the log picture
LOGTYPEText : found it etc….( gc.com compatible string representation)
DATEdate of the log
LOGGERname
MESSAGElogtext

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:

WAYPOINTder Addi
NAMEName des Addi
LATLONKoordinaten des Addi
LAT 
LON 
IMGName des Addi Icons png (resources oder exporticons)
ICON<type> as number string (see CacheType.java e.g : …,50=Parking ….)
TYPENAMETypename des Addi wie in der GUI
TYPEtag <type> Type of Addi
SYMtag <sym>
GSTYPEtag <groundspeak:type>
LONGDESCBeschreibungstext 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:

PROFILDIRDas Datenverzeichnis
FILENAMEthe filename in the profile directory
TEXTcaption
COMMENTdescription
URLoriginal 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.