| Resource | Required Server Environment * |
|---|---|
| Perl | 5.8.0 or higher (5.8.4 or higher is recommended) |
| RCS | 5.7 or higher (including GNU diff) Optional, Foswiki 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 patching the code using patches in diff format submitted by the community. |
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 Foswiki:Support.InstallingOnSpecificPlatforms for alternative options. |
lib/DEPENDENCIES.
Most of them will probably already be available in your installation. You can check version numbers with the 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"'
Change
{ValidationMethod}{Method}fromstrikeonetoembeddedin configure to allow non-javascript browsers to edit/save/upload
INSTALL.html Installation Guide Part 2 continues with steps for tailoring and enhancing your site.
These installation instructions are also available online at Foswiki:System.InstallationGuide, and are available within your Foswiki installation at System.InstallationGuide (the InstallationGuide topic in the System web).
For information on upgrades, please also refer to Foswiki:System.UpgradeGuide. A static HTML version of this document, UpgradeGuide.html, is included in the root of your Foswiki distribution.
UpgradeGuide.html, is included in the root of your Foswiki distribution.
Verify that your server meets the Foswiki system requirements, including having the minimum required Perl version and all required Perl modules installed. If you need to install any Perl libraries from CPAN for use by Foswiki, see Foswiki:Support.HowToInstallCpanModules for more information.
If you need help, feel free to ask a question in the Foswiki:Support web or on Foswiki:Community.InternetRelayChat (irc.freenode.net, channel #foswiki).
/path/to/foswiki. foswiki directory tree.
Note: for more information on the appropriate permissions to ensure security for your Foswiki data, see Foswiki:Support.SecuringYourSite.
The default file and directory access permissions as set by the distribution define a reasonable security level that will work for many types of installations, including shared hosting. Nonetheless, you should verify that the web server user has read access to all files and directories beneath the foswiki directory, and execute access for all directories. Also verify that the data and pub directories and all the subdirectories and files beneath them allow write access for the web server user. chmod -R 770 foswiki. Providing execute access to all files is potentially dangerous. This is a common mistake made by Foswiki installers. See Foswiki:Support.SettingFileAccessRightsLinuxUnix for a sample set of Unix commands to set the file and directory permissions.
foswiki directory tree to the web server user, using the command chown -R user:group /path/to/foswiki. The web server username varies in different installations; here are some sample commands for various Linux distributions: chown -R apache:apache /path/to/foswiki
chown -R www-data:www-data /path/to/foswiki
chown -R wwwrun:www /path/to/foswiki
/usr/bin/perl then this step is not required. This step is required on Windows installations.
The easiest way to fix up the bin scripts is to run the tools/rewriteshebang.pl script. If the Perl interpreter is in the default execution path, follow these steps:
cd /path/to/foswiki/tools perl -I ../lib rewriteshebang.plor for Windows users:
cd C:\path\to\foswiki\tools perl -I ..\lib rewriteshebang.plThe script will determine the location of the Perl interpreter and will prompt to update both the bin and tools scripts in a single step. The changed files will be reported, and it is safe to rerun the script. If the
perl command does not work from the command line, then you need to find the location of your system's Perl interpreter. Insert the path to Perl in the first line of the rewriteshebang script. For example:
cd C:\path\to\foswiki\tools C:\path\to\perl -I ..\lib rewriteshebang.pl
.cgi or .pl). This is not normally required with the Apache web server, though some hosted web servers are configured to require it. If the documentation for your web server indicates that a special extension is necessary, rename all the executable scripts in bin; that is, rename bin/view to bin/view.pl, and so on. When configuring Foswiki (see the section "Configure Foswiki"), set the ScriptSuffix option to the special extension.
bin/ and lib/ located under the Foswiki installation directory. If you have moved these directories, or if your system requires changes to the default Perl libraries, then this step is required.
Create the file LocalLib.cfg located at bin/LocalLib.cfg bin directory, copy the template file LocalLib.cfg.txt to LocalLib.cfg. Make sure the ownership and access rights of the copy are the same as LocalLib.cfg.txt.
bin/LocalLib.cfg so that $foswikiLibPath is set to the absolute file path of your lib directory. For example: /path/to/foswiki/lib.
$CPANBASE to point to your personal CPAN install. Don't forget that the web server user has to be able to read those files as well.
foswiki.conf). Performance is much better with a config file, and one file gives the best overview and ensures that you get a safe installation . However to use a config file you need root or sudo access to stop and start Apache. The Foswiki apache config file can be included from the main Apache config file. (Typically httpd.conf or apache.conf depending on your distribution). However most distributions have a directory from which any file that ends with .conf gets included when you restart Apache (Example RedHat/Fedora/Centos: /etc/httpd/conf.d, Gentoo: /etc/apache2/vhost.d ). If you use a virtual host setup in Apache you should include the foswiki.conf file from inside the desired virtual host config in your Apache configuration.
.htaccess files on each page access. Normally this is the only way to control Apache in a shared host environment where you have no root or sudo privileges.
foswiki_httpd_conf.txt can be found in the root of the foswiki installation.
bin and pub. foswiki_httpd_conf.txt file also has examples of configuring Apache appropriately.
ScriptAlias directive for the bin subdirectory, or an Alias directive with SetHandler cgi-script and Options ExecCGI directives for the bin subdirectory, so that the bin scripts will be executed by Apache.
.htaccess files for various subdirectories in your installation. Each file has help text explaining how to modify it for your configuration. For more information, see Foswiki:Support.SupplementalDocuments. | location and name of sample .htaccess file | copy sample file to the following location |
|---|---|
foswiki/root-htaccess.txt | foswiki/.htaccess |
foswiki/bin-htaccess.txt | foswiki/bin/.htaccess |
foswiki/pub-htaccess.txt | foswiki/pub/.htaccess |
foswiki/subdir-htaccess.txt | foswiki/<subdir>/.htaccess Copy to all other subdirectories below foswiki, including data, lib, locale, templates, tools, working. Copy to any other directories except for bin and pub addressed above. |
bin and pub. The sample .htaccess files show how to configure Apache appropriately. It is important to verify that none of these directories can be directly accessed.
foswiki/bin/.htaccess files contains the line SetHandler cgi-script so that all scripts in the bin directory will be executed by Apache.
.htaccess are hidden files and will not be listed unless using the -a option, ex. ls -la
pub directory. For example, most Linux distributions have a default Apache installation with PHP and server side include (SSI) enabled. This would allow PHP scripts uploaded as attachments to be executed, which is a security risk, so it should be disabled in the Apache configuration with php_admin_flag engine off.
Different script execution mechanisms are disabled in different ways; see your web server configuration and documentation for more details.
configure script open to the public. Limit access to the bin/configure script to either localhost, an IP address or a specific user using basic Apache authentication. The Foswiki:Support.ApacheConfigGenerator lets you setup who has access to the configure script. Also see the foswiki-httpd-conf.txt or bin/.htaccess.txt file for an example of the setting required to protect the configure script.
To limit access to a particular user, set up a .htpasswd file that contains the user name and password that Apache will use to authenticate the user: .htpasswd file. It will destroy the email addresses stored in that file! If the file already exists, you can choose an existing user for access to configure.
foswiki/data directory.
htpasswd -c .htpasswd <username>, where <username> is the name of the user you will use to access the configure script. Choose the username with care: the username cannot be an existing login name for your Foswiki installation, nor can it be used later on to register in Foswiki. Enter a password when prompted.
.htaccess files, all include example settings to protect the configure script with a password. The critical section looks something like:
<FilesMatch "configure.*">
SetHandler cgi-script
Order Deny,Allow
Deny from all
# List of IP addresses allowed to access configure
Allow from 127.0.0.1 192.168.1.10
# specify username used on the "htpasswd" command above
Require user someuserid
# Set to "Any" to allow IP -or- userid, set to "All" to require both match
Satisfy Any
ErrorDocument 401 default
</FilesMatch>
Note: In addition to any web server security protection that you have set up, when saving any configuration settings for the first time on the configure web page, you will be prompted to set a configuration password. This password must be entered on all subsequent configuration changes, and is also used to log in via the internal admin link (see the section "Define the administrator user(s)"). Even after a configure password has been set, access to the configure page should still be restricted by the web server, in order to avoid revealing internal information to potential attackers.
Tip: You do not have to use the same password file for both Configure and for Foswiki user registration. If you use a separate file, you can create it using theFor more information, refer to Foswiki:Support.ProtectingYourConfiguration.htpasswdcommmand and complete segregate configure access from Foswiki access. This is probably safer, but does not allow users to change their configure password using Foswiki services. The password file has to be manually maintained..
- Generate an alternate password file to protect configure.
htpasswd -c -s /path/to/data/.htpasswd-admin configuserid- Add / modify and delete this alternate file using the
htpasswdcommand. Don't mix them up and usehtpasswdon the Foswiki .htpasswd file!- Edit the foswiki apache configuration and modify the block (shown above) that protects the configuration command. Add or modify the following statements in the block. Don't remove the other statements!
<FilesMatch "configure.*"> AuthType Basic AuthName "admins only" AuthUserFile /path/to/data/.htpasswd-admin # Changing the Require user to Require valid-user allows any ID in the # file access to configure! Require valid-user </FilesMatch>
http://yourdomain/url/to/foswiki/bin/configure into your browser address bar. configure web page for the first time, you can only edit the section General Path Settings. Make any required changes, and save the settings, whether or not you needed to make any changes. You will be prompted to set a password for the configure page: this password must be entered for all subsequent configuration changes, and is also used to log in via the internal admin link (see the section "Define the administrator user(s)"). Note: The
configurepassword is remembered byconfigure, separate to web server access controls mentioned in "Protect the configure script".
General Path Settings, continue configuring Foswiki. Configuration items which may require further attention will be highlighted.
{PermittedRedirectHostUrls}. Example: if
{DefaultUrlHost}is set tohttps://wiki.company.com, an example{PermittedRedirectHostUrls}might contain:https://company.com, http://111.222.123.234
Mail and Proxies section. Email must be available so Foswiki can send registration emails. {EnableEmail}. Otherwise the {WebMasterEmail} parameter must be configured.
MailProgram is typically suitable on most Linux systems, and no further configuration is required.
Net::SMPT methods, you must also configure {SMTP}{MAILHOST}. Many ISPs have introduced authentication when sending emails to fight spam so you may also have to set {SMTP}{Username} and {SMTP}{Password}.
Net::SMTP::SSL will encrypt the connection to the e-mail server and is required for some email services like Google's GMail.
configure, you may have to set {PROXY}{HOST} and {PROXY}{PORT}. SMTP authentication requires additional perl modules includingNote: A standard Foswiki installation will not allow any new registrations unless there is a working SMTP configuration
Authen::SASL and MIMI::Base64,
configure page, you can configure Foswiki manually.
mod_auth_ldap or mod_auth_mysql. However, as your browser is caching your login, you must restart the browser to log out.
System.InstallationGuide into the "Jump" text box. By doing this instead of using the INSTALL.html file from the distribution, you will be able to use the embedded hyperlinks to jump directly to the referenced pages.
By default, your Foswiki installation is probably already using TemplateLogin, HtPasswdUser and TopicUserMappingContrib as the default
Login,Passwordanduser mappingoptions.
Login tab on the Security and Authentication panel. Select the Foswiki::LoginManager::TemplateLogin login manager.
Passwords tab. Select the appropriate PasswordManager for your system - the default is Foswiki::Users::HtPasswdUser. There is also an EXPERT configure setting
{TemplateLogin}{PreventBrowserRememberingPassword}that you can set to prevent Browsers from remembering username and passwords if you are concerned about public terminal usage.
HtPasswdUser (the default), check the .htpasswd file is being updated correctly with a new entry. If not, check {Htpasswd}{FileName} is correct (under Security and Authentication on the Password tab in configure), and that the webserver user has write permission.
This is a very important step, as users in this group can access all topics, independent of Foswiki access controls.
Foswiki AccessControls do not protect topic attachments unless the web server has been configured to do so using the
viewfilescript. Visit Foswiki:Support.ApacheConfigGenerator for examples using Apache.As Template Login uses a wiki page for its login prompt, there is a great deal of flexibility in customizing the login page for your purposes.
The default new user template page is in System.NewUserTemplate. The same macros get expanded as in the template topics. You can create a custom new user topic by creating the NewUserTemplate topic in Main web, which will then override the default in System web. See System.UserForm for copy instructions.
EXCLUDED_ from the INCLUDE tags) or add new ones.
New fields may also be added. The name="" parameter of the <input> tags must start with: "Fwk0..." (if this is an optional entry), or "Fwk1..." (if this is a required entry). This ensures that the fields are carried over into the user home page correctly.
Self-registration by Guest users Registration by logged-in users mod_auth_ldap or mod_auth_mysql you can just plug in to them directly.
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.
Foswiki maps the REMOTE_USER that was used to log in to the webserver to a WikiName using the table in Main.WikiUsers. 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 Foswiki Template Login can be used to authenticate Apache users, using the Apache Basic Authentication support.
To setup Apache Login, perform the following steps:Do not use the Apache
htpasswdprogram with.htpasswdfiles generated by Foswiki!htpasswdwipes out email addresses that Foswiki plants in the info fields of this file.Apache Login is required for Apache-based login methods such as mod_ldap
You can use any Apache authentication module that sets the
REMOTE_USERenvironment variable.
Security and Authentication pane on the Login tab in configure: Foswiki::LoginManager::ApacheLogin for {LoginManager}.
Foswiki::Users::HtPasswdUser for {PasswordManager}.
Foswiki::Users::TopicUserMapping for {UserMappingManager}.
foswiki/bin-htaccess.txt file to set the following Apache directives on the bin scripts: <FilesMatch "(attach|edit|manage|rename|save|upload|mail|logon|rest|.*auth).*"> require valid-user </FilesMatch>You can also refer to the sample
foswiki_httpd_conf.txt and bin-htaccess.txt files to see how the appropriate Apache directives are specified.
HtPasswdUser (the default), check the .htpasswd file is being updated correctly with a new entry. If not, check {Htpasswd}{FileName} is correct (under Security and Authentication on the Password tab in configure), and that the webserver user has write permission.
This is a very important step, as users in this group can access all topics, independent of Foswiki access controls.
Store pane in configure you will find the setting {RCS}{SearchAlgorithm}.
By default it is set to Foswiki::Store::SearchAlgorithms::Forking which is what you should keep if you install Foswiki in Linux or any other Unix type operating system.
If you install Foswiki on a Windows server, using an external grep program can create problems because of limitations in the length of command lines. You may be able to run with Forking in Windows if your directory path to Foswiki is kept short (short directory names and few levels), however the recommended (safe) setting for Windows is Foswiki::Store::SearchAlgorithms::PurePerl.
admin and the password established when initially saving the configuration. Don't log in with the wikiname AdminUser.
After installing Foswiki, you can also register other users that you will use to administer Foswiki. To make a user an administrator, add the WikiName for the user to the AdminGroup, defined in the Main.AdminGroup topic in your Foswiki installation.
Note that with the sudo or internal admin login, it is not necessary to add other users to the AdminGroup. However if you have more than one administrator, you may still want to do this to ensure that topic changes are attributed to a specific user instead of the default Main.AdminUser.
By adding users to Main.AdminGroup: bin/configure password is not required
bin/configure will need to be shared among administrators
System.InstallationGuide into the "Jump" text box. By doing this instead of using the INSTALL.html file from the distribution, you will be able to use the embedded hyperlinks to jump directly to the referenced pages.
To add an initial administrator to the AdminGroup, perform the following steps:
Main.AdminGroup topic and select the "internal admin login" link. Login using the password you set on the configure page.
Main.AdminGroup topic. Follow the instructions on the page to add users to the AdminGroup. You do not need to edit the topic.
AdminGroup that you use only for administering your Foswiki site. See System.AccessControls for more information on access controls and user groups.
http://yourdomain.com/url/to/foswiki/bin/view/System/InstallationGuidePart2 to proceed with further tailoring your site..
In order to keep your user, group, and site configuration information separate from the actual content of your site, it is recommended that you create a new web in which your site's pages will reside. See System.ManagingWebs for more information on Wiki webs and how to create one.
configure script and make sure you have resolved all errors and are satisfied that you understand any warnings.
| Resource | Required Server Environment |
|---|---|
| Perl | 5.8.8 or higher is recommended and it will run with Perl >=5.8.4 and <5.8.8 but this is untested. It also runs in Perl 5.6.1 but only with Wysiwyg editor disabled. Wysiwyg requires Unicode support which is provided by perl 5.8.1 onwards. |
| RCS | 5.7 or higher (including GNU diff) Optional. Foswiki includes a pure Perl implementation of RCS (RcsLite) that can be used instead, at the cost of performance |
| GNU diff | GNU diff 2.7 or higher is required when not using the all-Perl RcsLite. Install within the 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 |
| Other external programs | fgrep, egrep |
| Cron/scheduler | • Unix: cron • Windows: cron equivalents |
| Web server | Apache is well supported; for information on other servers, see Foswiki:Support.InstallingOnSpecificPlatforms. |
dependencies_installer.pl located in the tools directory, which makes perl module installation easier. Run it with option -h to understand basics. This script requires confirmation before it actually does something.
| Module | Preferred version | Required/Optional |
Description |
|---|---|---|---|
| Algorithm::Diff | Required | Included with Foswiki | |
| CGI | Versions 2.89, 3.37, 3.43, and 3.47 must be avoided. Most versions from 3.15 and onwards should work. | Required | Included with Perl core since Perl 5.4 |
| Error | Required | Included with Foswiki | |
| Apache::Htpasswd | Optional | May be required for ApacheHtpasswd password manager | |
| Archive::Tar | Optional | May be required by the Extensions Installer in configure if command line tar or unzip is not available, since Perl 5.9.3 part of core. | |
| Archive::Zip | Optional | Alternative to Archive::Tar, used by the Extensions Installer if Archive::Tar also unavailable | |
| CGI::Session | Optional | Required for Sessions support, available from the CPAN archive | |
| Digest::SHA | Optional | May be required for password encryption, since Perl 5.9.3 part of core | |
| Digest::SHA1 | Optional | ||
| Encode::compat | Optional | May be required for international characters | |
| HTML::Entities | Optional | Required for Foswiki:Extensions.WysiwygPlugin | |
| HTML::Parser | Optional | Required for Foswiki:Extensions.WysiwygPlugin | |
| Lingua::EN::Sentence | Optional | May be required for generating new language files | |
| Locale::Maketext::Lexicon | >=0 | Optional | Used for I18N support |
| LWP | Optional | Required for the Configure Extensions Installer, and for external URL based INCLUDEs | |
| URI | Optional | Required by the configure script | |
| Win32::Console | Optional | May be required for Windows |
perl -le 'use ModuleName; print "ModuleName"->VERSION'
pub directory.)
lib directory at the same level as the bin directory. You can create this directory elsewhere and configure the bin/setlib.cfg file. | Foswiki dir: | What it is: | Where to copy: | Example: |
|---|---|---|---|
foswiki | start-up pages | root Foswiki dir | /home/smith/public_html/foswiki/ |
foswiki/bin | CGI bin | CGI-enabled dir | /home/smith/public_html/foswiki/bin |
foswiki/lib | library files | same level as bin | /home/smith/public_html/foswiki/lib |
foswiki/locale | language files | dir secure from public access | /home/smith/public_html/foswiki/locale |
foswiki/pub | public files | htdoc enabled dir | /home/smith/public_html/foswiki/pub |
foswiki/data | topic data | dir secure from public access | /home/smith/public_html/foswiki/data |
foswiki/templates | web templates | dir secure from public access | /home/smith/public_html/foswiki/templates |
foswiki/tools | Foswiki utlilities | dir secure from public access | /home/smith/public_html/foswiki/tools |
foswiki/working | Temporary and internal files | dir secure from public access | /home/smith/public_html/foswiki/working |
configure page) configure page. However, if you are unable to get the configure page to display (for example, if a dependency is missing), or for some reason you do not wish to use the configure page, then you can configure Foswiki manually
Perform the following steps to manually configure Foswiki: lib/Foswiki.spec to lib/LocalSite.cfg
$Foswiki::cfg{DefaultUrlHost}
$Foswiki::cfg{ScriptUrlPath}
$Foswiki::cfg{ScriptDir}
$Foswiki::cfg{PubUrlPath}
$Foswiki::cfg{PubDir}
$Foswiki::cfg{DataDir}
$Foswiki::cfg{ToolsDir}
$Foswiki::cfg{TemplateDir}
$Foswiki::cfg{LocalesDir}
$Foswiki::cfg{WorkingDir}
$Foswiki::cfg{OS}
$Foswiki::cfg{LoginManager}
$Foswiki::cfg{WebMasterEmail}
$Foswiki::cfg{SMTP}{MAILHOST}
$Foswiki::cfg{SMTP}{SENDERHOST}
__END__ and everything following it.
System.Skins refers to the Skins topic in your System web. To go directly to a topic, enter the full topic name, such as System.Skins, into the "Jump" text box at the top right of any Foswiki page.
To make it easier to follow the instructions in this section, you can view this installation guide using your Foswiki site by entering System.InstallationGuide into the "Jump" text box. By doing this instead of using the INSTALL.html file from the distribution, you will be able to use the embedded hyperlinks to jump directly to the referenced pages.
All of the Foswiki documentation can also be found online in the Foswiki documentation section (the "System" web) of the Foswiki web site.
Note the configure page mentioned in this section is accessed by visiting http://www.foswiki.org/bin/configure your web browser.
Main.SitePreferences. If a given preference is not set in Main.SitePreferences, then a default value is picked up from System.DefaultPreferences, if present, or, for extensions, from the extension topics.
To simplify your upgrades, do not modify System.DefaultPreferences. Instead, copy any settings you want to change from System.DefaultPreferences to Main.SitePreferences.
To see the available preferences that can be set, look through System.DefaultPreferences.
If, for some reason, you wish to pick up default preferences from a different topic, you can set the location in the Miscellaneous settings pane of the configure page, in the {SitePrefsTopicName} setting (visible when Expert mode is enabled). It is recommended that you leave this setting to its default value, DefaultPreferences.
configure page.
tools/mailnotify script, as described in the System.MailerContrib topic.
{WebMasterEmail} email account. Obtain these as you would for any other S/MIME e-mail user.
To enable Foswiki to sign administrative e-mails: Crypt::SMIME installed.
/etc/pki/tls/certs
configure script, change the following settings under Mail and Proxies: {MailMethod} and {MailProgram} to enable an external mail program such as sendmail. Net::SMTP is not supported. {SMTP}{MAILHOST}, {SMTP}{SENDERHOST}, {SMTP}{Username} and {SMTP}{Password} are not used an may be deleted.
SMTPMAILHOST is defined in Main.SitePreferences it should be removed.
{SmimeCertificateFile} configuration variable
{SmimeKeyFile} configuration variable
configure script an resolve any errors that it identifies
tools/tick_foswiki.pl script, and set a negative value on the configure page for {Sessions}{ExpireAfter}. For more details, read System.CommandAndCGIScripts#tick_foswiki_pl.
Localisation section of the configure page. For more information, see Foswiki:Support.InternationalizationSupplement.
ALLOWTOPICCHANGE preference setting to Main.NewUserTemplate so only the user can edit their own user topic. In particular, on a public Foswiki site, restricting edit access will avoid vandalism and spam.
WEBCOPYRIGHT preference. Its default is the following: Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
If your Foswiki site is used in an environment without public access you should replace this with your normal copyright notice. You should also consider adding a security classification (e.g., For Internal Use Only) so people do not have to add this manually to every new topic.
If your Foswiki site is publicly accessible, you need to decide which copyright and license you wish to apply to all contributions. For open source applications, licenses such as the GNU Free Documentation License, FreeBSD Documentation License, and one of the various Creative Commons licenses are possible licenses to consider. Remember that once people have started contributing, you cannot retroactively change the license (unless it has a provision for this).
To change the copyright statement, perform the following steps:
WEBCOPYRIGHT preference setting from System.DefaultPreferences to Main.SitePreferences. Change the value to your desired text. This value will be your new default across all webs.
WEBCOPYRIGHT preference in the WebPreferences topic for the given web. For example, you could add a confidential classification to a web that has restricted access.
WEBCOPYRIGHT preference setting in System.WebPreferences covers the documentation that comes with Foswiki, and should not be changed.
tools/extension_installer
.deb packages should only use the debian tools when installing extensions.
The simplest way is to visit configure:Extensions. Use the Find More Extensions button to download and install additional extensions from the foswiki.org website. If you are behind a firewall or your server has no access to the Internet, you can also install plugins manually. Installation instructions for each plugin are located in its corresponding topic on http://foswiki.org/. Additional documentation on Foswiki plugins can be found at Foswiki:Support.PluginsSupplement.
When installing an extension from the configure interface: working/configure/backup directory
!noci, disabling checkin, they will still be checked in if existing revision control files are found, suggesting that local modifications have occurred.
_installer package must be run from the root directory of the Foswiki installation.
_installer module must be downloaded from the Extension repository. The extension archive will be downloaded if required.
_installer is run, it will install the Extension and dependencies similar to the configure interface except: _installer module is saved in working/configure/pkgdata
working/logs/configure/[NameOfExtension]-yyyymmdd-hhmmss-[Action].log
configure page. In addition, some extensions also require configuration in this section.
The instructions for using the extensions installer from the shell are
retrieved by using the "usage" command: tools/extension_installer usage or
./SomePlugin_installer usage
perl working/configure/pkgdata/X509UserPlugin_installer usage
Usage as a custom installer:
X509UserPlugin_installer -a -n -d -r -u -c install
X509UserPlugin_installer -a -n uninstall
X509UserPlugin_installer manifest
X509UserPlugin_installer dependencies
Usage as a generic installer:
tools/extension_installer X509UserPlugin -a -n -d -r -u -c install
tools/extension_installer X509UserPlugin -a -n uninstall
tools/extension_installer X509UserPlugin manifest
tools/extension_installer X509UserPlugin dependencies
If command (install, uninstall ..) is not provided, default is to
install the extension.
Operates on the directory tree below where it is run from,
so should be run from the top level of your Foswiki installation.
Depending upon your installation, you may need to execute perl directly
perl tools/extension_installer ... or
perl X509UserPlugin_installer ...
"install" will check dependencies and perform any required
post-install steps.
"uninstall" will remove all files that were installed for
X509UserPlugin even if they have been locally modified.
-a means don't prompt for confirmation before resolving
dependencies
-d means auto-download if -a (no effect if not -a)
-r means reuse packages on disc if -a (no effect if not -a)
-u means the archive has already been downloaded and unpacked
-n means don't write any files into my current install, just
tell me what you would have done
-c means don't try to use CPAN to install missing libraries
"manifest" will generate a list of the files in the package on
standard output. The list is generated in the same format as
the MANIFEST files used by BuildContrib.
"dependencies" will generate a list of dependencies on standard
output.
The web and command line interfaces can be used to uninstall extensions. When an extension is remove, the following occurs:Caution: When removing an extension, no dependency checking is performed.
- Dependencies are not removed
- Other Extensions dependent on the removed extension may become non-operational.
_installer package is used to recover the manifest. If it cannot be found locally, it will be downloaded from the configured extension repository
configure/working/backup directory _uninstaller was required, the backup will be made per the current installer's manifest. It is preferable to always save the _installer modules.
,v revision control files will be removed, including the _installer. working/logs/configure/[NameOfExtension]-yyyymmdd-hhmmss-[Action].log
working/configure/pkgdata/SomeExtension_installer uninstall
unzip or tar -xzf of the backup file should be all that is required:
cd /root/of/foswiki tar -zxvf * working/configure/backup/[Extension}-backup-[yyyymmdd]-[hhmmss].tgz # or unzip working/configure/backup/[Extension}-backup-[yyyymmdd]-[hhmmss].zip
TWikiCompatibilityPlugin. This plugin enables most TWiki extensions to work with Foswiki, without modifications. It also maps requests for legacy TWiki web topics to their Foswiki equivalents, as defined in Foswiki:Development.TopicNameMappingTable. The TWIKIWEB and MAINWEB TWiki variables are also mapped to the new Foswiki macros SYSTEMWEB and USERSWEB.
If you are not upgrading an existing TWiki installation and do not plan to install plugins from the TWiki web site, it is recommended that you disable the TWikiCompatibilityPlugin in the Plugins Section on the configure page.
If a plugin exists both in a TWiki version and a Foswiki version, it is strongly recommended that you use the Foswiki version, as this is coded to work optimally with Foswiki. As part of the Foswiki project, the Foswiki community is evaluating all of the extensions that are available for TWiki, and porting them over to the Foswiki name space. Many of them are being enhanced through the removal of bugs and security vulnerabilities, resulting in better, more functional extensions for Foswiki.
| Fast CGI | FastCGIEngineContrib | Supports the mod_fastcgi and mod_fcgid extensions |
| mod_perl | ModPerlEngineContrib | supports the apache mod_perl extension |
TWikiCompatibilityPlugin), thereby enabling a smooth transition from TWiki to Foswiki.
If you use the Foswiki PageCaching feature, be sure to refresh the cache after upgrading to a new Foswiki version.
Main web in the new installation, including all user topics.
Managing caches of static
.js,.cssfiles: some parts of Foswiki use URI versioning to help web browsers obtain a current version of these files when they change, but currently other parts do not. You may need to get your users to clear their browser's cache after upgrading your site to a new major or minor release (usually not necessary for patch upgrades). An alternative approach is to manage your web server configuration to strategically set appropriate expiry times for static files (see performance supplement)
<oldwiki> refers to the directory in which the old installation is located
<newwiki> refers to the directory in which the new installation is located; it is assumed to be immediately below the root directory of your web server
<old_users_web> refers to the web in which the user topics are located in the old installation. The default value is the Main web. The web is specified in the Store settings pane of the configure page, in the {UsersWebName} setting (visible when Expert mode is enabled).
<old_system_web> refers to the web used for documentation and default preferences in the old installation. In Foswiki, the default value is the System web; in TWiki, the default value is the TWiki web. The web is specified in the Store settings pane of the configure page, in the {SystemWebName} setting (visible when Expert mode is enabled).
configure page mentioned in this document is accessible via your web browser at http://yourdomain/<newwiki>/bin/configure .
configure page. <oldwiki>/lib/LocalSite.cfg file to <newwiki>/lib/LocalSite.cfg in order to preserve your existing configuration settings. Alternatively, you can reconfigure the new installation from scratch (you can use your old LocalSite.cfg file as a reference).
LocalSite.cfg file (though you can use it as a reference). Run configure and set the configuration values in the new installation to match those of the old installation.
configure page, including any new settings added in the new version. Save the configuration after you have completed your changes.
<newwiki>/lib/LocalSite.cfg file and run configure.
System.UpgradeGuide into the "Jump" text box on the top right of any topic. By doing this instead of using the UpgradeGuide.html file from the distribution, you will be able to use the embedded hyperlinks to jump directly to the referenced pages.
configure page to install and configure extensions from the Foswiki:Extensions repository. You can also install extensions manually; see the instructions on the extension's web page from where you obtained the extension (for Foswiki extensions, on foswiki.org).
TWikiCompatibilityPlugin is installed to provide backwards compatible support for TWiki plugins. However if the TWiki plugin calls private APIs or invokes helper scripts, it may still not work correctly. Check for an upgraded Foswiki version of the extension in the Foswiki:Extensions repository and install it instead.
Main.SitePreferences topic in your new Foswiki site, prefixing each setting with the name of the plugin in uppercase followed by an underscore. For example, to copy over the DEFAULT_TYPE setting from the CommentPlugin topic in the old site to the new site, copy the value to a COMMENTPLUGIN_DEFAULT_TYPE setting in the Main.SitePreferences topic in the new site.
Commonly-customized plugin settings include the following: CommentPlugin - DEFAULT_TYPE
EditTablePlugin - CHANGEROWS, QUIETSAVE, EDITBUTTON
InterwikiPlugin - RULESTOPIC
InterWikis - If you added your own rules, make sure you copy over the rules to the new installation.
SlideShowPlugin - If you changed the embedded 'Default Slide Template', then copy your customed template to the topic in the new installation. You should prefer creating your own slide show template in a separate topic, so you will not have to take special steps over upgrades to preserve your modifications to the default slide template.
SmiliesPlugin - If you added your own smileys, make sure you copy over your customizations to the topic in the new installatin.
TablePlugin - TABLEATTRIBUTES
configure.
find data -name '*,v' -exec rcs -u -M '{}' \;
find pub -name '*,v' -exec rcs -u -M '{}' \;
WebChanges topics depend on the file timestamp. If you touch the .txt files make sure to preserve the timestamp, or change them in the same chronological order as the old file timestamps.
Main web <oldwiki>/data/<old_users_web>/ to <newwiki>/data/Main/, and copy all files from <oldwiki>/pub/<old_users_web>/ to <newwiki>/pub/Main/ . Do not overwrite any topics already present in the <newwiki>/data/Main/ directory. <old_users_web>.NewUserTemplate in the old installation, this step will copy over your template for user topics to the new installation.
Security setup pane of the configure page, in the {SuperAdminGroup} setting (visible when Expert mode is enabled). You can do either of the following: {SuperAdminGroup} setting in your new installation to the old admin group.
{LocalSitePreferences} on the configure page, or if you did customize {LocalSitePreferences} but kept your site preferences within the <old_users_web> web, then this step will also copy over your site preferences to the new installation.
<old_users_web>.WikiUsers topic in the old installation to the Main.WikiUsers topic in the new installation. If the new installation does not yet have an initial Main.WikiUsers topic, then copy <oldwiki>/data/<old_users_web>/WikiUsers.txt to <newwiki>/data/Main/WikiUsers.txt.
Main.WikiUsers topic: Main.WikiUsers, using the corresponding entries in Foswiki:System.UsersTemplate as an example.
data/.htpasswd for authentication, copy this file from the old installation to the new one.
<old_system_web>.UserRegistration, then either copy over <oldwiki>/data/<old_system_web>/UserRegistration.txt and <oldwiki>/data/<old_system_web>/UserRegistration.txt,v to the <newwiki>/data/System/ directory, or modify System.UserRegistration in the new installation to contain your customizations.
<old_users_web>.TWikiUsers topic in the old installation to the Main.WikiUsers topic in the new installation. If the new installation does not yet have an initial Main.WikiUsers topic, then copy <oldwiki>/data/<old_users_web>/TWikiUsers.txt to <newwiki>/data/Main/WikiUsers.txt, and manually add the required default users (see the next steps).
Main.WikiUsers topic: Main.WikiUsers, using the corresponding entries in Foswiki:System.UsersTemplate as an example.
data/.htpasswd for authentication, copy this file from the old installation to the new one.
tools/upgrade_emails.pl script to move the user emails out of the user topics and into the password file.
<old_system_web>.TWikiRegistration, then modify System.UserRegistration in the new installation to contain your customizations.
<oldwiki>/data/Sandbox/ to <newwiki>/data/Sandbox and from <oldwiki>/pub/Sandbox/ to <newwiki>/pub/Sandbox . Some pages you may wish to preserve are the WebHome topic and the WebLeftBar topic (if you had created it in the old wiki installation). The Sandbox web often contains work-in-progress topics that users will want to keep.
Make sure the data and pub directories, as well as the files within them, are readable and writeable by the web server user.
Execute your test plans for authentication and authorization. Test that users that you have transferred from the old installation can login with any problems, and that access controls work appropriately: check that users are able to view and edit pages for which they have access, and are denied permission to view or edit pages for which they do not have access. Also check that pages restricted to the admin group are not accessible by non-admin users, and that administrators continue to have access.
Miscellaneous settings pane of the configure page, in the {LocalSitePreferences} setting (visible when Expert mode is enabled) — the default location is Main.SitePreferences. Copy any customized preferences from the site preferences topic in your old installation to the site preferences topic in the new installation. (Note you may have already copied over your customized preferences when you transfered the contents of the <old_users_web> web.)
If, in your old installation, you customized the default preferences in <old_system_web>.DefaultPreferences, then transfer your customizations from this topic to the site preferences topic instead (i.e. the topic specified in your {LocalSitePreferences} setting), so that your customizations will not get overwritten on the next upgrade.
If you are upgrading from TWiki, note that the default location of the default preferences in TWiki is <old_system_web>.TWikiPreferences, and the default location of the site preferences is Main.TWikiPreferences. Transfer any customized preferences from these topics to the site preferences topic in your new installation.
<oldwiki>/<old_system_web>/ directory as a reference.
http://yourdomain/wiki/. You can use one of the following approaches to make the new installation accessible using the same URL prefix: <newwiki>/ directory to wiki/ (renaming the directory of your old installation if necessary).
wiki/ that points to <newwiki>/ (renaming the directory of your old installation if necessary).
/wiki/ are served from your <newwiki>/ directory.
System.DefaultPreferences for a description of the FAVICON preference. To set it for your site, add the FAVICON preference to your site preferences topic, Main.SitePreferences (or the topic you configured in your {LocalSitePreferences} setting in the Miscellaneous settings pane on the configure page). To set it for a web, add the FAVICON preference to the WebPreferences topic for that web.
%TMPL:DEF{"block"}% and %TMPL:END% — was stripped of leading and trailing white space, including newlines. This made it difficult for skin developers to include a newline before or after a block of text.
From TWiki 4.1.0 onwards, and in Foswiki 1.0, this has changed so that white space is no longer stripped. Skins like PatternSkin and NatSkin have been updated so that they work with the new behavior. If you use an older skin or have written your own you will most likely need to make some adjustments.
In general, if you get mysterious blank lines in your skin, the newline after the %TMPL:DEF{"block"}% needs to be removed: the content of the block must follow on the same line as the TMPL:DEF.
CommentPlugin templates also must be modified to remove extraneous newlines — in particular, any newline immediately after the TMPL:DEF. See the System.CommentPluginTemplate for examples of how comment template definitions should look like in TWiki 4.1.x.
Example: a CommentPlugin template that adds a row to a table. With versions of TWiki prior to 4.1, the following syntax can be used:
%TMPL:DEF{OUTPUT:tabletest}%%POS:BEFORE%
|%URLPARAM{"comment"}%| -- %WIKIUSERNAME% - %DATE% |
%TMPL:END%
Starting in TWiki 4.1 and continuing with Foswiki 1.0, the newline before the start of the table row must be removed:
%TMPL:DEF{OUTPUT:tabletest}%%POS:BEFORE%|%URLPARAM{"comment"}%| -- %WIKIUSERNAME% - %DATE% |
%TMPL:END%
{PassthroughDir} and {Sessions}{Dir} were set by default to /tmp. These config settings have been eliminated: Foswiki creates a tmp directory and other temporary directories under the directory defined by the configure setting {WorkingDir}.
NewUserTemplate and UserForm in the Main web, if they exist. If the topic does not exist in the Main web, then the default version from System is used. Thus on upgrades, any customizations you made to NewUserTemplate or UserForm in the Main web will be preserved.
In previous TWiki versions, only System.NewUserTemplate and System.UserForm are used; you cannot override them by creating your own version in the Main web.
Main.WikiUsers topic contains all the registered users. It is not included in the Foswiki distribution, so that your list of users will not be overwritten on upgrades. When the first user is registered in Foswiki, the Main.WikiUsers topic is created on demand.
working directory {WorkingDir} in the General path settings pane on the configure page defines the location of a working directory for various subdirectories for use by Foswiki. The default value for this setting is the working subdirectory within the installation root directory for the Foswiki installation.
The subdirectories within the working directory include the following:
registration_approvals — previously located in the data/ directory
tmp — avoids security issues with using the /tmp directory
work_areas — previously located in the pub/ directory.
working/tmp/ subdirectory.
configure page. The internal admin username can be configured in the {AdminUserLogin} setting in the Security setup pane on the configure page.
In order to add an initial user to the default {SuperAdminGroup}, Main.AdminGroup, you must login as the internal admin user using the link on the Main.AdminGroup page.
<form name="new" action="%SCRIPTURLPATH{"save"}%/Sandbox/" method="post">
...
</form>
The template webs _default and _empty are frequent targets for spammers because these webs are normally not monitored very carefully by the community around a Foswiki installation. These webs are now write protected so on an administrator can edit topics in these webs. When an administrator creates a new web it is important to remember to remove the access restriction from the WebPreferences in the new web.
{Validation}{Method} is by default "strikeone" which is the highest level of security and requires that users have Javascript enabled. You can lower this setting to "embedded" which uses a less safe validation method but does not require javascript. If you want to disable CSRF protection set it to "none". It is highly recommended to keep it at "strikeone".
{Validation}{ValidForTime} is the time the validation key is valid. It is by default 1 hour. If your users often edit pages longer you can increase this time. Your users can still save pages with an expired validation key but they will be asked to confirm the saving.
{Validation}{MaxKeysPerSession} is the maximum number of validation keys to store in a session. There is one key stored for each page rendered. If the number of keys exceeds this number, the oldest keys will be force-expired to bring the number down. If you have users that are very fast at editing pages and experience expired keys, you can increase this number. The default is 1000 and should be much higher than any normal person will experience.
{Validation}{ExpireKeyOnUse} defines if validation keys expire when they are used for storing data. This prevents an attacker from evesdropping communication between server and browser and reuse keys. Unfortunately it also means that if a user edits a page, saves it, uses the back button of the browser, corrects his previous editing, and then saves again, he is asked to confirm that he intended to save the topic. Another use case is if you create an application with multiple forms and multiple submit buttons on a topic and you submit multiple times from this topic without navigating away from it, you will be asked to confirm the submission each time. If this is not acceptable to your use of Foswiki, you can turn off {Validation}{ExpireKeyOnUse}.
.htpasswd files on the server. These files can be unique to Foswiki, 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.
.htpasswd file to also store the email addresses of registered users. If the .htpasswd file will be shared with another application, it is critical to preserve the email address stored as the last field in each line of the file.
{PasswordManager} setting in configure.
{UserMappingManager} setting in configure.
{LoginManager} setting in configure.
none) Note: This setup is not recommended on public websites for security reasons; anyone would be able to change system settings and perform tasks usually restricted to administrators.
Foswiki::LoginManager::TemplateLogin) By default, your Foswiki installation is probably already using TemplateLogin, HtPasswdUser and TopicUserMappingContrib as the default
Login,Passwordanduser mappingoptions.
Login tab on the Security and Authentication panel. Select the Foswiki::LoginManager::TemplateLogin login manager.
Passwords tab. Select the appropriate PasswordManager for your system - the default is Foswiki::Users::HtPasswdUser. There is also an EXPERT configure setting
{TemplateLogin}{PreventBrowserRememberingPassword}that you can set to prevent Browsers from remembering username and passwords if you are concerned about public terminal usage.
HtPasswdUser (the default), check the .htpasswd file is being updated correctly with a new entry. If not, check {Htpasswd}{FileName} is correct (under Security and Authentication on the Password tab in configure), and that the webserver user has write permission.
This is a very important step, as users in this group can access all topics, independent of Foswiki access controls.
Foswiki AccessControls do not protect topic attachments unless the web server has been configured to do so using the
viewfilescript. Visit Foswiki:Support.ApacheConfigGenerator for examples using Apache.As Template Login uses a wiki page for its login prompt, there is a great deal of flexibility in customizing the login page for your purposes.
The default new user template page is in System.NewUserTemplate. The same macros get expanded as in the template topics. You can create a custom new user topic by creating the NewUserTemplate topic in Main web, which will then override the default in System web. See System.UserForm for copy instructions.
EXCLUDED_ from the INCLUDE tags) or add new ones.
New fields may also be added. The name="" parameter of the <input> tags must start with: "Fwk0..." (if this is an optional entry), or "Fwk1..." (if this is a required entry). This ensures that the fields are carried over into the user home page correctly.
Self-registration by Guest users Registration by logged-in users mod_auth_ldap or mod_auth_mysql you can just plug in to them directly.
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.
Foswiki maps the REMOTE_USER that was used to log in to the webserver to a WikiName using the table in Main.WikiUsers. 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 Foswiki Template Login can be used to authenticate Apache users, using the Apache Basic Authentication support.
To setup Apache Login, perform the following steps:Do not use the Apache
htpasswdprogram with.htpasswdfiles generated by Foswiki!htpasswdwipes out email addresses that Foswiki plants in the info fields of this file.Apache Login is required for Apache-based login methods such as mod_ldap
You can use any Apache authentication module that sets the
REMOTE_USERenvironment variable.
Security and Authentication pane on the Login tab in configure: Foswiki::LoginManager::ApacheLogin for {LoginManager}.
Foswiki::Users::HtPasswdUser for {PasswordManager}.
Foswiki::Users::TopicUserMapping for {UserMappingManager}.
foswiki/bin-htaccess.txt file to set the following Apache directives on the bin scripts: <FilesMatch "(attach|edit|manage|rename|save|upload|mail|logon|rest|.*auth).*"> require valid-user </FilesMatch>You can also refer to the sample
foswiki_httpd_conf.txt and bin-htaccess.txt files to see how the appropriate Apache directives are specified.
HtPasswdUser (the default), check the .htpasswd file is being updated correctly with a new entry. If not, check {Htpasswd}{FileName} is correct (under Security and Authentication on the Password tab in configure), and that the webserver user has write permission.
This is a very important step, as users in this group can access all topics, independent of Foswiki access controls.
bin/logon script enables this. If you are using Apache Login, the bin/logon script must be setup in the Apache configuration or bin/.htaccess file to be a script which requires a valid user. Once authenticated, it will 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="" }%
Access controls cannot be modified in this way
REMOTE_USER environment variable, and used internally. Login Usernames are maintained by your system administrator.
JohnSmith, is recorded when you register using UserRegistration; doing so also generates a personal home page in the Main web.
{AllowLoginName} is enabled in 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%USERSWEB%.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.
{PasswordManager} supports password changing, you can change and reset passwords using forms on regular pages.
Foswiki/ChangePassword )
Foswiki/ResetPassword )
{PasswordManager} does not support password changing, the ChangePassword and ResetPassword will show a simple message. This message is defined iby the setting CHANGEPASSWORDDISABLEDMESSAGE in System.DefaultPreferences. You can redefine this setting by copying it to Main.SitePreferences and change it to include a link to the password management website of your organisation.
{PasswordManager} supports storage and retrieval of user e-mail addresses, you can change your e-mail using a regular page. As shipped, this is true only for the Apache 'htpasswd' password manager.
Foswiki/ChangeEmailAddress )
{PasswordManager} does not support password changing, ChangeEmailAddress will guide the user to define the email address in the user topic.
edit and save must be removed from the list of scripts requiring authentication. {AuthScripts} list using configure
bin/.htaccess, or from the FilesMatch line in the Apache configuration.
Your local Foswiki may have an alternate user mapping manager installed which doesn't support user registration. Check with your Wiki administrator if you are in doubt.
Main web. To create a new group, visit Main.WikiGroups. You will find a "Create a new group" link at the top which reveals a form to create a new group. Enter the name of the new group ending in Group into the "Group Name" form field and the initial members in the "Members" field. This creates a new group topic.
By default any member of a group has access rights to both adding and removing users from the group through the nice user interface. If you need to limit this access further, change the ALLOWTOPICCHANGE setting through "More Topic Action" -> "Edit topic preference settings".
The ALLOWTOPICCHANGE setting defines who is allowed to change the group topic; it is a comma delimited list of users and groups. You typically want to restrict that to the members of the group itself, so it should contain the name of the topic. This prevents users not in the group from editing the topic to give themselves or others access. For example, for the KasabianGroup topic write: Set ALLOWTOPICCHANGE = Main.KasabianGroup Foswiki has strict formatting rules. Make sure you have three spaces, an asterisk, and an extra space in front of any access control rule. See below for more information about ALLOWTOPICCHANGE. Background: A group topic is an empty topic with 3 hidden preference settings.
Foswiki 1.1 introduced the smart user interface for adding and removing members of a group. Group topics from prior versions of Foswiki will still work. These have the GROUP setting visible in the topic text itself and you edit it by editing the topic. Foswiki 1.1 Main.WikiGroups will show these old group topics with an "Upgrade Group Topic button". The administrator can upgrade an old group topic to the nice new user interface with one easy click.
- GROUP: Comma separated list of users and/or groups
- ALLOWTOPICCHANGE: Comma separated list of users and groups that are allowed to add and remove users from the group
- VIEW_TEMPLATE: Always set to the value
GroupView. This alters the way the topic is presented to include a nice user interface for adding and removing users.
AdminGroup. The system administrator may have chosen a different name for this group if your local Foswiki uses an alternate group mapping manager, but for simplicity we will use the default name AdminGroup in the rest of this topic.
You can create new administrators simply by adding them to the Main.AdminGroup topic. For example, Set GROUP = Main.ElizabethWindsor, Main.TonyBlair
ALLOW or DENY, _context is TOPIC, WEB, or ROOT, and mode is VIEW, CHANGE, or RENAME. For example, the preference ALLOWWEBCHANGE lists who is allowed to change
topics in the current web.
There is an important distinction between CHANGE access and RENAME access. A user can CHANGE a topic, but thanks to version control their changes cannot be lost (the history of the topic before the change is recorded). However if a topic or web is renamed, that history may be lost. Typically a site will only give RENAME access to administrators and content owners.
Note that ALLOWWEBxxx and DENYWEBxxx preferences can only be set in WebPreferences topics. You cannot define a site level access. Each web must be protected on their own. Subwebs inherit access settings from the parent web. See next section.
Note that ALLOWTOPICxxx and DENYTOPICxxx preferences apply only to the topic itself.
Be warned that some plugins may not respect access permissions.
FINALPREFERENCES affects access controls, allowing you to prevent changes to access control settings while still allowing edit access to topics.
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 >
ALLOWWEBVIEW set, this will also apply to the subweb. Also note that you will need to ensure that the parent web's FINALPREFERENCES does not include the access control settings listed above. Otherwise you will not be able override the parent web's access control settings in sub-webs.
Creation and renaming of sub-webs is controlled by the WEBCHANGE setting on the parent web (or ROOTCHANGE for root webs). Renaming is additionally restricted by the setting of WEBRENAME in the web itself.
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 >
Remember when opening up access to specific topics within a restricted web that other topics in the web - for example, the WebLeftBar - may also be accessed when viewing the topics. The message you get when you are denied access should tell you what topic you were not permitted to access. Be careful with empty values for any of these.Caution! Settings are always taken from the latest (current) revision of a topic. If older revisions of a topic had more restrictive access controls, they will not be used when accessing the older revision.
Set ALLOWTOPICVIEW = Set DENYTOPICVIEW = See "How Foswiki evaluates ALLOW/DENY settings" below for more on how ALLOW and DENY interacts.If the same setting is defined multiple times the last one overrides the previous. They are not OR'ed together.
Setting to an empty value has caused confusion and great debate and it has been decided that the empty setting syntax will be replaced by something which is easier to understand in a later version of Foswiki. A method to upgrade will be provided. Please read the release notes carefully when you upgrade.
mod_rewrite module, and configure your webserver to redirect accesses to attachments to the Foswiki viewfile script. For example,
ScriptAlias /foswiki/bin/ /filesystem/path/to/bin/
Alias /foswiki/pub/ /filesystem/path/to/pub/
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/+foswiki/+pub/+System/+.+
RewriteRule ^/+foswiki/+pub/+([^/]+)((/+([^/]+))+)/+(.+) /foswiki/bin/viewfile/$1/$2?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.
Images embedded in topics will load much slower since each image will be delivered by the
viewfilescript.
Set DENYROOTCHANGE = < comma-delimited list of users and groups >
Set ALLOWROOTCHANGE = < comma-delimited list of users and groups >
ROOTCHANGE access to rename an existing top-level web. You just need WEBCHANGE in the web itself.
Settings are only read from the most current (latest) revision of a topic. Settings from older revisions are never used, even when viewing an older revision with the
rdiffscript
Attention: Use this with caution. This is deprecated and will likely change in the next release.
NOSEARCHALL setting in WebPreferences. It does the following: all webs search option from accessing the web
* Set NOSEARCHALL = onThis setup can be useful to hide a new web until content its ready for deployment, or reduce clutter in the WebLeftBar and default search results when restricted access is not desired.
Setting
NOSEARCHALLto any value other than the empty string will hide a web. SettingNOSEARCHALL = offwill have the same effect as setting it toon
Obfuscating a web without setting view access control is very insecure, as anyone who knows the URL can access the web, and explicit searches naming that web will also work. For security purposes it is better to use the ALLOW or DENY VIEW settings in the WebPreferences topic.
%SEARCH%and%WEBLIST%will not show any results for webs that the current user does not have permission to view.
With this configuration, someone with access to the site needs to register new users. ResetPassword will also have to be done by administrators.
bin and pub directories to all but valid users. In the Apache .htaccess file or the appropriate .conf file, replace the <FilesMatch "(attach|edit|... section with this:
<FilesMatch ".*">
require valid-user
</FilesMatch>
If needed, you can further restrict access to selected webs with ALLOWWEBVIEW and other access control settings.
foswiki/bin directory (except for login, logon and configure) to the list of {AuthScripts} in configure. For a default Foswiki installation:
{AuthScripts} = 'attach,compareauth,edit,manage,previewauth,rdiffauth,rename,rest,restauth,save,statistics,upload,viewauth,viewfileauth';
{AuthScripts} = 'attach,changes,compare,compareauth,edit,manage,oops,preview,previewauth,rdiff,rdiffauth,register,rename,resetpasswd,rest,restauth,save,search,statistics,upload,view,viewauth,viewfile,viewfileauth
If you install extensions that add scripts, you must also remember to add the new scripts to this list or the new scripts will not be protected.
WebPreferences in all webs. Set DENYWEBVIEW = WikiGuest
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 if DENYWEBVIEW and ALLOWWEBVIEW are not defined.
require valid-user on your view script in .htaccess or the appropriate Apache .conf file. This looks like: FilesMatch "(attach|edit|manage|rename|save|view|upload|mail|logon|.*auth).*" (normally view is not in that list).
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 if DENYWEBVIEW and ALLOWWEBVIEW are not defined.
%SHOWPREFERENCE{"DENYWEBVIEW,ALLOWWEBVIEW,DENYWEBCHANGE,ALLOWWEBCHANGE,DENYWEBRENAME,ALLOWWEBRENAME"}%
For this topic, this displays: Edit topic preference settings under More topic actions menu. Preferences set in this manner are not visible in the topic text, but take effect nevertheless. Access control settings added as topic preference settings are stored in the topic meta data and they override settings defined in the topic text.
Alternatively, place them in HTML comment markers, but this exposes the access setting during ordinary editing.
<!--Back to top
* 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% macro. 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>
}
}
|
|||||||||||||||||||||||||
|
Verbatim (Literal) Code Highlighting: Surround code excerpts and other formatted text e.g. with <verbatim class="bash"> and </verbatim> tags.verbatim tags disable HTML code. Use <pre class="bash"> and </pre> tags instead if you want the HTML code within the tags to be interpreted. |
<verbatim class="bash"> #!/bin/bash while [ -n "$(ls . ~/ \ ~/pub* /var/www 2>/dev/null \ | fgrep foswiki )" ] ; do clear printf "\nFoswiki rules!\n" sleep 10 clear printf "\nFoswiki still rules!\n" sleep 10 done; exit 0 </verbatim> |
#!/bin/bash while [ -n "$(ls . ~/ \ ~/pub* /var/www 2>/dev/null \ | fgrep foswiki )" ] ; do clear printf "\nFoswiki rules!\n" sleep 10 clear printf "\nFoswiki still rules!\n" sleep 10 done; exit 0 |
|||||||||||||||||||||||||
|
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. To link to a topic in a subweb write Otherweb.Subweb.TopicName.'.' are used to separate webs and subwebs from topic names and therefore cannot be used in topic names.
It's generally a good idea to use the macros %SYSTEMWEB%, %SANDBOXWEB% and %USERSWEB% instead of System, %SANDBOXWEB% and Main.
|
WebStatistics %SANDBOXWEB%.WebNotify %SANDBOXWEB%.WebHome %SANDBOXWEB%.Subweb.TopicName | WebStatistics %SANDBOXWEB%.WebNotify %SANDBOXWEB%.WebHome TopicName | |||||||||||||||||||||||||
|
Acronym Links: Words that are all capitals will produce a link automatically only if the topic aready exists!. |
ACRONYM System.ACRONYM | ACRONYM System.ACRONYM | |||||||||||||||||||||||||
|
Anchors: You can define a reference inside a 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 of no more than 32 characters. 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, [[wiki syntax]] links to topic WikiSyntax. You can also refer to a different web and use anchors.
|
[[wiki syntax]] [[%SANDBOXWEB%.My unspaced topic]] escaped: ![[wiki syntax]] | wiki syntax Main.Wiki groups 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://foswiki.org/) are both supported.
The rules described under Forced Links apply for internal link references.
|
[[WikiSyntax][wiki syntax]] <span class='externalLink'><span class='externalLink'>[[http://gnu.org][GNU]]</span></span> | 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@b.com Mail Hi | |||||||||||||||||||||||||
|
Literal content: Foswiki generates HTML code from TML shorthand. Experts surround anything that must be output literally in the HTML code, without the application of shorthand rules, with <literal>..</literal> tags. |
<literal> | Not | A | Table | </literal> |
| Not | A | Table | | |||||||||||||||||||||||||
|
Protected content: Experts protect text from mangling by WYSIWYG editors using <sticky>..</sticky> tags. Sticky tags don't have any effect on normal
topic display; they are only relevant when content has to be
protected from a WYSIWYG editor (usually because it isn't well-formed HTML, or because it
is HTML that WYSIWYG would normally filter out or modify). Protected
content appears as plain text in the WYSIWYG editor.
|
<sticky> <div> This div is required </div> </sticky> |
This div is required
|
|||||||||||||||||||||||||
<strike>deleted text</strike> to get <literal>..</literal> tags around blocks of HTML to avoid accidental interpretation of Wiki syntax within the HTML.
Recommendations when pasting HTML from other sources (using the plain-text editor):Script tags may be filtered out, at the discretion of your Wiki administrator.
<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 a HTML tag are on the same line, or the tag will be broken.
LinkProtocolPattern, which by default is set to (file|ftp|gopher|https|http|irc|mailto|news|nntp|telnet), are linked automatically. You might change this setting to add more protocols (such as smb). Thus, all lines containing:![]()
LinkProtocolPatternis an expert setting in the Foswiki configuration and can only be changed by a systems administrator.
file://...
ftp://...
gopher://...
https://...
http://...
irc://...
mailto:...@...
news://...
nntp://...
telnet://... 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.
%TOPIC% is expanded to TextFormattingRules, the title of this topic.
Some macros can take arguments in curly braces - for example, %INCLUDE{"OtherTopic" ARG="arg"}%.
Many macro definitions are built-in, and others (preference settings) are predefined for your convenience. You can also define your own
preference settings at the entire site, individual web, or individual topic level. For more information, see Macros
Macros are fully expanded before any of the text formatting rules are applied.
%PLUGINDESCRIPTIONS%:
as icons <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'.
%MACRONAME%
%MACRONAME{ parameter="value" }%
These usually expand into content when a topic is rendered for viewing. There are two types of macros: %CALC{}% macro)
%T% to get %TOPIC% to get Macros (a predefined macro)
%CALC{ "$UPPER(Text)" }% to get TEXT (CALC is a macro defined by SpreadSheetPlugin)
!%TOPIC% to get %TOPIC% <nop> anywhere in the macro, Eg. %<nop>TOPIC%
%ALLVARIABLES% to get a full listing of all macros defined for a particular topic
default parameter, in which case the value of the default parameter will replace the macro call in the output. For example, %UNDEFINED{default="blank"}% will expand to blank.
Not those that use commonTagsHandler()
Notable exceptions include: CALC, STARTSECTION/ENDSECTION, STARTINCLUDE/STOPINCLUDE
%MACRO1{
something="%MACRO2{
somethingelse="%MACRO3%, %MACRO4%"
}%"
}%
The macros are expanded in this order: MACRO3, MACRO4, MACRO2, MACRO1.
%INCLUDE{
"%QUERY{
"'%THETOPIC%'/%THEFIELD%"
}%"
section="Summary"
}%
* Set THETOPIC = %SYSTEMWEB%.FAQWhatIsWikiWiki
* Set THEFIELD = TopicClassification
%INCLUDE{
"%QUERY{
"'%SYSTEMWEB%.FAQWhatIsWikiWiki'/%THEFIELD%"
}%"
section="Summary"
}%
* Set THETOPIC = %SYSTEMWEB%.FAQWhatIsWikiWiki
* Set THEFIELD = TopicClassification
%INCLUDE{
"%QUERY{
"'%SYSTEMWEB%.FAQWhatIsWikiWiki'/TopicClassification"
}%"
section="Summary"
}%
* Set THETOPIC = %SYSTEMWEB%.FAQWhatIsWikiWiki
* Set THEFIELD = TopicClassification
%INCLUDE{
"%QUERY{
"'System.FAQWhatIsWikiWiki'/TopicClassification"
}%"
section="Summary"
}%
* Set THETOPIC = %SYSTEMWEB%.FAQWhatIsWikiWiki
* Set THEFIELD = TopicClassification
%INCLUDE{
"FrequentlyAskedQuestion"
section="Summary"
}%
* Set THETOPIC = %SYSTEMWEB%.FAQWhatIsWikiWiki
* Set THEFIELD = TopicClassification
These topics are for frequently asked questions including answers. * Set THETOPIC = %SYSTEMWEB%.FAQWhatIsWikiWiki * Set THEFIELD = TopicClassification
These topics are for frequently asked questions including answers. * Set THETOPIC = System.FAQWhatIsWikiWiki * Set THEFIELD = TopicClassification
%, and escaping any " character it uses (becomes \")
Example:When working with a given macro, consult its documentation to determine which parameters support the
$percent/$percntformat tokens. Generally only output parameters likeheader,formatandfootersupport format tokens.
%MACRO1{
format="$percentMACRO2{
format=\"%MACRO3%, %MACRO4%\"
}$percent"
}%
The macros are expanded in this order: MACRO3, MACRO4, MACRO1, MACRO2.
%SEARCH{
"info.date >= d2n('2009-01-01') AND info.date <= d2n('2009-12-31')"
type="query"
limit="2"
nonoise="on"
format=" * $percentICON{
\"$percentIF{
\"'$topic'/parent.name='%PARENT%'\"
then=\"info\" else=\"gear\"
}$percent\"
}$percent [[$topic]]"
}%
----
* Set PARENT = UserDocumentationCategory
%SEARCH{
"info.date >= d2n('2009-01-01') AND info.date <= d2n('2009-12-31')"
type="query"
limit="2"
nonoise="on"
format=" * $percentICON{
\"$percentIF{
\"'$topic'/parent.name='UserDocumentationCategory'\"
then=\"info\" else=\"gear\"
}$percent\"
}$percent [[$topic]]"
}%
----
* Set PARENT = UserDocumentationCategory
* %ICON{
"%IF{
"'AccessKeys'/parent.name='UserDocumentationCategory'"
then="info" else="gear"
}%"
}% [[AccessKeys]]
* %ICON{
"%IF{
"'AdminSkillsAssumptions'/parent.name='UserDocumentationCategory'"
then="info" else="gear"
}%"
}% [[AdminSkillsAssumptions]]
----
* Set PARENT = UserDocumentationCategory
* %ICON{
"info"
}% [[AccessKeys]]
* %ICON{
"gear"
}% [[AdminSkillsAssumptions]]
----
* Set PARENT = UserDocumentationCategory
* <img src="http://www.foswiki.org/pub/System/DocumentGraphics/info.png"/> [[AccessKeys]] * <img src="http://www.foswiki.org/pub/System/DocumentGraphics/gear.png"/> [[AdminSkillsAssumptions]] ---- * Set PARENT = UserDocumentationCategory
%MYVAR%, %MyVar%, %My2ndVar%, and %My_Var% are all separate, valid macro names (macros are case sensitive - %MyVAR% and %MYVAR% are not the same).
By convention all settings, predefined macros and macros registered by plugins are always UPPER-CASE.
[multiple of 3 spaces] * [space] Set [space] MACRONAME [space] = [space] value Example:
* Set WEBBGCOLOR = #FFFFC0Macros defined using preference settings are expanded by enclosing their name in percent signs. So when you write
%WEBBGCOLOR%, it gets expanded to #FFD8AA
A preference macro is always taken from the most current topic revision, even when accessing previous revisions of a topic.
Preferences can be defined in a number of places: Set statements which occur at higher-numbered locations override macros of the same name defined at lower numbered levels, unless the macro was listed in a FINALPREFERENCES setting (finalised) at a lower-numbered level. In this case, the macro is locked to the value at that level; Set statements at higher-numbered levels are ignored.
* #Set DENYWEBCHANGE = %USERSWEB%.UnknownUser
<!-- * Set HIDDEN = This will be invisible in the output -->If you are setting a preference and using it in the same topic, note that Foswiki reads all the preference settings from the saved version of the topic before it displays anything. This means you can use a setting anywhere in the topic, even if you set it at the very end. But beware: it also means that if you change the setting of a macro you are using in the same topic,
Preview will show the wrong thing, and you must Save the topic to see it correctly.
Also note that Foswiki always reads the setting from the most current topic revision, so viewing older revisions of a topic can show unexpected results.
And especially important, preference settings are never overridden or set in "% * Set MACRONAME = value starts here
and continues here
Whatever you include in your macro will be expanded on display, exactly as if it had been entered directly (though see Parameters, below).
Example: Create a custom logo macro %MYLOGO%, define the preference settings in the web's WebPreferences topic, and upload a logo file, ex: mylogo.gif. You can upload by attaching the file to WebPreferences, or, to avoid clutter, to any other topic in the same web, e.g. LogoTopic. Sample preference setting in WebPreferences:
* Set MYLOGO = %PUBURL%/%WEB%/LogoTopic/mylogo.gifYou can also set preference settings in a topic by clicking the link
Edit topic preference settings under More topic actions. Preferences set in this manner are known as 'meta' preferences and are not visible in the topic text, but take effect nevertheless.
* Set CONDITIONS = According to [[%BASETOPIC%]] the %WHAT% is %STATE% today (Set in ...).You can call this macro passing in values for
WHAT and STATE. For example: %CONDITIONS{WHAT="sea" STATE="choppy"}% %CONDITIONS{WHAT="sea" STATE="choppy"}%.
DEFAULT gets the value of any unnamed parameter in the macro call.
default parameter so that they expand to something even when a value isn't passed for them in the call.
* Set WEATHER = It's %DEFAULT{default="raining"}%.
%WEATHER% expands to %WEATHER%
%WEATHER{"sunny"}% expands to %WEATHER{"sunny"}%
Local in place of Set in the macro definition. For example, if the user sets the following in their home topic:
* Set EDITBOXHEIGHT = 10 * Local EDITBOXHEIGHT = 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 macros in their evaluation order, so you can see macro scope if you get confused.
%SEARCH%, are powerful and general tools.
Your installation of Foswiki Foswiki-1.1.4, Tue, 20 Dec 2011, build 13483 has the following registered macros:Predefined macros can be overridden by preference settings (except TOPIC and WEB)
Plugins may extend the set of predefined macros (see individual Plugins topics for details)
Take the time to thoroughly read through ALL preference macros. If you actively configure your site, review macros periodically. They cover a wide range of functions, and it can be easy to miss the one perfect macro for something you have in mind. For example, see
%BASETOPIC%,%INCLUDE%, and the mighty%SEARCH%.
%ACTIVATEDPLUGINS%
%ADDTOZONE{"head" ...}%
%ADDTOZONE{
"zone"
...
}%
Parameters: "zone" optional, comma-separated list of the names of zones that the content should be added to. The only zones guaranteed to exist are head and script. Defaults to head.
id optional, identifier for the text being added with the ADDTOZONE call, to be used in the requires parameter of other ADDTOZONE calls. ADDTOZONE calls with the same id parameter will simply overwrite the earlier ADDTOZONE call.
requires="..." optional, comma separated string of ids of text within this zone that this content should follow when the zone is rendered.
text="..." optional, text to be added to the named zone, mutually exclusive with topic.
topic="..." optional, full qualified web.topic name that contains the text to be added, mutually exclusive with text. Defaults to %BASETOPIC%
section="..." optional, section of the topic to be added, defaults to the default section between STARTINCLUDE and STOPINCLUDE.
head and script. The head zone is rendered
as part of the HTML head section. It is the catch-all container for any content supposed
to be placed into the HTML head section, except Javascript, which is collected in the
script zone.
All Javascript must always be added to the script zone exclusively, in order to
grant ordering constraints among scripts are resolved properly. Never add Javascript to
the head zone -- never add non-Javascript content to the script zone.
Both zones are added to the HTML head section automatically just before the
closing </head> tag as if they were specified explicitly in the skin templates using:
<head>
...
%RENDERZONE{"head"}%
%RENDERZONE{"script"}%
</head>
You may create as many zones in addition to the standard head and script
zones as you like. For any non-standard zone specified in
ADDTOZONE you will also need to provide an appropriate
RENDERZONE.
Interesting use cases in wiki applications: sidebar zone to add widgets,
toolbar zone to add buttons icons
menu zone to add menu entries
id parameter.
An id identifier is unique within the zone that they are added to.
When the same id is used in multiple calls to ADDTOZONE the
last call will win, that is previous content of the same id will be overwritten.
ids in
the requires parameter. The requires parameter constraints the linear order
of content added to a zone. When a zone is rendered, all ordering constraints
expressed via requires are satisfied. Those ids not found in a zone don't
have any influence on the final ordering. Missing ids aren't considered an error
rather than an over-specified ordering problem.
{MergeHeadAndScriptZones} disabled (default) head and script zones are treated separately.
Even when head and script zones are treated separately, the head zone will
always be rendered before the script zone, unless otherwise specified using RENDERZONE explicitly.
So any content in the script zone that depends on content placed into
the head zone is satisfied intrinsicly as they are both rendered as specified above.
{MergeHeadAndScriptZones} enabled head and script zones are separate when adding to them,
but may be treated as merged when you call RENDERZONE if
there are any dependencies specified that only exist in the opposite zone. This
allows an ADDTOZONE{"head"...} to to successfully require an id that has
been added to script.
![]()
{MergeHeadAndScriptZones}is provided to maintain compatibility with legacy extensions that use ADDTOHEAD to add<script>markup and require content that is now in thescriptzone.{MergeHeadAndScriptZones}will be removed from a future version of Foswiki.
head content (and no inline Javascript) depends on
script content. Any such dependency will be ignored.
In real world application this isn't a problem as Javascript is never added
to the head zone or Javascript zone part of the script zone never really
depends on non-Javascript content part of the head zone.
HTML comment decoration which normally appears after each id's
content in the rendered HTML will contain a small informative text to aid
debugging.
Example
%ADDTOZONE{
"script"
text="
<script type='text/javascript'>
alert('test');
</script>"
requires="some-id-that-exists-in-script"
id="MY::TEST"
}%
Result
<script type='text/javascript'>
alert('test');
</script>
<!-- MY::TEST: requires= missing ids: some-id-that-exists-in-script -->
%ADDTOZONE{"script"...requires="library-id"}%
with the appropriate library-id to guarantee a correct load order. For example, jQuery code should be added as follows:
%JQREQUIRE{"shake"}%
%ADDTOZONE{
"script"
id="MyApp::ShakePart"
text="
<script type='text/javascript'>
jQuery('#something').shake(3, 10, 180);
</script>"
requires="JQUERYPLUGIN::SHAKE"
}%
where "MyApp::ShakePart" is a unique id to identify the text added to
script; and JQUERYPLUGIN::SHAKE signifies that the content added with that
identifier should appear beforehand.
%ADDTOZONE{"head"
id="MyCSS"
text="
<style type='text/css' media='all'>
@import url('%PUBURLPATH%/%SYSTEMWEB%/MyCSS/foo.css');
</style>"
}%
See also RENDERZONE,
Using ADDTOZONE,
Updating applications to use script zone
%ALLVARIABLES%
AQUA is one of the shortcut macros predefined in DefaultPreferences. See the section shortcut macros in that topic for a complete list of colors.%AQUA% aqua text %ENDCOLOR%Expands to: aqua text
![]()
%<color>%text must end with%ENDCOLOR%. If you want to switch from one color to another one you first need to end the active color with%ENDCOLOR%, e.g. write%RED% some text %ENDCOLOR% %GREEN% more text %ENDCOLOR%
%ATTACHURL%
http://www.foswiki.org/pub/System/VarATTACHURL
%ATTACHURL%/image.gif
%ATTACHURLPATH%
/pub/System/VarATTACHURLPATH
{AuthRealm} expert option in 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%
BLACK is one of the shortcut macros predefined in DefaultPreferences. See the section shortcut macros in that topic for a complete list of colors.%BLACK% black text %ENDCOLOR%Expands to: black text
![]()
%<color>%text must end with%ENDCOLOR%. If you want to switch from one color to another one you first need to end the active color with%ENDCOLOR%, e.g. write%RED% some text %ENDCOLOR% %GREEN% more text %ENDCOLOR%
BLUE is one of the shortcut macros predefined in DefaultPreferences. See the section shortcut macros in that topic for a complete list of colors.%BLUE% blue text %ENDCOLOR%Expands to: blue text
![]()
%<color>%text must end with%ENDCOLOR%. If you want to switch from one color to another one you first need to end the active color with%ENDCOLOR%, e.g. write%RED% some text %ENDCOLOR% %GREEN% more text %ENDCOLOR%
BROWN is one of the shortcut macros predefined in DefaultPreferences. See the section shortcut macros in that topic for a complete list of colors.%BROWN% brown text %ENDCOLOR%Expands to: brown text
![]()
%<color>%text must end with%ENDCOLOR%. If you want to switch from one color to another one you first need to end the active color with%ENDCOLOR%, e.g. write%RED% some text %ENDCOLOR% %GREEN% more text %ENDCOLOR%
| Parameter: | Description: | Default: |
|---|---|---|
| "text", value="text" | text to be put on this button | |
| accesskey | access key used for this button | |
| class | extra class: use foswikiRight or foswikiLeft to specify aligment; use cyan, red, green for different background colors; use simple for a non-3D button | |
| href | url of the click target | # |
| icon | icon to be put on the left; note, this can be any icon attached to the {IconSearchPath}; see also VarJQICON | |
| id | html id for this button | |
| onclick | javascript event triggered when clicking the button | |
| onmouseout | javascript event triggered when the pointer leaves the button | |
| onmouseover | javascript event triggered when the pointer hovers over the button | |
| target | topic to open when clicking on the button | |
| title | popup title displayed when hovering over the button | |
| type | type of action to be performed; available actions are
| button |
%BUTTON{
"%MAKETEXT{"Submit"}%"
click="confirm('Are your sure?')"
}%
%BUTTON{
"%MAKETEXT{"Cancel"}%"
icon="cross"
target="%WEB%.%TOPIC%"
}% %CLEAR%
%CLEAR% after the %BUTTON{...}% so that further content does not overlap with the button.
%CALC{"formula"}% macro is handled by the SpreadSheetPlugin. There are around 90 formulae, such as $ABS(), $EXACT(), $EXISTS(), $GET()/$SET(), $IF(), $LOG(), $LOWER(), $PERCENTILE(), $TIME(), $VALUE().
%CALC{"formula"}%
%CALC{"$SUM($ABOVE())"}% returns the sum of all cells above the current cell
%CALC{"$EXISTS(Web.SomeTopic)"}% returns 1 if the topic exists
%CALC{"$UPPER(Collaboration)"}% returns COLLABORATION
%COMMENT% without parameters shows a simple text box.
| Name | Description | Default |
|---|---|---|
type | This is the name of the template to use for this comment. Comment templates are defined in a Foswiki template - see Customisation, below. If this attribute is not defined, the type is whatever is defined by COMMENTPLUGIN_DEFAULT_TYPE, either in this topic or in your WebPreferences. | below |
default | Default text to put into the textarea of the prompt. | |
target | Name of the topic to add the comment to | the current topic |
location | Regular expression specifying the comment location in the target topic. Read carefully the CommentPlugin documentation! | |
mode | For compatibility with older versions only, synonymous with type | |
nonotify | Set to "on" to disable change notification for target topics | off |
noform | Set to "on" to disable the automatic form that encloses your comment block - remember to insert <form> tags yourself! See CommentPluginExamples:noform for an example. | off |
nopost | Set to "on" to disable insertion of the posted text into the topic. | off |
remove | Set to "on" to remove the comment prompt after the first time it is clicked. | off |
button | Button label text | Add comment |
%COVER% extends the skin search path. For instance, if SKIN is set to catskin, bearskin, and COVER is set to ruskin, the skin search path becomes ruskin, catskin, bearskin.
COVER setting can be overridden using the URL parameter cover, such as ?cover=ruskin
%COVER%
%COVER%
%DATE%
13 Feb 2012
When used in a template topic, this variable will be expanded when the template is used to create a new topic. See TemplateTopics#TemplateTopicsVars for details.
%GMTIME%
%DISPLAYTIME% OR %DISPLAYTIME{"format"}%
%DISPLAYTIME% The time is shown as hh:mm (24 hour clock) 13 Feb 2012 - 10:09
%DISPLAYTIME{"$hou:$min"}% expands to 10:09
EDITACTION preference setting lets you define the use of an editaction template instead of the standard edit. If EDITACTION is defined as text, then hide the form. If EDITACTION is defined as form hide the normal text area and only edit the form.
* Set EDITACTION = text|form
%EDITACTION% When
EDITACTIONis defined as text or form the Edit and Edit Raw buttons simply add;action=textor;action=formto the URL for the edit script. If you have defined anEDITACTIONpreference setting you can still edit the topic content or the form by removing the;action=formor;action=textfrom the edit URL in the browser and reload.
%EDITTABLE{}% macro is handled by the EditTablePlugin
%EDITTABLE{ attributes }%
| Attribute | Comment | Default |
|---|---|---|
header | Specify the header format of a new table like "|*Food*|*Drink*|". Useful to start a table with only a button | (no header) |
format | The format of one column when editing the table. A cell can be a text input field, or any of these edit field types: • Text input field (1 line): | text, <size>, <initial value> | • Textarea input field: | textarea, <rows>x<columns>, <initial value> | • Drop down box: | select, <size>, <option 1>, <option 2>, etc* | * only one item can be selected • Radio buttons: | radio, <size*>, <option 1>, <option 2>, etc | * size indicates the number of buttons per line in edit mode • Checkboxes: | checkbox, <size*>, <option 1>, <option 2>, etc | * size indicates the number of checkboxes per line in edit mode • Fixed label: | label, 0, <label text> | • Row number: | row, <offset> | • Date: | date, <size>, <initial value>, <DHTML date format> | (see Date Field Type) | "text, 16" for all cells |
changerows | Rows can be added and removed if "on" Rows can be added but not removed if "add" Rows cannot be added or removed if "off" | CHANGEROWS plugin setting |
quietsave | Quiet Save button is shown if "on", hidden if "off" | QUIETSAVE plugin setting |
include | Other topic defining the EDITTABLE parameters. The first %EDITTABLE% in the topic is used. This is useful if you have many topics with the same table format and you want to update the format in one place. Use topic or web.topic notation. | (none) |
helptopic | Topic name containing help text shown below the table when editing a table. The %STARTINCLUDE% and %STOPINCLUDE% macros can be used in the topic to specify what is shown. | (no help text) |
headerislabel | Table header cells are read-only (labels) if "on"; header cells can be edited if "off" or "0" | "on" |
editbutton | Set edit button text, e.g. "Edit this table"; set button image with alt text, e.g. "Edit table, %PUBURL%/%SYSTEMWEB%/DocumentGraphics/edittopic.gif"; hide edit button at the end of the table with "hide" (Note: Button is automatically hidden if an edit button is present in a cell) | EDITBUTTON plugin setting |
buttonrow | Set to top to put the edit buttons above the table. | bottom |
javascriptinterface | Use javascript to directly move and delete row without page refresh. Enable with "on", disable with "off". | JAVASCRIPTINTERFACE plugin setting |
%EDITTABLE{ format="| text, 20 | select, 1, one, two, three |" changerows="on" }%
| *Name* | *Type* |
| Foo | two |
Produces:
"string", by mapping characters (or sequences of characters) to an alternative character (or sequence of characters). This macro can be used to encode strings for use in URLs, to encode to HTML entities, to protect quotes, and for as many other uses as you can imagine.
%ENCODE{"string"}%
| Parameter | Description | Default |
|---|---|---|
"string" | String to encode | "" (empty string) |
type="encodingname" | Use a predefined encoding (see below). | Default is 'url'. Parameter type not be used if old or new are given. |
old="tokenlist" | Comma-separated list of tokens to replace. Tokens are normally single characters, but can also be sequences of characters. The standard format tokens may be used in this list. Each token must be unique - you cannot list the same token twice. | May not be used with type; required if new is used |
new="tokenlist" | comma-separated list of replacement tokens. The elements in this list match 1:1 with the elements in the old list. Again, the standard format tokens may be used. An empty element in the new list will result in the corresponding token in the old list being deleted from the string. If the new list is shorter than the old list it will be extended to the same length using the empty element. Tokens do not have to be unique.
| May not be used with type; required if old is used |
ENCODE is called with no optional parameters (e.g. %ENCODE{"string"}%) then the default type="url" encoding will be used.
type parameter encodes the following "special characters" "\n") and carriage return ("\r")
"<", ">", "&", single quote (') and double quote (")
"%", "[", "]", "@", "_", "*", "=" and "|"
type="entity" Encode special characters into HTML entities, like a double quote into ". Does not encode \n (newline).
type="html" As type="entity" except it also encodes \n (newline)
type="safe" Encode just the characters '"<>% into HTML entities.
type="quotes" Escapes double quotes with backslashes (\"), does not change any other characters
type="url" Encode special characters for use in URL parameters, like a double quote into %22
%ENCODE{"spaced name"}%= expands to
spaced%20name
%ENCODE{"| Blah | | More blah |" old="|,$n" new="|,<br />"}% expands to
| Blah | | More blah |
- this encoding is useful to protect special TML characters in tables.
%ENCODE{"10xx1x01x" old="1,x,0" new="A,,B"}% expands to
ABABA
%ENCODE{"1,2" old="$comma" new=";"}% expands to
1;2
<input type="text" name="address" value="%ENCODE{ "any text" type="entity" }%" />
ENCODE can be used to filter user input from URL parameters and similar to help protect against cross-site scripting. The safest approach is to use type="entity". This can however prevent an application from fully working. You can alternatively use type="safe" which encodes only the characters '"<>% into HTML entities. When ENCODE is passing a string inside another macro always use double quotes ("") type="quote". For maximum protection against cross-site scripting you are advised to install the Foswiki:Extensions.SafeWikiPlugin.
%SEARCH{ "%ENCODE{ "string with "quotes"" type="quotes" }%" noheader="on" }% When using
oldandnew, be aware that the results of applying earlier tokens are not processed again using later tokens. For example:%ENCODE{"A" old="A,B" new="B,C"}% will result in 'B' (not 'C'), %ENCODE{"asd" old="as,d" new="d,f"}% will yield 'df', and %ENCODE{"A" old="A,AA" new="AA,B"}% will give 'AA' and. %ENCODE{"asdf" old="a,asdf" new="a,2"}% will give 'asdf'
ENDCOLOR is one of the shortcut macros predefined in DefaultPreferences. See the section shortcut macros in that topic for a complete list of shortcuts.%GREEN% green text %ENDCOLOR%Expands to: green text
![]()
%<color>%text must end with%ENDCOLOR%. If you want to switch from one color to another one you first need to end the active color with%ENDCOLOR%, e.g. write%RED% some text %ENDCOLOR% %GREEN% more text %ENDCOLOR%
%ENDSECTION{"name"}%
%ENDSECTION{type="include"}%
| Parameter: | Description: |
|---|---|
"name" | Name of the section. |
type="..." | Type of the section being terminated; supported types "section", "include", "expandvariables", "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.
%ENDTWISTY%
%ENDTWISTYTOGGLE% %ENDTWISTYTOGGLE%
{AccessibleENV} in the Security Settings/Miscellaneous section of configure can be displayed. Any other variable will just be shown as an empty string, irrespective of its real value.
%ENV{MOD_PERL}% displays as: not set
not set.
%EXAMPLETAG{}% variable is handled by the ExamplePlugin
%EXAMPLETAG{"text" format="..."}%
text="..." - example text.
format="..." - format of report.
%EXAMPLETAG{"hello" format="| $topic: $summary |"}%
expression as if they were used in the topic topictoexpandin. The viewer must have VIEW access to topictoexpandin for this to work. All the standard formatting macros can be used in expression, such as $percent and $quot.
EXPAND can be useful when you want to pick up the value of macros defined in another topic. For example, you might want to define a set of preferences in one topic, but pick up their value in another topic (this is very useful when building reusable applications). In this case you can write:
* Set MYPREFERENCE = valuein "SettingsTopic" and then, in "MyTopic", write:
%EXPAND{"$percentMYPREFERENCE$percent" scope="SettingsTopic"}%
Of course we can also write:
%EXPAND{"$percentMYPREFERENCE$percent" scope="%OTHERTOPIC%"}%
which lets us select which other topic to get the preference value from.
Additional parameters can be passed to the macro being expanded using the standard macro syntax in the name of the macro; for example,
%EXPAND{"$percentMYPREFERENCE{$quotdefault$quot param=$quotvalue$quot}" scope="SettingsTopic"}%
Notes: EXPAND is not very efficient, and should be used sparingly.
scope="Theotherweb.%WEBPREFSTOPIC%"
%FAILEDPLUGINS%
%FORMAT{"list"}%
| Parameter: | Description: | Default: |
|---|---|---|
"one, two, three" | The list to be expanded into the format. Required. Currently only two types of list data are supported; topic names (type="topic") and plain strings (type="string"). | "" |
format="..." | Format string; see Supported formatting tokens for possible values. | "" |
header="..." | Text to come before the formatted output | "" |
footer="..." | Text to come after the formatted output | "" |
separator="n" | Separator between formatted elements | "$n" |
type="" | Treat input list as either topic or string | "topic" |
%FORMAT{"one,two,three" type="string" format=" * $item"}%
%FORMAT{"%SKIN%"
header="the Skin setting is evaluated in this order:"
format=" 1 =$topic="
footer=" 1 =default="
}%
type="topic" (the default) the format string can contain any of the
topic-specific format tokens
specified in FormattedSearch ($web, $topic, $parent, $text, $locked,
$date, $isodate, $index, $item, $rev, $username, $wikiname, $wikiusername,
$createdate, $createusername, $createwikiname, $createwikiusername,
$summary, $changes, $formname, $formfield, $pattern, $count,
$ntopics, $nhits, $pager).
In addition, the macro supports all the standard format tokens.
If type="string" then the comma separated list is treated as a list of
strings. In this case, the format tokens $index and $item will return
the position of the item in the list (1-based), and the item itself,
respectively. Note that a comma can be embedded in the data using the standard
formatting token $comma.
The FORMAT macro is currently only of use in formatting lists of topics,
or of simple strings. It will be extended in future releases to add the
capability to render other object types.
For more sophisticated handling of string lists, consider installing Foswiki:Extensions.FilterPlugin.
%FORMFIELD{"fieldname"}%
| Parameter: | Description: | Default: |
|---|---|---|
"fieldname" | The name of a Data 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 $name expands to the field name, $title to the field title, $form to the name of the form the field is in. The standard format tokens are also expanded. | "$value" |
default="..." | Text shown if the field is defined in the topic, but the field value is empty. For example, a text field for which all the content has been deleted. | "" |
alttext="..." | Text shown if the field is not defined in the topic (even if it is specified in the form definition). For example, this is used when a field exists in the form definition, but the referring topic hasn't been edited since it was added. | "" |
rev="n" | Specifiy a revision of the topic. If not specified, defaults to the most recent rev (or the viewed rev if viewing an old rev of the same topic) |
%FORMFIELD{"ProjectName"
topic="Projects.SushiProject"
default="(no project name given)"
alttext="ProjectName field not found in form"
}%
%GMTIME% OR %GMTIME{"format"}%
%GMTIME% uses the default date format defined by the {DefaultDateFormat} setting in configure | Token: | Unit: | Example |
|---|---|---|
$seconds | seconds | 59 |
$minutes | minutes | 59 |
$hours | hours | 23 |
$day | day of month | 31 |
$wday | day of the Week (Sun, Mon, Tue, Wed, Thu, Fri, Sat) | Thu |
$dow | day of the week (Sun = 0) | 2 |
$week | number of week in year (ISO 8601) | 34 |
$month | short name of month | Dec |
$mo | 2 digit month | 12 |
$year | 4 digit year | 1999 |
$ye | 2 digit year | 99 |
$tz | either "GMT" (if set to gmtime), or "Local" (if set to servertime) | GMT |
$iso | ISO format timestamp | 2012-02-13T10:09:31Z |
$rcs | RCS format timestamp | 2012/02/13 10:09:31 |
$http | E-mail & http format timestamp | Mon, 13 Feb 2012 10:09:31 GMT |
$epoch | Number of seconds since 00:00 on 1st January, 1970 | 1329127771 |
%GMTIME{"$day $month, $year - $hour:$min:$sec"}% expands to 13 Feb, 2012 - 10:09:31
When used in a template topic, this macro will be expanded when the template is used to create a new topic. See TemplateTopics#TemplateTopicsVars for details.
GRAY is one of the shortcut macros predefined in DefaultPreferences. See the section shortcut macros in that topic for a complete list of colors.%GRAY% gray text %ENDCOLOR%Expands to: gray text
![]()
%<color>%text must end with%ENDCOLOR%. If you want to switch from one color to another one you first need to end the active color with%ENDCOLOR%, e.g. write%RED% some text %ENDCOLOR% %GREEN% more text %ENDCOLOR%
GREEN is one of the shortcut macros predefined in DefaultPreferences. See the section shortcut macros in that topic for a complete list of colors.%GREEN% green text %ENDCOLOR%Expands to: green text
![]()
%<color>%text must end with%ENDCOLOR%. If you want to switch from one color to another one you first need to end the active color with%ENDCOLOR%, e.g. write%RED% some text %ENDCOLOR% %GREEN% more text %ENDCOLOR%
%GROUPINFO% %GROUPINFO{"groupname"}% format | Format of a single user or group in the list.
| $name for groups list, $wikiusername for users list |
separator | separator between items in the list | , |
header | Header for the list | '' |
footer | Footer for the list | '' |
zeroresults | If set, and there are no Groups or Members that can be shown, the header and footer are suppressed, and this text is output | undefined |
show | filter the output list of Groups - can be set to all, allowschange, denychange, allowschange(UserWikiName), denychange(UserWikiName) | all |
expand | Set false if users should not be expanded from nested groups. Default behavior is to expand all nested groups into a flat list of users. | 1 |
limit | If set, limits the number of results to this | infinity |
limited | If limit is set, and the list is truncated, this text will be added at the end of the list | '' |
Note: GROUPINFO will not list members that are hidden from the current authenticated user. If the current user does not have VIEW authority for a user's topic, then the user will not be shown as a group member.
%GROUPS%
%HISTORY{}% macro is handled by the HistoryPlugin
%HISTORY{ attributes }%
| Argument | Description | Default value |
|---|---|---|
| none | Default layout: a simple list of topic revisions using the default format (see below) | |
"format" or format="string" |
Format of one line, may include any variable which is supported by macro REVINFO | "r$rev - $date - $wikiusername" |
topic="topic" |
Topic name, can be in web.topic format |
current topic |
web="web" |
Web name | current web |
versions="number or range" |
Number or range (format: from..to). Examples: To get version 2, write: versions="2" To get version 2 to 3, write: versions="2..3" To get version 2 to the latest, write: versions="2.." To get all versions up to version 5, write: versions="..5" To get all versions up to but not including the latest, write: versions="..-1" To get the versions from 1 to 5 in reverse order, write: versions="5..1" |
all versions in the order latest to first |
header="text" |
Text to print before the list. May contain the tokens $next and $previous which will be evaluated if there are newer or older revisions available for the topic that are not listed according to versions (or rev1, rev2, nrev). These tokens take the syntax $next{'some text' url='url'} (the same for $previous). 'some text' is the text which should be printed, 'url' is the url for the corresponding link. The tokens $rev1, $rev2, $nrev in 'text' or 'url' will be replaced by appropriate values for the next or previous block of revisions. See the attached oopshistory.tmpl for an example of how to use this. |
"$next" |
footer="text" |
Text to print after the list. May contain the tokens $next and $previous (see header) |
"$previous" |
| Argument | Description | Default value |
|---|---|---|
nrev="number" |
Number of revisions to show. Ignored if versions is specified, or if both rev1 and rev2 are specified. |
10 |
rev2="number" |
Newest revision to show | rev1+nrev if rev1 is specified, latest revision otherwise |
rev1="number" |
Oldest revision to show | rev2-nrev |
reverse="boolean" |
Show newest revisions first, if on |
"on" |
%HISTORY% on the page. If more than one %HISTORY% is used on the same page, the values from the last one will be used.
%HISTORY_REV1%: Oldest revision from the printed history
%HISTORY_REV2%: Latest revision from the printed history
%HISTORY_NREV%: Number of the printed revisions
%HISTORY_MAXREV%: Latest available revision of the topic
%HOMETOPIC%
WebHome, renders as WebHome
%HTTP%
%HTTP{"Header-name"}%
%HTTP% | |
%HTTP{"Accept-language"}% | en-us,en;q=0.5 |
%HTTP{"User-Agent"}% | CCBot/1.0 (+http://www.commoncrawl.org/bot.html) |
You can see the HTTP headers your browser sends to the server on a number of sites e.g. http://www.ericgiguere.com/tools/http-header-viewer.html
%HTTP_HOST%
www.foswiki.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"}%
default parameter will be used (and if that fails, the 'else' icon will be used)
%ICON{"flag-gray"}% displays as %ICON{"pdf"}% displays as %ICON{"docx" default="doc"}% displays as %ICON{"smile.pdf"}% displays as %ICON{"/dont/you/dare/smile.pdf"}% returns %ICON{"data.unknown" alt="Unknown file type"}% displays as %ICON{"data.unknown"}% displays as %ICON{"http://trunk.foswiki.org/pub/System/DocumentGraphics/xsl.gif"}% displays 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 http://www.foswiki.org/pub/System/DocumentGraphics/arrowbright.png
%ICONURL{"novel.pdf"}% returns http://www.foswiki.org/pub/System/DocumentGraphics/pdf.png
%ICONURL{"/queen/boheme.mp3"}% returns http://www.foswiki.org/pub/System/DocumentGraphics/mp3.png
%ICONURLPATH{"name"}%
%ICONURLPATH{"locktopic"}% returns /pub/System/DocumentGraphics/locktopic.png
%ICONURLPATH{"eggysmell.xml"}% returns /pub/System/DocumentGraphics/xml.png
%ICONURLPATH{"/doc/xhtml.xsl"}% returns /pub/System/DocumentGraphics/xsl.png
%IF{"CONDITION" then="THEN" else="ELSE"}% shows"THEN" if "CONDITION" evaluates to TRUE, otherwise "ELSE" will be shown
%IF{"defined FUNFACTOR"
then="FUNFACTOR is defined"
else="FUNFACTOR is not defined"
}% renders as FUNFACTOR is not defined
%INCLUDE{"topic" ...}% (See also the URL form of %INCLUDE%)
| Parameter: | Description: | Default: |
|---|---|---|
"SomeTopic" | The name of a topic located in the current web, i.e. %INCLUDE{"WebNotify"}% | |
"Web.Topic" | A topic in another web, i.e. %INCLUDE{"System.SiteMap"}% | |
pattern="..." | Include a subset of a topic or a web page. Specify a RegularExpression that contains the text you want to keep in parenthesis, e.g. pattern="(from here.*?to here)". IncludeTopicsAndWebPages has more. | none |
rev="2" | Include a previous topic revision; N/A for URLs | top revision |
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 macros. Nothing is shown if the named section does not exists. section="" is equivalent to not specifying a section | |
PARONE="val 1" | Any other parameter will be defined as a macro within the scope of the included topic. The example parameters on the left will result in %PARONE% and %PARTWO% being defined within the included topic. |
%INCLUDE{"http://..." ...}% (See also the topic form of %INCLUDE%)
| Parameter: | Description: | Default: |
|---|---|---|
"http://..." | A full qualified URL, i.e. %INCLUDE{"http://foswiki.org:80/index.html"}%. Supported content types are text/html and text/plain.
| |
pattern="..." | Include a subset of a topic or a web page. Specify a RegularExpression that contains the text you want to keep in parenthesis, e.g. pattern="(from here.*?to here)". IncludeTopicsAndWebPages has more. | none |
raw="on" | When a page is included, normally Foswiki will process it, doing the following: 1) Alter relative links to point back to originating host, 2) Remove some basic HTML tags (html, head, body, script) and finally 3) Remove newlines from HTML tags spanning multiple lines. If you prefer to include exactly what is in the source of the originating page set this to on. raw="on" is short for disableremoveheaders="on", disableremovescript="on", disableremovebody="on", disablecompresstags="on" and disablerewriteurls="on". | disabled |
literal="on" | While using the raw option will indeed include the raw content, the included content will still be processed and rendered like regular topic content. To disable parsing of the included content, set the literal option to "on". | disabled |
disableremoveheaders="on" | Bypass stripping headers from included HTML (everything until first </head> tag) | disabled |
disableremovescript="on" | Bypass stripping all <script> tags from included HTML | disabled |
disableremovebody="on" | Bypass stripping the </body> tag and everything around over and below it | disabled |
disablecompresstags="on" | Bypass replacing newlines in HTML tags with spaces. This compression step rewrites unmatched <'s into < entities unless bypassed | disabled |
disablerewriteurls="on" | Bypass rewriting relative URLs into absolute ones | disabled |
warn="off" | Warn if URL include fails: Fail silently (if off); output default warning (if set to on); else, output specific text (use $topic for topic name) appended with the http error information. | %INCLUDEWARNING% preferences setting |
JavaScript in included webpages is filtered out as a security precaution per default (disable filter with
disableremovescriptparameter)Foswiki by default is configured to deny URL format includes.
%INCLUDE{"doc:Foswiki::Func" ...}%
| Parameter: | Description: | Default: |
|---|---|---|
"doc:..." | A full qualified Foswiki module, i.e. %INCLUDE{"doc:Foswiki::Func"}%. The module must be found on the Foswiki lib path | |
level="1" | Override the root heading level to the specified number | |
pattern="..." | Include a subset of the module. Specify a RegularExpression that contains the text you want to keep in parenthesis, e.g. pattern="(from here.*?to here)". IncludeTopicsAndWebPages has more. | none |
%TOPIC% in case there is no include
INCLUDEs, INCLUDINGTOPIC is set to the topic directly INCLUDing this one, NOT the topic that has been requested by the user (which is set in BASETOPIC) While this Macro may appear to work, unless you require the subtle difference between
INCLUDINGTOPICandBASETOPIC, you probably should useBASETOPIC
%INCLUDINGTOPIC%
%WEB% if there is no INCLUDE.
INCLUDEs, INCLUDINGWEB is set to the topic directly INCLUDing this one, NOT the web that has been requested by the user (which is set in BASEWEB) While this Macro may appear to work, unless you require the subtle difference between
INCLUDINGWEBandBASEWEB, you probably should useBASEWEB
%INCLUDINGWEB%
{JQueryPlugin}{IconSearchPath} and defaults to FamFamFamSilkIcons, FamFamFamSilkCompanion1Icons, FamFamFamFlagIcons, FamFamFamMiniIcons, FamFamFamMintIcons'. The named icon will be picked found first on this path of topics where icons are attached to. The JQICON leverages the general icon loading mechanism as implemented by the JQueryPlugin and used by BUTTON as well.
| Parameter: | Description: | Default: |
|---|---|---|
| "name" | name of the icon to display | |
| class | additional css class for the img tag | |
| alt | alt attribute | |
| title | title attribute | |
| format | format string used to render the icon; known variables to be used in the format string are:
| <img src='$iconPath' class='$iconClass' $iconAlt$iconTitle/> |
%JQICON{"tick" alt="alternative content" title="this is a tick icon"}%
%JQICON{"cross"}%
%JQICON{"disk"}%
%JQICON{"star"}%
%JQICON{"lightbulb"}%
%JQICON{"camera"}%
%JQICON{"date"}%
Produces: %JQICON{"name" format="$iconPath"}%
/pub/System/FamFamFamSilkIcons/tick.png
| Parameter: | Description: | Default: |
|---|---|---|
| "plugins" | this is a regular expression that the plugin identifier must match to be displayed | |
| format | format string to render information for each matching plugin; known variables to be used in the format string are:
| 1 <a href="$homepage">$name</a> $active $version $author |
| header | header string prepended to the output; empty when no plugin matches | |
| footer | footer string appended to the output; empty when no plugin matches | |
| separator | separator put between each plugin rendered in a row | $n |
| tagformat | format string to render a link to any tag documentation a plugin implements | [[%SYSTEMWEB%.Var$tag][$tag]] |
%JQPLUGINS{
"treeview|slimbox"
header=" * JQuery Plugins:$n"
format=" * [[$documentation][$name]] v$version was developed by [[$homepage][$author]]"
}% Produces:
| Parameter: | Description: | Default: |
|---|---|---|
| "plugin[, plugin, plugin]" | list of plugins to be loaded | |
| warn | (on/off) allows you to switch off warnings when a plugin was not found | on |
$Foswiki::cfg{JQueryPlugin}{JQueryTheme} and defaults to base. Use configure to change this site wide. Use JQTHEME if you decide to use a different theme on the current page.
| Parameter: | Description: | Default: |
|---|---|---|
| "name" | name of theme: JQueryPlugin knows the following themes base, lightness, redmod, smoothness; additional themes maybe created using the themeroller and installed to /pub/System/JQueryPlugin/$name | base |
lang attribute of generated HTML pages lang attribute is defined like this: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="%LANG%" lang="%LANG%">
{Site}{Locale}
LANG with LANGUAGE
%LANG%
en_US
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). These are the languages in which the user interface is available.
%LANGUAGES{...}%
| Parameter: | Description: | Default: |
|---|---|---|
format | format for each item. See below for format tokens available in the format string. | " * $langname" |
separator | separator between items. | "\n" (newline) |
marker="selected" | Text for $marker if the item matches selection | "selected" |
selection="%LANGUAGE%" | Current language to be selected in list | (none) |
format tokens: | Token | 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
LIME is one of the shortcut macros predefined in DefaultPreferences. See the section shortcut macros in that topic for a complete list of colors.%LIME% lime text %ENDCOLOR%Expands to: lime text
![]()
%<color>%text must end with%ENDCOLOR%. If you want to switch from one color to another one you first need to end the active color with%ENDCOLOR%, e.g. write%RED% some text %ENDCOLOR% %GREEN% more text %ENDCOLOR%
%LOCALSITEPREFS%
Main.SitePreferences, renders as Main.SitePreferences
%LOGIN%
You are already logged out, so
%LOGOUTexpands to an empty string
%LOGOUT%
Deprecated. Please use
%USERSWEB%instead.
MAKETEXT macro are automatically mapped to the
current user's selected language via locale/*.po translation files. %MAKETEXT{"string" args="..."}%
| Parameter | Description | Default |
|---|---|---|
"text" or string="text" | The text to be displayed (the translatable string). | none |
args="param1, param2" | a comma-separated list of arguments to be interpolated in the string, replacing [_N] placeholders in it. | none |
%MAKETEXT{string="Notes:"}%
expands to:
Notes:
%MAKETEXT{
"If you have any questions, please contact [_1]."
args="%WIKIWEBMASTER%"
}%
expands to:
If you have any questions, please contact webmaster@foswiki.org.
%MAKETEXT{
"Did you want to [[[_1]][reset [_2]'s password]]?"
args="%SYSTEMWEB%.ResetPassword,%WIKIUSERNAME%"
}%
expands to:
Did you want to [[System.ResetPassword][reset Main.WikiGuest's password]]?
&) followed by one ascii alphabetic character (a...z, A...Z) in the translatable string will be expanded to an access key string. For example, &X will expand to <span class='foswikiAccessKey'>X</span>. If you want to write an actual ampersand, either follow it with a non-alphabetic character or write two consecutive ampersands (&&).
_) are reserved. You cannot use translatable phrases starting with an underscore.
%MACROS% inside the translatable strings as they will be expanded before the %MAKETEXT{...}% itself is handled. You can, however, use macros in the args, as shown in the examples above.
.po translation file for the current user's selected language.
MAROON is one of the shortcut macros predefined in DefaultPreferences. See the section shortcut macros in that topic for a complete list of colors.%MAROON% maroon text %ENDCOLOR%Expands to: maroon text
![]()
%<color>%text must end with%ENDCOLOR%. If you want to switch from one color to another one you first need to end the active color with%ENDCOLOR%, e.g. write%RED% some text %ENDCOLOR% %GREEN% more text %ENDCOLOR%
%META{ "item" ...}%
Parameters: "form" - generates the table showing the form fields. See Form Definition.
"attachments" - generate a table of attachments all="on" to show hidden attachments.
title="..." to show a title - only if attachments are displayed.
template="..." to use a custom template for the rendering of attachments; default attachtables is used.
"moved" - if a topic was moved or renamed, generates a message with details and a revert link prefix="...": Prefix that goes before the moved message, but only if the message is generated, default "".
suffix="...": Prefix that goes after the moved message, but only if the message is generated, default "".
"parent" - display details of ancestor topics dontrecurse="on": By default recurses up tree, this has some cost. Equivalent to depth=1
depth="...": Return only the specified ancestor.
nowebhome="on": Suppress WebHome.
format="...": Format string used to display each parent topic where $web expands to the web name, and $topic expands to the topic name; default: "[[$web.$topic][$topic]]"
separator="...": Separator between parents; default " > "
prefix="...": Prefix that goes before parents, but only if there are parents, default "".
suffix="...": Suffix, only appears if there are parents; default "".
"formfield" - display the value of a single form field name="...": name of the field.
newline="...": by default, each newline character will be rewritten to <br /> to allow metadata that contains newlines to be used in tables, etc. $n indicates a newline character.
bar="...": by default, each vertical bar is rewritten to an HTML entity so as to not be mistaken for a table separator.
Related: QUERYUse of
"formfield"is deprecated in favour of the much more powerfulQUERYmacro.
![]()
METASEARCHis deprecated in favour of the new and much more powerful query type search. See SEARCH and QuerySearch.
%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 | All topics in a web |
name | form field to search, for field type searches. May be a regular expression (see SEARCH). | |
value | form field value, for field type searches. May be a regular expression (see SEARCH). | |
title="Title" | Text that is prefixed to any search results | empty |
format="..." | Custom format results. Supports same format strings as SEARCH. See FormattedSearch for usage & examples | Results in table |
default="none" | Default text shown if no search hit | Empty |
%METASEARCH{
type="topicmoved"
web="%WEB%"
topic="%TOPIC%"
title="This topic used to exist and was moved to: "
}% You may want to use this in WebTopicViewTemplate and WebTopicNonWikiTemplate:
%METASEARCH{
type="parent"
web="%WEB%"
topic="%TOPIC%"
title="Children: "
}%
%METASEARCH{
type="field"
name="Country"
value="China"
}%
NAVY is one of the shortcut macros predefined in DefaultPreferences. See the section shortcut macros in that topic for a complete list of colors.%NAVY% navy text %ENDCOLOR%Expands to: navy text
![]()
%<color>%text must end with%ENDCOLOR%. If you want to switch from one color to another one you first need to end the active color with%ENDCOLOR%, e.g. write%RED% some text %ENDCOLOR% %GREEN% more text %ENDCOLOR%
%NOP% %NOP{...}% deprecated This is deprecated. Do not use it. Use
%STARTSECTION{type="templateonly"}%..%ENDSECTION{type="templateonly"}%instead (see TemplateTopics for more details).
%NOTIFYTOPIC%
WebNotify, renders as WebNotify
OLIVE is one of the shortcut macros predefined in DefaultPreferences. See the section shortcut macros in that topic for a complete list of colors.%OLIVE% olive text %ENDCOLOR%Expands to: olive text
![]()
%<color>%text must end with%ENDCOLOR%. If you want to switch from one color to another one you first need to end the active color with%ENDCOLOR%, e.g. write%RED% some text %ENDCOLOR% %GREEN% more text %ENDCOLOR%
ORANGE is one of the shortcut macros predefined in DefaultPreferences. See the section shortcut macros in that topic for a complete list of colors.%ORANGE% orange text %ENDCOLOR%Expands to: orange text
![]()
%<color>%text must end with%ENDCOLOR%. If you want to switch from one color to another one you first need to end the active color with%ENDCOLOR%, e.g. write%RED% some text %ENDCOLOR% %GREEN% more text %ENDCOLOR%
PINK is one of the shortcut macros predefined in DefaultPreferences. See the section shortcut macros in that topic for a complete list of colors.%PINK% pink text %ENDCOLOR%Expands to: pink text
![]()
%<color>%text must end with%ENDCOLOR%. If you want to switch from one color to another one you first need to end the active color with%ENDCOLOR%, e.g. write%RED% some text %ENDCOLOR% %GREEN% more text %ENDCOLOR%
%PLUGINDESCRIPTIONS%
as icons %PLUGINVERSION{"name"}% to get the version of a specific plugin
%PLUGINVERSION{"InterwikiPlugin"}% expands to $Rev: 12957 (2011-10-31) $
%PLUGINVERSION% to get the version of the API
2.1
| Parameter: | Description: | Default: |
|---|---|---|
"topic", topic="topic", topic="web.topic" | Topic to open | |
url | URL to open (if topic is not used) | |
label | Link label | the topic or the url |
template | View template to call when viewing a topic; not used for URLs | "viewplain" |
width | Width of window | "600" |
height | Height of window | "480" |
toolbar | Show toolbars? | "0" |
scrollbars | Show scrollbars? | "1" |
status | Show status? | "1" |
location | Show location bar? | "0" |
resizable | Is the window resizable? | "1" |
left | Left position | "0" |
top | Top position | "0" |
center | Center the window? | "0" |
menubar | Show menubar? | "0" |
createnew | Create a new window for each popup? | "1" |
%POPUPWINDOW{"CompleteDocumentation" label="Open this topic in a new window"}% Generates: Open this topic in a new window
%POPUPWINDOW{url="http://foswiki.org"}% Generates: http://