ACTIVATEDPLUGINS -- list of currently activated plugins
Examples
-
%ACTIVATEDPLUGINS%
expands to Spread Sheet Plugin, Slide Show Plugin, Attachment List Plugin, Auto View Template Plugin, Calendar Plugin, Captcha Plugin, Comment Plugin, Compare Revisions Addon Plugin, Configure Plugin, Edit Row Plugin, Edit Table Plugin, History Plugin, Home Page Plugin, Interwiki Plugin, JQData Tables Plugin, J Query Plugin, Mailer Contrib Plugin, Markdown Plugin, Nat Edit Plugin, Preferences Plugin, Publish Plugin, Render List Plugin, Smilies Plugin, Spaced Wiki Word Plugin, Subscribe Plugin, Table Plugin, Tiny MCEPlugin, Topic Data Helper Plugin, Topic Title Plugin, Twisty Plugin, Update Attachments Plugin, Update Info Plugin, Updates Plugin, Var Cache Plugin, Wysiwyg Plugin
FAILEDPLUGINS -- debugging for plugins that failed to load
Also generates a list of handlers defined by plugins
Examples
PLUGINDESCRIPTIONS -- list of plugin descriptions
Examples
-
%PLUGINDESCRIPTIONS%
expands to - Spread Sheet Plugin (19 Jul 2018, 1.24): Add spreadsheet calculations like "$SUM($ABOVE())" to Foswiki tables and other topic text
- Slide Show Plugin (09 Mar 2021, 2.40): Create web based presentations based on topics with headings
- Attachment List Plugin (14 July 2017, 1.6): Displays a formattable list of topic attachments - from any topic - anywhere in a topic
- Auto View Template Plugin (2016-04-08, 1.24): Automatically sets VIEW_TEMPLATE and EDIT_TEMPLATE
- Calendar Plugin (18 Jul 2017, 2.020): Show a monthly calendar with highlighted events
- Captcha Plugin (19 Dec 2024, 2.31): A visual challenge-response test to prevent automated scripts from using the wiki
- Comment Plugin (06 Aug 2023, 2.95): Quickly post comments to a page without an edit/save cycle
- Compare Revisions Addon Plugin (06 Aug 2023, 1.114):
- Configure Plugin (06 Aug 2023, 1.12):
configure
interface using json-rpc - Edit Row Plugin (12 Jan 2024, 3.402): Inline edit for tables
- Edit Table Plugin (06 Aug 2023, 4.47): Edit tables using edit fields, date pickers and drop down boxes
- History Plugin (16 Nov 2020, 1.20): Shows a complete history of a topic
- Home Page Plugin (1.23, 1.23): Allow User specified home pages - on login
- Interwiki Plugin (06 Aug 2023, 1.27): Link ExternalSite:Page text to external sites based on aliases defined in a rules topic
- JQData Tables Plugin (29 Apr 2024, 7.30): JQuery based progressive enhancement of tables
- J Query Plugin (17 Dec 2024, 11.10): jQuery JavaScript library for Foswiki
- Mailer Contrib Plugin (06 Aug 2023, 2.84): Supports e-mail notification of changes
- Markdown Plugin (30 Apr 2024, 4.00): Markdown support for Foswiki
- Nat Edit Plugin (17 Dec 2024, 9.70): A Wikiwyg Editor
- Preferences Plugin (1.16, 1.16): Allows editing of preferences using fields predefined in a form
- Publish Plugin (28 July 2022, 3.6): Generate static output (HTML, PDF) optionally upload (FTP) the output to a publishing site.
- Render List Plugin (06 Aug 2023, 2.29): Render bullet lists in a variety of formats
- Smilies Plugin (17 Sep 2015, 2.03): Render smilies like as icons
- Spaced Wiki Word Plugin (12 July 2017, 1.1): Space out Wiki Word links automatically
- Subscribe Plugin (06 Aug 2023, 3.7): This is a companion plugin to the Mailer Contrib. It allows you to trivially add a "Subscribe me" link to topics to get subscribed to changes.
- Table Plugin (22 Jan 2018, 1.160): Control attributes of tables and sorting of table columns
- Tiny MCEPlugin (11 Feb 2019, 1.32): Integration of the Tiny MCE WYSIWYG Editor
- Topic Data Helper Plugin (1.1.4, $Rev: 13567 (2012-01-09) $): helper plugin for collecting, filtering and sorting data objects
- Topic Title Plugin (19 Dec 2024, 3.10): Free-form title for topics
- Twisty Plugin (29 Jun 2023, 3.00): Twisty section Javascript library to open/close content dynamically
- Update Attachments Plugin (3.13, 3.13): A batched alternative to Auto Attachments (adds and removes attachements).
- Update Info Plugin (3.1, $Rev: 14950 (2012-06-05) $): Add a %ISNEW% tag after a Wiki Word to get a visual display of whether the linked topic was created or updated recently
- Updates Plugin (12 Nov 2019, 2.00): Checks Foswiki.org for updates
- Var Cache Plugin (1.2, $Rev: 14435 (2012-03-23) $): Caches the results of expanding macros in selected topics for improved server performance
- Wysiwyg Plugin (13 Jun 2018, 1.38): 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.27
-
%PLUGINVERSION%
to get the version of the API, expands to 2.4
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
Command And CGIScripts 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
STATISTICSTOPIC -- name of statistics topic
Examples
-
%STATISTICSTOPIC%
expands to WebStatistics
, renders as WebStatistics
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
Format Tokens.
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>
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
Paths
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.
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)
- 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 Var HTTPS for other options.
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"}% |
Mozilla/5.0 Apple Web Kit/537.36 (KHTML, like Gecko; compatible; Claude Bot/1.0; +claudebot@anthropic.com) |
|
%HTTP{"Cookie"}% |
|
Not allowed by default. |
HTTP_HOST -- environment variable
Examples
-
%HTTP_HOST%
expands to copswiki.org
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 Var HTTPS for other options.
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"}% |
Mozilla/5.0 Apple Web Kit/537.36 (KHTML, like Gecko; compatible; Claude Bot/1.0; +claudebot@anthropic.com) |
|
%HTTPS{"Cookie"}% |
|
Not allowed by default. |
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://copswiki.org/w/pub
-
%PUBURL{"icon_plus.png"}%
expands to =%PUBURL{"icon_plus.png"}%
-
%PUBURL{web="System"}%
expands to https://copswiki.org/w/pub/System
-
%PUBURL{topic="System.MainFeatures"}%
expands to https://copswiki.org/w/pub/System/MainFeatures
-
%PUBURL{web="System" topic="MainFeatures"}%
expands to https://copswiki.org/w/pub/System/MainFeatures
-
%PUBURL{topic="System.MainFeatures"}%
expands to https://copswiki.org/w/pub/System/MainFeatures
-
%PUBURL{topic="System.MainFeatures" "icon_plus.png"}%
expands to https://copswiki.org/w/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. 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.
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 /w/pub
-
%PUBURLPATH{"icon_plus.png"}%
expands to =%PUBURLPATH{"icon_plus.png"}%
-
%PUBURLPATH{web="System"}%
expands to /w/pub/System
-
%PUBURLPATH{topic="System.MainFeatures"}%
expands to /w/pub/System/MainFeatures
-
%PUBURLPATH{web="System" topic="MainFeatures"}%
expands to /w/pub/System/MainFeatures
-
%PUBURLPATH{topic="System.MainFeatures" "icon_plus.png"}%
expands to /w/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.
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
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.
ATTACHURLPATH provides a shorter way to refer to the attachments on the current topic.
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 Cops 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://copswiki.org/Cartoons/EvilMonkey
-
%SCRIPTURL{"view" web="Cartoons"}%
will expand to https://copswiki.org/Cartoons?web=Cartoons
-
%SCRIPTURL{"view" topic="Cartoons.EvilMonkey" rev="1"}%
will expand to https://copswiki.org/Cartoons/EvilMonkey?rev=1
-
%SCRIPTURL{"edit" web="Cartoons" topic="EvilMonkey" t="%GMTIME{"$epoch"}%"}%
expands to https://copswiki.org/w/bin/edit/Cartoons/EvilMonkey?t=1735229981
-
%SCRIPTURL%
expands to https://copswiki.org/w/bin
-
%SCRIPTURL{script}%
expands to https://copswiki.org/w/bin/script
In most cases you should use
SCRIPTURLPATH instead, as it works much better with URL rewriting
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
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.
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 /Cartoons/EvilMonkey
-
%SCRIPTURLPATH{"view" web="Cartoons"}%
expands to /Cartoons?web=Cartoons
-
%SCRIPTURLPATH{"view" topic="Cartoons.EvilMonkey" rev="1"}%
will expand to /Cartoons/EvilMonkey?rev=1
-
%SCRIPTURLPATH{"edit" web="Cartoons" topic="EvilMonkey" t="%GMTIME{"$epoch"}%"}%
expands to /w/bin/edit/Cartoons/EvilMonkey?t=1735229981
-
%SCRIPTURLPATH%
expands to /w/bin
-
%SCRIPTURLPATH{script}%
expands to /w/bin/script
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
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.
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.
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.
Warning: Can't find topic System.VarTOPICURL
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/MacroListCurated?skin=print
URL
URL parameters passed into HTML form fields must be
entity encoded.
Double quotes in URL parameters must be escaped when passed into other macros.
Example:
%SEARCH{ "%URLPARAM{ "search" encode="safe, quote" }%" noheader="on" }%
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.)
When used in a template topic, this macro will be expanded when the template is used to create a new topic. See
Template Topics#Template Topics Vars for details.
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
Command And CGIScripts.
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.
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.
Preference Settings, configuration
Warning: Can't find topic System.VarEDITACTION
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"}%
EXPAND
is not very efficient, and should be used sparingly.
To expand a web preference (for example, a web access control) then set
scope="Theotherweb.%WEBPREFSTOPIC%"
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.Default Preferences.
Examples
MAINWEB -- deprecated synonym for USERSWEB
Deprecated. Please use
%USERSWEB%
instead.
NOTIFYTOPIC -- name of the notify topic
Examples
-
%NOTIFYTOPIC%
expands to WebNotify
, renders as WebNotify
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 = "1000000 "
* ATTACHFILESIZELIMIT was *finalised* in Main.SitePreferences
-
%SHOWPREFERENCE{"DENYWEBCHANGE,ALLOWWEBCHANGE"}%
expands to
* Set DENYWEBCHANGE = ""
* Set ALLOWWEBCHANGE = "%MAINWEB%.ApprovedUsersGroup"
* ALLOWWEBCHANGE was *finalised* in Common.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 sidetoggle,natedit,pattern
- See Skins for more information
SYSTEMWEB -- name of documentation web
The web containing all documentation and default
preference settings
Examples
-
%SYSTEMWEB%
expands to System
WEBPREFSTOPIC -- name of web preferences topic
Examples
WIKIHOMEURL -- site home URL
Examples
- %WIKIHOMEURL%= expands to /=
- Normally by default set to
%SCRIPTURLPATH{"view"}%
For the top bar logo URL use
%WIKILOGOURL%
defined in
Web Preferences instead.
WIKINAME -- your Wiki username
The
Wiki Name is the same as
%USERNAME%
if not defined in the
Wiki Users topic.
This macro is an alias for the USERINFO macro with a fixed
format="$wikiname"
.
Parameters
Examples
-
%WIKINAME%
expands to WikiGuest
-
%WIKINAME{guest}%
expands to WikiGuest
WIKIPREFSTOPIC -- name of site-wide preferences topic
Examples
Examples
-
%WIKITOOLNAME%
expands to Cops
USERSWEB -- name of users web
- The web containing individual user topics, Wiki Groups, and customised site-wide preferences.
Examples
-
%USERSWEB%
expands to Main
WIKIVERSION -- the version of the installed Foswiki engine
Examples
-
%WIKIVERSION%
expands to v2.1.8
WIKIWEBMASTER -- feedback email address for site
Examples
-
%WIKIWEBMASTER%
expands to wikiadmin@cognisys.com
WIKIWEBMASTERNAME -- Name of the administrator for the site
Examples
-
%WIKIWEBMASTERNAME%
expands to CopsWiki Administrator
Session, Users, Groups
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 Wiki Name. (First name and last name, no space, no dots, capitalized, e.g. John Smith). Cancel to register if you do not have one.
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 Format Tokens 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 |
|
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
-
%GROUPINFO%
expands to AdminGroup, Base Group, Approved Users Group, Approved Viewer Group, Audience Group, Blog Admin Group, Blog Author Group, Cops Group, Event Promo Group, Nobody Group, Officers Group, People Cte Group, Progressive Strategy Group, Staff Group
(comma-separated list of all groups)
-
%GROUPINFO{AdminGroup"}%
expands to Main.AdminUser, Raymond Lutz, Jaguar Pc, Taras Luzhnyi
(comma-separated list of users in the requested group)
-
groupname
can optionally be qualified with the Main
prefix, any other web prefix will return an empty list.
Deprecated - do not use. Use Var GROUPINFO instead
- Expands to a formatted list of user groups.
- The macro is intended to be used in Wiki Groups, to allow a group listing for various user mapping managers.
LOGIN -- present a full login link
Examples
LOGOUT -- present a full logout link
You are already logged out, so
%LOGOUT
expands to an empty string
Examples
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 " . 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" />"
}%
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.
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
REMOTE_ADDR -- environment variable
Examples
-
%REMOTE_ADDR%
expands to 52.15.111.109
REMOTE_PORT -- environment variable
Examples
REMOTE_USER -- environment variable
Examples
-
%REMOTE_USER%
expands to
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.
SESSIONID -- unique ID for this session
Examples
-
%SESSIONID%
expands to ==
SESSIONVAR -- name of CGI and session variable that stores the session ID
Examples
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 |
The users ID is in the
AUTHUSER
session variable, and is read-only
Examples
-
%SESSION_VARIABLE{"MYVAR" set="myval"}%
-
%SESSION_VARIABLE{"MYVAR" clear=""}%
USERINFO -- retrieve details about a user
Parameters
Parameter |
Description |
"name" |
Wiki Name 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 Topic User Mapping Contrib). 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 ) |
|
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
Wiki Guest.
This macro is an alias for the USERINFO macro with a fixed
format="$username"
.
The login username is considered "protected"
information by default and will not be revealed to non-admin users.
Parameters
Examples
-
%USERNAME%
expands to guest
-
%USERNAME{AdminUser}%
expands to ==
WIKIUSERNAME -- your Wiki username with web prefix
Your %WIKINAME% with Main web prefix, useful to point to your Cops home page
This macro is an alias for the USERINFO macro with a fixed
format="$wikiusername"
.
Parameters
Examples
-
%WIKIUSERNAME%
expands to Main.WikiGuest
, renders as Wiki Guest
-
%WIKIUSERNAME{guest}%
expands to Main.WikiGuest
, renders as Wiki Guest
WIKIUSERSTOPIC -- name of topic listing all registered users
Examples
-
%WIKIUSERSTOPIC%
expands to WikiUsers
- with Main prefix renders as Wiki Users
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. 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
Nat Skin.
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
.
{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>"
}%
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.
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"
}%
HISTORY -- control attributes of tables and sorting of table columns
The
%HISTORY{}%
macro is handled by the
History Plugin
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
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.
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 |
|
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
Warning: Can't find topic System.VarNRIMAGES
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 |
"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}
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.
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).
Zones are cleared after being rendered; they are only ever rendered once.
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.
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.
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.
{MergeHeadAndScriptZones}
will be
removed from a future version of Foswiki.
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
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
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>
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
Dynamic Controls -- Interactive Content
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 |
|
data_... |
add html5 data attributes |
|
align |
left, right, center |
href |
url of the click target |
# |
for |
will render a label pointing to an input element rather than a link |
icon |
icon to be put on the left; note, this can be any icon attached to the {IconSearchPath} ; see also Var JQICON |
|
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
You type:
%BUTTON{
"%MAKETEXT{"Submit"}%"
icon="fa-check"
onclick="confirm('Are your sure?')"
}%
%BUTTON{
"%MAKETEXT{"Cancel"}%"
icon="fa-times"
target="%WEB%.%TOPIC%"
}%
You get:
Submit
Cancel
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.
- The
%EDITTABLE{}%
macro is handled by the Edit Table Plugin
- Syntax:
%EDITTABLE{ attributes }%
Example:
%EDITTABLE{ format="| text, 20 | select, 1, one, two, three |" changerows="on" }%
| *Name* | *Type* |
| Foo | two |
Produces:
Related: See
Edit Table Plugin for more details
IMAGEGALLERY{"topic" options...} -- render an image gallery
- The
%IMAGEGALLERY{"topic"}%
macro is handled by the Image Gallery Plugin.
- Syntax:
%IMAGEGALLERY{"topic" options...}%
- Examples:
- =%IMAGEGALLERY{"System.DocumentGraphics" columns="3" limit="12" exclude="arrow" sort="name"}%
- Related: Image Gallery Plugin
Javascript Query
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.
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
WARNING: JQuery-UI themes are deprecated since Foswiki-2.1.9. Please don't use this macro anymore.
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.
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 /w/pub/System/JQueryPlugin/$name |
foswiki |
warn |
(on/off) allows you to switch off warnings when a theme was not found |
on |
JQICON -- render an image
Renders an icon made availabe by the
Icon Service.
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:
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
/w/pub/System/FamFamFamSilkIcons/tick.png
Tabs
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
J Query Tabpane for more examples
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 |
|
ENDTAB -- ending marker for a tab of a tabpane
This closes a previously opened TAB.
This closes a previously opened TABPANE.
Pop Up.
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
Slide Show
SLIDESHOWEND -- end slideshow
The
%SLIDESHOWEND%
macro is handled by the
Slide Show Plugin
Examples
See SLIDESHOWSTART
SLIDESHOWSTART -- convert a topic with headings into a slideshow
Handled by the
Slide Show Plugin
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%
Start presentation
Slide 1: Sample Slide 1
Slide 2: Sample Slide 2
Twisty
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 |
"block" or "inline" 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 block as well to create valid HTML markup. |
<block> |
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 Document Graphics 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 Document Graphics 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 Document Graphics 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 Document Graphics 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 ). |
|
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 element |
|
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
.
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 "block"
Examples
%TWISTYBUTTON{
id="myid"
link="more"
}%%TWISTYTOGGLE{
id="myid"
}%content%ENDTWISTYTOGGLE%
TWISTYHIDE - Hide/close link
Parameters
Parameter |
Description |
Default |
id |
Used to link TWISTYSHOW, TWISTYHIDE and TWISTYTOGGLE |
required |
link |
Hide link label |
|
mode |
"block" or "inline" 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 block as well to create valid HTML markup. |
<block> |
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 Document Graphics 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 |
"block" or "inline" 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 block as well to create valid HTML markup. |
<block> |
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 Document Graphics 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 Document Graphics 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 Document Graphics 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 |
"block" or "inline" 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 block as well to create valid HTML markup. |
<block> |
class |
CSS class name for content element |
|
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="block" remember="on"}%My content%ENDTWISTYTOGGLE%
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%
Spreadsheet & Table
CALC -- add spreadsheet calculations to tables and outside tables
The
%CALC{"formula"}%
macro is handled by the
Spread Sheet Plugin. 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
TABLE -- control attributes of tables and sorting of table columns
The
%TABLE{}%
macro is handled by the
Table Plugin
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; WARNING: this attribute is deprecated in HTML5, don't use it anymore. |
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 Edit Table Plugin 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" |
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 |
Date & Time
Examples
-
%DATE%
expands to 26 Dec 2024
- Date format defined as
{DefaultDateFormat}
in configure
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 26 Dec 2024 - 16:19
-
%DISPLAYTIME{"$hou:$min"}%
expands to 16:19
Parameters
Parameter |
Description |
Default |
"format" |
format |
$day $month $year - $hour:$min |
%GMTIME%
uses the default date format defined by the {DefaultDateFormat} setting in
configure
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-12-26T16:19:45Z |
$rcs |
RCS format timestamp |
2024/12/26 16:19:45 |
$http |
E-mail & http format timestamp |
Thu, 26 Dec 2024 16:19:45 GMT |
$epoch |
Number of seconds since 00:00 on 1st January, 1970 |
1735229985 |
Tokens can be shortened to 3 characters
Examples
-
%GMTIME%
expands to 26 Dec 2024 - 16:19
-
%GMTIME{"$day $month, $year - $hour:$min:$sec"}%
expands to 26 Dec, 2024 - 16:19:45
Same format parameters as
VarGMTIME[GMTIME%]], but displaying the server time instead of UTC.
Examples
-
%SERVERTIME%
elsnds to %DATETIME{"$year-$mo-$day $hours:$minutes:$seconds"}%
-
%SERVERTIME{"$hou:$min"}%
expands to %DATETIME{"$year-$mo-$day $hours:$minutes:$seconds"}%
Topic Content Processing
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. 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 "
- 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="|,<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" }%
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'
EXAMPLETAG -- example macro tag
The
%EXAMPLETAG%
variable is handled by the
Example Plugin
Parameters
Parameter |
Description |
Default |
"..." |
Unnamed parameter |
|
text - |
example text |
"..." |
format |
format of report |
|
Examples
-
%EXAMPLETAG{"hello" format="| $topic: $summary |"}%
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="
}%
If
type="topic"
(the default) the format string can contain
any of the
topic-specific format tokens
specified in
Formatted Search (
$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.
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
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 wikiadmin@cognisys.com.
-
%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.
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).
This is deprecated. Do not use it. Use
%STARTSECTION{type="templateonly"}%
..
%ENDSECTION{type="templateonly"}%
instead (see
Template Topics for more details).
The
%RENDERLIST%
macro is handled by the
Render List Plugin
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 |
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
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
Wiki Words
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 |
' ' |
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
TOC -- table of contents
Shows a Table of Contents that is generated automatically based on headings of a topic. Headings in
Topic Markup Language (
"---++ 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
Default Preferences, and can be overridden in
Site Preferences:
Setting |
Description |
Value |
TOC_MIN_DEPTH |
The first header level to appear in the TOC |
|
TOC_MAX_DEPTH |
The last header level to appear in the TOC |
|
TOC_TITLE |
The default TOC title |
|
TOC_HIDE_IF_INCLUDED |
Do not show a TOC if the topic it contains is included in another topic |
|
Examples
%TOC{depth="2"}%
%TOC{"CompleteDocumentation" web="%SYSTEMWEB%" title="Contents:"}%
See also:
Foswiki:Support/HowToCreateATableOfContents
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.
If other topics are included using
INCLUDE then any
headingoffset
specified on the INCLUDE macro will not be seen by
TOC
.
Including & Sections
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.
If you want more than one part of the topic included, use
%STARTSECTION{type="include"}%
instead
STOPINCLUDE -- Alias for ENDINCLUDE
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 Template Topics 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 Template Topics 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. |
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..
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"}%
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"}%
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 Regular Expression that contains the text you want to keep in parenthesis, e.g. pattern="(from here.*?to here)" . Include Topics And Web Pages 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 . 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 Regular Expression that contains the text you want to keep in parenthesis, e.g. pattern="(from here.*?to here)" . Include Topics And Web Pages has more. |
none |
raw |
When a page is included, normally Cops 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 < 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 |
JavaScript in included webpages is filtered out as a security precaution per default (disable filter with
disableremovescript
parameter)
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 |
|
publicOnly |
Boolean to extract only public methods |
on |
level |
Override the root heading level to the specified number |
|
pattern |
Include a subset of the module. Specify a Regular Expression that contains the text you want to keep in parenthesis, e.g. pattern="(from here.*?to here)" . Include Topics And Web Pages 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
)
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
)
Be careful of the subtle difference between
INCLUDINGWEB
and
BASEWEB
. You probably should be using
BASEWEB
METASEARCH
is
deprecated in favour of the new and much more powerful query type search. See
SEARCH and
Query Search.
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 Web Topic View Template and Web Topic Non Wiki Template:
%METASEARCH{
type="parent"
web="%WEB%"
topic="%TOPIC%"
title="Children: "
}%
%METASEARCH{
type="field"
name="Country"
value="China"
}%
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. Search Help 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 Web Preferences. 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 Regular Expression 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 Wiki Name ("editby" ), or named field of Data Forms ("formfield(name)" ). The sorting is done web by web; if you want to sort across webs, create a formatted table and sort it with Table Plugin'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 Query Search 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 Book View 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 Formatted Search on a search hit. Useful to show the expanded text, e.g. to show the result of a Spread Sheet Plugin %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 Format Tokens. 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 Site Changes for an example. |
web |
Examples
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.
The appearance of the table emitted by the
SEARCH may be controlled with
Table Plugin's
%TABLE{}%
macro placed just before the
%SEARCH{}%
. Example:
%TABLE{ tablewidth="90%" }%
Revisions
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%
is equivalent to
%REVINFO{format="r1.$rev - $date - $wikiusername"}%
Examples
-
%REVINFO%
expands to r1 - 21 Sep 2017 - 01:45:29 - Project Contributor
-
%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 |
Wiki Name 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
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)
VARCACHE{ attributes } -- cache the results of Foswiki macros in selected topics for faster page rendering
- Syntax:
%VARCACHE{ "24" }%
- Supported attributes:
Attribute | Comment | Default |
"..." or refresh="..." | Cache refresh period in hours (maximum age of cache). Accepts decimals, such as 0.25 | 24 |
cachemsg="..." | Message shown when looking at a cached topic. Use $age to indicate the age of cache, $link to indicate the refresh URL | This topic was cached $age ago ([[$link][refresh]]) |
updatemsg="..." | Message shown after a cache refresh. Use $link to indicate the refresh URL | This topic is now cached ([[$link][refresh]]) |
- Example:
%VARCACHE{"168"}%
caches the current page for 7 days
- The standard Foswiki format tokens are supported in
cachmsg
and updatemsg
.
Language and Locale
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).
Examples
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.
Avoid defining
LANGUAGE
in a non- per-user way, otherwise users will not be able to choose their preferred language.
Examples
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
* English
-
<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
Colors & Graphics
Warning: Can't find topic System.VarAQUA
Warning: Can't find topic System.VarBB
Warning: Can't find topic System.VarBB2
Warning: Can't find topic System.VarBB3
Warning: Can't find topic System.VarBB4
Warning: Can't find topic System.VarBLACK
Warning: Can't find topic System.VarBLUE
Warning: Can't find topic System.VarBR
Warning: Can't find topic System.VarBROWN
Warning: Can't find topic System.VarBULLET
Warning: Can't find topic System.VarCARET
ENDCOLOR -- end colored text
ENDCOLOR
is one of the shortcut macros predefined in
Default Preferences. 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
Warning: Can't find topic System.VarGRAY
Warning: Can't find topic System.VarGREEN
Warning: Can't find topic System.VarH
Warning: Can't find topic System.VarI
ICON -- small documentation graphic or icon of common attachment types
Generates a small graphic image from the set attached to
Document Graphics.
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
-
%ICON{"pdf"}%
displays as
-
%ICON{"docx" default="doc"}%
displays as
-
%ICON{"smile.pdf"}%
displays as
-
%ICON{"/dont/you/dare/smile.pdf"}%
returns
-
%ICON{"data.unknown" alt="Unknown file type"}%
displays as
-
%ICON{"data.unknown"}%
displays as
-
%ICON{"http://trunk.foswiki.org/pub/System/DocumentGraphics/xsl.gif"}%
displays
- Graphics:
arrowbright
, bubble
, choice-yes
, hand
- File types:
bmp
, doc
, gif
, hlp
, html
, mp3
, pdf
, ppt
, txt
, xls
, xml
, 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
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
Document Graphics 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://copswiki.org/w/pub/System/DocumentGraphics/else.png
-
%ICONURL{"arrowbright"}%
returns https://copswiki.org/w/pub/System/DocumentGraphics/arrowbright.png
-
%ICONURL{"novel.pdf"}%
returns https://copswiki.org/w/pub/System/DocumentGraphics/pdf.png
-
%ICONURL{"notanicon" default="ram"}%
returns https://copswiki.org/w/pub/System/DocumentGraphics/ram.png
-
%ICONURL{"/queen/boheme.mp3"}%
returns https://copswiki.org/w/pub/System/DocumentGraphics/mp3.png
ICONURLPATH -- URL path of small documentation graphic or icon
Generates the relative URL path of a
Document Graphics 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 /w/pub/System/DocumentGraphics/locktopic.png
-
%ICONURLPATH{"eggysmell.xml"}%
returns /w/pub/System/DocumentGraphics/xml.png
-
%ICONURLPATH{"notanicon" default="ram"}%
returns /w/pub/System/DocumentGraphics/ram.png
-
%ICONURLPATH{"/doc/xhtml.xsl"}%
returns /w/pub/System/DocumentGraphics/xsl.png
Warning: Can't find topic System.VarLIME
Warning: Can't find topic System.VarM
Warning: Can't find topic System.VarMAROON
Warning: Can't find topic System.VarN
Warning: Can't find topic System.VarNAVY
Warning: Can't find topic System.VarOLIVE
Warning: Can't find topic System.VarORANGE
Warning: Can't find topic System.VarP
Warning: Can't find topic System.VarPINK
Warning: Can't find topic System.VarPURPLE
Warning: Can't find topic System.VarQ
Warning: Can't find topic System.VarRED
Warning: Can't find topic System.VarS
Warning: Can't find topic System.VarSILVER
Warning: Can't find topic System.VarT
Warning: Can't find topic System.VarTEAL
Warning: Can't find topic System.VarU
Warning: Can't find topic System.VarVBAR
Warning: Can't find topic System.VarWHITE
Warning: Can't find topic System.VarX
Warning: Can't find topic System.VarY
Warning: Can't find topic System.VarYELLOW
Deprecated
ADDTOHEAD -- deprecated, use ADDTOZONE instead
This macro is deprecated. Please use
Var ADDTOZONE instead.
It effecively is a shortcut for
%ADDTOZONE{"head" ...}%
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
TWIKIWEB -- synonym for SYSTEMWEB
Deprecated. Use
%SYSTEMWEB%
instead