Macros

Special text strings expand on the fly to display user data or system info

Macros are text strings in one of two forms:

%MACRONAME%
%MACRONAME{ parameter="value" }%

These usually expand into content when a topic is rendered for viewing. There are two types of macros:
  1. Preference settings: May be defined and modified by the user
  2. Registered macros: Defined by the system or by Plugins (for example, the SpreadSheetPlugin introduces a %CALC{}% macro)

On this page:

Using Macros

To use a macro type its name. For example,

Note:
  • To leave a macro unexpanded, precede it with an exclamation point, e.g. type !%TOPIC% to get %TOPIC%
    • Alternatively, insert a <nop> anywhere in the macro, Eg. %<nop>TOPIC%
  • Macros are expanded relative to the topic they are used in, not the topic they are defined in
  • Type %ALLVARIABLES% to get a full listing of all macros defined for a particular topic
  • If a macro is not defined, then it will be left in the text unless it is called with a default parameter, in which case the value of the default parameter will replace the macro call in the output. For example, %UNDEFINED{default="blank"}% will expand to blank.

Order of expansion

The following describes only these types of macros:

Standard form

The key to understanding nested expressions in Foswiki is to understand that macros are expanded "inside-out, left-to-right". Example:

%MACRO1{
   something="%MACRO2{
      somethingelse="%MACRO3%, %MACRO4%"
   }%"
}%
The macros are expanded in this order: MACRO3, MACRO4, MACRO2, MACRO1.

Animated Example
%INCLUDE{
    "%QUERY{
        "'%THETOPIC%'/%THEFIELD%"
    }%"
    section="Summary"
}%
   * Set THETOPIC = %SYSTEMWEB%.FAQWhatIsWikiWiki
   * Set THEFIELD = TopicClassification
%INCLUDE{
    "%QUERY{
        "'%SYSTEMWEB%.FAQWhatIsWikiWiki'/%THEFIELD%"
    }%"
    section="Summary"
}%
   * Set THETOPIC = %SYSTEMWEB%.FAQWhatIsWikiWiki
   * Set THEFIELD = TopicClassification
%INCLUDE{
    "%QUERY{
        "'%SYSTEMWEB%.FAQWhatIsWikiWiki'/TopicClassification"
    }%"
    section="Summary"
}%
   * Set THETOPIC = %SYSTEMWEB%.FAQWhatIsWikiWiki
   * Set THEFIELD = TopicClassification
%INCLUDE{
    "%QUERY{
        "'System.FAQWhatIsWikiWiki'/TopicClassification"
    }%"
    section="Summary"
}%
   * Set THETOPIC = %SYSTEMWEB%.FAQWhatIsWikiWiki
   * Set THEFIELD = TopicClassification
%INCLUDE{
    "FrequentlyAskedQuestion"
    section="Summary"
}%
   * Set THETOPIC = %SYSTEMWEB%.FAQWhatIsWikiWiki
   * Set THEFIELD = TopicClassification

These topics are for frequently
asked questions including answers.

   * Set THETOPIC = %SYSTEMWEB%.FAQWhatIsWikiWiki
   * Set THEFIELD = TopicClassification

These topics are for frequently
asked questions including answers.

   * Set THETOPIC = System.FAQWhatIsWikiWiki
   * Set THEFIELD = TopicClassification

Delayed form

Standard form macros can nearly always be used to build the parameter string of another macro; however, sometimes it is desirable to bypass the inside-out expansion order and delay the inner macro until after the outer macro has finished expansion. This is accomplished by using the $percent format token instead of %, and escaping any " character it uses (becomes \")

TIP When working with a given macro, consult its documentation to determine which parameters support the $percent/$percnt format tokens. Generally only output parameters like header, format and footer support format tokens.
Example:
%MACRO1{
   format="$percentMACRO2{
      format=\"%MACRO3%, %MACRO4%\"
   }$percent"
}%
The macros are expanded in this order: MACRO3, MACRO4, MACRO1, MACRO2.
Animated Example
From the conditional output example:

%SEARCH{
  "info.date >= d2n('2009-01-01') AND info.date <= d2n('2009-12-31')"
  type="query"
  limit="2"
  nonoise="on"
  format="   * $percentICON{
    \"$percentIF{
      \"'$topic'/parent.name='%PARENT%'\"
      then=\"info\" else=\"gear\"
    }$percent\"
  }$percent [[$topic]]"
}%
----
   * Set PARENT = UserDocumentationCategory
%SEARCH{
  "info.date >= d2n('2009-01-01') AND info.date <= d2n('2009-12-31')"
  type="query"
  limit="2"
  nonoise="on"
  format="   * $percentICON{
    \"$percentIF{
      \"'$topic'/parent.name='UserDocumentationCategory'\"
      then=\"info\" else=\"gear\"
    }$percent\"
  }$percent [[$topic]]"
}%
----
   * Set PARENT = UserDocumentationCategory
   * %ICON{
    "%IF{
      "'AccessKeys'/parent.name='UserDocumentationCategory'"
      then="info" else="gear"
    }%"
  }% [[AccessKeys]]
   * %ICON{
    "%IF{
      "'AdminSkillsAssumptions'/parent.name='UserDocumentationCategory'"
      then="info" else="gear"
    }%"
  }% [[AdminSkillsAssumptions]]
----
   * Set PARENT = UserDocumentationCategory
   * %ICON{
    "info"
  }% [[AccessKeys]]
   * %ICON{
    "gear"
  }% [[AdminSkillsAssumptions]]
----
   * Set PARENT = UserDocumentationCategory
   * <img src="https://matisse.oca.eu/foswiki/bin/../pub/System/DocumentGraphics/info.png"/> [[AccessKeys]]
   * <img src="https://matisse.oca.eu/foswiki/bin/../pub/System/DocumentGraphics/gear.png"/> [[AdminSkillsAssumptions]]
----
   * Set PARENT = UserDocumentationCategory

See also: FormattedSearch

Macro Names

Macro names must start with a letter. The following characters can be letters, numbers and the underscore '_'. Letters may be upper or lower-case, E.g. %MYVAR%, %MyVar%, %My2ndVar%, and %My_Var% are all separate, valid macro names (macros are case sensitive - %MyVAR% and %MYVAR% are not the same).

By convention all settings, predefined macros and macros registered by plugins are always UPPER-CASE. %META:TOPICPARENT{name="AdminToolsCategory"}% #SettingPrefs

Preference Settings

A preference setting lets you define a simple macro that will be expanded in your output. A preference setting looks like this:

[multiple of 3 spaces] * [space] Set [space] MACRONAME [space] = [space] value

Example:

   * Set WEBBGCOLOR = #FFFFC0
Macros defined using preference settings are expanded by enclosing their name in percent signs. So when you write %WEBBGCOLOR%, it gets expanded to #FFD8AA

A preference macro is always taken from the most current topic revision, even when accessing previous revisions of a topic.

Preferences can be defined in a number of places:
  1. DefaultPreferences (Foswiki upgrades overwrite this topic)
  2. In (some) plugin documentation topics. (Deprecated)
  3. SitePreferences
  4. In user topics, if the user has one (yours is Main.WikiGuest)
  5. WebPreferences
  6. Sub-webs inherit the WebPreferences of their parent
  7. In the topic being accessed
In this list, Set statements which occur at numerically higher locations override macros of the same name defined at lower numbered levels, unless the macro was listed in a finalpreferences setting (finalised) at a lower-numbered level. in this case, the macro is locked to the value at that level; set statements at higher-numbered levels are ignored.

prefs-stack.jpg

Writing preference settings

Preference settings are written as a simple bullet. In TML, they are written as 3-spaces,asterisk,equals,value
   * Set MYSETTING = My setting value

When using the Wysiwyg editor, click the "Bullet" button and write the setting as a simple bullet. Don't include the asterisk.

Spaces between the = sign and the value will be ignored. You can split a value over several lines by indenting following lines with spaces - as long as you don't try to use * as the first character on the following line.

Example:
   * Set MACRONAME = value starts here
     and continues here

Whatever you include in your macro will be expanded on display, exactly as if it had been entered directly (though see Parameters, below).

Example: Create a custom logo macro
  • To place a logo anywhere in a web by typing %MYLOGO%, define the preference settings in the web's WebPreferences topic, and upload a logo file, ex: mylogo.gif. You can upload by attaching the file to WebPreferences, or, to avoid clutter, to any other topic in the same web, e.g. LogoTopic. Sample preference setting in WebPreferences:
   * Set MYLOGO = %PUBURL%/%WEB%/LogoTopic/mylogo.gif

Preference settings are case sensitive. (Foswiki by convention always writes settings in upper case.)

   * Set lower = This is LOWER
   * Set LOWER = This is UPPER
   * Set LoWeR = This is MIXED
Expand %lower%, %LOWER% and %LoWeR%
Expand %lower%, %LOWER% and %LoWeR%.

IDEA! preference settings can easily be disabled with a # sign. Example:
   * #Set DENYWEBCHANGE = %USERSWEB%.UnknownUser

Hiding preference settings

IDEA! You can hide preference settings in the output by enclosing them in HTML comments; for example,
<!--
   * Set HIDDEN = This will be invisible in the output
-->

You can also set preference settings in a topic by clicking the link Edit topic preference settings under More topic actions. Preferences set in this manner are known as 'meta' preferences and are not visible in the topic text, but take effect nevertheless.

ALERT! Caution If your topic will be used in an INCLUDE, it is recommended to not use HTML comments. instead, set preferences into the topic metadata by using the "Edit Settings for this topic" button on the "More topic actions" page. Settings in an included topic are always ignored, but nested comments will break the HTML.

Order of perference settings

If you are setting a preference and using it in the same topic, note that Foswiki reads all the preference settings from the saved version of the topic before it displays anything. This means you can use a setting anywhere in the topic, even if you set it at the very end. But beware: it also means that if you change the setting of a macro you are using in the same topic, Preview will show the wrong thing, and you must Save the topic to see it correctly.

Preference settings and topic revision history

Foswiki always reads the settings from the most current topic revision, so viewing older revisions of a topic can show unexpected results.

And especially important, preference settings are never overridden or set in "%INCLUDE{" topics. in the below example about weather conditions, note the difference in the CONDITIONS expansion

Parameters

Note that %CONDITIONS% expands differently when this example is viewed in PreferenceSettings. This is because Set statement are not active in included topics. The including topic's set statements are used.

Macros defined using preference settings can take parameters. These are symbols passed in the call to the macro to define local macros that will be expanded in the output. For example,
   * Set CONDITIONS = According to [[%BASETOPIC%]] the %WHAT% is %STATE% today (Set in ...).
You can call this macro passing in values for WHAT and STATE. For example:
  • %CONDITIONS{WHAT="sea" STATE="choppy"}%
    • expands to According to Macros, The sea is choppy today. (Set in Macros)..

Parameter defaults

  • The special parameter name DEFAULT gets the value of any unnamed parameter in the macro call.
  • Parameter macros can accept a default parameter so that they expand to something even when a value isn't passed for them in the call.
Example:
   * Set WEATHER = It's %DEFAULT{default="raining"}%.
  • %WEATHER% expands to It's raining.
  • %WEATHER{"sunny"}% expands to It's sunny.
The standard formatting tokens can be used in parameters. They will be expanded immediately when the macro is instantiated.

ALERT! Note that parameters override all other macros, including system defined macros, in the expansion of the macro where they are used.

Access Control Settings

These are special types of preference settings to control access to content. AccessControl explains these security settings in detail. Parameters are not available in access control settings.

Local values for preferences

Certain topics (user, plugin, web, site and default preferences topics) have a problem; macros defined in those topics can have two meanings. For example, consider a user topic. A user may want to use a double-height edit box when they are editing their home topic - but only when editing their home topic. The rest of the time, they want to have a normal edit box. This separation is achieved using Local in place of Set in the macro definition. For example, if the user sets the following in their home topic:
   * Set EDITBOXHEIGHT = 10
   * Local EDITBOXHEIGHT = 20
Then, when they are editing any other topic, they will get a 10 high edit box. However, when they are editing their home topic they will get a 20 high edit box. Local can be used wherever a preference needs to take a different value depending on where the current operation is being performed.

Use this powerful feature with great care! %ALLVARIABLES% can be used to get a listing of the values of all macros in their evaluation order, so you can see macro scope if you get confused.

Deprecation warning. The setting used in this example, EDITBOXHEIGHT, is being deprecated and will be remove from Foswiki 1.2. Note that if the edit box size is changed using the javascript controls in the lower right corner of the edit box window, those settings will be used, and the EDITBOX* settings will be ignored.

Predefined Macros

Most predefined macros return values that were either set in the configuration when Foswiki was installed, or taken from server info (such as current username, or date and time). Some, like %SEARCH%, are powerful and general tools.

ALERT! Predefined macros can be overridden by preference settings (except TOPIC and WEB)

ALERT! Plugins may extend the set of predefined macros (see individual Plugins topics for details)

TIP Take the time to thoroughly read through ALL preference macros. If you actively configure your site, review macros periodically. They cover a wide range of functions, and it can be easy to miss the one perfect macro for something you have in mind. For example, see %BASETOPIC%, %INCLUDE%, and the mighty %SEARCH%.

Your installation of Foswiki v2.1.6 has the following registered macros:

ACTIVATEDPLUGINS -- list of currently activated plugins

Examples

ADDTOHEAD -- deprecated, use ADDTOZONE instead

This macro is deprecated. Please use VarADDTOZONE instead. It effecively is a shortcut for %ADDTOZONE{"head" ...}%

ADDTOZONE -- add content to a named zone on the page

Parameters

Parameter Description Default
"zone" comma-separated list of the names of zones that the content should be added to. The only zones guaranteed to exist are head, script and body. head
id identifier for the text being added with the ADDTOZONE call, to be used in the requires parameter of other ADDTOZONE calls. HELP Multiple ADDTOZONE calls with the same id parameter will simply overwrite the earlier ADDTOZONE call.  
requires comma separated string of ids of text within this zone that this content should follow when the zone is rendered. The content will be rendered even if a specified id is missing.  
text text to be added to the named zone, mutually exclusive with topic.  
topic full qualified web.topic name that contains the text to be added, mutually exclusive with text. %BASETOPIC%
section section of the topic to be added the default section between STARTINCLUDE and STOPINCLUDE

What is a "Zone"?

Zones are specific places in the output HTML that are marked by calls to the RENDERZONE macro. Zones are used to collect various content together, such as Javascript and CSS, that must be included in the output HTML in a specific order, and in a specific place.

There are three special zones called head, script and body. The head zone is rendered as part of the HTML head section. It is the catch-all container for any content supposed to be placed into the HTML head section, except Javascript, which is collected in the script zone.

All Javascript must always be added to the script zone exclusively, in order to grant ordering constraints among scripts are resolved properly. Never add Javascript to the head zone -- never add non-Javascript content to the script zone.

Both head and script zones are added to the HTML head section automatically just before the closing </head> tag as if they were specified explicitly in the skin templates using:
<head>
...
%RENDERZONE{"head"}%
%RENDERZONE{"script"}%
</head>

The body zone is added to the end of the rendered page just prior to the closing <body> tag.

The body zone is new with Foswiki 2.1.5. It was added for improved compatibility with the NatSkin.

You may create as many zones in addition to the standard head and script zones as you like. For any non-standard zone specified in ADDTOZONE you will also need to provide an appropriate RENDERZONE.

Interesting use cases in wiki applications:
  • Create a sidebar zone to add widgets,
  • Create a toolbar zone to add buttons icons
  • Create a menu zone to add menu entries

Adding content to a zone

ADDTOZONE adds content to a zone identified with the id parameter. An id identifier is unique within the zone that they are added to. When the same id is used in multiple calls to ADDTOZONE the last call will win, that is previous content of the same id will be overwritten.

Enforcing a linear order of content within a zone

An ADDTOZONE call may ensure that its content appears after the content of some other ADDTOZONE calls by specifying their ids in the requires parameter. The requires parameter constraints the linear order of content added to a zone. When a zone is rendered, all ordering constraints expressed via requires are satisfied. Those ids not found in a zone don't have any influence on the final ordering. Missing ids aren't considered an error rather than an over-specified ordering problem.

Working with {MergeHeadAndScriptZones} disabled (default)

In this mode, the head and script zones are treated separately.

Even when head and script zones are treated separately, the head zone will always be rendered before the script zone, unless otherwise specified using RENDERZONE explicitly. So any content in the script zone that depends on content placed into the head zone is satisfied intrinsicly as they are both rendered as specified above.

Working with {MergeHeadAndScriptZones} enabled

In this mode, the head and script zones are separate when adding to them, but may be treated as merged when you call RENDERZONE if there are any dependencies specified that only exist in the opposite zone. This allows an ADDTOZONE{"head"...} to to successfully require an id that has been added to script.

ALERT! {MergeHeadAndScriptZones} is provided to maintain compatibility with legacy extensions that use ADDTOHEAD to add <script> markup and require content that is now in the script zone. {MergeHeadAndScriptZones} will be removed from a future version of Foswiki.

Examples

Adding to a zone with missing dependencies

You must ensure that no head content (and no inline Javascript) depends on script content. Any such dependency will be ignored.

In real world application this isn't a problem as Javascript is never added to the head zone or Javascript zone part of the script zone never really depends on non-Javascript content part of the head zone.

HTML comment decoration which normally appears after each id's content in the rendered HTML will contain a small informative text to aid debugging.

Example
%ADDTOZONE{
  "script"
  text="
  <script type='text/javascript'>
    alert('test');
  </script>"
  requires="some-id-that-exists-in-script"
  id="MY::TEST"
}%

Result
<script type='text/javascript'>
  alert('test');
</script>
<!-- MY::TEST: requires= missing ids: some-id-that-exists-in-script -->

Adding Javascript to a page

Make sure that all inline Javascript code in the topic (if it is allowed) is added to the page using %ADDTOZONE{"script"...requires="library-id"}% with the appropriate library-id to guarantee a correct load order. For example, jQuery code should be added as follows:

%JQREQUIRE{"shake"}%
%ADDTOZONE{
   "script"
   id="MyApp::ShakePart"
   text="
   <script type='text/javascript'>
      jQuery('#something').shake(3, 10, 180);
   </script>"
   requires="JQUERYPLUGIN::SHAKE"
}%

where "MyApp::ShakePart" is a unique id to identify the text added to script; and JQUERYPLUGIN::SHAKE signifies that the content added with that identifier should appear beforehand.

Adding CSS to a page

%ADDTOZONE{"head"
   id="MyCSS"
   text="
      <style type='text/css' media='all'>
         @import url('%PUBURLPATH%/%SYSTEMWEB%/MyCSS/foo.css');
      </style>"
}%

ALLVARIABLES -- list of currently defined macros

Expands to a table showing all defined macros in the current context

Deprecated 2009-04-29 in favour of SHOWPREFERENCE

ATTACHURL -- full URL for attachments in the current topic

Shorthand for PUBURL, with path set to the current topic. Otherwise supports all the same parameters as PUBURL.

ATTACHURLPATH -- path of the attachment URL of the current topic

Shorthand for PUBURLPATH with path set to the current topic. Otherwise supports all the same parameters as PUBURLPATH.

AUTHREALM -- authentication realm

String defined as the {AuthRealm} expert option in configure Security And Authentication tab, =Login sub-tab.. This is used in certain password encodings, and in login templates as part of the login prompt.

Examples

  • %AUTHREALM% expands to Enter your WikiName. (First name and last name, no space, no dots, capitalized, e.g. JohnSmith). Cancel to register if you do not have one.

BASETOPIC -- base topic where an INCLUDE started

The name of the topic where a single or nested INCLUDE started - same as %TOPIC% if there is no INCLUDE. This is the name of the topic requested by the user.

BASEWEB -- base web where an INCLUDE started

The web name where the includes started, e.g. the web of the first topic of nested includes. Same as %WEB% in case there is no include. This is the name of the web requested by the user.

BUTTON -- renders a nice button

Parameters

Parameter Description Default
"text" text to be put on this button  
value text to be put on this button  
accesskey access key used for this button  
class e.g. use simple for a non-3D button  
align left, right, center
href url of the click target #
icon icon to be put on the left; note, this can be any icon attached to the {IconSearchPath}; see also VarJQICON  
id html id for this button  
onclick javascript event triggered when clicking the button  
target topic to open when clicking on the button  
title popup title displayed when hovering over the button  
type type of action to be performed; available actions are
  • button - normal click button, target specified in target or href parameter
  • clear - clears all input fields in the form that contains the button
  • reset - resets all input fields in a form to their initial value
  • submit - submits the form that contains the button
  • save - same as submit but takes care of extra validation steps when saving a wiki topic
button

Examples

%BUTTON{
    "%MAKETEXT{"Submit"}%"
    icon="tick"
    onclick="confirm('Are your sure?')"
  }%
  %BUTTON{
    "%MAKETEXT{"Cancel"}%"
    icon="cross"
    target="%WEB%.%TOPIC%"
  }% %CLEAR%
Note: BUTTONS are floating to the left by default. Take care to add a %CLEAR% after the %BUTTON{...}% so that further content does not overlap with the button.

CALC -- add spreadsheet calculations to tables and outside tables

The %CALC{"formula"}% macro is handled by the SpreadSheetPlugin. There are around 90 formulae, such as $ABS(), $EXACT(), $EXISTS(), $GET()/$SET(), $IF(), $LOG(), $LOWER(), $PERCENTILE(), $TIME(), $VALUE().
  • This macro is specifically for manipulating data in tables, and so is evaluated after the normal Macro expansion order. If you need a standard ordered evaluation see CALCULATE

Examples

  • %CALC{"$SUM($ABOVE())"}% returns the sum of all cells above the current cell
  • %CALC{"$EXISTS(Web.SomeTopic)"}% returns 1 if the topic exists
  • %CALC{"$UPPER(Collaboration)"}% returns COLLABORATION

CALCULATE -- add spreadsheet formulae calls using standard Macro evaluation order.

The %CALCULATE{"formula"}% macro is handled by the SpreadSheetPlugin. There are around 90 formulae, such as $ABS(), $EXACT(), $EXISTS(), $GET()/$SET(), $IF(), $LOG(), $LOWER(), $PERCENTILE(), $TIME(), $VALUE(). This macro is uses the normal (left to right, inside out) Macro expansion order. If you need to evaluate after expanding table data, see CALC

Examples

    • %CALCULATE{"$EXISTS(Web.SomeTopic)"}% returns 1 if the topic exists
    • %CALCULATE{"$UPPER(Collaboration)"}% returns COLLABORATION
CALC, IF, SpreadSheetPlugin

COMMENT -- insert an edit box into the topic to easily add comments.

Parameters

  • The following standard attributes are recognized
    Name Description Default
    type This is the name of the template to use for this comment. Comment templates are defined in a Foswiki template - see Customisation, below. If this attribute is not defined, the type is whatever is defined by COMMENTPLUGIN_DEFAULT_TYPE preference setting. below
    default Default text to put into the prompt.  
    target Name of the topic to add the comment to the current topic
    mode For compatibility with older versions only, synonymous with type  
    nonotify Set to "on" to disable change notification for target topics off
    noform Set to "on" to disable the automatic form that is generated around your comment prompt if you don't provide a FORM template. See CommentPluginExamples:noform for an example. off
    nopost Set to "on" to disable insertion of the posted text into the topic. off
    remove Set to "on" to remove the comment prompt after the first time it is clicked. off
    button Button label text Add comment

Examples

  • A %COMMENT% without parameters shows a simple text box.

COVER -- current skin cover

Extends the skin search path. For instance, if SKIN is set to catskin, bearskin, and COVER is set to ruskin, the skin search path becomes ruskin, catskin, bearskin.

The COVER setting can be overridden using the URL parameter cover, such as ?cover=ruskin

Examples

  • %COVER% currently expands to %COVER% (it will only expand when a cover is actually set)

DATE -- signature format date

Examples

  • %DATE% expands to 19 Mar 2024
  • Date format defined as {DefaultDateFormat} in configure
    ALERT! When used in a template topic, this variable will be expanded when the template is used to create a new topic. See TemplateTopics#TemplateTopicsVars for details.

DISPLAYTIME -- display formatted time

Formatted time - either GMT or Local server time, depending on {DisplayTimeValues} setting in configure. Same format qualifiers as %GMTIME%

Parameters

Parameter Description Default
"format" Optional format (see GMTIME)  

Examples

  • %DISPLAYTIME% expands to 19 Mar 2024 - 08:48
  • %DISPLAYTIME{"$hou:$min"}% expands to 08:48

EDITTABLE{ attributes } -- edit tables using edit fields and other input fields

  • The %EDITTABLE{}% macro is handled by the EditTablePlugin
  • Syntax: %EDITTABLE{ attributes }%

  • Supported attributes:
    Attribute Comment Default
    header Specify the header format of a new table like "|*Food*|*Drink*|". Useful to start a table with only a button (no header)
    format The format of one column when editing the table. A cell can be a text input field, or any of these edit field types:

    • Text input field (1 line):
      | text, <size>, <initial value> |

    • Textarea input field:
      | textarea, <rows>x<columns>, <initial value> |

    • Drop down box:
      | select, <size>, <option 1>, <option 2>, etc* |
      * only one item can be selected

    • Radio buttons:
      | radio, <size*>, <option 1>, <option 2>, etc |
      * size indicates the number of buttons per line in edit mode

    • Checkboxes:
      | checkbox, <size*>, <option 1>, <option 2>, etc |
      * size indicates the number of checkboxes per line in edit mode

    • Fixed label:
      | label, 0, <label text> |

    • Row number:
      | row, <offset> |

    • Date:
      | date, <size>, <initial value>, <DHTML date format> | (see Date Field Type)
    "text, 16"
    for all cells
    changerows Rows can be added and removed if "on"
    Rows can be added but not removed if "add"
    Rows cannot be added or removed if "off"
    CHANGEROWS
    plugin setting
    quietsave Quiet Save button is shown if "on", hidden if "off" QUIETSAVE
    plugin setting
    include Other topic defining the EDITTABLE parameters. The first %EDITTABLE% in the topic is used. This is useful if you have many topics with the same table format and you want to update the format in one place. Use topic or web.topic notation. (none)
    helptopic Topic name containing help text shown below the table when editing a table. The %STARTINCLUDE% and %STOPINCLUDE% macros can be used in the topic to specify what is shown. (no help text)
    headerislabel Table header cells are read-only (labels) if "on"; header cells can be edited if "off" or "0" "on"
    editbutton Set edit button text, e.g. "Edit this table"; set button image with alt text, e.g. "Edit table, %PUBURL%/%SYSTEMWEB%/DocumentGraphics/edittopic.gif"; hide edit button at the end of the table with "hide" (Note: Button is automatically hidden if an edit button is present in a cell) EDITBUTTON
    plugin setting
    buttonrow Set to top to put the edit buttons above the table. bottom
    javascriptinterface Use javascript to directly move and delete row without page refresh. Enable with "on", disable with "off". JAVASCRIPTINTERFACE
    plugin setting

Example:
%EDITTABLE{ format="| text, 20 | select, 1, one, two, three |" changerows="on" }%
| *Name* | *Type* |
| Foo    | two    |

Produces: %EDITTABLE{ format="| text, 20 | select, 1, one, two, three |" changerows="on" }%
Name Type
Foo two
Related: See EditTablePlugin for more details

ENCODE -- encode characters in a string

Encode character sequences in "string", by mapping characters (or sequences of characters) to an alternative character (or sequence of characters). This macro can be used to encode strings for use in URLs, to encode to HTML entities, to protect quotes, and for as many other uses as you can imagine.

Parameters

Parameter Description Default
"string" String to encode "" (empty string)
type Use a predefined encoding (see below). Default is 'url'. Parameter type not be used if old or new are given.
old Comma-separated list of tokens to replace. Tokens are normally single characters, but can also be sequences of characters. The standard format tokens may be used in this list. Each token must be unique - you cannot list the same token twice. May not be used with type; required if new is used
new comma-separated list of replacement tokens. The elements in this list match 1:1 with the elements in the old list. Again, the standard format tokens may be used. An empty element in the new list will result in the corresponding token in the old list being deleted from the string. If the new list is shorter than the old list it will be extended to the same length using the empty element. Tokens do not have to be unique.
ALERT! When using old and new, be aware that the results of applying earlier tokens are not processed again using later tokens. (see examples below)
May not be used with type; required if old is used
If ENCODE is called with no optional parameters (e.g. %ENCODE{"string"}%) then the default type="url" encoding will be used.

Predefined encodings

Unless otherwise specified, the type parameter encodes the following "special characters"
  • type="entity" or type="entities" Encode special characters into HTML entities, like a double quote into &#34;
    • all non-printable ASCII characters below space, except newline ("\n") and carriage return ("\r").
    • HTML special characters "<", ">", "&", single quote (') and double quote (")
    • TML special characters "%", "[", "]", "@", "_", "*", "=", "$" and "|"
  • type="html" As type="entity" except it also encodes \n (newline) and carriage return ("\r").
  • type="safe" Encode just the characters '"<>% into HTML entities.
  • type="quote" or type="quotes" Escapes double quotes with backslashes (\"), does not change any other characters
  • type="url" (default) Encode special characters for use in URL parameters, like a double quote into %22.

Examples

  • %ENCODE{"spaced name"}% expands to spaced%20name
  • %ENCODE{"| Blah | | More blah |" old="|,$n" new="&#124;,<br />"}% expands to =| Blah | | More blah | - this encoding is useful to protect special TML characters in tables.
  • %ENCODE{"10xx1x01x" old="1,x,0" new="A,,B"}% expands to ABABA
  • %ENCODE{"1,2" old="$comma" new=";"}% expands to 1;2
Values for HTML input fields must be entity encoded.
Example:
<input type="text" name="address" value="%ENCODE{ "any text" type="entity" }%" />
ENCODE can be used to filter user input from URL parameters and similar to help protect against cross-site scripting. The safest approach is to use type="entity". This can however prevent an application from fully working. You can alternatively use type="safe" which encodes only the characters '"<>% into HTML entities. When ENCODE is passing a string inside another macro always use double quotes ("") type="quote". For maximum protection against cross-site scripting you are advised to install the Foswiki:Extensions.SafeWikiPlugin.

Double quotes in strings must be escaped when passed into other macros.
Example:
%SEARCH{ "%ENCODE{ "string with "quotes"" type="quotes" }%" noheader="on" }%

ALERT! When using old and new, be aware that the results of applying earlier tokens are not processed again using later tokens. For example:
   %ENCODE{"A" old="A,B" new="B,C"}% will result in 'B' (not 'C'),
   %ENCODE{"asd" old="as,d" new="d,f"}% will yield 'df', and
   %ENCODE{"A" old="A,AA" new="AA,B"}% will give 'AA' and.
   %ENCODE{"asdf" old="a,asdf" new="a,2"}% will give 'asdf'

ENDCOLOR -- end colored text

ENDCOLOR is one of the shortcut macros predefined in DefaultPreferences. It is used to terminate a colour change (revert back to the default colour).

The following colours are available: %YELLOW%, %ORANGE%, %RED%, %PINK%, %PURPLE%, %TEAL%, %NAVY%, %BLUE%, %AQUA%, %LIME%, %GREEN%, %OLIVE%, %MAROON%, %BROWN%, %BLACK%, %GRAY%, %SILVER%

Examples

  • %GREEN% green text %ENDCOLOR% expands to green text

ENDINCLUDE -- end position of topic text if included

If present in included topic, stop to include text at this location and ignore the remaining text. A normal view of the topic shows everyting exept the %STOPINCLUDE% macro itself.

ENDSECTION -- marks the end of a named section within a topic

If the STARTSECTION is named, the corresponding ENDSECTION must also be named with the same name. If the STARTSECTION specifies a type, then the corresponding ENDSECTION must also specify the same type. If the section is unnamed, ENDSECTION will match with the nearest unnamed %STARTSECTION% of the same type above it.

Parameters

Parameter Description Default
"name" Name of the section  
type Type of the section being terminated; supported types section, include, expandvariables, templateonly. section

Examples

  • %ENDSECTION{"X" type="expandvariables"}%

ENDTAB -- ending marker for a tab of a tabpane

This closes a previously opened TAB.

ENDTABPANE -- ending tag for tabpane widget

This closes a previously opened TABPANE.

ENDTWISTY -- complements an opening TWISTY tag to close a twisty

Closes an open twisty

ENDTWISTYTOGGLE -- Twisty closure

Will end the most inner unclosed Twisty Toggle section, using the proper tag

Examples

%ENDTWISTYTOGGLE%

ENV -- inspect the value of an environment variable

Returns the current value of the environment variable in the CGI (Common Gateway Interface) environment. This is the environment that the CommandAndCGIScripts are running in.

If an environment variable is undefined (as against being set to the empty string) it will be returned as not set.

Note: For security reasons, only those environment variables whose names match the regular expression in the configuration setting {AccessibleENV} (in the Security Settings/Miscellaneous section of configure) can be displayed. Any other variable will just be shown as an empty string, irrespective of its real value.

Examples

  • %ENV{MOD_PERL}% displays as: not set

EXAMPLETAG -- example macro tag

The %EXAMPLETAG% variable is handled by the ExamplePlugin

Parameters

Parameter Description Default
"..." Unnamed parameter  
text - example text "..."
format format of report  

Examples

  • %EXAMPLETAG{"hello" format="| $topic: $summary |"}%

EXPAND -- expand macros in a string as if they were used in another topic

The viewer must have VIEW access to topictoexpandin for this to work. All the standard formatting macros can be used in expression, such as $percent and $quot.

Parameters

Parameter Description Default
"text" Text to expand. Note that %-signs must be escaped using $percent, or they will be expanded in the context of the calling topic  
scope Scope to expand the topic in. This is the name of a topic. You can use Web.Topic syntax to refer to a topic in another web %TOPIC%

Examples

EXPAND can be useful when you want to pick up the value of macros defined in another topic. For example, you might want to define a set of preferences in one topic, but pick up their value in another topic (this is very useful when building reusable applications). In this case you can write:
   * Set MYPREFERENCE = value
in "SettingsTopic" and then, in "MyTopic", write:
%EXPAND{"$percentMYPREFERENCE$percent" scope="SettingsTopic"}%
Of course we can also write:
%EXPAND{"$percentMYPREFERENCE$percent" scope="%OTHERTOPIC%"}%
which lets us select which other topic to get the preference value from.

Additional parameters can be passed to the macro being expanded using the standard macro syntax in the name of the macro; for example,

%EXPAND{"$percentMYPREFERENCE{$quotdefault$quot param=$quotvalue$quot}" scope="SettingsTopic"}%

ALERT! EXPAND is not very efficient, and should be used sparingly.

HELP To expand a web preference (for example, a web access control) then set scope="Theotherweb.%WEBPREFSTOPIC%"

FAILEDPLUGINS -- debugging for plugins that failed to load

Also generates a list of handlers defined by plugins

Examples

  • %FAILEDPLUGINS%

FORMAT -- format a list of objects

Parameters

Parameter Description Default
"one, two, three" The list to be expanded into the format. Required. Currently only two types of list data are supported; topic names (type="topic") and plain strings (type="string").  
format Format string; see Supported formatting tokens for possible values.  
header Text to come before the formatted output  
footer Text to come after the formatted output  
separator Separator between formatted elements $n
type Treat input list as either topic or string topic

Examples

   %FORMAT{"one,two,three" type="string" format="   * $item"}%
   %FORMAT{"%SKIN%"
      header="the Skin setting is evaluated in this order:"
      format="   1 =$topic="
      footer="   1 =default="
   }%

Supported formatting tokens

If type="topic" (the default) the format string can contain any of the topic-specific format tokens specified in FormattedSearch ($web, $topic, $parent, $text, $locked, $date, $isodate, $index, $item, $rev, $username, $wikiname, $wikiusername, $createdate, $createusername, $createwikiname, $createwikiusername, $summary, $changes, $formname, $formfield, $pattern, $count, $ntopics, $nhits, $pager). In addition, the macro supports all the standard format tokens.

If type="string" then the comma separated list is treated as a list of strings. In this case, the format tokens $index and $item will return the position of the item in the list (1-based), and the item itself, respectively. Note that a comma can be embedded in the data using the standard formatting token $comma.

The FORMAT macro is currently only of use in formatting lists of topics, or of simple strings. It will be extended in future releases to add the capability to render other object types.

IDEA! For more sophisticated handling of string lists, consider installing Foswiki:Extensions.FilterPlugin

FORMFIELD -- renders a field in the form attached to some topic

Parameters

Parameter Description Default
"name" The name of a Data form field  
topic="..." Topic where form data is located. May be of the form Web.TopicName Current topic
format Format string. See Tokens expanded in format below. $value
default Text shown if the field is defined in the topic, but the field value is empty. For example, a text field for which all the content has been deleted.  
alttext Text shown if the field is not defined in the topic (even if it is specified in the form definition). For example, this is used when a field exists in the form definition, but the referring topic hasn't been edited since it was added.  
rev="n" Specify a revision of the topic. If not specified, defaults to the most recent rev (or the viewed rev if viewing an old rev of the same topic)  
Tokens expanded in format:
  • $value expands to the raw field value
  • $value(display) is the form field value after mapping the stored value to the display value (use with +values form fields). If the field type does not support value mapping, renders the same as $value
  • $name is the field name
  • $title expands to the field title
  • $formname gives the name of the form the field is in. $form is maintained for compatibility, but is deprecated
  • $attributes - from the field definition
  • $type - from the field definition
  • $size - from the field definition
  • $definingTopic - topic in which the field is defined
  • The standard format tokens are also expanded

Examples

 %FORMFIELD{"ProjectName"
   topic="Projects.SushiProject"
   default="(no project name given)"
   alttext="ProjectName field not found in form"
 }%

GMTIME -- formatted Greenwich Mean Time (UTC)

Parameters

Parameter Description Default
"format" format $day $month $year - $hour:$min
%GMTIME% uses the default date format defined by the {DefaultDateFormat} setting in configure

Supported special format tokens:

Token: Unit: Example
$seconds seconds 59
$minutes minutes 59
$hours hours 23
$day day of month 31
$wday day of the Week (Sun, Mon, Tue, Wed, Thu, Fri, Sat) Thu
$dow day of the week (Sun = 0) 2
$week number of week in year (ISO 8601) 34
$month short name of month Dec
$mo 2 digit month 12
$year 4 digit year 1999
$ye 2 digit year 99
$tz either "GMT" (if set to gmtime), or "Local" (if set to servertime) GMT
$iso ISO format timestamp 2024-03-19T08:48:31Z
$rcs RCS format timestamp 2024/03/19 08:48:31
$http E-mail & http format timestamp Tue, 19 Mar 2024 08:48:31 GMT
$epoch Number of seconds since 00:00 on 1st January, 1970 1710838111
Tokens can be shortened to 3 characters

Examples

  • %GMTIME% expands to 19 Mar 2024 - 08:48
  • %GMTIME{"$day $month, $year - $hour:$min:$sec"}% expands to 19 Mar, 2024 - 08:48:31
    ALERT! When used in a template topic, this macro will be expanded when the template is used to create a new topic. See TemplateTopics#TemplateTopicsVars for details.

GROUPINFO -- retrieve details about a group

Parameters

Parameter Description Default
"groupname" Optional name of group  
format Format of a single user or group in the list.
  • $name expands to the group name, and (for users list only)
  • $wikiname, $username and $wikiusername to the relevant strings.
  • $allowschange returns 0 (false) or 1 (true) if the group can be modified by the group member being processed.
  • The standard FormatTokens are also supported.
 
separator separator between items in the list ,
header Header for the list  
footer Footer for the list  
zeroresults If set, and there are no Groups or Members that can be shown, the header and footer are suppressed, and this text is output undefined
show filter the output list of Groups - can be set to all, allowschange, denychange, allowschange(UserWikiName), denychange(UserWikiName) all
expand Set false if users should not be expanded from nested groups. Default behavior is to expand all nested groups into a flat list of users. 1
limit If set, limits the number of results to this
limited If limit is set, and the list is truncated, this text will be added at the end of the list  

ALERT! Note: GROUPINFO will not list members that are hidden from the current authenticated user. If the current user does not have VIEW authority for a user's topic, then the user will not be shown as a group member.

Examples

GROUPS -- a formatted list of groups

Deprecated - do not use. Use VarGROUPINFO instead
  • Expands to a formatted list of user groups.
  • The macro is intended to be used in WikiGroups, to allow a group listing for various user mapping managers.

HISTORY -- control attributes of tables and sorting of table columns

The %HISTORY{}% macro is handled by the HistoryPlugin

Parameters

Parameter Description Default
"format"
format="format"
Format of one line, may include any variable which is supported by macro REVINFO r$rev - $date - $wikiusername
topic Topic name, can be in web.topic format current topic
web Web name current web
versions Number or range (format: from..to). Examples:
To get version 2, write: versions="2"
To get version 2 to 3, write: versions="2..3"
To get version 2 to the latest, write: versions="2.."
To get all versions up to version 5, write: versions="..5"
To get all versions up to but not including the latest, write: versions="..-1"
To get the versions from 1 to 5 in reverse order, write: versions="5..1"
all versions in the order latest to first
header Text to print before the list.
May contain the tokens $next and $previous which will be evaluated if there are newer or older revisions available for the topic that are not listed according to versions (or rev1, rev2, nrev).
These tokens take the syntax $next{'some text' url='url'} (the same for $previous). 'some text' is the text which should be printed, 'url' is the url for the corresponding link.
The tokens $rev1, $rev2, $nrev in 'text' or 'url' will be replaced by appropriate values for the next or previous block of revisions. See the attached oopshistory.tmpl for an example of how to use this.
$next
footer="text" Text to print after the list. May contain the tokens $next and $previous (see header) $previous

Deprecated (but supported) parameters:
Parameter Description Default
nrev Number of revisions to show. Ignored if versions is specified, or if both rev1 and rev2 are specified. 10
rev2 Newest revision to show rev1+nrev if rev1 is specified, latest revision otherwise
rev1 Oldest revision to show rev2-nrev
reverse Show newest revisions first, if on "on"

Additional macros

The following macros are expanded only if there is a corresponding %HISTORY% on the page. If more than one %HISTORY% is used on the same page, the values from the last one will be used.

  • %HISTORY_REV1%: Oldest revision from the printed history
  • %HISTORY_REV2%: Latest revision from the printed history
  • %HISTORY_NREV%: Number of the printed revisions
  • %HISTORY_MAXREV%: Latest available revision of the topic

HOMETOPIC -- home topic in each web

Examples

  • %HOMETOPIC% expands to WebHome, renders as System

HTTP -- get HTTP headers

  • Called with the name of an HTTP request header field, returns its value. Capitalization and the use of hyphens versus underscores are not significant.
  • Request headers are sent by the browser to the server. It is not possible to access the Response headers returned to the browser.
  • Only returns headers permitted by site configuration. Returns '' if the header is not allowed.
  • When called without a parameter, nothing is returned. See VarHTTPS for other options.
ALERT! The HTTP and HTTPS macros are deprecated as of Foswiki release 2.1. and will be removed in a future release.

Parameters

Name Description
"name" Name of the header to get

Examples

Write Returns Notes
%HTTP%   Always returns ''
%HTTP{"Accept-language"}%    
%HTTP{"User-Agent"}% claudebot  
%HTTP{"Cookie"}%   Not allowed by default.
ALERT! You can see the HTTP headers your browser sends to the server on a number of sites e.g. http://www.ericgiguere.com/tools/http-header-viewer.html

HTTP_HOST -- environment variable

Examples

  • %HTTP_HOST% expands to matisse.oca.eu

HTTPS -- get HTTPS headers

The same as %HTTP% but operates on the HTTPS environment variables present when the SSL protocol is in effect. Can be used to determine whether SSL is turned on.
  • Called with the name of an HTTP request header field, returns its value. Capitalization and the use of hyphens versus underscores are not significant.
  • Request headers are sent by the browser to the server. It is not possible to access the Response headers returned to the browser.
  • Only returns headers permitted by site configuration.
  • When called without a parameter, nothing is returned. See VarHTTPS for other options.
ALERT! The HTTP and HTTPS macros are deprecated as of Foswiki release 2.1. and will be removed in a future release.

Parameters

Parameter Description Default
"name" Name of the header to get optional

Examples

Write Returns Notes
%HTTPS% 1 Returns '1' if HTTPS is active
%HTTPS{"Accept-language"}%    
%HTTPS{"User-Agent"}% claudebot  
%HTTPS{"Cookie"}%   Not allowed by default.
ALERT! You can see the HTTP headers your browser sends to the server on a number of sites e.g. http://www.ericgiguere.com/tools/http-header-viewer.html

ICON -- small documentation graphic or icon of common attachment types

Generates a small graphic image from the set attached to DocumentGraphics. Images typically have a 16x16 pixel size. You can select a specific image by name, or you can give a full filename, in which case the type of the file will be used to select one of a collection of common file type icons. If you specify an icon which cannot be found, the one specified in the default parameter will be used (and if that fails, the else icon will be used)

Parameters

Parameter Description Default
"filename or icon name" requested icon else
default default icon to use if requested icon is not found  
alt alt text to be added to the HTML img tag  
quote allows you to control the quote used in the generated HTML "

Examples

  • %ICON{"flag-gray"}% displays as flag-gray
  • %ICON{"pdf"}% displays as pdf
  • %ICON{"docx" default="doc"}% displays as docx
  • %ICON{"smile.pdf"}% displays as smile.pdf
  • %ICON{"/dont/you/dare/smile.pdf"}% returns /dont/you/dare/smile.pdf
  • %ICON{"data.unknown" alt="Unknown file type"}% displays as Unknown file type
  • %ICON{"data.unknown"}% displays as data.unknown
  • %ICON{"http://trunk.foswiki.org/pub/System/DocumentGraphics/xsl.gif"}% displays http://trunk.foswiki.org/pub/System/DocumentGraphics/xsl.gif

  • Graphics: arrowbright arrowbright, bubble bubble, choice-yes choice-yes, hand hand
  • File types: bmp bmp, doc doc, gif gif, hlp hlp, html html, mp3 mp3, pdf pdf, ppt ppt, txt txt, xls xls, xml xml, zip zip

If you find that ICON is producing broken HTML when it is used in another macro e.g. for formatting search results, then this may be because it is using the wrong kind of quotes for the context. In this case you can control the quotes it uses using the quote parameter. For example
  • %ICON{"pdf" quote="'"}%
You can also use formatting tokens such as $quot and $dollar in quote.

ICONURL -- URL of small documentation graphic or icon

Generates the full URL of a DocumentGraphics image, which Foswiki renders as an image. The related %ICON{"name"}% generates the full HTML img tag. Specify image name or full filename (see ICON for details on filenames.)

Parameters

Parameter Description Default
"name" Name of the icon, or pathname to extract an extension from else
default Optional default icon if the primary icon can't be found else

Examples

  • %ICONURL% returns https://matisse.oca.eu/foswiki/bin/../pub/System/DocumentGraphics/else.png
  • %ICONURL{"arrowbright"}% returns https://matisse.oca.eu/foswiki/bin/../pub/System/DocumentGraphics/arrowbright.png
  • %ICONURL{"novel.pdf"}% returns https://matisse.oca.eu/foswiki/bin/../pub/System/DocumentGraphics/pdf.png
  • %ICONURL{"notanicon" default="ram"}% returns https://matisse.oca.eu/foswiki/bin/../pub/System/DocumentGraphics/ram.png
  • %ICONURL{"/queen/boheme.mp3"}% returns https://matisse.oca.eu/foswiki/bin/../pub/System/DocumentGraphics/mp3.png

ICONURLPATH -- URL path of small documentation graphic or icon

Generates the relative URL path of a DocumentGraphics image, typically used in an HTML img tag. Specify image name or full filename (see ICON for details on filenames.)

Parameters

Parameter Description Default
"name" Name of the icon, or pathname to extract an extension from else
default Optional default icon if the primary icon can't be found else

Examples

  • %ICONURLPATH{"locktopic"}% returns /foswiki/bin/../pub/System/DocumentGraphics/locktopic.png
  • %ICONURLPATH{"eggysmell.xml"}% returns /foswiki/bin/../pub/System/DocumentGraphics/xml.png
  • %ICONURLPATH{"notanicon" default="ram"}% returns /foswiki/bin/../pub/System/DocumentGraphics/ram.png
  • %ICONURLPATH{"/doc/xhtml.xsl"}% returns /foswiki/bin/../pub/System/DocumentGraphics/xsl.png

IF -- simple conditionals

Evaluate a condition and show one text or another based on the result. See details in IfStatements.
Parameter Description Default
"condition" Condition to test  
then String to expand if the condition evaluates to true  
else String to expand if the condition evaluates to false  

Examples

  • %IF{"CONDITION" then="THEN" else="ELSE"}% shows
    "THEN" if "CONDITION" evaluates to TRUE, otherwise "ELSE" will be shown
 %IF{"defined FUNFACTOR"
   then="FUNFACTOR is defined"
   else="FUNFACTOR is not defined"
 }%
renders as
FUNFACTOR is not defined

INCLUDE -- include another topic, or subsection of a topic, or a URL, or Foswiki embedded documentation

(Including a topic) Parameters

Parameter: Description: Default:
"SomeTopic" The name of a topic located in the current web, i.e. %INCLUDE{"WebNotify"}%  
"Web.Topic" A topic in another web, i.e. %INCLUDE{"System.SiteMap"}%  
"Web.Topic, SomeOtherTopic, System.OrOtherTopic" A list of topics - INCLUDE will include the first topic that exists and the user has permission to VIEW. If a section is also specified, it will use the first topic that has that section defined in it.  
pattern Include a subset of a topic or a web page. Specify a RegularExpression that contains the text you want to keep in parenthesis, e.g. pattern="(from here.*?to here)". IncludeTopicsAndWebPages has more. none
rev Include a previous topic revision; N/A for URLs top revision
warn Warn if topic include fails: Fail silently (if off); output default warning (if set to on); else, output specific text (use $topic for topic name) %INCLUDEWARNING% preferences setting
headingoffset Adds the given offset to any HTML headings generated in the included text. Works on headings defined by HTML tags as well as headings defined using foswiki markup. 0
section Includes only the specified named section, as defined in the included topic by the [VarSTARTSECTION][STARTSECTION{"name" type="section"} ]] and [VarENDSECTION][ENDSECTION{"name" type="section"}]] macros. Nothing is shown if the named section does not exists. section="" is equivalent to not specifying a section  
  Any other parameter will be defined as a macro within the scope of the included topic. The example parameters on the left will result in %PARONE% and %PARTWO% being defined within the included topic.  

(Including a web page) Parameters

Parameter Description Default
"http://..." A full qualified URL, i.e. %INCLUDE{"https://foswiki.org:80/index.html"}%. Supported content types are text/html and text/plain.
IDEA! If the URL resolves to an attachment file on the server this will automatically translate to a server-side include.
 
pattern Include a subset of a topic or a web page. Specify a RegularExpression that contains the text you want to keep in parenthesis, e.g. pattern="(from here.*?to here)". IncludeTopicsAndWebPages has more. none
raw When a page is included, normally Foswiki will process it, doing the following: 1) Alter relative links to point back to originating host, 2) Remove some basic HTML tags (html, head, body, script) and finally 3) Remove newlines from HTML tags spanning multiple lines. If you prefer to include exactly what is in the source of the originating page set this to on.
raw="on" is short for disableremoveheaders="on", disableremovescript="on", disableremovebody="on", disablecompresstags="on" and disablerewriteurls="on".
disabled
literal While using the raw option will indeed include the raw content, the included content will still be processed and rendered like regular topic content. To disable parsing of the included content, set the literal option to "on". off
disableremoveheaders Bypass stripping headers from included HTML (everything until first </head> tag) off
disableremovescript Bypass stripping all <script> tags from included HTML off
disableremovebody Bypass stripping the </body> tag and everything around over and below it off
disablecompresstags Bypass replacing newlines in HTML tags with spaces. This compression step rewrites unmatched <'s into &lt; entities unless bypassed off
disablerewriteurls Bypass rewriting relative URLs into absolute ones off
warn Warn if URL include fails: Fail silently (if off); output default warning (if set to on); else, output specific text (use $topic for topic name) appended with the http error information. %INCLUDEWARNING% preferences setting

HELP JavaScript in included webpages is filtered out as a security precaution per default (disable filter with disableremovescript parameter)

ALERT! Foswiki by default is configured to deny URL format includes.

(Including Foswiki embedded module documentation) Parameters

Parameter Description Default
"doc:..." A full qualified Foswiki module, i.e. %INCLUDE{"doc:Foswiki::Func"}%. The module must be found on the Foswiki lib path  
level Override the root heading level to the specified number  
pattern Include a subset of the module. Specify a RegularExpression that contains the text you want to keep in parenthesis, e.g. pattern="(from here.*?to here)". IncludeTopicsAndWebPages has more. none

INCLUDINGTOPIC -- name of topic that includes current topic

The name of the topic that includes the current topic - same as %TOPIC% in case there is no include. If a topic is used in a chain of INCLUDEs, INCLUDINGTOPIC is set to the topic directly INCLUDing this one, NOT the topic that has been requested by the user (which is given by BASETOPIC)
ALERT! Be careful of the subtle difference between INCLUDINGTOPIC and BASETOPIC. You probably should be using BASETOPIC

INCLUDINGWEB -- web that includes current topic

The web name of the topic that includes the current topic - same as %WEB% if there is no INCLUDE. If a topic is used in a chain of INCLUDEs, INCLUDINGWEB is set to the topic directly INCLUDing this one, NOT the web that has been requested by the user (which is given by BASEWEB)
ALERT! Be careful of the subtle difference between INCLUDINGWEB and BASEWEB. You probably should be using BASEWEB

JQICON -- render an image

Renders an icon made availabe by the IconService.

Parameters

Parameter Description Default
"name" name of the icon to display  
class additional css class for the img tag  
animate can be one of bounce, burst, flash, float, horizontal, passing, pulse, ring, shake, spin, tada, vertical, wrench
alt alt attribute  
title title attribute  
style css style format to be added to the image element  
format format string used to render the icon; known variables to be used in the format string are:
  • $iconName: name as given to the name parameter
  • $iconPath: url path
  • $iconClass: css class as specified by the class parameter
  • $iconStyle: css styles as specified by the style parameter
  • $iconAlt: alt attribute-value; if the alt parameter to JQICON is set, this expands to alt='...'
  • $iconTitle: title attribute-value; if the title parameter to JQICON is set, this expands to title='...'
for image icons: <img src='$iconPath' class='$iconClass $iconName' $iconStyle $iconAlt$iconTitle/>; for font icons: <i class='$iconClass' $iconStyle $iconTitle></i>

Example for famfamfam icons:

%JQICON{"tick" alt="alternative content" title="this is a tick icon"}%
%JQICON{"cross"}%
%JQICON{"disk"}%
%JQICON{"star"}%
%JQICON{"lightbulb"}%
%JQICON{"camera"}%
%JQICON{"date"}%
%JQICON{"heart" animate="bounce"}%

Produces:

alternative content cross disk star lightbulb camera date heart

Example for font-awesome icons:

%JQICON{"fa-pagelines" style="font-size:1em;color:#00BF00"}%
%JQICON{"fa-pagelines" style="font-size:2em;color:#0FAF0F"}%
%JQICON{"fa-pagelines" style="font-size:3em;color:#1F9C1F"}%
%JQICON{"fa-pagelines" style="font-size:4em;color:#2D812D"}%
%JQICON{"fa-pagelines" style="font-size:5em;color:#315C31"}%

Produces:

JQICONPATH -- render the url path to an image icon

This is a shortcut for:

%JQICON{"name" format="$iconPath"}%

Note that this macro only makes sense for image icons, those that refer to a single image file. It does not work for font icons such as those defined in JQueryFontAwesome. This web font holds all icons in one large font file and as such cannot be refered to individually by means of their url path the same way as images can.

Examples

%JQICONPATH{"tick"}% expands to /foswiki/bin/../pub/System/FamFamFamSilkIcons/tick.png

JQPLUGINS -- display a summary of available plugins

Parameters

Parameter Description Default
"plugins" this is a regular expression that the plugin identifier must match to be displayed  
format format string to render information for each matching plugin; known variables to be used in the format string are:
  • $active state of the plugin: displays (active) when this plugin is loaded on the current page
  • $author author of the plugin
  • $documentation plugin documentation topic defaults to %SYSTEMWEB%.JQuery$name
  • $homepage link to the hompeage of this third party plugin
  • $index the current index in the list of all plugins being displayed
  • $name name of the plugin as can be used in JQREQUIRE
  • $summary short description what this plugin does; most plugins provide this piece of information in the summary section of the documentation topic
  • $tags list of TML macros this plugin implements
  • $version version of the plugin as provided by the author of this plugin
   1 <a href="$homepage">$name</a> $active $version $author
header header string prepended to the output; empty when no plugin matches  
footer footer string appended to the output; empty when no plugin matches  
separator separator put between each plugin rendered in a row $n
tagformat format string to render a link to any tag documentation a plugin implements [[%SYSTEMWEB%.Var$tag][$tag]]

Examples

 %JQPLUGINS{
   "treeview|slimbox"
   header="   * JQuery Plugins:$n"
   format="      * [[$documentation][$name]] v$version was developed by [[$homepage][$author]]"
 }%
Produces:

JQREQUIRE -- enable a plugin on the current page

This macro will load a list of plugins to be added to the current page. Use JQPLUGINS to display the list of available and active plugins. While loading a plugin, additional plugins it may depend on are loaded as well. Information about these dependencies is stored within the plugins themselves and can't be changed. Dependencies also make sure the javascript code is added to the html page in the right order. It uses ADDTOZONE to aggregate javascript and css at the right place on the html page.
HELP in case of an error JQREQUIRE will produce an inline HTML error message.

Parameters

Parameter Description Default
"plugin,plugin,plugin" comma-separated list of plugins to be loaded  
warn (on/off) allows you to switch off warnings when a plugin was not found on

Examples

  • %JQREQUIRE{"easing,sliding,falling"}%

JQTHEME -- switch jQuery UI theme

Foswiki's default UI theme is configured in $Foswiki::cfg{JQueryPlugin}{JQueryTheme} and defaults to foswiki. Use configure to change this site wide. Use JQTHEME if you decide to use a different theme on the current page.

Some Foswiki skins may come with their own jQuery UI matching the overall user experience of the web design.
HELP in case of an error JQTHEME will produce an inline HTML error message.

Parameters

Parameter Description Default
"name" name of theme: JQueryPlugin knows the following themes base, lightness, redmod, smoothness; additional themes maybe created using the themeroller and installed to /foswiki/bin/../pub/System/JQueryPlugin/$name foswiki
warn (on/off) allows you to switch off warnings when a theme was not found on

LANG -- the language specified by the server locale

This macro is used to generate the lang (and xml:lang) attribute in generated HTML pages. If {UseLocale} is enabled, it is calculated from the configure Internationalization tab -> Locale sub-tab setting of {Site}{Locale}. Otherwise it defaults to en (English).
  • In templates the lang attribute is defined like this:
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="%LANG%" lang="%LANG%">
  • Do not confuse LANG with LANGUAGE

Examples

  • %LANG% expands to en

LANGUAGE -- language code for the current user

Returns the language code for the current user. This is the language used by Foswiki to generate the user interface. The language is detected from the user's browser, unless some site/web/user/session-defined preference setting overrides it.

If a LANGUAGE preference is explicitly set, this will be used as the user language instead of any language detected from the browser.
ALERT! Avoid defining LANGUAGE in a non- per-user way, otherwise users will not be able to choose their preferred language.

Examples

  • %LANGUAGE% expands to en

LANGUAGES -- list available languages

List the languages available (as PO files). These are the languages in which the user interface is available.

Parameters

Parameter Description Default
format format for each item. See below for format tokens available in the format string. "   * $langname"
separator separator between items. "\n" (newline) Note: The standard format tokens can also be used here.
marker Text for $marker if the item matches selection "selected"
selection Current language to be selected in list (none)
format tokens: (In addition to these tokens, the standard format tokens can also be used)
Token Meaning
$langname language's name, as informed by the translators
$langtag language's tag. Ex: en, pt-br, etc.
$marker Marker will be substituted only when the item matches the selection.

Examples

  • %LANGUAGES% expands to
    * Български
  • Čeština
  • Dansk
  • Deutsch
  • English
  • Español
  • Suomi
  • Français
  • Italiano
  • 日本語
  • 한글
  • Nederlands
  • Norsk
  • Polski
  • Português
  • Português brasileiro
  • Русский
  • Svenska
  • tlhIngan Hol
  • Türkçe
  • 简体中文
  • 正體中文
  • <select>%LANGUAGES{format="<option $marker value='$langtag'>$langname</option>" selection="%LANGUAGE%"}%</select> creates an option list of the available languages with the current language selected

LOCALSITEPREFS -- web.topicname of site preferences topic

  • The full name of the local site preferences topic. These local site preferences overload the system level preferences defined in System.DefaultPreferences.

Examples

  • %LOCALSITEPREFS% expands to Main.SitePreferences, renders as SitePreferences

LOGIN -- present a full login link

Examples

LOGOUT -- present a full logout link

TIP You are already logged out, so %LOGOUT expands to an empty string

Examples

  • %LOGOUT% expands to

MAINWEB -- deprecated synonym for USERSWEB

ALERT! Deprecated. Please use %USERSWEB% instead.

MAKETEXT -- creates text using Foswiki's I18N infrastructure

Strings captured in the MAKETEXT macro are automatically mapped to the current user's selected language via locale/*.po translation files.

Parameters

Parameter Description Default
"text"
string="text"
The text to be displayed (the translatable string).  
args a comma-separated list of arguments to be interpolated in the string, replacing [_N] placeholders in it.  

Examples

  • %MAKETEXT{string="Edit"}% expands to Edit
  • %MAKETEXT{"If you have any questions, please contact [_1]." args="%WIKIWEBMASTER%"}% expands to If you have any questions, please contact wiki-ref-webmaster@oca.eu.
  • %MAKETEXT{"Did you want to [[[_1]][reset [_2]'s password]]?" args="%SYSTEMWEB%.ResetPassword,%WIKIUSERNAME%"}% expands to Did you want to reset Main.WikiGuest's password?

Notes

  • [_n] brackets are validated to a positive integer from 1 to 100.
  • Missing arguments are replaced with an empty string ''.
  • An ampersand (&) followed by one ascii alphabetic character (a...z, A...Z) in the translatable string will be expanded to an access key string. For example, &X will expand to <span class='foswikiAccessKey'>X</span>. If you want to write an actual ampersand, either follow it with a non-alphabetic character or write two consecutive ampersands (&&).
  • Translatable strings starting with underscores (_) are reserved. You cannot use translatable phrases starting with an underscore.
  • Make sure that the translatable string is constant. Do not include %MACROS% inside the translatable strings as they will be expanded before the %MAKETEXT{...}% itself is handled. You can, however, use macros in the args, as shown in the examples above.
  • The string will be output in English if no mapping can be found in the .po translation file for the current user's selected language.

Plurals

The %MAKETEXT macro also supports a limited subset of the quant style bracket notation:
  • %MAKETEXT{string="Edit [*,_1,file]" args="4"}% expands to Edit 4 files

Notes on plurals

  • Only 3 arguments are supported.
  • The first parameter must be an asterisk. Literals quant, numf or # are not supported.
  • The 2nd parameter must be the argument number
  • The 3rd parameter is the word or phrase to be made plural.

META -- displays meta-data

Provided mainly for use in templates, this macro generates the parts of the topic view that relate to meta-data (attachments, forms etc.).

Parameters

The unnamed parameter controls what meta-data is displayed, other parameters control how it is displayed.

"form"

Generates the table showing the form fields.

"attachments"

Generates a table of attachments
Parameter Description Default
all to show hidden attachments off
title to show a title - only if attachments are displayed  
template to use a custom template for the rendering of attachments attachtables

"moved"

If a topic was moved or renamed, generates a message with details and a revert link
Parameter Description Default
prefix Prefix that goes before the moved message, but only if the message is generated  
suffix Prefix that goes after the moved message, but only if the message is generated  

"parent"

Display details of ancestor topics
Parameter Description Default
dontrecurse Recursing up the tree incurs some cost. Equivalent to depth=1 off
depth Return only the specified ancestor  
nowebhome Suppress WebHome  
format Format string used to display each parent topic where $web expands to the web name, and $topic expands to the topic name [[$web.$topic][$topic]]
separator Separator between parents >
prefix Prefix that goes before parents, but only if there are parents  
suffix Suffix, only appears if there are parents  

"formfield"

Display the value of a single form field
Parameter Description Default
name name of the field  
newline how to represent newlines in the value $n
bar How to represent vertical bars in the data. Vertical bars are rewritten to an HTML entity by default so as to not be mistaken for a table separator. This option allows you to change what is produced. &vbar;
display If on retrieves the displayed value of a *+values formfield type, as against the default, stored, value off
topic Select which topic to get the meta-data from  
QUERY

METASEARCH -- special search of meta data

ALERT! METASEARCH is deprecated in favour of the new and much more powerful query type search. See SEARCH and QuerySearch.

Parameters

Parameter: Description: Default:
type="topicmoved" What sort of search is required?
"topicmoved" if search for a topic that may have been moved
"parent" if searching for topics that have a specific parent i.e. its children
"field" if searching for topics that have a particular form field value (use the name and value parameters to specify which field to search).
Required
web="%WEB%" Wiki web to search: A web, a list of webs separated by whitespace, or all webs. Current web
topic="%TOPIC%" The topic the search relates to, for topicmoved and parent searches All topics in a web
!| name | form field to search, for field type searches. May be a regular expression (see SEARCH). | | !| value | form field value, for field type searches. May be a regular expression (see SEARCH). | |
title="Title" Text that is prefixed to any search results empty
!| format="..." | Custom format results. Supports same format strings as SEARCH. See FormattedSearch for usage & examples | Results in table |
default="none" Default text shown if no search hit Empty
  • Examples:
      %METASEARCH{
        type="topicmoved"
        web="%WEB%"
        topic="%TOPIC%"
        title="This topic used to exist and was moved to: "
      }%
    You may want to use this in WebTopicViewTemplate and WebTopicNonWikiTemplate:
      %METASEARCH{
        type="parent"
        web="%WEB%"
        topic="%TOPIC%"
        title="Children: "
      }%
    
      %METASEARCH{
        type="field"
        name="Country"
        value="China"
      }%

NONCE -- generate a nonce (developers only)

DEVELOPERS ONLY

This macro is used to generate a 'nonce', a unique key that identifies the source of a request in order to block some kinds of cyber attack. See https://foswiki.org/Support/HowToIntegrateWithRequestValidation for more information.

NOP -- template text not to be expanded in instantiated topics

  • %NOP%
    • In normal topic text, expands to <nop>, which prevents expansion of adjacent macros and wikiwords
    • When the topic containing this is used as a template for another topic, it is removed.
  • %NOP{...}% deprecated
    • In normal topic text, expands to whatever is in the curly braces (if anything).
      ALERT! This is deprecated. Do not use it. Use %STARTSECTION{type="templateonly"}% .. %ENDSECTION{type="templateonly"}% instead (see TemplateTopics for more details).

NOTIFYTOPIC -- name of the notify topic

Examples

  • %NOTIFYTOPIC% expands to WebNotify, renders as WebNotify

PERLDEPENDENCYREPORT -- report perl module dependencies

Intended for use by installers / administrators, reports on the status of Perl dependencies in the Foswiki core and extensions.

Parameters

Parameter Description Default
"extensions" requests dependencies of installed extensions. (not set)

PLUGINDESCRIPTIONS -- list of plugin descriptions

Examples

  • %PLUGINDESCRIPTIONS% expands to
    • SpreadSheetPlugin (20 Jan 2017, 1.23): Add spreadsheet calculations like "$SUM($ABOVE())" to Foswiki tables and other topic text
    • SlideShowPlugin (06 Sep 2016, 2.32): Create web based presentations based on topics with headings
    • AutoViewTemplatePlugin (2016-04-08, 1.24): Automatically sets VIEW_TEMPLATE and EDIT_TEMPLATE
    • CommentPlugin (22 Jan 2018, 2.93): Quickly post comments to a page without an edit/save cycle
    • CompareRevisionsAddonPlugin (1.114, 1.114):
    • ConfigurePlugin (08 Dec 2017, 1.09): configure interface using json-rpc
    • EditRowPlugin (5 Feb 2018, 3.321): Inline edit for tables
    • HistoryPlugin (22 Jan 2018, 1.14): Shows a complete history of a topic
    • HomePagePlugin (1.23, 1.23): Allow User specified home pages - on login
    • InterwikiPlugin (8 Dec 2017, 1.25): Link ExternalSite:Page text to external sites based on aliases defined in a rules topic
    • JQueryPlugin (2 May 2019, 9.10): jQuery JavaScript library for Foswiki
    • MailerContribPlugin (2.84, 2.84): Supports e-mail notification of changes
    • NatEditPlugin (25 Feb 2018, 9.21): A Wikiwyg Editor
    • PreferencesPlugin (1.16, 1.16): Allows editing of preferences using fields predefined in a form
    • PubLinkFixupPlugin (14 Sep 2015, 1.00): For non-utf-8 sites, fix up Pub links to use correct encoding.
    • RenderListPlugin (2.28, 2.28): Render bullet lists in a variety of formats
    • SmiliesPlugin (17 Sep 2015, 2.03): Render smilies like smile as icons
    • SubscribePlugin (08 Dec 2017, 3.6): This is a companion plugin to the MailerContrib. It allows you to trivially add a "Subscribe me" link to topics to get subscribed to changes.
    • TablePlugin (22 Jan 2018, 1.160): Control attributes of tables and sorting of table columns
    • TinyMCEPlugin (1.31, 1.31): Integration of the Tiny MCE WYSIWYG Editor
    • TwistyPlugin (1.63, 1.63): Twisty section Javascript library to open/close content dynamically
    • UpdatesPlugin (22 Jan 2018, 1.04): Checks Foswiki.org for updates
    • WysiwygPlugin (08 Dec 2017, 1.37): Translator framework for WYSIWYG editors

PLUGINVERSION -- the version of a Foswiki Plugin, or the Foswiki Plugins API

Use %PLUGINVERSION{"name"}% to get the version of a specific plugin

Examples

  • %PLUGINVERSION{"InterwikiPlugin"}% expands to 1.25
  • %PLUGINVERSION% to get the version of the API, expands to 2.4

POPUPWINDOW -- opens a topic or url in a new window

Parameters

Parameter Description Default
"topic"
topic="topic"
topic="web.topic"
Topic to open  
url URL to open (if topic is not used)  
label Link label the topic or the url
template View template to call when viewing a topic; not used for URLs "viewplain"
width Width of window "600"
height Height of window "480"
toolbar Show toolbars? "0"
scrollbars Show scrollbars? "1"
status Show status? "1"
location Show location bar? "0"
resizable Is the window resizable? "1"
left Left position "0"
top Top position "0"
center Center the window? "0"
menubar Show menubar? "0"
createnew Create a new window for each popup? "1"

Examples

  • Example with topic link:
    %POPUPWINDOW{"Macros" label="Open this topic in a new window"}%
    Generates: Open this topic in a new window
  • Example with URL:
    %POPUPWINDOW{url="https://foswiki.org"}%
    Generates: https://foswiki.org
  • Enable POPUPWINDOW by writing %JQREQUIRE{"popupwindow"}% on the page

PUBURL -- generate an URL for an attachment

Generate an absolute URL for an attachment, or for a web or topic within the attachment database.

Parameters

Parameter Description Default
"attachment" Name of attachment to link  
web Web  
topic Topic, or Web.Topic  
topic_version Select topic version, if supported most recent
attachment_version Select attachment version, if supported most recent

Examples

  • %PUBURL% expands to https://matisse.oca.eu/foswiki/bin/../pub
  • %PUBURL{"icon_plus.png"}% expands to =%PUBURL{"icon_plus.png"}%
  • %PUBURL{web="System"}% expands to https://matisse.oca.eu/foswiki/bin/../pub/System
  • %PUBURL{topic="System.MainFeatures"}% expands to https://matisse.oca.eu/foswiki/bin/../pub/System/MainFeatures
  • %PUBURL{web="System" topic="MainFeatures"}% expands to https://matisse.oca.eu/foswiki/bin/../pub/System/MainFeatures
  • %PUBURL{topic="System.MainFeatures"}% expands to https://matisse.oca.eu/foswiki/bin/../pub/System/MainFeatures
  • %PUBURL{topic="System.MainFeatures" "icon_plus.png"}% expands to https://matisse.oca.eu/foswiki/bin/../pub/System/MainFeatures/icon_plus.png
  • Also supports topic_version and attachment_version parameters. These can be used with advanced store implementations to select specific attachment versions. However simple file-based stores do not normally support them.
    HELP The 'old' way of building URLs using PUBURL involved concatenating the web and topic names to the PUBURL e.g. %PUBURL%/Main/SystemFeatures. This practice is strongly discouraged, as it does not correctly handle encoding of the parts of the URL. At the first opportunity you should replace all such URLs with the equivalent %PUBURL%{topic="System.MainFeatures"}%, which will handle URL encoding for you.

    IDEA! ATTACHURL provides a shorter way to refer to the attachments on the current topic.

PUBURLPATH -- generate a relative URL for an attachment

Generate a relative URL for an attachment, or for a web or topic within the attachment database.

Parameters

Parameter Description Default
"attachment" Name of attachment to link  
web Web  
topic Topic, or Web.Topic  
topic_version Select topic version, if supported most recent
attachment_version Select attachment version, if supported most recent

Examples

  • %PUBURLPATH% expands to /foswiki/bin/../pub
  • %PUBURLPATH{"icon_plus.png"}% expands to =%PUBURLPATH{"icon_plus.png"}%
  • %PUBURLPATH{web="System"}% expands to /foswiki/bin/../pub/System
  • %PUBURLPATH{topic="System.MainFeatures"}% expands to /foswiki/bin/../pub/System/MainFeatures
  • %PUBURLPATH{web="System" topic="MainFeatures"}% expands to /foswiki/bin/../pub/System/MainFeatures
  • %PUBURLPATH{topic="System.MainFeatures" "icon_plus.png"}% expands to /foswiki/bin/../pub/System/MainFeatures/icon_plus.png
  • Also supports topic_version and attachment_version parameters. These can be used with advanced store implements to select specific attachment versions. However simple file-based stores do not normally support them.
ALERT! This macro will only generate a relative URL if the store supports them, and the context allows it. Otherwise it will generate the same as PUBURL

HELP The 'old' way of building URLs using PUBURLPATHPATH involved concatenating the web and topic names to the PUBURLPATH e.g. %PUBURLPATH%/%WEB%/%TOPIC%. This practice is strongly discouraged, as it does not correctly handle encoding of the parts of the URL. At the first opportunity you should replace all such URLs with the equivalent %PUBURLPATH%{topic="System.MainFeatures"}%, which will handle URL encoding for you.

IDEA! ATTACHURLPATH provides a shorter way to refer to the attachments on the current topic.

QUERY -- get the value of meta-data

Uses the query syntax described in QuerySearch to get information about meta-data from one specified topic.
  • supports formatted access to formfields and other meta-data in topics using the same syntax as is used in IF and SEARCH statements,
  • gives access to all meta-data, including that added by extensions,
  • supports reporting values using JSON and other standards, simplifying the retrieval of meta-data for REST applications,
  • replaces the FORMFIELD macro for most applications.
See QuerySearch for more details of how to write queries

Parameters

Parameter Description Default
"item" The meta-data to query
style set the output format (see below)
rev operate on the given version of the current topic. Note that this will only affect simple queries that refer to the current topic, such as form.name. More complex queries that use searches or indirection to refer to other topics always use the latest version of those topics.

Examples

      Get the name of the form in the current topic:
      %QUERY{"form.name"}%

      Get the value of the 'Firstname' form field in
        the current topic:
      %QUERY{"fields[name='Firstname'].value"}%

      Get the value of the 'Firstname' form field in
        the current topic (shorthand version):
      %QUERY{"Firstname"}%

      Get a list of all the names of attachments on
        the topic 'System.DocumentGraphics':
      %QUERY{"'System.DocumentGraphics'/attachments.name"}%

      Get configuration setting {NameFilter}:
      %QUERY{"{NameFilter}"}%
Plain strings (such as field values) are returned without quotes. Simple arrays of scalars are also returned without quotes, in a comma-separated list (beware of values that contain commas!).

More complex data structures (e.g. arrays of hashes) will only be returned if style="perl" or style="json" are set - else will return a string containing 'undef'.

You can make the macro generate different output formats using the style parameter:
  • style="perl" - generates values as Perl code strings generated by running through CPAN:Data::Dumper
  • style="json" - generates values as JSON strings, suitable for reading by browsers.

Only some configuration settings are available via QUERY: {AccessControlACL}{EnableDeprecatedEmptyDeny}, {AccessibleCFG}, {AdminUserLogin}, {AdminUserWikiName}, {AntiSpam}{EmailPadding}, {AntiSpam}{EntityEncode}, {AntiSpam}{HideUserDetails}, {AntiSpam}{RobotsAreWelcome}, {AttachmentNameFilter}, {AuthRealm}, {AuthScripts}, {Cache}{Enabled}, {DefaultDateFormat}, {DefaultUrlHost}, {DenyDotDotInclude}, {DisplayTimeValues}, {EnableEmail}, {EnableHierarchicalWebs}, {FormTypes}, {HomeTopicName}, {LeaseLength}, {LeaseLengthLessForceful}, {LinkProtocolPattern}, {LocalSitePreferences}, {LoginNameFilterIn}, {MaxRevisionsInADiff}, {MinPasswordLength}, {NameFilter}, {NotifyTopicName}, {NumberOfRevisions}, {PluginsOrder}, {Plugins}{WebSearchPath}, {PluralToSingular}, {Register}{AllowLoginName}, {Register}{Approvers}, {Register}{DisablePasswordConfirmation}, {Register}{EnableNewUserRegistration}, {Register}{NeedApproval}, {Register}{NeedVerification}, {Register}{RegistrationAgentWikiName}, {ReplaceIfEditedAgainWithin}, {SandboxWebName}, {ScriptSuffix}, {ScriptUrlPath}, {Site}{Locale}, {SitePrefsTopicName}, {Stats}{TopContrib}, {Stats}{TopicName}, {Stats}{TopViews}, {SuperAdminGroup}, {SystemWebName}, {TemplateLogin}{AllowLoginUsingEmailAddress}, {TemplatePath}, {TrashWebName}, {UploadFilter}, {UseLocale}, {UserInterfaceInternationalisation}, {UsersTopicName}, {UsersWebName}, {Validation}{Method}, {WebMasterEmail}, {WebMasterName}, {WebPrefsTopicName}

QUERYPARAMS -- show parameters to the query

Expands the parameters to the query that was used to display the page.

Parameters

Parameter: Description: Default:
format Format string for each entry $name=$value
separator Separator string $n (newline)
encoding Control how special characters are encoded. If this parameter is not given, safe encoding is performed which HTML entity encodes the characters '"<>%.
entity - Encode special characters into HTML entities, like a double quote into &#034;. Does not encode \n or \r.
safe - Encode characters '"<>% into HTML entities. (this is the default)
html - As type="entity" except it also encodes \n and \r
quotes - Escape double quotes with backslashes (\"), does not change other characters
url - Encode special characters for URL parameter use, like a double quote into %22
safe
The following tokens are expanded in the format string:
Token Expands To
$name Name of the parameter
$value String value of the parameter. Multi-valued parameters will have a "row" for each value.
In addition the standard format tokens are also expanded.

Examples

   %QUERYPARAMS{
     format="<input type='hidden' name='$name' value='$value' encoding="entity" />"
   }%
ALERT! Security warning!

Using QUERYPARAMS can easily be misused for cross-site scripting unless specific characters are entity encoded. By default QUERYPARAMS encodes the characters '"<>% into HTML entities (same as encoding="safe") which is relatively safe. The safest is to use encoding="entity". When passing QUERYPARAMS inside another macro always use double quotes ("") combined with using QUERYPARAMS with encoding="quote". For maximum security against cross-site scripting you are advised to install the Foswiki:Extensions.SafeWikiPlugin.

QUERYSTRING -- full, unprocessed string of parameters to this URL

  • String of all the URL parameters that were on the URL used to get to the current page. For example, if you add ?name=Samantha;age=24;eyes=blue to this URL you can see this in action. This string can be appended to a URL to pass parameter values on to another page.
    ALERT! URLs built this way are typically restricted in length, typically to 2048 characters. If you need more space than this, you will need to use an HTML form and =%QUERYPARAMS%=

Examples

  • %QUERYSTRING% expands to

REMOTE_ADDR -- environment variable

Examples

  • %REMOTE_ADDR% expands to 3.239.214.173

REMOTE_PORT -- environment variable

Examples

  • %REMOTE_PORT% expands to

REMOTE_USER -- environment variable

Examples

  • %REMOTE_USER% expands to
    ALERT! Displays the user identity established by the Web Server. Not available when using Template Autentication. The REMOTE_USER variable only expands when the active script is configured to Require valid-user in the Apache configuration. Eg. If your site uses Apache authentication and allows guest access, view this page with bin/view and bin/viewauth to see the effect.

RENDERLIST -- render bullet lists in a variety of formats

The %RENDERLIST% macro is handled by the RenderListPlugin

Examples

%RENDERLIST{"org" focus="Sales.WestCoastTeam"}%
      * [[Eng.WebHome][Engineering]]
         * [[Eng.TechPubs][Tech Pubs]]
      * [[Sales.WestCoastTeam][Sales]]
         * [[Sales.EastCoastTeam][East Coast]]
         * [[Sales.WestCoastTeam][West Coast]]
Expands as:
  Sales
  East Coast
  West Coast

RENDERZONE - render the content of a zone

Rendersa zone. See ADDTOZONE for an explanation of zones.

Parameters

Parameter Description Default
"zone" name of the zone   (reguired)
format format string for each item added to the zone
$item <!--<literal> $id $missing</literal>-->
missingtoken string assigned to the $missing format token for use in the format parameter.
$id: requires= missing ids: $missingids
chomp remove leading and trailing whitespace from formatted items, can be useful for pretty-printing and compression. off
header prepended to the output  
footer appended to the output  
separator put between each item of a zone  
The following tokens are expanded in the format string:
  • $id - id of the ADDTOZONE call within the zone currently being rendered.
  • $item - text of the ADDTOZONE call within the zone currently being rendered.
  • $zone - the "zone" currently being rendered.
  • $missing - if the ADDTOZONE call being rendered required any id which was not found, then $missing is the missingtoken parameter; empty string otherwise.
  • $missingids - comma separated list of ids that were required by the ADDTOZONE call currently being rendered but weren't found within this zone.
Supports the standard format tokens in all parameters.

HELP header and footer are not output if there is no content in the zone (nothing has been ADDTOZONEd ). However they are output if the output is the empty string (at least one ADDTOZONE has been processed).

HELP Zones are cleared after being rendered; they are only ever rendered once.

HELP head, script and body are default zones. The corresponding RENDERZONE is already included in the base foswiki.tmpl. head and script are automatically inserted before the </head> tag in the output HTML page. body is automatically inserted before the </body> tag in the output HTML page.

HELP Macros will be expanded in all zones. TML markup will not be expanded in the head and scripts zones. Any formatting in head and scripts zones including [[TML links]] must be done directly using HTML. TML pseudo-tags like nop. verbatim, literal. and noautolink are removed from head and script zones and have no influence on the markup. All other zones will be rendered as normal topic text.

HELP Normally, dependencies between individual ADDTOZONE statements are resolved within each zone. However, if {MergeHeadAndScriptZones} is enabled in configure, then head content which requires an id that only exists in script will be re-ordered to satisfy this dependency. ALERT! {MergeHeadAndScriptZones} will be removed from a future version of Foswiki.

REVARG -- &rev=n parameter of current request

%REVARG% If a topic revision is requested in the URL, it returns the revision of the current topic suitable for concatenation to the view query parameters. Otherwise returns an empty string.

Examples

  • %REVARG% expands to (simulated) &rev=3 (actual)

REVINFO -- revision information of current topic

%REVINFO% is equivalent to %REVINFO{format="r1.$rev - $date - $wikiusername"}%

Examples

  • %REVINFO% expands to r1 - 21 Sep 2017 - 01:45:29 - ProjectContributor
  • %REVINFO{"$n      * $topic: $date"}% expands to

Parameters

Parameter Description Default
"format" Format of revision information, see supported formatting tokens below "r$rev - $date - $time - $wikiusername"
web Name of web Current web
topic Topic name Current topic
rev Specific revision number Latest revision
Supported formatting tokens:
Token Unit
$web Name of web
$topic Topic name
$rev Revision number
$username Login username of revision
$wikiname WikiName of revision
$wikiusername WikiName with Main web prefix
$date Revision date. Actual date format defined as {DefaultDateFormat} in configure
$time Revision time
$iso Revision date in ISO date format
$min, $sec, etc. Same date format qualifiers as GMTIME{"format"}

Examples

  • %REVINFO{"$date - $wikiusername" rev="43"}%
  • To get the latest revision, even when looking at an older revision:
    %REVINFO{"$rev" rev="-1"}%

REVTITLE -- The requested revision as displayed in topic breadcrumbs

If a topic revision is requested in the URL, it returns the printable revision of the current topic revision. Otherwise returns an empty string.

Examples

  • %REVTITLE% expands to (simulated) (r3) (actual)

SCRIPTNAME -- name of current script

  • The name of the current script is shown, including script suffix, if any (for example viewauth.cgi)

Examples

  • %SCRIPTNAME% expands to view

SCRIPTSUFFIX -- script suffix

  • Some Foswiki installations require a file extension for CGI scripts, such as .pl or .cgi

Examples

  • %SCRIPTSUFFIX% expands to

SCRIPTURL -- URL of script(s)

Expands to the URL of a script, or the base URL of all scripts

Parameters

Parameter Description Default
"$script" Name of script  
web Web name to add to URL  
topic Topic (or Web.Topic) to add to URL  
Any other parameters to the macro will be added as parameters to the URL

Examples

  • %SCRIPTURL{"view" topic="Cartoons.EvilMonkey"}% will expand to https://matisse.oca.eu/foswiki/bin/view/Cartoons/EvilMonkey
  • %SCRIPTURL{"view" web="Cartoons"}% will expand to https://matisse.oca.eu/foswiki/bin/view/Cartoons?web=Cartoons
  • %SCRIPTURL{"view" topic="Cartoons.EvilMonkey" rev="1"}% will expand to https://matisse.oca.eu/foswiki/bin/view/Cartoons/EvilMonkey?rev=1
  • %SCRIPTURL{"edit" web="Cartoons" topic="EvilMonkey" t="%GMTIME{"$epoch"}%"}% expands to https://matisse.oca.eu/foswiki/bin/edit/Cartoons/EvilMonkey?t=1710838111
  • %SCRIPTURL% expands to https://matisse.oca.eu/foswiki/bin
  • %SCRIPTURL{script}% expands to https://matisse.oca.eu/foswiki/bin/script
HELP In most cases you should use SCRIPTURLPATH instead, as it works much better with URL rewriting

HELP The edit script should always be used in conjunction a t="%GMTIME{"$epoch"}%" parameter to ensure pages about to be edited are not cached in the browser

ALERT! The 'old' way of building URLs using SCRIPTURL involved concatenating the web and topic names to the SCRIPTURL e.g. %SCRIPTURL{"script"}%/Cartoons/EvilMonkey. This practice is strongly discouraged, as it does not correctly handle encoding of the parts of the URL. At the first opportunity you should replace all such URLs with the equivalent %SCRIPTURL%{"script" topic="Cartoons.EvilMonkey"}%, which will handle URL encoding for you.

ALERT! The SCRIPTURL macro does NOT support building jsonrpc or rest requests with parameters. They should still use the "contatenation" method. This is expected to be fixed in Foswiki 2.2.

SCRIPTURLPATH -- URL path of script(s)

Expands to the base URL of scripts, without protocol or host

Parameters

Parameter Description Default
"$script" Name of script  
web Web name to add to URL  
topic Topic (or Web.Topic) to add to URL  
Any other parameters to the macro will be added as parameters to the URL

Examples

  • %SCRIPTURLPATH{"view" topic="Cartoons.EvilMonkey"}% expands to /foswiki/bin/view/Cartoons/EvilMonkey
  • %SCRIPTURLPATH{"view" web="Cartoons"}% expands to /foswiki/bin/view/Cartoons?web=Cartoons
  • %SCRIPTURLPATH{"view" topic="Cartoons.EvilMonkey" rev="1"}% will expand to /foswiki/bin/view/Cartoons/EvilMonkey?rev=1
  • %SCRIPTURLPATH{"edit" web="Cartoons" topic="EvilMonkey" t="%GMTIME{"$epoch"}%"}% expands to /foswiki/bin/edit/Cartoons/EvilMonkey?t=1710838111
  • %SCRIPTURLPATH% expands to /foswiki/bin
  • %SCRIPTURLPATH{script}% expands to /foswiki/bin/script
HELP The edit script should always be used in conjunction with a t="%GMTIME{"$epoch"}%" parameter to ensure pages about to be edited are not cached in the browser

HELP See SCRIPTURL if you expect to need the protocol and host e.g. if you are saving the HTML of the page and using it on a different host.

ALERT! The 'old' way of building URLs using SCRIPTURLPATH involved concatenating the web and topic names to the SCRIPTURLPATH e.g. %SCRIPTURLPATH{"script"}%/Cartoons/EvilMonkey. This practice is strongly discouraged, as it does not correctly handle encoding of the parts of the URL. At the first opportunity you should replace such URLs with the equivalent %SCRIPTURLPATH%{"script" topic="Cartoons.EvilMonkey"}%, which will handle URL encoding for you.

ALERT! The SCRIPTURL macro does NOT support building jsonrpc or rest requests with parameters. They should still use the "contatenation" method. This is expected to be fixed in Foswiki 2.2.

SEARCH -- search content

Inline search, shows a search result embedded in a topic

Parameters

Parameter Description Default:
"text"
search="text"
Search term. Is a keyword search, literal search, regular expression search, or query, depending on the type parameter. SearchHelp has more required
web Comma-separated list of webs to search. e.g.
web="Main, Know"
web="all"
The special word all means all webs that do not have the NOSEARCHALL preference set to on in their WebPreferences.
You can specifically exclude webs from an all search using a minus sign - for example, web="all,-Secretweb". Caution: The "all,-Secretweb" syntax does not exclude subwebs of the excluded web. It applies to only a single web. See Foswikitask:Item8893 AccessControls are respected when searching webs; it is much better to use them than NOSEARCHALL. Wildcards are not currently supported for web names.
Current web
topic Limit search to topics e.g.
topic="WebPreferences"
topic="*Bug"
topic="MyTopic,YourTopic"
A topic, a topic with asterisk wildcards, or a list of topics separated by comma.
Note this is a list of topic names and must not include web names. Adding a topic restriction to a search can greatly improve the search performance.
All topics in a web
excludetopic Exclude topics from search e.g.
excludetopic="Web*"
excludetopic="WebHome, WebChanges"
A topic, a topic with asterisk wildcards, or a list of topics separated by comma.
Note this is a list of topic names and must not include web names.
 
scope Search topic name ("topic"); the body ("text") of the topic; or name and body ("all") text
type Control how the search is performed when scope="text" or scope="all"
"keyword" - use Google-like controls as in soap "web service" -shampoo; searches word parts: using the example, topics with "soapsuds" will be found as well, but topics with "shampoos" will be excluded
"word" - identical to keyword but searches whole words: topics with "soapsuds" will not be found, and topics with "shampoos" will not be excluded
"literal" - search for the exact string, like web service
"regex" - use a RegularExpression search like soap;web service;!shampoo; to search on whole words use \bsoap\b
"query" - query search of form fields and other meta-data, like (Firstname='Emma' OR Firstname='John') AND Lastname='Peel'
%SEARCHVARDEFAULTTYPE% preferences setting (currently literal)
order Sort the results of search by the topic names ("topic"), topic creation time ("created"), last modified time ("modified"), last editor's WikiName ("editby"), or named field of DataForms ("formfield(name)"). The sorting is done web by web; if you want to sort across webs, create a formatted table and sort it with TablePlugin's initsort. Note that dates are sorted most recent date last (i.e at the bottom of the table).
The web order is always alphabetical. When ordered by topic the result is first ordered by web and then by topic.
topic
limit A number will limit the number of topics from which results will be returned. This is done after sorting if order is specified. Note that this does not limit the number of hits from the same topic when you have multiple="on". all
date limits the results to those pages with latest edit time in the given time interval.  
reverse If "on" will reverse the direction of the search. Does only apply to key specified by order. off
casesensitive If "on" perform a case sensitive search. (For type=query searches, casesensitive is always on. See QuerySearch for more flexible case comparison options) off
decode Reverse any encoding done to protect search terms by %URLPARAM{}% macro. Comma separated list of encodings, entered in reverse order of the URLPARAM macro arguments. Supported decoding types are entity|entities, safe and url.  
bookview If ="on", perform a BookView search, e.g. show complete topic text. Very resource demanding. Use only with small result sets off
nonoise If "on", shorthand for nosummary="on" nosearch="on" nototal="on" zeroresults="off" noheader="on" noempty="on" off
nosummary Show topic title only, no content summary off
nosearch Suppress search string off
noheader Suppress default search header
Topics: Changed: By: , unless a header is explicitly specified
Show default search header, unless search is inline and a format is specified
nototal Do not show number of topics found off
zeroresults If off, false or 0, suppress/replace all output if there are no hits. Can also be set to a FormattedSearch string to customise the output on - displays the summary, and number of topics found. "Number of topics: 0"
noempty If "on", suppress results for webs that have no hits. off
header Custom format results: see FormattedSearch for usage & examples  
format Custom format results: see FormattedSearch for usage & examples  
footer Custom format results: see FormattedSearch for usage & examples  
expandvariables If "on", expand embedded macros before applying a FormattedSearch on a search hit. Useful to show the expanded text, e.g. to show the result of a SpreadSheetPlugin %CALC{}% instead of the formula off
multiple If ="on", find multiple hits per topic. Each hit can be formatted. The last token is used in case of a regular expression ";" and search off (only one hit found per topic
nofinalnewline If "on", the search variable does not end in a line by itself. Any text continuing immediately after the SEARCH macro on the same line will be rendered as part of the table generated by the search, if appropriate. This feature is only active when format is defined. on
recurse If "on", recurse into subwebs, if subwebs are enabled. Note: recurse will currently search subwebs of explicitly excluded webs. (web="all, -Sandbox" recurse="on") will still search subwebs of Sandbox. This behavior is likely to change in a future release. off
separator Separator between search hits (only used when format is set) uses FormatTokens.
If separator is not defined, the default is "$n" (newline). Not defining the separator will additionally cause a newline to be added after a header and before a footer.
$n (Newline)
headingoffset Adds the given offset to any HTML headings generated in the search result. Works on headings defined by HTML tags as well as headings defined using foswiki markup. 0
newline Line separator within a search hit. Useful if you want to put multi-line content into a table cell, for example if the format parameter contains a $pattern() or a $formfield() the result of which may contain newlines, in which case you could use newline="%BR%" $n (Newline)
pagesize number of items to show per page 25
showpage Page of items to show (starts at 1) (overridden by the value specified by the URL parameter hash from $previousurl and $nexturl) "1"
pager If "on" adds paging to your SEARCHes
Note: the default pager (when pagerformat is not defined) requires the parameters to the SEARCH to not change while paging, as it uses $previousurl and $nexturl. If you use time variable parameters, you will have to define your own pagerformat.
off
pagerformat Custom format results: see FormattedSearch for usage & examples filled from skin template
groupby Warning: this option is liable to change dramatically (and potentially incompatibly) in the next major release of foswiki. Setting to "none" applies only to multi-web SEARCHs, and means the header and footer are only output once - at the beginning and end of the list of results, and the order parameter is applied over the entire set of results (this setting removes the legacy that results are always partitioned by web) see SiteChanges for an example. web

Examples

  • %SEARCH{"wiki" web="%USERSWEB%" scope="topic"}%
  • %SEARCH{
        "FAQ"
        nonoise="on"
        header="| *Topic: * | *Summary: * |"
        format="| $topic    | $summary    |"
    }%
    (displays results in a table with header - details)

Results are sorted alphanumerically on the web name (major key) and topic name (minor key). Only the minor key is affected by the order parameter.

TIP The appearance of the table emitted by the SEARCH may be controlled with TablePlugin's %TABLE{}% macro placed just before the %SEARCH{}%. Example: %TABLE{ tablewidth="90%" }%

SERVERINFORMATION -- report detailed web server information

Intended for use by installers / administrators, reports on the runtime information of the Foswiki installation, including all environment variables and other execution related information.

Parameters

Parameter Description Default
environment Displays critical %ENV Environment variables. (Displayed if nothing set)
execution Displays important execution details. (Displayed if nothing set)
modules Displays loaded modules, along with version and location.. (Displayed if nothing set)

SERVERTIME -- formatted server time

Same format parameters as VarGMTIME[GMTIME%]], but displaying the server time instead of UTC.

Examples

  • %SERVERTIME% elsnds to 19 Mar 2024 - 09:48
  • %SERVERTIME{"$hou:$min"}% expands to 09:48
ALERT! Note: When used in a template topic, this macro will be expanded when the template is used to create a new topic. See TemplateTopics#TemplateTopicsVars for details.

SESSIONID -- unique ID for this session

Examples

  • %SESSIONID% expands to 45c75c6d8883e8d7e184a4736d610e61

SESSIONVAR -- name of CGI and session variable that stores the session ID

Examples

  • %SESSIONVAR% expands to SFOSWIKISID

SESSION_VARIABLE -- get, set or clear a session variable

Parameters

Parameter Description
"name" name of variable
set value to set it to
clear if it is to be cleared
TIP The users ID is in the AUTHUSER session variable, and is read-only

Examples

  • %SESSION_VARIABLE{"MYVAR" set="myval"}%
  • %SESSION_VARIABLE{"MYVAR" clear=""}%

SET -- set a preference setting during runtime

A preference setting created via a %SET macro is usable by the topic containing the %SET statement, and in any other topics %INCLUDing or %INCLUDEd when rendering the topic TML. This is unlike list or META style preference settings which are only set when the base topic is loaded, and never set during macro expension when an %INCLUDEd topic is processed.

A TMPL:DEF template definition containing %SET macros will also add those values to the current scope as if these settings have been parsed as part of the base topic's text.

Setting a preference setting in a list like in

   * Set foo = %SEARCH{...

or in META settings will store the text of the TML expression.

The equivalent %SET statement:

%SET{"foo" value="%SEARCH{..."}%

will store the result of the TML expression as a consequence of the parser processing macros inside-out-left-to-right.

Parameters

Parameter Description Default
"name" Name of preference to set  
value Value to set it to  

Examples

To cache the result of another macro use %SET{"search_result" value="%SEARCH{...}%"}%. The result of the value expression will be temporarily bound to the variable %search_result% and might be used within the scope of the current topic being processed, or in %INCLUDing or other %INCLUDEd topics.

Note that this macro does NOT expand format tokens that are used to alter the macro processing sequence. ($percent, $dollar, ...).

SHOWPREFERENCE -- show where preferences are defined.

Preference values are shown in a bulleted list, together with where they were defined.

Parameters

Parameter Description Default:
"name,name,name" Comma-separated list of preferences to show  

Examples

  • %SHOWPREFERENCE% will show all preferences
  • %SHOWPREFERENCE{"ATTACHFILESIZELIMIT"}% expands to
   * Set ATTACHFILESIZELIMIT = "25000000"
      * ATTACHFILESIZELIMIT was defined in Main.SitePreferences

  • %SHOWPREFERENCE{"DENYWEBCHANGE,ALLOWWEBCHANGE"}% expands to
   * Set DENYWEBCHANGE = ""
   * Set ALLOWWEBCHANGE = "%USERSWEB%.AdminGroup"
      * ALLOWWEBCHANGE was defined in SystemFoswiki.WebPreferences

SKIN -- current skin

%SKIN% expands the skin search path. For instance, SKIN can be set to catskin, bearskin. The SKIN setting can be overridden using the URL parameter skin, such as ?skin=catskin,bearskin You can also extend the existing skin path using covers - see COVER

Examples

  • %SKIN% expands to pattern
  • See Skins for more information

SLIDESHOWEND -- end slideshow

The %SLIDESHOWEND% macro is handled by the SlideShowPlugin

Examples

See SLIDESHOWSTART

SLIDESHOWSTART -- convert a topic with headings into a slideshow

Handled by the SlideShowPlugin

Parameters

Parameter Description
template optional name of slide template to use

Examples

 %SLIDESHOWSTART%
 ---++ Sample Slide 1
    * Bullet 1
    * Bullet 2
 ---++ Sample Slide 2
    * Bullet 1
    * Bullet 2
 %SLIDESHOWEND%
  • Expands as:

Start presentation

Slide 1: Sample Slide 1

  • Bullet 1
  • Bullet 2

Slide 2: Sample Slide 2

  • Bullet 1
  • Bullet 2

SPACEDTOPIC -- topic name, spaced and URL-encoded deprecated

The current topic name with added URL-encoded spaces, for use in regular expressions that search for backlinks to the current topic

Examples

  • %SPACEDTOPIC% expands to Var%20*SPACEDTOPIC
    ALERT! This is a deprecated macro. It can be duplicated with %ENCODE{%SPACEOUT{"%TOPIC%" separator=" *"}%}%

SPACEOUT -- renders string with spaces inserted in sensible places

Inserts spaces after lower case letters that are followed by a digit or a capital letter, and after digits that are followed by a capital letter. Useful for spacing out WikiWords

Examples

  • %SPACEOUT{"WebHome"}% expands to: Web Home

Parameters

Parameter Description Default
separator The separator to put between words e.g. %SPACEOUT{"DogsCatsBudgies" separator=", "}% -> Dogs, Cats, Budgies ' '
TIP Spaced out WikiWords are not automatically linked. To SPACEOUT a WikiWord but preserve the link use "double bracket" format. For example, [[WebHome][%SPACEOUT{"WebHome"}%]] expands to Web Home

STARTINCLUDE -- start position of topic text if included

If present in included topic, start to include text from this location up to the next %ENDINCLUDE% macro, or to the end. A normal view of the topic shows everything except the %STARTINCLUDE% macro itself.
TIP If you want more than one part of the topic included, use %STARTSECTION{type="include"}% instead

STARTSECTION -- marks the start of a section within a topic

Section boundaries are defined with %STARTSECTION{}% and %ENDSECTION{}%. Sections may be given a name to help identify them, and/or a type, which changes how they are used.
    • type="section" - the default, used for a generic section, such as a named section used by INCLUDE.
    • type="include" - like %STARTINCLUDE% ... %STOPINCLUDE% except that you can have as many include blocks as you want which are all merged into one when included (%STARTINCLUDE% is restricted to only one). Sections of type include may not be given a name.
    • type="expandvariables" - all macros inside an "expandvariables" type section gets expanded when a new topic based on the template topic is created. See TemplateTopics for more information.
    • type="templateonly" - start position of text to be removed when a template topic is used. This is used to embed text that you do not want expanded when a new topic based on the template topic is created. See TemplateTopics for more information.

Parameters

Parameter Description Default
"name" Name of the section. Must be unique inside a topic. Generated name
=type=" Type of the section; type "section", "expandvariables", "include" or "templateonly" "section"
Any other parameter will be defined as a default value for a macro within the scope of the section. The example parameters on the left will result in %PARONE% and %PARTWO% being defined if they are not defined parameters to the INCLUDE, or nested INCLUDEs surrounding it, or previsouly defined Preferences.

HELP If a section is not given a name, it will be assigned one. Unnamed sections are assigned names starting with _SECTION0 for the first unnamed section in the topic, _SECTION1 for the second, etc..

HELP You can define nested sections. It is not recommended to overlap sections, although it is valid in Foswiki. Use named sections to make sure that the correct START and ENDs are matched. Section markers are not displayed when a topic is viewed.

Examples

  • %STARTSECTION{"name"}% ................... %ENDSECTION{"name"}%
  • %STARTSECTION{"name" type="section"}% .... %ENDSECTION{"name" type="section"}% (type="section" is the default)
  • %STARTSECTION{type="include"}% ........... %ENDSECTION{type="include"}%
  • %STARTSECTION{type="expandvariables"}% ... %ENDSECTION{type="expandvariables"}%
  • %STARTSECTION{type="templateonly"}% ...... %ENDSECTION{type="templateonly"}%

STATISTICSTOPIC -- name of statistics topic

Examples

  • %STATISTICSTOPIC% expands to WebStatistics, renders as WebStatistics

STOPINCLUDE -- Alias for ENDINCLUDE

STOPSECTION -- Alias for ENDSECTION

SUBSCRIBE{ attributes } - subscribe the current user for notification of changes to the current topic

Anywhere in a topic or template:
  • %SUBSCRIBE{...}% or simply %SUBSCRIBE%
    Parameter Default Meaning
    who Logged-in user Who to subscribe (wikiname, no web)
    topic Current topic Topic to subscribe to. Wildcards may be used e.g. topic="Item*" will subscribe to all topics starting with Item. Use topic="Main.*" to subscribe to the WebNotify for the Main web.
    unsubscribe Not set If set to "on", will unsubscribe the user

The format of the Subscribe/Unsubscribe button is defined in a template file templates/subscribe.tmpl. The normal skin mechanisms can be used to override this with your own local definitions. The default template works with Javascript to provide a smooth interactive experience.

ALERT! The format and formatunsubscribe parameters have been removed and will be ignored. The version of PatternSkin shipped with Foswiki 1.1.9 used these parameters.

SYSTEMWEB -- name of documentation web

The web containing all documentation and default preference settings

Examples

  • %SYSTEMWEB% expands to System

TAB -- tab inside a tabpane widget

Defines a tab inside a TABPANE area; must be closed using ENDTAB.

Parameters

Parameter Description Default
"text" label of the tab Tab
before when switching tabs, this is the javascript fragment to be executed just before the tab is displayed  
after this javascript handler is to be executed after the tab has been made visible  
afterload this javascript handler will be called when content loaded asynchronously (using the url parameter, below) has finished loading; depending on the network latency, this can be significantly later than execution of the after handler above  
id id of this tab; this id can be used in the TABPANEs select parameter to display this tab; this id is also added to the class attribute of the html element representing the tab button  
url link from where to load the content of the tab asynchronously when selecting this tab; the result of the addressed handler will replace the content area; if no url is set the content of the TAB ... ENDTAB area will be shown when the tab is selected  
width width of the tab area auto
height height of the tab area auto
container element where ajax content will be loaded; this is only used together with url  

TABLE -- control attributes of tables and sorting of table columns

The %TABLE{}% macro is handled by the TablePlugin

Attributes for tables

Parameter Description Default Example
tableborder Table border width (pixels). "1" tableborder="2"
tablebordercolor Table border color. unspecified tablebordercolor="#333"
tableframe Table frame, set to "void" (no sides), "above" (the top side only), "below" (the bottom side only), "hsides" (the top and bottom sides only), "lhs" (the left-hand side only), "rhs" (the right-hand side only), "vsides" (the right and left sides only), "box" (all four sides), "border" (all four sides). unspecified tableframe="hsides"
tablerules Table rules, set to "none" (no rules), "groups" (rules will appear between row groups and column groups only), "rows" (rules will appear between rows only), "cols" (rules will appear between columns only), "all" (rules will appear between all rows and columns). See also: headerrules and datarules. unspecified tablerules="rows"
tablewidth Table width: percentage of window width, or absolute pixel value. unspecified tablewidth="100%"
headerrows Number of header rows to exclude from sort. (will be rendered in a HTML thead section) "1" headerrows="1"
footerrows Number of footer rows to exclude from sort. (will be rendered in a HTML tfoot section) "0" footerrows="1"
id Unique table identifier string, used for targeting a table with CSS. tableN (where N is the table order number on the page) id="userTable"
summary Table summary used by screen readers: A summary of what the table presents. It should provide an orientation for someone who listens to the table. unspecified summary="List of subscribed users"
caption Table caption: A title that will be displayed just above the table. unspecified caption="Users"
inlinemarkup Set to "on" to generate inline markup HTML (in addition to the CSS markup); useful if you need to copy the table, for instance to paste the table into an email). unspecified inlinemarkup="on"
class Add specified class to the default foswikiTable class. unspecified class="mytable"

Attributes for table sorting

Parameter Description Default Example
sort Set the table sorting user interface (clickable column headers) "on" or "off". unspecified sort="on"
initsort Column to sort initially (use "1" for the first column). If specified, sorting is enabled; by setting sort="off" the sorting interface can be hidden. unspecified initsort="2"
initdirection Initial sorting direction for initsort, set to "up" (descending, or decreasing in value) or "down" (ascending, or increasing in value). down initdirection="up"
disableallsort Disable all sorting, both initsort and header sort. This is mainly used by plugins such as the EditTablePlugin to disable sorting in a table while editing the table. unspecified disableallsort="on"

Attributes for table cells

Argument Description Default Example
cellpadding Cell padding (pixels). unspecified cellpadding="0"
cellspacing Cell spacing (pixels). unspecified cellspacing="3"
cellborder Cell border width (pixels). unspecified cellborder="0"
valign Vertical alignment of cells and headers, set to "top", "middle", "bottom" or "baseline". unspecified valign="top"
columnwidths Column widths: Comma delimited list of column widths, percentage or absolute pixel value. unspecified columnwidths="80%,20%"

Attributes for data cells

Parameter Description Default Example
datarules Set to "none" (no rules), "rows" (rules will appear between rows only), "cols" (rules will appear between columns only), "all" (rules will appear between all rows and columns). Overrides tablerules for data cells. unspecified datarules="none"
datavalign Vertical alignment of data cells; overrides valign. unspecified datavalign="top"
dataalign Data cell alignment, one value for all columns, or a comma separated list for different alignment of individual columns. Set to "left", "center", "right" or "justify". Overrides individual cell settings. unspecified dataalign="center"
databg Data cell background colour, a comma separated list. Specify "none" for no colour, that is to use the colour/background of the page the table is on. "#edf4f9,#fff" databg="#f2f2f2,#fff"
databgsorted Data cell background colour of a sorted column; see databg. the values of databg databgsorted="#d4e8e4, #e5f5ea"
datacolor Data cell text colour, a comma separated list. unspecified datacolor="#00c, #000"

Attributes for headers

Parameter Description Default Example
headerrules Set to "none" (no rules), "rows" (rules will appear between rows only), "cols" (rules will appear between columns only), "all" (rules will appear between all rows and columns). Overrides tablerules for header cells. unspecified headerrules="none"
headerbg Header cell background colour. Specify "none" for no colour, that is to use the colour/background of the page the table is on. "#6b7f93" headerbg="#999"
headerbgsorted Header cell background colour of a sorted column. Specify "none" for no colour, that is to use the colour/background of the page the table is on. the value of headerbg headerbgsorted="#32596c"
headercolor Header cell text colour. "#fff" headercolor="#00c"
headervalign Vertical alignment of header cells; overrides valign. unspecified headervalign="top"
headeralign Header cell alignment, one value for all columns, or a comma separated list for different alignment of individual columns. Set to "left", "center", "right" or "justify". Overrides individual cell settings. unspecified headeralign="left,right"
headerrows See: Attributes for tables

Other attributes

Parameter Description Default Example
include Other topic defining the TABLE parameters. The first %TABLE% in the topic is used. This is useful if you have many topics with the same table format and you want to update the format in one place. Use topic or web.topic notation. unspecified include="Main.WebHome"

Examples

 %TABLE{ sort="off" tableborder="0" cellpadding="4" cellspacing="3" cellborder="0" }%
 | *A1* | *B1* |
 | A2   | B2   |
  • Expands as:
    A1 B1
    A2 B2

TABPANE -- tabpane widget

This macro starts the tabpane, containing a series of TAB...ENDTABs and ends with ENDTABPANE. A complete tabpane normally looks like this:
%TABPANE%
 %TAB{"tab 1"}%
   ...
 %ENDTAB%
 %TAB{"tab 2"}%
   ...
 %ENDTAB%
%ENDTABPANE%
Multiple tabpanes can be nested using the following scheme:
%TABPANE%
 %TAB{"tab 1"}%
   %TABPANE%
     %TAB{"tab 1.1"}%
       ...
     %ENDTAB%
     %TAB{"tab1.2"}%
       ...
     %ENDTAB%
   %ENDTABPANE%
 %ENDTAB%
 %TAB{"tab 2"}%
   ...
 %ENDTAB%
%ENDTABPANE%

Parameters

Parameter Description Default
select number or id of tab to select 1
automaxexpand resizes the tabpane to the maximum height to fit into the window off
minheight when automaxexpand is enabled, this is the minimum size a tab is allowed to be resized 230
class extra class: use simple for a non-3D tabpane; use=plain= for a no-frame look&feel  
animate enables/disables animation of switching tabs off
remember enables/disables recording the current tab into the url anchor, as well as initialize the currently selected tab reading the anchor off

Examples

see JQueryTabpane for more examples

TOC -- table of contents

Shows a Table of Contents that is generated automatically based on headings of a topic. Headings in TopicMarkupLanguage ("---++ text") and HTML ("<h2>text</h2>") are taken into account. Any heading text after "!!" is excluded from the TOC; for example, write "---+!! text" if you do not want to list a header in the TOC

Parameters

Parameter Description Default
"TopicName" topic name Current topic
web Name of web Current web
depth Limit depth of headings shown in TOC 6
title Title to appear at top of TOC  
align Align at left or right side of the page  
id Optional ID in case multiple TOCs are on the page and each TOC needs to be addressable with an anchor link. Allowed characters: a-zA-Z0-9-_, no spaces. If you don't specify an id, the anchor foswikiTOC can be used in a link to the first TOC: [[#foswikiTOC][Back to TOC]] creates Back to TOC. Multiple TOC macros will increment the generated ID. #foswikiTOC, #foswikiTOC2 ... "foswikiTOC"

Preference Settings

Default settings are defined in DefaultPreferences, and can be overridden in SitePreferences:
Setting Description Value
TOC_MIN_DEPTH The first header level to appear in the TOC 2
TOC_MAX_DEPTH The last header level to appear in the TOC  
TOC_TITLE The default TOC title On this page:
TOC_HIDE_IF_INCLUDED Do not show a TOC if the topic it contains is included in another topic on

Examples

%TOC{depth="2"}%
%TOC{"CompleteDocumentation" web="%SYSTEMWEB%" title="Contents:"}%
See also: Foswiki:Support/HowToCreateATableOfContents
TIP If multiple headers have the exact same text, the anchors for the 2nd, 3rd etc will be suffixed by _AN1, _AN2 etc so the anchors become unique.

ALERT! If other topics are included using INCLUDE then any headingoffset specified on the INCLUDE macro will not be seen by TOC.

TOPIC -- name of current topic

  • %TOPIC% expands to the name of the topic. If you are looking at the text of an included topic, it is the name of the included topic.

Examples

  • %TOPIC% expands to Macros, renders as Macros

TOPICLIST -- topic index of a web

List of all topics in a web. The "format" defines the format of one topic item. It may include formatting tokens: The $topic token gets expanded to the topic name, $marker to marker parameter where topic matches selection, and $web to the name of the web, or any of the standard FormatTokens.

Parameters

Parameter: Description: Default:
web Name of web Current web
"format"
format="format"
Format of one line, may include $web (name of web), $topic (name of the topic), $marker (which expands to marker for the item matching selection only) "$topic"
separator topic separator "$n" (new line)
marker Text for $marker if the item matches selection "selected"
selection Current value to be selected in list (none)

Examples

   Create a bullet list of all topics:
   %TOPICLIST{"   * $web.$topic"}%

   Create a comma separated list of all topics:
   %TOPICLIST{separator=", "}%

   Create an option list (for drop down menus):
   %TOPICLIST{" <option>$topic</option>"}%

   Create an option list of web topics with the current topic selected:
   <select>%TOPICLIST{
      " <option $marker value='$topic'>$topic</option>"
      separator=" "
      selection="%TOPIC%"
   }%</select>

TWIKIWEB -- synonym for SYSTEMWEB

ALERT! Deprecated. Use %SYSTEMWEB% instead

TWISTY -- generate content block with interactive visibility controls

This renders the button as well as the toggled content section contained within this and the closing ENDTWISTY tag.

Parameters

Parameter Description Default
id Used to link TWISTYBUTTON and TWISTYTOGGLE  
link Link label for both show and hide links  
hidelink Hide link label  
showlink Show link label  
mode "div" or "span" Specify if the Twisty Toggle section will use a <div> or a <span> tag. Note that if the contents contains block elements such as div, mode should be div as well to create valid HTML markup. <div>
showimgleft Specify the url of an image that will be displayed with the show link at the left side of the link.
You may use ICONURLPATH to display one of the DocumentGraphics icons. Alternatively use an image attached to the topic.
 
hideimgleft Specify the url of an image that will be displayed with the hide link at the left side of the link.
You may use ICONURLPATH to display one of the DocumentGraphics icons. Alternatively use an image attached to the topic.
 
showimgright Specify the url of an image that will be displayed with the show link at the right side of the link.
You may use ICONURLPATH to display one of the DocumentGraphics icons. Alternatively use an image attached to the topic.
 
hideimgright Specify the url of an image that will be displayed with the hide link at the right side of the link.
You may use ICONURLPATH to display one of the DocumentGraphics icons. Alternatively use an image attached to the topic.
 
remember If "on", the Twisty state is remembered the next time the page is shown. If "off", the stored setting will be cleared.

ALERT! Note: when used, think carefully about a unique name (id) for the Twisty, otherwise the cookie that is set might affect other Twisties with the same name. Also note that only interaction is stored, not the state of the Twisty when left unclicked.
 
start "hide" or "show" Initial state of the Twisty; this will override any setting stored in a cookie (see remember).  
firststart "hide" or "show" Initial state of the Twisty the first time the visitor gets to see the Twisty; this will NOT override cookie settings (see remember).  
noscript Make content hidden in case use does not have JavaScript on. Default content is shown in case JavaScript if off  
class CSS class name for Twisty div or span  
linkclass CSS class name for link  
prefix Text to display before the show/hide links  
suffix Text to display after the show/hide links  
Additional parameters img, imgleft, imgright, hideimg, showimg are deprecated, use showimgleft, hideimgleft, showimgright or hideimgright.

TWISTYBUTTON -- Shorthand version for TWISTYSHOW & TWISTYHIDE

This is useful if both the show and the hide button take the same arguments.

Parameters

All parameters supported by TWISTY, except for
  • noscript and class (only used for 'toggle' content)
  • mode button mode defaults to div

Examples

%TWISTYBUTTON{
    id="myid"
    link="more"
  }%%TWISTYTOGGLE{
    id="myid"
  }%content%ENDTWISTYTOGGLE%

Related

TWISTYHIDE - Hide/close link

Parameters

Parameter Description Default
id Used to link TWISTYSHOW, TWISTYHIDE and TWISTYTOGGLE required
link Hide link label  
mode "div" or "span" Specify if the Twisty Hide link will use a <div> or a <span> tag. Note that if the contents contains block elements such as div, mode should be div as well to create valid HTML markup. <div>
img Specify the url of an image that will be displayed at the right side of the link.
You may use ICONURLPATH to display one of the DocumentGraphics icons. Alternatively use an image attached to the topic.
 
remember If "on", the Twisty state is remembered the next time the page is shown. If "off", the stored setting will be cleared.
Note: when used, think carefully about a unique name (id) for the Twisty, otherwise the cookie that is set might affect other Twisties with the same name. Also note that only interaction is stored, not the state of the Twisty when left unclicked.
 
start "hide" or "show" Initial state of the Twisty; this will override any setting stored in a cookie (see remember).  
firststart "hide" or "show" Initial state of the Twisty the first time the visitor gets to see the Twisty; this will NOT override cookie settings (see remember).  

Examples

%TWISTYHIDE{id="demo" link=" Click to Fold " imgleft="%ICONURLPATH{toggleclose}%"}%

TWISTYSHOW - Show/open link

Parameters

Parameter Description Default
id Used to link TWISTYSHOW, TWISTYHIDE and TWISTYTOGGLE required
link Show link label  
mode "div" or "span" Specify if the Twisty Show link will use a <div> or a <span> tag. Note that if the contents contains block elements such as div, mode should be div as well to create valid HTML markup. <div>
img Specify the url of an image that will be displayed at the right side of the link.
You may use ICONURLPATH to display one of the DocumentGraphics icons. Alternatively use an image attached to the topic.
 
imgleft Specify the url of an image that will be displayed at the left side of the link.
You may use ICONURLPATH to display one of the DocumentGraphics icons. Alternatively use an image attached to the topic.
 
imgright Specify the url of an image that will be displayed at the right side of the link.
You may use ICONURLPATH to display one of the DocumentGraphics icons. Alternatively use an image attached to the topic.
 
remember If "on", the Twisty state is remembered the next time the page is shown. If "off", the stored setting will be cleared.
Note: when used, think carefully about a unique name (id) for the Twisty, otherwise the cookie that is set might affect other Twisties with the same name. Also note that only interaction is stored, not the state of the Twisty when left unclicked.
 
start "hide" or "show" Initial state of the Twisty; this will override any setting stored in a cookie (see remember).  
firststart "hide" or "show" Initial state of the Twisty the first time the visitor gets to see the Twisty; this will NOT override cookie settings (see remember).  

Examples

%TWISTYSHOW{id="demo" link=" Click to Unfold " imgleft="%ICONURLPATH{toggleopen}%"}%

TWISTYTOGGLE -- Twisty Toggle contents section

Parameters

Parameter Description Default
id Used to link TWISTYSHOW, TWISTYHIDE and TWISTYTOGGLE. required
mode "div" or "span" Specify if the Twisty Toggle section will use a <div> or a <span> tag. Note that if the contents contains block elements such as div, mode should be div as well to create valid HTML markup. <div>
class CSS class name for content div or span  
linkclass CSS class name for link  
remember If "on", the Twisty state is remembered the next time the page is shown. If "off", the stored setting will be cleared.
Note: when used, think carefully about a unique name (id) for the Twisty, otherwise the cookie that is set might affect other Twisties with the same name. Also note that only interaction is stored, not the state of the Twisty when left unclicked.
 
start "hide" or "show" Initial state of the Twisty; this will override any setting stored in a cookie (see remember).  
firststart "hide" or "show" Initial state of the Twisty the first time the visitor gets to see the Twisty; this will NOT override cookie settings (see remember).  
noscript hide to make content hidden in case use does not have JavaScript on  

Examples

%TWISTYTOGGLE{id="demo" mode="div" remember="on"}%My content%ENDTWISTYTOGGLE%

URLPARAM -- get URL or HTTP POST parameter value

Returns the value of the named parameter in the URL or HTTP POST request.

Parameters

Parameter: Description: Default:
"name" The name of a URL parameter required
default Default value, used if the parameter is not present ""
newline Convert newlines in textarea to other delimiters  
encode Control how special characters are encoded
"off" - No encoding. Avoid using this when possible. See the security warning below.
"entity" - Encode special characters into HTML entities. See ENCODE for more details.
"safe" - Encode characters '"<>% into HTML entities.
"url" - Encode special characters for URL parameter use, like a double quote into %22
"quote" - Escape double quotes with backslashes (\"), does not change other characters; required when feeding URL parameters into other macros.
You can combine several encodings together, and they will be applied in the order you specify e.g. encode="safe, quote"
safe
multiple If set, gets all selected elements of a <select multiple="multiple"> tag. Can be set to a format string, with $item indicating the element, e.g. multiple="Option: $item" (also supports the standard format tokens) first element
separator Separator between multiple selections. Only relevant if multiple is specified $n (new line)

Examples

%URLPARAM{"skin"}% returns print for a .../view/System/Macros?skin=print URL

HELP URL parameters passed into HTML form fields must be entity encoded.

HELP Double quotes in URL parameters must be escaped when passed into other macros.
Example: %SEARCH{ "%URLPARAM{ "search" encode="safe, quote" }%" noheader="on" }%

HELP Reverse the encoding when used in SEARCH.
Example: %SEARCH{ "%URLPARAM{ "search" encode="safe, quote"}%" decode="safe" noheader="on" }%. (It is not necessary to reverse quote encoding, otherwise decode= options should be specified in the reverse order from the encode= options.)

HELP When used in a template topic, this macro will be expanded when the template is used to create a new topic. See TemplateTopics#TemplateTopicsVars for details.

ALERT! Watch out for internal parameters, such as rev, skin, template, topic, web; they have a special meaning in Foswiki. Common parameters and view script specific parameters are documented at CommandAndCGIScripts.

ALERT! If you have %URLPARAM{ in the value of a URL parameter, it will be modified to %<nop>URLPARAM{. This is to prevent an infinite loop during expansion.

ALERT! Security warning! Using URLPARAM can easily be misused for cross-site scripting unless specific characters are entity encoded. By default URLPARAM encodes the characters '"<>% into HTML entities (same as encode="safe") which is relatively safe. The safest is to use encode="entity". When passing URLPARAM inside another macro always use double quotes ("") combined with using URLPARAM with encode="quote". For maximum security against cross-site scripting you are adviced to install the Foswiki:Extensions.SafeWikiPlugin.

USERINFO -- retrieve details about a user

Parameters

Parameter Description
"name" WikiName or login username. May be a group. current user
format Format string; see below for supported formatting tokens. $username, $wikiusername, $emails
Format tokens that can be used in format:
Token Description
$emails (*) Comma separated list of email addresses known to the user mapper (this would normally be TopicUserMappingContrib). If expanding for a group, then this will be the email addresses of all members.
$username (*) Login username. If expanding for a group, this should expand as unknown
$wikiname, $wikiusername The user's WikiName and Main.WikiName, respectively  
$groups (*) Comma separated list of group membership. Currently only expands for users
$isadmin (*) Has admin privileges (expands to true or false)
$isgroup Is a group (expands to true or false)  
TIP Tokens flagged '(*)' are considered private and are hidden from other users by default.
The standard format tokens are also supported.

Examples

  • %USERINFO{"name" format="..."}% expands to guest, Main.WikiGuest, (lists $username, $wikiusername, $emails)
With formatted output, using tokens:
%USERINFO{ format="$username is really $wikiname" }%
Expands to: guest is really WikiGuest

Retrieve information about another user. You can use either a wikiname or a username to identify the user. You can only see the restricted information about another user if you are an admin, or the {AntiSpam}{HideUserDetails} configuration option is not enabled. (User details are hidden on this site) :
%USERINFO{ "WikiGuest" format="$username is really $wikiname" }%
Expands to: guest is really WikiGuest

USERNAME -- your login username

Foswiki makes names available in three formats: USERNAME like jsmith, WIKINAME like JohnSmith and WIKIUSERNAME like Main.JohnSmith. Un-authenticated users are all WikiGuest.

This macro is an alias for the USERINFO macro with a fixed format="$username".
ALERT! The login username is considered "protected" information by default and will not be revealed to non-admin users.

Parameters

Parameter Description
"name" WikiName or login username. current user

Examples

  • %USERNAME% expands to guest
  • %USERNAME{AdminUser}% expands to ==
    ALERT! When used in a template topic, this macro will be expanded when the template is used to create a new topic. See TemplateTopics#TemplateTopicsVars for details

USERSWEB -- name of users web

  • The web containing individual user topics, WikiGroups, and customised site-wide preferences.

Examples

  • %USERSWEB% expands to Main

VAR -- get a preference value from another web

Parameters

Parameter Description
"name" name of preference to retrieve
web name of web to retrieve the preference from

Examples

  • %VAR{"WEBBGCOLOR"}% expands to #B9DAFF
  • %VAR{"WEBBGCOLOR" web="Main"}% expands to #FFEFA6

WEB -- name of current web

  • %WEB% expands to the name of the web where the topic is located. If you are looking at the text of an included topic, it is the web where the included topic is located.

Examples

  • %WEB% expands to System

WEBLIST -- index of all webs

Generate a list of webs. Obfuscated webs are excluded, e.g. webs with a NOSEARCHALL = on preference setting. The "format" defines the format of one web item. The $name gets expanded to the name of the web, $qname gets expanded to double quoted name, $marker to marker where web matches selection. Subwebs are listed recursively.

Parameters

Parameter Description Default
"format"
format="format"
Format of one line, may include $name (the name of the web), $qname (the name of the web in double quotes), $indentedname (the name of the web with parent web names replaced by indents, for use in indented lists), and $marker (which expands to marker for the item matching selection only). The standard format tokens may also be used. $name
separator Web separator $n (new line). Standard format tokens may also be used.
web if you specify $web in format, it will be replaced with this value.  
webs Comma separated list of webs to consider. This list can include two pseudo-webs, public which expands to all non-hidden and webtemplate which expands to the names of all template webs.
NOTE: Administrators will see all webs, not just the public ones
public
subwebs Specifies a single web. If specified, then public and webtemplate (described above) will expand relative to show subwebs *below this web only.  
selection Entry to be selected in list. If one of the webs matches this selection, then $marker in the format will be expanded %WEB%
marker Text for $marker if the item matches selection selected="selected"

Examples

Create a bullet list of all webs:
%WEBLIST{"   * [[$name.%HOMETOPIC%][$name.%HOMETOPIC%]]"}%
Create a dropdown of all public webs + Trash web, with the current web highlighted:
<form><select name="web">%WEBLIST{
      "<option $marker value='$qname'>$name</option>"
      webs="Trash, public"
      selection="%WEB%"
      separator=" "
   }% </select></form>
ALERT! WEBLIST will not show a web called 'TWiki' even if it exists in the file system unless the TWikiCompatibilityPlugin is installed and activated in configure. This is done to ensure that the TWiki compatibility components such as the TWiki web are only visible and active when needed

WEBPREFSTOPIC -- name of web preferences topic

Examples

  • %WEBPREFSTOPIC% expands to WebPreferences, renders as WebPreferences

WIKIAGENTEMAIL -- From: email address in emails sent by Foswiki.

Examples

  • %WIKIAGENTEMAIL% expands to wiki-ref-master@oca.eu

WIKIAGENTNAME -- From: Name used in emails sent by Foswiki

Examples

  • %WIKIAGENTNAME% expands to Wiki Administrator

WIKIHOMEURL -- site home URL

Examples

  • %WIKIHOMEURL%= expands to /foswiki/bin/view/=
  • Normally by default set to %SCRIPTURLPATH{"view"}%
    ALERT! For the top bar logo URL use %WIKILOGOURL% defined in WebPreferences instead.

WIKINAME -- your Wiki username

The WikiName is the same as %USERNAME% if not defined in the WikiUsers topic. This macro is an alias for the USERINFO macro with a fixed format="$wikiname".

Parameters

Parameter Description
"name" WikiName or login username. current user

Examples

  • %WIKINAME% expands to WikiGuest
  • %WIKINAME{guest}% expands to WikiGuest
    ALERT! When used in a template topic, this macro will be expanded when the template is used to create new topic. See TemplateTopics#TemplateTopicsVars for details

WIKIPREFSTOPIC -- name of site-wide preferences topic

Examples

WIKITOOLNAME -- name of your site

Examples

  • %WIKITOOLNAME% expands to Foswiki

WIKIUSERNAME -- your Wiki username with web prefix

Your %WIKINAME% with Main web prefix, useful to point to your Foswiki home page This macro is an alias for the USERINFO macro with a fixed format="$wikiusername".

Parameters

Parameter Description
"name" WikiName or login username. current user

Examples

  • %WIKIUSERNAME% expands to Main.WikiGuest, renders as WikiGuest
  • %WIKIUSERNAME{guest}% expands to Main.WikiGuest, renders as WikiGuest
    ALERT! When used in a template topic, this macro will be expanded when the template is used to create a new topic. See TemplateTopics#TemplateTopicsVars for details

WIKIUSERSTOPIC -- name of topic listing all registered users

Examples

  • %WIKIUSERSTOPIC% expands to WikiUsers
  • with Main prefix renders as WikiUsers

WIKIVERSION -- the version of the installed Foswiki engine

Examples

  • %WIKIVERSION% expands to v2.1.6

WIKIWEBMASTER -- feedback email address for site

Examples

  • %WIKIWEBMASTER% expands to wiki-ref-webmaster@oca.eu

WIKIWEBMASTERNAME -- Name of the administrator for the site

Examples

  • %WIKIWEBMASTERNAME% expands to Wiki Administrator

Shortcuts

The following macros are preference settings and are frequently used in topic content.
  • %BR% - line break
  • %BULLET% - bullet sign
  • %BB% - line break and bullet combined
  • %BB2% - indented line break and bullet
  • %RED% text %ENDCOLOR% - colored text (also %YELLOW%, %ORANGE%, %PINK%, %PURPLE%, %TEAL%, %NAVY%, %BLUE%, %AQUA%, %LIME%, %GREEN%, %OLIVE%, %MAROON%, %BROWN%, %BLACK%, %GRAY%, %SILVER%, %WHITE%)
  • %H% - HELP Help icon
  • %I% - IDEA! Idea icon
  • %M% - MOVED TO... Moved to icon
  • %N% - NEW New icon
  • %P% - REFACTOR Refactor icon
  • %Q% - QUESTION? Question icon
  • %S% - PICK Red star icon
  • %T% - TIP Tip icon
  • %U% - UPDATED Updated icon
  • %X% - ALERT! Alert icon
  • %Y% - DONE Done icon

See ShortcutMacros for a full list of predefined shortcuts.


Related Topics: UserDocumentationCategory
Topic revision: r1 - 08 Oct 2011, ProjectContributor
This site is powered by FoswikiCopyright © by the contributing authors. All material on this site is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback