| Resource | Required Server Environment * |
|---|---|
| Perl | 5.005_03 or higher (5.8.4 or higher is recommended) |
| RCS | 5.7 or higher (including GNU diff) Optional, TWiki includes a pure perl implementation of RCS that can be used instead (although it's slower) |
GNU diff |
GNU diff 2.7 or higher is required when not using the all-Perl RcsLite. Install on PATH if not included with RCS (check version with diff -v) Must be the version used by RCS, to avoid problems with binary attachments - RCS may have hard-coded path to diff |
GNU patch |
For upgrades only: GNU patch is required when using the TWiki:Codev.UpgradeTWiki |
GNU fgrep, egrep |
Modify command line parameters in configure if you use non-GNU grep programs |
| Cron/scheduler | • Unix: cron • Windows: cron equivalents |
| Web server | Apache is well supported; see TWiki:TWiki.InstallingTWiki#OtherWebServers |
| Module | Preferred version |
|---|---|
| Algorithm::Diff (included) | |
| CGI::Carp | >=1.26 |
| Config | >=0 |
| Cwd | >=3.05 |
| Data::Dumper | >=2.121 |
| Error (included) | |
| File::Copy | >=2.06 |
| File::Find | >=1.05 |
| File::Spec | >=3.05 |
| FileHandle | >=2.01 |
| IO::File | >=1.10 |
| Text::Diff (included) | |
| Time::Local | >=1.11 |
| Module | Preferred version | Description |
|---|---|---|
| CGI::Cookie | >=1.24 | Used for session support |
| CGI::Session | >=3.95 | Used for session support |
| Digest::base | ||
| Digest::SHA1 | ||
| Jcode | Used for I18N support with perl 5.6 | |
| Locale::Maketext::Lexicon | >=0 | Used for I18N support |
| Net::SMTP | >=2.29 | Used for sending mail |
| Unicode::Map | Used for I18N support with perl 5.6 | |
| Unicode::Map8 | Used for I18N support with perl 5.6 | |
| Unicode::MapUTF8 | Used for I18N support with perl 5.6 | |
| Unicode::String | Used for I18N support with perl 5.6 | |
| URI | Used for configure |
configure script, or if you're still trying to get to that point, check from the command line like this:
perl -e 'use FileHandle; print $FileHandle::VERSION."\n"'
data and pub directories and to lib/LocalSite.cfg. Everything else should be read-only.
/usr/bin/perl. If it's somewhere else, change the path to Perl in the first line of each script in the twiki/bin directory. .cgi or .pl). If necessary, rename all files in twiki/bin (i.e. rename view to view.pl etc). If you do this, make sure you set the ScriptSuffix option in configure (Step 6).
/twiki/bin/LocalLib.cfg. /twiki/bin/LocalLib.cfg.txt. $twikiLibPath, which must point to the absolute file path of your twiki/lib e.g. /home/httpd/twiki/lib. $CPANBASE to point to your personal CPAN install. Don't forget that the webserver user has to be able to read those files as well.
bin/configure script from your browser. httpd.conf file in twiki_httpd_conf.txt at the root of the package. This file also contains advice on securing your installation. There's also a script called tools/rewriteshebang.pl to help you in fixing up the shebang lines in your CGI scripts.
configure script from your browser, and resolve any errors or warnings it tells you about.
http://yourdomain.com/twiki/bin/view and start TWiki-ing away!
configure script and make sure you have resolved all errors, and are happy that you understand any warnings.
"UpgradeTwiki", and is found in the root of the distribution. It can be run by any user, though you will need to make sure you correct the permissions so that the webserver user can write all files in the new installation when you have finished. The upgrade script does not write to your existing installation.
The upgrade script will upgrade the TWiki core only. Plugins will need to be upgraded separately.
Note: To upgrade from a Beta, do not use UpgradeTWiki. Instead follow the steps outlined in Upgrading a Beta, below.
It will:
UpgradeTwiki script available, see TWiki:Codev.UpgradeTWikidistro/
distro/
new_twiki. This directory must not already exist.
distro/ and run: ./UpgradeTwiki <full path to existing_twiki's setlib.cfg> <full path to new_twiki>
configure script
UpgradeTwiki will give you the final instructions.
Visit TWiki:Codev.KnownIssuesOfTWiki04x00x00UpgradeTwiki may not be able to merge all the changes you made in your existing TWiki into the new installation, but it will tell you which ones it couldn't deal with
UpgradeTwiki creates the new installation in a new directory tree. It makes a complete copy of all your existing data, so: data/ directory in your existing installation, these are reproduced as actual directories in the new structure. It is up to you to pull these sub-directories out again and re-symlink as needed
UpgradeTwiki doesn't deal with custom templates or Plugins, you will have to reinstall these in the new installation.
tools/upgrade_emails.pl.
find data -name '*,v' -exec rcs -u -M '{}' \;
find pub -name '*,v' -exec rcs -u -M '{}' \;
configure interface for the new install. configure, then copy the new TWiki.cfg to LocalSite.cfg, and edit LocalSite.cfg. Remove all the settings that you didn't change in your previous install, and change the remaining settings to the values from your old TWiki.cfg.
tools/upgrade_emails.pl.
bin/LocalLib.cfg and lib/LocalSite.cfg files
.htpasswd files on the server. These files can be unique to TWiki, or can be shared with other applications (such as an Apache webserver). A variety of password encodings are supported for flexibility when re-using existing files. See the descriptive comments in the Security Settings section of the configure interface for more details.
configure interface.
configure interface to TemplateLogin login manager (on the Security Settings pane).
.htpasswd files, check that a new line with the username and encrypted password is added to the .htpasswd file. If not, you probably got a path wrong, or the permissions may not allow the webserver user to write to that file.
pub area, unless they are only accessed through the viewfile script. If your pub directory is set up in the webserver to allow open access you may want to add .htaccess files in there to restrict access.
name="" parameter of the input tags must start with: "Twk0..." (if this is an optional entry), or "Twk1..." (if this is a required entry). This ensures that the fields are carried over into the user home page correctly.
REMOTE_USER environment variable, which is set when you enable authentication in the webserver.
The advantage of this scheme is that if you have an existing website authentication scheme using Apache modules such as mod_auth_ldap or mod_auth_mysql you can just plug in directly to them.
The disadvantage is that because the user identity is cached in the browser, you can log in, but you can't log out again unless you restart the browser.
TWiki maps the REMOTE_USER that was used to log in to the webserver to a WikiName using the table in TWikiUsers. This table is updated whenever a user registers, so users can choose not to register (in which case their webserver login name is used for their signature) or register (in which case that login name is mapped to their WikiName).
The same private .htpasswd file used in TWiki Template Login can be used to authenticate Apache users, using the Apache Basic Authentication support. This allows the TWiki registration support to maintain usernames and passwords.
mod_auth ApacheLogin login manager.
.htpasswd entries.
.htaccess file in the twiki/bin directory.twiki/bin/.htaccess.txt that you can copy and change. The comments in the file explain what need to be done..htaccess does not have the desired effect, you may need to "AllowOverride All" for the directory in httpd.conf (if you have root access; otherwise, e-mail web server support) pub area, unless they are only accessed through the viewfile script. If your pub directory is set up to allow open access you may want to add .htaccess files in there as well to restrict access
name="" parameter of the input tags must start with: "Twk0..." (if this is an optional entry), or "Twk1..." (if this is a required entry). This ensures that the fields are carried over into the user home page correctly. .htpasswd file. If not, you may have got a path wrong, or the permissions may not allow the webserver user to write to that file.
bin/logon script accomplishes this. The bin/logon script must be setup in the bin/.htaccess file to be a script which requires a valid user. However, once authenticated, it will simply redirect the user to the view URL for the page from which the logon script was linked.
%SESSION_VARIABLE{ "varName" }%
%SESSION_VARIABLE{ "varName" set="varValue" }%
%SESSION_VARIABLE{ "varName" clear="" }%
pthoeny. This name is normally passed to TWiki by the REMOTE_USER environment variable, and used internally. Login Usernames are maintained by your system administrator.
PeterThoeny, is recorded when you register using TWikiRegistration; doing so also generates a personal home page in the Main web.
configure. The default is to use your WikiName as a login name.
NOTE: To correctly enter a WikiName - your own or someone else's - be sure to include the Main web name in front of the Wiki username, followed by a period, and no spaces, for exampleMain.WikiUsernameor%MAINWEB%.WikiUsername. This pointsWikiUsernameto the Main web, where user home pages are located, no matter which web it's entered in. Without the web prefix, the name appears as a NewTopic everywhere but in the Main web.
TWiki/ChangePassword )
TWiki/ResetPassword )
TWiki/ChangeEmailAddress )
configure
.htaccess
| Web | Sitemap | VIEW | CHANGE | RENAME | |||
|---|---|---|---|---|---|---|---|
| Listed | DENY | ALLOW | DENY | ALLOW | DENY | ALLOW | |
| Main ... | on | TWikiCommunityGroup | |||||
| TWiki06x01 ... | on | TWikiAdminGroup | TWikiAdminGroup | ||||
| Blog ... | on | TWikiGuest | TWikiAdminGroup, VickiBrown | ||||
| Codev ... | on | TWikiGuest | TWikiCommunityGroup | ||||
| Plugins ... | on | TWikiCommunityGroup | |||||
| Sandbox ... | on | TWikiCommunityGroup | |||||
| Support ... | on | TWikiCommunityGroup | |||||
| TWiki ... | on | TWikiGuest | TWikiAdminGroup | ||||
| TWiki01 ... | on | TWikiAdminGroup | TWikiAdminGroup | ||||
| TWiki02 ... | on | TWikiAdminGroup | TWikiAdminGroup | ||||
| TWiki03 ... | on | TWikiAdminGroup | TWikiAdminGroup | ||||
| TWiki04 ... | on | TWikiAdminGroup, CrawfordCurrie | TWikiAdminGroup | ||||
| TWiki04x01 ... | on | TWikiAdminGroup | |||||
| TWiki04x02 ... | on | TWikiAdminGroup | TWikiAdminGroup | ||||
| TWiki04x03 ... | on | TWikiAdminGroup | TWikiAdminGroup | ||||
| TWiki05x00 ... | on | TWikiAdminGroup | TWikiAdminGroup | ||||
| TWiki05x01 ... | on | TWikiAdminGroup | TWikiAdminGroup | ||||
| TWiki06x00 ... | on | TWikiAdminGroup | TWikiAdminGroup | ||||
| WikiWed ... | on | ||||||
Main web, such as the TWikiAdminGroup. To create a new group, visit TWikiGroups and enter the name of the new group ending in Group into the "new group" form field. This will create a new group topic with two important settings: Set GROUP = < list of Users and/or Groups >
Set ALLOWTOPICCHANGE = < list of Users and/or Groups >
Set GROUP = Main.SomeUser, Main.OtherUser, Main.SomeGroup
Set ALLOWTOPICCHANGE = Main.TWikiAdminGroup
TWikiAdminGroup. The name of this topic is defined by the {SuperAdminGroup} configure setting. Example group setting: Set GROUP= Main.ElizabethWindsor, Main.TonyBlair
Set DENYWEBVIEW = < comma-delimited list of Users and Groups >
Set ALLOWWEBVIEW = < comma-delimited list of Users and Groups >
Set DENYWEBCHANGE = < comma-delimited list of Users and Groups >
Set ALLOWWEBCHANGE = < comma-delimited list of Users and Groups >
Set DENYWEBRENAME = < comma-delimited list of Users and Groups >
Set ALLOWWEBRENAME = < comma-delimited list of Users and Groups >
Set ALLOWWEBVIEW =
Set DENYWEBVIEW =
Set DENYTOPICVIEW = < comma-delimited list of Users and Groups >
Set ALLOWTOPICVIEW = < comma-delimited list of Users and Groups >
Set DENYTOPICCHANGE = < comma-delimited list of Users and Groups >
Set ALLOWTOPICCHANGE = < comma-delimited list of Users and Groups >
Set DENYTOPICRENAME = < comma-delimited list of Users and Groups >
Set ALLOWTOPICRENAME = < comma-delimited list of Users and Groups >
Set ALLOWTOPICVIEW =
Set DENYTOPICVIEW =
mod_rewrite module, and configure your webserver to redirect accesses to attachments to the TWiki viewfile script. For example,
ScriptAlias /twiki/bin/ /filesystem/path/to/twiki/bin/
Alias /twiki/pub/ /filesystem/path/to/twiki/pub/
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/+twiki/+pub/+TWiki/+.+
RewriteRule ^/+twiki/+pub/+([^/]+)/+((([^/]+)/+)+)(.+) /twiki/bin/viewfile/$1/$4?filename=$5 [L,PT]
That way all the controls that apply to the topic also apply to attachments to the topic. Other types of webserver have similar support.
Note: Images embedded in topics will load much slower since each image will be delivered by the viewfile script.
all webs search option from accessing obfuscated webs. Do so by enabling the NOSEARCHALL variable in WebPreferences: Set NOSEARCHALL = on
Set DENYWEBVIEW = < list of Users and Groups >
Set ALLOWWEBVIEW = < list of Users and Groups >
DENYWEBVIEW is evaluated before ALLOWWEBVIEW. Access is denied if the authenticated person is in the DENYWEBVIEW list, or not in the ALLOWWEBVIEW list. Access is granted in case DENYWEBVIEW and ALLOWWEBVIEW is not defined.
Set DENYWEBVIEW = < list of Users and Groups >
Set ALLOWWEBVIEW = < list of Users and Groups >
DENYWEBVIEW is evaluated before ALLOWWEBVIEW. Access is denied if the authenticated person is in the DENYWEBVIEW list, or not in the ALLOWWEBVIEW list. Access is granted in case DENYWEBVIEW and ALLOWWEBVIEW is not defined.
<!--
* Set DENYTOPICCHANGE = Main.SomeGroup
-->
| Formatting Command: | You write: | You get: | |||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Paragraphs: Blank lines will create new paragraphs. |
1st paragraph 2nd paragraph | 1st paragraph 2nd paragraph | |||||||||||||||||||||||||
|
Headings: Three or more dashes at the beginning of a line, followed by plus signs and the heading text. One plus creates a top level heading, two pluses a second level heading, etc. The maximum heading depth is 6. You can create a table of contents with the %TOC% variable. If you want to exclude a heading from the TOC, put !! after the ---+.
|
---++ Sushi ---+++ Maguro ---+++!! Not in TOC |
SushiMaguroNot in TOC |
|||||||||||||||||||||||||
|
Bold Text: Words get shown in bold by enclosing them in * asterisks.
|
*Bold* | Bold | |||||||||||||||||||||||||
|
Italic Text: Words get shown in italic by enclosing them in _ underscores.
|
_Italic_ | Italic | |||||||||||||||||||||||||
|
Bold Italic: Words get shown in bold italic by enclosing them in __ double-underscores.
|
__Bold italic__ | Bold italic | |||||||||||||||||||||||||
|
Fixed Font: Words get shown in fixed font by enclosing them in = equal signs.
|
=Fixed font= |
Fixed font
|
|||||||||||||||||||||||||
|
Bold Fixed Font: Words get shown in bold fixed font by enclosing them in double equal signs.
|
==Bold fixed== |
Bold fixed
|
|||||||||||||||||||||||||
* _ __ = ==) indicator
with normal punctuation, such as commas and full stops.
|
_This works_, _this does not _ |
This works, _this does not _ |
|||||||||||||||||||||||||
|
Verbatim (Literal) Text: Surround code excerpts and other formatted text with <verbatim> and </verbatim> tags.verbatim tags disable HTML code. Use <pre> and </pre> tags instead if you want the HTML code within the tags to be interpreted. |
<verbatim>
class CatAnimal {
void purr() {
<code here>
}
}
</verbatim>
|
class CatAnimal {
void purr() {
<code here>
}
}
|
|||||||||||||||||||||||||
|
Separator (Horizontal Rule): Three or more three dashes at the beginning of a line.. |
------- |
|
|||||||||||||||||||||||||
|
Bulleted List: Multiple of three spaces, an asterisk, and another space. |
* level 1
* level 2
* back on 1
* A bullet
broken over
three lines
* last bullet
|
|
|||||||||||||||||||||||||
|
Numbered List: Multiple of three spaces, a type character, a dot, and another space. Several types are available besides a number:
|
1. Sushi 1. Dim Sum 1. Fondue A. Sushi A. Dim Sum A. Fondue i. Sushi i. Dim Sum i. Fondue |
|
|||||||||||||||||||||||||
|
Definition List: Three spaces, a dollar sign, the term, a colon, a space, followed by the definition. |
$ Sushi: Japan $ Dim Sum: S.F. |
|
|||||||||||||||||||||||||
|
Table: Each row of the table is a line containing of one or more cells. Each cell starts and ends with a vertical bar '|'. Any spaces at the beginning of a line are ignored.
|^| multiple-span row functionality and additional rendering features
|
| *L* | *C* | *R* | | A2 | B2 | C2 | | A3 | B3 | C3 | | multi span ||| | A5-7 | 5 | 5 | |^| six | six | |^| seven | seven | | split\ | over\ | 3 lines | | A9 | B9 | C9 | |
|
|||||||||||||||||||||||||
|
WikiWord Links: CapitalizedWordsStuckTogether (or WikiWords) will produce a link automatically if preceded by whitespace or parenthesis. Otherweb.TopicName. |
WebStatistics Sandbox.WebNotify Sandbox.WebHome | WebStatistics WebNotify Sandbox | |||||||||||||||||||||||||
|
Anchors: You can define a reference inside a TWiki topic (called an anchor name) and link to that. To define an anchor write #AnchorName at the beginning of a line. The anchor name must be a WikiWord. To link to an anchor name use the [[MyTopic#MyAnchor]] syntax. You can omit the topic name if you want to link within the same topic.
|
[[WikiWord#NotThere]] [[#MyAnchor][Jump]] #MyAnchor To here | WikiWord#NotThere Jump To here | |||||||||||||||||||||||||
|
Forced Links: You can create a forced internal link by enclosing words in double square brackets. Text within the brackets may contain optional spaces; the topic name is formed by capitalizing the initial letter and by removing the spaces; for example, [[text formatting FAQ]] links to topic TextFormattingFAQ. You can also refer to a different web and use anchors.
|
[[wiki syntax]] [[Main.TWiki users]] escaped: ![[wiki syntax]] | wiki syntax Main.TWiki users escaped: [[wiki syntax]] | |||||||||||||||||||||||||
|
Specific Links: You can create a link where you specify the link text and the URL separately using nested square brackets [[reference][text]]. Internal link references (e.g. WikiSyntax) and URLs (e.g. http://TWiki.org/ |
[[WikiSyntax][wiki syntax]] [[http://gnu.org][GNU]] |
wiki syntax
GNU |
|||||||||||||||||||||||||
|
Prevent a Link: Prevent a WikiWord from being linked by prepending it with an exclamation point. |
!SunOS | SunOS | |||||||||||||||||||||||||
|
Disable Links: You can disable automatic linking of WikiWords by surrounding text with <noautolink> and </noautolink> tags. |
<noautolink> RedHat & SuSE </noautolink> | RedHat & SuSE | |||||||||||||||||||||||||
|
Mailto Links: E-mail addresses are linked automatically. To create e-mail links that have more descriptive link text, specify subject lines or message bodies, or omit the e-mail address, you can write [[mailto:user@domain][descriptive text]].
|
a@b.com [[mailto:a@b.com]\ [Mail]] [[mailto:?subject=\ Hi][Hi]] | a@bPLEASENOSPAM.com Mail Hi | |||||||||||||||||||||||||
<strike>deleted text</strike> to get <body> and </body> tags.
<p /> paragraph tags on empty lines, which causes problems if done between HTML tags that do not allow paragraph tags, like for example between table tags.
<...> - of an HTML tag are on the same line, or the tag will be broken.
<script> tags for your TWiki applications. However note that your TWiki administrator can disable <script> in topics, and may have chosen to do so for security considerations. TWiki markup and TWikiVariables are not expanded inside script tags.
http://..., https://..., ftp://..., gopher://..., news://..., file://..., telnet://... and mailto:...@... are linked automatically.
name@domain.com are linked automatically.
[[Square bracket rules]] let you easily create non-WikiWord links. [[http://yahoo.com Yahoo home page]] as an easier way of doing external links with descriptive text for the link, such as Yahoo home page% that are expanded on the fly. Some variables take arguments, such as %INCLUDE%. For those variables, the arguments are included in curly braces ({ and }).
| Variable | In brief | Full documentation |
|---|---|---|
%TOC% |
Automatically generates a table of contents based on headings in a topic - see the top of this page for an example. | VarTOC |
%WEB% |
The current web, is TWiki04. | VarWEB |
%TOPIC% |
The current topic name, is TWikiDocumentation. | VarTOPIC |
%ATTACHURL% |
The attachment URL of the current topic. Example usage: If you attach a file to a topic you can refer to it as %ATTACHURL%/image.gif to show the URL of the file or the image in your text. |
VarATTACHURL |
%INCLUDE{"SomeTopic"}% |
Server side include, includes another topic. The current web is the default web. Example: %INCLUDE{"TWiki06x01.SiteMap"}% |
VarINCLUDE |
%SEARCH{"sushi"}% |
Inline search showing the search result embedded in a topic. FormattedSearch gives you control over formatting, useful for creating web-based applications. | VarSEARCH |
%BR% to start a new line.
%RED% Red %ENDCOLOR% and %BLUE% blue %ENDCOLOR% colors to get: Red and blue colors.
%ICON{"help"}%, %ICON{"tip"|%, and %icon{"warning"}% to get: !%SOMEVARIABLE% to get: %SOMEVARIABLE%.
%PLUGINDESCRIPTIONS%:
"$SUM( $ABOVE() )" to TWiki tables or anywhere in topic text ExternalSite:Page to link to a page on an external site based on aliases defined in a rules topic :-) as
or :eek: as
<filename> is not displayed. How can I show it as it is? '<' and '>' characters have a special meaning in HTML, they define HTML tags. You need to escape them, so write '<' instead of '<', and '>' instead of '>'. 'prog <filename>' to get 'prog <filename>'.
'&' character sometimes not displayed? '&' character has a special meaning in HTML, it starts a so called character entity, i.e. '©' is the © copyright character. You need to escape '&' to see it as it is, so write '&' instead of '&'. 'This & that' to get 'This & that'.
%VARIABLE% or %VARIABLE{ parameter="value" }% - that expand into content whenever a topic is rendered for viewing. There are two types of variables: %CALC{}% variable)
%T% to get %TOPIC% to get TWikiVariables (a predefined variable)
%CALC{ "$UPPER(Text)" }% to get TEXT (a variable defined by Plugin)
!%TOPIC% to get %TOPIC%
%ALLVARIABLES% to get a full listing of all variables defined for a particular topic
%MYVAR%, %MyVar%, %My2ndVar%, and %My_Var% are all valid variable names. Variables are case sensitive. %MyVAR% and %MYVAR% are not the same variable.
By convention all settings, predefined variables and variables used by plugins are always UPPER-CASE.
[multiple of 3 spaces] * [space] Set [space] VARIABLENAME [space] = [space] value
Examples:Spaces between the = sign and the value will be ignored. You can split a value over several lines by indenting following lines with spaces - as long as you don't try to use * as the first character on the following line.
Set VARIABLENAME = value
Set VARIABLENAME = value
Example:
* Set VARIABLENAME = value starts here
and continues here
Whatever you include in your Variable will be expanded on display, exactly as if it had been entered directly.
Example: Create a custom logo variableYou can also set preferences variables on a topic by clicking the link
- To place a logo anywhere in a web by typing
%MYLOGO%, define the Variable on the web's WebPreferences topic, and upload a logo file, ex:mylogo.gif. You can upload by attaching the file to WebPreferences, or, to avoid clutter, to any other topic in the same web, e.g.LogoTopic. Sample variable setting in WebPreferences:
Set MYLOGO = %PUBURL%/%WEB%/LogoTopic/mylogo.gif
Edit topic preference settings under More topic actions. Preferences set in this manner are not visible in the topic text, but take effect nevertheless.
Local in place of Set in the variable definition. For example, if the user sets the following in their home topic:
* Set EDITBOXHEIGHT = 10 * Local EDITBOXHEIGHT = 20Then when they are editing any other topic, they will get a 10 high edit box. However when they are editing their home topic, they will get a 20 high edit box.
Local can be used wherever a preference needs to take a different value depending on where the current operation is being performed.
Use this powerful feature with great care! %ALLVARIABLES% can be used to get a listing of the values of all variables in their evaluation order, so you can see variable scope if you get confused.
%BR% - line break
%BULLET% - bullet sign
%BB% - line break and bullet combined
%BB2% - indented line break and bullet
%RED% text %ENDCOLOR% - colored text (also %YELLOW%, %ORANGE%, %PINK%, %PURPLE%, %TEAL%, %NAVY%, %BLUE%, %AQUA%, %LIME%, %GREEN%, %OLIVE%, %MAROON%, %BROWN%, %BLACK%, %GRAY%, %SILVER%, %WHITE%)
%H% - %I% - %M% - %N% - %P% - %Q% - %S% - %T% - %U% - %X% - %Y% - %SEARCH%, are powerful and general tools.
%INCLUDINGTOPIC%, %INCLUDE%, and the mighty %SEARCH%.
%ACTIVATEDPLUGINS%
%ALLVARIABLES%
%ATTACHURL%
https://twiki.org/p/pub/TWiki04/VarATTACHURL
%ATTACHURL%/image.gif
%ATTACHURLPATH%
/p/pub/TWiki04/VarATTACHURLPATH
configure. This is used in certain password encodings, and in login templates as part of the login prompt.
%AUTHREALM%
%TOPIC% if there is no INCLUDE
%BASETOPIC%
%WEB% in case there is no include.
%BASEWEB%
%DATE%
2026-03-12
%DISPLAYTIME%
2026-03-12 - 05:44
%GMTIME%
%DISPLAYTIME{"format"}%
%DISPLAYTIME{"$hou:$min"}% expands to 05:44
"\n") and linefeed ("\r")
"<", ">", "&", single quote (') and double quote (")
"%", "[", "]", "@", "_", "*", "=" and "|"
%ENCODE{"string"}%
| Parameter: | Description: | Default: |
|---|---|---|
"string" | String to encode | required (can be empty) |
type="entity" | Encode special characters into HTML entities, like a double quote into " | URL encoding |
type="url" | Encode special characters for URL parameter use, like a double quote into %22 | (this is the default) |
%ENCODE{"spaced name"}% expands to spaced%20name
<input type="text" name="address" value="%ENCODE{ "any text" type="entity" }%" />
%ENDSECTION{"name"}%
%ENDSECTION{type="include"}%
| Parameter: | Description: |
|---|---|
"name" | Name of the section. |
type="..." | Type of the section being terminated; supported types "section", "include", "templateonly". |
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.
%FAILEDPLUGINS%
%FORMFIELD{"fieldname"}%
| Parameter: | Description: | Default: |
|---|---|---|
"fieldname" | The name of a TWiki form field | required |
topic="..." | Topic where form data is located. May be of the form Web.TopicName | Current topic |
format="..." | Format string. $value expands to the field value, and $title expands to the field title | "$value" |
default="..." | Text shown when no value is defined for the field | "" |
alttext="..." | Text shown when field is not found in the form | "" |
%FORMFIELD{"ProjectName" topic="Projects.SushiProject" default="(not set)" alttext="ProjectName field found"}%
%GMTIME%
2026-03-12 - 05:44
%GMTIME{"format"}%
| Variable: | 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 | month in ISO format | 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 | 2026-03-12T05:44:01Z |
$rcs | RCS format timestamp | 2026/03/12 05:44:01 |
$http | E-mail & http format timestamp | Thu, 12 Mar 2026 05:44:01 GMT |
$epoch | Number of seconds since 00:00 on 1st January, 1970 | 1773294241 |
%GMTIME{"$day $month, $year - $hour:$min:$sec"}% expands to 12 Mar, 2026 - 05:44:01
%HOMETOPIC%
WebHome, renders as WebHome
%HTTP%
%HTTP{"Header-name"}%
%HTTP% | |
%HTTP{"Accept-language"}% | |
%HTTP{"User-Agent"}% | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot) Chrome/119.0.6045.214 Safari/537.36 |
%HTTP_HOST%
twiki.org
%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.
%HTTPS%
%HTTPS{"Header-name"}%
%ICON{"name"}%
%ICON{"flag-gray"}% returns %ICON{"pdf"}% returns %ICON{"smile.pdf"}% returns %ICON{"/dont/you/dare/smile.pdf"}% returns %ICON{"http://twiki.org/doc/xhtml.xsl"}% returns arrowbright, bubble, choice-yes, hand
bmp, doc, gif, hlp, html, mp3, pdf, ppt, txt, xls, xml, zip
%ICON{"name"}% generates the full HTML img tag. Specify image name or full filename (see ICON for details on filenames.)
%ICONURL{"name"}%
%ICONURL{"arrowbright"}% returns https://twiki.org/p/pub/TWiki06x01/TWikiDocGraphics/arrowbright.gif
%ICONURL{"novel.pdf"}% returns https://twiki.org/p/pub/TWiki06x01/TWikiDocGraphics/pdf.gif
%ICONURL{"/queen/boheme.mp3"}% returns https://twiki.org/p/pub/TWiki06x01/TWikiDocGraphics/wav.gif
%ICONURLPATH{"name"}%
%ICONURLPATH{"locktopic"}% returns /p/pub/TWiki06x01/TWikiDocGraphics/locktopic.gif
%ICONURLPATH{"eggysmell.xml"}% returns /p/pub/TWiki06x01/TWikiDocGraphics/xml.gif
%ICONURLPATH{"/doc/xhtml.xsl"}% returns /p/pub/TWiki06x01/TWikiDocGraphics/xsl.gif
%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=" is not defined"}% renders as ==
%INCLUDE{"page" ...}%
| 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{"TWiki06x01.SiteMap"}% | |
"http://..." | A full qualified URL, i.e. %INCLUDE{"http://twiki.org:80/index.html"}%. Supported content types are text/html and text/plain. | |
pattern="..." | A RegularExpression pattern to include a subset of a topic or page | none |
rev="2" | Include a previous topic revision; N/A for URLs | top revision |
raw="on" | When a page is included, normally TWiki 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 tags spanning multiple lines. If you prefer to include exactly what is in the source of the originating page set this to on. | disabled |
warn="off" | 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 |
section="name" | Includes only the specified named section, as defined in the included topic by the STARTSECTION and ENDSECTION variables | |
PARONE="val 1" | Any other parameter will be defined as a variable 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. |
raw parameter)
%TOPIC% in case there is no include
%INCLUDINGTOPIC%
%WEB% if there is no INCLUDE.
%INCLUDINGWEB%
LANGUAGE preference is set, it's used as user's language instead of any language detected from the browser.
LANGUAGE at a non per-user way, so each user can choose his/her preferred language.
PO files) to TWiki. Those are the languages in which TWiki's user interface is available.
%LANGUAGES{...}%
| Parameter: | Description: | Default: |
|---|---|---|
format | format for each item. See below for variables available in the format string. | " * $langname" |
separator | separator between items. | "\n" (newline) |
marker="selected" | Text for $marker if the item matches selection | "selected" |
selection="%LANGUAGE%" | Current language to be selected in list | (none) |
format variables: | Variable | Meaning |
|---|---|
$langname | language's name, as informed by the translators |
$langtag | language's tag. Ex: en, pt-br, etc. |
<select>%LANGUAGES{format="<option $marker value='$langtag'>$langname</option>" selection="%LANGUAGE%"}%</select> creates an option list of the available languages with the current language selected
%LOCALSITEPREFS%
Main.TWikiPreferences, renders as TWikiPreferences
%LOGIN%
%LOGOUT%
%MAINWEB%
Main
%MAKETEXT{"string" args="..."}
| Parameter | Description | Default |
|---|---|---|
"text" or string="text" | The text to be displayed. | none |
args="param1, param2" | a comma-separated list of arguments to be interpolated in the string, replacing the [_N] placeholders in it. | none |
%MAKETEXT{string="Notes:"}% %MAKETEXT{"If you have any questions, please contact [_1]." args="%WIKIWEBMASTER%"}% %MAKETEXT{"Did you want to [[[_1]][reset [_2]'s password]]?" args="%TWIKIWEB%.ResetPassword,%WIKIUSERNAME%"}% string to the current user's language only if it has such string in its translation table for that language.
&) followed by one letter (one of a...z, A...Z) (say, X) in the translatable string will be translated to <span class='twikiAccessKey'>X</span>. This is used to implement access keys. If you want to write an actual amperstand that stays just before a letter, write two consecutive amperstands (&&): they will be transformed in just one.
_) are reserved. You cannot use translatable phrases starting with an underscore.
%VARIABLES% inside the translatable strings (since they will get expanded before the %MAKETEXT{...}% itself is handled).
formfield item is the most likely to be useful to casual users.
%META{ "item" ...}%
| Item | Options | Description |
|---|---|---|
"formfield" | name="..." - name of the field. The field value can be shortened as described in FormattedSearch for $formfield | Show a single form field |
"form" | none | Generates the table showing the form fields. See Form Templates |
"attachments" | all="on" to show hidden attachments | Generates the table showing the attachments |
"moved" | none | Details of any topic moves |
"parent" | dontrecurse="on": By default recurses up tree, this has some cost. nowebhome="on": Suppress WebHome. prefix="...": Prefix that goes before parents, but only if there are parents, default "". suffix="...": Suffix, only appears if there are parents, default "". separator="...": Separator between parents, default is " > ". | Generates the parent link |
%METASEARCH{...}%
| 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 | current topic |
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 |
default="none" | Default text shown if no search hit | empty |
%METASEARCH{type="topicmoved" web="%WEB%" topic="%TOPIC%" title="This topic used to exist and was moved to: "}%
%METASEARCH{type="parent" web="%WEB%" topic="%TOPIC%" title="Children: "}%
%METASEARCH{type="field" name="Country" value="China"}%
%NOP% %NOP{...}% deprecated %STARTSECTION{type="templateonly"}% .. %ENDSECTION{type="templateonly"}% instead (see TWikiTemplates for more details).
%NOTIFYTOPIC%
WebNotify, renders as WebNotify
%PLUGINDESCRIPTIONS%
"$SUM( $ABOVE() )" to TWiki tables or anywhere in topic text ExternalSite:Page to link to a page on an external site based on aliases defined in a rules topic :-) as
or :eek: as
%PLUGINVERSION{"name"}% to get the version of a specific plugin
%PLUGINVERSION{"InterwikiPlugin"}% expands to $Rev: 30454 (2018-07-16) $
%PLUGINVERSION% to get the version of the API
6.10
%PUBURL%
https://twiki.org/p/pub
%PUBURL%/%WEB%/OtherTopic/image.gif
%PUBURLPATH%
/p/pub
%URLPARAM{}%.
%QUERYSTRING%
extralog=-%20caching%20topic
%REMOTE_ADDR%
54.87.62.248
%REMOTE_PORT%
%REMOTE_USER%
%REVINFO%
r1 - 2005-03-27 - 13:14:15 - TWikiContributor
%REVINFO{"format"}%
| Parameter: | Description: | Default: |
|---|---|---|
"format" | Format of revision information, see supported variables below | "r1.$rev - $date - $wikiusername" |
web="..." | Name of web | Current web |
topic="..." | Topic name | Current topic |
rev="1.5" | Specific revison number | Latest revision |
| Variable: | Unit: | Example |
|---|---|---|
$web | Name of web | Current web |
$topic | Topic name | Current topic |
$rev | Revison number. Prefix r1. to get the usual r1.5 format | 5 |
$date | Revision date | 11 Jul 2004 |
$time | Revision time | 23:24:25 |
$username | Login username of revision | jsmith |
$wikiname | WikiName of revision | JohnSmith |
$wikiusername | WikiName with Main web prefix | Main.JohnSmith |
%REVINFO{"$date - $wikiusername" rev="1.1"}% returns revision info of first revision
viewauth.cgi)
%SCRIPTNAME%
view
.pl or .cgi
%SCRIPTSUFFIX%
%SCRIPTURL%
https://twiki.org/cgi-bin
%SCRIPTURL{"script"}%
https://twiki.org/cgi-bin/script
%SCRIPTURL{"viewauth"}%/%WEB%/%TOPIC% which expands to https://twiki.org/cgi-bin/viewauth/TWiki04/TWikiVariables
%SCRIPTURLPATH{"script"}% instead, as it works with URL rewriting much better
%SCRIPTURL%, but doesn't include the protocol and host part of the URL
%SCRIPTURLPATH%
/cgi-bin
%SCRIPTURL{"script"}%, but doesn't include the protocol and host part of the URL
%SCRIPTURLPATH{"script"}%
/cgi-bin/script
%SEARCH{"text" ...}%
| Parameter: | Description: | Default: |
|---|---|---|
"text" | Search term. Is a keyword search, literal search or regular expression search, depending on the type parameter. SearchHelp has more | required |
search="text" | (Alternative to above) | N/A |
web="Name" web="Main, Know" web="all" | Comma-separated list of webs to search. You can specifically exclude webs from an all search using a minus sign - for example, web="all,-Secretweb". The special word all means all webs that do not have the NOSEARCHALL variable set to on in their WebPreferences. Note that TWikiAccessControls are respected when searching webs; it is much better to use them than NOSEARCHALL. | Current web |
topic="WebPreferences" topic="*Bug" | Limit search to topics: 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. | All topics in a web |
excludetopic="Web*" excludetopic="WebHome, WebChanges" | Exclude topics from search: 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. | None |
type="keyword" type="literal" type="regex" | Do a keyword search like soap "web service" -shampoo; a literal search like web service; or RegularExpression search like soap;web service;!shampoo | %SEARCHVAR- DEFAULTTYPE% preferences setting (literal) |
scope="topic" scope="text" scope="all" | Search topic name (title); the text (body) of topic; or all (both) | "text" |
order="topic" order="created" order="modified" order="editby" order= | Sort the results of search by the topic names, topic creation time, last modified time, last editor, or named field of TWikiForms. The sorting is done web by web; if you want to sort across webs, create a formatted table and sort it with TablePlugin's initsort. Note that dates are sorted most recent date last (i.e at the bottom of the table). | Sort by topic name |
limit="all" limit="16" | Limit the number of results returned. This is done after sorting if order is specified | All results |
date="..." | limits the results to those pages with latest edit time in the given TimeInterval. | All results |
reverse="on" | Reverse the direction of the search | Ascending search |
casesensitive="on" | Case sensitive search | Ignore case |
bookview="on" | BookView search, e.g. show complete topic text | Show topic summary |
nonoise="on" | Shorthand for nosummary="on" nosearch="on" nototal="on" zeroresults="off" noheader="on" noempty="on" | Off |
nosummary="on" | Show topic title only | Show topic summary |
nosearch="on" | Suppress search string | Show search string |
noheader="on" | Suppress search header Topics: Changed: By: | Show search header, unless seach is inline and a format is specified (Cairo compatibility) |
nototal="on" | Do not show number of topics found | Show number |
zeroresults="off" | Suppress all output if there are no hits | zeroresults="on", displays: "Number of topics: 0" |
noempty="on" | Suppress results for webs that have no hits. | Show webs with no hits |
header="..." format="..." | Custom format results: see FormattedSearch for usage, variables & examples | Results in table |
expandvariables="on" | Expand variables before applying a FormattedSearch on a search hit. Useful to show the expanded text, e.g. to show the result of a SpreadSheetPlugin %CALC{}% instead of the formula | Raw text |
multiple="on" | Multiple hits per topic. Each hit can be formatted. The last token is used in case of a regular expression ";" and search | Only one hit per topic |
nofinalnewline="on" | If on, the search variable does not end in a line by itself. Any text continuing immediately after the search variable on the same line will be rendered as part of the table generated by the search, if appropriate. | off |
recurse="on" | Recurse into subwebs, if subwebs are enabled. | off |
separator=", " | Line separator between hits | Newline "$n" |
newline="%BR%" | Line separator within a search hit. Useful if the format="" parameter contains a $pattern() that captures more than one line, i.e. contents of a textfield in a form. | "$n" (Newline) |
%SEARCH{"wiki" web="Main" scope="topic"}%
%SEARCH{"FAQ" scope="topic" nosearch="on" nototal="on" header="| *Topic: * | *Summary: * |" format="| $topic | $summary |"% (displays results in a table with header - details)
%TABLE{}% variable just before the %SEARCH{}% to alter the output of a search. Example: %TABLE{ tablewidth="90%" }%
%SERVERTIME%
2026-03-11 - 22:44
%GMTIME%
%SERVERTIME{"format"}%
%SERVERTIME{"$hou:$min"}% expands to 22:44
%SESSIONID%
%SESSIONVAR%
%SESSION_VARIABLE{"name"}%
%SESSION_VARIABLE{"name" set="value"}%
%SESSION_VARIABLE{"name" clear=""}%
AUTHUSER session variable, and is read-only
%SPACEDTOPIC%
Var%20*SPACEDTOPIC
%ENCODE{%SPACEOUT{"%TOPIC%" separator=" *"}%}%
%SPACEOUT{ "%TOPIC%" }%
TWiki Variables
| Parameter: | Description: | Default: |
|---|---|---|
separator | The separator to put between words e.g. %SPACEOUT{"DogsCatsBudgies" separator=", "}% -> Dogs, Cats, Budgies | ' ' |
[[WebHome][%SPACEOUT{"WebHome"}%]] expands to Web Home
%STOPINCLUDE% variable. A normal view of the topic shows everything exept the %STARTINCLUDE% variable itself.
%STARTSECTION{type="include"}% instead
%STARTINCLUDE%
%STARTSECTION{}% and %ENDSECTION{}%.
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 (%STARTINCLUDE% is restricted to only one).
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 TWikiTemplates for more information.
%STARTSECTION{"name"}% ................ %ENDSECTION{"name"}%
%STARTSECTION{type="include"}% ........ %ENDSECTION{type="include"}%
%STARTSECTION{type="templateonly"}% ... %ENDSECTION{type="templateonly"}%
| Parameter: | Description: | Default |
|---|---|---|
"name" | Name of the section. Must be unique inside a topic. | Generated name |
type="..." | Type of the section; type "section", "include" or "templateonly" | "section" |
_SECTION0 for the first unnamed section in the topic, _SECTION1 for the second, etc..
%STATISTICSTOPIC%
WebStatistics, renders as WebStatistics
%STOPINCLUDE% variable itself.
%STOPINCLUDE%
%TOC%
"---++ 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
%TOC{"SomeTopic" ...}%
| Parameter: | Description: | Default: |
|---|---|---|
"TopicName" | topic name | Current topic |
web="Name" | Name of web | Current web |
depth="2" | Limit depth of headings shown in TOC | 6 |
title="Some text" | Title to appear at top of TOC | none |
%TOC{depth="2"}%
%TOC{"TWikiDocumentation" web="TWiki06x01" title="Contents:"}%
%TOPIC%
TWikiVariables, renders as TWikiVariables
$name variable gets expanded to the topic name, $qname to double quoted name, $marker to marker parameter where topic matches selection, and $web to the name of the web.
%TOPICLIST{"format" ...}%
| Parameter: | Description: | Default: |
|---|---|---|
"format" | Format of one line, may include $web (name of web), $name (name of the topic), $qname (name of topic in double quotes), $marker (which expands to marker for the item matching selection only) | "$name" |
format="format" | (Alternative to above) | "$name" |
separator=", " | line separator | "$n" (new line) |
marker="selected" | Text for $marker if the item matches selection | "selected" |
selection="TopicA, TopicB" | Current value to be selected in list | (none) |
web="Name" | Name of web | Current web |
%TOPICLIST{" * $web.$name"}% creates a bullet list of all topics
%TOPICLIST{separator=", "}% creates a comma separated list of all topics
%TOPICLIST{" <option>$name</option>"}% creates an option list (for drop down menus)
<select>%TOPICLIST{" <option $marker value='$name'>$name</option>" separator=" " selection="%TOPIC%"}%</select> creates an option list of web topics with the current topic selected
%TWIKIWEB%
TWiki06x01
%URLPARAM{"name"}%
| Parameter: | Description: | Default: |
|---|---|---|
"name" | The name of a URL parameter | required |
default="..." | Default value in case parameter is empty or missing | empty string |
newline="<br />" | Convert newlines in textarea to other delimiters | no conversion |
encode="entity" | Encode special characters into HTML entities. See ENCODE for more details. | no encoding |
encode="url" | Encode special characters for URL parameter use, like a double quote into %22 | no encoding |
multiple="on" multiple="[[$item]]" | If set, gets all selected elements of a <select multiple="multiple"> tag. A format can be specified, with $item indicating the element, e.g. multiple="Option: $item" | first element |
separator=", " | Separator between multiple selections. Only relevant if multiple is specified | "\n" (new line) |
%URLPARAM{"skin"}% returns print for a .../view/TWiki04/TWikiVariables?skin=print URL
%USERINFO%
format parameter to get different formatted results:
%USERINFO{format="$username is really $wikiname"}%
guest is really TWikiGuest
$emails, $username, $wikiname, $wikiusername, and $groups are available for use in the format string.
jsmith, WIKINAME like JohnSmith and WIKIUSERNAME like Main.JohnSmith. Un-authenticated users are all TWikiGuest.
%USERNAME%
guest
%VAR{"NAME" web="Web"}%
%WEBBGCOLOR% of the Main web write %VAR{"WEBBGCOLOR" web="Main"}%, which expands to #FFEFA6
%WEB%
TWiki04
NOSEARCHALL = on preference variable. The "format" defines the format of one web item. The $name variable gets expanded to the name of the web, $qname gets expanded to double quoted name, $marker to marker where web matches selection.
%WEBLIST{"format" ...}%
| Parameter: | Description: | Default: |
|---|---|---|
"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) | "$name" |
format="format" | (Alternative to above) | "$name" |
separator=", " | line separator | "$n" (new line) |
webs="public" | comma separated list of webs, public expands to all non-hidden | "public" |
marker="selected" | Text for $marker if the item matches selection | "selected" |
selection="%WEB%" | Current value to be selected in list | section="%WEB%" |
%WEBLIST{" * [[$name.WebHome]]"}% creates a bullet list of all webs.
%WEBLIST{"<option $marker value=$qname>$name</option>" webs="Trash, public" selection="TWiki04" separator=" "}% creates a dropdown of all public webs + Trash web, with the current web highlighted.
%WEBPREFSTOPIC%
WebPreferences, renders as WebPreferences
%WIKILOGOURL% defined in WebPreferences instead.
%USERNAME% if not defined in the TWikiUsers topic
%WIKINAME%
TWikiGuest
%WIKIPREFSTOPIC%
TWikiPreferences, renders as TWikiPreferences
%WIKITOOLNAME%
TWiki
%WIKIUSERNAME%
Main.TWikiGuest, renders as TWikiGuest
%WIKIUSERSTOPIC%
TWikiUsers, with Main prefix renders as TWikiUsers
%WIKIVERSION%
TWiki-6.1.1-branch, Sun, 02 Jul 2023, build 31079
%SEARCH{...}% is a table consisting of topic names and topic summaries. Use the format="..." parameter to customize the search result. The format parameter typically defines a bullet or a table row containing variables, such as %SEARCH{ "food" format="| $topic | $summary |" }%. See %SEARCH{...}% for other search parameters, such as separator="".
header="..." parameter
Use the header parameter to specify the header of a search result. It should correspond to the format of the format parameter. This parameter is optional. header="| *Topic:* | *Summary:* |"
2. format="..." parameter
Use the format parameter to specify the format of one search hit.
format="| $topic | $summary |"
Variables that can be used in the format string:
| Name: | Expands To: |
|---|---|
$web |
Name of the web |
$topic |
Topic name |
$topic(20) |
Topic name, "- " hyphenated each 20 characters |
$topic(30, -<br />) |
Topic name, hyphenated each 30 characters with separator "-<br />" |
$topic(40, ...) |
Topic name, shortended to 40 characters with "..." indication |
$parent |
Name of parent topic; empty if not set |
$parent(20) |
Name of parent topic, same hyphenation/shortening like $topic() |
$text |
Formatted topic text. In case of a multiple="on" search, it is the line found for each search hit. |
$locked |
LOCKED flag (if any) |
$date |
Time stamp of last topic update, e.g. 12 Mar 2026 - 05:44 |
$isodate |
Time stamp of last topic update, e.g. 2026-03-12T05:44Z |
$rev |
Number of last topic revision, e.g. 4 |
$username |
Login name of last topic update, e.g. jsmith |
$wikiname |
Wiki user name of last topic update, e.g. JohnSmith |
$wikiusername |
Wiki user name of last topic update, like Main.JohnSmith |
$createdate |
Time stamp of topic revision 1 |
$createusername |
Login name of topic revision 1, e.g. jsmith |
$createwikiname |
Wiki user name of topic revision 1, e.g. JohnSmith |
$createwikiusername |
Wiki user name of topic revision 1, e.g. Main.JohnSmith |
$summary |
Topic summary, just the plain text, all formatting and line breaks removed; up to 162 characters |
$summary(50) |
Topic summary, up to 50 characters shown |
$summary(showvarnames) |
Topic summary, with %ALLTWIKI{...}% variables shown as ALLTWIKI{...} |
$summary(noheader) |
Topic summary, with leading ---+ headers removedNote: The tokens can be combined, for example $summary(100, showvarnames, noheader) |
$changes |
Summary of changes between latest rev and previous rev |
$changes(n) |
Summary of changes between latest rev and rev n |
$formname |
The name of the form attached to the topic; empty if none |
$formfield(name) |
The field value of a form field; for example, $formfield(TopicClassification) would get expanded to PublicFAQ. This applies only to topics that have a TWikiForm |
$formfield(name, 10) |
Form field value, "- " hyphenated each 10 characters |
$formfield(name, 20, -<br />) |
Form field value, hyphenated each 20 characters with separator "-<br />" |
$formfield(name, 30, ...) |
Form field value, shortended to 30 characters with "..." indication |
$pattern(reg-exp) |
A regular expression pattern to extract some text from a topic (does not search meta data; use $formfield instead). In case of a multiple="on" search, the pattern is applied to the line found in each search hit.• Specify a RegularExpression that covers the whole text (topic or line), which typically starts with .*, and must end in .* • Put text you want to keep in parenthesis, like $pattern(.*?(from here.*?to here).*) • Example: $pattern(.*?\*.*?Email\:\s*([^\n\r]+).*) extracts the e-mail address from a bullet of format * Email: ... • This example has non-greedy .*? patterns to scan for the first occurance of the Email bullet; use greedy .* patterns to scan for the last occurance • Limitation: Do not use .*) inside the pattern, e.g. $pattern(.*foo(.*)bar.*) does not work, but $pattern(.*foo(.*?)bar.*) does • Note: Make sure that the integrity of a web page is not compromised; for example, if you include an HTML table make sure to include everything including the table end tag |
$count(reg-exp) |
Count of number of times a regular expression pattern appears in the text of a topic (does not search meta data). Follows guidelines for use and limitations outlined above under $pattern(reg-exp). Example: $count(.*?(---[+][+][+][+]) .*) counts the number of <H4> headers in a page. |
$n or $n() |
New line. Use $n() if followed by alphanumeric character, e.g. write Foo$n()Bar instead of Foo$nBar |
$nop or $nop() |
Is a "no operation". This variable gets removed; useful for nested search |
$quot |
Double quote ("). Alternatively write \" to escape it |
$percnt |
Percent sign (%) |
$dollar |
Dollar sign ($) |
%SEARCH{ "FAQ" scope="topic" nosearch="on" nototal="on" header=" * *Topic: Summary:*" format=" * [[$topic]]: $summary" }%
To get this:
TopicClassification field, an OperatingSystem field and an OsVersion field we could write:
| *Topic:* | *OperatingSystem:* | *OsVersion:* | %SEARCH{ "[T]opicClassification.*?value=\"[P]ublicFAQ\"" scope="text" regex="on" nosearch="on" nototal="on" format="| [[$topic]] | $formfield(OperatingSystem) | $formfield(OsVersion) |" }%
To get this:
| Topic: | OperatingSystem: | OsVersion: |
|---|---|---|
| IncorrectDllVersionW32PTH10DLL | OsWin | 95/98 |
| WinDoze95Crash | OsWin | 95 |
%SEARCH{ "__Back to\:__ TWikiFAQ" scope="text" regex="on" nosearch="on" nototal="on" header="TWiki FAQs:" format=" * $pattern(.*?FAQ\:[\n\r]*([^\n\r]+).*) [[$topic][Answer...]]" }%
To get this:
TWiki FAQs: %SEARCH{ "culture" format=" * $topic is referenced by: (list all references)" nosearch="on" nototal="on" }%
%SEARCH{ "(topic found in first search)" format="$topic" nosearch="on" nototal="on" separator=", " }%
$percnt to escape the leading percent of the second search
\" to escape the double quotes
$dollar to escape the $ of $topic
$nop to escape the }% sequence
%SEARCH{ "culture" format=" * $topic is referenced by:$n * $percntSEARCH{ \"$topic\" format=\"$dollartopic\" nosearch=\"on\" nototal=\"on\" separator=\", \" }$nop%" nosearch="on" nototal="on" }%
To get this:
$dollarpercntSEARCH{ for level three, $dollardollarpercntSEARCH{ for level four, etc.
%SEARCH{ "\.*" scope="topic" regex="on" nosearch="on" nototal="on" order="modified" reverse="on" format="| [[$topic]] | $wikiusername | $date |" limit="7" }%
To get this:
| WebStatistics | TWikiAdminGroup | 2023-10-03 - 07:00 |
| TWikiSkins | PeterThoeny | 2020-04-26 - 03:59 |
| WebPreferences | PeterThoeny | 2013-04-29 - 23:15 |
| WebTopMenu | PeterThoeny | 2011-11-16 - 22:27 |
| PatternSkinCustomization | ArthurClemens | 2007-04-15 - 21:34 |
| TWikiReleaseNotes04x01 | PeterThoeny | 2007-01-25 - 22:34 |
| TablePlugin | ArthurClemens | 2007-01-25 - 08:57 |
%CALC{$SET(weekold, $TIMEADD($TIME(), -7, day))}% %SEARCH{ "." scope="topic" regex="on" nosearch="on" nototal="on" order="modified" reverse="on" format="$percntCALC{$IF($TIME($date) < $GET(weekold), <nop>, | [[$topic]] | $wikiusername | $date | $rev |)}$percnt" limit="100" }%
weekold variable to the serialized date of exactly one week ago
$percnt makes sure that the CALC gets executed once for each search hit
weekold date
<nop> is returned, which gets removed at the end of the TWiki rendering process
%URLPARAM{"..."}% variable. Example:
Write this:
<form action="%SCRIPTURLPATH{"view"}%/%WEB%/%TOPIC%">
Find Topics:
<input type="text" name="q" size="32" value="%URLPARAM{"q"}%" /> <input type="submit" class="twikiSubmit" value="Search" />
</form>
Result:
%SEARCH{ search="%URLPARAM{"q"}%" format=" * $web.$topic: %BR% $summary" nosearch="on" }%
To get this:
Result:
Related Topics: UserDocumentationCategory
Attach link at the bottom of the page. The Attach screen lets you browse for a file, add a comment, and upload it. The uploaded file will show up in the File Attachment table. *.php files are renamed to *.php.txt so that no one can place code that would be read in a .php file.
%ATTACHFILESIZELIMIT% variable of the TWikiPreferences, currently set at 500 KB. Manage on the Attachment to be moved.
Move. The attachment and its version history are moved. The original location is stored as topic Meta Data.
Trash, topic TrashAttachment.
Attach file: Sample.txt
Edit topic and enter: %ATTACHURL%/Sample.txt
Preview: %ATTACHURL%/Sample.txt text appears as: /p/pub/TWiki04/FileAttachment/Sample.txt, a link to the text file.
%PUBURLPATH%/%WEB%/OtherTopic/Sample.txt (if it's within the same web)
%PUBURLPATH%/Otherweb/OtherTopic/Sample.txt (if it's in a different web)
Attach file: Sample.txt
Edit topic and write text: %INCLUDE{"%ATTACHURL%/Sample.txt"}% Attach file: Smile.gif
Edit topic and write text: %ATTACHURL%/Smile.gif
Preview: text appears as /p/pub/TWiki04/FileAttachment/Smile.gif, an image.
I Attachment Action Size Date Who Comment Sample.txt manage 0.1 K 22 Jul 2000 - 19:37 UploadingUser Just a sample Smile.gif manage 0.1 K 22 Jul 2000 - 19:38 UploadingUser Smiley face
Manage link takes you to a new page that looks a bit like this (depending on what skin is selected):
h means the attachment is hidden, it isn't listed when viewing a topic.
Hide file checkbox, then click Change properties.
| Input type | Type field | Size field | Value field |
|---|---|---|---|
| One or more checkboxes | checkbox | number of items per line | comma list of item labels |
| One or more checkboxes, plus Set and Clear buttons | checkbox+buttons | (same) | (same) |
| One or more radio buttons (radio buttons are mutually exclusive; only one can be selected) | radio | (same) | (same) |
| Read-only label text | label | ignored | text |
| Drop-down menu or scrollable box | select | 1 for drop down, 2 and up for scrollable box | comma-separated list of options |
| A one-line text field | text | text box width in number of characters | initial text, if a new topic is created with a form template |
| A text box | textarea | columns x rows, e.g. 80x6; default size is 40x5 | initial text, if a new topic is created with a form template |
YourForm, ExpenseReportForm, InfoCategoryForm, RecordReviewForm, whatever you need.
Name, Type, Size, Values, Tooltip message, and Attributes (see sample below).
Example: WebFormYou can also retrieve possible values for select, checkbox or radio types from other topics:
| *Name* | *Type* | *Size* | *Values* | *Tooltip message* | *Attributes* |
| TopicClassification | select | 1 | NoDisclosure, PublicSupported, PublicFAQ | blah blah... | |
| OperatingSystem | checkbox | 3 | OsHPUX, OsLinux, OsSolaris, OsWin | blah blah... | |
| OsVersion | text | 16 | | blah blah... | |
Name Type Size Values Tooltip message Attributes TopicClassification select 1 NoDisclosure, PublicSupported, PublicFAQ blah blah... OperatingSystem checkbox 3 OsHPUX, OsLinux, OsSolaris, OsWin blah blah... OsVersion text 16 blah blah...
Example: WebFormField values can also be obtained as the result of a FormattedSearch. For example,
- In the WebForm topic, define the form:
Name Type Size Values Tooltip message Attributes TopicClassification select 1 blah blah... OperatingSystem checkbox 3 blah blah... OsVersion text 16 blah blah...
Leave the
Valuesfield blank.
- Then in the TopicClassification topic, define the possible values:
Name Type Tooltip message NoDisclosure option blah blah... Public Supported option blah blah... Public FAQ option blah blah...
%SEARCH{"Office$" scope="topic" web="%MAINWEB%" nototal="on" nosummary="on" nosearch="on" regex="on" format="$web.$topic" separator=", " }%
when used in the value field of the form definition, will take the set of field values to be all topic names in the Main web which end in "Office".
Notes: label, text, and textarea fields the value may also contain commas. checkbox fields cannot be initialized through the form template.
label field has no name (blank first column in the form definition) it will not be shown when the form is viewed, only when it is edited.
select, checkbox or radio field, and want to get the values from another topic, you can use [[...]] links. This notation can also be used when referencing another topic to obtain field values, but a name other than the topic name is required as the name of the field.
[[...]] notation.
Tooltip message column is used as a tooltip for the field name (only if field name is a WikiName) - you only see the tooltip in edit view.
Attributes column is used to define special behavior for that form field (multiple attributes can be entered, with or without separators): H indicates that this field should not be shown in view mode. However, the field is available for editing and storing information.
M indicates that this field is mandatory. The topic cannot be saved unless a value is provided for this field. If the field is found empty during topic save, an error is raised and the user is redirected to an oops page. Mandatory fields are indicated by an asterisks next to the field name.
WEBFORMS variable in WebPreferences is optional and defines a list of possible form templates.
Example:
- Set WEBFORMS = BugForm, FeatureForm, Books.BookLoanForm
WEBFORMS enabled, an extra button is added to the edit view. If the topic doesn't have a Form, an Add Form button appears at the end of the topic. If a Form is present, a Change button appears in the top row of the Form. The buttons open a screen that enables selection of a form specified in WEBFORMS, or the No form option.
WebTopicEditTemplate topic in a web, or a new topic that serves as an application specific template topic. Initial Form values can be set there.
formtemplate parameter in the (edit or save) URL. Initial values can then be provided in the URLs or as form values: name, ex: ?BugPriority=1
namevalue=1, ex: ?ColorRed=1.
<form name="newtopic" action="%SCRIPTURLPATH{"edit"}%/%WEB%/">
<input type="hidden" name="formtemplate" value="MyForm" />
New topic name <input type="text" name="topic" size="40" />
<input type="submit" value="Create" />
</form>
SubmitExpenseReport topic where you can create new expense reports, a SubmitVacationRequest topic, and so on. These can specify the required template topic with its associated form. Template topics has more.
FORMFIELD, SEARCH and METASEARCH variables in TWikiVariables, and TWiki Formatted Search.
Example
TWiki users often want to have an overview of topics they contributed to. With the$formfieldparameter it is easy to display the value of a classification field next to the topic link:| *Topic* | *Classification* | %SEARCH{"%MAINWEB%.UserName" scope="text" regex="off" nosearch="on" nototal="on" order="modified" reverse="on" format="|<b>[[$web.$topic][$topic]]</b> |<nop>$formfield(TopicClassification) |" web="Sandbox"}%
checkbox
+multi anywhere in the name
text fields when a topic is saved. If you need linefeeds in a field, make sure it is a textarea.
twikicatitems.tmpl. The replacement Form Template must be set as the first item in the WebPreferences variable WEBFORMS. If missing, pages will display, but attempting to edit results in an error message.
The new Form Template system should work with old Category Table data with no special conversion. Data is assigned to Meta variables the first time an imported topic is edited and saved in the new system.
data/warning.txt.
%TMPL:<key>% and %TMPL:<key>{"attr"}%.
%TMPL:INCLUDE{"file"}%: Includes a template file. The file is found as described below.
%TMPL:DEF{"block"}%: Define a block. Text between this and the %TMPL:END% directive is not used in-place, but is saved for later use with %TMPL:P. Leading and trailing whitespace is ignored.
%TMPL:END%: Ends a block definition.
%TMPL:P{"var"}%: Includes a previously defined block.
%{...}%: is a comment.
twiki.tmpl master template, like twiki.print.tmpl, that redefines the header and footer.
%TMPL:DEF{"x"}% x%P%z%TMPL:END% then %TMPL:P{"x" P="y"}% will expand to xyz.
Note that parameters can simply be ignored; for example=%TMPL:P{"x"}%= will expand to x%P%z.
Any alphanumeric characters can be used in parameter names. You are highly recommended to use parameter names that cannot be confused with TWikiVariables.
Note that three parameter names, context, then and else are reserved. They are used to support a limited form of "if" condition that you can use to select which of two templates to use, based on a context identifier:
%TMPL:DEF{"link_inactive"}%<input type="button" disabled value="Link>%TMPL:END%
%TMPL:DEF{"link_active"}%<input type="button" onclick="link()" value="Link" />%TMPL:END%
%TMPL:P{context="inactive" then="inactive_link" else="active_link"}% for %CONTEXT%
When the "inactive" context is set, then this will expand the "link_inactive" template; otherwise it will expand the "link_active" template.
See IfStatements for details of supported context identifiers.
twiki/templates directory, or can also be read from user topics. As an example, twiki/templates/view.tmpl is the default template file for the twiki/bin/view script.
Templates that are included using %TMPL:INCLUDE% are also found using the same search algorithm, unless you explicitly put '.tmpl' at the end of the template name. In this case, the string is assumed to be the full name of a template in the templates directory, and the algorithm isn't used.
TWiki uses the following search order to determine which template file or topic to use for a particular script. The skin path is set as described in TWikiSkins.
For example, theLegend:
- templates/web/script.skin.tmpl for each skin on the skin path
this usage is supported for compatibility only and is deprecated. Store web-specific templates in TWiki topics instead.
- templates/script.skin.tmpl for each skin on the skin path
- templates/web/script.tmpl
this usage is supported for compatibility only and is deprecated. Store web-specific templates in TWiki topics instead.
- templates/script.tmpl
- The TWiki topic web.topic if the template name can be parsed into web.topic
- The TWiki topic web.SkinSkinScriptTemplate for each skin on the skin path
- The TWiki topic web.ScriptTemplate
- The TWiki topic TWiki06x01.SkinSkinScriptTemplate for each skin on the skin path
- The TWiki topic TWiki06x01.ScriptTemplate
- script refers to the script name, e.g
view,edit- Script refers to the same, but with the first character capitalized, e.g
View- skin refers to a skin name, e.g
dragon,pattern. All skins are checked at each stage, in the order they appear in the skin path.- Skin refers to the same, but with the first character capitalized, e.g
Dragon- web refers to the current web
example template file will be searched for in the following places, when the current web is Thisweb and the skin path is print,pattern: templates/Thisweb/example.print.tmpl deprecated; don't rely on it
templates/Thisweb/example.pattern.tmpl deprecated; don't rely on it
templates/example.print.tmpl
templates/example.pattern.tmpl
templates/Thisweb/example.tmpl deprecated; don't rely on it
templates/example.tmpl
Thisweb.PrintSkinExampleTemplate
Thisweb.PatternSkinExampleTemplate
Thisweb.ExampleTemplate
TWiki06x01.PrintSkinExampleTemplate
TWiki06x01.PatternSkinExampleTemplate
TWiki06x01.ExampleTemplate
view and edit scripts, for example when a topic-specific template is required. Two preference variables can be user to override the templates used: VIEW_TEMPLATE sets the template to be used for viewing a topic
EDIT_TEMPLATE sets the template for editing a topic.
view and edit respectively. The template search order is as specified above.
%TMPL:DEF and %TMPL:END%) to define common sections that appear in two or more other templates. twiki.tmpl is the default master template.
Template variable: Defines: %TMPL:DEF{"sep"}% "|" separator %TMPL:DEF{"htmldoctype"}% Start of all HTML pages %TMPL:DEF{"standardheader"}% Standard header (ex: view, index, search) %TMPL:DEF{"simpleheader"}% Simple header with reduced links (ex: edit, attach, oops) %TMPL:DEF{"standardfooter"}% Footer, excluding revision and copyright parts %TMPL:DEF{"oops"}% Skeleton of oops dialog
When you create a new topic, TWiki locates a topic to use as a content template according to the following search order:
Topic Name: What it is: WebTopicViewTemplate Error page shown when you try to view a nonexistent topic WebTopicNonWikiTemplate Alert page shown when you try to view a nonexistent topic with a non-WikiName WebTopicEditTemplate Default text shown when you create a new topic.
templatetopic CGI parameter
Variable: Description: %DATE%Signature format date. See VarDATE %GMTIME%Date/time. See VarGMTIME %GMTIME{...}%Formatted date/time. See VarGMTIME2 %NOP%A no-operation variable that gets removed. Useful to prevent a SEARCH from hitting an edit template topic; also useful to escape a variable like %URLPARAM%NOP%{...}%%STARTSECTION{type="templateonly"}%
...
%ENDSECTION{type="templateonly"}%Text that gets removed when a new topic based on the template is created. See notes below. %SERVERTIME%Date/time. See VarSERVERTIME %SERVERTIME{...}%Formatted date/time. See VarSERVERTIME2 %USERNAME%Login name of user who is instantiating the new topic, e.g. guest %URLPARAM{"name"}%Value of a named URL parameter %WIKINAME%WikiName of user who is instantiating the new topic, e.g. TWikiGuest %WIKIUSERNAME%User name of user who is instantiating the new tpoic, e.g. Main.TWikiGuest
%STARTSECTION{type="templateonly"}%
...
%ENDSECTION{type="templateonly"}% markers are used to embed text that you do not want expanded when a new topic based on the template topic is created. For example, you might want to write in the template topic:
This template can only be changed by: * Set ALLOWTOPICCHANGE = %MAINWEB%.TWikiAdminGroupThis will restrict who can edit the template topic, but will get removed when a new topic based on that template topic is created.
%NOP% can be used to prevent expansion of TWiki variables that would otherwise be expanded during topic creation e.g.i escape %nop>SERVERTIME% with %SER%NOP%VERTIME%.
All other variables are unchanged, e.g. are carried over "as is" into the new topic.
templatetopic specifies ExampleTopicTemplate as the template topic to use. Here is the HTML source of the form:
<form name="new" action="%SCRIPTURLPATH{edit}%/%WEB%/">
* New example topic:
<input type="text" name="topic" value="ExampleTopic%SERVERTIME{$yearx$mox$day}%" size="26" />
<input type="hidden" name="templatetopic" value="ExampleTopicTemplate" />
<input type="hidden" name="topicparent" value="%TOPIC%" />
<input type="hidden" name="onlywikiname" value="on" />
<input type="hidden" name="onlynewtopic" value="on" />
<input type="submit" class="twikiSubmit" value="Create" />
(date format is <nop>YYYYxMMxDD)
</form>
See TWikiScripts for details of the parameters that the edit script understands.
%WIKIUSERNAME% and %DATE% variables in your topic templates to include the signature of the person creating a new topic. The variables are expanded into fixed text when a new topic is created. The standard signature is: -- %WIKIUSERNAME% - %DATE%
[[%SCRIPTURLPATH{"edit"}%/%WEB%/BugIDXXXXXXXXXX?templatetopic=BugTemplate&topicparent=%TOPIC%&t=%SERVERTIME{"$day$hour$min$sec"}%][Create new item]]=
oopsbase.tmpl and an example oops dialog oopstest.tmpl based on the base template. %TMPL:P{"sep"}%
%TMPL:DEF{"sep"}% | %TMPL:END% <html> <head> <title> %WIKITOOLNAME% . %WEB% . %TOPIC% %.TMPL:P{"titleaction"}%</title> <base href="%SCRIPTURLPATH{"view"}%/%WEB%/%TOPIC%"> <meta name="robots" content="noindex"> </head> <body bgcolor="#FFFFFF"> <table width="100%" border="0" cellpadding="3" cellspacing="0"> <tr> <td bgcolor="%WEBBGCOLOR%" rowspan="2" valign="top" width="1%"> <a href="%WIKIHOMEURL%"> <img src="%PUBURLPATH%/wikiHome.gif" border="0"></a> </td> <td> <b>%WIKITOOLNAME% . %WEB% . </b><font size="+2"> <B>%TOPIC%</b> %TMPL:P{"titleaction"}%</font> </td> </tr> <tr bgcolor="%WEBBGCOLOR%"> <td colspan="2"> %TMPL:P{"webaction"}% </td> </tr> </table> --- ++ %TMPL:P{"heading"}% %TMPL:P{"message"}% <table width="100%" border="0" cellpadding="3" cellspacing="0"> <tr bgcolor="%WEBBGCOLOR%"> <td valign="top"> Topic <b>%TOPIC%</b> . { %TMPL:P{"topicaction"}% } </td> </tr> </table> </body>
%TMPL:DEF{"titleaction"}% (test =titleaction=) %TMPL:END% %TMPL:DEF{"webaction"}% test =webaction= %TMPL:END% %TMPL:DEF{"heading"}% Test heading %TMPL:END% %TMPL:DEF{"message"}% Test =message=. Blah blah blah blah blah blah blah blah blah blah blah... * Some more blah blah blah blah blah blah blah blah blah blah... * Param1: %PARAM1% * Param2: %PARAM2% * Param3: %PARAM3% * Param4: %PARAM4% %TMPL:END% %TMPL:DEF{"topicaction"}% Test =topicaction=: [[%WEB%.%TOPIC%][OK]] %TMPL:P{"sep"}% [[%TWIKIWEB%.TWikiRegistration][Register]] %TMPL:END% %TMPL:INCLUDE{"oopsbase"}%
.../bin/oops/Sandbox/TestTopic2?template=oopstest¶m1=WebHome¶m2=WebNotify
Related Topics: TWikiSkins, DeveloperDocumentationCategory, AdminDocumentationCategory
![]()
twiki/templates directory and are named according to the skin: <scriptname>.<skin>.tmpl. For example, the template used for pages generated by the view script with the print skin selected is view.print.tmpl (this is how the Printable control is implemented). Skin files may also be defined in TWiki topics - see TWikiTemplates for details.
To start creating a new skin, copy the default TWikiTemplates (like view.tmpl), or copy an existing skin to use as a base for your own skin. You should only need to copy the files you intend to customise, as TWiki can be configured to fall back to another skin if a template is not defined in your skin. Name the files as described above (for example view.myskin.tmpl.
text skin, and skin names starting with rss have hard-coded meanings.
The following template files are used for TWiki screens, and are referenced in the TWiki core code. If a skin doesn't define its own version of a template file, then TWiki will fall back to the next skin in the skin path, or finally, to the default version of the template file.
(Certain template files are expected to provide certain TMPL:DEFs - these are listed in sub-bullets) addform - used to select a new form for a topic
attachagain - used when refreshing an existing attachment
attachnew - used when attaching a new file to a topic
attachtables - defines the format of attachments at the bottom of the standard topic view ATTACH:files:footer, ATTACH:files:header, ATTACH:files:row, ATTACH:versions:footer, ATTACH:versions:header, ATTACH:versions:row
changeform - used to change the form in a topic
changes - used by the changes script
edit - used for the edit screen
form
formtables - used to defined the format of forms FORM:display:footer, FORM:display:header, FORM:display:row
login - used for loggin in when using the TemplateLoginManager LOG_IN, LOG_IN_BANNER, LOG_OUT, LOGGED_IN_BANNER, NEW_USER_NOTE, UNRECOGNISED_USER
moveattachment - used when moving an attachment
oopsaccessdenied - used to format Access Denied messages no_such_topic, no_such_web, only_group, topic_access
oopsattention - used to format Attention messages already_exists, bad_email, bad_ver_code, bad_wikiname, base_web_missing, confirm, created_web, delete_err, invalid_web_color, invalid_web_name, in_a_group, mandatory_field, merge_notice, missing_action, missing_fields, move_err, missing_action, no_form_def, no_users_to_reset, notwikiuser, oversized_upload, password_changed, password_mismatch, problem_adding, remove_user_done, rename_err, rename_not_wikiword, rename_topic_exists, rename_web_err, rename_web_exists, rename_web_prerequisites, reset_bad, reset_ok, save_error, send_mail_error, thanks, topic_exists, unrecognized_action, upload_name_changed, web_creation_error, web_exists, web_missing, wrong_password, zero_size_upload
oopschangelanguage - used to prompt for a new language when internationalisation is enabled
oopslanguagechanged - used to confirm a new language when internationalisation is enabled
oopsleaseconflict - used to format lease Conflict messages lease_active, lease_old
preview - used for previewing edited topics before saving
rdiff - used for viewing topic differences
registernotify - used by the user registration system
registernotifyadmin - used by the user registration system
rename - used when renaming a topic
renameconfirm - used when renaming a topic
renamedelete - used when renaming a topic
renameweb - used when renaming a web
renamewebconfirm - used when renaming a web
renamewebdelete - used when renaming a web
searchbookview - used to format inline search results in book view
searchformat - used to format inline search results
search - used by the search CGI script
settings
view - used by the view CGI script
twiki.tmpl is a master template conventionally used by other templates, but not used directly by code.
TMPL:INCLUDE the default templates, or templates from other skins, when you are defining your own skin. If you do, you run the risk that the included file might change and break your skin.
| Variable: | Expanded to: |
|---|---|
%WEBLOGONAME% |
Filename of web logo |
%WEBLOGOIMG% |
Image URL of web logo |
%WEBLOGOURL% |
Link of web logo |
%WEBLOGOALT% |
Alt text of web logo |
%WIKILOGOURL% |
Link of page logo |
%WIKILOGOIMG% |
Image URL of page logo |
%WIKILOGOALT% |
Alt text of page logo |
%WEBBGCOLOR% |
Web-specific background color, defined in the WebPreferences |
%WIKITOOLNAME% |
The name of your TWiki site |
%SCRIPTURL% |
The script URL of TWiki |
%SCRIPTURLPATH% |
The script URL path |
%SCRIPTSUFFIX% |
The script suffix, ex: .pl, .cgi |
%WEB% |
The name of the current web. |
%TOPIC% |
The name of the current topic. |
%WEBTOPICLIST% |
Common links of current web, defined in the WebPreferences. It includes a Go box |
%TEXT% |
The topic text, e.g. the content that can be edited |
%META{"form"}% |
TWikiForm, if any |
%META{"attachments"}% |
FileAttachment table |
%META{"parent"}% |
The topic parent |
%EDITTOPIC% |
Edit link |
%REVTITLE% |
The revision title, if any, ex: (r1.6) |
%REVINFO% |
Revision info, ex: r1.6 - 24 Dec 2002 - 08:12 GMT - TWikiGuest |
%WEBCOPYRIGHT% |
Copyright notice, defined in the WebPreferences |
%BROADCASTMESSAGE% |
Broadcast message at the beginning of your view template, can be used to alert users of scheduled downtimes; can be set in TWikiPreferences |
%WEBTOPICLIST% includes a "Go" box, also called "Jump" box, to jump to a topic. The box also understands URLs, e.g. you can type http://www.google.com/css.pattern.tmpl.
Write in your main template:
<style type='text/css' media='all'>@import url('%PUBURLPATH%/%TWIKIWEB%/MySkin/mystyle.css');</style>
attachtables.tmpl template using the %TMPL:DEF macro syntax described in TWikiTemplates. These macros are:
| Macro | Description |
|---|---|
ATTACH:files:header |
Standard title bar |
ATTACH:files:row |
Standard row |
ATTACH:files:footer |
Footer for all screens |
ATTACH:files:header:A |
Title bar for upload screens, with attributes column |
ATTACH:files:row:A |
Row for upload screen |
ATTACH:files:footer:A |
Footer for all screens |
| Macro | Description |
|---|---|
ATTACH:versions:header |
Header for versions table on upload screen |
ATTACH:versions:row |
Row format for versions table on upload screen |
ATTACH:versions:footer |
Footer for versions table on upload screen |
ATTACH:row macros are expanded for each file in the attachment table, using the following special tags:
| Tag | Description |
|---|---|
%A_URL% |
URL that will recover the file |
%A_REV% |
Revision of this file |
%A_ICON% |
A file icon suitable for representing the attachment content |
%A_FILE% |
The name of the file |
%A_SIZE% |
The size of the file |
%A_DATE% |
The date the file was uploaded |
%A_USER% |
The user who uploaded it |
%A_COMMENT% |
The comment they put in when uploading it |
%A_ATTRS% |
The attributes of the file as seen on the upload screen e.g "h" for a hidden file |
view.skin.tmpl, where skin is the name of the skin e.g. pattern. If no template is found, then the fallback is to use view.tmpl. Each skin on the path is searched for in turn. For example, if you have set the skin path to local,pattern then view.local.tmpl will be searched for first, then view.pattern.tmpl and finally view.tmpl.
The basic skin is defined by a SKIN setting:
Set SKIN = catskin, bearskin
?skin=catskin, bearskin. Example activation of PrintSkin that generates a printable page:
Setting SKIN (or the ?skin parameter in the URL) replaces the existing skin path setting. You can also extend the existing skin path as well, using covers.
Set COVER = ruskin
ruskin, catskin, bearskin). There is also an equivalent cover URL parameter.
The full skin path is built up as follows: SKIN setting (or ?skin if it is set), then COVER setting is added, then ?cover.
text skin is reserved for TWiki internal use.
Skin names starting with rss also have a special meaning; if one or more of the skins in the skin path starts with 'rss' then 8-bit characters will be encoded as XML entities in the output, and the content-type header will be forced to text/xml.
Related Topics: TWikiSkinBrowser, AdminDocumentationCategory, DeveloperDocumentationCategory, TWiki:TWiki.TWikiSkinsSupplementMETA variable name/value pairs
META variables to store topic data that's separate from the main free-form content. This includes program-generated info like FileAttachment and topic movement data, and user-defined TWikiForms info. Use META variables to format and display Meta Data.
%META:<type>{key1="value1" key2="value2" ...}%
name, this appears first for easier searching (note the order of the variables themselves is defined).
\n (new line) is represented in values by %_N_ and " (double-quotes) by %_Q_%.
Example of Format
%META:TOPICINFO{version="1.6" date="976762663" author="LastEditorWikiName" format="1.0"}%
text of the topic
%META:TOPICMOVED{from="Codev.OldName" to="Codev.NewName"
by="TopicMoverWikiName" date="976762680"}%
%META:TOPICPARENT{name="NavigationByTopicContext"}%
%META:FILEATTACHMENT{name="Sample.txt" version="1.3" ... }%
%META:FILEATTACHMENT{name="Smile.gif" version="1.1" ... }%
%META:FORM{name="WebFormTemplate"}%
%META:FIELD{name="OperatingSystem" value="OsWin"}%
%META:FIELD{name="TopicClassification" value="PublicFAQ"}%
| Key | Comment |
|---|---|
| version | Same as RCS version |
| date | integer, unix time, seconds since start 1970 |
| author | last to change topic, is the REMOTE_USER |
| format | Format of this topic, will be used for automatic format conversion |
%META:TOPICMOVED{from="Codev.OldName" to="Codev.NewName" by="talintj" date="976762680"}%
| Key | Comment |
|---|---|
| from | Full name, i.e., web.topic |
| to | Full name, i.e., web.topic |
| by | Who did it, is the REMOTE_USER, not WikiName |
| date | integer, unix time, seconds since start 1970 |
| Key | Comment |
|---|---|
| name | The topic from which this was created, WebHome if done from Go, othewise topic where ? or form used. Normally just topic, but is full web.topic format if parent is in a different Web. Renaming a Web will then only break a few of these references or they can be scanned and fixed. |
| Key | Comment |
|---|---|
| name | Name of file, no path. Must be unique within topic |
| version | Same as RCS revision |
| path | Full path file was loaded from |
| size | In bytes |
| date | integer, unix time, seconds since start 1970 |
| user | the REMOTE_USER, not WikiName |
| comment | As supplied when file uploaded |
| attr | h if hidden, optional |
| Key | Comment |
|---|---|
| movedfrom | full topic name - web.topic |
| movedby | the REMOTE_USER, not WikiName |
| movedto | full topic name - web.topic |
| moveddate | integer, unix time, seconds since start 1970 |
| Key | Comment |
|---|---|
| name | A topic name - the topic represents one of the TWikiForms. Can optionally include the web name (i.e., web.topic), but doesn't normally |
| Key | Name |
|---|---|
| name | Ties to entry in TWikiForms template, is title with all bar alphanumerics and . removed |
| title | Full text from TWikiForms template |
| value | Value user has supplied via form |
diff function output appears in a logical order
META:TOPICINFO
META:TOPICPARENT (optional)
META:TOPICMOVED (optional)
META:FILEATTACHMENT (0 or more entries)
META:FORM (optional)
META:FIELD (0 or more entries; FORM required)
Raw Text link can be clicked to show the text of a topic (i.e., as seen when editing). This is done by adding raw=on to URL. raw=debug shows the meta data as well as the topic data, ex: debug view for this topic
view, preview and edit scripts.
You can render form fields in topic text by using the FORMFIELD variable. Example:%FORMFIELD{"TopicClassification"}% | Variable usage: | Comment: |
|---|---|
%META{"form"}% |
Show form data, see TWikiForms. |
%META{"formfield"}% |
Show form field value. Parameter: name="field_name". Example:%META{ "formfield" name="TopicClassification" }% |
%META{"attachments"}% |
Show attachments, except for hidden ones. Options: all="on": Show all attachments, including hidden ones. |
%META{"moved"}% |
Details of any topic moves. |
%META{"parent"}% |
Show topic parent. Options: dontrecurse="on": By default recurses up tree, at some cost. nowebhome="on": Suppress WebHome. prefix="...": Prefix for parents, only if there are parents, default "". suffix="...": Suffix, only appears if there are parents, default "". separator="...": Separator between parents, default is " > ". |
Meta.pm code that supports the format needs only minor alteration.
Related Topics: DeveloperDocumentationCategory, UserDocumentationCategory
%FAILEDPLUGINS% variable can be used to debug failures. You may also want to check your webserver error log and the various TWiki log files.
ab utility. Example on Unix:time wget -qO /dev/null /cgi-bin/view/TWiki06x01/AbcPlugin
{PluginsOrder} in the Plugins section of configure.
Set SHORTDESCRIPTION = Create dynamic foo bar reports
data/debug.txt. Set to 0=off or 1=on: Set DEBUG = 0
%<pluginname>_<var>%. For example, %DEFAULTPLUGIN_SHORTDESCRIPTION% shows the description of the DefaultPlugin.
%ACTIVATEDPLUGINS% %PLUGINDESCRIPTIONS% "$SUM( $ABOVE() )" to TWiki tables or anywhere in topic text ExternalSite:Page to link to a page on an external site based on aliases defined in a rules topic :-) as
or :eek: as
%FAILEDPLUGINS% | Plugin | Errors |
|---|---|
| SpreadSheetPlugin | none |
| AutoSectionsPlugin | none |
| BackupRestorePlugin | none |
| BlackListPlugin | none |
| CalendarPlugin | none |
| ChartPlugin | none |
| ColorPickerPlugin | none |
| CommentPlugin | none |
| DatePickerPlugin | none |
| EditTablePlugin | none |
| GaugePlugin | none |
| GeoLookupPlugin | none |
| HeadlinesPlugin | none |
| IfThenActionPlugin | none |
| InterwikiPlugin | none |
| JQueryPlugin | none |
| LocalCityTimePlugin | none |
| PercentCompletePlugin | none |
| PerlDocPlugin | none |
| PreferencesPlugin | none |
| QRCodePlugin | none |
| RecentVisitorPlugin | none |
| RenderListPlugin | none |
| SetGetPlugin | none |
| ShareMePlugin | none |
| SlideShowPlugin | none |
| SmiliesPlugin | none |
| SyntaxHighlightingPlugin | none |
| TWikiDrawPlugin | none |
| TWikiOrgPlugin | none |
| TWikiSheetPlugin | none |
| TablePlugin | none |
| TagMePlugin | none |
| TinyMCEPlugin | none |
| TwistyPlugin | none |
| VarCachePlugin | none |
| WatchlistPlugin | none |
| WysiwygPlugin | none |
| Handler | Plugins |
|---|---|
| afterAttachmentSaveHandler | IfThenActionPlugin |
| afterCommonTagsHandler | VarCachePlugin |
| afterEditHandler | WysiwygPlugin |
| afterRenameHandler | TagMePlugin WatchlistPlugin |
| afterSaveHandler | IfThenActionPlugin TagMePlugin VarCachePlugin WatchlistPlugin |
| beforeAttachmentSaveHandler | BlackListPlugin |
| beforeCommonTagsHandler | AutoSectionsPlugin EditTablePlugin PreferencesPlugin TWikiSheetPlugin TwistyPlugin VarCachePlugin WysiwygPlugin |
| beforeEditHandler | AutoSectionsPlugin TinyMCEPlugin WysiwygPlugin |
| beforeMergeHandler | WysiwygPlugin |
| beforeSaveHandler | AutoSectionsPlugin BlackListPlugin CommentPlugin VarCachePlugin WatchlistPlugin WysiwygPlugin |
| commonTagsHandler | SpreadSheetPlugin BackupRestorePlugin BlackListPlugin CalendarPlugin ChartPlugin CommentPlugin EditTablePlugin JQueryPlugin LocalCityTimePlugin SlideShowPlugin SmiliesPlugin SyntaxHighlightingPlugin TWikiOrgPlugin TWikiSheetPlugin VarCachePlugin |
| completePageHandler | IfThenActionPlugin |
| endRenderingHandler | BlackListPlugin This handler is deprecated - please check for updated versions of the plugins that use it! |
| initPlugin | SpreadSheetPlugin AutoSectionsPlugin BackupRestorePlugin BlackListPlugin CalendarPlugin ChartPlugin ColorPickerPlugin CommentPlugin DatePickerPlugin EditTablePlugin GaugePlugin GeoLookupPlugin HeadlinesPlugin IfThenActionPlugin InterwikiPlugin JQueryPlugin LocalCityTimePlugin PercentCompletePlugin PerlDocPlugin PreferencesPlugin QRCodePlugin RecentVisitorPlugin RenderListPlugin SetGetPlugin ShareMePlugin SlideShowPlugin SmiliesPlugin SyntaxHighlightingPlugin TWikiDrawPlugin TWikiOrgPlugin TWikiSheetPlugin TablePlugin TagMePlugin TinyMCEPlugin TwistyPlugin VarCachePlugin WatchlistPlugin WysiwygPlugin |
| modifyHeaderHandler | WysiwygPlugin |
| postRenderingHandler | BlackListPlugin PreferencesPlugin WysiwygPlugin |
| preRenderingHandler | AutoSectionsPlugin InterwikiPlugin SmiliesPlugin TablePlugin |
| registrationHandler | IfThenActionPlugin |
| startRenderingHandler | RenderListPlugin This handler is deprecated - please check for updated versions of the plugins that use it! |
lib/TWiki/Func.pm) describes all the interfaces available to Plugins. Plugins should only use the interfaces described in this module.
Func.pm, you run the risk of creating security holes. Also, your Plugin will likely break and require updating when you upgrade to a new version of TWiki.
lib/TWiki/Plugins/EmptyPlugin.pm module.
DISABLE_ from the function name.
eval block like this:eval { require IPC::Run } return "<font color=\"red\">SamplePlugin: Can't load required modules ($@)</font>" if $@;
$VERSION='0.000' variable, beginning at 1.000.
initPlugin handler should check all dependencies and return TRUE if the initialization is OK or FALSE if something went wrong. initPlugin handler).
$TWiki::Plugins::VERSION in the TWiki::Plugins module contains the TWiki Plugin API version, currently 6.10. %PLUGINVERSION{}% variable to query the Plugin API version or the version of installed Plugins.
%TWiki::cfg hash than adding it as preferences in the Plugin topic MyFirstPlugin.pm
MyFirstPlugin.txt
MyFirstPlugin topic. Other needed Perl code is best placed in a lib/TWiki/Plugins/MyFirstPlugin/ directory.
The Plugin API handles the details of connecting your Perl module with main TWiki code. When you're familiar with the Plugin API, you're ready to develop Plugins.
lib/TWiki/Plugins/EmptyPlugin.pm to <name>Plugin.pm. The EmptyPlugin.pm module contains mostly empty functions, so it does nothing, but it's ready to be used. Customize it. Refer to the Plugin API specs for more information.
If your Plugin uses its own modules and objects, you must include the name of the Plugin in the package name. For example, write Package MyFirstPlugin::Attrs; instead of just Package Attrs;. Then call it using:
use TWiki::Plugins::MyFirstPlugin::Attrs; $var = MyFirstPlugin::Attrs->new();
MyFirstPlugin, press enter and create the new topic
OUTLINE: Doc Topic Contents
Check the Plugins web on TWiki.org for the latest Plugin doc topic template. Here's a quick overview of what's covered: Syntax Rules: <Describe any special text formatting that will be rendered.>" Example: <Include an example of the Plugin in action. Possibly include a static HTML version of the example to compare if the installation was a success!>" Plugin Settings: <Description and settings for custom Plugin %VARIABLES%, and those required by TWiki.>"Plugin Installation Instructions: <Step-by-step set-up guide, user help, whatever it takes to install and run, goes here.>" Plugin Info: <Version, credits, history, requirements - entered in a form, displayed as a table. Both are automatically generated when you create or edit a page in the TWiki:Plugins
- Plugins Preferences <If user settings are needed, explain... Entering values works exactly like TWikiPreferences and WebPreferences: six (6) spaces and then:>"
- Set <EXAMPLE = value added>
web.>"
Plugin, ex: MyFirstPlugin.pm, and a documentation page with the same name(MyFirstPlugin.txt).
lib/TWiki/Plugins/MyFirstPlugin.pm
data/TWiki/MyFirstPlugin.txt
pub/TWiki/MyFirstPlugin/uparrow.gif [a required graphic]
MyFirstPlugin.zip) and add the entire directory structure from Step 1. The archive should look like this: lib/TWiki/Plugins/MyFirstPlugin.pm
data/TWiki/MyFirstPlugin.txt
pub/TWiki/MyFirstPlugin/uparrow.gif
MyFirstPlugin
MyFirstPlugin.zip
Dev, ex: MyFirstPluginDev. This is the discussion page for future development. (User support for Plugins is handled in TWiki:Support
TWiki::Func::getWorkArea() function, which gives you a persistant directory where you can store data files. By default they will not be web accessible. The directory is guaranteed to exist, and to be writable by the webserver user. For convenience, TWiki::Func::storeFile() and TWiki::Func::readFile() are provided to persistently store and retrieve simple data in this area.
TWiki::Func::saveAttachment() function to store the data.
Recommendation for file name: _FooBarPlugin_img123.gif
TWiki::Func::saveAttachment() function to store the data.
Recommendation for file names in Plugin attachment area: _Main_roundedge-ul.gif
Dev, such as MyFirstPluginDev. The Plugin development topic is a great resource to discuss feature enhancements and to get feedback from the TWiki community.
TWiki::Plugins version in which the handler was first deprecated. For example, if we need to define the endRenderingHandler for compatibility with TWiki::Plugins versions before 1.1, we would add this to the plugin:
package TWiki::Plugins::SinkPlugin;
use vars qw( %TWikiCompatibility );
$TWikiCompatibility{endRenderingHandler} = 1.1;
If the currently-running TWiki version is 1.1 or later, then the handler will not be called and the warning will not be issued. TWiki with versions of TWiki::Plugins before 1.1 will still call the handler as required.
%PLUGINVERSION% variable. The 'Since' field in the function
documentation refers to the VERSION number and the date that the function
was addded.
Note: Beware! These methods should only ever be called
from the context of a TWiki Plugin. They require a Plugins SESSION context to be
established before they are called, and will not work if simply called from
another TWiki module. For example,
use TWiki; print TWiki::Func::getSkin(),"\n";will fail with
Can't call method "getSkin" on an undefined value at TWiki/Func.pm line 83.
If you want to call the methods outside the context of a plugin, you can create a Plugins SESSION object. For example,
the script:
use TWiki: $TWiki::Plugins::SESSION = new TWiki(); print TWiki::Func::getSkin(),"\n";will work happily.
SKIN and COVER preferences variables or the skin and cover CGI parameters
Return: $skin Comma-separated list of skins, e.g. 'gnu,tartan'. Empty string if none.
Since: TWiki::Plugins::VERSION 1.000 (29 Jul 2001)
$host URL host, e.g. "http://example.com:80"
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
$web - Web name, e.g. 'Main'
$topic - Topic name, e.g. 'WebNotify'
$script - Script name, e.g. 'view'
$url URL, e.g. "http://example.com:80/cgi-bin/view.pl/Main/WebNotify"
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
$web - Web name, e.g. 'Main'. The current web is taken if empty
$topic - Topic name, e.g. 'WebNotify'
$url URL, e.g. "http://example.com:80/cgi-bin/view.pl/Main/WebNotify"
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
$web - Web name, e.g. 'Main'. The current web is taken if empty
$topic - Topic name, e.g. 'WebNotify'
$template - Oops template name, e.g. 'oopsmistake'. The 'oops' is optional; 'mistake' will translate to 'oopsmistake'.
$param1 ... $param4 - Parameter values for %PARAM1% ... %PARAMn% variables in template, optional
$url URL, e.g. "http://example.com:80/cgi-bin/oops.pl/ Main/WebNotify?template=oopslocked¶m1=joe"
This might be used like this:
my $url = TWiki::Func::getOopsUrl($web, $topic, 'oopsmistake', 'I made a boo-boo'); TWiki::Func::redirectCgiQuery( undef, $url ); return 0;Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002) Since TWiki::Plugins::VERSION 1.1, the recommended approach is to throw an oops exception.
use Error qw( :try ); throw TWiki::OopsException($web, $topic, undef, 0, [ 'I made a boo-boo' ]);and let TWiki handle the cleanup.
$path URL path of pub directory, e.g. "/pub"
Since: TWiki::Plugins::VERSION 1.000 (14 Jul 2001)
$query CGI query object; or 0 if script is called as a shell script
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
$key - Session key
$value Value associated with key; empty string if not set
Since: TWiki::Plugins::VERSION 1.000 (27 Feb 200)
$key - Session key
$value - Value associated with key
$key - Session key
sub initPlugin {
TWiki::Func::getContext()->{'MyID'} = 1;
...
This can be used in SecondPlugin.pm like this:
sub initPlugin {
if( TWiki::Func::getContext()->{'MyID'} ) {
...
}
...
or in a template, like this:
%TMPL:DEF{"ON"}% Not off %TMPL:END%
%TMPL:DEF{"OFF"}% Not on %TMPL:END%
%TMPL:P{context="MyID" then="ON" else="OFF"}%
or in a topic:
%IF{"context MyID" then="MyID is ON" else="MyID is OFF"}%
Note: all plugins have an automatically generated context identifier
if they are installed and initialised. For example, if the FirstPlugin is
working, the context ID 'FirstPlugin' will be set.
Since: TWiki::Plugins::VERSION 1.1
$key - Preferences key
$web - Name of web, optional. Current web if not specified; does not apply to settings of Plugin topics
$value Preferences value; empty string if not set
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
* Set COLOR = red
"MYPLUGIN_COLOR" for $key
my $color = TWiki::Func::getPreferencesValue( "MYPLUGIN_COLOR" );
* Set WEBBGCOLOR = #FFFFC0
my $webColor = TWiki::Func::getPreferencesValue( 'WEBBGCOLOR', 'Sandbox' );
$key - Plugin Preferences key w/o PLUGINNAME_ prefix.
$value Preferences value; empty string if not set
Note: This function will will only work when called from the Plugin.pm file itself. it will not work if called from a sub-package (e.g. TWiki::Plugins::MyPlugin::MyModule)
Since: TWiki::Plugins::VERSION 1.021 (27 Mar 2004)
$key - Preferences key
$web - Name of web, optional. Current web if not specified; does not apply to settings of Plugin topics
$value Preferences flag '1' (if set), or "0" (for preferences values "off", "no" and "0")
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
* Set SHOWHELP = off
"MYPLUGIN_SHOWHELP" for $key
my $showHelp = TWiki::Func::getPreferencesFlag( "MYPLUGIN_SHOWHELP" );
$key - Plugin Preferences key w/o PLUGINNAME_ prefix.
"off", "no" and "0", or values not set at all. True otherwise.
Note: This function will will only work when called from the Plugin.pm file itself. it will not work if called from a sub-package (e.g. TWiki::Plugins::MyPlugin::MyModule)
Since: TWiki::Plugins::VERSION 1.021 (27 Mar 2004)
$name Name of tool, e.g. 'TWiki'
Synonymous with TWiki::Func::getPreferencesValue('WIKITOOLNAME');
Since: TWiki::Plugins::VERSION 1.000 (27 Feb 2001)
$name Name, e.g. 'Main'
Synonymous with TWiki::Func::getPreferencesValue('MAINWEB');
Since: TWiki::Plugins::VERSION 1.000 (27 Feb 2001)
$name Name, e.g. 'TWiki'
Synonymous with TWiki::Func::getPreferencesValue('TWIKIWEB');
Since: TWiki::Plugins::VERSION 1.000 (27 Feb 2001)
DefaultUserLogin
Return: $loginName Default user name, e.g. 'guest'
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
$wikiName Wiki Name, e.g. 'JohnDoe'
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
$wikiName Wiki Name, e.g. "Main.JohnDoe"
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
$wikiName - Wiki name, e.g. 'Main.JohnDoe' or 'JohnDoe'
$loginName Login name of user, e.g. 'jdoe'
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
$loginName - Login name, e.g. 'jdoe'
$dontAddWeb - Do not add web prefix if "1"
$wikiName Wiki name of user, e.g. 'Main.JohnDoe' or 'JohnDoe'
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
$web - Web name, required, e.g. 'Sandbox'
$type - Access type, e.g. 'VIEW', 'CHANGE', 'CREATE'
$wikiName - WikiName of remote user, i.e. "Main.PeterThoeny"
$text - Topic text, optional. If empty, topic $web.$topic is consulted
$topic - Topic name, required, e.g. 'PrivateStuff'
$web - Web name, required, e.g. 'Sandbox'
$filter - spec of web types to recover
$filter may also contain the word 'public' which will further filter
out webs that have NOSEARCHALL set on them.
'allowed' filters out webs the current user can't read.
For example, the deprecated getPublicWebList function can be duplicated
as follows:
my @webs = TWiki::Func::getListOfWebs( "user,public" );Since: TWiki::Plugins::VERSION 1.1
$web - Web name, required, e.g. 'Sandbox'
$newWeb is the name of the new web.
$baseWeb is the name of an existing web (a template web). If the base web is a system web, all topics in it will be copied into the new web. If it is a normal web, only topics starting with 'Web' will be copied. If no base web is specified, an empty web (with no topics) will be created. If it is specified but does not exist, an error will be thrown.
$opts is a ref to a hash that contains settings to be modified in
use Error qw( :try );
use TWiki::AccessControlException;
try {
TWiki::Func::createWeb( "Newweb" );
} catch Error::Simple with {
my $e = shift;
# see documentation on Error::Simple
} catch TWiki::AccessControlException with {
my $e = shift;
# see documentation on TWiki::AccessControlException
} otherwise {
...
};
Since: TWiki::Plugins::VERSION 1.1
use Error qw( :try );
use TWiki::AccessControlException;
try {
TWiki::Func::moveWeb( "Oldweb", "Newweb" );
} catch Error::Simple with {
my $e = shift;
# see documentation on Error::Simple
} catch TWiki::AccessControlException with {
my $e = shift;
# see documentation on TWiki::AccessControlException
} otherwise {
...
};
To delete a web, move it to a subweb of Trash
TWiki::Func::moveWeb( "Deadweb", "Trash.Deadweb" );Since: TWiki::Plugins::VERSION 1.1
$web - Web name, required, e.g. 'Sandbox'
@topics Topic list, e.g. ( 'WebChanges', 'WebHome', 'WebIndex', 'WebNotify' )
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
$web - Web name, optional, e.g. 'Main'.
$topic - Topic name, required, e.g. 'TokyoOffice', or "Main.TokyoOffice"
normalizeWebTopicName.
Since: TWiki::Plugins::VERSION 1.000 (14 Jul 2001)
$web Web name, e.g. "Main", or empty
$topic Topic name, e.g. "MyTopic", or "Main.MyTopic"
( $oopsUrl, $loginName, $unlockTime ) - The $oopsUrl for calling redirectCgiQuery(), user's $loginName, and estimated $unlockTime in minutes, or ( '', '', 0 ) if no lease exists.
Since: TWiki::Plugins::VERSION 1.010 (31 Dec 2002)
$web Web name, e.g. "Main", or empty
$topic Topic name, e.g. "MyTopic", or "Main.MyTopic"
$lock 1 to lease the topic, 0 to clear the lease=
edit script
always takes out a lease.
It is impossible to fully lock a topic. Concurrent changes will be
merged.
Since: TWiki::Plugins::VERSION 1.010 (31 Dec 2002)
$web - web for the topic
$topic - topic name
$meta - reference to TWiki::Meta object
$text - text of the topic (without embedded meta-data!!!
\%options - ref to hash of save options \%options may include: dontlog | don't log this change in twiki log |
comment | comment for save |
minor | True if this is a minor change, and is not to be notified |
my( $meta, $text ) = TWiki::Func::readTopic( $web, $topic )
$text =~ s/APPLE/ORANGE/g;
TWiki::Func::saveTopic( $web, $topic, $meta, $text, { comment => 'refruited' } );
Note: Plugins handlers ( e.g. beforeSaveHandler ) will be called as
appropriate.
$web - Web name, e.g. 'Main', or empty
$topic - Topic name, e.g. 'MyTopic', or "Main.MyTopic"
$text - Topic text to save, assumed to include meta data
$ignorePermissions - Set to "1" if checkAccessPermission() is already performed and OK
$dontNotify - Set to "1" if not to notify users of the change
$oopsUrl Empty string if OK; the $oopsUrl for calling redirectCgiQuery() in case of error
This method is a lot less efficient and much more dangerous than saveTopic.
Since: TWiki::Plugins::VERSION 1.010 (31 Dec 2002)
my $text = TWiki::Func::readTopicText( $web, $topic );
# check for oops URL in case of error:
if( $text =~ /^http.*?\/oops/ ) {
TWiki::Func::redirectCgiQuery( $query, $text );
return;
}
# do topic text manipulation like:
$text =~ s/old/new/g;
# do meta data manipulation like:
$text =~ s/(META\:FIELD.*?name\=\"TopicClassification\".*?value\=\")[^\"]*/$1BugResolved/;
$oopsUrl = TWiki::Func::saveTopicText( $web, $topic, $text ); # save topic text
$web source web - required
$topic source topic - required
$newWeb dest web
$newTopic dest topic
use Error qw( :try );
try {
moveTopic( "Work", "TokyoOffice", "Trash", "ClosedOffice" );
} catch Error::Simple with {
my $e = shift;
# see documentation on Error::Simple
} catch TWiki::AccessControlException with {
my $e = shift;
# see documentation on TWiki::AccessControlException
} otherwise {
...
};
$web - Web name, optional, e.g. 'Main'
$topic - Topic name, required, e.g. 'TokyoOffice'
$rev - revsion number, or tag name (can be in the format 1.2, or just the minor number)
$attachment -attachment filename
( $date, $user, $rev, $comment ) List with: ( last update date, login name of last user, minor part of top revision number ), e.g. ( 1234561, 'phoeny', "5" )
| $date | in epochSec |
| $user | Wiki name of the author (not login name) |
| $rev | actual rev number |
| $comment | WHAT COMMENT? |
$meta->getRevisionInfo instead if you can - it is significantly
more efficient, and returns a user object that contains other user
information.
NOTE: prior versions of TWiki may under some circumstances have returned
the login name of the user rather than the wiki name; the code documentation
was totally unclear, and we have been unable to establish the intent.
However the wikiname is obviously more useful, so that is what is returned.
Since: TWiki::Plugins::VERSION 1.000 (29 Jul 2001)
$web - web for topic
$topic - topic
$time - time (in epoch secs) for the rev
$web - Web name, required, e.g. 'Main'
$topic - Topic name, required, e.g. 'TokyoOffice'
$rev - revision to read (default latest)
( $meta, $text ) Meta data object and topic text
$meta is a perl 'object' of class TWiki::Meta. This class is
fully documented in the source code documentation shipped with the
release, or can be inspected in the lib/TWiki/Meta.pm file.
This method ignores topic access permissions. You should be careful to use checkAccessPermissions to ensure the current user has read access to the topic.
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
$web - Web name, e.g. 'Main', or empty
$topic - Topic name, e.g. 'MyTopic', or "Main.MyTopic"
$rev - Topic revision to read, optional. Specify the minor part of the revision, e.g. "5", not "1.5"; the top revision is returned if omitted or empty.
$ignorePermissions - Set to "1" if checkAccessPermission() is already performed and OK; an oops URL is returned if user has no permission
$text Topic text with embedded meta data; an oops URL for calling redirectCgiQuery() is returned in case of an error
This method is more efficient than readTopic, but returns meta-data embedded in the text. Plugins authors must be very careful to avoid damaging meta-data. You are recommended to use readTopic instead, which is a lot safer..
Since: TWiki::Plugins::VERSION 1.010 (31 Dec 2002)
$web - Web name, optional, e.g. Main.
$topic - Topic name, required, e.g. TokyoOffice, or Main.TokyoOffice
$attachment - attachment name, e.g.=logo.gif=
normalizeWebTopicName.
Since: TWiki::Plugins::VERSION 1.1
$web - web for topic
$topic - topic
$name - attachment name
$rev - revision to read (default latest)
readTopic. If the attachment does not exist, or cannot be read, undef will be returned.
View permission on the topic is required for the
read to be successful. Access control violations are flagged by a
TWiki::AccessControlException. Permissions are checked for the user
passed in.
my( $meta, $text ) = TWiki::Func::readTopic( $web, $topic );
my @attachments = $meta->find( 'FILEATTACHMENT' );
foreach my $a ( @attachments ) {
try {
my $data = TWiki::Func::readAttachment( $meta, $a->{name} );
...
} catch TWiki::AccessControlException with {
};
}
Since: TWiki::Plugins::VERSION 1.1
$web - web for topic
$topic - topic to atach to
$attachment - name of the attachment
$opts - Ref to hash of options
$opts may include:
dontlog |
don't log this change in twiki log |
comment |
comment for save |
hide |
if the attachment is to be hidden in normal topic view |
stream |
Stream of file to upload |
file |
Name of a file to use for the attachment data. ignored if stream is set. Local file on the server. |
filepath |
Client path to file |
filesize |
Size of uploaded data |
filedate |
Date |
try {
TWiki::Func::saveAttachment( $web, $topic, 'image.gif',
{ file => 'image.gif',
comment => 'Picture of Health',
hide => 1 } );
} catch Error::Simple with {
# see documentation on Error
} otherwise {
...
};
Since: TWiki::Plugins::VERSION 1.1
$web source web - required
$topic source topic - required
$attachment source attachment - required
$newWeb dest web
$newTopic dest topic
$newAttachment dest attachment
use Error qw( :try );
try {
# move attachment between topics
moveAttachment( "Countries", "Germany", "AlsaceLorraine.dat",
"Countries", "France" );
# Note destination attachment name is defaulted to the same as source
} catch TWiki::AccessControlException with {
my $e = shift;
# see documentation on TWiki::AccessControlException
} catch Error::Simple with {
my $e = shift;
# see documentation on Error::Simple
};
Since: TWiki::Plugins::VERSION 1.1
$name - Template name, e.g. 'view'
$skin - Comma-separated list of skin names, optional, e.g. 'print'
$text Template text
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
$name - template file name
$skin - comma-separated list of skins to use (default: current skin)
$web - the web to look in for topics that contain templates (default: current web)
$def - template name
$query - CGI query object. If not given, the default CGI query will be used. In most cases you should not pass this parameter.
$contentLength - Length of content
$query - CGI query object. Ignored, only there for compatibility. The session CGI query object is used instead.
$url - URL to redirect to
$header to the HTML header (the tag).
This is useful for Plugins that want to include some javascript custom css. $id - Unique ID to prevent the same HTML from being duplicated. Plugins should use a prefix to prevent name clashes (e.g EDITTABLEPLUGIN_JSCALENDAR)
$header - the HTML to be added to the section. The HTML must be valid in a HEAD tag - no checks are performed.
$header will be expanded before being inserted into the section.
Note that this is not the same as the HTTP header, which is modified through the Plugins modifyHeaderHandler.
Since: TWiki::Plugins::VERSION 1.1
example:
TWiki::Func::addToHEAD('PATTERN_STYLE','<link id="twikiLayoutCss" rel="stylesheet" type="text/css" href="%PUBURL%/TWiki/PatternSkin/layout.css" media="all" />')
%VARIABLES% $text - Text with variables to expand, e.g. 'Current user is %WIKIUSER%'
$topic - Current topic name, e.g. 'WebNotify'
$web - Web name, optional, e.g. 'Main'. The current web is taken if missing
$text Expanded text, e.g. 'Current user is TWikiGuest'
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
See also: expandVariablesOnTopicCreation
$text - Text to render, e.g. '*bold* text and =fixed font='
$web - Web name, optional, e.g. 'Main'. The current web is taken if missing
$text XHTML text, e.g. '<b>bold</b> and <code>fixed font</code>'
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
renderText() $pre - Text occuring before the TWiki link syntax, optional
$web - Web name, required, e.g. 'Main'
$topic - Topic name to link to, required, e.g. 'WebNotify'
$label - Link label, required. Usually the same as $topic, e.g. 'notify'
$anchor - Anchor, optional, e.g. '#Jump'
$createLink - Set to '1' to add question linked mark after topic name if topic does not exist;'0' to suppress link for non-existing topics
$text XHTML anchor, e.g. '<a href='/cgi-bin/view/Main/WebNotify#Jump'>notify</a>'
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
$text - text of the mail, including MIME headers
$retries - number of times to retry the send (default 1)
To: liz@windsor.gov.uk From: serf@hovel.net CC: george@whitehouse.gov Subject: Revolution Dear Liz, Please abolish the monarchy (with King George's permission, of course) Thanks, A. PeasantLeave a blank line between the last header field and the message body. Since: TWiki::Plugins::VERSION 1.1
$wikiName - wiki name of the user
$text - the text to process
%DATE% Signature-format date
%SERVERTIME% See TWikiVariables
%GMTIME% See TWikiVariables
%USERNAME% Base login name
%WIKINAME% Wiki name
%WIKIUSERNAME% Wiki name with prepended web
%URLPARAM{...}% - Parameters to the current CGI query
%NOP% No-op
commonTagsHandler. $var - The name of the variable, i.e. the 'MYVAR' part of %MYVAR%. The variable name must match /^[A-Z][A-Z0-9_]*$/ or it won't work.
\&fn - Reference to the handler function.
$syntax can be 'classic' (the default) or 'context-free'. 'classic' syntax is appropriate where you want the variable to support classic TWiki syntax i.e. to accept the standard %MYVAR{ "unnamed" param1="value1" param2="value2" }% syntax, as well as an unquoted default parameter, such as %MYVAR{unquoted parameter}%. If your variable will only use named parameters, you can use 'context-free' syntax, which supports a more relaxed syntax. For example, %MYVAR{param1=value1, value 2, param3="value 3", param4='value 5"}%
sub handler(\%session, \%params, $topic, $web)where:
\%session - a reference to the TWiki session object (may be ignored)
\%params - a reference to a TWiki::Attrs object containing parameters. This can be used as a simple hash that maps parameter names to values, with _DEFAULT being the name for the default parameter.
$topic - name of the topic in the query
$web - name of the web in the query
sub initPlugin{
TWiki::Func::registerTagHandler('EXEC', \&boo);
}
sub boo {
my( $session, $params, $topic, $web ) = @_;
my $cmd = $params->{_DEFAULT};
return "NO COMMAND SPECIFIED" unless $cmd;
my $result = `$cmd 2>&1`;
return $params->{silent} ? '' : $result;
}
}
would let you do this:
%EXEC{"ps -Af" silent="on"}%
$alias - The name .
\&fn - Reference to the function.
sub handler(\%session)where:
\%session - a reference to the TWiki session object (may be ignored)
TWiki::Func::registerRESTHandler('example', \&restExample);
This adds the restExample function to the REST dispatch table
for the EmptyPlugin under the 'example' alias, and allows it
to be invoked using the URL
http://server:port/bin/rest/EmptyPlugin/example
note that the URL
http://server:port/bin/rest/EmptyPlugin/restExample
(ie, with the name of the function instead of the alias) will not work.
$searchString - the search string, in egrep format
$web - The web to search in
\@topics - reference to a list of topics to search
\%option - reference to an options hash
\%options hash may contain the following options: type - if regex will perform a egrep-syntax RE search (default '')
casesensitive - false to ignore case (defaulkt true)
files_without_match - true to return files only (default false). If files_without_match is specified, it will return on the first match in each topic (i.e. it will return only one match per topic, and will not return matching lines).
my $result = TWiki::Func::searchInWebContent( "Slimy Toad", $web, \@topics,
{ casesensitive => 0, files_without_match => 0 } );
foreach my $topic (keys %$result ) {
foreach my $matching_line ( @{$result->{$topic}} ) {
...etc
Since: TWiki::Plugins::VERSION 1.1
$filename - Full path name of file
$text Content of file, empty if not found
NOTE: Use this function only for the Plugin workarea, not for topics and attachments. Use the appropriate functions to manipulate topics and attachments.
Since: TWiki::Plugins::VERSION 1.000 (07 Dec 2002)
$filename - Full path name of file
$text - Text to save
$name - Name of the expression to retrieve. See notes below
my $upper = TWiki::Func::getRegularExpression('upperAlpha');
my $alpha = TWiki::Func::getRegularExpression('mixedAlpha');
my $capitalized = qr/[$upper][$alpha]+/;
Those expressions marked type 'RE' are precompiled regular expressions that can be used outside square brackets. For example:
my $webRE = TWiki::Func::getRegularExpression('webNameRegex');
my $isWebName = ( $s =~ m/$webRE/ );
| Name | Matches | Type |
|---|---|---|
| upperAlpha | Upper case characters | String |
| upperAlphaNum | Upper case characters and digits | String |
| lowerAlpha | Lower case characters | String |
| lowerAlphaNum | Lower case characters and digits | String |
| numeric | Digits | String |
| mixedAlpha | Alphabetic characters | String |
| mixedAlphaNum | Alphanumeric characters | String |
| wikiWordRegex | WikiWords | RE |
| webNameRegex | User web names | RE |
| anchorRegex | #AnchorNames | RE |
| abbrevRegex | Abbreviations e.g. GOV, IRS | RE |
| emailAddrRegex | email@addressPLEASENOSPAM.com | RE |
| tagNameRegex | Standard variable names e.g. %THIS_BIT% (THIS_BIT only) | RE |
$web - Web name, identifying variable, or empty string
$topic - Topic name, may be a web.topic string, required.
| Input | Return |
|---|---|
| ( 'Web', 'Topic' ) | ( 'Web', 'Topic' ) |
| ( '', 'Topic' ) | ( 'Main', 'Topic' ) |
| ( '', '' ) | ( 'Main', 'WebHome' ) |
| ( '', 'Web/Topic' ) | ( 'Web', 'Topic' ) |
| ( '', 'Web.Topic' ) | ( 'Web', 'Topic' ) |
| ( 'Web1', 'Web2.Topic' ) | ( 'Web2', 'Topic' ) |
| ( 'Main', 'Topic' ) | ( 'Main', 'Topic' ) |
| ( 'TWiki06x01', 'Topic' ) | ( 'TWiki', 'Topic' ) |
Main and TWiki are the web names set in $cfg{UsersWebName} and $cfg{SystemWebName} respectively.
$text - Text to write; timestamp gets added
$text - Text to write; timestamp gets added
$time - Time in epoc seconds
$format - Format type, optional. Default e.g. '31 Dec 2002 - 19:30'. Can be '$iso' (e.g. '2002-12-31T19:30Z'), '$rcs' (e.g. '2001/12/31 23:59:59', '$http' for HTTP header format (e.g. 'Thu, 23 Jul 1998 07:21:56 GMT'), or any string with tokens '$seconds, $minutes, $hours, $day, $wday, $month, $mo, $year, $ye, $tz' for seconds, minutes, hours, day of month, day of week, 3 letter month, 2 digit month, 4 digit year, 2 digit year, timezone string, respectively
$timezone - either not defined (uses the displaytime setting), 'gmtime', or 'servertime'
$text Formatted time string
| Note: | if you used the removed formatGmTime, add a third parameter 'gmtime' |
$text - Word to test
$attr - Attribute string
%params Hash containing all parameters. The nameless parameter is stored in key _DEFAULT
Since: TWiki::Plugins::VERSION 1.025 (26 Aug 2004)
%TEST{ 'nameless' name1="val1" name2="val2" }%
{...} to get: 'nameless' name1="val1" name2="val2"
%params hash contains now: _DEFAULT => 'nameless' name1 => "val1" name2 => "val2"
$attr - Attribute string
$name - Name, optional
$value Extracted value
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
%TEST{ 'nameless' name1="val1" name2="val2" }%
{...} to get: 'nameless' name1="val1" name2="val2"
my $noname = TWiki::Func::extractNameValuePair( $text ); my $val1 = TWiki::Func::extractNameValuePair( $text, "name1" ); my $val2 = TWiki::Func::extractNameValuePair( $text, "name2" );
TWiki::Plugins version in which the handler was first deprecated. For example, if we need to define the endRenderingHandler for compatibility with TWiki::Plugins versions before 1.1, we would add this to the plugin:
package TWiki::Plugins::SinkPlugin;
use vars qw( %TWikiCompatibility );
$TWikiCompatibility{endRenderingHandler} = 1.1;
If the currently-running TWiki version is 1.1 or later, then the handler will not be called and the warning will not be issued. TWiki with versions of TWiki::Plugins before 1.1 will still call the handler as required.
The following functions are retained for compatibility only. You should
stop using them as soon as possible.
getScriptUrl instead.
Return: $path URL path of TWiki scripts, e.g. "/cgi-bin"
WARNING: you are strongly recommended not to use this function, as the
{ScriptUrlPaths} URL rewriting rules will not apply to urls generated
using it.
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
getListOfWebs instead.
Get list of all public webs, e.g. all webs that do not have the NOSEARCHALL flag set in the WebPreferences
Return: @webs List of all public webs, e.g. ( 'Main', 'Know', 'TWiki' )
Since: TWiki::Plugins::VERSION 1.000 (07 Dec 2002)
formatTime instead.
Format the time to GM time $time - Time in epoc seconds
$format - Format type, optional. Default e.g. '31 Dec 2002 - 19:30', can be 'iso' (e.g. '2002-12-31T19:30Z'), 'rcs' (e.g. '2001/12/31 23:59:59', 'http' for HTTP header format (e.g. 'Thu, 23 Jul 1998 07:21:56 GMT')
$text Formatted time string
Since: TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
$dir Data directory, e.g. '/twiki/data'
This function violates store encapsulation and is therefore deprecated.
Since: TWiki::Plugins::VERSION 1.000 (07 Dec 2002)
$dir/Web/TopicName
Return: $dir Pub directory, e.g. '/htdocs/twiki/pub'
This function violates store encapsulation and is therefore deprecated.
Use readAttachment and saveAttachment instead.
Since: TWiki::Plugins::VERSION 1.000 (07 Dec 2002)
twiki/bin and twiki/tools directories. This topic describes the interfaces to some of those scripts. All scripts in the twiki/bin directory can be called from the CGI (Common Gateway Interfacetwiki/tools directory can only be called from the command line.
twiki/bin directory.
guest).
twiki/bin directory to run the scripts from the command line. To avoid issues with file permissions, run the scripts as the web server user such as nobody or www.
Parameters are passed using '-name' - for example,
$ cd /usr/local/twiki/bin $ save -topic MyWeb.MyTopic -user admin -action save -text "New text of the topic"All parameters require a value.
| Parameter | Description | Default |
|---|---|---|
topic |
If this is set to a URL, TWiki will immediately redirect to that URL. Otherwise it overrides the URL and is taken as the topic name (you can pass Web.TopicName) | |
user |
Command-line only; set the name of the user performing the action. Note: this usage is inherently insecure, as it bypasses webserver login constraints. For this reason only authorised users should be allowed to execute scripts from the command line. | |
skin |
Overrides the default skin path (see TWikiSkins) | |
cover |
Specifies temporary skin path to prepend to the skin path for this script only (see TWikiSkins) |
attach upload. This script is part of the transactions sequence executed when a file is uploaded from the browser. it just generates the "new attachment" page for a topic.
| Parameter | Description | Default |
|---|---|---|
filename |
Name of existing attachment (if provided, this is a "manage attachment" action) | none (in which case this is a "new attachment" action) |
changes changes script can receive one parameter:
| Parameter | Description | Default |
|---|---|---|
minor |
If 0, show only major changes. If 1, show all the changes (both minor and major) | 0 |
%SEARCH%, while this script reads the changes file in each web, making it much faster.
NOTE: The result from changes script and the topic WebChanges can be different, if the changes file is deleted from a web. In particular, in new installations the changes script will return no results while the WebChanges topic will.
configure configure is the browser script used for inspection and configuration of the TWiki configuration. None of the parameters to this script are useable for any purpose except configure.
edit edit scipt understands the following parameters, typically supplied by HTML input fields:
| Parameter | Description | Default |
|---|---|---|
action |
Optional. Use the editaction template instead of the standard edit. If action=text, then hide the form. If action=form hide the normal text area and only edit the form. | |
onlynewtopic |
If set, error if topic already exists | |
onlywikiname |
If set, error if topic name is not a WikiWord | |
templatetopic |
The name of the template topic, copied to get the initial content | |
text |
Initial text for the topic | |
topicparent |
The parent topic | |
formtemplate |
Name of the form to instantiate in the topic. Overrides the form set in the templatetopic if defined. |
|
contenttype |
Optional parameter that defines the application type to write into the CGI header. Defaults to text/html. May be used to invoke alternative client applications |
|
anyname |
Any parameter can passed to the new topic; if the template topic contains %URLPARAM{"anyname"}%, it will be replaced by its value |
|
breaklock |
If set, any lease conflicts will be ignored, and the edit will proceed even if someone is already editing the topic. |
Status the parameter name is Status. X characters in the topic name will be converted on save to a number such that the resulting topic name is unique in the target web.
EDIT_SKIN, which is used as the value of the cover parameter in edit URLs. This allows you to override the default edit skin on a web, topic or user basis.
login | Parameter | Description | Default |
|---|---|---|
origurl |
URL that was being accessed when an access violation occurred. the login process will redirect to this URL if it is successful | none |
username |
username of user logging in | none |
password |
password of user logging in | none |
logon manage | Parameter | Description | Default |
|---|---|---|
action |
One of createweb, deleteUserAccount, editSettings or saveSettings |
none |
action=createweb | Parameter | Description | Default |
|---|---|---|
newweb |
Name of the new web | '' |
baseweb |
Name of the web to copy to create the new web | '' |
webbgcolor |
value for WEBBGCOLOR | '' |
sitemapwhat |
Value for SITEMAPWHAT | '' |
sitemapuseto |
Value for SITEMAPUSETO | '' |
nosearchall |
Value for NOSEARCHALL | '' |
action=deleteUserAccount | Parameter | Description | Default |
|---|---|---|
password |
Users' password | none |
action=editSettings action=bulkRegister | Parameter | Description | Default |
|---|---|---|
OverwriteHomeTopics |
Whether to overwrite existing home topics or not | false |
EmailUsersWithDetails |
Whether to mail registered users or not | false |
LogTopic |
Topic to save the log in | Same as topic name, with 'Result' appended. |
action=saveSettings | Parameter | Description | Default |
|---|---|---|
text |
Text of the topic | '' |
originalrev |
Revision that the edit started on | Most recent revision |
oops oops templates are used with the oops script to generate system messages. This is done to make internationalisation or other local customisations simple.
The oops script supports the following parameters:
| Parameter | Description | Default |
|---|---|---|
template |
Name of the template file to display | |
def |
Optional, can be set to the name of a single definition within template. This definition will be instantiated in the template wherever %INSTANTIATE% is seen. This lets you use a single template file for many messages. For an example, see oopsmanagebad.tmpl. |
|
paramN |
Where N is an integer from 1 upwards. These values will be substituted into template for %PARAM1% etc. |
passwd | Parameter | Description | Default |
|---|---|---|
action |
one of changePassword or resetPassword |
none |
manage, action=changePassword.
action=changePassword | Parameter | Description | Default |
|---|---|---|
username |
Username | |
oldpassword |
Existing password (plain text) | |
password |
New password (plain text) | |
passwordA |
New password confirmation (plain text) | |
TopicName |
? |
preview save script.
rdiff | Parameter | Description | Default |
|---|---|---|
| rev1 | the higher revision | |
| rev2 | the lower revision | |
| render | the rendering style {sequential, sidebyside, raw, debug} | DIFFRENDERSTYLE, sequential |
| type | {history, diff, last} history diff, version to version, last version to previous | diff |
| context | number of lines of context |
register | Parameter | Description | Default |
|---|---|---|
action |
register or verify or resetPassword or approve |
rename | Parameter | Description | Default |
|---|---|---|
skin |
skin(s) to use | |
newweb |
new web name | |
newtopic |
new topic name | |
breaklock |
||
attachment |
||
confirm |
if defined, requires a second level of confirmation | |
currentwebonly |
if defined, searches current web only for links to this topic | |
nonwikiword |
if defined, a non-wikiword is acceptable for the new topic name |
resetpasswd | Parameter | Description | Default |
|---|---|---|
LoginName |
list of usernames to reset | none - error if not set |
Introduction |
message to be sent alongside the reset, most often used to announce to the user that they have been given an account. | '' |
rest endPoint parameter is specified, in which case the control is redirected to the given topic.
The rest script itself uses one parameter:
endPoint |
Where to redirect the response once the request is served, in the form "Web.Topic" |
rest script assumes that it will be called with URL in the form:
http://my.host/bin/rest/<subject>/<verb>
where <subject> must be the WikiWord name of one of the installed TWikiPlugins, and the <verb> is the alias for the function registered using the registerRESTHandler. The <subject> and <verb> are then used to lookup and call the registered function.
Functions outside the Plugins also can be registered, but please consider the security implications of allowing URL access, as functions can sidestep TWiki Authentication & Authorisation settings.
<subject> and <verb> are checked for illegal characters exactly in the same way as the web and topic names.
As an example, the EmptyPlugin has registered a function to be used with the rest script under the subject EmptyPlugin and the verb example. Click below to see the rest script in action (run as TWikiGuest).
Call the Plugin
You can also call the function from the command line, but this will be run as the TWikiAdminGroup (as it is assumed that shell access is secure) - eg: ./rest EmptyPlugin.exampleNote that for calls to Plugins, they must be enabled in
configure.
save save script performs a range of save-related functions, as selected by the action parameter.
| Parameter | Description | Default |
|---|---|---|
action_save=1 |
default; save, return to view, dontnotify is OFF | |
action_quietsave=1 |
save, and return to view, dontnotify is ON |
|
action_checkpoint |
save and redirect to the edit script, dontnotify is ON |
|
action_cancel |
exit without save, return to view | |
action_preview |
preview edited text | |
action_addform |
Redirect to the "change form" page. | |
action_replaceform... |
Redirect to the "change form" page. | |
action_delRev |
Administrators only delete the most recent revision of the topic - all other parameters are ignored. You have to be a member of TWikiAdminGroup to use this, and not all store implementations will support it. | |
action_repRev |
Administrators only replace the text of the most recent revision of the topic with the text in the text parameter. text must included embedded meta-data tags. All other parameters are ignored. You have to be a member of TWikiAdminGroup to use this, and not all store implementations will support it. |
|
onlynewtopic |
If set, error if topic already exists | |
onlywikiname |
If set, error if topic name is not a WikiWord | |
dontnotify |
if defined, suppress change notification | |
templatetopic |
Name of a topic to use as a template for the text and form | |
text |
New text of the topic | |
forcenewrevision |
if set, forces a revision even if TWiki thinks one isn't needed | |
topicparent |
If 'none' remove any current topic parent. If the name of a topic, set the topic parent to this. | |
formtemplate |
if defined, use the named template for the form | |
editaction |
When action is checkpoint, add form or replace form..., this is used as the action parameter to the edit script that is redirected to after the save is complete. |
|
originalrev |
Revision on which the edit started. |
oops page.
The parameters are interpreted in according to the following rules.
X characters in the topic name will be converted to a number such that the resulting topic name is unique in the target web.
save, checkpoint, quietsave, or preview: text parameter, if it is defined, templatetopic, if it is defined,
formtemplate, if defined templatetopic, if defined,
templatetopic, if defined,
text and originalrev is > 0 and is not the same as the revision number of the most recent revision. If merging is enabled both the topic and the meta-data are merged.
Form field values are passed in parameters named 'field' - for example, if I have a field Status the parameter name is Status.
search %SEARCH% functionality driven by the following CGI parameters:
| Parameter: | Description: | Default: |
|---|---|---|
"text" |
Search term. Is a keyword search, literal search or regular expression search, depending on the type parameter. SearchHelp has more |
required |
search="text" |
(Alternative to above) | N/A |
web="Name" web="Main, Know" web="all" |
Comma-separated list of webs to search. See TWikiVariables for more details. | Current web |
topic="WebPreferences" topic="*Bug" |
Limit search to topics: A topic, a topic with asterisk wildcards, or a list of topics separated by comma. | All topics in a web |
excludetopic="Web*" excludetopic="WebHome, WebChanges" |
Exclude topics from search: A topic, a topic with asterisk wildcards, or a list of topics separated by comma. | None |
type="keyword" type="literal" type="regex" |
Do a keyword search like soap "web service" -shampoo; a literal search like web service; or RegularExpression search like soap;web service;!shampoo |
%SEARCHVAR- DEFAULTTYPE% preferences setting (literal) |
scope="topic" scope="text" scope="all" |
Search topic name (title); the text (body) of topic; or all (both) | "text" |
order="topic" order="created" order="modified" order="editby" order= |
Sort the results of search by the topic names, topic creation time, last modified time, last editor, or named field of TWikiForms. The sorting is done web by web; in case you want to sort across webs, create a formatted table and sort it with TablePlugin's initsort | Sort by topic name |
limit="all" limit="16" |
Limit the number of results returned. This is done after sorting if order is specified |
All results |
date="..." |
limits the results to those pages with latest edit time in the given TimeInterval. | All results |
reverse="on" |
Reverse the direction of the search | Ascending search |
casesensitive="on" |
Case sensitive search | Ignore case |
bookview="on" |
BookView search, e.g. show complete topic text | Show topic summary |
nonoise="on" |
Shorthand for nosummary="on" nosearch="on" nototal="on" zeroresults="off" noheader="on" noempty="on" |
Off |
nosummary="on" |
Show topic title only | Show topic summary |
nosearch="on" |
Suppress search string | Show search string |
noheader="on" |
Suppress search header Topics: Changed: By: |
Show search header |
nototal="on" |
Do not show number of topics found | Show number |
zeroresults="off" |
Suppress all output if there are no hits | zeroresults="on", displays: "Number of topics: 0" |
noempty="on" |
Suppress results for webs that have no hits. | Show webs with no hits |
header="..." format="..." |
Custom format results: see FormattedSearch for usage, variables & examples | Results in table |
expandvariables="on" |
Expand variables before applying a FormattedSearch on a search hit. Useful to show the expanded text, e.g. to show the result of a SpreadSheetPlugin %CALC{}% instead of the formula |
Raw text |
multiple="on" |
Multiple hits per topic. Each hit can be formatted. The last token is used in case of a regular expression ";" and search | Only one hit per topic |
nofinalnewline="on" |
If on, the search variable does not end in a line by itself. Any text continuing immediately after the search tag on the same line will be rendered as part of the table generated by the search, if appropriate. |
off |
separator=", " |
Line separator between hits | Newline "$n" |
statistics | Parameter | Description | Default |
|---|---|---|
webs |
list of webs to run stats on | none |
twiki upload multipart/form-data format.
| Parameter | Description | Default |
|---|---|---|
hidefile |
if defined, will not show file in attachment table | |
filepath |
local (client) path name of the file being uploaded. This is used to look up the data for the file in the HTTP query. | |
filename |
deprecated, do not use | |
filecomment |
Comment to associate with file in attachment table | |
createlink |
if defined, will create a link to file at end of topic | |
changeproperties |
if defined, this is a property change operation only - no file will be uploaded. | null |
curl to upload files from the command line using this script.
view | Parameter | Description | Default |
|---|---|---|
raw=on |
Shows the text of the topic in a scrollable textarea | |
raw=debug |
As raw=on, but also shows the metadata (forms etc) associated with the topic. |
|
raw=text |
Shows only the source of the topic, as plain text (Content-type: text/plain). Only shows the body text, not the form or other meta-data. | |
raw=all |
Shows only the source of the topic, as plain text (Content-type: text/plain), with embedded meta-data. This may be useful if you want to extract the source of a topic to a local file on disc. | |
contenttype |
Allows you to specify a different Content-Type: (e.g. contenttype=text/plain) |
|
rev |
Revision to view (e.g. rev=45) |
|
template |
Allows you to specify a different skin template, overriding the 'view' template the view script would normally use. The default template is view. For example, you could specify /cgi-bin/view/TWiki04/TWikiScripts?template=edit. This is mainly useful when you have specialised templates for a TWiki Application. |
text skin. In earlier TWiki versions the skin=text parameter was used like this:
http://.../view/MyWeb/MyTopic?skin=text&contenttype=text/plain&raw=on
which shows the topic as plain text; useful for those who want to download plain text for the topic.
Using skin=text this way is DEPRECATED, use raw=text instead.
viewfile pub) directory using a URL. However if it contains sensitive information, you will want to protect attachments using TWikiAccessControls. In this case, you can use the viewfile script to give access to attachments while still checking access controls.
| Parameter | Description | Default |
|---|---|---|
filename |
name of attachment | |
rev |
Revision to view |
twiki/tools directory.
geturl.pl wget and curl commands. geturl <host> <path> [<port> [<header>]]
geturl some.domain /some/dir/file.html 80
http://some.domain:80/some/dir/file.html
rewriteshebang.pl #!/usr/bin/perl shebang lines specific to your local Perl installation. It will rewrite the first line of all your TWiki cgi scripts so they use a different shebang line. Use it if your perl is in a non-standard location, or you want to use a different interpreter (such as 'speedy').
tick_twiki.pl 0 0 * * 0 cd /usr/twiki/bin && perl ../tools/tick_twiki.pl
Note: The script has to be run by a user who can write files created by the webserver user.
Related Topics: AdminDocumentationCategory, DeveloperDocumentationCategory
mailnotify is called by a background process at regular intervals. The script sends an automated e-mail to subscribed users if topics were changed in a web since the script was last run.
%NOTIFYTOPIC%
* daisy@flowers.com * daisy@flowers.com: Web* * DaisyCutter: Petal* (1) WeedKillers (3) Red*Phlox * StarTrekFan: * - *Wars - *sInTheirEyes - *shipTroopersA user may be listed many times in the WebNotify topic. Where a user has several lines in WebNotify that all match the same topic, they will only be notified of changes to that topic once. If a TWiki group is listed for notification, the group will be recursively expanded to the e-mail addresses of all members.
%MAINWEB% instead of Main, but this is not necessary even if you have renamed the main web by configuring {MainWebName} in configure.
SEARCH. The number of topics listed by the limit parameter.:
%SEARCH{ ".*" web="TWiki04" regex="on" nosearch="on" order="modified"
reverse="on" limit="50" }%
SEARCH:
%SEARCH{ "\.*" scope="topic" regex="on" nosearch="on" }%
%STATISTICSTOPIC%
twiki/bin/statistics script from a cron job, once a day is recommended. This will update the WebStatistics topics in all webs.
nobody on many systems. Example crontab entry: 0 0 * * * (cd /path/to/twiki/bin; ./statistics >/dev/null 2>&1)
nobody : Run the utility twiki/bin/geturl in your cron job and specify the URL of the twiki/bin/statistics script as a parameter. Example: 0 0 * * * (cd /path/to/twiki/bin; ./geturl mydomain.com /urlpath/to/twiki/bin/statistics >/dev/null 2>&1)
twiki/bin/statistics script can also be executed as a CGI script, just enter the URL in your browser. Examples: /cgi-bin/statistics
/cgi-bin/statistics/Main
/cgi-bin/statistics/Main?logdate=202603
log<year><month>.txt
twiki/logs/log202603.txt
| <time> | <wikiusername> | <action> | <web>.<topic> | <extra info> | <IP address> |
| 11 Mar 2026 - 22:44 | TWikiGuest | view | WebRss | | 66.124.232.02 |
| Script | Action name | Extra info |
|---|---|---|
| attach | attach | when viewing attach screen of previous uploaded attachment: filename |
| changes | changes | |
| edit | edit | when editing non-existing topic: (not exist) |
| rdiff | rdiff | higher and lower revision numbers: 4 3 |
| register | regstart | WikiUserName, e-Mail address, LoginName: user attempts to register |
| register | register | E-mail address: user successfully registers |
| register | bulkregister | WikiUserName of new, e-mail address, admin ID |
| rename | rename | when moving topic: moved to Newweb.NewTopic |
| rename | move | when moving attachment: Attachment filename moved to Newweb.NewTopic |
| passwd | resetpasswd | LoginName, WikiName, E-mail address, success code from addUserPassword |
| passwd | changepasswd | LoginName, WikiName |
| save | save | when replacing existing revision: repRev 3 when user checks the minor changes box: dontNotify |
| search | search | search string |
| upload | upload | filename |
| view | view | when viewing non-existing topic: (not exist) when viewing previous topic revision: r3 |
Net::SMTP module if it is installed on your system. Set this with the SMTPMAILHOST variable in TWikiPreferences.
The notify e-mail uses the default changes.tmpl template, or a skin if activated in the TWikiPreferences.
mailnotify also relies on two hidden files in each twiki/data/Web directory: .changes and .mailnotify. Make sure both are writable by your web server process. .changes contains a list of changes; go ahead and make this empty. .mailnotify contains a timestamp of the last time notification was done.
You can use an external mail program, such as sendmail, if the Net::SMTP module is not installed. Set the program path in {MailProgram} in configure.
SMTPMAILHOST in TWikiPreferences to an empty value.
SMTPSENDERHOST variable to define the mail sender host (some SMTP installations require this).
cron table so that mailnotify is called in an interval of your choice. Please consult man crontab of how to modify the table that schedules program execution at certain intervals. Example:
% crontab -e 0 2 * * * (cd /path/to/twiki/bin; ./mailnotify -q)The above line will run mailnotify nightly at 02:00. The
-q switch suppresses all normal output.
For ISP installations: Many ISPs don't allow hosted accounts direct cron access, as it's often used for things that can heavily load the server. Workaround scripts are available.
On Windows: You can use a scheduled task if you have administrative privileges. TWiki:Codev/CronTabWinTrash web.
[More] (bottom right of page) on the topic to be changed, then, in the new screen, on [Rename/move]. You can now rename and/or move/delete in one operation:
Trash to delete a topic.
[Rename/Move]: the topic will be renamed and links to the topic updated as requested. [Rename/Move].
Rename/Move/Delete - an instruction line and undo link will appear at the bottom of the modified topic. This allows you to revert from the last modification only.
Trash web - they are NOT physically erased from the server. All webs share Trash - in case of a name conflict with a topic already Trash, the user is alerted and asked to choose a new name.
The Trash web should be be cleared periodically, by archiving (saving) the text and RCS files if required (recommended), then deleting them from the Trash directory.
Trash directory is all that's required for maintenance, it's possible to grant Trash admin privileges to multiple users, while strictly limiting server access.
%<nop>METASEARCH{type="topicmoved" web="%WEB%" topic="%TOPIC%"
title="This topic used to exist and was moved to: "}%
<pre> and <verbatim> are honoured - no changes are made to text within these areas.
topic. Next, all webs (including the current one) are listed that match web.topic. All webs will be searched during rename, even if NOSEARCHALL is defined on a web, though access permissions will of course be honoured.
Changed references are kept are as short as possible, ex: topic is used in preference to web.topic.
ALLOWTOPICCHANGE and ALLOWTOPICRENAME permission for that topic. To alter referring topics, you need change permission. See TWikiAccessControl for information on setting up access permissions.
search can show matches that will not be updated due to case differences. Other mismatches with actual rendered output are also possible as the approaches are so different.
The following shows some limitations of square bracket processing.
Related Topics: UserDocumentationCategory, AdminDocumentationCategory[[Old Topic]] => [[NewTopic][Old Topic]] [[old topic]] => [[NewTopic][old topic]] [[old t opic]] => not changed [[OldTopic]] => [[NewTopic]]
_default). All topics in the template web will be copied into your new web.
The second method is to use an existing web as a template web. This may be useful if you already have a web that you like to use as a starting point. Only topics that have names beginning with Web... (like "WebHome", "WebNotify", etc.) are copied.
In either case you will want to be sure to verify that your new web has all the custom modifications that you desire.
WEBBGCOLOR, SITEMAPLIST, SITEMAPWHAT, SITEMAPUSETO and NOSEARCHALL. These variables are used to dynamically generate the SiteMap
WIKIWEBLIST. This must be done by hand
%MAINWEB%, which by default is Main (this is assigned in the site configuration). That means that every WikiName signature - Main.SomeUserName - points to it and would need updating (unless the variable, %MAINWEB%.SomeUserName, is used throughout). This potentially large change can be performed automatically with the renameweb function mentioned above, in the Main.WebPreferences topic.
If you want to rename the TWiki web, remember it is referred to by %TWIKIWEB% which is also defined by a configuration setting.
{EnableHierarchicalWebs} setting in configure. Without this setting, TWiki will only allow a single level of hierarchy (webs). If you set this, you can use multiple levels, like a directory tree, i.e. webs within webs.
Bar inside a web named Foo, use Foo/Bar or Foo.Bar as the new web name in the form above.
Sandbox/TestWeb/SubWeb.SubWebTopic topic:
TWiki06x01.TWikiPreferences site-wide preferences
Sandbox.WebPreferences inherits from and overrides settings in TWiki06x01.TWikiPreferences
Sandbox/TestWeb.WebPreferences inherits from and overrides settings in Sandbox.WebPreferences
Sandbox/TestWeb/SubWeb.WebPreferences inherits from and overrides settings in Sandbox/TestWeb.WebPreferences
Sandbox/TestWeb/SubWeb.SubWebTopic inherits from and overrides settings in Sandbox/TestWeb/SubWeb.WebPreferences
.htpasswd file, edit the .htpasswd file to delete the line starting fred:
FredQuimby - fred line from the Main.TWikiUsers topic
FredQuimby from all groups and from all the ALLOWWEB/ALLOWTOPIC... declarations, if any.| Installation & configuration | Contributor |
|---|---|
| Much simpler install and configuration | Crawford Currie |
mod_perl safe code for better performance |
Crawford Currie |
| Security | |
| Security sandbox blocking exploits for remote command execution on the server | Florian Weimer |
| Reworked access permission model | Crawford Currie |
| Internationalization & localization | |
| User Interface Internationalisation |
AntonioTerceiro |
| Chinese translation | CheDong |
| Danish translation | SteffenPoulsen |
| Dutch translation | ArthurClemens |
| French translation | BenVoui |
| German translation | AndreUlrich |
| Italian translation | MassimoMancini |
| Portuguese translation | AntonioTerceiro |
| Spanish translation | WillNorris |
| New features for users | |
| Edit conflict resolution with automatic merge | Crawford Currie |
| Fine grained change notification on page level and parent/child relationship | Crawford Currie |
| WYSIWYG editor | Crawford Currie |
| Integrated session support | GregAbbas |
| Webserver-independent login/logout | Crawford Currie |
| Registration process with e-mail confirmation |
MartinCleaver |
| Tip of the Day box in TWiki Home |
PaulineCheung |
| ATOM feeds | Peter Thoeny |
| "Force New Revision" check box for topic save |
WillNorris |
| New features for TWiki administrators and wiki application developers | |
| Improved preferences handling | ThomasWeigert |
| Named include sections | RafaelAlvarez |
| Create topic names with consecutive numbers |
Sven Dowideit |
| Parameterized includes |
Crawford Currie |
| Dynamic form option definitions |
MartinCleaver |
SEARCH enhancements with new parameters excludeweb, newline, noempty, nofinalnewline, nonoise, recurse, zeroresults |
Crawford Currie |
FormattedSearch enhancements with $changes, $count, $formfield(name, 30, ...), $summary(expandvar), $summary(noheaders), $summary(showvarnames) |
ColasNahaboo |
| New TWikiVariables ACTIVATEDPLUGINS, ALLVARIABLES, AUTHREALM, EMAILS, FAILEDPLUGINS, HTTP, HTTPS, ICONURL, ICONURLPATH, IF, LANGUAGES, LOCALSITEPREFS, LOGIN, LOGOUT, MAKETEXT, META, PLUGINDESCRIPTIONS, QUERYSTRING, STARTSECTION/ENDSECTION, SESSION_VARIABLE, SESSIONID, SESSIONVAR, SPACEOUT, USERLANGUAGE, WIKIHOMEURL | ArthurClemens |
| TWiki form with hidden type |
LynnwoodBrown |
| Support topic-specific templates |
ThomasWeigert |
| Direct save feature for one-click template-based topic creation | LynnwoodBrown |
| Automatic Attachments |
MartinCleaver |
| Rename, move or delete webs | PeterNixon |
| Hierarchical subwebs (beta) | PeterNixon |
| New features for Plugin developers | |
| REST (representational state transfer) interface for Plugins | RafaelAlvarez |
| New and improved Plugins APIs | Crawford Currie |
| Improvements in the TWiki engine room | |
| Major OO redesign and refactoring of codebase | Crawford Currie |
| Automatic build system | Crawford Currie |
| Extensive test suite, unit tests and testcases | Crawford Currie |
| TWiki:Codev.DevelopBranch |
Sven Dowideit |
| Documentation, logo artwork, skins: | |
| Documentation | Crawford Currie |
| Design of TWikiLogos with big "T" in a speech bubble | ArthurClemens |
| Improved templates and PatternSkin | ArthurClemens |
| Details of New Features and Enhancements of 01-Sep-2004 Release | Developer, Sponsor |
|---|---|
| Install: Ship with an automatic upgrade script to facilitate TWiki upgrades. Details |
TWiki:Main.MartinGregory |
| Install: New testenv function to change the locks in the TWiki database to the web server user id (automates installation step). Details |
TWiki:Main.MattWilkie |
| Install: The shipped .htaccess.txt now needs to be edited before it is valid, to help reduce chances of error. Details |
TWiki:Main.CrawfordCurrie |
| Install: Configurable password file handling for different types of encryption. Details |
TWiki:Main.PavelGoran |
| Install: Remove office locations from registration. Details |
TWiki:Main.PeterThoeny |
| Install: Changes to support shorter URLs with Apache Rewrite rules. Details |
TWiki:Main.AntonioBellezza |
| Install: Remove the Know web from the distribution. Details |
TWiki:Main.PeterThoeny |
| Internationalization: Support use of UTF-8 URLs for I18N characters in TWiki page and attachment names. Details |
TWiki:Main.RichardDonkin |
| Authentication: Authenticate users when creating new topic in view restricted web. Details |
TWiki:Main.JonathanGraehl |
| Preferences: TWiki Preferences need to be secured properly. Details |
TWiki:Main.PeterThoeny |
| Preferences: Use TWiki Forms to set user preferences. Details |
TWiki:Main.JohnTalintyre |
| Skins: New pre-installed skins PatternSkin and DragonSkin. Details |
TWiki:Main.ArthurClemens |
| Skins: New skin browser to choose from installed skins. Details |
TWiki:Main.PeterThoeny |
| Skins: Documented set of CSS classes that are used in standard skins. Details |
TWiki:Main.ArthurClemens |
| Skins: Added CSS class names to Diff output. Details |
TWiki:Main.SvenDowideit |
| Skins: Templates can now be read from user topics, as well as from files in the templates diretcory. Details |
TWiki:Main.CrawfordCurrie |
| Skins: Ensure that the default template gets overridden by a template passed in. Details |
TWiki:Main.MartinCleaver |
| Skin: Convey an important broadcast message to all users, e.g. scheduled server downtime. Details |
TWiki:Main.PeterThoeny |
| Skin: Balanced pastel colors for TWiki webs. Details |
TWiki:Main.ArthurClemens |
| Rendering: Use exclamation point prefix to escape TWiki markup rendering. Details |
TWiki:Main.ArthurClemens |
| Rendering: Ordered lists with uppercase & lowercase letters, uppercase & lowercase Roman numerals. Details |
TWiki:Main.DanBoitnott |
| Rendering: Allow custom styles for the "?" of uncreated topics. Details |
TWiki:Main.SvenDowideit |
| Rendering: Render IRC and NNTP as a URL. Details |
TWiki:Main.PeterThoeny |
| Rendering: Make acronym linking more strict by requiring a trailing boundary, e.g. excluding TLAfoobar. Details |
TWiki:Main.CrawfordCurrie |
| Rendering: TWiki Form with Label type. Details |
TWiki:Main.PeterThoeny |
| Rendering: Web names can now be WikiWords. Details |
TWiki:Main.PeterThoeny |
| Rendering: New syntax for definition list with dollar sign and colon. Details |
TWiki:Main.AdamTheo |
| Rendering: Table with multi-span rows, functionality provided by Table Plugin. Details |
TWiki:Main.WalterMundt |
| Variables: New title parameter for TOC variable. Details |
TWiki:Main.PeterThoeny |
| Variables: New REVINFO variable in templates supports flexible display of revision information. Details |
TWiki:Main.PeterThoeny |
| Variables: Set times to be displayed as gmtime or servertime. Details |
TWiki:Main.SueBlake |
| Variables: Properly encode parameters for form fields with ENCODE variable. Details |
TWiki:Main.PeterThoeny |
| Variables: Expand USERNAME and WIKINAME in Template Topics. Details |
TWiki:Main.PeterThoeny |
| Variables: Expand same variables in new user template as in template topics. Details |
TWiki:Main.PeterThoeny |
| Variables: Optionally warn when included topic does not exist; with the option to create the included topic. Details |
TWiki:Main.PeterThoeny |
| Variables: In topic text show file-types of attached files as icons. Details |
TWiki:Main.PeterThoeny |
| Variables: New variable FORMFIELD returns the value of a field in the form attached to a topic.. Details |
TWiki:Main.DavidSachitano |
| Variables: Meta data rendering for form fields with META{"formfield"}. Details |
TWiki:Main.PeterThoeny |
| Variables: New PLUGINVERSION variable. Details |
TWiki:Main.PeterThoeny |
Variables: URLPARAM now has a default="..." argument, for when no value has been given. Details |
TWiki:Main.PeterThoeny |
| Variables: URLPARAM variable with newline parameter. Details |
TWiki:Main.PeterThoeny |
| Variables: URLPARAM variable with new multiple=on parameter. Details |
TWiki:Main.PaulineCheung |
| Search: New switch for search to perform an AND NOT search. Details |
TWiki:Main.PeterThoeny |
| Search: Keyword search to search with implicit AND. Details |
TWiki:Main.PeterThoeny |
| Search: Multiple searches in same topic with new multiple="on" paramter. Details |
TWiki:Main.PeterThoeny |
| Search: Remove limitation on number of topics to search in a web. Details |
TWiki:Main.PeterThoeny |
| Search: Exclude topics from search with an excludetopic parameter. Details |
TWiki:Main.PeterThoeny |
| Search: Expand Variables on Formatted Search with expandvariables Flag. Details |
TWiki:Main.PeterThoeny |
| Search: Formatted Search with Web Form variable to retrieve the name of the form attached to a topic. Details |
TWiki:Main.FrankSmith |
| Search: Formatted Search with Conditional Output. Details |
TWiki:Main.PeterThoeny |
| Search: Formatted Search with $parent token to get the parent topic. Details |
TWiki:Main.PeterThoeny |
| Search: New separator parameter to SEARCH supports better SEARCH embedding. Details |
TWiki:Main.PeterThoeny |
| Search: Improved search performance when sorting result by topic name. Details |
TWiki:Main.PeterThoeny |
Search: New scope=all search parameter to search in topic name and topic text at the same time. Details |
TWiki:Main.PeterThoeny |
Search: New topic parameter for AND search on topic text and topic name. Details |
TWiki:Main.PeterThoeny |
| Search modules uses Perl-style keyword parameters (code cleanup). Details |
TWiki:Main.PeterThoeny |
| Search: New $wikiname variable in format parameter of formatted search. Details |
TWiki:Main.ArthurClemens |
| Search: Sort search by topic creation date. Details |
TWiki:Main.PeterThoeny |
| Search: Topic creation date and user in Formatted Search. Details |
TWiki:Main.CoreyFruitman |
| Search: Increase levels of nested search from 2 to 16. Details |
TWiki:Main.PeterThoeny |
| Plugins: New pre-installed Plugins CommentPlugin, EditTablePlugin, RenderListPlugin, SlideShowPlugin, SmiliesPlugin, SpreadSheetPlugin, TablePlugin. Details |
TWiki:Main.PeterThoeny |
Plugins: New callback afterSaveHandler, called after a topic is saved. Details |
TWiki:Main.WalterMundt |
Plugins: New callbacks beforeAttachmentSaveHandler and afterAttachmentSaveHandler, used to intervene on attachment save event. Details |
TWiki:Main.MartinCleaver |
Plugins: New callbacks beforeCommonTagsHandler and afterCommonTagsHandler. Details |
TWiki:Main.PeterThoeny |
Plugins: New callback renderFormFieldForEditHandler to render form field for edit. Details |
TWiki:Main.JohnTalintyre |
Plugins: New callback renderWikiWordHandler to custom render links. Details |
TWiki:Main.MartinCleaver |
Plugins: New function TWiki::Func::formatTime to format time into a string. Details |
TWiki:Main.SvenDowideit |
Plugins: New function TWiki::Func::getRegularExpression to get predefined regular expressions. Details |
TWiki:Main.RichardDonkin |
Plugins: New functions TWiki::Func::getPluginPreferences* to get Plugin preferences. Details |
TWiki:Main.WalterMundt |
Plugins: New function TWiki::Func::extractParameters to extract all parameters from a variable string. Details |
TWiki:Main.PeterThoeny |
Plugins: New function TWiki::Func::checkDependencies to check for module dependency. Details |
TWiki:Main.CrawfordCurrie |
| Plugins: A recommendation for where a Plugin can store its data. Details |
TWiki:Main.PeterThoeny |
| UI: Show tool-tip topic info on WikiWord links. Details |
TWiki:Main.PeterThoeny |
| UI: Save topic and continue edit feature. Details |
TWiki:Main.ColasNahaboo |
| UI: Change topic with direct save (without edit/preview/save cycle) and checkpoint save. Details |
TWiki:Main.MattWilkie |
| UI: In attachment table, change 'action' to 'manage'. Details |
TWiki:Main.PeterThoeny |
| UI: Smaller usability enhancements on the file attachment table. Details |
TWiki:Main.PeterThoeny |
| UI: Removes anchor links from header content and places them before the text to fix 'header becomes link'. Details |
TWiki:Main.ArthurClemens |
| UI: Improved functionality of the More screen. Details |
TWiki:Main.PeterThoeny |
| UI: Quick reference chart of most used markup is now listed on the edit screen. Details |
TWiki:Main.ArthurClemens |
| UI: Flag for edit script to avoid overwrite of existing topic text and form data. Details |
TWiki:Main.NielsKoldso |
| UI: Disable Escape key in IE textarea to prevent it cancelling work. Details |
TWiki:Main.CrawfordCurrie |
| UI: Improved warning message on unsaved topic. Details |
TWiki:Main.MartinGregory |
| UI: Reverse order of words in page title for better multi-window/tab navigation. Details |
TWiki:Main.ArthurClemens |
| UI: Provides a framework to create and modify a topic without going through edit->preview->save sequence. Details |
TWiki:Main.AndreUlrich |
| UI: Set the topic parent to none in More screen, e.g. remove the current topic parent. Details |
TWiki:Main.PeterThoeny |
| UI: Use templates to define how file attachments are displayed. Was previously hard-coded. Details |
TWiki:Main.CrawfordCurrie |
| UI: Topic diff shows unified diff with unchanged context. Details |
TWiki:Main.SvenDowideit |
| UI: Diff feature shows TWiki form changes in nice tables. Details |
TWiki:Main.SvenDowideit |
| Code refactoring: The log entry for a save now has a dontNotify flag in the extra field if the user checked the minor changes flag. Details |
TWiki:Main.PeterThoeny |
| Code refactoring: Server-side include of attachments accelerates INCLUDE. Details |
TWiki:Main.CrawfordCurrie |
| Code refactoring: Move functionality out of bin scripts and into included modules. Details |
TWiki:Main.CrawfordCurrie |
| Code refactoring: Move bin script functionality into TWiki::UI modules. Details |
TWiki:Main.CrawfordCurrie |
| Code refactoring: Optimize preferences handling for better performance. Details |
TWiki:Main.PavelGoran |
| Code refactoring: Refactor variable expansion for edit and register. Details |
TWiki:Main.CrawfordCurrie |
| Code refactoring: Move savemulti script into TWiki::UI::Save. Details |
TWiki:Main.MattWilkie |
| Code refactoring: Topic search is done natively in Perl, it does not depend anymore on system calls with pipes. Details |
TWiki:Main.PeterThoeny |
| Code refactoring: Fix logical error in upload script which prevented MIME filename from being used. Details |
TWiki:Main.WalterMundt |
| Bug Fixes of 01-Sep-2004 Release | Developer, Sponsor |
|---|---|
| Fix: Consistently create headings with empty anchor tags. Details |
TWiki:Main.PeterThoeny |
| Fix: TOC does not work for headings containing & without spaces surrounding it. Details |
TWiki:Main.PeterThoeny |
| Fix: Backslash line break breaks TWiki form definitions. Details |
TWiki:Main.CrawfordCurrie |
| Fix: Rename fixes unrelated topic references. Details |
TWiki:Main.RichardDonkin |
| Fix: Bug with infinite recursion in search. Details |
TWiki:Main.PeterThoeny |
| Fix: Can't send mail with full 'From' address. Details |
TWiki:Main.PeterThoeny |
| Fix: All scripts change to $bin before execute (for mod_perl2). Details |
TWiki:Main.PeterThoeny |
| Fix: Several RSS readers do not show all entries seen in the WebChanges list; repeated updates to the same topics get lost. Details |
TWiki:Main.ArthurClemens |
| Fix: TWiki::Access::checkAccessPermission function improperly handles Main and TWiki webs. Details |
TWiki:Main.SvenDowideit |
| Fix: Topic save returns error CI Date precedes date in revision. Details |
TWiki:Main.PeterThoeny |
| Fix: Double quotes got replaced by " in TWiki forms. Details |
TWiki:Main.MichaelSparks |
| Fix: Duplicated Wiki name in .htpasswd entry for sha1 encoding. Details |
TWiki:Main.PeterThoeny |
| Fix: When viewing a previous version of a topic, the view script substitutes only one occurrence of the variable EDITTOPIC. Details |
TWiki:Main.PeterThoeny |
| Fix: Form default values are not working for text fields. Details |
TWiki:Main.ThomasWeigert |
| Fix: Formatted searches using a $pattern which unbalanced parenthesis crash TWiki. Details |
TWiki:Main.PeterThoeny |
| Fix: Formatted Search uses title but should use name for formfield parameter. Details |
TWiki:Main.PeterThoeny |
| Fix: GMTIME variable returns unwanted GMT text. Details |
TWiki:Main.SvenDowideit |
| Fix: Include from other Web links ACRONYMS. Details |
TWiki:Main.PeterThoeny |
| Fix: Including an HTML file is very slow. Details |
TWiki:Main.JohnTalintyre |
| Fix: includeUrl() mess up absolute URLs. Details |
TWiki:Main.SvenDowideit |
| Fix: Filter out fixed font rendering in TOC to avoid unrendered = equal signs in TOC. Details |
TWiki:Main.PeterThoeny |
| Fix: The initializeUserHandler is broken for session Plugins. Details |
TWiki:Main.JohnTalintyre |
| Fix: SEARCH fails with very large webs. Details |
TWiki:Main.PeterThoeny |
| Fix: Security alert: User could gain view access rights of another user. Details |
TWiki:Main.KimCovil |
| Fix: 'print to closed file handle' error of log files are not writable. Details |
TWiki:Main.MartinGregory |
| Fix: Meta data handler can't process CR-LF line endings. Details |
TWiki:Main.PeterThoeny |
| Fix: METAFIELD meta data is not shown in view raw=on mode. Details |
TWiki:Main.PeterThoeny |
| Fix: Minor XHTML non-compliance in templates and code. Details |
TWiki:Main.PeterThoeny |
| Fix: Getting pages from virtual hosts fails. Details |
TWiki:Main.JohnTalintyre |
| Fix: Create new web fails if RCS files do not exist. Details |
TWiki:Main.ClausBrunzema |
| Fix: Metacharacters can be passed through to the shell in File Attach. Details |
TWiki:Main.PeterThoeny |
| Fix: Ability to delete non-WikiWord topics without confirmation. Details |
TWiki:Main.PeterThoeny |
| Fix: + symbol in password reset fails. Details |
TWiki:Main.PeterThoeny |
| Fix: Pathinfo cleanup for hosted sites. Details |
TWiki:Main.MikeSalisbury |
| Fix: Software error in SEARCH if regular expression pattern has unmached parenthesis. Details |
TWiki:Main.PeterThoeny |
| Fix: Pipe chars in the comment field of the attachment table are not escaped. Details |
TWiki:Main.PeterThoeny |
| Fix: Link escaping in preview fails for not quoted hrefs. Details |
TWiki:Main.TedPavlic |
| Fix: Preview expands variables twice. Details |
TWiki:Main.PeterThoeny |
| Fix: Using a proxy with TWiki fails; no proxy-HTTP request, minimal request not HTTP 1.0, requests marked 1.1 are at best 1.0. Details |
TWiki:Main.MichaelSparks |
| Fix: Runaway view processes with TWiki::Sore::RcsLite. Details |
TWiki:Main.SvenDowideit |
| Fix: Regex Error in WebTopicList with topics that have meta characters in the name. Details |
TWiki:Main.PeterThoeny |
| Fix: Rename script misses some ref-by topics. Details |
TWiki:Main.JohnTalintyre |
| Fix: Links to self within the page being renamed are not changed. Details |
TWiki:Main.SvenDowideit |
| Fix: Rename topic does 'Main.Main.UserName' for attachments. Details |
TWiki:Main.PeterThoeny |
| Fix: Revision date is set to Jan 1970 when using RCS Lite. Details |
TWiki:Main.SvenDowideit |
| Fix: The new dynamically-created SiteMap is very nice, but somewhat slow. Details |
TWiki:Main.PeterThoeny |
| Fix: The makeAnchorName function did not produce the same results if called iteratively, resulting in problems trying to link to headers.. Details |
TWiki:Main.WalterMundt |
| Fix: Statistics page does not provide links to non-wikiword topics. Details |
TWiki:Main.PeterThoeny |
| Fix: Make TOC link URI references relative. Details |
TWiki:Main.MartinGregory |
| Fix: TWiki hangs when used on Apache 2.0. Details |
TWiki:Main.SvenDowideit |
| Fix: TOC incorrectly strips out links in headers. Details |
TWiki:Main.PeterThoeny |
| Fix: The HTML tags that are generated by TOC do not close properly. Details |
TWiki:Main.PeterThoeny |
| Fix: TOC on INCLUDEd topic ignores STOPINCLUDE. Details |
TWiki:Main.WillNorris |
| Fix: Quotes in tooltip message can break a TWiki form. Details |
TWiki:Main.PeterThoeny |
| Fix: Better error message if the file attachment directory is not writable. Details |
TWiki:Main.CrawfordCurrie |
| Fix: Image size of PNG files. Details |
TWiki:Main.ArthurClemens |
| Fix: The testenv script distinguishes between real user ID and effective user ID. Details |
TWiki:Main.RichardDonkin |
| Fix: Variables in square bracket links dont work in form fields. Details |
TWiki:Main.SvenDowideit |
| Fix: Variable with Parameters in Form Fields Disappear. Details |
TWiki:Main.PeterThoeny |
| Fix: Verbatim tag should escape HTML entities. Details |
TWiki:Main.PeterThoeny |
| Fix: Field names of TWiki Forms can be WikiWords, this is used to link to a help topic. Details |
TWiki:Main.PeterThoeny |
| Fix: Clean up the WebRssBase INCLUDES to use VARIABLES set in TWikiPreferences. Details |
TWiki:Main.SvenDowideit |
| Fix: Resolving variables in included topics. Details |
TWiki:Main.OliverKrueger |
/bin/view/Web.TopicName topic view URL (besides the default /bin/view/Web/TopicName URL); useful for InterwikiPlugin links like TWiki:Codev.ReadmeFirstreadTopicText, saveTopicText, setTopicEditLock, checkTopicEditLock
%NOAUTOLINK% setting in the TWikiPreferences to disable the auto-linking of WikiWords
registrationHandler, beforeEditHandler, afterEditHandler, beforeSaveHandler, writeHeaderHandler, redirectCgiQueryHandler, getSessionValueHandler, setSessionValueHandler
%INCLUDE{ "OtherTopic" rev="1.2" }%
%NOP{}% variable in TWikiTemplates topic gets removed at topic creation time; useful to write protect template topics
%URLPARAM{}% variable in TWikiTemplates topic gets expanded at topic creation time; useful for dynamic content creation
$logDir introduced in TWiki.cfg to set the log directory
setlib.cfg file in the bin directory to set the TWiki library path
%PROXYHOST and %PROXYPORT% settings in the TWikiPreferences
%WIKILOGOIMG%, %TWIKILOGOURL% and %WIKILOGOALT% variables in TWikiPreferences; replacing $wikiHomeUrl in TWiki.cfg
%WIKITOOLNAME% variable in TWikiPreferences; replacing $wikiToolName in TWiki.cfg
%EDITBOXSTYLE% preferences variable which sets the edit box width automatically to the window width
%URLENCODE{}% variable to encodes a string for using in a URL parameter, e.g. %URLENCODE{"spaced name"}% returns spaced%20name
/twiki/templates/register.tmpl template file
%TOC% table of content, e.g. ---+!! This heading is not shown in a TOC
%SEARCH{}% variable, FormattedSearch and WebSearch
<verbatim> tags are no longer expanded
%SEARCH{}% variable for database like reporting.
TWiki.cfg
notedited.tmpl, notext.tmpl and notwiki.tmpl templates. More in TWikiTemplates.
%TOPICLIST{"format"}% and %WEBLIST{"format"}% variables to get a formatted topic index and web index, respectively. More in TWikiVariables.
%URLPARAM{"name"}% variable to query URL parameters. More in TWikiVariables.
| *bold* | cells as table headers, (ii) render space padded cells | center aligned | and | right aligned |, (iii) span multiple columns using | empty cells |||. More in TextFormattingRules.
.htaccess files that are attached to a topic get a .txt suffix appended to the file name. See also TWiki:Codev/FileAttachmentFilterSecurityAlert---++ My Title; and new %TOC% variable to build a table of content from headings in a topic. More in TWikiVariables.
[[http://TWki.org][TWiki]]) and internal links (i.e [[WikiSyntax][syntax]]). More in TWikiVariables.
#MyAnchor at the beginning of a line, and link to it with [[#MyAnchor]]. More in TWikiVariables.
Net::SMTP module instead of sendmail if installed.
<verbatim> ... </verbatim> tags to show source code "as is". Unlike the <pre> ... </pre> tags, it also shows <, >, & characters "as is".
==Bold Fixed== to get Bold Fixed.
%GMTIME{"..."}% and %SERVERTIME{"..."}% variables. Format is now "$hour:$min" instead of "hour:min". More in TWikiVariables. Attention: Check your existing topics when you upgrade TWiki!
%STARTINCLUDE% and %STOPINCLUDE% variables to control what gets included of a topic. More in TWikiVariables.
print skin for a printable view of a topic. More in TWikiSkins and TWiki:Codev/TWikiSkins%BASEWEB%, %INCLUDINGWEB%, %BASETOPIC% and %INCLUDINGTOPIC% to have more control over include handling. More in TWikiVariables and TWiki:Codev/IncludeHandlingImprovementsnoheader="on" switch in %SEARCH{...}% to suppress table header. More in TWikiVariables.
$doHidePasswdInRegistration in wikicfg.pm to hide plain text password in registration e-mail.
%VAR{"NAME" web="Web"}% to get web-specific preferences. More in TWikiVariables.
view "knows" the user once authenticated in edit. More in TWikiUserAuthentication.
png image support.
%INCLUDE{"%TWIKIWEB%.TWikiWebsTable"}%. More in TWiki:Codev/BetterTWikiTagTemplateProcessingmailnotify to suppress all normal output.
[[text formatting FAQ]] to get the link text formatting FAQ that points to topic TextFormattingFAQ.
%HTTP_EQUIV_ON_VIEW% , %HTTP_EQUIV_ON_EDIT% and %HTTP_EQUIV_ON_PREVIEW% that define the <meta http-equiv="..."> meta tags for the TWiki templates. This can be used for example to set a document expiration time.
%GMTIME{"..."}% and %SERVERTIME{"..."}% . More in TWikiVariables.
%INCLUDE{"Web/TopicName.txt"}% to %INCLUDE{"Web.TopicName"}% . Legacy syntax still supported.
*bold*, italic, __bold italic__ and fixed , where it is not necessary anymore to have a trailing space before .,;:?! characters.
%INCLUDE% of arbitrary files.
%GMTIME% variable that shows the current GM time.
%HTTP_HOST% , %REMOTE_ADDR% , %REMOTE_PORT% and %REMOTE_USER% .
%ATTACHLINKBOX% controls the default state of the link check box in the attach file page.
Perl -T option )
%EDITBOXWIDTH% and %EDITBOXHEIGHT% to specify the edit box size.
wikiwebs.inc , wikiwebtable.inc , weblist.inc , webcopyright.inc and webcolors.inc files.
%SCRIPTSUFFIX% / $scriptSuffix containing an optional file extension of the TWiki Perl script. Templates have been changed to use this variable. This allows you to rename the Perl script files to have a file extension like for example ".cgi".
%SCRIPTURLPATH% / $scriptUrlPath containing the script URL without the domain name. Templates have been changed to use this variable instead of %SCRIPTURL% . This is for performance reasons.
%INCLUDE:"filename.ext"% to %INCLUDE{"filename.ext"}% . (Previous syntax still supported. Change was done because of inline search syntax)
%SEARCH{"str" ...}% to show a search result embedded in a topic text. TWikiVariables has more on the syntax. Inline search combined with the category table feature can be used for example to create a simple bug tracking system.
initialize in wiki.pm did not handle $thePathInfo correctly.
$doLogTopic* in wikicfg.pm to selectively log topic view, edit, save, rdiff, attach, search and changes to monthly log file.
$doRemovePortNumber in wikicfg.pm to optionally remove the port number from the TWiki URL. Example www.some.domain:1234/twiki gets www.some.domain/twiki .
%INCLUDE:"file.inc"% variable. Search first in the current web, then in parent data directory. Useful to overload default include text in the data directory by web-specific text, like for example webcopyright.inc text.
TestVersion / TestVersions , TestPolicy / TestPolicies , TestAddress / TestAddresses , TestBox / TestBoxes .
webcopyright.inc file. This is to easily customize the copyright text.
%WIKIHOMEURL% (link when pressing the icon on the upper left corner) and %WIKITOOLNAME% (the name of the wiki tool TWiki ).
%PUBURL% (Public directory URL) and %ATTACHURL% (URL of topic file attachment).
fixed font text . Words get showns in fixed font by enclosing them in "=" equal signs. Example Writing =fixed font= will show up as fixed font .
Diffs link at the bottom of each topic, e.g. Topic TWikiHistory . { Edit Ref-By Diffs r1.3 > r1.2 > r1.1 }
Revision r1.3 1998/11/10 01:34 by PeterThoeny
data/logYYYYMM.txt, where YYYYMM the year and month in numeric format is. Intended for auditing only, not accessible from the web.
r1.3) and differences thereof (e.g. >) at the bottom Topic TWikiHistory . { Edit Ref-By r1.3 > r1.2 > r1.1 }
Revision r1.3 1998/11/10 01:34 by TWiki:Main.PeterThoeny
Topic TWikiHistory . { Edit Ref-By r1.3 r1.2 r1.1 }
Revision r1.3 1998/10/26 01:34:00 by TWiki:Main.PeterThoeny
AaA sequence, e.g. AaA1 is a valid WikiTopic name, but not Aa1.
%INCLUDE:"filename.ext"%
%TOPIC% (Topic name), %WEB% (web name), %SCRIPTURL% (script URL), %DATE% (current date), %WIKIWEBMASTER% (Wiki webmaster address), %WIKIVERSION% (Wiki version), %USERNAME% (user name), %WIKIUSERNAME% (Wiki user name).
PeterThoeny instead of thoeny in case the Wiki username exists. Implementation Automatic lookup of Wiki username in topic TWikiUsers.
Know.WebSeach .
{SiteLocale} setting in configure - this enables you to have a slightly different spelling of the character set in the server locale (e.g. 'eucjp') and the HTTP header sent to the browser (e.g. 'euc-jp').
This feature should also support use of Mozilla Browser with TWiki:Codev.TWikiOnMainframetwiki. So: twikiAlert, twikiToc, etcetera. Remember that CSS class names are case sensitive - TWiki CSS uses lowercase tw.
twiki prefix to prevent undesired overriding effects.
| .twikiAlert | Client.pm, Form.pm, Statistics.pm |
| .twikiFirstCol | Render.pm |
| .twikiForm | Render.pm |
| .twikiNew | Changes.pm, Search.pm |
| .twikiHelp | Changes.pm |
| .twikiTopRow | Manage.pm |
| .twikiSummary | Manage.pm |
| .twikiGrayText | Manage.pm |
| .twikiCheckBox | Manage.pm |
| .twikiLink | Render.pm |
| .twikiNewLink | Render.pm |
| .twikiAnchorLink | Render.pm |
| .twikiEmulatedLink | Preview.pm |
| .twikiWebIndent | TWiki.pm |
| .twikiEditFormTextField | Form.pm |
| .twikiEditFormLabelField | Form.pm |
| .twikiEditFormTextAreaField | Form.pm |
| .twikiEditFormCheckboxButton | Form.pm |
| .twikiEditFormCheckboxField | Form.pm |
| .twikiRadioButton | Form.pm |
| .twikiEditFormRadioField | Form.pm |
| .twikiEditFormError | Form.pm |
| .twikiDiffTable | RDiff.pm |
| .twikiDiffDeletedHeader | RDiff.pm |
| .twikiDiffDeletedMarker | RDiff.pm |
| .twikiDiffDeletedText | RDiff.pm |
| .twikiDiffAddedHeader | RDiff.pm |
| .twikiDiffAddedMarker | RDiff.pm |
| .twikiDiffAddedText | RDiff.pm |
| .twikiDiffChangedHeader | RDiff.pm |
| .twikiDiffChangedText | RDiff.pm |
| .twikiDiffUnchangedText | RDiff.pm |
| .twikiDiffUnchangedTextContents | RDiff.pm |
| .twikiDiffLineNumberHeader | RDiff.pm |
| .twikiToc | TWiki.pm |
| .twikiTocTitle | TWiki.pm |
| .twikiTable | TablePlugin |
| .twikiSortedAscendingCol | TablePlugin |
| .twikiSortedDescendingCol | TablePlugin |
| .twikiFirstCol | TablePlugin |
| .twikiFormTable | formtables.tmpl, form.tmpl |
| .twikiFormTableHRow | formtables.tmpl, form.tmpl |
| .twikiFormTableRow | formtables.tmpl |
| .twikiAttachments | attachtables.tmpl |
| .twikiEditForm | form.tmpl |
| .twikiSubmit | |
| .twikiButton | |
| .twikiLeft | |
| .twikiRight | |
| .twikiClear | |
| .twikiHidden | |
| .twikiSmall | |
| .twikiBottomRow | |
| .twikiSRAuthor | |
| .twikiSRRev | |
| .twikiPageForm | |
| .twikiSeparator | |
| .twikiAccessKey | |
| .twikiLinkLabel | |
| .twikiFormSteps | container around a form, such as the attach form: attach.tmpl |
| .twikiFormStep | form row |
| .twikiBroadcastMessage | TWikiPreferences |