[xxx] Tags that are Available Anywhere

The following tags can be used in any template file that WebCatalog displays. Additionally, if you have defined a SUFFIX-MAPPING and ACTION for WebCatalog to process .tpl or .HTML pages, then simply using a web browser to link to any .tpl or .HTML page on your site is equivalent to performing a ShowPage using that file as a template.

Depending on the preference settings, you may have to include <!--HAS_WEBDNA_TAGS--> at the top of your files to indicate that WebCatalog should interpret the [xxx] tags inside the file.

Note: These are not containers, so they should not be followed by a corresponding [/xxx] tag.

[AUTHENTICATE Some Text]

Putting [AUTHENTICATE] in your template will cause the remote browser to display the Username/Password dialog, with whatever text you specify. When the visitor types a username and password into their browser, your templates can get that information by including the [USERNAME] and [PASSWORD] tags. Normally you put [AUTHENTICATE] inside [ShowIf] or [HideIf] contexts that compare the username/password, otherwise the password dialog will keep popping up forever.

Note: [AUTHENTICATE] is a low-level tool that requires some sophisticated knowledge to use, so most people use the simpler [PROTECT] tag to password-protect a page. You can see an example of how [PROTECT] makes use of [AUTHENTICATE] by reading the WebDNA in the file "MultiGroupChecker" on your hard disk (in the WebCatalog folder).

[BROWSERNAME]

Putting [BROWSERNAME] in your template will display the name of the remote browser program running on the visitor's computer.

[CART]

Putting [CART] in your template will automatically create a unique shopping cart identifier that can be used in eCommerce commands such as Add, Remove, Purchase, etc. If no cart value is specified when you arrive at a page, then a new unique value is created. If you pass in a cart value in the URL or form (propagating the same value from page to page), then that same cart value is used throughout the page.

[CART] is also handy for times when you just need a guaranteed-unique value somewhere, such as a record identifier or even a product SKU. For this reason, [cart] works in Typhoon as well as WebCatalog.

[CLEARLINEITEMS cart=cartID]

Putting [CLEARLINEITEMS] in your template will remove all line items from the specified shopping cart. Normally carts are found insidethe ShoppingCarts folder, but you may specify a cart in any folder by using file=/folder/cartID instead of cart=cartID.

[CLOSEDATABASE FileName]

Putting [CLOSEDATABASE FileName] in your template will cause the specified database file (or full path) to be written and closed. This is only needed for special cases (usually before appending to a file) where you need to change a file that may be cached in RAM. WebCatalog automatically closes databases when it needs more memory, so you typically do not need to use this tag.

Typhoon Note: Typhoon will only allow a single database to be opened.

[COMMAND]

Putting [COMMAND] in your template will display the WebCatalog command that was used to get to this page. Some examples are ShowPage, Search, ShowCart, etc. These commands are often used in Form Actions, but can also be specified in an HREF hyperlink.

[COMMITDATABASE FileName]

Putting [COMMITDATABASE FileName] in your template will cause the specified database file (or full path) to be written but not closed (so it will remain in RAM). This is only needed for special cases where you want to be absolutely certain that a database has been written to disk.

[COPYFILE from=FromFile&to=ToFile]

Putting [COPYFILE from=fred&to=wilma] in your template will immediately copy the file called "fred" to another file called "wilma".

[CREATEFOLDER folderPath]

Putting [CREATEFOLDER StarShip/Troopers] in your template will immediately create a new folder with the name "Troopers" inside a folder called "StarShip" which is in the same folder as the template itself.

[DATE]

Putting [DATE] in your template will display the current date as defined by the clock on your web server. The format of the date is normally MM/DD/YYYY, but you can change the default format by changing the DateFormat preference. You can override the default date format preference on a case-by-case basis by specifying a format inside the tag, as in [DATE %m/%d/%Y]. See [Time].

Note: this [date] tag is sometimes confused with the [OrderFile]'s [date] tag, which is not the same thing. The [date] tag inside the context of an [OrderFile] represents the date the order was created, and does not have the ability to be formatted in special ways. If you want to display today's date inside of an [OrderFile], then you must first assign a text variable outside the OrderFile context, and use that text variable from then on:

[Text]todaysdate=[date][/Text]
[OrderFile cart=[cart]]
  Order Date: [date]
  Today: [todaysdate]
[/OrderFile]
 
Here are the valid date formats:
Format Description

%a

Abbreviated weekday name "Wed" *

%A

Full weekday name "Wednesday" *

%b

Abbreviated month name "Feb" *

%B

Full month name "February" *

%c

Date and time in the form Wed Sep 19 18:24:21 1997 *

%d

Day of month 01-31

%H

Hour 00-23

%I

Hour 01-12

%j

Day of year 001-365

%m

Month 01-12

%M

Minute 00-59

%p

AM or PM

%S

Seconds 00-59

%U

Week # of year (Sunday is first day of first week) *

%w

Weekday 0 (Sunday) - 6 (Saturday)

%W

Week # of year (Monday is first day of first week) *

%x

Date as Sep 11 1997 *

%X

Time as 14:01:12

%y

Year without century 00-99

%Y

Year with century 1900-2199. Note: on Linux systems, years earlier than 999 will not display 4 digits for the year.

%Z

Time zone of server

%%

%
  * These items depend on the underlying operating system's Y2K-compliance. Windows NT, for instance, will not display correct day-of-week-name results for years past 2039. The workaround is to use %w (weekday as a number) and perform your own lookup in a small database for the textual name of the weekday.

[DELETE db=DatabasePath&eqNAMEdata=Fred]

Putting [DELETE db=DatabasePath&eqNAMEdata=Fred] in your template will open the database specified by DatabasePath, find all the records whose NAME field contains "Fred", and delete those records. Any valid search parameters are allowed, as defined in the Search command and [Search] context. Note: if the database has username and password fields, then the records will not be deleted unless the visitor's web browser username/password match the record's username/password.

Typhoon Note: Typhoon will only allow a single database to be opened.

SQL/ODBC Note: To delete records from an ODBC-compliant table, use the [SQL] context.

[DELETEFILE file=FilePath]

Putting [DELETEFILE file=fred] in your template will immediately delete the file called "fred" in the same folder as the template. Paths are relative to the template, so "somefolder/fred" will delete the file down inside a folder called "somefolder", and "../fred" will delete the file in the folder one level up from the template.

[DELETEFOLDER path=FolderPath]

Putting [DELETEFOLDER path=StarShip] in your template will immediately delete the folder called "StarShip" in the same folder as the template. Paths are relative to the template, so "somefolder/fred" will delete the folder down inside a folder called "somefolder", and "../fred" will delete the folder in the folder one level up from the template. All files inside the folder are deleted, and all subfolders are deleted, as though you had dragged the folder to the trashcan and emptied it immediately. This operation is not un-doable!

Note: if the parameter to [DeleteFolder] is an alias, then just the alias itself is deleted.

[ELAPSEDTIME]

Putting [ELAPSEDTIME] in your template will display the elapsed time (in 60ths of a second) since the beginning of processing this page. Put one at the top of a page, and another at the bottom to see how long the entire page takes to process (subtract the 2 numbers to get the answer).

[FLUSHDATABASES]

Putting [FLUSHDATABASES] in your template will cause all databases to be written and closed. This is only needed for special cases (usually before appending to a file) where you need to change a file that may be cached in RAM, and you don't know the exact name of the database. WebCatalog automatically closes databases when it needs more memory, so you typically do not need to use this tag.

Typhoon Note: Typhoon will only allow a single database to be opened.

[FREEMEMORY]

Putting [FREEMEMORY] in your template will display the amount of memory available to WebCatalog. This number is reduced whenever templates are cached, or databases are opened.

[GETCOOKIE cookieName]

Putting [GETCOOKIE fred] in your template will display the value of the cookie named "fred" that the remote browser has remembered. If no cookie of that name exists, then nothing is returned. Use [ListCookies] to see all the cookies your browser is sending.

[GETMIMEHEADER headerName]

Putting [GETMIMEHEADER Accept-Language] in your template will display the value of the MIME header called "Accept-Language", which is a code that represents the human language that the viewer is able to read. Use [ListMIMEHeaders] to see all the headers your browser is sending.

[INCLUDE file=FilePath]

Putting [INCLUDE FilePath] in your template replaces the [INCLUDE] tag with the contents of the specified file. The included file can use any [xxx] tags that will be substituted as though you had typed the entire contents of the file at that place in the template.

Note: normally all filepaths are relative to the local template, or if they begin with "/" they are relative to the web server's virtual host root. As of version 3.0, you may optionally put "^" in front of the filepath to indicate that the file can be found in a global root folder called "Globals" inside the WebCatalog folder. This global root folder is the same regardless of the virtual host.
 Optional Parameters Description 
[INCLUDE file=FilePath&raw=T] raw=T means the file should be included unchanged, without performing any [xxx] substitutions.
[INCLUDE file=FilePath&fromCache=F] fromCache=F means a more-recent version of the file should be read from disk, instead of using the cached version in RAM.
[INCLUDE file=FilePath&var1=xx&var2=yy] Passes any variable names (and their values) you choose into the included template, which can then use [var1] anywhere inside it.
[INCLUDE file=^test.inc] test.inc is found inside WebCatalog/Globals/ folder

[IPADDRESS]

Putting [IPADDRESS] in your template will display the ip address of the remote computer that the visitor is using to view your site. All sections of the IP address are expanded to 3 digits, so that 207.67.2.14 will display as 207.067.002.014. This helps make comparisons inside [ShowIf] tags work properly.

[ISSECURECLIENT]

Putting [ISSECURECLIENT] in your template replaces the [ISSECURECLIENT] tag with "T" if the remote browser is capable of SSL (Secure Socket Layer) connections, and "F" if not. As new browsers are released, you can control which ones are reported as secure by changing the "Browser Info.txt" file to indicate what level of HTML it supports, and whether or not it supports SSL.

[LASTRANDOM]

Putting [LASTRANDOM] in your template will display the same value as the last [RANDOM] number displayed. See [RANDOM].

[LOOKUP db=databasePath&value=searchValue&lookInField=searchField&returnField=fieldName&notFound=TextIfNotFound]

Putting [LOOKUP] in your template will perform an extremely fast search through the specified database and return either the value of the returnField in the found record, or the literal text of the notFound value. The search is an exact match, case-sensitive, so "Grant" does not equal "grant". If you want more control over the search criteria, then use a [SEARCH] context instead.

Typhoon Note: Typhoon will only allow a single database to be opened.

[MOVEFILE from=FromFile&to=ToFile]

Putting [MOVEFILE from=fred&to=wilma] in your template will immediately move the file called "fred" to another file called "wilma", and delete the file "fred" after the move is complete. You may specify a different folder for the file to be moved to.

[PASSWORD]

Putting [PASSWORD] in your template will display the password entered into the remote browser's last Realm password dialog. See [USERNAME] and [AUTHENTICATE].

[PLATFORM]

Putting [PLATFORM] in your template will display the computer platform (Windows or Macintosh or Unix) that WebCatalog is running on.

[PROTECT group1,group2]

Putting [PROTECT Groups] in your template will cause the remote browser to display the Username/Password dialog until the visitor enters a username/password that belongs to one of the specified groups. The Users.db database provided with WebCatalog (and administered here) contains all the username/password/group information.

[PURCHASE cart=cartID]

Putting [PURCHASE cart=cartID] in your template will move the specified shopping cart file from the ShoppingCarts folder to the Orders folder, effectively the same as a Purchase command. If the cart file is not in a ShoppingCarts folder, you may use the alternate file=/folder/cartID instead of cart=cartID.

[RANDOM]

Putting [RANDOM] in your template will display a random number between 1-100. See [LASTRANDOM]

[REDIRECT URL]

Putting [REDIRECT http://isd.smithmicro.com/] in your template will force the remote browser to immediately 'jump' to the new location specified, rather than displaying whatever is in the template. Any other text in the template will be ignored.

[REFERRER] or [REFERER]

Putting [REFERRER] in your template will display the URL of the referring page that led to this one. This is a handy way to give visitors a "back up" button. Note: this will not work if the previous page was a FORM METHOD="POST".

[REMOVELINEITEM cart=cartID&index=3]

Putting [REMOVELINEITEM] in your template will immediately delete the specified line item from the specified shopping cart file. Alternately, you may use the Remove command. See also [AddLineItem] and Add. If the cart file is not in a ShoppingCarts folder, you may use the alternate form file=/folder/cartID instead of cart=cartID.

[SETCOOKIE name=cookieName&value=cookieValue&expires=expireDate&path=/&domain=www.yourdomain.com]

Putting a [SETCOOKIE] tag into a template causes the remote browser to create or replace a cookie of that name in its local list of cookies. You can use [GETCOOKIE] or [LISTCOOKIES] later to retrieve that value from the remote browser. The expiration date of the cookie must be of the form Wednesday, 09-Nov-1999 23:12:40 GMT. The domain must be the name of your web server, otherwise the browser will not provide the cookie information.

Example:

[SETCOOKIE name=Visits&value=12&expires=Wednesday, 09-Nov-1999 23:12:40 GMT&path=/&domain=isd.smithmicro.com]

or one that expires 7 days from today (the +05:00:00 handles the US East Coast time difference from GMT):

[SETCOOKIE name=cookieName&value=sample&expires=[format days_to_date %A, %d-%b-%Y][math]{[date]}+7[/math][/format] [math time]{[time]}+{05:00:00}[/math] GMT&path=/&domain=www.yourserver.com]

Note: if you do not specify an expires parameter, then the cookie will become a "session cookie" which expires automatically when the browser quits.

[SETMIMEHEADER name=headerName&value=headerValue]

Putting a [SETMIMEHEADER] tag into a template causes WebCatalog to add a new MIME header to the outgoing HTML text for that page. MIME headers are normally used to create redirect requests and cookies. WebCatalog already has special tags for generating redirects and cookies, but in the future you may need to create MIME headers for other purposes.

[THISFILE]

Putting [THISFILE] in your template will display the platform-specific filesystem full path of the current template page being displayed. The path separators are platform-specific, so the path will look different depending on what MacOS, Windows, or unix computer system is used.

[THISURL]

Putting [THISURL] in your template will display the URL of the current page being displayed as a relative path from the root of the server hierarchy.

[TIME]

Putting [TIME] in your template will display the current time set on your web server's clock. The format of the time is normally HH:MM:SS (24-hour clock), but you can change the default format by changing the TimeFormat preference. You can also override the default time format by specifying a format inside the tag, such as [TIME %H:%M:%S]. See [DATE] for details.

[USERNAME]

Putting [USERNAME] in your template will display the username entered into the remote browser's last Realm password dialog. See [PASSWORD] and [AUTHENTICATE]

[VALIDCARD accountNum=cardNumber&card=VISA+MC]

Putting [VALIDCARD] into a template will display T or F (True or False), depending on the value of the number in accountNum. If the accountNum is a reasonable credit card number for the specified bank network, then T indicates it is good. Conversely, F indicates it is bad. This does not call the bank to verify funds on the card -- it merely does a simple numeric checksum to verify the number is consistent with a credit card number.
Parameters Description 

accountNum

(Required) The credit card number. Any extra spaces or non-numeric characters will be ignored.

card

(Optional) Set card to the names of the credit cards that are allowed, separated by space or +. Possible values are ALL, IGNORE, VISA, MC, AMEX, DISC, JCB, DINER. If not specified, then ALL cards are allowed. IGNORE tells it to always validate the card regardless of its checksum.

[VERSION]

Putting [VERSION] in your template will display the version of the currently-running WebCatalog program or plugin.