Webs Book Compare GPCE06 Gmt Gpce Gpce04 Gpce05 IFIPWG211 IPA06 Main Octave PEPM07 PEPM08 PHP Sandbox Sdf Stratego Sts TWiki Tiger Tools Transform Variability default porn free porn
This page contains all documentation topics as one long, complete reference sheet.
Doubleclick anywhere to return to the top of the page.
Note - if you are reading this at twiki.org, then you are reading about the most recent code under development.
If you want to read about the features on your local TWiki, then you should read the documentation there!
Note: Read the most up to date version of this document at http://TWiki.org/cgi-bin/view/TWiki/TWikiDocumentation
Related Topics: TWikiSite, TWikiHistory, TWikiPlannedFeatures, TWikiEnhancementRequests
Server and client requirements for TWiki 01-Sep-2004
Low client and server requirements are core features that keep TWiki widely deployable, particularly across a range of browser platforms and versions.
TWiki is written in Perl 5, uses a number of shell commands, and requires RCS (Revision Control System), a GNU Free Software package. TWiki is developed in a basic Linux/Apache environment. It also works with Microsoft Windows, and should have no problem on any other platform that meets the requirements.
Resource | Required Server Environment * |
---|---|
Perl | 5.005_03 or higher (5.6.1 recommended, 5.8.x does work in most cases, but see TWiki:Codev.IssuesWithPerl5dot8) |
Non-standard Perl modules | • Unix: Net::SMTP (or sendmail ) • Windows: Net::SMTP , MIME::Base64 , Digest::SHA1 • Internationalisation: Unicode::MapUTF8 (only for non-ISO-8859-1 sites using TWiki:Codev.EncodeURLsWithUTF8 with Perl 5.6 or lower) |
RCS | 5.7 or higher (including GNU diff ) Optional, but the all-Perl RCS replacement is not currently recommended for live sites - see TWiki:Codev.RcsLite |
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 |
Other external programs | fgrep, egrep |
Cron/scheduler | • Unix: cron • Windows: cron equivalents |
Web server | Apache 1.3 is well supported; Apache 2.0 is not recommended yet (see TWiki:Codev.IssuesWithApache2dot0). For other servers, CGI support, authentication, extended path info required; also, the register script is likely to need significant changes |
* Current documentation mainly covers Linux and Apache installations. See WindowsInstallCookbook for a Windows installation guide. See TWiki:Codev.TWikiOn for help with installation on various platforms including Unix, MacOS X, Apache mod_perl
, web hosts, etc.
The TWiki standard installation has extremely low browser requirements:
You can easily add functionality, by customizing TWikiTemplates, for one, while tailoring the browser requirements to your situation.
-- TWiki:Main.MikeMannix - 12 Jan 2002
-- TWiki:Main.PeterThoeny - 15 Aug 2004
Installation instructions for the TWiki 01-Sep-2004 production release.
If you are reading this on your own TWiki installation, please get the latest installation guide (TWiki:TWiki.TWikiInstallationGuide), as this often has important updates to resolve installation issues.
These installation steps are based on the Apache web server on Linux. TWiki runs on other web servers and Unix systems, and should be fine with any web server and OS that meet the system requirements. Official documentation for platforms other than Linux is somewhat limited, so please check the topics listed below, they include some important tips for HP-UX, Solaris, OS/390, and many other platforms.
diff
and grep
tools if in doubt!) and TWiki:Codev/TWikiOnLinux.
Download the TWiki 01-Sep-2004 distribution in Unix ZIP format from http://TWiki.org/download.html. Please review the AdminSkillsAssumptions before you install TWiki.
NOTE: If you don't have access to your Web server configuration files - for example, if you're installing on an ISP-hosted account, or you don't have administrator privileges on your intranet server - use the alternative Step 1 instead.
/home/httpd/twiki
and unzip the TWiki distribution into this directory.
twiki/bin
directory of TWiki must be set as a cgi-bin directory. Add /home/httpd/twiki/bin
to file httpd.conf
(typcially located in /etc/httpd/
) with only ExecCGI
option.
twiki/pub
directory of TWiki must be set so that it is visible as a URL. Add /home/httpd/twiki
to file httpd.conf
with normal access options (copy from /home/httpd/html
).
ScriptAlias
for /twiki/bin
and Alias
for /twiki
to file httpd.conf
.
ScriptAlias
must come before the Alias
, otherwise, Apache will fail to correctly set up /twiki/bin/
, by treating it as just another subdirectory of the /twiki/
alias.
twiki/data
and twiki/templates
directories should be set so that they are not visible as URLs. Add them to httpd.conf
with deny from all
.
Examplehttpd.conf
entries:ScriptAlias /twiki/bin/ "/home/httpd/twiki/bin/" Alias /twiki/ "/home/httpd/twiki/" <Directory "/home/httpd/twiki/bin"> Options +ExecCGI SetHandler cgi-script Allow from all </Directory> <Directory "/home/httpd/twiki/pub"> Options FollowSymLinks +Includes AllowOverride None Allow from all </Directory> <Directory "/home/httpd/twiki/data"> deny from all </Directory> <Directory "/home/httpd/twiki/templates"> deny from all </Directory>
service httpd restart
(or as appropriate to your flavor of UNIX or Linux).
twiki/bin
directory is CGI-enabled by trying visiting it in your browser:
bin
directory, http://yourdomain.com/twiki/bin/
"Forbidden. You don't have permission to access /twiki/bin/ on this server"
.
"Index of /twiki/bin"
- recheck your httpd.conf
file.
To install TWiki on a system where you don't have Unix/Linux root (administrator) privileges, for example, on a hosted Web account or an intranet server administered by someone else:
pub
)
TWiki dir: What it is: Where to copy: Example: twiki
start-up pages root TWiki dir /home/smith/twiki/
twiki/bin
CGI bin CGI-enabled dir /home/smith/twiki/bin
twiki/lib
library files same level as twiki/bin
/home/smith/twiki/lib
twiki/pub
public files htdoc enabled dir /home/smith/twiki/pub
twiki/data
topic data dir secure from public access /home/smith/twiki/data
twiki/templates
web templates dir secure from public access /home/smith/twiki/templates
Note: Don't worry if you are not able to put the twiki/lib
directory at the same level as the twiki/bin
directory (e.g. because CGI bin
directories can't be under your home directory and you don't have root access). You can create this directory elsewhere and configure the /twiki/bin/setlib.cfg
file (done in Step 3)
/usr/bin/perl
. If it's elsewhere, change the path to Perl in the first line of each script in the twiki/bin
directory, or create a symbolic link from /usr/bin/perl
.
.cgi
extension to run. Some systems need .pl
, the regular Perl extension. Rename all twiki/bin
scripts if necessary.
twiki/bin/.htaccess
that contains the single line SetHandler cgi-script
, which tells Apache to treat all files in this directory as CGI scripts.
twiki/bin
directory as executable to -rwxr-xr-x
(755).
.tmpl
files it is necessary to chown
and chgrp -R twiki
so all the files have the owner you want.
nobody
ownership for all files manipulated by the CGI scripts (executed by the Web server), and user twiki
for all other files. You can:
nobody
with another user if your server executes scripts under a different name (ex: default for Debian is www-data
).
testenv
script from your browser: http://yourdomain.com/twiki/bin/testenv
. It will show you the user name of the CGI scripts, a table listing all CGI environment variables, and a test of your twiki/lib/TWiki.cfg
configuration file (you'll configure that in a minute).
twiki
with your own username
twiki/data
so that they are writable by user nobody
. A simple way is to chmod
them to -rw-rw-r--
(664) and to chown
them to nobody
.
twiki/data
directory and its subdirectories so that files in there are writable by user nobody
. A simple way is to chmod them to drwxrwxr-x
(775) and to chown
them to nobody
.
twiki/pub
directory and all its subdirectories so that files in there are writable by user nobody
. A simple way is to chmod
them to drwxrwxr-x
(775) and to chown
them to nobody
.
twiki/data/*/*.txt,v
RCS repository files in the installation package are locked by user nobody
. If your CGI scripts are not running as user nobody
, it's not possible to check in files (you'll see that the revision number won't increase after saving a topic). In this case, you need to unlock all repository files (check the RCS man pages) and lock them with a different user, such as www-data
, or delete them all - new files will be automatically created the first time each topic is edited. You have two options to change ownership of the RCS lock user:
testenv
script from your browser; in the Fix line you can relock all the rcs files (recommended)
cd twiki/data
find . -name *,v -exec perl -pi~ -e '$. <= 10 && s/nobody:/www-data:/ ' {} \;
*,v~
backup files which you should remove after verification: find . -name *,v~ -exec rm -f {} \;
/twiki/bin/setlib.cfg
$twikiLibPath
to the absolute file path of your /twiki/lib
as seen by the web server.
"../lib"
path or Plugins might fail to initialize properly
$localPerlLibPath
if you are not root and need to install additional CPAN modules, but can't update the main Perl installation files on the server. Just set this variable to the full pathname to your local lib directory, typically under your home directory.
setlib.cfg
file.
twiki/lib/TWiki.cfg
, setting the variables to your needs.
$scriptSuffix
variable to cgi
or pl
if required.
$storeTopicImpl = "RcsWrap";
for the RCS executables and make sure RCS is installed. Set $rcsDir
in twiki/lib/TWiki.cfg
to match the location of your RCS binaries. You can check this by issuing the command rcs
at the prompt, it should result in something like "rcs: no input file"
.
diff
, by typing diff -v
- an error indicates you have a non-GNU diff, so install the GNU diffutils
package and make sure that diff
is on the PATH used by TWiki (see $safeEnvPath
in the TWiki.cfg
file).
$storeTopicImpl = "RcsLite";
for the Perl based RCS
twiki/data
, twiki/templates
and all their subdirectories should be set so that they are not visible through URLs. (Alternatively, move the directories to a place where they are not visible, and change the variables in twiki/lib/TWiki.cfg
accordingly)
testenv
script from your browser: http://yourdomain.com/twiki/bin/testenv
. Check if your twiki/lib/TWiki.cfg
configuration file settings are correct.
By default, TWiki is configured to support US ASCII letters (no accents) in WikiWords, and ISO-8859-1 (Western European) characters in page contents. If that's OK for you, skip this step.
If your Wiki will be used by non-English speakers, TWiki can be configured for Internationalisation ('I' followed by 18 letters, then 'N', or I18N). Specifically, TWiki will support suitable accented characters in WikiWords (as well as languages such as Japanese or Chinese in which WikiWords do not apply), and will support virtually any character set in the contents of pages. NOTE: TWiki does not currently support UTF-8, so you are advised not to use this - however, improved UTF-8 support is under development, see TWiki:Codev/ProposedUTF8SupportForI18N.
To configure internationalisation suppport:
TWiki.cfg
file's Internationalisation section to set the $useLocale
parameter to 1
. TWiki will now use the I18N parameters set in the rest of this section.
locale -a
to find a suitable 'locale' for your use of TWiki. A locale that includes a dot followed by a character set is recommended, e.g. pl_PL.ISO-8859-2
for Poland. Consult your system administrator if you are not sure which locale to use.
TWiki.cfg
, set the $siteLocale
parameter to your chosen locale, e.g. pl_PL.ISO-8859-2
for Poland.
testenv
(download the latest testenv
from TWiki:Support/SupportGuidelines if possible) - this provides some diagnostics for I18N setup, and in particular checks that your locale can be used successfully.
If international characters in WikiWords do not seem to work, and you are on Perl 5.6 or higher, you may need to set the TWiki.cfg
parameter $localeRegexes
to 0 - this disables some features but enables TWiki to work even if your system has locales that do not work. Then, set the $upperNational
and $lowerNational
parameters to the valid upper and lower case accented letters for your locale.
If international characters in WikiWords aren't working, and you are on Perl 5.005 with working locales, keep $useLocale
set to 1 and set $localeRegexes
to 0, then set $upperNational
and $lowerNational
- if testenv
generates the lists of characters for you, your locales are working so there is no need to set $localeRegexes
to 0 in this case. See the comments in TWiki.cfg
for more information.
WIKIWEBMASTER
email address, and other email settings required for registration and WebChangesAlert to work:
WIKIWEBMASTER
should be set to the email address of the TWiki administrator
SMTPMAILHOST
is typically set on Windows or other non-Unix/Linux systems, where sendmail
or similar is not available. When this is set and the Perl module Net::SMTP
is installed, TWiki will connect to this SMTP server (e.g. mail.yourdomain.com
) to send email for user registration and WebChangesAlerts. If you do have a sendmail-type program, leave SMTPMAILHOST
unset so that the external sendmail program is used instead (defined by $mailProgram
in TWiki.cfg
).
SMTPSENDERHOST
is optional, and set to the domain name sending the email (e.g. twiki.yourdomain.com
). For use where the SMTP server requires that you identify the TWiki server sending mail. If not set, Net::SMTP
will guess it for you.
http://yourdomain.com/twiki/bin/view
and start TWiki-ing away!
http://yourdomain.com/twiki/
to get the pre-TWiki index.html
page, with a link to the view
script. Customize this page if you want a public intro screen with a login link, instead of immediately calling up the .htaccess login dialog by going directly to view
.
WEBCOPYRIGHT
messages, and other preferences.
%VARIABLES%
. Define site-level variables in the TWikiPreferences topic. See also: TWikiVariables.
That's it for the standard installation of TWiki. Read on for server-level customization options.
With your new TWiki installation up and running, you can manage most aspects of your site from the browser interface. Only a few functions require access to the server file system, via Telnet or FTP. You can make these server-level changes during installation, and at any time afterwards.
.htaccess.txt
in the twiki/bin
directory to .htaccess
and change it to your needs. The comment at the top of the file explains what need to be done, basically replace !FILE_path_to_TWiki!
and !URL_path_to_TWiki!
with paths specific to your installation. For the details of how this file works, consult the HTTP server documentation (for Apache server: [1], [2]).
.cgi
or .pl
file extension to the bin
scripts, make sure to do the same for edit
, view
, preview
, and all the other script names in .htaccess
.
.htaccess
does not have the desired effect, you need to enable it: Add "AllowOverride All" to the Directory [3] section of access.conf
for your twiki/bin
directory.
twiki/data/.htpasswd.txt
file contains several TWiki core team user accounts and a guest user account. You probably want to remove those accounts by deleting the entries in .htpasswd
. Do not remove the guest user if you want to allow guest logins.
$htpasswdFormatFamily
, $htpasswdEncoding
and $htpasswdFilename
in the TWiki.cfg file. The supported options are htpasswd:plain, htpasswd:crypt, htpasswd:sha1, htdigest:md5
.txt
and .txt,v
files in the twiki/data/TWiki
directory.
name=""
parameter of the input tags must start with: "Twk0..."
(if this is an optional entry), or "Twk1..."
(if this is a required entry). This ensures that the fields are carried over into the user home page correctly.
data/.htpasswd
file. The .htpasswd
file that comes with the TWiki installation includes user accounts for TWiki core team members that are used for testing on TWiki.org. You can edit the file and delete those lines.
At this time, TWiki does not ship with an "what you see is what you get" editor. TWiki:Codev/IntegrateHtmlAreaEditor describes how to integrate an HTML editor.
NOTE: User home topics are located in the TWiki.Main web - don't try to move them or create them in other webs. From any other web, user signatures have to point to TWiki.Main web, using a Main.UserName
or %MAINWEB%.UserName
format. (The %MAINWEB%
variable is an advantage if you ever change the Main web name, but the standard Main.UserName
is easier for users to enter, which is the bottom line!)
See Appendix A: TWiki File System for an installed system snapshot and descriptions of all files in the TWiki 01-Sep-2004 distribution.
-- TWiki:Main/PeterThoeny - 29 Aug 2004
-- TWiki:Main/MikeMannix - 16 May 2002
This cookbook is intended to get you up and running with TWiki on Windows quickly, with as few problems as possible. The 'cookbook' approach is simply to restrict the many choices that someone installing TWiki must make, so that a reasonably well-defined procedure can be followed - new users can simply follow the steps, while experts can use this as more of a guideline.
-- RichardDonkin? - 24 Feb 2002
- See WindowsInstallSummary for a concise summary of the whole cookbook.
HOME
since this is not always picked up by Cygwin
register
script edits to Dec 2001 release
binutils
to list of Cygwin packages, and added warning not to use Apache 2.0
SMTPMAILHOST
for user registration and notification
This document covers installation of the TWiki 01-Sep-2004 production release (TWiki:Codev/TWikiRelease01Sep2004) in the following environment - if you want to use a different environment, feel free to use this as a guideline only.
Component | Name, version | Comment |
---|---|---|
Operating System | Windows 2000 | Should also work for Windows NT |
Web Server | Apache 1.3.27 | Windows-specific security holes fixed in this build (check latest version at http://httpd.apache.org, but don't use Apache 2.0 yet) |
Unix tools | Cygwin 1.3.9 | Simplest way to get a whole set of required tools |
Perl | Cygwin perl-5.6.1-2 | Comes with Cygwin, don't use Perl 5.8.0 yet |
RCS | Cygwin rcs-5.7-2 | Comes with Cygwin, includes a file corruption bugfix |
Why this choice of packages? Because I've tried them, and they work well, without requiring a complicated setup... In particular, Apache is the commonest choice for TWiki on Unix/Linux, Cygwin Perl is very close to Unix Perl, and the Cygwin RCS is regularly updated, with a recent TWiki-relevant bug fix in Feb 2002. Cygwin also lets you install the Unix tools, Perl and RCS in a single step, saving quite a lot of time.
More recent minor versions should be OK, but they can introduce bugs.
Major version upgrades, such as Apache 2.0 and Perl 5.8, are very likely to cause problems - for example, Apache 2.0 is unable to authenticate users created by the current TWiki user registration script (due to a feature being removed in 2.0, see TWiki:Support.FailedAuthenticationWithApache2OnWinNT). Similarly, Perl 5.8 may introduce issues due to its Unicode features and has caused problems due to a bug in CGI.pm
. Even though the Apache group says that Apache 2.0 is the best version, that's not true for TWiki at present. For more information, see TWiki:Codev.IssuesWithApache2dot0 and TWiki:Codev.IssuesWithPerl5dot8.
There are doubtless other combinations of components that may work - in particular:
TWiki.cfg
, and is probably a simpler choice if you need an easy way to install mod_perl (see TWiki:Codev.ModPerl). TWiki:Codev.ActiveState Perl can be substituted without too much hassle, and in fact the same TWiki.cfg
can be used for both TWiki:Codev.ActiveState and Cygwin Perl.
Covering the whole range of additional possibilities, particularly web servers, would make this cookbook too complex, and is best handled as a separate activity.
For improved performance on Windows through using mod_perl
, you may want to try TWiki:Codev.WindowsModPerlInstallCookbook.
If you already have some of these add-ons installed, here's how to check the versions - this assumes you have TWiki:Codev.CygWin already installed:
$ : Cygwin DLL version is the number in 1.3.x format $ uname -r $ less c:/your-apache-dir/Announcement $ perl -v $ rcs -V
If you have an older version of any component, do yourself a favour and upgrade it as part of the install process.
This cookbook is intended for a clean install, i.e. none of these components are already installed. However, since Cygwin and Apache's installation process is fairly upgrade-friendly, upgrades should work as well - take backups of all your data and config files first, though!
nano
, a very simple text editor, installed optionally during Cygwin installation. Always launch nano
with the -w command-line option to turn off wrapping of long lines.
vi
, a more sophisticated editor that should be familiar to most UNIX users
Another good TWiki:Codev.OpenSource editor is SciTE (aka WSciTE), available at http://www.scintilla.org/SciTE.html.
It's a little known fact that you can use pathnames such as c:/apache
almost everywhere in Windows - try it in a File Open dialogue box. The main exception is the Windows "DOS" command line shell - here, you must use double quotes around forward slashes, e.g. dir "c:/apache"
will work fine.
The reason this matters is that '\'
is a special character to Perl and other tools, so it's much easier to use '/'
everywhere.
TWiki:Codev.CygWin is a Unix-like environment for Windows - many of its tools support the c:/apache
format, but it also provides a more Unixlike syntax, e.g. /usr/bin/rcs.exe
, because some Unix tools ported onto Cygwin only support the Unix format.
When you launch a Cygwin shell, your existing PATH variable is translated from the Windows format to the Unix format, and the ';' separators in the Windows PATH are changed into ':' separators as required by Unix. A Cygwin tool (e.g. Cygwin Perl or Cygwin RCS) will always use the Unix PATH format, and will accept Unix format pathnames.
Apache runs as a native Windows process and has nothing to do with Cygwin (at least the version used in this cookbook doesn't). Hence it supports c:/ pathnames in its config files and the first line of Perl CGI scripts.
If you need to use spaces in file names (not recommended), put double quotes around the file name in the httpd.conf
file. There have been some security-related bugs in Apache with long pathnames, which are a bit more likely if you use spaces, so it's best to just avoid long names and using spaces.
Once Perl has been launched by Apache, it is in Cygwin mode, and so is everything it launches, including ls
, egrep
, and the RCS tools that it (typically) launches with the bash
shell.
If you need to use spaces in file names (not recommended), you may be able to put double quotes around the file name in the TWiki.cfg
file - however, it's not clear whether all the TWiki code would work with this.
Enough background, let's get on with the installation.
Head to http://twiki.org, click the download link, and fill in the form to request a URL for download. You'll get an automated email, which should arrive by the time you need it.
1. Download Apache
apache_1.3.X-win32-x86-no_src.msi
where 'X' is 20 or higher
instmsi.exe
) from the Apache Win32 download page - this enables you to install .MSI files. You may need to update the .MSI Installer if you have an old version under NT.
2. Install Apache
c:\
as the installation directory - this actually installs Apache into c:\apache
(if you specify c:\apache
, it installs into c:\apache\Apache
). Putting Apache into c:\Program Files
is not recommended for easy editing of Apache config files from Cygwin.
3. Test Apache
Congratulations, you now have a working web server!
To restart Apache after changing its config, type:
apache -k restart
for standalone Apache process running in another window
apache -k restart -n apache
for Apache running as a Win2000 service (-n gives name of service)
Another useful command is apache -k stop
.
4. Install Cygwin
Head to http://cygwin.com, and click the Install or update now! link. Save the setup.exe
in a directory, e.g. c:\download\cygwin-dist
.
Now run the Cygwin setup.exe
file - this will also install Perl and RCS in one fell swoop.
c:\download\cygwin-dist
as the local package directory, and suitable proxy settings, then pick a local mirror site
bash
binutils
diffutils
gcc
grep
gzip
make
nano
(or vim
if you prefer the vi editor)
ncftp
pcre
perl
(5.6.1-2 or higher, but not 5.8.0)
rcs
(5.7-2 or higher)
tar
textutils
unzip
w32api
wget
(optional, useful for Perl install and TWiki:Codev.ReadWriteOfflineWiki)
lynx
if you are upgrading from an older Cygwin installation (to avoid annoying DLL messages) - if you want Lynx, read the Cygwin FAQ entry and upgrade libncurses5
.
gcc
, which is required for simple installation of Perl modules that use the C language. Something like 20 to 30 MB of free disk space should be enough for Cygwin, but I didn't test this (try a du -k /
after a new install and let me know the last figure).
Environment setup:
HOME
environment variable to c:\cygwin\home\YOURUSER
, where YOURUSER
is your userid, e.g. jsmith
or administrator
.
HOME
(must be upper case) as the variable name, and c:\cygwin\home\YOURUSER
as the value, and hit OK.
TEMP
to c:\temp
at this point, if you prefer this to editing the Cygwin ~/.profile
file. (HOME
can't be set in the ~/.profile
file.)
c:\cygwin\home\YOURUSER
directory
5. Test Cygwin
bash
shell, which has command line editing features
bash
will 'complete' the name. If bash
beeps at you, hit TAB again to see the files/directories that match the name so far, and type a bit more before hitting TAB. This saves a lot of time!
rcs -V
- you should see the RCS version, 5.7
perl -v
- you should see cygwin mentioned in the first line, and the Perl version, 5.6.1
grep home /etc/passwd
- you should see some output.
The Cygwin User Guide is well worth reading for some background on how Cygwin works.
6. Configure Cygwin for binary mode
$ mkdir /twiki /c c:/twiki $ mount -b -s c:/twiki /twiki $ mount -b -s c:/ /c $ mount -b -c /cygdrive $ mount Device Directory Type Flags C:\cygwin\bin /usr/bin system binmode C:\cygwin\lib /usr/lib system binmode C:\cygwin / system binmode c:\twiki /twiki system binmode c: /c system binmode
/twiki
(known as a 'mount point') to map onto c:/twiki
and for that directory tree to always be in binary mode, and does the same for /c
, mapping it onto c:/
. The last-but-one command sets binary as the default for any unmounted drives (e.g. z:/
, aka /cygdrive/z
).
mount
say 'binmode' under Flags
C:\cygwin
directories do not, you should uninstall and then re-install Cygwin to ensure that binary attachment uploads will work.
/twiki/bin/view
or /c/apache/Announcement
- see the Cygwin documentation for more details on this.
cd /twiki
echo hi >t
cat -v t
- you should see hi
as the output
hi^M
as output, your /twiki directory is not in binary mode
rm t
This setup is written to the Windows registry, so there's no need to put these commands into a .profile
file. For more information on binary vs text mode, see this User Guide section and this FAQ entry.
7. Download TWiki
Download the latest TWiki release from http://twiki.org/ and save it in the c:/twiki
directory.
8. Install TWiki
Unzip the ZIP file under c:/twiki
using WinZip, or by going into Cygwin and doing the following - you can hit the TAB
key to complete filenames after you've typed the first part:
$ cd /twiki $ unzip TWiki20011201.zip
Now that all the components are installed, you need to configure them.
The setup given here is fairly simple, in that it allows only TWiki to be served by the web server. For more complex setups, you can investigate the Alias and ScriptAlias commands that are left commented out in this configuration.
1. Configure Apache (part 1)
Using a suitable text editor (see #TextEditing, above) edit c:/apache/conf/httpd.conf
as follows - this tells Apache where TWiki lives, and removes the need to tinker with the Windows environment settings.
c:\temp
directory, by typing mkdir c:\temp
in a DOS command line window
# Change this to point to the Apache administrator (e.g. you) ServerAdmin you@yourdomain.com # Replaces DocumentRoot "C:/apache/htdocs" DocumentRoot "C:/twiki" # Replaces <Directory "C:/apache/htdocs"> <Directory "C:/twiki">
# Alias /twiki/ "C:/twiki/" # ScriptAlias /twiki/bin/ "C:/twiki/bin/" <Directory "C:/twiki/bin/"> # RD: Changed None to All in next line, to enable .htaccess AllowOverride All Allow From All Options ExecCGI SetHandler cgi-script </Directory> # Environment setup required to run Apache as service or as a # standalone process. <IfModule mod_env.c> # Adjust TZ for your server timezone, e.g. EST5EDT - put the non-daylight-savings # timezone code first (e.g. EST or GMT), followed by the number of hours that it's behind GMT # during non-daylight-savings time (use '-5' for timezones in advance of GMT). SetEnv TZ GMT0BST SetEnv RCSINIT -x,v/ # Adjust TEMP and TMP for your server and create directories if necessary SetEnv TEMP c:/temp SetEnv TMP c:/temp SetEnv LOGNAME system SetEnv HOME c:/twiki </IfModule>
2. Configure Apache (part 2)
Add an AddHandler line to the <IfModule mod_mime.c>
section of httpd.conf
- this removes the need to rename all the TWiki CGI scripts later in the installation.
# # Document types # <IfModule mod_mime.c> # TWiki setup - avoid renaming scripts AddHandler cgi-script . ...
3. Configure TWiki
Edit the TWiki config file, c:/twiki/lib/TWiki.cfg
(or in Cygwin terms, /twiki/lib/TWiki.cfg
) as follows:
c:/twiki
format pathnames for Cygwin, given the above binmode setup, but I have not tested this fully - a Cygwin Perl test script does generate binary mode files in this configuration, so it should work with RCS as well (really need a small RCS file corruption test case). Watch out for RCS file corruption carefully if you do try c:/twiki
pathnames with Cygwin, and do report your experiences...
fgrep
and egrep
to grep
, requiring the settings for these commands to point directly to grep
(with suitable flags to provide fgrep
and egrep
behaviour).
# variables that need to be changed when installing on a new server: # ================================================================== # http://your.domain.com/twiki : link of TWiki icon in upper left corner : $wikiHomeUrl = "http://yourdomain.com/bin/view"; # Host of TWiki URL : (Example "http://myhost.com:123") $defaultUrlHost = "http://yourdomain.com"; # : cgi-bin path of TWiki URL: $scriptUrlPath = "/bin"; # /pub : Public data path of TWiki URL (root of attachments) : $pubUrlPath = "/pub"; # NOTE: Next three settings should be valid absolute pathnames using Cygwin; if using # TWiki:Codev.ActiveState Perl, use z:/twiki format pathnames if your TWiki directory is not on C:. # Public data directory, must match $pubUrlPath : $pubDir = "/twiki/pub"; # Template directory : $templateDir = "/twiki/templates"; # Data (topic files) root directory : $dataDir = "/twiki/data"; .... # Set ENV{'PATH'} explicitly for taint checks ( #!perl -T option ) : # (Note: PATH environment variable is not changed if set to "") # On Windows, $safeEnvPath needs only one component, the directory where RCS is installed # - used by 'rcsdiff' to run 'co' program, so PATH must be correct. # Unix/Linux setting: # $safeEnvPath = "/bin:/usr/bin"; # Using Cygwin perl, so can use Unix-like paths, with ':' as separator. # Note that /usr/bin and /bin are identical due to default /usr/bin mount # in Cygwin. Must NOT use 'c:/foo' type paths, as ':' is taken as separator # meaning that 'c' is interpreted as a pathname, giving Perl taint error. $safeEnvPath = "/bin"; # If using ActiveState perl, use Windows paths instead # $safeEnvPath = "c:/cygwin/bin"; ... # RCS directory (find out by 'which rcs') : $rcsDir = "c:/cygwin/bin"; ... # Unix egrep command : $egrepCmd = "/bin/grep -E"; # Unix fgrep command : $fgrepCmd = "/bin/grep -F";
For the cookbook install using Cygwin Perl, there's no more TWiki.cfg
editing to be done, so you can get onto the next section.
# NOTE: When using ActiveState Perl, you must specify # a full Windows-style pathname, using '\\' for backslashes, # for the ls, egrep and fgrep commands, because Cygwin's shell # is not used - forward slashes are OK in Windows everywhere # except in the cmd.exe shell. Drive letters are OK - e.g. # 'c:\\foo\\ls' will work. When using Cygwin perl, just # use the default '/bin/ls' type settings. # # Unix ls command : $lsCmd = "c:\\cygwin\\bin\\ls"; # Unix egrep command : $egrepCmd = "c:\\cygwin\\bin\\grep"; # Unix fgrep command : $fgrepCmd = "c:\\cygwin\\bin\\grep";
4. Editing the Shebang lines
Now to edit the curiously named 'shebang lines' at the top of the TWiki CGI scripts. This is required so the Apache server knows what interpreter (perl) to use with the scripts.
perl
line, you can restore from the .backup
directory and re-run the command, as it will only edit the original files, not the backups with '~' suffixes.
$ cd /twiki/bin $ ls attach geturl oops rdiff save testenv viewfile changes installpasswd passwd register search upload edit mailnotify preview rename statistics view $ mkdir .backup $ cp * .backup $ head -1 view #!/usr/bin/perl -wT $ perl -pi~ -e 's;#!/usr/bin/perl;#!c:/cygwin/bin/perl;' *[a-z] $ head -1 view #!c:/cygwin/bin/perl -wT $ ls attach geturl oops rdiff save testenv viewfile~ attach~ geturl~ oops~ rdiff~ save~ testenv~ view~ changes installpasswd passwd register search upload changes~ installpasswd~ passwd~ register~ search~ upload~ edit mailnotify preview rename statistics view edit~ mailnotify~ preview~ rename~ statistics~ viewfile
If for some reason the edit goes wrong, just type cp .backup/* .
(while within the bin
directory) to restore the original distribution files. Use ls -a
to see the .backup
directory, and ls -a .backup
to view its contents.
Optional step: you can do 'rm *~'
to clean out the backups made by Perl, but that's not essential as all the original files cannot be executed. If you do this, type the command very carefully, as a space after the '*' will wipe out all files in this directory!
5. Minor changes to TWiki scripts
TWiki Dec 2001 release only - fixed in Feb 2003 release
If using the Dec 2001 release, you now need to make some minor edits to files in the c:/twiki/bin
directory, using a suitable editor (remember to use nano -w filename
if you prefer nano
to vi
- or just use the Windows PFE editor).
register
script in /twiki/bin
- change line 200 to read as follows (insert the MIME::Base64::
part):
return $user . ':{SHA}' . MIME::Base64::encode_base64(Digest::SHA1::sha1($passwd));
testenv
, see TWiki:Codev.CookbookActivePerlTestenv
6. Installing required Perl modules
Some additional Perl modules are needed, above and beyond the standard modules installed with Cygwin. Fortunately, there is an automated tool that makes it easy to do this - it's called cpan
, and goes to the Perl module archive site, http://www.cpan.org/, to download all required modules, and then build and install them.
Note: if you are unable to get cpan
working in your environment, don't panic; you can still install the modules manually. In this case, follow the instructions in CPAN: The Hard Way.
First of all, you need to get the cpan
tool configured and working - this is only necessary once. From the Cygwin shell, type the following (putting the export
command in ~/.profile
is recommended to make this setting persistent). Without the TEMP variable, some modules may fail to install on Windows 2000 and higher.
$ export TEMP=/c/temp $ cpanLots of questions about configuration and preferences - just hit Enter until you get to the questions about mirror sites, but answer the questions about FTP proxies etc if you are behind a proxy-based firewall. The CPAN tool will fetch a series of files, some quite large, as part of this setup process, so be patient...
NOTE: If you are behind a non-proxy-based firewall that requires the use of passive FTP, the initial downloads of files using Net::FTP may appear to hang - just wait 5 or more minutes, however, and the CPAN tool should eventually hit on ncftpget
, which is part of Cygwin and does work OK. If this doesn't work and you are behind a typical NAT-based firewall, try doing the following at the Cygwin shell before running cpan
- this forces Net::FTP to use passive FTP, letting it get through such firewalls:
$ export FTP_PASSIVE=1If this works, add this line to your
~/.profile
file for future use.
Once some initial files are downloaded, you are asked to select your continent and country, and then mirror sites - just type the number of the mirror sites you want to use (pick a few in case one is down):
... (28) Turkey (29) Ukraine (30) United Kingdom Select your country (or several nearby countries) [] 30 (1) ftp://cpan.teleglobe.net/pub/CPAN (2) ftp://ftp.clockerz.net/pub/CPAN/ (3) ftp://ftp.demon.co.uk/pub/CPAN/ (4) ftp://ftp.flirble.org/pub/languages/perl/CPAN/ (5) ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/ (6) ftp://ftp.plig.org/pub/CPAN/ (7) ftp://mirror.uklinux.net/pub/CPAN/ (8) ftp://sunsite.doc.ic.ac.uk/packages/CPAN/ (9) ftp://usit.shef.ac.uk/pub/packages/CPAN/ Select as many URLs as you like, put them on one line, separated by blanks [] 4 7 8 Enter another URL or RETURN to quit: [] New set of picks: ftp://ftp.flirble.org/pub/languages/perl/CPAN/ ftp://mirror.uklinux.net/pub/CPAN/ ftp://sunsite.doc.ic.ac.uk/packages/CPAN/
Eventually, you'll get to the cpan
installer's shell prompt, where you need to install a few modules - the tool will do all the work for you.
make
and gcc
packages, which are required by the CPAN installer (gcc
is required for modules that include C language code) - you can install them now by launching Cygwin's setup.exe
from c:/download/cygwin-dist
(no need to exit the CPAN installer).
cpan shell -- CPAN exploration and modules installation (v1.59_54) cpan> install Net::SMTP May already be installed - if it is, try 'force install', since it's useful to be able to set firewall and passive FTP configuration when using Net::FTP. Make sure you answer 'Y' to the question about whether you want to configure this package. cpan> install Digest::SHA1 Lots of output about how CPAN finds, builds and installs the module - watch for any errors, though it should work fine if you have installed the Cygwin packages listed above (particularly 'gcc' and 'make'). cpan> install MIME::Base64 May already be installed.
cpan
doesn't work for you, perhaps because you are behind an uncooperative corporate firewall, you may have to fall back on installing modules manually. In this case, you need to read the CPAN INSTALL page and visit the CPAN search site to search for each module you require. Usually installation simply involves downloading the module distribution into a temporary directory and unpacking it (a .tar.gz
or .tgz
file is unpacked using tar zxvf file
). Then do the following:
$ perl Makefile.PL $ make $ make test $ make installThe
make test
step should not be skipped - for example, one known problem is with the Digest::SHA1
module on Windows NT, which does not pass its tests and does not work. This causes problems with password encoding. In this event you can use another encoding scheme or switch to unencoded passwords. There may be other problems on the various Windows configurations, and you can save yourself a lot of time.
7. Re-locking files
First, some testing: in your browser, go to http://yourdomain.com/bin/testenv - this provides a lot of detail, including warnings. Write down the Apache server's userid that is given by this script - typically either 'system' or 'administrator' - I'll assume 'system' from now on.
testenv
script doesn't work, go back and check the configuration of the Apache httpd.conf
file, and TWiki.cfg
. Have a look at the Apache error log, c:/apache/logs/error_log
, and the TWiki error log, /twiki/data/log*.txt
.
This 'system' user must own the locks on the RCS files, which are shipped with the lock held by 'nobody'. The reason this matters is that no revisions will be tracked by RCS unless the Apache userid matches that of the RCS file locks.
You can re-lock files using rcs -u
and rcs -l
, but it's a painfully manual process. Instead, just use Perl again to mass-edit all the RCS files, as follows:
$ cd /twiki/data $ : Make a backup of all files $ tar czvf all-files.tar.gz */* $ : Test edit a single file to check your typing $ perl -pi~~~ -e 'NR <= 10 && s/nobody:/system:/ ' Main/WebIndex.txt,v $ diff Main/WebIndex.txt,v Main/WebIndex.txt,v~~~ 5c5 < system:1.2; strict; --- > nobody:1.2; strict; $ : Now edit all the RCS files at once - use cursor-up to recall previous command $ perl -pi~~~ -e 'NR <= 10 && s/nobody:/system:/ ' */*,v $ : Check for any remaining files not edited $ grep 'strict;$' */*,v | grep -v system $ : Clean up - type this very carefully $ rm */*~~~
tar xzvf all-files.tar.gz
and all your files, both .txt and .txt,v, will be back as they were before the edits.
You have now re-locked all the RCS files and are almost ready to start using TWiki!
8. Email setup for notification and registration
You need to set the SMTPMAILHOST
in TWikiPreferences to an SMTP email host that is reachable and currently working. Otherwise you may get a confusing message from TWiki (fixed in TWiki:Codev.TWikiRelease01Feb2003) when registering new users or running mailnotify
(for WebNotify), along the lines of:
Software Error: Can't call method "mail" on an undefined value at ../lib/TWiki/Net.pm line 187.
There are other settings to be made in TWikiPreferences, e.g. the WIKIWEBMASTER
and (probably) the SMTPSENDERHOST
(normally your mail server or TWiki server). See the TWikiInstallationGuide for more details, what's listed here is just enough to let you run the basic tests.
It is important to test your TWiki installation before you release it to other users or put any significant data into it.
Here are the main things to test:
http://yourdomain.com/bin/testenv
and check for warnings
testenv
from TWiki:Codev/TWikiAlphaRelease and install it in c:/twiki/bin
. (From TWiki.org, just click CVSget:bin/testenv to get this script)
view
script) - click around a few pages and make sure the links are OK
rdiff
script) - click on the Diffs link and on the '>' links at bottom of page
register
script to create a new user entry in /twiki/data/.htpasswd
(the Apache password file), ability to send email via Net::SMTP, and whether SMTPMAILHOST
was set correctly in TWikiPreferences (if it is unset it will not use Net::SMTP and will almost inevitably fail silently).
tail -30 /c/apache/logs/error_log
to see last 30 errors from Apache
error_log
file to see if there are any RCS errors so far
ls
and grep
are working
ls
and grep
are working
/twiki/pub
directory.
error_log
file again
If anything doesn't work, go back and check the configuration of the Apache httpd.conf
file, and TWiki.cfg
. Have a look at the Apache error log, c:/apache/logs/error_log
, and the TWiki error log, /twiki/data/log*.txt
, and if necessary enable debugging on selected scripts (the commands are right at the top of each script) - the results go into /twiki/data/debug.txt
. There is also a /twiki/data/warning.txt
file that contains less serious messages.
See TWiki:Codev.TWikiPatches in case there are patches (i.e. specific code changes) for particular problems that may affect you (e.g. TWiki:Codev.ChangePasswordOnWin2K).
If you find that the Index feature doesn't work, or topic name searches fail, you should check you have set $egrepCmd
and $fgrepCmd
correctly, as mentioned above.
TWiki:Codev.CygWin has several models for how it does security:
#!/bin/something
). This is what has been used for this cookbook.
I have not had any problems with TWiki permissions on Windows, unlike Linux/Unix, which is probably because I'm using the default security model for Cygwin. If you use the other models, you may still be OK if you have local admin rights, and Apache is running as the SYSTEM user (which it uses if started as a service). If you do have trouble in this area, see the TWikiInstallationGuide's advice, some of which will apply to TWiki:Codev.CygWin, and log any issues in TWiki:Codev.WindowsInstallCookbookComments.
See the TWikiInstallationGuide for other setup. In particular, you'll probably want to refer to the section on basic authentication - remember to use c:/twiki
type filenames (i.e. Windows format) since you are using Apache for Windows.
You may want to investigate TWiki:Codev.WindowsInstallModNTLM, which describes how to add an Apache module so that TWiki:Codev.InternetExplorer users are automatically authenticated based on their Windows domain login - this avoids TWiki:Codev.GettingTheUsernameWrong and TWiki:Codev.ForgettingPasswords, which are usually very common among TWiki users.
As of the TWiki:Codev.TWikiRelease01Sep2004, there is built in support for several apache based authentication modes. The TWikiInstallationGuide has step-by-step instructions.
See TWiki:Codev.WindowsModPerlInstallCookbook and TWiki:Codev.ModPerl for information on installing TWiki under Apache's mod_perl
- this is somewhat more complex and follows a different model, so it's best to get some experience with TWiki, Apache and Perl first.
In your TWiki on Windows installation, it's worth remembering that:
.htaccess
file and c:/apache/conf/httpd.conf
) always use Windows format paths, with forward slashes, e.g. c:/twiki
c:/cygwin/bin/perl
/twiki
(using Cygwin Perl as per this cookbook)
c:/twiki
/twiki
Material in this cookbook is heavily based on the enormous number of contributions in TWiki:Codev.TWikiOnWindowsArchive and related topics - too many people to thank, but have a look at the contributor list to TWiki:Codev.TWikiOnWindowsArchive to get an idea!
People who've tested or reviewed this document and provided valuable feedback include:
-- TWiki:Main.BernardFarrell
-- TWiki:Main.BerndSchiffer
-- TWiki:Main.ChrisKeith
-- TWiki:Main.CrawfordCurrie
-- TWiki:Main.DavideBaroncelli
-- TWiki:Main.DavidLeBlanc
-- TWiki:Main.JerryWard
-- TWiki:Main.MartinWittmann
-- TWiki:Main.MaryDeMarco
-- TWiki:Main.MattWilkie
-- TWiki:Main.MikeBytnar
-- TWiki:Main.PeterThoeny
-- TWiki:Main.RossC
-- TWiki:Main.TorbenGB
-- TWiki:Main.VictorGoh
-- TWiki:Main.WolframJahn
Upgrade from the previous TWiki 01-Feb-2003 production release to TWiki 01-Sep-2004
This guide describes how to upgrade from TWiki 01-Feb-2003 to TWiki 01-Sep-2004. This is a major new release. You can chose between an automated upgrade using a script or a manual update.
With the 01-Sep-2004 Release, for the first time, comes a helper script for upgrading from a previous version. This feature is currently at beta stage, it has only been sanity tested under Unix. It should be worth giving it a try, it won't mess up your existing TWiki installation because it leaves that untouched.
If you would prefer to do things manually than trust a beta script, skip to the manual upgrade procedure below.
The upgrade script is called "UpgradeTwiki"
, and is found in the root of the distribution.
It will:
To perform the upgrade, you need to:
UpgradeTwiki
script available, see TWiki:Codev.UpgradeTwiki
distro/
distro/
new_twiki
. This directory must not already exist.
distro/
and run: ./UpgradeTwiki <full path to new_twiki>
Assuming all goes well, UpgradeTwiki
will give you the final instructions.
There are a few points worth noting:
UpgradeTwiki
may not be able to merge all the changes you made in your existing TWiki into the new installation, but it will tell you which ones it couldn't deal with
UpgradeTwiki
creates the new installation in a new directory tree. It makes a complete copy of all your existing data, so:
data/
directory in your existing installation, these are reproduced as actual directories in the new structure. It is up to you to pull these sub-directories out again and re-symlink as needed
UpgradeTwiki
doesn't deal with custom templates or Plugins, you will have to reinstall these in the new installation
TWiki.cfg
file, then you will need to manually examine the new TWiki.cfg
file and possibly put your tricky changes in there manually
If you use it, and would be kind enough to add your experiences to TWiki:Codev.UpgradeTwiki, it would be much appreciated. The report of your experience will help to make UpgradeTwiki
more robust.
The following steps describe the upgrade assuming that $TWIKIROOT
is the root of your current 01-Feb-2003 release. As written this will require some downtime. A process for switching over without downtime is described at the end of this section.
$TWIKIROOT/bin
, $TWIKIROOT/pub
, $TWIKIROOT/data
, $TWIKIROOT/templates
, $TWIKIROOT/lib
*.html
and *.txt
files in $TWIKIROOT
with the new ones
$TWIKIROOT/templates
with the new ones
%BROADCASTMESSAGE%
somewhere on the top of the rendered HTML page (see the new view.tmpl
for reference)
preview
to save
: <form name="main" action="%SCRIPTURLPATH%/save%SCRIPTSUFFIX%/%WEB%/%TOPIC%" method="post">
%TMPL:DEF{"topicaction"}%
<input type="submit" class="twikiSubmit" name="action" value="Cancel" id="cancel" />
<input type="submit" class="twikiSubmit" name="action" value="Preview" id="preview" />
<input type="submit" class="twikiSubmit" name="action" value="Checkpoint" id="checkpoint" />
<input type="submit" class="twikiSubmit" name="action" value="QuietSave" id="quietsave" />
<input type="submit" class="twikiSubmit" name="action" value="Save" id="save" />%TMPL:END%
$TWIKIROOT/bin
with the new ones.
.cgi
$TWIKIROOT/bin/setlib.cfg
and point $twikiLibPath
to the absolute file path of $TWIKIROOT/lib
$TWIKIROOT/bin/.htaccess
file to include a directive for the new rdiffauth
script:<Files "rdiffauth">
require valid-user
</Files>
chmod 775 $TWIKIROOT/bin/*
755
(do so if you get a "Premature end of script headers" messages in the Apache error log)
TWiki.cfg
configuration file in $TWIKIROOT/lib
with the new one
TWiki.pm
library in $TWIKIROOT/lib
with the new one
$TWIKIROOT/lib
with the new ones. Make sure to preserve any extra Plugins you might have in $TWIKIROOT/lib/TWiki/Plugins
chmod 664 `find -type f $TWIKIROOT/lib`
(for files) and chmod 775 `find -type d $TWIKIROOT/lib`
(for directories)
bin/testenv
script from the browser (e.g. http://localhost/bin/testenv
) to verify if the cgi-scripts are running as user nobody
. In case not:
*,v
RCS repository files delivered with the installation package are locked by user nobody
and need to be changed to the user of your cgi-scripts, for example www-data
testenv
script from your browser; in the Fix line you can relock all the rcs files (recommended)
twiki/data/TWiki
directory where you unzipped the installation package:
InterWikis.*
, TWikiRegistration.*
, TWikiRegistrationPub.*
, WebPreferences.*
, WebStatistics.*
and all WebTopic*
files
$TWIKIROOT/data/TWiki/TWikiPreferences.*
to TWikiPreferencesSave.*
.
*.txt
and *.txt,v
files from the temporary data/TWiki
directory to your $TWIKIROOT/data/TWiki
directory, overwriting the existing ones
TWikiPreferencesSave.txt
settings into $TWIKIROOT/data/TWiki/TWikiPreferences.txt
. Notable changes are:
data/_default
directory from the temporary location to your $TWIKIROOT/data
directory
$TWIKIROOT/data
are writable by your cgi-script user
TWiki
and _default
):
%INCLUDE{"%TWIKIWEB%.WebSearchAdvanced"}%
pub/TWiki
from your temporary directory into your $TWIKIROOT/pub/TWiki
directory
$TWIKIROOT/pub/TWiki
are writable by your cgi-script user
pub/icn
directory from the temporary location to your $TWIKIROOT/pub/icn
directory
$TWIKIROOT/bin/testenv
script from your browser (e.g. http://localhost/bin/testenv
) to see if it reports any issues; address any potential problems
Note: These steps assume a downtime during the time of upgrade. You could install the new version in parallel to the existing one and switch over in an instant without affecting the users. As a guideline, install the new version into $TWIKIROOT/bin1
, $TWIKIROOT/lib1
, $TWIKIROOT/templates1
, $TWIKIROOT/data/TWiki1
(from data/TWiki
), $TWIKIROOT/pub/TWiki1
(from pub/TWiki
), and configure TWiki.cfg
to point to the same data and pub directory like the existing installation. Once tested and ready to go, reconfigure $TWIKIROOT/bin1/setlib.cfg
and $TWIKIROOT/lib1/TWiki.cfg
, then rename $TWIKIROOT/bin
to $TWIKIROOT/bin2
, $TWIKIROOT/bin1
to $TWIKIROOT/bin
. Do the same with the lib
, templates
and data/TWiki
directories.
-- TWiki:Main.PeterThoeny - 29 Aug 2004
TWiki site access control and user activity tracking options
TWiki does not authenticate users internally, it depends on the REMOTE_USER
environment variable. This variable is set when you enable Basic Authentication (.htaccess) or SSL "secure server" authentication (https protocol).
TWiki uses visitor identification to keep track of who made changes to topics at what time and to manage a wide range of personal site settings. This gives a complete audit trail of changes and activity.
No special installation steps are required if the server is already authenticated. If it isn't, you have these options for controlling user access:
attach
, edit
, installpasswd
, manage
, preview
, rename
, save
, upload
. The TWikiInstallationGuide has step-by-step instructions.
twiki/bin
directory. Consult your web server documentation.
Tracking by IP address is an experimental feature, enabled in lib/TWiki.cfg
. It lets you combine open access to some functions, with authentication on others, with full user activity tracking:
REMOTE_USER
environment variable is set for the scripts that are under authentication. If, for example, the edit
, save
and preview
scripts are authenticated, but not view
, you would get your WikiName in preview
for the %WIKIUSERNAME%
variable, but view
will show TWikiGuest
instead of your WikiName.
view
, will show the correct username instead of TWikiGuest.
$doRememberRemoteUser
flag in TWiki.cfg
. TWiki then persistently stores the IP address/username pairs in the file, $remoteUserFilename
, which is "$dataDir/remoteusers.txt"
by default.
view
script to viewauth
(or better, create a symbolic link)
viewauth
to the list of authenticated scripts in the twiki/bin/.htaccess
file. The view
script should not be listed in the .htaccess
file.
Quick Authentication Test - Use the %WIKIUSERNAME% variable to return your current identity:
This section applies only if your TWiki site is installed on a server that is both authenticated and on an intranet.
TWiki internally manages two usernames: Login Username and TWiki Username.
pthoeny
. This name is normally passed to TWiki by the REMOTE_USER
environment variable, and used internally. Login Usernames are maintained by your system administrator.
PeterThoeny
, is recorded when you register using TWikiRegistration; doing so also generates a personal home page in the Main web.
TWiki can automatically map an Intranet (Login) Username to a TWiki Username, provided that the username pair exists in the TWikiUsers topic. This is also handled automatically when you register.
twiki/data
, there are two registration form topics, TWikiRegistration and TWikiRegistrationPub?. The original form includes an intranet Login Username field. For Basic Authentication, the original form is replaced by the Pub version. If you started using TWiki on Basic Authentication and want to change, you have to switch back forms for future use, and manually correct the existing entries, by editing TWikiUsers, adding the Login Username for each member - PeterThoeny - pthoeny - 01 Jan 1999
- and also in the .htpasswd
file, where you can either replace the WikiNames or duplicate the entries and have both, so both usernames will work.
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. Ex:This pointsMain.WikiUsername
or%MAINWEB%.WikiUsername
WikiUser
to the TWiki.Main web, where user registration pages are stored, no matter which web it's entered in. Without the web prefix, the name appears as a NewTopic? everywhere but in the Main web.
Change and reset passwords using forms on regular pages. Use TWikiAccessControl to restrict use as required.
TWiki/ChangePassword
):
Forgot your old password? Then use ResetPassword instead. Please only use ResetPassword in case you really forgot your password. Thank you.
After submitting this form your password will be changed.
If you have questions please contact the TWiki webmaster webmaster@strategoxt.org.
TWiki/ResetPassword
):
Please only use this ResetPassword form in case you really forgot your password. Otherwise just change it using ChangePassword. Thank you.
After submitting this form you will see a page with your new password appearing encrypted.
You will have to e-mail this information to the Wiki webmaster, webmaster@strategoxt.org, who will set your account to use the new password.
-- TWiki:Main.MikeMannix - 19 May 2002
-- TWiki:Main.PeterThoeny - 25 Apr 2004
Restricting read and write access to topics and webs, by Users and groups
TWikiAccessControl allows you restrict access to single topics and entire webs, by individual user and by user Groups, in three areas: view; edit & attach; and rename/move/delete. Access control, combined with TWikiUserAuthentication, lets you easily create and manage an extremely flexible, fine-grained privilege system.
Open, freeform editing is the essence of WikiCulture - what makes TWiki different and often more effective than other collaboration tools. For that reason, it is strongly recommended that decisions to restrict read or write access to a web or a topic are made with care - the more restrictions, the less Wiki in the mix. Experience shows that unrestricted write access works very well because:
As a collaboration guideline:
Authentication: Identifies who a user is based on a login procedure. See TWikiUserAuthentication.
Access control: Restrict access to content based on users and groups once a user is identified.
Access control is based on the familiar concept of Users and Groups. Users are defined by their WikiNames. They can then be organized in unlimited combinations by inclusion in one or more user Groups. For convenience, Groups can also be included in other Groups.
A user can create an account in TWikiRegistration. The following actions are performed:
.htpasswd
if authentication is enabled.
Users can be authenticated using Basic Authentication (htaccess) or SSL (secure server). In either case, TWikiUserAuthentication is required in order to track user identities, and use User and Group access control.
The default visitor name is TWikiGuest. This is the non-authenticated user.
Groups are defined by group topics created in the Main
web, like the TWikiAdminGroup. To create a new group:
Edit
TWikiGroups by entering a new topic with a name that ends in Group
. Example:
SomeGroup
Set GROUP = < list of Users and/or Groups >
Set ALLOWTOPICCHANGE = < list of Users and/or Groups >
Set GROUP = Main.SomeUser, Main.OtherUser, Main.SomeGroup
Set ALLOWTOPICCHANGE = Main.TWikiAdminGroup
You can define who is allowed to make changes to a web or a topic.
Denying editing of a topic also restricts file attachment; both privileges are assigned together.
Set DENYTOPICCHANGE = < list of Users and Groups >
Set ALLOWTOPICCHANGE = < list of Users and Groups >
Set DENYTOPICCHANGE = Main.SomeBadBoy, Main.SomeBadGirl, Main.SomeHackerGroup
Set ALLOWTOPICCHANGE = Main.SomeGoodGuy, Main.SomeGoodGirl, Main.TWikiAdminGroup
Restricting web-level editing blocks creating new topics, changing topics or attaching files.
Set DENYWEBCHANGE = < list of Users and Groups >
Set ALLOWWEBCHANGE = < list of Users and Groups >
The same rules apply as for restricting topics, with these additions:
You can define who is allowed to rename, move or delete a topic, or rename a web.
To allow a user to rename, move or delete a topic, they also need write (editing) permission. They also need write access to change references in referring topics.
Set DENYTOPICRENAME = < list of Users and Groups >
Set ALLOWTOPICRENAME = < list of Users and Groups >
Set DENYTOPICRENAME = Main.SomeBadBoy, Main.SomeBadGirl, Main.SomeHackerGroup
Set ALLOWTOPICRENAME = Main.SomeGoodGuy, Main.SomeGoodGirl, Main.TWikiAdminGroup
You can define restrictions of who is allowed to rename a TWiki web.
Set DENYWEBRENAME = < list of Users and Groups >
Set ALLOWWEBRENAME = < list of Users and Groups >
The same rules apply as for topics, with these additions:
You can define who is allowed to see a web.
Technically it is possible to restrict read access to an individual topic based on DENYTOPICVIEW
/ ALLOWTOPICVIEW
preferences variables, provided that the view script is authenticated. However this setup is not recommended since all content is searchable within a web - a search will turn up view restricted topics.
You can define restrictions of who is allowed to view a TWiki web. You can restrict access to certain webs to selected Users and Groups, by:
The idea is to keep a web hidden by not publishing its URL and by preventing the all webs
search option from accessing obfuscated webs. Do so by enabling the NOSEARCHALL
variable in WebPreferences:
Set NOSEARCHALL = on
This setup can be useful to hide a new web until content its ready for deployment.
Obfuscating webs is insecure, as anyone who knows the URL can access the web.
Use the following setup to authenticate users for topic viewing in all webs and to restrict access to selected webs:
Set DENYWEBVIEW = < list of Users and Groups >
Set ALLOWWEBVIEW = < list of Users and Groups >
DENYWEBVIEW
is evaluated before ALLOWWEBVIEW
. Access is denied if the authenticated person is in the DENYWEBVIEW
list, or not in the ALLOWWEBVIEW
list. Access is granted in case DENYWEBVIEW
and ALLOWWEBVIEW
is not defined.
NOSEARCHALL
variable in its WebPreferences topic:
Set NOSEARCHALL = on
view
to the list of authenticated scripts in the .htaccess
file.
This method only works if the view
script is authenticated, which means that all Users have to login, even for read-only access. (An open guest account, like TWikiGuest, can get around this, allowing anyone to login to a common account with, for example, view-only access for public webs.) TWikiInstallationGuide has more on Basic Authentication, using the .htaccess
file.
Use the following setup to provide unrestricted viewing access to open webs, with authentication only on selected webs:
Set DENYWEBVIEW = < list of Users and Groups >
Set ALLOWWEBVIEW = < list of Users and Groups >
DENYWEBVIEW
is evaluated before ALLOWWEBVIEW
. Access is denied if the authenticated person is in the DENYWEBVIEW
list, or not in the ALLOWWEBVIEW
list. Access is granted in case DENYWEBVIEW
and ALLOWWEBVIEW
is not defined.
NOSEARCHALL
variable in its WebPreferences topic:
Set NOSEARCHALL = on
$doRememberRemoteUser
flag in lib/TWiki.cfg
as described in TWikiUserAuthentication. TWiki will now remember the IP address of an authenticated user.
view
script to viewauth
(or better, create a symbolic link)
viewauth
to the list of authenticated scripts in the .htaccess
file. The view
script should not be listed in the .htaccess
file.
When a user accesses a web where you enabled view restriction, TWiki will redirect from the view
script to the viewauth
script once (this happens only if the user has never edited a topic). Doing so will ask for authentication. The viewauth
script shows the requested topic if the user could log on and if the user is authorized to see that web.
Authenticating webs is not very secure, as there is a way to circumvent the read access restriction. It can be useful in certain situations - for example, to simplify site organization and clutter, by hiding low traffic webs - but is not recommended for securing sensitive content.
To hide access control settings from normal browser viewing, place them in comment markers.
By mistyping a user or group name in the ALLOWTOPICCHANGE setting, it's possible to lock a topic so that no-one can edit it from a browser. To avoid this, you can create Web-based superusers:
$superAdminGroup
variable in lib/TWiki.cfg
to the name of a group of Users who are always allowed to edit/view topics.
$superAdminGroup = "TWikiAdminGroup";
-- TWiki:Main.PeterThoeny - 04 May 2002
-- TWiki:Main.MikeMannix - 12 May 2002
Working in TWiki is as easy as typing in text - exactly like email. You don't need to know HTML, though you can use it if you prefer. Links to topics are created automatically when you enter WikiWords. And TWiki shorthand gives you all the power of HTML with a simple coding system that takes no time to learn. It's all laid out below - refer back to this page in a pop-up window from the Edit screen.
Formatting Command: | Example: You write: | You get: | |||||||||||||||||||
Paragraphs: Blank lines will create new paragraphs. |
1st paragraph 2nd paragraph |
1st paragraph
2nd paragraph |
|||||||||||||||||||
Headings: At least three dashes at the beginning of a line, followed by plus signs and the heading text. One plus creates a level 1 heading (most important), two pluses a level 2 heading; the maximum is level 6. Note: A Table of Content can be created automatically with the %TOC% variable, see TWikiVariables. Any heading text after !! is excluded from the TOC; for example, write ---+!! text if you do not want to list a header in the TOC.
|
---++ Sushi ---+++ Maguro |
Sushi
Maguro |
|||||||||||||||||||
Bold Text: Words get bold by enclosing them in * asterisks.
|
*Bold* | Bold | |||||||||||||||||||
Italic Text: Words get italic by enclosing them in _ underscores.
|
_Italic_ | Italic | |||||||||||||||||||
Bold Italic: Words get _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
|
|||||||||||||||||||
Note: Make sure there is no space between the text and the bold, italic, or other indicators (* _ __ = == ).
|
_This works_, _this not _ |
This works, _this not _ |
|||||||||||||||||||
Verbatim Mode: Surround code excerpts and other formatted text with <verbatim> and </verbatim> tags. Note: Use <pre> and </pre> tags instead if you want that HTML code is interpreted. Note: Each tag must be on a line by itself. |
<verbatim> class CatAnimal { void purr() { <code here> } } </verbatim> |
class CatAnimal { void purr() { <code here> } } |
|||||||||||||||||||
Separator: At least three dashes at the beginning of a line. |
------- |
|
|||||||||||||||||||
List Item: Three spaces, an asterisk, and another space. |
* bullet item |
|
|||||||||||||||||||
Nested List Item: Six, nine, ... spaces, an asterisk, and another space. |
* level 1 * level 2 |
|
|||||||||||||||||||
Ordered List: Three spaces, a number, a dot, and another space. Several types are available besides a number:
|
1. Sushi 1. Dim Sum A. Sushi A. Dim Sum i. Sushi i. Dim Sum |
|
|||||||||||||||||||
Definition List: Three spaces, a dollar sign, the term, a colon, a space, followed by the definition. |
$ Sushi: Japan $ Dim Sum: S.F. |
|
|||||||||||||||||||
Table: Any number of lines of text. Each line is one row of the table consisting of one or more cells. Each cell starts and ends with a vertical bar '|'. Any spaces at the beginning of a line are ignored. Notes: • | *bold* | cells are displayed as table headers.• | center-spaced | cells are displayed center aligned.• | right-spaced | cells are displayed right aligned.• | 2 colspan || cells are displayed as multi-span columns (i.e., a cell with no text spans a column).• |^| cells with a caret indicate follow-up rows of multi-span rows (this functionality is provided by TablePlugin).• If a row contains a large amount of text, and you want it to be more readable while editing the table, split the row into multiple text lines by ending each line with a backslash character '\' .• Table cells wrap automatically as determined by the browser. |
| *L* | *C* | *R* | | A2 | 2 | 2 | | A3 | 3 | 3 | | multi span ||| | A4-6 | four | four | |^| five | five | |^| six | six | |
|
|||||||||||||||||||
WikiWord Links: CapitalizedWordsStuckTogether (or WikiWords) will produce a link automatically. Note: In case you want to link to a topic in a different TWiki web write Otherweb.TopicName . (The link label is the the name of the web in case the is WebHome, else it is the topic name)
|
WebNotify Main.TWikiUsers | WebNotify | |||||||||||||||||||
Forced Links: You can create a forced internal link by enclosing words in double square brackets. Note: Text within the brackets may contain optional spaces; the topic name is formed by capitalizing the initial letter and by removing the spaces; for example, [[text formatting FAQ]] links to topic TextFormattingFAQ. You can also refer to a different web and use anchors.
Note: To "escape" double square brackets that would otherwise be a correct link, prefix the leading left square brackets with an exclamation point, that is, begin with ![[....
|
[[wiki syntax]] [[Main.TWiki users]] escaped: ![[wiki syntax]] |
wiki syntax
escaped: [[wiki syntax]] |
|||||||||||||||||||
Specific Links: Create a link where you can specify the link text and the link reference separately, using nested square brackets like [[reference][text]] . Internal link references (e.g. WikiSyntax) and external link references (e.g. http://TWiki.org/) are supported.
Note: The same Forced Links rules apply for internal link references. Note: For external link references, you can simply use a space instead of ][ to separate the link URL from the descriptive text.
Note: Anchor names can be added as well, like [[WebHome#MyAnchor][go home]] and [[http://gnu.org/#Action][GNU Action]] .
|
[[WikiSyntax][syntax]] [[http://gnu.org][GNU]] [[http://xml.org XML]] | syntax | |||||||||||||||||||
Anchors: You can define a link reference inside a TWiki topic (called an anchor name) and link to that. To define an anchor write #AnchorName at the beginning of a line. The anchor name must be a WikiWord. To link to an anchor name use the [[MyTopic#MyAnchor]] syntax. You can omit the topic name if you want to link within the same topic.
|
[[WikiWord#NotThere]] [[#MyAnchor][Jump]] #MyAnchor To here | WikiWord#NotThere | |||||||||||||||||||
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.
Note: Each tag must be on a line by itself. Note: This also works for TWiki tables, but only if you add a blank line between the end of the table and the closing </noautolink> tag (known issue of the TablePlugin).
|
<noautolink> RedHat & SuSE </noautolink> | RedHat & SuSE | |||||||||||||||||||
Mailto: Links: To create 'mailto:' links that have more descriptive link text, specify subject lines or message bodies, or omit the email address, you can write [[mailto:user@domain descriptive text]] .
|
[[mailto:a@z.com Mail]] [[mailto:?subject=Hi Hi]] |
You can use just about any HTML tag without a problem - however, there are a few usability and technical considerations to keep in mind.
<p />
paragraph tags on empty lines, which causes problems if done between tags that do not allow paragraph tags, like for example between table tags.
<...>
- of an HTML tag must be on the same line, or the tag will be broken.
<
, ex: a < b
You can use JavaScript for your TWiki applications. Since TWiki rendering might interfere with JavaScript code you need to escape it with HTML comments and <pre>
tags:
<script type="text/javascript"> <!-- Hide JavaScript and <pre> escape TWiki rendering ... put your JavaScript code here... // Stop hiding and stop </pre> escaping TWiki rendering --> </script>
Being able to create links without any formatting required is a core TWiki feature, made possible with WikiWords. New TWiki linking rules are a simple extension of the syntax that provide a new set of flexible options.
http://...
, https://...
, ftp://...
, gopher://...
, news://...
, file://...
, telnet://...
and mailto:...@...
are linked automatically.
name@domain.com
are linked automatically.
[[Square bracket rules]]
let you easily create non-WikiWord links.
[[http://yahoo.com Yahoo home page]]
as an easier way of doing external links with descriptive text for the link, such as Yahoo home page.
Variables are names that are enclosed in percent signs %
that are expanded on the fly.
%TOC%
: Automatically generates a table of contents based on headings in a topic - see the top of this page for an example.
%WEB%
: The current web, is TWiki.
%TOPIC%
: The current topic name, is TextFormattingRules.
%ATTACHURL%
: The attachment URL of the current topic. Example usage: If you attach a file to a topic you can refer to it as %ATTACHURL%/image.gif
to show the URL of the file or the image in your text.
%INCLUDE{"SomeTopic"}%
: Server side include, includes another topic. The current TWiki web is the default web. Example: %INCLUDE{"TWiki.SiteMap"}%
%SEARCH{"sushi"}%
: Inline search showing the search result embedded in a topic. FormattedSearch gives you control over formatting, used to create web-based applications.
%BR%
to start a new line.
%RED% Red %ENDCOLOR% and %BLUE% blue %ENDCOLOR% colors
to get: Red and blue colors.
%H% Help, %T% Tip, %X% Alert
to get: Help, Tip, Alert. For more info see TWikiDocGraphics.
!%SOMEVARIABLE%
to get: %SOMEVARIABLE%.
Plugins provide additional text formatting capabilities and can extend the functionality of TWiki into many other areas. For example, the optional SpreadSheetPlugin lets you create a spreadsheet with the same basic notation used in TWiki tables.
Available Plugins are located in the Plugins web on TWiki.org. Currently enabled plugins on this TWiki installation, as listed by %PLUGINDESCRIPTIONS%
:
*_text_*
as bold italic text.
ExternalSite:Page
text to external sites based on aliases defined in the InterWikis topic
"$SUM( $ABOVE() )"
to tables located in TWiki topics.
Check on current Plugin status and settings for this site in TWikiPreferences.
TWiki formatting rules are fairly simple to use and quick to type. However, there are some things to watch out for, taken from the TextFormattingFAQ:
<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'
.
-- TWiki:Main.MikeMannix - 02 Dec 2001
-- TWiki:Main.PeterThoeny - 01 Aug 2004
Special text strings expand on the fly to display user data or system info
TWikiVariables are text strings - %VARIABLE%
- that expand into content whenever a page is rendered for viewing. VARIABLES
are replaced by data, either user-entered or automatically generated by TWiki (like the date, or the current username). There are predefined variables, and Preference variables that you can configure. You can also define custom variables, with new names and values.
Notes:
!%TOPIC%
to get %TOPIC%.
Most predefined variables return values that were either set in the lib/twiki.cfg
file, when TWiki was installed, or taken from server info (like current username, or date and time). Many of the variables let you format the appearance of the display results.
%INCLUDINGTOPIC%
, %INCLUDE%
, and the mighty %SEARCH%
.
This version of TWiki - 04 Sep 2004 $Rev: 1742 $ - expands the following variables (enclosed in %
percent signs):
%ATTACHURL%
/pub/TWiki/TWikiVariablesAtoM
%ATTACHURL%/image.gif
%ATTACHURLPATH%
/pub/TWiki/TWikiVariablesAtoM
%TOPIC%
if there is no INCLUDE
%BASETOPIC%
%WEB%
in case there is no include.
%BASEWEB%
%DISPLAYTIME%
24 Jul 2020 - 08:36
%GMTIME%
%DISPLAYTIME{"format"}%
%DISPLAYTIME{"$hou:$min"}%
expands to 08:36
%ENCODE{"string"}%
Parameter: | Description: | Default: |
---|---|---|
"string" | String to encode | required (can be empty) |
type="entity" | Encode special characters into HTML entities, like a double quote into " | URL encoding |
type="url" | Encode special characters for URL parameter use, like a double quote into %22 | (this is the default) |
%ENCODE{"spaced name"}%
expands to spaced%20name
%FORMFIELD{"fieldname"}%
Parameter: | Description: | Default: |
---|---|---|
"fieldname" | The name of a TWiki form field | required |
topic="..." | Topic where form data is located. May be of the form Web.TopicName | Current topic |
format="..." | Format string. $value expands to the field value | "$value" |
default="..." | Text shown when no value is defined for the field | "" |
alttext="..." | Text shown when field is not found in the form | "" |
%FORMFIELD{"ProjectName" topic="Projects.SushiProject" default="(not set)" alttext="ProjectName field found"}%
%GMTIME%
24 Jul 2020 - 08:36
%GMTIME{"format"}%
Variable: | Unit: | Example |
---|---|---|
$seconds | seconds | 59 |
$minutes | minutes | 59 |
$hours | hours | 23 |
$day | day of month | 31 |
$wday | day of the Week (Sun, Mon, Tue, Wed, Thu, Fri, Sat) | Thu |
$month | month in ISO format | Dec |
$mo | 2 digit month | 12 |
$year | 4 digit year | 1999 |
$ye | 2 digit year | 99 |
$tz | either "GMT" (if set to gmtime), or "Local" (if set to servertime) | GMT |
$iso | ISO format timestamp | 2020-07-24T08:36Z |
$rcs | RCS format timestamp | 2020/07/24 08:36:43 |
$http | E-mail & http format timestamp | Fri, 24 Jul 2020 08:36:43 GMT |
%GMTIME{"$day $month, $year - $hour:$min:$sec"}%
expands to 24 Jul, 2020 - 08:36:43
%HOMETOPIC%
WebHome
, renders as WebHome
%HTTP_HOST%
program-transformation.org
%ICON{"type"}%
bmp
, doc
, gif
, hlp
, html
, mp3
, pdf
, ppt
, txt
, xls
, xml
, zip
%ICON{"pdf"}%
expands to
%INCLUDE{"page" ...}%
Parameter: | Description: | Default: |
---|---|---|
"SomeTopic" | The name of a topic located in the current web, i.e. %INCLUDE{"WebNotify"}% | |
"Web.Topic" | A topic in another web, i.e. %INCLUDE{"TWiki.SiteMap"}% | |
"http://..." | A full qualified URL, i.e. %INCLUDE{"http://twiki.org/"}% Note if the URL resolves to an attachment file on the server this will automatically translate to a server-side include. | |
pattern="..." | A RegularExpression pattern to include a subset of a topic or page | none |
rev="1.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) | %INCLUDE- WARNING% preferences setting |
%TOPIC%
in case there is no include
%INCLUDINGTOPIC%
%WEB%
if there is no INCLUDE.
%INCLUDINGWEB%
%MAINWEB%
Main
%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 | 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 | current topic |
title="Title" | Text that is prefixed to any search results | empty |
default="none" | Default text shown if no search hit | empty |
%METASEARCH{type="topicmoved" web="%WEB%" topic="%TOPIC%" title="This topic used to exist and was moved to: "}%
%METASEARCH{type="parent" web="%WEB%" topic="%TOPIC%" title="Children: "}%
%NOTIFYTOPIC%
WebNotify
, renders as WebNotify
$TWiki::Plugins::VERSION
number, also indicating the version of the TWikiFuncModule
%PLUGINVERSION{}%
1.025
%PLUGINVERSION{"name"}%
%PLUGINVERSION{"DefaultPlugin"}%
expands to 1.021
%PUBURL%
/pub
%PUBURL%/%WEB%/OtherTopic/image.gif
%PUBURLPATH%
/pub
%REMOTE_ADDR%
10.233.1.1
%REMOTE_PORT%
33216
%REMOTE_USER%
%REVINFO%
r1.1 - 14 Aug 2004 - 07:54 - PeterThoeny
%REVINFO{"format"}%
Parameter: | Description: | Default: |
---|---|---|
"format" | Format of revision information, see supported variables below | "r1.$rev - $date - $wikiusername" |
web="..." | Name of web | Current web |
topic="..." | Topic name | Current topic |
rev="1.5" | Specific revison number | Latest revision |
Variable: | Unit: | Example |
---|---|---|
$web | Name of web | Current web |
$topic | Topic name | Current topic |
$rev | Revison number. Prefix r1. to get the usual r1.5 format | 5 |
$date | Revision date | 11 Jul 2004 |
$username | Login username of revision | jsmith |
$wikiname | WikiName of revision | JohnSmith |
$wikiusername | WikiName with Main web prefix | Main.JohnSmith |
%REVINFO{"$date - $wikiusername" rev="1.1"}%
returns revision info of first revision
%SCRIPTURL%
%SCRIPTURL%/viewauth%SCRIPTSUFFIX%/%WEB%/%TOPIC%
which expands to /viewauth/TWiki/TWikiVariablesNtoZ
%SCRIPTURLPATH%
.pl
or .cgi
%SCRIPTSUFFIX%
%SEARCH{"text" ...}%
Parameter: | Description: | Default: |
---|---|---|
"text" | Search term. Is a keyword search, literal search or regular expression search, depending on the type parameter. SearchHelp has more | required |
search="text" | (Alternative to above) | N/A |
web="Name" web="Main, Know" web="all" | Wiki web to search: A web, a list of webs separated by comma, or all webs. [2] | Current web |
topic="WebPreferences" topic="*Bug" | Limit search to topics: A topic, a topic with asterisk wildcards, or a list of topics separated by comma. | All topics in a web |
excludetopic="Web*" excludetopic="WebHome, WebChanges" | Exclude topics from search: A topic, a topic with asterisk wildcards, or a list of topics separated by comma. | None |
type="keyword" type="literal" type="regex" | Do a keyword search like soap "web service" -shampoo ; a literal search like web service ; or RegularExpression search like soap;web service;!shampoo | %SEARCHVAR- DEFAULTTYPE% preferences setting (literal) |
scope="topic" scope="text" scope="all" | Search topic name (title); the text (body) of topic; or all (both) | "text" |
order="topic" order="created" order="modified" order="editby" order= | Sort the results of search by the topic names, topic creation time, last modified time, last editor, or named field of TWikiForms. The sorting is done web by web; in case you want to sort across webs, create a formatted table and sort it with TablePlugin's initsort | Sort by topic name |
limit="all" limit="16" | Limit the number of results returned. This is done after sorting if order is specified | All results |
reverse="on" | Reverse the direction of the search | Ascending search |
casesensitive="on" | Case sensitive search | Ignore case |
nosummary="on" | Show topic title only | Show topic summary |
bookview="on" | BookView search, e.g. show complete topic text | Show topic summary |
nosearch="on" | Suppress search string | Show search string |
noheader="on" | Suppress search header Topics: Changed: By: | Show search header |
nototal="on" | Do not show number of topics found | Show number |
header="..." format="..." | Custom format results: see FormattedSearch for usage, variables & examples | Results in table |
expandvariables="on" | Expand variables before applying a FormattedSearch on a search hit. Useful to show the expanded text, e.g. to show the result of a SpreadSheetPlugin %CALC{}% instead of the formula | Raw text |
multiple="on" | Multiple hits per topic. Each hit can be formatted. The last token is used in case of a regular expression ";" and search | Only one hit per topic |
separator=", " | Line separator between hits | Newline "$n" |
%SEARCH{"wiki" web="Main" scope="topic"}%
%SEARCH{"FAQ" scope="topic" nosearch="on" nototal="on" header="| *Topic: * | *Summary: * |" format="| $topic | $summary |"%
(displays results in a table with header - details)
%TABLE{}%
variable just before the %SEARCH{}%
to alter the output of a search. Example: %TABLE{ tablewidth="90%" }%
web="all"
search if you define a NOSEARCHALL=on
variable in its WebPreferences
%SERVERTIME%
24 Jul 2020 - 08:36
%GMTIME%
%SERVERTIME{"format"}%
%SERVERTIME{"$hou:$min"}%
expands to 08:36
%SPACEDTOPIC%
TWiki%20*Variables%20*Nto%20*Z
%STOPINCLUDE%
variable. A normal view of the topic shows everyting exept the %STARTINCLUDE%
variable itself.
%STARTINCLUDE%
%STATISTICSTOPIC%
WebStatistics
, renders as WebStatistics
%STOPINCLUDE%
variable itself.
%STOPINCLUDE%
%TOC%
%TOC{"SomeTopic" ...}%
"---++ text"
) and HTML ("<h2>text</h2>"
) are taken into account. Any heading text after "!!"
is excluded from the TOC; for example, write "---+!! text"
if you do not want to list a header in the TOC
Parameter: | Description: | Default: |
---|---|---|
"TopicName" | topic name | Current topic |
web="Name" | Name of web | Current web |
depth="2" | Limit depth of headings shown in TOC | 6 |
title="Some text" | Title to appear at top of TOC | none |
%TOC{depth="2"}%
%TOC{"TWikiDocumentation" web="TWiki" title="Contents:"}%
%TOPIC%
TWikiVariablesNtoZ
, renders as TWikiVariablesNtoZ
$name
variable gets expanded to the topic name; the $web
variable gets expanded to the name of the web.
%TOPICLIST{"format" ...}%
Parameter: | Description: | Default: |
---|---|---|
"format" | Format of one line, may include $name and $web variables | "$name" |
format="format" | (Alternative to above) | "$name" |
separator=", " | line separator | "\n" (new line) |
web="Name" | Name of web | Current web |
%TOPICLIST{" * $web.$name"}%
creates a bullet list of all topics
%TOPICLIST{separator=", "}%
creates a comma separated list of all topics
%TOPICLIST{" <option>$name</option>"}%
creates an option list (for drop down menus)
%TWIKIWEB%
TWiki
%URLPARAM{"name"}%
Parameter: | Description: | Default: |
---|---|---|
"name" | The name of a URL parameter | required |
default="..." | Default value in case parameter is empty or missing | empty string |
newline="<br />" | Convert newlines in textarea to other delimiters | no conversion |
encode="entity" | Encode special characters into HTML entities, like a double quote into " . This is needed if text is put into an HTML form field | no encoding |
encode="url" | Encode special characters for URL parameter use, like a double quote into %22 | no encoding |
multiple="on" multiple="[[$item]]" | If set, gets all selected elements of a <select multiple="multiple"> tag. A format can be specified, with $item indicating the element, e.g. multiple="Option: $item" | first element |
separator=", " | Separator between multiple selections. Only relevant if multiple is specified | "\n" (new line) |
%URLPARAM{"skin"}%
returns print
for a .../view/TWiki/TWikiVariablesNtoZ?skin=print
URL. Test this?:
jsmith
, WIKINAME like JohnSmith
and WIKIUSERNAME like Main.JohnSmith
. A user is a TWikiGuest in case the topic is not authenticated
%USERNAME%
guest
%VAR{"NAME" web="Web"}%
%WEBBGCOLOR%
of the Main web write %VAR{"WEBBGCOLOR" web="Main"}%
, which expands to #EEEEAA
%WEB%
TWiki
NOSEARCHALL=on
preference variable. The "format"
defines the format of one web item. The $name
variable gets expanded to the name of the web, $qname
gets expanded to double quoted name, $marker
to marker
where web matches selection
.
%WEBLIST{"format" ...}%
Parameter: | Description: | Default: |
---|---|---|
"format" | Format of one line, may include $name variable | "$name" |
format="format" | (Alternative to above) | "$name" |
separator=", " | line separator | "\n" (new line) |
webs="public" | comma sep list of Web, public expands to all non-hidden | "public" |
marker="selected" | Text for $marker where item matches selection , otherwise equals "" | "selected" |
selection="%WEB%" | Current value to be selected in list | section="%WEB%" |
%WEBLIST{" * [[$name.WebHome]]"}%
creates a bullet list of all webs.
%WEBLIST{"<option $marker value=$qname>$name</option>" webs="Trash,public" selection="TWiki" separator=" "}%
Dropdown of all public Webs + Trash Web, current Web highlighted.
%WEBPREFSTOPIC%
WebPreferences
, renders as WebPreferences
%WIKIHOMEURL%
http://your.domain.com/twiki
%WIKINAME%
TWikiGuest
%WIKIPREFSTOPIC%
TWikiPreferences
, renders as TWikiPreferences
%WIKITOOLNAME%
TWiki
%WIKIUSERNAME%
Main.TWikiGuest
, renders as TWikiGuest
%WIKIUSERSTOPIC%
TWikiUsers
, with Main prefix renders as TWikiUsers
%WIKIVERSION%
04 Sep 2004 $Rev: 1742 $
Note: Above text is included from TWikiVariablesAtoM and TWikiVariablesNtoZ
Additional variables are defined in the preferences topics:
Variable: | Level: | What: | Expands to: |
---|---|---|---|
%ALLOWTOPICCHANGE% |
(any topic) | List of users and groups who are allowed to change the current topic. (More in TWikiAccessControl) | TWikiAdminGroup |
%ALLOWTOPICRENAME% |
(any topic) | List of users and groups who are allowed to rename the current topic. (More in TWikiAccessControl) | TWikiAdminGroup |
%ALLOWWEBCHANGE% |
WL | List of users and groups who are allowed to change topics in the TWiki web. (More in TWikiAccessControl) | TWikiAdminGroup |
%ALLOWWEBRENAME% |
WL | List of users and groups who are allowed to rename topics in the TWiki web. (More in TWikiAccessControl) | TWikiAdminGroup |
%ATTACHLINKBOX% |
SL , UL | Default state of the link check box in the attach file page. Check box is initially checked if value is set to CHECKED , unchecked if empty. If checked, a link is created to the attached file at the end of the topic. Value is: |
|
%DENYTOPICCHANGE% |
(any topic) | List of users and groups who are not allowed to change the current topic. (More in TWikiAccessControl) | %DENYTOPICCHANGE% |
%DENYTOPICRENAME% |
(any topic) | List of users and groups who are not allowed to rename the current topic. (More in TWikiAccessControl) | %DENYTOPICRENAME% |
%DENYWEBCHANGE% |
WL | List of users and groups who are not allowed to change topics in the TWiki web. (More in TWikiAccessControl) | |
%DENYWEBRENAME% |
WL | List of users and groups who are not allowed to rename topics in the TWiki web. (More in TWikiAccessControl) | |
%DONTNOTIFYCHECKBOX% |
SL , UL | Default state of the "Minor Changes, Don't Notify" (DontNotify) check box in preview. Check box is initially checked if Set DONTNOTIFYCHECKBOX = checked="checked" , or unchecked if empty. Value is: |
|
%EDITBOXHEIGHT% |
SL , UL | Vertical size of edit box, is 42 |
42 |
%EDITBOXWIDTH% |
SL , UL | Horizontal size of edit box, is 100 |
100 |
%EDITBOXSTYLE% |
SL , UL | Style of text edit box. Set to width: 99% for full window width (default; overwrites the EDITBOXWIDTH setting), or width: auto to disable. Value is: width: 99% |
width: 99% |
%FINALPREFERENCES% |
SL , WL | List of preferences that are not allowed to be overridden by next level preferences | ATTACHFILESIZELIMIT, PREVIEWBGIMAGE, WIKITOOLNAME, WIKIWEBMASTER, SMTPMAILHOST, SMTPSENDERHOST, ALLOWWEBMANAGE, READTOPICPREFS, TOPICOVERRIDESUSER, ALLOWTOPICCHANGE, ALLOWTOPICRENAME, ALLOWWEBMANAGE, NOSEARCHALL, ATTACHFILESIZELIMIT, WIKIWEBMASTER, WEBCOPYRIGHT, WEBTOPICLIST, DENYWEBVIEW, ALLOWWEBVIEW, DENYWEBCHANGE, ALLOWWEBCHANGE, DENYWEBRENAME, ALLOWWEBRENAME |
%HTTP_EQUIV_ON_EDIT% |
SL , UL | http-equiv meta tags for edit script. | |
%HTTP_EQUIV_ON_PREVIEW% |
SL , UL | http-equiv meta tags for preview script. | |
%HTTP_EQUIV_ON_VIEW% |
SL | http-equiv meta tags for view, rdiff, attach, search* scripts. | |
%NEWTOPICBGCOLOR% |
SL , UL | Background color of non existing topic. ( UL needs authentication for topic views ) | #FFFFCE |
%NEWTOPICFONTCOLOR% |
SL , UL | Font color of non existing topic. ( UL needs authentication for topic views ) | #0000FF |
%NOSEARCHALL% |
WL | Exclude web from a web="all" search (set variable to on for hidden webs) |
|
%RELEASEEDITLOCKCHECKBOX% |
SL , UL | Default state of the "Release edit lock" (UnlockTopic) check box in preview. Checkbox is initially checked if Set RELEASEEDITLOCKCHECKBOX = checked="checked" , or unchecked if empty. If checked, make sure to click on Edit to do more changes; do not go back in your browser to the edit page, or you risk that someone else will edit the topic at the same time! Value is: |
|
%WEBBGCOLOR% |
WL | Background color of web | #FFD8AA |
%WEBCOPYRIGHT% |
SL , WL | Copyright notice (bottom right corner of topics) | Copyright © 1999-2020 by the contributing authors.
All material on this collaboration platform is the property of the contributing authors. Ideas, requests, problems regarding TWiki? Send feedback |
%WEBTOPICLIST% |
WL | Common links of web (second line of topics) | Welcome | Register | Changes | Topics | Index | Search | Go |
%WIKIWEBLIST% |
SL | List of TWiki webs (in upper right corner of topics) | Main | TWiki | Sandbox |
%WIKIWEBMASTER% |
SL | Webmaster email address (sender of email notifications) , is webmaster@strategoxt.org | webmaster@strategoxt.org |
Note: There are some more useful variables defined in the TWikiPreferences like %BR%
for line break, colors like %RED%
for colored text and small icons like %H%
for a Help icon.
Set VARIABLENAME = value
Set VARIABLENAME = value
Example: Create a custom logo variable the TWiki web
- To place a logo anywhere in a web by typing
%MYLOGO%
, define the Variable on the web's WebPreferences page, 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, ex:LogoTopic
:
Set MYLOGO = %PUBURL%/TWiki/LogoTopic/mylogo.gif
-- TWiki:Main.PeterThoeny - 14 Aug 2004
-- TWiki:Main.MikeMannix - 12 May 2002
Each topic can have one or more files of any type attached to it by using the Attach screen to upload (or download) files from your local PC. Attachments are stored under revision control: uploads are automatically backed up; all previous versions of a modified file can be retrieved.
File Attachments can be used to create powerful customized groupware solutions, like file sharing and document management systems, and quick Web page authoring.
Attach
link at the bottom of the page. The Attach
screen lets you browse for a file, add a comment, and upload it. The uploaded file will show up in the File Attachment table.
*.php
files are renamed to *.php.txt
so that no one can place code that would be read in a .php file.
%ATTACHFILESIZELIMIT%
variable of the TWikiPreferences, currently set at 100000 KB.
An attachment can be moved between topics.
Manage
on the Attachment to be moved.
Move
. The attachment and its version history are moved. The original location is stored as topic Meta Data.
Move unwanted Attachments to web Trash
, topic TrashAttachment
.
Attach
file: Sample.txt
Edit
topic and enter: %ATTACHURL%/Sample.txt
Preview
: %ATTACHURL%/Sample.txt
text appears as: /pub/TWiki/FileAttachment/Sample.txt, a link to the text file.
%PUBURL%/%WEB%/OtherTopic/Sample.txt
(if it's within the same web)
%PUBURL%/Otherweb/OtherTopic/Sample.txt
(if it's in a different web)
Attach
file: Sample.txt
Edit
topic and write text: %INCLUDE{"%ATTACHURL%/Sample.txt"}%
Attach
file: Smile.gif
Edit
topic and write text: %ATTACHURL%/Smile.gif
Preview
: text appears as /pub/TWiki/FileAttachment/Smile.gif, an image.
Files attached to a topic are displayed in a directory table, displayed at the bottom of the page, or optionally, hidden and accessed when you click Attach.
Attachment Action Size Date Who Comment Sample.txt manage 0.1 K 22 Jul 2000 - 19:37 PeterThoeny Just a sample Smile.gif manage 0.1 K 22 Jul 2000 - 19:38 PeterThoeny Smiley face
Clicking on a Manage
link takes you to a new page that looks like this:
h
means the attachment is hidden, it isn't listed when viewing a topic.
Hide file
checkbox, then click Change properties
.
Form-based input in topics, with name/value pairs stored as Meta Data variables; choose one of multiple forms per web & topic
By adding form-based input to freeform content, you can structure topics with unlimited, easily searchable categories. When forms are enabled for a web and selected in a topic, a single form appears in edit mode, and the contents are rendered as a table when viewed on the display page. You can define unlimited forms per web. For each topic, you can select a template if more than one is defined, or remove forms entirely. Form input values are stored as TWikiMetaData; all data is saved.
Form Templates replace TWikiCategoryTables from the 01-Dec-2000 version of TWiki. - see #FormsVsCategoryTables
A Form Template is simply a page containing your form, defined as a table where each row is one form field.
Input type | Type field | Size field | Value field |
---|---|---|---|
One or more checkboxes | checkbox | number of checkboxes per line | comma list of checkbox labels |
One or more checkboxes, plus Set and Clear buttons | checkbox+buttons | (same) | (same) |
Read-only label text | label | 1 | (unused) |
One or more radio buttons | radio | number of radio buttons per line | comma list of checkbox labels |
Drop-down menu or scrollable box | select | 1 for drop down, 2 and up for scrollable box | comma list of options |
A one-line text field | text | text box width in number of characters | (unused) |
A text box; size is 40x10 (columns x rows) | textarea | columns x rows, e.g. 40x6 | (unused) |
YourForm
, ExpenseReport
, InfoCategory
, RecordReview
, whatever you need.
Name
, Type
, Size
, Values
, and Tooltip message
(see sample below).
Example:WebForm
| *Name* | *Type* | *Size* | *Values* | *Tooltip message* |
| TopicClassification | select | 1 | NoDisclosure, PublicSupported, PublicFAQ | blah blah... |
| OperatingSystem | checkbox | 3 | OsHPUX, OsLinux, OsSolaris, OsWin | blah blah... |
| OsVersion | text | 16 | | blah blah... |
Name Type Size Values Tooltip message TopicClassification select 1 NoDisclosure, PublicSupported, PublicFAQ blah blah... OperatingSystem checkbox 3 OsHPUX, OsLinux, OsSolaris, OsWin blah blah... OsVersion text 16 blah blah...
Forms can also be defined by using form templates that retrieve field values from one or more separate topics:
FormTemplate
topic defines the Form, ex: YourFormTemplate
.
Example: WebFormTemplate
- WebFormTemplate main definition:
Name Type Size Values Tooltip message TopicClassification select 1 blah blah... OperatingSystem checkbox 3 blah blah... OsVersion text 16 blah blah...
Leave theValues
field blank.
- TopicClassification field value definition:
Name Type Tooltip message NoDisclosure option blah blah... PublicSupported option blah blah... PublicFAQ option blah blah...
[[...]]
links can be used to force a link (at present, the [[...][...]]
format is not supported).
Tooltip message
column is used as a tooltip for the field name (only if field name is a WikiName) - you only see the tooltip In edit.
WebTopicEditTemplate
, with field=value
, or, for checkboxes, field=1
.
Forms are enabled on a per web basis. The WEBFORMS
variable in WebPreferences is optional and defines a list of possible form templates. Example:
WEBFORMS
enabled, an extra button is added to the edit view. If the topic doesn't have a Form, an Add Form button appears at the end of the topic. If a Form is present, a Change button appears in the top row of the Form. The buttons open a screen that enables selection of a form specified in WEBFORMS
, or the No form option.
WebTopicEditTemplate
topic in a web and adding a form to it. Initial Form values can be set there.
formtemplate
parameter in the URL. Initial values can then be provided in the URLs or as form values:
name
, ex: ?BugPriority=1
namevalue=1
, ex: ?ColorRed=1
.
WEBFORMS
variable defines alternative forms that can be selected by pressing Change in edit mode.
SubmitExpenseReport
topic where you can create new expense reports, a SubmitVacationRequest
topic, and so on. These can specify the required template topic with its associated form.
The form topic name, fields and values are stored as TWikiMetaData - the order of the field/value pairs is the same as in the template.
SEARCH
and METASEARCH
variables in TWikiVariables, and TWiki Formatted Search for various options.
The Form Template system is a more powerful, flexible replacement for the original TWikiCategoryTable. Data from existing category tables can be imported directly.
Form Templates | Category Tables |
---|---|
defined in topics | defined in templates |
many forms per web | one table per web |
saved as Meta Data | saved as HTML |
Change & Add Form buttons | UseCategory radio button |
On upgrading from the previous TWiki, a Form Template topic has to be built for each web that used a Category Table, recreating the fields and values from the old twikicatitems.tmpl
. The replacement Form Template must be set as the first item in the WebPreferences variable WEBFORMS
. If missing, pages will display, but attempting to edit results in an error message.
The new Form Template system should work with old Category Table data with no special conversion. Data is assigned to Meta variables the first time an imported topic is edited and saved in the new system.
NOTE: If things aren't working correctly, there may be useful entries in data/warning.txt
.
{3 spaces}* Set
statements:
| *Name*|*Type*|*Size*|*Value*|*Tooltip message*|*Attributes*|
| WEBTOPICLIST |textarea| | | List of topics of the %WEB% web |S|
| SITEMAPLIST |select |3| on, | list this web in the Site Map |S|
| SITEMAPWHAT |textarea| | | short web summary |S|
| WEBBGCOLOR |text |8| | Web specific background color |S|
Set WEBFORMS
line
textarea
stuff, and set as you like
Notes:
If it isn't working, double check that the S
attribute has been specified (S for Setting).
If you change the form, the changes will not take affect until you edit and save the preferences' topics again.
Using the TWiki:Plugins.EditTablePlugin on WebPreferencesForm makes adding new prefedrences a breeze.
A possibly unwanted side effect for using forms for the SKINS setting in their personal user topic: because the User Preferences are final you can't have different skins for different webs as the user's setting always wins. A workaround is to simply omit SKIN in the form.
Another example, this one using EditTablePlugin, source:
%EDITTABLE{ header="|*Name*|*Type*|*Size*|*Values*|*Tooltip message*|*Attributes*|" format="|text,20|text,20|text,20|text,20|text,20|text,1|" }%
Result (after some editing):
-- TWiki:Main.JohnTalintyre - 16 Aug 2001
-- TWiki:Main.MikeMannix - 05 Jan 2002
-- TWiki:Main.PeterThoeny - 25 Apr 2004
-- TWiki:Main.MattWilkie - 27 Jul 2004
Definition of the templates used to render all HTML pages displayed in TWiki
The new modular template system offers flexible, easy control over the layout of all TWiki pages. The master template approach groups parts that are shared by several templates - like headers and footers - in a common file. Special variables allow individual layouts to include parts from a master template - variables are mixed with regular HTML markup for template-specific content. Templates are used to define page layout, and also to supply default content for new pages.
Where the old templates were each complete HTML documents, the new templates are defined using variables to include template parts from a master file. You can now change one instance of a common element to update all occurrences; previously, every affected template had to be updated. This simplifies the conversion of templates into XHTML format, and provides a more versatile solution for templates and for TWikiSkins. The new system:
&TWiki::Store::readTemplate()
so that the caller simply gets an expanded template file (the same as before).
%TMPL:<key>%
and %TMPL:<key>{"attr"}%
.
%TMPL:INCLUDE{"file"}%
: Includes a template file. The template directory of the current web is searched first, then the templates root (twiki/templates
).
%TMPL:DEF{"var"}%
: Define a variable. Text between this and the END directive is not returned, but put into a hash for later use.
%TMPL:END%
: Ends variable definition.
%TMPL:P{"var"}%
: Prints a previously defined variable.
twiki.tmpl
master template, like twiki.print.tmpl
, that redefines the header and footer.
There are three types of template:
Common parts, appearing in two or more templates, can be defined in a master template and then shared by others: twiki.tmpl
is the default master template.
Template variable: Defines: %TMPL:DEF{"sep"}% "|" separator %TMPL:DEF{"htmldoctype"}% Start of all HTML pages %TMPL:DEF{"standardheader"}% Standard header (ex: view, index, search) %TMPL:DEF{"simpleheader"}% Simple header with reduced links (ex: edit, attach, oops) %TMPL:DEF{"standardfooter"}% Footer, excluding revision and copyright parts %TMPL:DEF{"oops"}% Skeleton of oops dialog
TWiki uses HTML template files for all actions, like topic view, edit, and preview. This allows you to change the look and feel of all pages by editing just a few template files.
Templates are stored either in the twiki/templates
directory or in user topics. As an example, twiki/templates/view.tmpl
is the template file for the twiki/bin/view
script.
Templates can be overloaded by individual webs.
TWikiSkins can overload the standard templates.
TWiki uses the following search order to determine which template to use:
If a skin is specified If no skin is specified templates/%WEB%/script.skin.tmpl
templates/%WEB%/script.tmpl
templates/script.skin.tmpl
templates/script.tmpl
data/%WEB%/SkinSkinScriptTemplate.txt
data/%WEB%/ScriptTemplate.txt
data/TWiki/SkinSkinScriptTemplate.txt
data/TWiki/ScriptTemplate.txt
Legend:
• script refers to the script name, e.gview
,edit
• Script refers to the same, but with the first character capitalized, e.gView
• skin refers to the skin name, e.gdragon
,pattern
• Skin refers to the same, but with the first character capitalized, e.gDragon
•%WEB%
refers to the current web
Additionally (and primarily for use in %TMPL:INCLUDE{}%
) the template name may be a wiki topic name, specified as Web.Topic
, in which case the search is:
If Web is not specified in the INCLUDE, it defaults to TWiki, and the search to the first type.
If a skin is specified If no skin is specified templates/web/Web.Topic.skin.tmpl
templates/web/Web.Topic.tmpl
templates/Web.Topic.skin.tmpl
templates/Web.Topic.tmpl
data/Web/Topic.txt
Special variables are used in templates, especially in view
, to display meta data.
Template topics define the default text for new topics. There are three types of template topic:
All template topics are located in the TWiki web. The WebTopicEditTemplate can be overloaded. When you create a new topic, TWiki locates a topic to use as a content template according to the following search order:
Topic Name: What it is: WebTopicViewTemplate Error page shown when you try to view a nonexistent topic WebTopicNonWikiTemplate Alert page shown when you try to view a nonexistent topic with a non-WikiName WebTopicEditTemplate Default text shown when you create a new topic.
templatetopic
CGI parameter.
The following variables get expanded when a user creates a new topic based on a template topic:
Variable: Description: %DATE%
Current date, e.g. 24 Jul 2020
%USERNAME%
Login name, e.g. jsmith
%WIKINAME%
WikiName of user, e.g. JohnSmith
%WIKIUSERNAME%
User name, e.g. Main.JohnSmith
%URLPARAM{"name"}%
Value of a named URL parameter %NOP%
A no-operation variable that gets removed. Useful to prevent a SEARCH from hitting an edit template topic; also useful to escape a variable like %URLPARAM%NOP%{...}%
%NOP{ ... }%
A no-operation text that gets removed. Useful to write-protect an edit template topic, but not the topics based this template topic. See notes below. Example:
%NOP{
* Set ALLOWTOPICCHANGE = Main.TWikiAdminGroup
}%
Notes:
%NOP{ ... }%
can span multiple lines.
}%
pattern is "non-greedy", that is, it stops at the first occurance. That means, you need to escape variables with parameters located inside %NOP{ ... }%
: Insert a %NOP%
between }
and %
. Silly example: %NOP{ %GMTIME{"$year"}%NOP%% }%
.
All other variables are unchanged, e.g. are carried over "as is" into the new topic.
Here is an example for creating new topics based on a specific template topic:
The above form asks for a topic name. A hidden input tag named templatetopic
specifies ExampleTopicTemplate as the template topic to use. Here is the HTML source of the form:
<form name="new" action="%SCRIPTURLPATH%/edit%SCRIPTSUFFIX%/%INTURLENCODE{"%WEB%"}%/"> * New example topic: <input type="text" name="topic" value="ExampleTopic%SERVERTIME{$yearx$mox$day}%" size="23" /> <input type="hidden" name="templatetopic" value="ExampleTopicTemplate" /> <input type="hidden" name="topicparent" value="%TOPIC%" /> <input type="hidden" name="onlywikiname" value="on" /> <input type="hidden" name="onlynewtopic" value="on" /> <input type="submit" value="Create" /> (date format is <nop>YYYYxMMxDD) </form>
The edit
scipt understands the following parameters, typically supplied by HTML input fields:
Parameter: Description: topic
Name of topic to create. Can be set in a text field, or is set programmatically (e.g. with a sequential number) onlywikiname
If set, TWiki will complain if the topic name is not a WikiWord onlynewtopic
If set, TWiki will complain if a topic of the same name already exists templatetopic
The name of the template topic, e.g. topic used to copy the initial content topicparent
Sets the parent topic TopicClassification
Assuming the template topic has a form with a field called "TopicClassification", it will set the value of the field contenttype
Optional parameter that defines the application type to write into the CGI header. Defaults to text/html
. May be used to invoke alternative client applicationsanyname
Any parameter can passed to the new topic; if the template topic contains %URLPARAM{"anyname"}%
, it will be replaced by its value
TIP: You can use the %WIKIUSERNAME%
and %DATE%
variables in your topic templates to include the signature of the person creating a new topic. The variables are expanded into fixed text when a new topic is created. The standard signature is:
-- %WIKIUSERNAME% - %DATE%
Attached is an example of an oops based template oopsbase.tmpl
and an example oops dialog oopstest.tmpl
based on the base template. %A% NOTE: This isn't the release version, just a quick, simple demo.
The first line declares a delimiter variable called "sep", used to separate multiple link items. The variable can be called anywhere by writing %TMPL:P{"sep"}%
%TMPL:DEF{"sep"}% | %TMPL:END% <html> <head> <title> %WIKITOOLNAME% . %WEB% . %TOPIC% %.TMPL:P{"titleaction"}%</title> <base href="%SCRIPTURL%/view%SCRIPTSUFFIX%/%WEB%/%TOPIC%"> <meta name="robots" content="noindex"> </head> <body bgcolor="#FFFFFF"> <table width="100%" border="0" cellpadding="3" cellspacing="0"> <tr> <td bgcolor="%WEBBGCOLOR%" rowspan="2" valign="top" width="1%"> <a href="%WIKIHOMEURL%"> <img src="%PUBURLPATH%/wikiHome.gif" border="0"></a> </td> <td> <b>%WIKITOOLNAME% . %WEB% . </b><font size="+2"> <B>%TOPIC%</b> %TMPL:P{"titleaction"}%</font> </td> </tr> <tr bgcolor="%WEBBGCOLOR%"> <td colspan="2"> %TMPL:P{"webaction"}% </td> </tr> </table> --- ++ %TMPL:P{"heading"}% %TMPL:P{"message"}% <table width="100%" border="0" cellpadding="3" cellspacing="0"> <tr bgcolor="%WEBBGCOLOR%"> <td valign="top"> Topic <b>%TOPIC%</b> . { %TMPL:P{"topicaction"}% } </td> </tr> </table> </body>
Each oops template basically just defines some variables and includes the base template that does the layout work.
%TMPL:DEF{"titleaction"}% (test =titleaction=) %TMPL:END% %TMPL:DEF{"webaction"}% test =webaction= %TMPL:END% %TMPL:DEF{"heading"}% Test heading %TMPL:END% %TMPL:DEF{"message"}% Test =message=. Blah blah blah blah blah blah blah blah blah blah blah... * Some more blah blah blah blah blah blah blah blah blah blah... * Param1: %PARAM1% * Param2: %PARAM2% * Param3: %PARAM3% * Param4: %PARAM4% %TMPL:END% %TMPL:DEF{"topicaction"}% Test =topicaction=: [[%WEB%.%TOPIC%][OK]] %TMPL:P{"sep"}% [[%TWIKIWEB%.TWikiRegistration][Register]] %TMPL:END% %TMPL:INCLUDE{"oopsbase"}%
With URL: .../bin/oops/Sandbox/TestTopic2?template=oopstest¶m1=WebHome¶m2=WebNotify
.tmpl
filename extension - it contained unresolved %VARIABLES%
, but could still be previewed directly in a browser.
-- TWiki:Main.CrawfordCurrie - 30 Jun 2004
-- TWiki:Main.PeterThoeny - 15 Aug 2004
-- TWiki:Main.MikeMannix - 14 Sep 2001
-- TWiki:Main.DavidLeBlanc - 11 Mar 2002
Skins overlay regular templates with alternate header/footer layouts; topic text is not affected
Skins are customized TWikiTemplates files. You can use skins to change the look of a TWiki topic, for example, the layout of the header and footer. Rendered text between header and footer does not change. You can also use skins to define an alternate view, like a view optimized for printing.
Skin files are located in the twiki/templates
directory and are named with the syntax: <scriptname>.<skin>.tmpl
. For example, the Printable skin for the view
template is view.print.tmpl
.
Use the existing TWikiTemplates (like view.tmpl
) or skin files as a base for your own skin, name it for example view.myskin.tmpl
.
You can use template variables, TWikiVariables, and other predefined variables to compose your skins. Some commonly used variables in skins:
Variable: | Expanded to: |
---|---|
%WIKILOGOURL% | Link of page logo |
%WIKILOGOIMG% | Image URL of page logo |
%WIKILOGOALT% | Alt text of page logo |
%WEBBGCOLOR% | Web specific background color, defined in the WebPreferences |
%WIKITOOLNAME% | The name of your TWiki site |
%SCRIPTURL% | The script URL of TWiki |
%SCRIPTSUFFIX% | The script suffix, ex: .pl , .cgi |
%WEB% | The name of the current web. Note: It is recommended to URL-encode the variable in form actions with %INTURLENCODE{"%WEB%"}% for proper handling in an internationalized environment |
%TOPIC% | The name of the current topic. Note: It is recommended to URL-encode the variable in form actions with %INTURLENCODE{"%TOPIC%"}% for proper handling in an internationalized environment |
%WEBTOPICLIST% | Common links of current web, defined in the WebPreferences. It includes a #GoBox |
%TEXT% | The topic text, e.g. the content that can be edited |
%META{"form"}% | TWikiForm, if any |
%META{"attachments"}% | FileAttachment table |
%META{"parent"}% | The topic parent |
%EDITTOPIC% | Edit link |
%REVTITLE% | The revision title, if any, ex: (r1.6) |
%REVINFO% | Revision info, ex: r1.6 - 24 Dec 2002 - 08:12 GMT - TWikiGuest |
%WEBCOPYRIGHT% | Copyright notice, defined in the WebPreferences |
%BROADCASTMESSAGE% | Broadcast message at the beginning of your view template, can be used to alert users of scheduled downtimes; is set in TWikiPreferences |
The %WEBTOPICLIST%
includes a "Go" box to jump to a topic. The box also understand URLs, e.g. you can type http://www.google.com/ to jump to an external web site. The feature is handy if you build a skin that has a select box of frequently used links, like Intranet home, employee database, sales database and such. A little JavaScript gets into action on the onSelect method of the select tag to fill the selected URL into the "Go" box field, then submits the form.
Here is an example form that has a select box and the "Go" box for illustration purposes. You need to have JavaScript enabled for this to work:
Although work is underway at TWiki:Codev.CssClassNames, the regular templates files currently do not use style sheets. Many skin developers, however, choose to use them; it helps in separating style from content.
Example: To use a style sheet for the broadcast message, add this to view.myskin.tmpl
:
<style type="text/css"> .broadcastmessage { background: yellow; display:block; border-style:solid;border-width: 2px;border-color:red; } .broadcastmessage strong {color: red} </style>
Then add a div tag to the %BROADCASTMESSAGE%
variable located after the #PageTop
anchor or after the opening form tag:
<div class="broadcastmessage"> %BROADCASTMESSAGE% </div>
The format of standard attachment tables is defined through the use of special TWiki template macros which by default are defined in the templates/twiki.tmpl
template using the %TMPL:DEF
macro syntax described in TWikiTemplates. These macros are:
Macro | Description |
---|---|
ATTACH:files:header | Standard title bar |
ATTACH:files:row | Standard row |
ATTACH:files:footer | Footer for all screens |
ATTACH:files:header:A | Title bar for upload screens, with attributes column |
ATTACH:files:row:A | Row for upload screen |
ATTACH:files:footer:A | Footer for all screens |
Macro | Description |
---|---|
ATTACH:versions:header | Header for versions table on upload screen |
ATTACH:versions:row | Row format for versions table on upload screen |
ATTACH:versions:footer | Footer for versions table on upload screen |
The ATTACH:row
macros are expanded for each file in the attachment table, using the following special tags:
Tag | Description |
---|---|
%A_URL% | URL that will recover the file |
%A_REV% | Revision of this file e.g. "1.1" |
%A_ICON% | A file icon suitable for representing the attachment content |
%A_FILE% | The name of the file |
%A_SIZE% | The size of the file |
%A_DATE% | The date the file was uploaded |
%A_USER% | The user who uploaded it |
%A_COMMENT% | The comment they put in when uploading it |
%A_ATTRS% | The attributes of the file as seen on the upload screen e.g "h" for a hidden file |
Note: it is easy to change the look and feel for an entire site by editing the twiki.tmpl
template file. However, to simplify upgrading, you should avoid doing this. Instead, write a skin-specific template file e.g. attach.myskin.tmpl
and use %TMPL:INCLUDE{attach.myskin.tmpl}%
to include it in each of your skin files. As long as it it included after twiki.tmpl, your macro definitions will override the defaults defined there.
See TWiki:Plugins/SkinPackagingHowTo and TWiki:Plugins/SkinDeveloperFAQ
You can try all installed skins in TWikiSkinBrowser.
A skin can be activated in two ways:
SKIN
Preference variable in TWikiPreferences, one of the WebPreferences, or in a user - TWikiGuest - topic.
Set SKIN = print
?skin=name
to the URL, for this example:
The ?skin=name
URL parameter overrides the SKIN Preference value.
-- TWiki:Main.PeterThoeny - 25 Jul 2004
-- TWiki:Main.CrawfordCurrie - 30 Jun 2004
Inline search feature allows flexible formatting of search result
The %SEARCH{...}%
variable documented in TWikiVariables has a fixed format for the search result, that is, a table consisting of topic names and topic summaries. Use the format="..."
parameter to specify a customized format of the search result. The string of the format parameter is typically a bullet list or table row containing variables (such as %SEARCH{ "food" format="| $topic | $summary |" }%
).
Two parameters can be used to specify a customized search result:
1. header="..."
parameter
Use the header parameter to specify the header of a search result. It should correspond to the format of the format parameter. This parameter is optional.
Example: header="| *Topic:* | *Summary:* |"
2. format="..."
parameter
Use the format parameter to specify the format of one search hit.
Example: format="| $topic | $summary |"
Variables that can be used in the format string:
Name: | Expands To: |
---|---|
$web | Name of the web |
$topic | Topic name |
$topic(20) | Topic name, "- " hyphenated each 20 characters |
$topic(30, -<br />) | Topic name, hyphenated each 30 characters with separator "-<br />" |
$topic(40, ...) | Topic name, shortended to 40 characters with "..." indication |
$parent | Name of parent topic; empty if not set |
$parent(20) | Name of parent topic, same hyphenation/shortening like $topic() |
$text | Formatted topic text. In case of a multiple="on" search, it is the line found for each search hit. |
$locked | LOCKED flag (if any) |
$date | Time stamp of last topic update, e.g. 24 Jul 2020 - 08:36 |
$isodate | Time stamp of last topic update, e.g. 2020-07-24T08:36Z |
$rev | Number of last topic revision, e.g. 1.4 |
$username | Login name of last topic update, e.g. jsmith |
$wikiname | Wiki user name of last topic update, e.g. JohnSmith |
$wikiusername | Wiki user name of last topic update, like Main.JohnSmith |
$createdate | Time stamp of topic revision 1.1 |
$createusername | Login name of topic revision 1.1, e.g. jsmith |
$createwikiname | Wiki user name of topic revision 1.1, e.g. JohnSmith |
$createwikiusername | Wiki user name of topic revision 1.1, e.g. Main.JohnSmith |
$summary | Topic summary |
$formname | The name of the form attached to the topic; empty if none |
$formfield(name) | The field value of a form field; for example, $formfield(TopicClassification) would get expanded to PublicFAQ . This applies only to topics that have a TWikiForm |
$formfield(name, 10) | Form field value, "- " hyphenated each 10 characters |
$formfield(name, 20, -<br />) | Form field value, hyphenated each 20 characters with separator "-<br />" |
$formfield(name, 30, ...) | Form field value, shortended to 30 characters with "..." indication |
$pattern(reg-exp) | A regular expression pattern to extract some text from a topic (does not search meta data; use $formfield instead). In case of a multiple="on" search, the pattern is applied to the line found in each search hit.• Specify a RegularExpression that covers the whole text (topic or line), which typically starts with .* , and must end in .* • Put text you want to keep in parenthesis, like $pattern(.*?(from here.*?to here).*) • Example: $pattern(.*?\*.*?Email\:\s*([^\n\r]+).*) extracts the email address from a bullet of format * Email: ... • This example has non-greedy .*? patterns to scan for the first occurance of the Email bullet; use greedy .* patterns to scan for the last occurance • Limitation: Do not use .*) inside the pattern, e.g. $pattern(.*foo(.*)bar.*) does not work, but $pattern(.*foo(.*?)bar.*) does • Note: Make sure that the integrity of a web page is not compromised; for example, if you include an HTML table make sure to include everything including the table end tag |
$n or $n() | New line |
$nop or $nop() | Is a "no operation". This variable gets removed; useful for nested search |
$quot | Double quote (" ). Alternatively write \" to escape it |
$percnt | Percent sign (% ) |
$dollar | Dollar sign ($ ) |
Write this:
%SEARCH{ "FAQ" scope="topic" nosearch="on" nototal="on" header=" * *Topic: Summary:*" format=" * [[$topic]]: $summary" }%
To get this:
In a web where there is a form that contains a TopicClassification
field, an OperatingSystem
field and an OsVersion
field we could write:
| *Topic:* | *OperatingSystem:* | *OsVersion:* |
%SEARCH{ "[T]opicClassification.*?value=\"[P]ublicFAQ\"" scope="text" regex="on" nosearch="on" nototal="on" format="| [[$topic]] | $formfield(OperatingSystem) | $formfield(OsVersion) |" }%
To get this:
Topic: | OperatingSystem: | OsVersion: |
---|---|---|
IncorrectDllVersionW32PTH10DLL | OsWin | 95/98 |
WinDoze95Crash | OsWin | 95 |
Write this:
%SEARCH{ "__Back to\:__ TWikiFAQ" scope="text" regex="on" nosearch="on" nototal="on" header="TWiki FAQs:" format=" * $pattern(.*?FAQ\:[\n\r]*([^\n\r]+).*) [[$topic][Answer...]]" }%
To get this:
TWiki FAQs:
Search can be nested. For example, search for some topics, then form a new search for each topic found in the first search. The idea is to build the nested search string using a formatted search in the first search.
Here is an example. Let's search for all topics that contain the word "culture" (first search), and let's find out where each topic found is linked from (second search).
%SEARCH{ "culture" format=" * $topic is referenced by: (list all references)" nosearch="on" nototal="on" }%
%SEARCH{ "(topic found in first search)" format="$topic" nosearch="on" nototal="on" separator=", " }%
$percnt
to escape the leading percent of the second search
\"
to escape the double quotes
$dollar
to escape the $
of $topic
$nop
to escape the }%
sequence
Write this:
%SEARCH{ "culture" format=" * $topic is referenced by:$n * $percntSEARCH{ \"$topic\" format=\"$dollartopic\" nosearch=\"on\" nototal=\"on\" separator=\", \" }$nop%" nosearch="on" nototal="on" }%
To get this:
Note: Nested search can be slow, especially if you nest more then 3 times. Nesting is limited to 16 levels. For each new nesting level you need to "escape the escapes", e.g. write $dollarpercntSEARCH{
for level three, $dollardollarpercntSEARCH{
for level four, etc.
Write this:
%SEARCH{ "\.*" scope="topic" regex="on" nosearch="on" nototal="on" order="modified" reverse="on" format="| [[$topic]] | $wikiusername | $date |" limit="7" }%
To get this:
WebStatistics | TWikiGuest | 18 Oct 2016 - 16:57 |
CustomWebMenus | EelcoVisser | 25 Apr 2005 - 19:37 |
CustomSiteMenus | MartinBravenboer | 04 Dec 2004 - 17:12 |
AppendixFileSystem | PeterThoeny | 30 Aug 2004 - 07:14 |
AccessKeys | PeterThoeny | 28 Aug 2004 - 05:53 |
ATasteOfTWiki | PeterThoeny | 22 Aug 2004 - 21:49 |
AdminTools | PeterThoeny | 15 Aug 2004 - 06:58 |
A regular expression search is flexible, but there are limitations. For example, you cannot show all topics that are up to exactly one week old, or create a report that shows all records with invalid form fields or fields within a certain range, etc. You need some additional logic to format output based on a condition:
This requires the TWiki:Plugins.SpreadSheetPlugin. The following example shows all topics that are up to exactly one week old.
Write this:
%CALC{$SET(weekold, $TIMEADD($TIME(), -7, day))}%
%SEARCH{ "." scope="topic" regex="on" nosearch="on" nototal="on" order="modified" reverse="on" format="$percntCALC{$IF($TIME($date) < $GET(weekold), <nop>, | [[$topic]] | $wikiusername | $date | $rev |)}$percnt" limit="100" }%
weekold
variable to the serialized date of exactly one week ago
$percnt
makes sure that the CALC gets executed once for each search hit
weekold
date
<nop>
is returned, which gets removed at the end of the TWiki rendering process
To get this:
Use an HTML form and an embedded formatted search on the same topic. You can link them together with an %URLPARAM{"..."}%
variable. Example:
Write this:
<form action="%SCRIPTURLPATH%/view%SCRIPTSUFFIX%/%WEB%/%TOPIC%"> Find Topics: <input type="text" name="q" size="32" value="%URLPARAM{"q"}%" /> <input type="submit" value="Search" /> </form> Result: %SEARCH{ search="%URLPARAM{"q"}%" format=" * $web.$topic: %BR% $summary" nosearch="on" }%
To get this:
Result: Number of topics: 0
-- TWiki:Main.PeterThoeny - 26 Jul 2004
Additional topic data, program-generated or from TWikiForms, is stored in META
variable name/value pairs
TWikiMetaData uses META
variables to store topic data that's separate from the main free-form content. This includes program-generated info like FileAttachment and topic movement data, and user-defined TWikiForms info. Use META
variables to format and display Meta Data.
%META:<type>{key1="value1" key2="value2" ...}%
name
, this appears first for easier searching (note the order of the variables themselves is defined).
\n
(new line) is represented in values by %_N_
and "
(double-quotes) by %_Q_%
.
Example of Format%META:TOPICINFO{version="1.6" date="976762663" author="PeterThoeny" format="1.0"}% text of the topic %META:TOPICMOVED{from="Codev.OldName" to="Codev.NewName" by="JohnTalintyre" date="976762680"}% %META:TOPICPARENT{name="NavigationByTopicContext"}% %META:FILEATTACHMENT{name="Sample.txt" version="1.3" ... }% %META:FILEATTACHMENT{name="Smile.gif" version="1.1" ... }% %META:FORM{name="WebFormTemplate"}% %META:FIELD{name="OperatingSystem" value="OsWin"}% %META:FIELD{name="TopicClassification" value="PublicFAQ"}%
The current version of Meta Data is 1.0, with support for the following variables.
Key | Comment |
---|---|
version | Same as RCS version |
date | integer, unix time, seconds since start 1970 |
author | last to change topic, is the REMOTE_USER |
format | Format of this topic, will be used for automatic format conversion |
This is optional, exists if topic has ever been moved. If a topic is moved more than once, only the most recent META:TOPICMOVED meta variable exists in the topic, older ones are to be found in the rcs history.
%META:TOPICMOVED{from="Codev.OldName" to="Codev.NewName" by="talintj" date="976762680"}%
Key | Comment |
---|---|
from | Full name, i.e., web.topic |
to | Full name, i.e., web.topic |
by | Who did it, is the REMOTE_USER, not WikiName |
date | integer, unix time, seconds since start 1970 |
Notes:
Key | Comment |
---|---|
name | The topic from which this was created, WebHome if done from Go , othewise topic where ? or form used. Normally just topic, but is full web.topic format if parent is in a different Web. Renaming a Web will then only break a few of these references or they can be scanned and fixed. |
Key | Comment |
---|---|
name | Name of file, no path. Must be unique within topic |
version | Same as RCS revision |
path | Full path file was loaded from |
size | In bytes |
date | integer, unix time, seconds since start 1970 |
user | the REMOTE_USER, not WikiName |
comment | As supplied when file uploaded |
attr | h if hidden, optional |
Extra fields that are added if an attachment is moved:
Key | Comment |
---|---|
movedfrom | full topic name - web.topic |
movedby | the REMOTE_USER, not WikiName |
movedto | full topic name - web.topic |
moveddate | integer, unix time, seconds since start 1970 |
Key | Comment |
---|---|
name | A topic name - the topic represents one of the TWikiForms. Can optionally include the web name (i.e., web.topic), but doesn't normally |
Should only be present if there is a META:FORM entry. Note that this data is used when viewing a topic, the form template definition is not read.
Key | Name |
---|---|
name | Ties to entry in TWikiForms template, is title with all bar alphanumerics and . removed |
title | Full text from TWikiForms template |
value | Value user has supplied via form |
There is no absolute need for Meta Data variables to be listed in a specific order within a topic, but it makes sense to do so a couple of good reasons:
diff
function output appears in a logical order
The recommended sequence is:
META:TOPICINFO
META:TOPICPARENT
(optional)
META:TOPICMOVED
(optional)
META:FILEATTACHMENT
(0 or more entries)
META:FORM
(optional)
META:FIELD
(0 or more entries; FORM required)
When viewing a topic the Raw Text
link can be clicked to show the text of a topic (i.e., as seen when editing). This is done by adding raw=on
to URL. raw=debug
shows the meta data as well as the topic data, ex: debug view for this topic
Meta Data is rendered with the %META% variable. This is mostly used in the view
, preview
and edit
scripts.
Note: Rendering meta data is currently not supported in topic text. As a workaround, use FormattedSearch on the current topic only to render form fields.
Current support covers:
Variable usage: | Comment: |
---|---|
%META{"form"}% | Show form data, see TWikiForms. |
%META{"formfield"}% | Show form field value. Parameter: name="field_name" . Example:%META{ "formfield" name="TopicClassification" }% |
%META{"attachments"}% | Show attachments, except for hidden ones. Options: all="on" : Show all attachments, including hidden ones. |
%META{"moved"}% | Details of any topic moves. |
%META{"parent"}% | Show topic parent. Options: dontrecurse="on" : By default recurses up tree, at some cost. nowebhome="on" : Suppress WebHome. prefix="..." : Prefix for parents, only if there are parents, default "" . suffix="..." : Suffix, only appears if there are parents, default "" . separator="..." : Separator between parents, default is " > " . |
At present, there is no Meta Data support for Plugins. However, the format is readily extendable and the Meta.pm
code that supports the format needs only minor alteration.
-- TWiki:Main.JohnTalintyre - 29 Aug 2001
-- TWiki:Main.MikeMannix - 03 Dec 2001
-- TWiki:Main.PeterThoeny - 15 Aug 2004
Plug-in enhanced feature add-ons, with a Plugin API for developers
You can add Plugins to extend TWiki's functionality, without altering the core program code. A plug-in approach lets you:
Everything to do with TWiki Plugins - demos, new releases, downloads, development, general discussion - is available at TWiki.org, in the TWiki:Plugins web.
TWiki comes with a set of Plugins as part of the standard installation.
TWiki:Plugins
expands to TWiki:Plugins on TWiki.org. You can edit the predefined set of of Wiki-related sites, and add your own
"$SUM( $ABOVE() )"
to tables located in TWiki topics.
Each TWikiPlugin comes with full documentation: step-by-step installation instructions, a detailed description of any special requirements, version details, and a working example for testing.
Most Plugins can be installed in three easy steps, with no programming skills required:
Special Requests: Some Plugins need certain Perl modules to be preinstalled on the host system. Plugins may also use other resources, like graphics, other modules, applications, templates. In these cases, detailed instructions are in the Plugin documentation.
Each Plugin has a standard release page, located in the TWiki:Plugins web at TWiki.org. In addition to the documentation topic (SomePlugin
), there's a separate development page.
Dev
(SomePluginDev
).
To test new Plugins on your installation before making them public, you may want to use one of these two approaches:
twiki/bin
and twiki/lib
directories for the Test version, and adjust the paths in the new lib/TWiki.cfg
. The following directories are shared: twiki/data
, twiki/templates
and twiki/pub
.
DISABLEDPLUGINS
variable in TWikiPreferences. Redefine the DISABLEDPLUGINS
variable in the Sandbox
web and do the testing there.
InstalledPlugins shows which Plugins are: 1) installed, 2) loading properly and 3) what TWiki:Codev.PluginHandlers they invoke. Any failures are shown in the Errors section.
The performance of the system depends on the number of Plugins installed and on the Plugin implementation. Some Plugins impose no measurable performance decrease, some do. For example, outsidePREHandler
is an expensive callback function, or a Plugin might use many Perl libraries that need to be initialized with each page view (unless you run mod_perl). It is recommended to measure the performance with and without a new Plugin. Example for Unix:
time wget -qO /dev/null /view/TWiki/AbcPlugin
In case you need to install an "expensive" Plugin and you need its functionality only in one web you can place the Plugin topic into that web. TWiki will initialize the Plugin only if the Plugin topic is found (which won't be the case for other webs.)
When you finish installing a Plugin, you should be able to read the user instructions and go. In fact, some Plugins require additional settings or offer extra options that you have to select. Also, you may want to make a Plugin available only in certain webs, or temporarily disable it. And may want to list all available Plugins in certain topics. You can handle all of these management tasks with simple procedures.
Installed Plugins can be toggled on or off, site-wide or by web, through TWikiPreferences and individual WebPreferences:
lib/TWiki/Plugins
directory are activated automatically unless disabled by the DISABLEDPLUGINS
Preferences variable in TWikiPreferences. You can optionally list the installed Plugins in the INSTALLEDPLUGINS
Preferences variable. This is useful to define the sequence of Plugin execution, or to specify other webs than the TWiki web for the Plugin topics. Settings in TWikiPreferences are:
Set INSTALLEDPLUGINS = DefaultPlugin, ...
Set DISABLEDPLUGINS = EmptyPlugin, ...
Plugin execution order in TWiki is determined by searching Plugin topics in a specific sequence: First, full web.topicname
name, if specified in INSTALLEDPLUGINS
; next, the TWiki web is searched; and finally, the current web.
Plugin-specific settings are done in individual Plugin topics. Two settings are standard for each Plugin:
Set SHORTDESCRIPTION = Blah blah woof woof.
data/debug.txt
. Set to 0=off or 1=on:
Set DEBUG = 0
%<pluginname>_<var>%
, ex: %DEFAULTPLUGIN_SHORTDESCRIPTION%
shows the description of the DefaultPlugin.
Plugin status variables let you list all active Plugins wherever needed. There are two list formats:
%ACTIVATEDPLUGINS%
variable lists activated Plugins by name. (This variable is displayed in TWikiPreferences for debugging use.)
%PLUGINDESCRIPTIONS%
variable displays a bullet list with a one-line description of each active Plugins. This variable is based on the %<plugin>_SHORTDESCRIPTION%
Preferences variables of individual topics and is shown in TextFormattingRules.
DEMO: Automatically List Active Plugins Using VariablesUsing
%ACTIVATEDPLUGINS%
:
On this TWiki site, the active Plugins are: DefaultPlugin, EditTablePlugin, InterwikiPlugin, RenderListPlugin, SpreadSheetPlugin, TablePlugin.Using
%
:PLUGINDESCRIPTIONS%
You can use any of these active TWiki Plugins:
- DefaultPlugin: This plugin can be used to specify some simple custom rendering rules. It also renders depreciated
*_text_*
as bold italic text.- EditTablePlugin: Edit TWiki tables using edit fields, date pickers and drop down boxes
- InterwikiPlugin: Link
ExternalSite:Page
text to external sites based on aliases defined in the InterWikis topic- RenderListPlugin: Render bullet lists in a variety of formats
- SpreadSheetPlugin: Add spreadsheet calculation like
"$SUM( $ABOVE() )"
to tables located in TWiki topics.- TablePlugin: Control attributes of tables and sorting of table columns
The Application Programming Interface (API) for TWikiPlugins provides the specifications for hooking into the core TWiki code from your external Perl Plugin module. The Plugin API is new to the Production version of TWiki with the 01-Sep-2001 release.
The TWikiFuncModule (lib/TWiki/Func.pm
) implements ALL official Plugin functions. Plugins should ONLY use functions published in this module.
If you use functions not in Func.pm
, you run the risk of creating security holes. Also, your Plugin will likely break and require updating when you upgrade to a new version of TWiki.
In addition to TWiki core functions, Plugins can use predefined hooks, or call backs, listed in the lib/TWiki/Plugins/EmptyPlugin.pm
module.
DISABLE_
from the function name.
outsidePREHandler
and insidePREHandler
are particularly expensive.
Most Plugins use either the commonTagsHandler
or startRenderingHandler
for rendering tasks:
commonTagsHandler:
Use it to expand %XYZPLUGIN%
and %XYZPLUGIN{...}%
variables
startRenderingHandler:
Use it for your own rendering rules or to overload TWiki's internal rendering like [[links]]
TWiki:Codev/StepByStepRenderingOrder helps you decide which rendering handler to use.
eval
block like:eval { require IPC::Run }
return "<font color=\"red\">SamplePlugin: Can't load required modules ($@)</font>" if $@;
To eliminate the incompatibility problems bound to arise from active open Plugin development, a Plugin versioning system is provided for automatic compatibility checking.
$VERSION='0.000'
variable, beginning at 1.000
.
initPlugin
handler should check all dependencies and return TRUE if the initialization is OK or FALSE if something went wrong.
initPlugin
handler).
$TWiki::Plugins::VERSION
in the TWiki::Plugins
module contains the TWiki Plugin API version, currently 1.025.
With a reasonable knowledge of the Perl scripting language, you can create new Plugins or modify and extend existing ones. Basic plug-in architecture uses an Application Programming Interface (API), a set of software instructions that allow external code to interact with the main program. The TWiki Plugin API Plugins by providing a programming interface for TWiki.
A basic TWiki Plugin consists of two elements:
MyFirstPlugin.pm
MyFirstPlugin.txt
The Perl module can be a block of code that connects with TWiki alone, or it can include other elements, like other Perl modules (including other Plugins), graphics, TWiki templates, external applications (ex: a Java applet), or just about anything else it can call.
In particular, files that should be web-accessible (graphics, Java applets ...) are best placed as attachments of the MyFirstPlugin
topic. Other needed Perl code is best placed in a lib/TWiki/Plugins/MyFirstPlugin/
directory.
The Plugin API handles the details of connecting your Perl module with main TWiki code. When you're familiar with the Plugin API, you're ready to develop Plugins.
Copy file lib/TWiki/Plugins/EmptyPlugin.pm
to <name>Plugin.pm
. The EmptyPlugin.pm
module contains mostly empty functions, so it does nothing, but it's ready to be used. Customize it. Refer to the Plugin API specs for more information.
If your Plugin uses its own modules and objects, you must include the name of the Plugin in the package name. For example, write Package MyFirstPlugin::Attrs;
instead of just Package Attrs;
. Then call it using:
use TWiki::Plugins::MyFirstPlugin::Attrs; $var = MyFirstPlugin::Attrs->new();
The Plugin documentation topic contains usage instructions and version details. It serves the Plugin files as FileAttachments for downloading. (The doc topic is also included in the distribution package.) To create a documentation topic:
MyFirstPlugin
, press enter and create the new topic
OUTLINE: Doc Topic Contents
Check the Plugins web on TWiki.org for the latest Plugin doc topic template. Here's a quick overview of what's covered:Syntax Rules: <Describe any special text formatting that will be rendered.>"
Example: <Include an example of the Plugin in action. Possibly include a static HTML version of the example to compare if the installation was a success!>"
Plugin Settings: <Description and settings for custom Plugin %VARIABLES%, and those required by TWiki.>"
- Plugins Preferences <If user settings are needed, explain... Entering values works exactly like TWikiPreferences and WebPreferences: six (6) spaces and then:>"
- Set <EXAMPLE = value added>
Plugin Installation Instructions: <Step-by-step set-up guide, user help, whatever it takes to install and run, goes here.>"
Plugin Info: <Version, credits, history, requirements - entered in a form, displayed as a table. Both are automatically generated when you create or edit a page in the TWiki:Plugins web.>"
A minimum Plugin release consists of a Perl module with a WikiName that ends in Plugin
, ex: MyFirstPlugin.pm
, and a documentation page with the same name(MyFirstPlugin.txt
).
lib/TWiki/Plugins/MyFirstPlugin.pm
data/TWiki/MyFirstPlugin.txt
pub/TWiki/MyFirstPlugin/uparrow.gif
[a required graphic]
MyFirstPlugin.zip
) and add the entire directory structure from Step 1. The archive should look like this:
lib/TWiki/Plugins/MyFirstPlugin.pm
data/TWiki/MyFirstPlugin.txt
pub/TWiki/MyFirstPlugin/uparrow.gif
You can release your tested, packaged Plugin to the TWiki community through the TWiki:Plugins web. All Plugins submitted to TWiki.org are available for download and further development in TWiki:Plugins/PluginPackage. Publish your Plugin in these steps:
MyFirstPlugin
MyFirstPlugin.zip
Dev
, ex: MyFirstPluginDev
. This is the discussion page for future development. (User support for Plugins is handled in TWiki:Support.)
Thank you very much for sharing your Plugin with the TWiki community :-)
Plugins sometimes need to store data. This can be Plugin internal data like cache data, or generated data for the browser like images. The following is a recommendation where to store the data.
In case the Plugin generates data just for internal use, or data which is not specific to a topic, store it in the Plugin's attachment directory.
pubdir/Installweb/FooBarPlugin
Installweb
refers to the name of the web where the Plugin is installed
%PUBURL%/Installweb/FooBarPlugin
_any_name.ext
getPubDir()
to get the attachment root directory
getUrlHost()
and getPubUrlPath()
to build the URL in case you create content for the browser
$installWeb
to get the name of the web where the Plugin is installed
In case the Plugin generates data which is specific to a topic, store it in the topic's attachment directory.
pubdir/Webname/TopicName
%PUBURL%/Webname/TopicName
_FooBarPlugin_any_name.ext
getPubDir()
to get the attachment root directory
getUrlHost()
and getPubUrlPath()
to build the URL in case you create content for the browser
Example code to build the file name:
sub _make_filename { my ( $web, $topic, $name ) = @_; # Create web directory "pub/$web" if needed my $dir = TWiki::Func::getPubDir() . "/$web"; unless( -e "$dir" ) { umask( 002 ); mkdir( $dir, 0775 ); } # Create topic directory "pub/$web/$topic" if needed $dir .= "/$topic"; unless( -e "$dir" ) { umask( 002 ); mkdir( $dir, 0775 ); } return "$dir/_FooBarPlugin_$name"; }
-- TWiki:Main/PeterThoeny - 14 Aug 2004
-- TWiki:Main/AndreaSterbini - 29 May 2001
-- TWiki:Main/MikeMannix - 03 Dec 2001
Official list of stable TWiki functions for Plugin developers
This module defines official funtions that Plugins and add-on scripts can use to interact with the TWiki engine and content.
Plugins should only use functions published in this module. If you use functions in other TWiki libraries you might impose a security hole and you will likely need to change your Plugin when you upgrade TWiki.
The version of the TWiki::Func module is defined by the VERSION number of the
TWiki::Plugins module, currently 1.025. This can be shown by the
%PLUGINVERSION{}%
variable. The "Since" field in the function documentation
refers to the VERSION number and the date that the function was addded.
Description: | Get a session value from the Session Plugin (if installed) |
Parameter: $key | Session key |
Return: $value | Value associated with key; empty string if not set; undef if session plugin is not installed |
Since: | TWiki::Plugins::VERSION 1.000 (27 Feb 2001) |
Description: | Set a session value via the Session Plugin (if installed) |
Parameter: $key | Session key |
Parameter: $value | Value associated with key |
Return: $result | "1" if success; undef if session plugin is not installed |
Since: | TWiki::Plugins::VERSION 1.000 (17 Aug 2001) |
Description: | Get the name of the skin, set by the SKIN preferences variable or the skin CGI parameter |
Return: $skin | Name of skin, e.g. "gnu" . Empty string if none |
Since: | TWiki::Plugins::VERSION 1.000 (29 Jul 2001) |
Description: | Get protocol, domain and optional port of script URL |
Return: $host | URL host, e.g. "http://example.com:80" |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Compose fully qualified URL |
Parameter: $web | Web name, e.g. "Main" |
Parameter: $topic | Topic name, e.g. "WebNotify" |
Parameter: $script | Script name, e.g. "view" |
Return: $url | URL, e.g. "http://example.com:80/cgi-bin/view.pl/Main/WebNotify" |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Get script URL path |
Return: $path | URL path of TWiki scripts, e.g. "/cgi-bin" |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Compose fully qualified view URL |
Parameter: $web | Web name, e.g. "Main" . The current web is taken if empty |
Parameter: $topic | Topic name, e.g. "WebNotify" |
Return: $url | URL, e.g. "http://example.com:80/cgi-bin/view.pl/Main/WebNotify" |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Compose fully qualified "oops" dialog URL |
Parameter: $web | Web name, e.g. "Main" . The current web is taken if empty |
Parameter: $topic | Topic name, e.g. "WebNotify" |
Parameter: $template | Oops template name, e.g. "oopslocked" |
Parameter: $param1 ... $param4 | Parameter values for %PARAM1% ... %PARAM4% variables in template, optional |
Return: $url | URL, e.g. "http://example.com:80/cgi-bin/oops.pl/ Main/WebNotify?template=oopslocked¶m1=joe" |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Get pub URL path |
Return: $path | URL path of pub directory, e.g. "/pub" |
Since: | TWiki::Plugins::VERSION 1.000 (14 Jul 2001) |
Description: | Get CGI query object. Important: Plugins cannot assume that scripts run under CGI, Plugins must always test if the CGI query object is set |
Return: $query | CGI query object; or 0 if script is called as a shell script |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Prints a basic content-type HTML header for text/html to standard out |
Parameter: $query | CGI query object |
Return: | none |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Redirect to URL |
Parameter: $query | CGI query object |
Parameter: $url | URL to redirect to |
Return: | none, never returns |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Extract all parameters from a variable string and returns a hash of parameters |
Parameter: $attr | Attribute string |
Return: %params | Hash containing all parameters. The nameless parameter is stored in key _DEFAULT |
Since: | TWiki::Plugins::VERSION 1.025 (26 Aug 2004) |
%TEST{ "nameless" name1="val1" name2="val2" }%
{...}
to get: "nameless" name1="val1" name2="val2"
my %params = TWiki::Func::extractParameters( $text );
%params
hash contains now: _DEFAULT => "nameless"
name1 => "val1"
name2 => "val2"
Description: | Extract a named or unnamed value from a variable parameter string |
Note: | Function TWiki::Func::extractParameters is more efficient for extracting several parameters |
Parameter: $attr | Attribute string |
Parameter: $name | Name, optional |
Return: $value | Extracted value |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
%TEST{ "nameless" name1="val1" name2="val2" }%
{...}
to get: "nameless" name1="val1" name2="val2"
my $noname = TWiki::Func::extractNameValuePair( $text );
my $val1 = TWiki::Func::extractNameValuePair( $text, "name1" );
my $val2 = TWiki::Func::extractNameValuePair( $text, "name2" );
Description: | Get a preferences value from TWiki or from a Plugin |
Parameter: $key | Preferences key |
Parameter: $web | Name of web, optional. Current web if not specified; does not apply to settings of Plugin topics |
Return: $value | Preferences value; empty string if not set |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
* Set COLOR = red
"MYPLUGIN_COLOR"
for $key
my $color = TWiki::Func::getPreferencesValue( "MYPLUGIN_COLOR" );
* Set WEBBGCOLOR = #FFFFC0
my $webColor = TWiki::Func::getPreferencesValue( "WEBBGCOLOR", "Sandbox" );
Description: | Get a preferences value from your Plugin |
Parameter: $key | Plugin Preferences key w/o PLUGINNAME_ prefix. |
Return: $value | Preferences value; empty string if not set |
Since: | TWiki::Plugins::VERSION 1.021 (27 Mar 2004) |
Description: | Get a preferences flag from TWiki or from a Plugin |
Parameter: $key | Preferences key |
Parameter: $web | Name of web, optional. Current web if not specified; does not apply to settings of Plugin topics |
Return: $value | Preferences flag "1" (if set), or "0" (for preferences values "off" , "no" and "0" ) |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
* Set SHOWHELP = off
"MYPLUGIN_SHOWHELP"
for $key
my $showHelp = TWiki::Func::getPreferencesFlag( "MYPLUGIN_SHOWHELP" );
Description: | Get a preferences flag from your Plugin |
Parameter: $key | Plugin Preferences key w/o PLUGINNAME_ prefix. |
Return: $flag | Preferences flag "1" (if set), or "0" (for preferences values "off" , "no" and "0" , or values not set at all) |
Since: | TWiki::Plugins::VERSION 1.021 (27 Mar 2004) |
Description: | Get toolname as defined in TWiki.cfg |
Return: $name | Name of tool, e.g. "TWiki" |
Since: | TWiki::Plugins::VERSION 1.000 (27 Feb 2001) |
Description: | Get name of Main web as defined in TWiki.cfg |
Return: $name | Name, e.g. "Main" |
Since: | TWiki::Plugins::VERSION 1.000 (27 Feb 2001) |
Description: | Get name of TWiki documentation web as defined in TWiki.cfg |
Return: $name | Name, e.g. "TWiki" |
Since: | TWiki::Plugins::VERSION 1.000 (27 Feb 2001) |
Description: | Get default user name as defined in TWiki.cfg's $defaultUserName |
Return: $loginName | Default user name, e.g. "guest" |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Get Wiki name of logged in user |
Return: $wikiName | Wiki Name, e.g. "JohnDoe" |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Get Wiki name of logged in user with web prefix |
Return: $wikiName | Wiki Name, e.g. "Main.JohnDoe" |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Translate a Wiki name to a login name based on Main.TWikiUsers topic |
Parameter: $wikiName | Wiki name, e.g. "Main.JohnDoe" or "JohnDoe" |
Return: $loginName | Login name of user, e.g. "jdoe" |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Translate a login name to a Wiki name based on Main.TWikiUsers topic |
Parameter: $loginName | Login name, e.g. "jdoe" |
Parameter: $dontAddWeb | Do not add web prefix if "1" |
Return: $wikiName | Wiki name of user, e.g. "Main.JohnDoe" or "JohnDoe" |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Test if logged in user is a guest |
Return: $flag | "1" if yes, "0" if not |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Test if any access restrictions are set for this web, ignoring settings on individual pages |
Parameter: $web | Web name, required, e.g. "Sandbox" |
Return: $flag | "1" if yes, "0" if no |
Since: | TWiki::Plugins::VERSION 1.000 (27 Feb 2001) |
Description: | Check access permission for a topic based on the TWiki.TWikiAccessControl rules |
Parameter: $type | Access type, e.g. "VIEW" , "CHANGE" , "CREATE" |
Parameter: $wikiName | WikiName of remote user, i.e. "Main.PeterThoeny" |
Parameter: $text | Topic text, optional. If empty, topic $web.$topic is consulted |
Parameter: $topic | Topic name, required, e.g. "PrivateStuff" |
Parameter: $web | Web name, required, e.g. "Sandbox" |
Return: $flag | "1" if access may be granted, "0" if not |
Since: | TWiki::Plugins::VERSION 1.000 (27 Feb 2001) |
Description: | Test if web exists |
Parameter: $web | Web name, required, e.g. "Sandbox" |
Return: $flag | "1" if web exists, "0" if not |
Since: | TWiki::Plugins::VERSION 1.000 (14 Jul 2001) |
Description: | Test if topic exists |
Parameter: $web | Web name, optional, e.g. "Main" |
Parameter: $topic | Topic name, required, e.g. "TokyoOffice" , or "Main.TokyoOffice" |
Return: $flag | "1" if topic exists, "0" if not |
Since: | TWiki::Plugins::VERSION 1.000 (14 Jul 2001) |
Description: | Get revision info of a topic |
Parameter: $theWebName | Web name, optional, e.g. "Main" |
Parameter: $theTopic | Topic name, required, e.g. "TokyoOffice" |
Parameter: $theRev | revsion number, or tag name (can be in the format 1.2, or just the minor number) |
Parameter: $attachment | attachment filename |
Return: ( $date, $user, $rev, $comment ) | List with: ( last update date, login name of last user, minor part of top revision number ), e.g. ( 1234561, "phoeny", "5" ) |
$date | in epochSec |
$user | |
$rev | |
$comment | WHAT COMMENT? |
Since: | TWiki::Plugins::VERSION 1.000 (29 Jul 2001) |
Description: | Check if topic has an edit lock by a user |
Parameter: $web | Web name, e.g. "Main" , or empty |
Parameter: $topic | Topic name, e.g. "MyTopic" , or "Main.MyTopic" |
Return: ( $oopsUrl, $loginName, $unlockTime ) | The $oopsUrl for calling redirectCgiQuery(), user's $loginName , and estimated $unlockTime in minutes. The $oopsUrl and $loginName is empty if topic has no edit lock. |
Since: | TWiki::Plugins::VERSION 1.010 (31 Dec 2002) |
Description: | Lock topic for editing, or unlock when done |
Parameter: $web | Web name, e.g. "Main" , or empty |
Parameter: $topic | Topic name, e.g. "MyTopic" , or "Main.MyTopic" |
Parameter: $lock | Set to 1 to lock topic, 0 to unlock |
Return: $oopsUrl | Empty string if OK; the $oopsUrl for calling redirectCgiQuery() in case lock is already taken when trying to lock topic |
Since: | TWiki::Plugins::VERSION 1.010 (31 Dec 2002) |
Description: | Read topic text, including meta data |
Parameter: $web | Web name, e.g. "Main" , or empty |
Parameter: $topic | Topic name, e.g. "MyTopic" , or "Main.MyTopic" |
Parameter: $rev | Topic revision to read, optional. Specify the minor part of the revision, e.g. "5" , not "1.5" ; the top revision is returned if omitted or empty. |
Parameter: $ignorePermissions | Set to "1" if checkAccessPermission() is already performed and OK; an oops URL is returned if user has no permission |
Return: $text | Topic text with embedded meta data; an oops URL for calling redirectCgiQuery() is returned in case of an error |
Since: | TWiki::Plugins::VERSION 1.010 (31 Dec 2002) |
Description: | Save topic text, typically obtained by readTopicText(). Topic data usually includes meta data; the file attachment meta data is replaced by the meta data from the topic file if it exists. |
Parameter: $web | Web name, e.g. "Main" , or empty |
Parameter: $topic | Topic name, e.g. "MyTopic" , or "Main.MyTopic" |
Parameter: $text | Topic text to save, assumed to include meta data |
Parameter: $ignorePermissions | Set to "1" if checkAccessPermission() is already performed and OK |
Parameter: $dontNotify | Set to "1" if not to notify users of the change |
Return: $oopsUrl | Empty string if OK; the $oopsUrl for calling redirectCgiQuery() in case of error |
Since: | TWiki::Plugins::VERSION 1.010 (31 Dec 2002) |
my $oopsUrl = TWiki::Func::setTopicEditLock( $web, $topic, 1 );
if( $oopsUrl ) {
TWiki::Func::redirectCgiQuery( $query, $oopsUrl ); # assuming valid query
return;
}
my $text = TWiki::Func::readTopicText( $web, $topic ); # read topic text
# check for oops URL in case of error:
if( $text =~ /^http.*?\/oops/ ) {
TWiki::Func::redirectCgiQuery( $query, $text );
return;
}
# do topic text manipulation like:
$text =~ s/old/new/g;
# do meta data manipulation like:
$text =~ s/(META\:FIELD.*?name\=\"TopicClassification\".*?value\=\")[^\"]*/$1BugResolved/;
$oopsUrl = TWiki::Func::saveTopicText( $web, $topic, $text ); # save topic text
TWiki::Func::setTopicEditLock( $web, $topic, 0 ); # unlock topic
if( $oopsUrl ) {
TWiki::Func::redirectCgiQuery( $query, $oopsUrl );
return;
}
Description: | Get list of all public webs, e.g. all webs that do not have the NOSEARCHALL flag set in the WebPreferences |
Return: @webs | List of all public webs, e.g. ( "Main", "Know", "TWiki" ) |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Get list of all topics in a web |
Parameter: $web | Web name, required, e.g. "Sandbox" |
Return: @topics | Topic list, e.g. ( "WebChanges", "WebHome", "WebIndex", "WebNotify" ) |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Expand all common %VARIABLES% |
Parameter: $text | Text with variables to expand, e.g. "Current user is %WIKIUSER%" |
Parameter: $topic | Current topic name, e.g. "WebNotify" |
Parameter: $web | Web name, optional, e.g. "Main" . The current web is taken if missing |
Return: $text | Expanded text, e.g. "Current user is TWikiGuest" |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Render text from TWiki markup into XHTML as defined in TWiki.TextFormattingRules |
Parameter: $text | Text to render, e.g. "*bold* text and =fixed font=" |
Parameter: $web | Web name, optional, e.g. "Main" . The current web is taken if missing |
Return: $text | XHTML text, e.g. "<b>bold</b> and <code>fixed font</code>" |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Render topic name and link label into an XHTML link. Normally you do not need to call this funtion, it is called internally by renderText() |
Parameter: $pre | Text occuring before the TWiki link syntax, optional |
Parameter: $web | Web name, required, e.g. "Main" |
Parameter: $topic | Topic name to link to, required, e.g. "WebNotify" |
Parameter: $label | Link label, required. Usually the same as $topic , e.g. "notify" |
Parameter: $anchor | Anchor, optional, e.g. "#Jump" |
Parameter: $createLink | Set to "1" to add question linked mark after topic name if topic does not exist;set to "0" to suppress link for non-existing topics |
Return: $text | XHTML anchor, e.g. "<a href="/cgi-bin/view/Main/WebNotify#Jump">notify</a>" |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | This is not a function, just a how-to note. Use: expandCommonVariables("%SEARCH{...}%" ); |
Parameter: $text | Search variable |
Return: $text | Search result in TWiki.FormattedSearch format |
Description: | Format the time in seconds into the desired time string |
Parameter: $time | Time in epoc seconds |
Parameter: $format | Format type, optional. Default e.g. " TWiki::Plugins::VERSION 1.010 (31 Dec 2002) - 19:30" , can be "iso" (e.g. "2002-12-31T19:30Z" ), "rcs" (e.g. "2001/12/31 23:59:59" , "http" for HTTP header format (e.g. "Thu, 23 Jul 1998 07:21:56 GMT" ) |
Parameter: $timezone | either not defined (uses the displaytime setting), "gmtime", or "servertime" |
Return: $text | Formatted time string |
Note: | if you used the removed formatGmTime, add a third parameter "gmtime" |
Since: | TWiki::Plugins::VERSION 1.020 (26 Feb 2004) |
NOTE: | This function is deprecated and should not be used. Use formatTime() instead |
Description: | Format the time to GM time |
Parameter: $time | Time in epoc seconds |
Parameter: $format | Format type, optional. Default e.g. "31 Dec 2002 - 19:30" , can be "iso" (e.g. "2002-12-31T19:30Z" ), "rcs" (e.g. "2001/12/31 23:59:59" , "http" for HTTP header format (e.g. "Thu, 23 Jul 1998 07:21:56 GMT" ) |
Return: $text | Formatted time string |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Get data directory (topic file root) |
Return: $dir | Data directory, e.g. "/twiki/data" |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Get pub directory (file attachment root). Attachments are in $dir/Web/TopicName |
Return: $dir | Pub directory, e.g. "/htdocs/twiki/pub" |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
NOTE: | The following function is deprecated and should not be used. Use readTopicText() instead |
Description: | Read topic text and meta data, regardless of access permissions. |
Parameter: $web | Web name, required, e.g. "Main" |
Parameter: $topic | Topic name, required, e.g. "TokyoOffice" |
Return: ( $meta, $text ) | Meta data object and topic text |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Read a template or skin file. Embedded template directives get expanded |
Parameter: $name | Template name, e.g. "view" |
Parameter: $skin | Skin name, optional, e.g. "print" |
Return: $text | Template text |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Read text file, low level. NOTE: For topics use readTopicText() |
Parameter: $filename | Full path name of file |
Return: $text | Content of file |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
Description: | Save text file, low level. NOTE: For topics use saveTopicText() |
Parameter: $filename | Full path name of file |
Parameter: $text | Text to save |
Return: | none |
Since: | TWiki::Plugins::VERSION 1.000 (7 Dec 2002) |
TODO: | This should return an error for the different failure modes. |
Description: | Log Warning that may require admin intervention to data/warning.txt |
Parameter: $text | Text to write; timestamp gets added |
Return: | none |
Since: | TWiki::Plugins::VERSION 1.020 (16 Feb 2004) |
Description: | Log debug message to data/debug.txt |
Parameter: $text | Text to write; timestamp gets added |
Return: | none |
Since: | TWiki::Plugins::VERSION 1.020 (16 Feb 2004) |
Description: | Retrieves a TWiki predefined regular expression |
Parameter: $regexName | Name of the regular expression to retrieve. See notes below |
Return: | String or precompiled regular expression matching as described below |
Since: | TWiki::Plugins::VERSION 1.020 (9 Feb 2004) |
Notes: TWiki internally precompiles several regular expressions to represent various string entities in an I18N-compatible manner. Plugins are encouraged to use these in matching where appropriate. The following are guaranteed to be present; others may exist, but their use is unsupported and they may be removed in future TWiki versions. Those which are marked "CC" are for use within character classes and may not produce the desired results outside of them.
Name | Matches | CC |
---|---|---|
upperAlpha | Upper case characters | Y |
lowerAlpha | Lower case characters | Y |
mixedAlpha | Alphabetic characters | Y |
mixedAlphaNum | Alphanumeric charactecs | Y |
wikiWordRegex | WikiWords | N |
Example:
my $upper = TWiki::Func::getRegularExpression("upperAlpha"); my $alpha = TWiki::Func::getRegularExpression("mixedAlpha"); my $capitalized = qr/[$upper][$alpha]+/;
Description: | Checks a list of Perl dependencies at runtime |
Parameter: $moduleName | Context description e.g. name of the module being checked |
Parameter: $dependenciesRef | Reference of list of hashes containing dependency information; see notes below |
Return: $error | undef if dependencies are OK, an error message otherwise |
Since: | TWiki::Plugins::VERSION 1.025 (01 Aug 2004) |
The dependencies are expressed as a list of hashes. Each hash contains
the name of a package and (optionally) a boolean constraint on the VERSION
variable in that package. It is usually used from the initPlugin
method
like this:
if( $TWiki::Plugins::VERSION >= 1.025 ) { my @deps = ( { package => 'TWiki::Plugins::CalendarPlugin', constraint => '>= 5.030' }, { package => 'Time::ParseDate' }, { package => 'Apache::VMonitor' } ); my $err = TWiki::Func::checkDependencies( $pluginName, \@deps ); if( $err ) { TWiki::Func::writeWarning( $err ); print STDERR $err; # print to webserver log file return 0; # plugin initialisation failed } }
Copyright (C) 2000-2004 Peter Thoeny, Peter@Thoeny.com
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details, published at http://www.gnu.org/copyleft/gpl.html
NOTE: Above text is copied from the TWiki::Plugins/PerlDocPlugin output of TWiki::Func
in twiki
format. In case you want to get dynamically updated documentation based on the actual Perl module, install the PerlDocPlugin and replace above text with %PERLDOC{"TWiki::Func"}%
.
-- PeterThoeny - 31 Dec 2002
Utilities for searching, navigation, and monitoring site activity
TWikiSiteTools include utilities for navigating, searching and keeping up with site activity. Preferences can be configured by web or site-wide. You are currently in the TWiki web. In particular, TWiki provides two highly configurable, automated site monitoring tools, WebNotify, to email alerts when topics are edited, and WebStats, to generate detailed activity reports.
Each TWiki web has an automatic email alert service that sends a list of recent changes on a preset schedule, like once a day. Users can subscribe and unsubscribe using WebNotify in each web. The Perl script mailnotify
is called by a background process at regular intervals. The script sends an automated email to subscribed users if topics were changed in a web since the script was last run.
%NOTIFYTOPIC%
Format: TWiki handles entries in bullet list (<space><space><space>*
) format containing the WikiName of a user; a WikiName with e-mail address; or a TWikiGroup. Examples:
Main.FredBloggs
Main.FredBloggs - secondary@home.com
Main.EngineeringGroup
The first entry is the default form, the notification gets sent to the e-mail address specified in the user's home page. The second entry lists an alternative e-mail address. The third entry specifies a group, the notification gets sent to each member of the group.
You can also use %MAINWEB%
instead of Main
, but this is not necessary even if you have renamed the main web by configuring $mainWebname
in TWiki.cfg
.
TWiki will use the Net::SMTP
module if it is installed on your system. Set this with the SMTPMAILHOST
variable in TWikiPreferences.
The notify e-mail uses the default changes.tmpl
template, or a skin if activated in the TWikiPreferences.
mailnotify also relies on two hidden files in each TWiki/data/[web]
directory: .changes
and .mailnotify.
Make sure both are writable by your web server process. .changes
contains a list of changes; go ahead and make this empty. .mailnotify
contains a timestamp of the last time notification was done.
You can use an external mail program, like sendmail
, if the Net::SMTP
module is not installed. Set the program path in $mailProgram
in TWiki.cfg
.
SMTPMAILHOST
in TWikiPreferences to an empty value.
SMTPSENDERHOST
variable to define the mail sender host (some SMTP installations require this).
For Unix platforms: Edit the cron
table so that mailnotify
is called in an interval of your choice. Please consult man crontab
of how to modify the table that schedules program execution at certain intervals. Example:
% crontab -e 0 2 * * * (cd /path/to/twiki/bin; ./mailnotify -q)The above line will run mailnotify nightly at 02:00. The
-q
switch suppresses all normal output.
For ISP installations: Many ISPs don't allow hosted accounts direct cron access, as it's often used for things that can heavily load the server. Workaround scripts are available.
On Windows NT/2000: You can use a scheduled task if you have administrative privileges. Note: AT on an NT machine is pretty limited. Microsoft lists several third-party replacements. TWiki:Codev/CronTabWin is a free scheduler for Windows.
You can generate a listing manually, or on an automated schedule, of visits to individual pages, on a per web basis. Compiled as a running total on a monthly basis. Includes totals for Topic Views, Topic Saves, Attachment Uploads, Most Popular Topics with number of views, and Top Contributors showing total of saves and attachment uploads. Previous months are saved.
%STATISTICSTOPIC%
$doLogTopicView, $doLogTopicSave and $doLogTopicUpload
in TWiki.cfg
are set. This will generate log file entries (see below).
twiki/bin/statistics
script from a cron job, once a day is recommended. This will update the WebStatistics topics in all webs.
nobody
on many systems. Example crontab entry: 0 0 * * * (cd /path/to/TWiki/bin; ./statistics >/dev/null 2>&1)
nobody
: Run the utility twiki/bin/geturl
in your cron job and specify the URL of the twiki/bin/statistics
script as a parameter. Example: 0 0 * * * (cd /path/to/TWiki/bin; ./geturl mydomain.com /urlpath/to/TWiki/bin/statistics >/dev/null 2>&1)
twiki/bin/statistics
script can also be executed as a CGI script, just enter the URL in your browser. Examples:
http://mydomain.com/twiki/bin/statistics
http://mydomain.com/twiki/bin/statistics/Main
http://mydomain.com/twiki/bin/statistics/Main?logdate=200001
TWiki generates monthly log files which are used by the statistics
$logDir
variable in TWiki.cfg
log<year><month>.txt
twiki/data/log202007.txt
| <time> | <wikiusername> | <action> | <web>.<topic> | <extra info> | <IP address> |
| 24 Jul 2020 - 08:36 | Main.TWikiGuest | view | TWiki.WebRss | | 66.124.232.02 |
$doLogTopic<action>
flags
Script | Action name | Extra info |
---|---|---|
attach | attach | when viewing attach screen of previous uploaded attachment: filename |
changes | changes | |
edit | edit | when editing non-existing topic: (not exist) |
register | register | E-mail address |
save | save | when replacing existing revision: repRev 1.3 when user checks the minor changes box: dontNotify |
search | search | search string |
rdiff | rdiff | 1.4 1.3 |
rename | rename | when moving topic: moved to Newweb.NewTopic |
rename | move | when moving attachment: Attachment filename moved to Newweb.NewTopic |
upload | upload | filename |
view | view | when viewing non-existing topic: (not exist) when viewing previous topic revision: r1.3 |
WebSearch is an extremely fast and flexible search facility, part of the core TWiki feature set. Options include:
See also: TWikiVariables for including hard-coded searches in text.
To check for the most recently edited topics while on-site, use the WebChanges link, usually located on the upper toolbar. It lists the most recently modified topics, newest first, along with the first couple of lines of the page content.
This is simply a preset SEARCH
. The number of topics listed by the limit
parameter.:
%SEARCH{".*" web="TWiki" regex="on" nosearch="on" order="modified"
reverse="on" limit="50"}%
WebIndex lists all web topics in alphabetical order, with the first couple of lines of text. This is simply a preset SEARCH
:
%SEARCH{"\.*" scope="topic" regex="on" nosearch="on"}%
-- TWiki:Main.MikeMannix - 01 Dec 2001
-- TWiki:Main.PeterThoeny - 28 Aug 2004
Browser-based rename, move, and delete for individual topics
You can use browser-based controls to change a topic's name, move it to another TWiki web, or delete it to a hidden Trash
web.
[More]
(bottom right of page) on the topic to be changed, then, in the new screen, on [Rename/move]
. You can now rename and/or move/delete in one operation:
Trash
to delete a topic.
[Rename/Move]
: the topic will be renamed and links to the topic updated as requested.
[Rename/Move]
.
Rename/Move/Delete
- an instruction line and undo link will appear at the bottom of the modified topic. This allows you to revert from the last modification only.
Deleted topics are moved to a special Trash
web - they are NOT physically erased from the server. All webs share Trash
- in case of a name conflict with a topic already Trash
, the user is alerted and asked to choose a new name.
The Trash
web should be be cleared periodically, by archiving (saving) the text and RCS files if required (recommended), then deleting them from the Trash
directory.
Trash
directory is all that's required for maintenance, it's possible to grant Trash
admin privileges to multiple users, while strictly limiting server access.
You can use TWikiMetaData to place a command in the WebTopicViewTemplate and WebTopicNonWikiTemplate that will indicate that a topic has been moved by searching for the tag %META:TOPICMOVED{...}%. Customize something like this:
%<nop>METASEARCH{type="topicmoved" web="%WEB%" topic="%TOPIC%" title="This topic used to exist and was moved to: "}%
<pre>
and <verbatim>
are honoured - no changes are made to text within these areas.
Referring topics are found using the %SEARCH% variable - see the template searchrenameview.tmpl
. First, matching topics in the current web are listed - matches are to topic
. Next, all webs (including the current one) are listed that match web.topic
. Because %SEARCH% is used, webs marked in WebPreferences as NOSEARCHALL
will not show up in the search for references to the topic
being changed.
Changed references are kept are as short as possible, ex: topic
is used in preference to web.topic
.
User permissions affect the Rename function in various ways. To rename a topic, you need both ALLOWTOPICCHANGE
and ALLOWTOPICRENAME
permission for that topic. To alter referring topics, you need change permission. See TWikiAccessControl for information on setting up access permissions.
Consider carefully whether to make browser-based Rename/Move/Delete widely available, or to restrict it to an administrator/moderator group. Allowing all users to easily manipulate topics can be extremely useful in refactoring a busy web or site. However, there are at least two significant potential drawbacks to take into account:
Ultimately, the size, objectives, and policies of your TWiki site, the real-world behavior of your user group, and most importantly, the initial TWiki site management leadership, will determine the most effective implementation of this feature, and the success of the site overall.
Rename/Move is fairly complicated due to the dynamic generation of links. Ideally, it would be possible to run the required part of rendering in a way that would allow identification of the text to be changed. Unfortunately, these hooks don't exist in TWiki at present. Instead, %SEARCH% is used with a special template to show the text to be changed, and the selected topics are then altered. One drawback is that search
can show matches that will not be updated due to case differences. Other mismatches with actual rendered output are also possible as the approaches are so different.
The following shows some limitations of square bracket processing.
[[Old Topic]] => [[NewTopic][Old Topic]] [[old topic]] => [[NewTopic][old topic]] [[old t opic]] => not changed [[OldTopic]] => [[NewTopic]]
-- TWiki:Main.MikeMannix - 27 Dec 2001
Adding webs is a web based operation; renaming and deleting webs are manual operations done directly on the server
A TWikiSite is divided into webs; each one represents one subject, one area of collaboration. Administrators can add/rename/delete webs.
There are two methods used to create a new web. First you can use a specially designed TemplateWeb. This is an invisible web that begins with an underscore "_" character. All topics in the _default template web will be copied into your new web.
The second method is to use an existing web as a template web. This may be useful if you already have a web that you like to use as a starting point. Only topics that have names beginning with Web... (like "WebHome", "WebNotify", etc.) are copied.
In either case you will want to be sure to verify that your new web has all the custom modifications that you desire.
Notes:
WEBBGCOLOR
, SITEMAPLIST
, SITEMAPWHAT
, SITEMAPUSETO
and NOSEARCHALL
. These variables are used to dynamically generate the SiteMap
WIKIWEBLIST
. This must be done by hand
UPPER
or UPPERlower
. A side effect of this is that if you do use a wiki name, %WEB%
must be written as <nop>%WEB%
or else it will try to link to a non-existing topic of that name
Renaming or deleting a web requires direct access to the installation files on the host server. There are currently no browser-based equivalents of the Rename/move/delete topic tools for working with webs.
Oldwebname.
, including the dot so you'll find references like Oldwebname.SomeTopic
Newwebname.SomeTopic
or better yet, to %MAINWEB%.SomeTopic
WIKIWEBLIST
variable
twiki/data
and rename or remove the web directory
twiki/templates
and rename or remove the web directory if present
twiki/pub
and rename or remove the web directory if present
If you plan to rename the Main web, remember that TWiki stores user and group topics in %MAINWEB%
, default named Main
. That means, every WikiName signature - Main.SomeUserName
- points to it and would need updating (unless the variable, %MAINWEB%.SomeUserName
, is used throughout).
-- TWiki:Main.MikeMannix - 14 Sep 2001
-- TWiki:Main.PeterThoeny - 07 Apr 2002
-- TWiki:Main.GrantBow - 16 Jan 2003
To remove a user account:
data/.htpasswd
file to delete their entry (only applies if you are using a .htpasswd file)
FredQuimby
line from the Main.TWikiUsers topic
ALLOWWEB/ALLOWTOPIC...
declarations, if any.data/Main/FredQuimby.txt
and data/Main/FredQuimby.txt,v
Note: Consider leaving the user topic file in place so their past signatures and revision author entries don't end up looking like AnUncreatedTopic?. If you want to make it clear the user is inactive on your site (e.g. PeterThoeny) or has been banished add a note to that effect and write protect the page (TWikiAccessControl). The existance of the UserName topic prevent that user name from being re-used.
-- TWiki:Main.MattWilkie - 21 Jul 2003
-- TWiki:Main.PeterThoeny - 15 Aug 2004
Annotated directory and file listings, for the 01-Sep-2004 TWiki production release.
Interested Users and Site Administrators can find out in simple terms what each part of TWiki actually does. Adventurous Adminstrators with server access to files (via telnet, ssh or ftp) can also figure out where to look to make minor modifications, like changing hardcode text or color. Software Developers can get an at-a-glance overview of TWiki code architecture.
You can rename the root TWiki directory - twiki
- to whatever you like by changing it in the TWiki.cfg
configuration file. However, to keep the current installation and future upgrades simple, you should leave the five main subdirectories intact:
Directory: | Files: | Used for: |
---|---|---|
twiki | list | Start-up info |
twiki/bin | list | Perl scripts |
twiki/lib | list | Configuration file, main library, Perl system modules, Plugins directory |
twiki/pub | list | Public files (eg: images) and FileAttachments and their RCS histories |
twiki/data | list | Individual topics (page content) and their RCS histories |
twiki/templates | list | HTML templates, used by TWiki scripts |
A rundown of the individual files included in the current distribution, organized by TWiki root directories.
twiki
Application info and the current reference documentation. Full file list:
File | Used for |
---|---|
index.html | Links to launch TWiki after install and for files in this directory |
license.txt | GNU General Public License and TWiki-specific info |
readme.txt | General TWiki start-up info with relevant URLs |
TWikiDocumentation.html | All documentation packaged as a single page |
TWikiHistory.html | TWiki development timeline: versions, features, developers |
TwikiUpgrade | TWiki upgrade script (Beta state) |
twiki/bin
Perl CGI scripts. Full file list:
File: | Used for: |
---|---|
.htaccess.txt | Authentication. Rename to .htaccess and customize if used |
attach | Shows the attach file page (FileAttachment) |
changes | a simple WebChanges query |
edit | Edit a topic |
geturl | Fetch URL data |
installpasswd | Install new password by admin |
mailnotify | Script called by cron job to notify users of changes |
manage | Manage script to create new webs |
oops | Shows an OK or oops dialog |
passwd | Reset and change password |
preview | Preview topic after edit |
rdiff | See differences of topics |
rdiffauth | Copy of rdiff script (ideally a link). The .htaccess file sets this as requiring authorisation |
register | Register new users |
rename | Rename/move topics and move attachments |
save | Saves a topic, called by preview |
search | Displays search results |
setlib.cfg | Location of the TWiki libraries. Customize if needed |
statistics | Create statistics topic |
testenv | Test CGI environment variables |
upload | Does file upload (FileAttachment) |
view | View a topic (the script) |
viewauth | Copy of view script (ideally a link). The .htaccess file sets this as requiring authorisation |
viewfile | View a file attachment |
twiki/lib
The new lib/TWiki/Plugins
directories contain configuration, library and function files, and TWikiPlugins. Full file list:
File: | Used for: |
---|---|
TWiki.cfg | Main configuration, used by TWiki.pm |
TWiki.pm | Main TWiki library |
Algorithm/Diff.pm | Diff library |
Text/Diff.pm | Diff library, used by TwikiUpgrade script |
TWiki/Access.pm | Access control |
TWiki/Attach.pm | Attachment handling |
TWiki/Form.pm | Form handling |
TWiki/Func.pm | Public functions that Plugins may use |
TWiki/Meta.pm | Meta data in topics |
TWiki/Net.pm | SMTP mail handling |
TWiki/Plugins.pm | Plugin handling |
TWiki/Plugins/CommentPlugin.pm | Plugin handling a comment box |
TWiki/Plugins/CommentPlugin/Attrs.pm | Supporting module for Comment Plugin |
TWiki/Plugins/CommentPlugin/Comment.pm | Supporting module for Comment Plugin |
TWiki/Plugins/CommentPlugin/Templates.pm | Supporting module for Comment Plugin |
TWiki/Plugins/DefaultPlugin.pm | Handles some legacy rules |
TWiki/Plugins/EditTablePlugin.pm | Plugin to edit tables |
TWiki/Plugins/EmptyPlugin.pm | Empty plugin, use to create your own |
TWiki/Plugins/InterwikiPlugin.pm | Use aliases as links for predefined URLs |
TWiki/Plugins/RenderListPlugin.pm | Plugin to render lists as nice trees |
TWiki/Plugins/SlideShowPlugin.pm | Plugin turning headings into slides |
TWiki/Plugins/SmiliesPlugin.pm | Plugin rendering smilies like :-) |
TWiki/Plugins/SpreadSheetPlugin.pm | Plugin resolving spreadsheet formulae |
TWiki/Plugins/TablePlugin.pm | Plugin to render tables nicely |
TWiki/Prefs.pm | Preferences handling |
TWiki/Render.pm | TWiki markup to HTML rendering |
TWiki/Search.pm | Search engine, used by TWiki.pm |
TWiki/Store.pm | Back-end storage, *.txt text file and *.txt,v RCS repository file handling |
TWiki/Store/RcsFile.pm | Generic file handling code, a class |
TWiki/Store/RcsWrap.pm | Wrappers around RCS executables, a class that inherits from RcsFile |
TWiki/Store/RcsLite.pm | A Perl RCS implemention, a class that inherits from RcsFile |
TWiki/UI.pm | User interface handling |
TWiki/UI/Changes.pm | Functionality of changes script |
TWiki/UI/Edit.pm | Functionality of edit script |
TWiki/UI/Manage.pm | Functionality of manage script |
TWiki/UI/Oops.pm | Functionality of oops script |
TWiki/UI/Preview.pm | Functionality of preview script |
TWiki/UI/RDiff.pm | Functionality of rdiff script |
TWiki/UI/Save.pm | Functionality of save script |
TWiki/UI/Search.pm | Functionality of search script |
TWiki/UI/Statistics.pm | Functionality of statistics script |
TWiki/UI/Upload.pm | Functionality of upload script |
TWiki/UI/View.pm | Functionality of view script |
TWiki/UI/Viewfile.pm | Functionality of viewfile script |
TWiki/Upgrade/TWikiCfg.pm | Supporting module of TwikiUpgrade script |
TWiki/Upgrade/UpdateTopics.pm | Supporting module of TwikiUpgrade script |
TWiki/Upgrade/UpdateTopicsManualSymlinks.pm | Supporting module of TwikiUpgrade script |
TWiki/User.pm | Abstraction package to allow plugable user authentication systems |
TWiki/User/HtPasswdUser.pm | Apache Htpasswd file implementation (the default) |
TWiki/User/NoPasswdUser.pm | simple, no users authentication (totally wiki) |
twiki/pub
The pub
directory stores topic-related files, including images used by TWiki and FileAttachments. Attachments are stored in subdirectories created with the related topic name. You can also upload files directly for and link manually (but not through Attach
) Partial file list:
File: | Used for: |
---|---|
favicon.ico | ICO file |
wikiHome.gif | GIF file |
icn/_filetypes.txt | Lookup table to translate file extension to file type |
icn/bat.gif | GIF file for file type |
icn/bmp.gif | GIF file for file type |
... | ... |
TWiki/FileAttachment/Sample.txt | TEXT file: sample |
TWiki/FileAttachment/Smile.gif | GIF image: sample |
TWiki/FileAttachment/Smile.gif,v | RCS repository for GIF file |
TWiki/PreviewBackground/blankltgraybg.gif | GIF image |
TWiki/PreviewBackground/blankwhitebg.gif | GIF image |
TWiki/PreviewBackground/previewbg.gif | GIF image: Preview view background |
TWiki/PreviewBackground/preview2bg.gif | GIF image: Alternate preview view background |
TWiki/TWikiLogos/twikiRobot121x54.gif | GIF image: TWiki logo |
... | ... |
TWiki/TWikiTemplates/testscreen.gif | GIF image: Screen shot |
TWiki/WabiSabi/wabisabi.gif | GIF image: illustration |
twiki/data
TWiki topics: data stored as individual text files and rendered by TWiki for display as regular Web pages. Each active web has its own subdirectory. The TWiki distribution includes a number of start-up webs - Main
, TWiki
, and Sandbox
- with documentation and demo content, a Trash
web for browser-based, recoverable topic deletion, and a _default
directory containing a core topic set required to start a new web. Partial file list:
File: | Used for: |
---|---|
.htpasswd | Basic Authentication (htaccess) users file with username and encrypted password pairs |
debug.txt | Program-generated messages useful for debugging |
mime.types | Recognized file formats |
warning.txt | Diagnostic messages for identifying problems |
_default/.changes | Per web record of topic changes |
_default/.mailnotify | Per web timestamp of most recent email notification |
_default/WebChanges.txt | Display most recent topic changes in web |
_default/WebChanges.txt,v | Revisions history (RCS) |
_default/WebHome.txt | Default web home page |
_default/WebHome.txt,v | Revisions history (RCS) |
_default/WebIndex.txt | Lists all topics in a web |
_default/WebIndex.txt,v | Revisions history (RCS) |
_default/WebLeftBar.txt | Left navigation bar for PatternSkin |
_default/WebLeftBar.txt,v | Revisions history (RCS) |
_default/WebNotify.txt | Subscribe/unsubscribe to web changes email alert |
_default/WebNotify.txt,v | Revisions history (RCS) |
_default/WebPreferences.txt | Per web Preference Settings |
_default/WebPreferences.txt,v | Revisions history (RCS) |
_default/WebSearch.txt | Per web search options |
_default/WebSearch.txt,v | Revisions history (RCS) |
_default/WebStatistics.txt | Generates web usage statistics |
_default/WebStatistics.txt,v | Revisions history (RCS) |
_default/WebTopicList.txt | Lists all topics in a web in compact format |
_default/WebTopicList.txt,v | Revisions history (RCS) |
... | ... |
twiki/templates
Templates and skins used to control appearance of topics rendered as Web pages. Partial file list:
File: | Used for: |
---|---|
attach.tmpl | Attachment (FileAttachments) control screen |
attachagain.tmpl | Attachment control screen for updating an existing attachment |
attachnew.tmpl | Attachment control screen for adding a new attachment |
attachtables.tmpl | Macros for definition of attachment tables |
changeform.tmpl | Control screen to change the form in edit mode |
changes.tmpl | Displays list of recently changed topics |
edit.iejs.tmpl | Edit window with IE-specific JavaScript |
edit.tmpl | Main edit window |
mailnotify.tmpl | Email notification |
moveattachment.tmpl | Move attachment control screen |
oopsaccesschange.tmpl | Error message |
oopsaccessgroup.tmpl | Error message |
oopsaccessmanage.tmpl | Error message |
oopsaccessrename.tmpl | Error message |
oopsaccessview.tmpl | Error message |
oopsattachnotopic.tmpl | Error message |
oopsauth.tmpl | Error message |
oopsbadcharset.tmpl | Error message |
oopsbadpwformat.tmpl | Error message |
oopschangepasswd.tmpl | Error message |
oopscreatenewtopic.tmpl | Error message |
oopsempty.tmpl | Error message |
oopslocked.tmpl | Error message |
oopslockedrename.tmpl | Error message |
oopsmanage.tmpl | Error message |
oopsmissing.tmpl | Error message |
oopsmngcreateweb.tmpl | Error message |
oopsmore.tmpl | More topic actions message |
oopsmoveerr.tmpl | Error message |
oopsnoformdef.tmpl | Error message |
oopsnotwikiuser.tmpl | Error message |
oopsnoweb.tmpl | Error message |
oopspreview.tmpl | Error message |
oopsregemail.tmpl | Error message |
oopsregexist.tmpl | Error message |
oopsregpasswd.tmpl | Error message |
oopsregrequ.tmpl | Error message |
oopsregthanks.tmpl | Error message |
oopsregwiki.tmpl | Error message |
oopsremoveuserdone.tmpl | Error message |
oopsrenameerr.tmpl | Error message |
oopsrenamenotwikiword.tmpl | Error message |
oopsresetpasswd.tmpl | Error message |
oopsrev.tmpl | Error message |
oopssave.tmpl | Error message |
oopssaveerr.tmpl | Error message |
oopssendmailerr.tmpl | Error message |
oopstopicexists.tmpl | Error message |
oopsupload.tmpl | Error message |
oopsuploadlimit.tmpl | Error message |
oopswrongpassword.tmpl | Error message |
preview.tmpl | Preview Changes screen |
rdiff.tmpl | Displays text changes before & after Diffs |
registernotify.tmpl | Registration notification |
rename.tmpl | Rename/move control screen (choose web & new topic tile |
renamebase.tmpl | Used by other rename templates |
renameconfirm.tmpl | Confirms a pre-specified rename, ex: undoing a rename |
renamedelete.tmpl | Confirms a delete |
renamerefs.tmpl | Display if rename done, but some references not changed (topics were locked) |
search.tmpl | Search screen |
searchbookview.tmpl | Search results with full topic content |
searchformat.tmpl | Search screen for formatted search |
searchmeta.tmpl | Search screen |
searchrenameview.tmpl | Used by rename to list references to topic being renamed |
twiki.tmpl | Master template: definitions are used by other templates |
view.plain.tmpl | Skin for bare bone topic view without header/footer but with HTML head and body tags |
view.print.tmpl | Skin for printable topic view with a simple header/footer |
view.rss.tmpl | Skin for topic view in RDF XML format |
view.text.tmpl | Skin for topic text only, without HTML head and body tags, and no form and attachments |
view.tmpl | Main topic view - the standard regular Web page |
The following partial directory listings from a Linux installation show typical file permissions and ownership. This is provided for general debugging use only and isn't an exact representation of the current distribution.
twiki twiki
- will probably be your domain or login name, eg: yourdomain yourdomain
and can't be changed; same for nobody nobody
files further down. Also, in the bin
directory, scripts might need a .cgi
(sometimes .pl
) extension.
Directory twiki/bin
:
drwxrwxr-x 2 twiki twiki 4096 May 9 00:08 . drwxrwxr-x 5 twiki twiki 4096 Nov 18 2002 .. -rw-rw-r-- 1 twiki twiki 3145 Jul 25 00:31 .htaccess.txt -rwxrwxr-x 1 twiki twiki 1459 May 28 23:51 attach -rwxrwxr-x 1 twiki twiki 1721 May 28 23:51 changes -rwxrwxr-x 1 twiki twiki 1994 May 28 23:51 edit -rwxrwxr-x 1 twiki twiki 1878 May 28 23:51 geturl -rwxrwxr-x 1 twiki twiki 6689 May 28 23:51 installpasswd -rwxrwxr-x 1 twiki twiki 7313 May 28 23:51 mailnotify -rwxrwxr-x 1 twiki twiki 3557 Jul 25 15:00 manage -rwxrwxr-x 1 twiki twiki 1448 May 28 23:51 oops -rwxrwxr-x 1 twiki twiki 4062 May 28 23:51 passwd -rwxrwxr-x 1 twiki twiki 1506 May 28 23:51 preview -rwxrwxr-x 2 twiki twiki 1490 May 28 23:51 rdiff -rwxrwxr-x 2 twiki twiki 1490 May 28 23:51 rdiffauth -rwxrwxr-x 1 twiki twiki 7635 May 28 23:51 register -rwxrwxr-x 1 twiki twiki 1774 May 28 23:51 rename -rwxrwxr-x 1 twiki twiki 1654 Jul 25 00:31 save -rwxrwxr-x 1 twiki twiki 1728 May 28 23:51 search -rw-rw-r-- 1 twiki twiki 2131 Aug 7 21:13 setlib.cfg -rwxrwxr-x 1 twiki twiki 2596 May 28 23:51 statistics -rwxrwxr-x 1 twiki twiki 39926 Jul 25 15:00 testenv -rwxrwxr-x 1 twiki twiki 1478 May 28 23:51 upload -rwxrwxr-x 2 twiki twiki 1689 May 28 23:51 view -rwxrwxr-x 2 twiki twiki 1689 May 28 23:51 viewauth -rwxrwxr-x 1 twiki twiki 1438 May 28 23:51 viewfile
Directory twiki/templates/
:
drwxrwxr-x 2 twiki twiki 4096 Aug 7 19:09 . drwxrwxr-x 4 twiki twiki 4096 Aug 7 21:13 .. -rw-rw-r-- 1 twiki users 2077 Aug 13 22:21 attachagain.pattern.tmpl -rw-rw-r-- 1 twiki users 1650 Aug 13 22:21 attachagain.tmpl -rw-rw-r-- 1 twiki twiki 2556 Jul 27 10:47 attach.dragon.tmpl -rw-rw-r-- 1 twiki users 567 Jul 28 19:52 attachnew.pattern.tmpl -rw-rw-r-- 1 twiki users 470 Jul 28 19:52 attachnew.tmpl -rw-rw-r-- 1 twiki users 2855 Aug 8 03:40 attach.pattern.tmpl -rw-rw-r-- 1 twiki users 1991 Aug 3 13:09 attachtables.pattern.tmpl -rw-rw-r-- 1 twiki users 1869 Jul 27 22:03 attachtables.tmpl -rw-rw-r-- 1 twiki users 2355 Jul 28 19:52 attach.tmpl -rw-rw-r-- 1 twiki twiki 1324 Jul 27 10:47 changeform.dragon.tmpl -rw-rw-r-- 1 twiki twiki 1441 Aug 6 11:47 changeform.pattern.tmpl -rw-rw-r-- 1 twiki twiki 1032 Jul 28 19:52 changeform.tmpl -rw-rw-r-- 1 twiki twiki 1870 Jul 27 10:47 changes.dragon.tmpl -rw-rw-r-- 1 twiki twiki 433 Jul 31 12:39 changes.pattern.tmpl -rw-rw-r-- 1 twiki twiki 1196 May 28 23:51 changes.tmpl -rw-rw-r-- 1 twiki twiki 35 May 21 03:56 comments.tmpl -rw-rw-r-- 1 twiki twiki 526 Jul 27 10:47 dragoncssvars.dragon.tmpl -rw-rw-r-- 1 twiki twiki 1645 Jul 31 00:57 dragonmenu.dragon.tmpl -rw-rw-r-- 1 twiki twiki 4207 Jul 27 10:47 edit.dragon.tmpl -rw-rw-r-- 1 twiki twiki 12608 Jul 28 19:52 edit.iejs.tmpl -rw-rw-r-- 1 twiki twiki 4904 Aug 7 17:48 edit.pattern.tmpl -rw-rw-r-- 1 twiki twiki 3975 Aug 8 03:40 edit.tmpl -rw-rw-r-- 1 twiki twiki 993 May 28 23:51 mailnotify.tmpl -rw-rw-r-- 1 twiki twiki 1640 Jul 27 10:47 moveattachment.dragon.tmpl -rw-rw-r-- 1 twiki twiki 1968 Aug 7 17:48 moveattachment.pattern.tmpl -rw-rw-r-- 1 twiki twiki 1342 Jul 28 19:52 moveattachment.tmpl -rw-rw-r-- 1 twiki twiki 571 May 28 23:51 oopsaccesschange.tmpl -rw-rw-r-- 1 twiki twiki 587 May 28 23:51 oopsaccessgroup.tmpl -rw-rw-r-- 1 twiki twiki 597 Aug 2 11:10 oopsaccessmanage.tmpl -rw-rw-r-- 1 twiki twiki 572 May 28 23:51 oopsaccessrename.tmpl -rw-rw-r-- 1 twiki twiki 574 May 28 23:51 oopsaccessview.tmpl -rw-rw-r-- 1 twiki twiki 571 Aug 2 11:10 oopsattachnotopic.tmpl -rw-rw-r-- 1 twiki twiki 998 May 28 23:51 oopsauth.tmpl -rw-rw-r-- 1 twiki twiki 646 May 28 23:51 oopsbadcharset.tmpl -rw-rw-r-- 1 twiki twiki 406 May 28 23:51 oopsbadpwformat.tmpl -rw-rw-r-- 1 twiki twiki 345 May 28 23:51 oopschangepasswd.tmpl -rw-rw-r-- 1 twiki twiki 382 May 28 23:51 oopscreatenewtopic.tmpl -rw-rw-r-- 1 twiki twiki 627 Jul 7 23:11 oopsempty.tmpl -rw-rw-r-- 1 twiki twiki 927 Aug 3 13:09 oopslocked.pattern.tmpl -rw-rw-r-- 1 twiki twiki 612 Aug 2 11:10 oopslockedrename.pattern.tmpl -rw-rw-r-- 1 twiki twiki 596 Aug 2 11:10 oopslockedrename.tmpl -rw-rw-r-- 1 twiki twiki 910 Aug 3 13:09 oopslocked.tmpl -rw-rw-r-- 1 twiki twiki 679 May 28 23:51 oopsmanage.tmpl -rw-rw-r-- 1 twiki twiki 329 May 28 23:51 oopsmissing.tmpl -rw-rw-r-- 1 twiki twiki 2353 May 28 23:51 oopsmngcreateweb.tmpl -rw-rw-r-- 1 twiki twiki 2987 Aug 3 13:09 oopsmore.tmpl -rw-rw-r-- 1 twiki twiki 418 May 28 23:51 oopsmoveerr.tmpl -rw-rw-r-- 1 twiki twiki 1133 May 28 23:51 oopsnoformdef.tmpl -rw-rw-r-- 1 twiki twiki 521 May 28 23:51 oopsnotwikiuser.tmpl -rw-rw-r-- 1 twiki twiki 1516 Jul 28 19:52 oopsnoweb.tmpl -rw-rw-r-- 1 twiki twiki 394 May 28 23:51 oopspreview.tmpl -rw-rw-r-- 1 twiki twiki 341 May 28 23:51 oopsregemail.tmpl -rw-rw-r-- 1 twiki twiki 411 May 28 23:51 oopsregerr.tmpl -rw-rw-r-- 1 twiki twiki 476 May 28 23:51 oopsregexist.tmpl -rw-rw-r-- 1 twiki twiki 346 May 28 23:51 oopsregpasswd.tmpl -rw-rw-r-- 1 twiki twiki 357 May 28 23:51 oopsregrequ.tmpl -rw-rw-r-- 1 twiki twiki 541 May 28 23:51 oopsregthanks.tmpl -rw-rw-r-- 1 twiki twiki 680 May 28 23:51 oopsregwiki.tmpl -rw-rw-r-- 1 twiki twiki 587 May 28 23:51 oopsremoveuserdone.tmpl -rw-rw-r-- 1 twiki twiki 503 May 28 23:51 oopsrenameerr.tmpl -rw-rw-r-- 1 twiki twiki 434 May 28 23:51 oopsrenamenotwikiword.tmpl -rw-rw-r-- 1 twiki twiki 507 May 28 23:51 oopsresetpasswd.tmpl -rw-rw-r-- 1 twiki twiki 962 Jul 28 19:52 oopsrev.tmpl -rw-rw-r-- 1 twiki twiki 483 May 28 23:51 oopssaveerr.tmpl -rw-rw-r-- 1 twiki twiki 777 Jul 7 23:11 oopssave.tmpl -rw-rw-r-- 1 twiki twiki 466 May 28 23:51 oopssendmailerr.tmpl -rw-rw-r-- 1 twiki twiki 385 May 28 23:51 oopstopicexists.tmpl -rw-rw-r-- 1 twiki twiki 344 May 28 23:51 oopsuploadlimit.tmpl -rw-rw-r-- 1 twiki twiki 343 May 28 23:51 oopsupload.tmpl -rw-rw-r-- 1 twiki twiki 365 May 28 23:51 oopswrongpassword.tmpl -rw-rw-r-- 1 twiki twiki 3590 Jul 27 10:47 preview.dragon.tmpl -rw-rw-r-- 1 twiki twiki 2855 Aug 6 11:47 preview.pattern.tmpl -rw-rw-r-- 1 twiki twiki 2253 Aug 8 03:40 preview.tmpl -rw-rw-r-- 1 twiki twiki 1739 Jul 27 10:47 rdiff.dragon.tmpl -rw-rw-r-- 1 twiki users 1529 Aug 13 22:21 rdiff.pattern.tmpl -rw-rw-r-- 1 twiki users 1299 May 28 23:51 rdiff.tmpl -rw-rw-r-- 1 twiki twiki 1159 Jul 31 12:39 registernotify.pattern.tmpl -rw-rw-r-- 1 twiki twiki 1160 May 28 23:51 registernotify.tmpl -rw-rw-r-- 1 twiki twiki 2561 Jul 27 10:47 renamebase.dragon.tmpl -rw-rw-r-- 1 twiki twiki 3363 Aug 8 03:40 renamebase.pattern.tmpl -rw-rw-r-- 1 twiki twiki 2279 Jul 28 20:54 renamebase.tmpl -rw-rw-r-- 1 twiki twiki 718 Jul 31 12:39 renameconfirm.pattern.tmpl -rw-rw-r-- 1 twiki twiki 570 Jul 28 19:52 renameconfirm.tmpl -rw-rw-r-- 1 twiki twiki 1046 Jul 31 12:39 renamedelete.pattern.tmpl -rw-rw-r-- 1 twiki twiki 932 Jul 28 19:52 renamedelete.tmpl -rw-rw-r-- 1 twiki twiki 1147 Jul 31 12:39 rename.pattern.tmpl -rw-rw-r-- 1 twiki twiki 766 Jul 28 19:52 renamerefs.pattern.tmpl -rw-rw-r-- 1 twiki twiki 616 Jul 28 19:52 renamerefs.tmpl -rw-rw-r-- 1 twiki twiki 1041 Jul 28 19:52 rename.tmpl -rw-rw-r-- 1 twiki twiki 1397 Jul 27 10:47 searchbookview.dragon.tmpl -rw-rw-r-- 1 twiki twiki 723 Jul 31 12:39 searchbookview.pattern.tmpl -rw-rw-r-- 1 twiki twiki 1230 May 28 23:51 searchbookview.tmpl -rw-rw-r-- 1 twiki twiki 1705 Jul 27 10:47 search.dragon.tmpl -rw-rw-r-- 1 twiki twiki 722 Jul 27 10:47 searchformat.dragon.tmpl -rw-rw-r-- 1 twiki twiki 157 Jul 31 12:39 searchformat.pattern.tmpl -rw-rw-r-- 1 twiki twiki 529 May 28 23:51 searchformat.tmpl -rw-rw-r-- 1 twiki twiki 149 Jul 7 23:03 searchmeta.pattern.tmpl -rw-rw-r-- 1 twiki twiki 149 May 28 23:51 searchmeta.tmpl -rw-rw-r-- 1 twiki twiki 1638 Aug 7 17:48 search.pattern.tmpl -rw-rw-r-- 1 twiki twiki 1892 Jul 27 10:47 searchrenameview.dragon.tmpl -rw-rw-r-- 1 twiki twiki 1208 Aug 3 13:09 searchrenameview.pattern.tmpl -rw-rw-r-- 1 twiki twiki 1615 May 28 23:51 searchrenameview.tmpl -rw-rw-r-- 1 twiki twiki 1364 May 28 23:51 search.tmpl -rw-rw-r-- 1 twiki twiki 3836 Jul 27 10:47 twiki.dragon.tmpl -rw-rw-r-- 1 twiki twiki 3175 Aug 7 17:48 twiki.pattern.tmpl -rw-rw-r-- 1 twiki twiki 2798 Jul 27 22:57 twiki.tmpl -rw-rw-r-- 1 twiki twiki 1324 Jul 27 10:47 view.dragon.tmpl -rw-rw-r-- 1 twiki twiki 3577 Aug 8 03:40 view.pattern.tmpl -rw-rw-r-- 1 twiki twiki 425 May 28 23:51 view.plain.tmpl -rw-rw-r-- 1 twiki twiki 1056 Jul 31 12:39 view.print.pattern.tmpl -rw-rw-r-- 1 twiki twiki 845 May 28 23:51 view.print.tmpl -rw-rw-r-- 1 twiki twiki 300 May 28 23:51 view.rss.tmpl -rw-rw-r-- 1 twiki twiki 8 May 28 23:51 view.text.tmpl -rw-rw-r-- 1 twiki twiki 1281 Jul 31 12:39 view.tmpl
Directory twiki/data/
:
drwxrwxr-x 7 nobody twiki 4096 Aug 7 21:13 . drwxrwxr-x 4 twiki twiki 4096 Aug 7 21:13 .. -rw-rw-rw- 1 twiki twiki 0 Feb 1 2003 debug.txt drwxrwxr-x 2 nobody twiki 4096 Jul 16 00:36 _default -rw-rw-r-- 1 twiki twiki 25 Dec 16 2003 .htpasswd.txt -rw-rw-r-- 1 nobody nobody 11811 Aug 13 23:10 log200408.txt drwxrwxr-x 2 nobody twiki 4096 Aug 4 21:03 Main -rw-rw-r-- 1 twiki twiki 3419 Aug 13 2001 mime.types drwxrwxr-x 2 nobody twiki 4096 Aug 7 21:03 Sandbox drwxrwxr-x 2 nobody twiki 4096 Jul 20 18:15 Trash drwxrwxr-x 2 nobody twiki 12288 Aug 13 23:10 TWiki -rw-rw-rw- 1 twiki twiki 0 Aug 7 18:03 warning.txt
Partial file list for twiki/data/Main
:
.txt,v
.
drwxrwxr-x 2 nobody twiki 4096 Aug 4 21:03 . drwxrwxr-x 7 nobody twiki 4096 Aug 7 21:13 .. -rw-rw-rw- 1 twiki twiki 3743 Aug 4 21:03 .changes -rw-rw-rw- 1 twiki twiki 9 Oct 25 2001 .mailnotify -rw-r--r-- 1 nobody nobody 518 Dec 16 2003 TWikiAdminGroup.txt -r--r--r-- 1 nobody nobody 2453 Dec 16 2003 TWikiAdminGroup.txt,v -rw-r--r-- 1 nobody nobody 1668 Aug 4 21:03 TWikiGroups.txt -r--r--r-- 1 nobody nobody 3421 Aug 4 21:03 TWikiGroups.txt,v -rw-r--r-- 1 nobody nobody 686 Dec 13 2000 TWikiGuest.txt -rw-r--r-- 1 nobody nobody 1995 Dec 13 2000 TWikiGuest.txt,v -rw-r--r-- 1 nobody nobody 319 Dec 20 2003 TWikiPreferences.txt -r--r--r-- 1 nobody nobody 508 Dec 20 2003 TWikiPreferences.txt,v -rw-r--r-- 1 nobody nobody 1812 Feb 20 13:54 TWikiUsers.txt -r--r--r-- 1 nobody nobody 9222 Feb 20 13:54 TWikiUsers.txt,v -rw-r--r-- 1 nobody nobody 119 Jan 11 2003 TWikiVariables.txt -r--r--r-- 1 nobody nobody 742 Jan 11 2003 TWikiVariables.txt,v -rw-r--r-- 1 nobody nobody 124 Aug 16 2001 WebChanges.txt -r--r--r-- 1 nobody nobody 526 Aug 16 2001 WebChanges.txt,v -rw-r--r-- 1 nobody nobody 1842 Feb 1 2003 WebHome.txt -r--r--r-- 1 nobody nobody 11862 Feb 1 2003 WebHome.txt,v -rw-r--r-- 1 nobody nobody 176 Nov 24 2001 WebIndex.txt -r--r--r-- 1 nobody nobody 483 Nov 24 2001 WebIndex.txt,v -rw-r--r-- 1 nobody nobody 922 Feb 3 2003 WebNotify.txt -r--r--r-- 1 nobody nobody 4303 Feb 3 2003 WebNotify.txt,v -rw-r--r-- 1 nobody nobody 3738 Dec 25 2003 WebPreferences.txt -r--r--r-- 1 nobody nobody 10697 Dec 25 2003 WebPreferences.txt,v -rw-r--r-- 1 nobody nobody 416 Jan 30 2003 WebRss.txt -r--r--r-- 1 nobody nobody 605 Jan 30 2003 WebRss.txt,v -rw-r--r-- 1 nobody nobody 164 Jan 18 2004 WebSearchAdvanced.txt -r--r--r-- 1 nobody nobody 353 Jan 18 2004 WebSearchAdvanced.txt,v -rw-r--r-- 1 nobody nobody 158 Aug 7 2001 WebSearch.txt -r--r--r-- 1 nobody nobody 18332 Aug 7 2001 WebSearch.txt,v -rw-r--r-- 1 nobody nobody 825 Jul 16 00:32 WebStatistics.txt -r--r--r-- 1 nobody nobody 4226 Jul 16 00:32 WebStatistics.txt,v -rw-r--r-- 1 nobody nobody 182 Nov 24 2001 WebTopicList.txt -r--r--r-- 1 nobody nobody 371 Nov 24 2001 WebTopicList.txt,v
Directory twiki/pub/
:
drwxrwxr-x 8 nobody nobody 4096 Nov 18 12:31 . drwxrwxr-x 3 twiki twiki 4096 Nov 18 12:31 .. drwxrwxr-x 2 nobody nobody 4096 Apr 7 2002 Main drwxrwxr-x 2 nobody nobody 4096 Apr 20 2002 Sandbox drwxrwxr-x 8 nobody nobody 4096 Nov 18 12:31 TWiki drwxrwxr-x 2 nobody nobody 4096 Dec 3 2001 Trash -rw-rw-r-- 1 twiki twiki 1078 Jan 14 2000 favicon.ico drwxrwxr-x 2 twiki twiki 4096 Nov 18 12:31 icn -rw-rw-r-- 1 twiki twiki 2877 Jun 7 1999 wikiHome.gif
Partial file list for twiki/pub/icn/
:
drwxrwxr-x 2 twiki twiki 4096 Nov 18 12:31 . drwxrwxr-x 8 nobody nobody 4096 Nov 18 12:31 .. -rw-rw-r-- 1 twiki twiki 801 Mar 26 1999 _filetypes.txt -rw-rw-r-- 1 twiki twiki 143 Mar 9 1999 bat.gif -rw-rw-r-- 1 twiki twiki 926 Mar 9 1999 bmp.gif -rw-rw-r-- 1 twiki twiki 141 Mar 25 1999 c.gif -rw-rw-r-- 1 twiki twiki 144 Mar 9 1999 dll.gif -rw-rw-r-- 1 twiki twiki 152 Mar 9 1999 doc.gif
Directory twiki/pub/TWiki
:
drwxrwx--x 8 nobody nobody 4096 Nov 18 12:31 . drwxrwxr-x 8 nobody nobody 4096 Nov 18 12:31 .. drwxrwxr-x 2 nobody nobody 4096 Nov 18 12:31 FileAttachment drwxrwxr-x 2 nobody nobody 4096 Nov 18 12:31 PreviewBackground drwxrwxr-x 2 nobody nobody 4096 Nov 18 12:31 TWikiDocGraphics drwxrwxr-x 2 nobody nobody 4096 Nov 18 12:31 TWikiLogos drwxrwxr-x 2 nobody nobody 4096 Nov 18 12:31 TWikiTemplates drwxrwxr-x 2 nobody nobody 4096 Nov 18 12:31 WabiSabi
Directory twiki/pub/TWiki/FileAttachment
:
drwxrwxr-x 2 nobody nobody 4096 Nov 18 12:31 . drwxrwx--x 8 nobody nobody 4096 Nov 18 12:31 .. -rw-rw-r-- 1 nobody nobody 30 Jul 22 1999 Sample.txt -rw-rw-r-- 1 nobody nobody 94 Jun 7 1999 Smile.gif -r--r--r-- 1 nobody nobody 81 Aug 15 10:14 Smile.gif,v
-- TWiki:Main.PeterThoeny - 29 Aug 2004
-- TWiki:Main.MikeMannix - 16 May 2002
-- TWiki:Main.ArthurClemens - 08 Aug 2004
Listing of CSS class names emitted from TWiki core code and standard plugins, for the 01-Aug-2004 TWiki production release.
More or less all html elements generated by TWiki core code now have Cascading Style Sheet (CSS) tags. Skin builders and others who want to change the appearance of the default TWiki installation or any of the skins can use this document to see what styles can be created for these html elements.
twiki
. So: twikiEditPage, twikiTopicAction, etcetera. Remember that CSS class names are case sensitive - TWiki CSS uses lowercase tw
.
twiki
prefix to prevent undesired overriding effects.
.twikiNew | Changes.pm |
.twikiChangeFormButtonHolder | Edit.pm |
.twikiChangeFormButton | Form.pm |
.twikiForm | Form.pm |
.twikiEditFormTextField | Form.pm |
.twikiEditFormLabelField | Form.pm |
.twikiEditFormTextAreaField | Form.pm |
.twikiEditFormCheckboxButton | Form.pm |
.twikiEditFormCheckboxButton | Form.pm |
.twikiEditFormCheckboxField | Form.pm |
.twikiEditFormRadioField | Form.pm |
.twikiEditFormError | Form.pm |
.twikiRadioButton | Form.pm |
.twikiCheckbox | Form.pm |
.twikiEditFormError | Form.pm |
.twikiDiffTable | RDiff.pm |
.twikiDiffDeletedHeader | RDiff.pm |
.twikiDiffDeletedMarker | RDiff.pm |
.twikiDiffDeletedText | RDiff.pm |
.twikiDiffAddedHeader | RDiff.pm |
.twikiDiffAddedMarker | RDiff.pm |
.twikiDiffAddedText | RDiff.pm |
.twikiDiffChangedHeader | RDiff.pm |
.twikiDiffChangedText | RDiff.pm |
.twikiDiffUnchangedText | RDiff.pm |
.twikiDiffLineNumberHeader | RDiff.pm |
.twikiForm | Render.pm |
.twikiAnchorLink | Render.pm |
.twikiLink | Render.pm |
.twikiNewLink | Render.pm |
.twikiNew | Search.pm |
.twikiAlert | Search.pm |
.twikiAlert | Statistics.pm |
.twikiAlert | TWiki.pm |
.twikiToc | TWiki.pm |
.twikiTocTitle | TWiki.pm |
.twikiSortedAscendingCol | TablePlugin.pm |
.twikiSortedDescendingCol | TablePlugin.pm |
.twikiFirstCol | TablePlugin.pm |
PatternSkin makes fully use of CSS in its templates. Read the PatternSkin topic and PatternSkinCss to learn more about adjusting PatternSkin, or creating your own CSS-based skin.
See also: DragonSkin.
Practical introduction to CSS: http://www.w3.org/Style/LieBos2e/enter/
-- TWiki:Main.ArthurClemens - 08 Aug 2004
This page addresses implemented UTF-8 support for URLs only. The overall plan for UTF-8 support for TWiki is described in TWiki:Codev.ProposedUTF8SupportForI18N .
To simplify use of internationalised characters within WikiWords and attachment names, TWiki now supports UTF-8 URLs, converting on-the-fly to virtually any character set, including ISO-8859-*, KOI8-R, EUC-JP, and so on.
Support for UTF-8 URL encoding avoids having to configure the browser to turn off this encoding in URLs (the default in Internet Explorer, Opera Browser and some Mozilla Browser URLs) and enables support of browsers where only this mode is supported (e.g. Opera Browser for Symbian smartphones). A non-UTF-8 site character set (e.g. ISO-8859-*) is still used within TWiki, and in fact pages are stored and viewed entirely in the site character set - the browser dynamically converts URLs from the site character set into UTF-8, and TWiki converts them back again.
System requirements are updated as follows:
ISO-2022-*, HZ-* and other 'non-ASCII-safe' multi-byte character sets are now specifically excluded from use as the site character set, since they interfere with TWiki ML; however, many multi-byte character sets work fine, e.g. EUC-JP, GB2312, etc.
It's now possible to override the site character set defined in the $siteLocale
setting in TWiki.cfg - this enables you to have a slightly different spelling of the character set in the server locale (e.g. 'eucjp') and the HTTP header sent to the browser (e.g. 'euc-jp').
This feature should also support use of Mozilla Browser with TWiki:Codev.TWikiOnMainframe (as long as mainframe web server can convert or pass through UTF-8 URLs) - however, this specific combination is not tested. Other browser-server combinations should not have any problems.
Please note that use of UTF-8 as the site character set is not yet supported - see Phase 2 of TWiki:Codev.ProposedUTF8SupportForI18N for plans and work to date in this area.
This feature is complete in TWiki releases newer than February 2004.
Note for skin developers: %INTURLENCODE% is no longer required (TWiki:Plugins.InternationalisingYourSkin).
URLs are not allowed to contain non-ASCII (8th bit set) characters: http://www.w3.org/TR/html4/appendix/notes.html#non-ascii-chars
The overall plan for UTF-8 support for TWiki is described in two phases in TWiki:/Codev.ProposedUTF8SupportForI18N - this page addresses the first phase, in which UTF-8 is supported for URLs only.
UTF-8 URL translation to virtually any character set is supported as of TWiki Release 01 Sep 2004, but full UTF-8 support (e.g. pages in UTF-8) is not supported yet - this will be phase 2.
The code automatically detects whether a URL is UTF-8 or not, taking care to avoid over-long and illegal UTF-8 encodings that could introduce TWiki:Codev.MajorSecurityProblemWithIncludeFileProcessing (tested against a comprehensive UTF-8 test file, which IE 5.5 fails quite dangerously, and Opera Browser passes). Any non-ASCII URLs that are not valid UTF-8 are then assumed to be directly URL-encoded as a single-byte or multi-byte character set (as now), e.g. EUC-JP.
The main point is that you can use TWiki with international characters in WikiWords without changing your browser setup from the default, and you can also still use TWiki using non-UTF-8 URLs. This works on any Perl version from 5.005_03 onwards and corresponds to Phase 1 of TWiki:Codev.ProposedUTF8SupportForI18N. You can have different users using different URL formats transparently on the same server.
UTF-8 URLs are automatically converted to the current $siteCharset
(from the TWiki.cfg
locale setting), using modules such as CPAN:Encode if needed.
TWiki generates the whole page in the site charset, e.g. ISO-8859-1 or EUC-JP, but the browser dynamically UTF-8 encodes the attachment's URL when it's used. Since Apache serves attachment downloads without TWiki being involved, TWiki's code can't do its UTF-8 decoding trick, so TWiki URL-encodes such URLs in ISO-8859-1 or whatever when generating the page, to bypass this URL encoding, ensuring that the URLs and filenames seen by Apache remain in the site charset.
TWiki:Codev.TWikiOnMainframe uses EBCDIC web servers that typically translate their output to ASCII, UTF-8 or ISO-8859-1 (and URLs in the other direction) since there are so few EBCDIC web browsers. Such web servers don't work with even ISO-8859-1 URLs if they are URL encoded, since the automated translation is bypassed for URL-encoded characters. For TWiki on Mainframe, TWiki assumes that the web server will automatically translate UTF-8 URLs into EBCDIC URLs, as long as URL encoding is turned off in TWiki pages.
It should work with TWiki:Codev.TWikiOnMainframe. Tested with IE 5.5, Opera 7.11 and Mozilla (Firebird 0.7).
Opera Browser on the P800 smartphone is working for page viewing but leads to corrupt page names when editing pages.
For up to date information see TWiki:Codev.EncodeURLsWithUTF8
-- TWiki:Main.RichardDonkin - 7 Jan 2004
-- TWiki:Main.MattWilkie - 10 Aug 2004
-- TWiki:Main.PeterThoeny - 14 Aug 2004
Major New Features
Details of New Features and Enhancements of 01-Sep-2004 Release | Developer, Sponsor |
---|---|
Install: Ship with an automatic upgrade script to facilitate TWiki upgrades. Details | TWiki:Main.MartinGregory TWiki:Main.SvenDowideit |
Install: New testenv function to change the locks in the TWiki database to the web server user id (automates installation step). Details | TWiki:Main.MattWilkie TWiki:Main.SvenDowideit |
Install: The shipped .htaccess.txt now needs to be edited before it is valid, to help reduce chances of error. Details | TWiki:Main.CrawfordCurrie TWiki:Main.SvenDowideit |
Install: Configurable password file handling for different types of encryption. Details | TWiki:Main.PavelGoran TWiki:Main.SvenDowideit |
Install: Remove office locations from registration. Details | TWiki:Main.PeterThoeny |
Install: Changes to support shorter URLs with Apache Rewrite rules. Details | TWiki:Main.AntonioBellezza TWiki:Main.WalterMundt |
Install: Remove the Know web from the distribution. Details | TWiki:Main.PeterThoeny |
Internationalization: Support use of UTF-8 URLs for I18N characters in TWiki page and attachment names. Details | TWiki:Main.RichardDonkin |
Authentication: Authenticate users when creating new topic in view restricted web. Details | TWiki:Main.JonathanGraehl TWiki:Main.SvenDowideit |
Preferences: TWiki Preferences need to be secured properly. Details | TWiki:Main.PeterThoeny |
Preferences: Use TWiki Forms to set user preferences. Details | TWiki:Main.JohnTalintyre |
Skins: New pre-installed skins PatternSkin and DragonSkin. Details | TWiki:Main.ArthurClemens TWiki:Main.PeterThoeny |
Skins: New skin browser to choose from installed skins. Details | TWiki:Main.PeterThoeny |
Skins: Documented set of CSS classes that are used in standard skins. Details | TWiki:Main.ArthurClemens TWiki:Main.SvenDowideit |
Skins: Added CSS class names to Diff output. Details | TWiki:Main.SvenDowideit |
Skins: Templates can now be read from user topics, as well as from files in the templates diretcory. Details | TWiki:Main.CrawfordCurrie TWiki:Main.WalterMundt |
Skins: Ensure that the default template gets overridden by a template passed in. Details | TWiki:Main.MartinCleaver TWiki:Main.WalterMundt |
Skin: Convey an important broadcast message to all users, e.g. scheduled server downtime. Details | TWiki:Main.PeterThoeny |
Skin: Balanced pastel colors for TWiki webs. Details | TWiki:Main.ArthurClemens |
Rendering: Use exclamation point prefix to escape TWiki markup rendering. Details | TWiki:Main.ArthurClemens |
Rendering: Ordered lists with uppercase & lowercase letters, uppercase & lowercase Roman numerals. Details | TWiki:Main.DanBoitnott TWiki:Main.PeterThoeny |
Rendering: Allow custom styles for the "?" of uncreated topics. Details | TWiki:Main.SvenDowideit |
Rendering: Render IRC and NNTP as a URL. Details | TWiki:Main.PeterThoeny |
Rendering: Make acronym linking more strict by requiring a trailing boundary, e.g. excluding TLAfoobar. Details | TWiki:Main.CrawfordCurrie TWiki:Main.SvenDowideit |
Rendering: TWiki Form with Label type. Details | TWiki:Main.PeterThoeny |
Rendering: Web names can now be WikiWords. Details | TWiki:Main.PeterThoeny |
Rendering: New syntax for definition list with dollar sign and colon. Details | TWiki:Main.AdamTheo TWiki:Main.PeterThoeny |
Rendering: Table with multi-span rows, functionality provided by Table Plugin. Details | TWiki:Main.WalterMundt |
Variables: New title parameter for TOC variable. Details | TWiki:Main.PeterThoeny TWiki:Main.ArthurClemens |
Variables: New REVINFO variable in templates supports flexible display of revision information. Details | TWiki:Main.PeterThoeny TWiki:Main.SvenDowideit |
Variables: Set times to be displayed as gmtime or servertime. Details | TWiki:Main.SueBlake TWiki:Main.SvenDowideit |
Variables: Properly encode parameters for form fields with ENCODE variable. Details | TWiki:Main.PeterThoeny |
Variables: Expand USERNAME and WIKINAME in Template Topics. Details | TWiki:Main.PeterThoeny |
Variables: Expand same variables in new user template as in template topics. Details | TWiki:Main.PeterThoeny |
Variables: Optionally warn when included topic does not exist; with the option to create the included topic. Details | TWiki:Main.PeterThoeny |
Variables: In topic text show file-types of attached files as icons. Details | TWiki:Main.PeterThoeny |
Variables: New variable FORMFIELD returns the value of a field in the form attached to a topic.. Details | TWiki:Main.DavidSachitano TWiki:Main.SvenDowideit |
Variables: Meta data rendering for form fields with META{"formfield"}. Details | TWiki:Main.PeterThoeny |
Variables: New PLUGINVERSION variable. Details | TWiki:Main.PeterThoeny |
Variables: URLPARAM now has a default="..." argument, for when no value has been given. Details | TWiki:Main.PeterThoeny |
Variables: URLPARAM variable with newline parameter. Details | TWiki:Main.PeterThoeny |
Variables: URLPARAM variable with new multiple=on parameter. Details | TWiki:Main.PaulineCheung TWiki:Main.PeterThoeny |
Search: New switch for search to perform an AND NOT search. Details | TWiki:Main.PeterThoeny |
Search: Keyword search to search with implicit AND. Details | TWiki:Main.PeterThoeny |
Search: Multiple searches in same topic with new multiple="on" paramter. Details | TWiki:Main.PeterThoeny |
Search: Remove limitation on number of topics to search in a web. Details | TWiki:Main.PeterThoeny |
Search: Exclude topics from search with an excludetopic parameter. Details | TWiki:Main.PeterThoeny |
Search: Expand Variables on Formatted Search with expandvariables Flag. Details | TWiki:Main.PeterThoeny |
Search: Formatted Search with Web Form variable to retrieve the name of the form attached to a topic. Details | TWiki:Main.FrankSmith TWiki:Main.PeterThoeny |
Search: Formatted Search with Conditional Output. Details | TWiki:Main.PeterThoeny |
Search: Formatted Search with $parent token to get the parent topic. Details | TWiki:Main.PeterThoeny |
Search: New separator parameter to SEARCH supports better SEARCH embedding. Details | TWiki:Main.PeterThoeny |
Search: Improved search performance when sorting result by topic name. Details | TWiki:Main.PeterThoeny |
Search: New scope=all search parameter to search in topic name and topic text at the same time. Details | TWiki:Main.PeterThoeny |
Search: New topic parameter for AND search on topic text and topic name. Details | TWiki:Main.PeterThoeny |
Search modules uses Perl-style keyword parameters (code cleanup). Details | TWiki:Main.PeterThoeny |
Search: New $wikiname variable in format parameter of formatted search. Details | TWiki:Main.ArthurClemens |
Search: Sort search by topic creation date. Details | TWiki:Main.PeterThoeny |
Search: Topic creation date and user in Formatted Search. Details | TWiki:Main.CoreyFruitman TWiki:Main.SvenDowideit |
Search: Increase levels of nested search from 2 to 16. Details | TWiki:Main.PeterThoeny |
Plugins: New pre-installed Plugins CommentPlugin, EditTablePlugin, RenderListPlugin, SlideShowPlugin, SmiliesPlugin, SpreadSheetPlugin, TablePlugin. Details | TWiki:Main.PeterThoeny |
Plugins: New callback afterSaveHandler , called after a topic is saved. Details | TWiki:Main.WalterMundt |
Plugins: New callbacks beforeAttachmentSaveHandler and afterAttachmentSaveHandler , used to intervene on attachment save event. Details | TWiki:Main.MartinCleaver TWiki:Main.WalterMundt |
Plugins: New callbacks beforeCommonTagsHandler and afterCommonTagsHandler . Details | TWiki:Main.PeterThoeny |
Plugins: New callback renderFormFieldForEditHandler to render form field for edit. Details | TWiki:Main.JohnTalintyre |
Plugins: New callback renderWikiWordHandler to custom render links. Details | TWiki:Main.MartinCleaver TWiki:Main.WalterMundt |
Plugins: New function TWiki::Func::formatTime to format time into a string. Details | TWiki:Main.SvenDowideit |
Plugins: New function TWiki::Func::getRegularExpression to get predefined regular expressions. Details | TWiki:Main.RichardDonkin |
Plugins: New functions TWiki::Func::getPluginPreferences* to get Plugin preferences. Details | TWiki:Main.WalterMundt |
Plugins: New function TWiki::Func::extractParameters to extract all parameters from a variable string. Details | TWiki:Main.PeterThoeny |
Plugins: New function TWiki::Func::checkDependencies to check for module dependency. Details | TWiki:Main.CrawfordCurrie TWiki:Main.SvenDowideit |
Plugins: A recommendation for where a Plugin can store its data. Details | TWiki:Main.PeterThoeny |
UI: Show tool-tip topic info on WikiWord links. Details | TWiki:Main.PeterThoeny |
UI: Save topic and continue edit feature. Details | TWiki:Main.ColasNahaboo |
UI: Change topic with direct save (without edit/preview/save cycle) and checkpoint save. Details | TWiki:Main.MattWilkie TWiki:Main.SvenDowideit |
UI: In attachment table, change 'action' to 'manage'. Details | TWiki:Main.PeterThoeny TWiki:Main.ArthurClemens |
UI: Smaller usability enhancements on the file attachment table. Details | TWiki:Main.PeterThoeny TWiki:Main.ArthurClemens |
UI: Removes anchor links from header content and places them before the text to fix 'header becomes link'. Details | TWiki:Main.ArthurClemens |
UI: Improved functionality of the More screen. Details | TWiki:Main.PeterThoeny TWiki:Main.ArthurClemens |
UI: Quick reference chart of most used markup is now listed on the edit screen. Details | TWiki:Main.ArthurClemens |
UI: Flag for edit script to avoid overwrite of existing topic text and form data. Details | TWiki:Main.NielsKoldso TWiki:Main.PeterThoeny |
UI: Disable Escape key in IE textarea to prevent it cancelling work. Details | TWiki:Main.CrawfordCurrie TWiki:Main.PeterThoeny |
UI: Improved warning message on unsaved topic. Details | TWiki:Main.MartinGregory TWiki:Main.SvenDowideit |
UI: Reverse order of words in page title for better multi-window/tab navigation. Details | TWiki:Main.ArthurClemens |
UI: Provides a framework to create and modify a topic without going through edit->preview->save sequence. Details | TWiki:Main.AndreUlrich TWiki:Main.SvenDowideit |
UI: Set the topic parent to none in More screen, e.g. remove the current topic parent. Details | TWiki:Main.PeterThoeny |
UI: Use templates to define how file attachments are displayed. Was previously hard-coded. Details | TWiki:Main.CrawfordCurrie TWiki:Main.SvenDowideit |
UI: Topic diff shows unified diff with unchanged context. Details | TWiki:Main.SvenDowideit |
UI: Diff feature shows TWiki form changes in nice tables. Details | TWiki:Main.SvenDowideit |
Code refactoring: The log entry for a save now has a dontNotify flag in the extra field if the user checked the minor changes flag. Details | TWiki:Main.PeterThoeny |
Code refactoring: Server-side include of attachments accelerates INCLUDE. Details | TWiki:Main.CrawfordCurrie TWiki:Main.PeterThoeny |
Code refactoring: Move functionality out of bin scripts and into included modules. Details | TWiki:Main.CrawfordCurrie TWiki:Main.SvenDowideit |
Code refactoring: Move bin script functionality into TWiki::UI modules. Details | TWiki:Main.CrawfordCurrie TWiki:Main.PeterThoeny |
Code refactoring: Optimize preferences handling for better performance. Details | TWiki:Main.PavelGoran TWiki:Main.WalterMundt |
Code refactoring: Refactor variable expansion for edit and register. Details | TWiki:Main.CrawfordCurrie TWiki:Main.PeterThoeny |
Code refactoring: Move savemulti script into TWiki::UI::Save. Details | TWiki:Main.MattWilkie TWiki:Main.SvenDowideit |
Code refactoring: Topic search is done natively in Perl, it does not depend anymore on system calls with pipes. Details | TWiki:Main.PeterThoeny |
Code refactoring: Fix logical error in upload script which prevented MIME filename from being used. Details | TWiki:Main.WalterMundt |
Bug Fixes of 01-Sep-2004 Release | Developer, Sponsor |
---|---|
Fix: Consistently create headings with empty anchor tags. Details | TWiki:Main.PeterThoeny |
Fix: TOC does not work for headings containing & without spaces surrounding it. Details | TWiki:Main.PeterThoeny |
Fix: Backslash line break breaks TWiki form definitions. Details | TWiki:Main.CrawfordCurrie TWiki:Main.PeterThoeny |
Fix: Rename fixes unrelated topic references. Details | TWiki:Main.RichardDonkin |
Fix: Bug with infinite recursion in search. Details | TWiki:Main.PeterThoeny |
Fix: Can't send mail with full 'From' address. Details | TWiki:Main.PeterThoeny |
Fix: All scripts change to $bin before execute (for mod_perl2). Details | TWiki:Main.PeterThoeny |
Fix: Several RSS readers do not show all entries seen in the WebChanges list; repeated updates to the same topics get lost. Details | TWiki:Main.ArthurClemens |
Fix: TWiki::Access::checkAccessPermission function improperly handles Main and TWiki webs. Details | TWiki:Main.SvenDowideit |
Fix: Topic save returns error CI Date precedes date in revision. Details | TWiki:Main.PeterThoeny |
Fix: Double quotes got replaced by " in TWiki forms. Details | TWiki: MS TWiki:Main.PeterThoeny |
Fix: Duplicated Wiki name in .htpasswd entry for sha1 encoding. Details | TWiki:Main.PeterThoeny |
Fix: When viewing a previous version of a topic, the view script substitutes only one occurrence of the variable EDITTOPIC. Details | TWiki:Main.PeterThoeny |
Fix: Form default values are not working for text fields. Details | TWiki:Main.ThomasWeigert TWiki:Main.SvenDowideit |
Fix: Formatted searches using a $pattern which unbalanced parenthesis crash TWiki. Details | TWiki:Main.PeterThoeny |
Fix: Formatted Search uses title but should use name for formfield parameter. Details | TWiki:Main.PeterThoeny |
Fix: GMTIME variable returns unwanted GMT text. Details | TWiki:Main.SvenDowideit |
Fix: Include from other Web links ACRONYMS. Details | TWiki:Main.PeterThoeny |
Fix: Including an HTML file is very slow. Details | TWiki:Main.JohnTalintyre |
Fix: includeUrl() mess up absolute URLs. Details | TWiki:Main.SvenDowideit |
Fix: Filter out fixed font rendering in TOC to avoid unrendered = equal signs in TOC. Details | TWiki:Main.PeterThoeny |
Fix: The initializeUserHandler is broken for session Plugins. Details | TWiki:Main.JohnTalintyre |
Fix: SEARCH fails with very large webs. Details | TWiki:Main.PeterThoeny |
Fix: Security alert: User could gain view access rights of another user. Details | TWiki:Main.KimCovil TWiki:Main.PeterThoeny |
Fix: 'print to closed file handle' error of log files are not writable. Details | TWiki:Main.MartinGregory TWiki:Main.SvenDowideit |
Fix: Meta data handler can't process CR-LF line endings. Details | TWiki:Main.PeterThoeny |
Fix: METAFIELD meta data is not shown in view raw=on mode. Details | TWiki:Main.PeterThoeny |
Fix: Minor XHTML non-compliance in templates and code. Details | TWiki:Main.PeterThoeny |
Fix: Getting pages from virtual hosts fails. Details | TWiki:Main.JohnTalintyre |
Fix: Create new web fails if RCS files do not exist. Details | TWiki:Main.ClausBrunzema TWiki:Main.SvenDowideit |
Fix: Metacharacters can be passed through to the shell in File Attach. Details | TWiki:Main.PeterThoeny |
Fix: Ability to delete non-WikiWord topics without confirmation. Details | TWiki:Main.PeterThoeny |
Fix: + symbol in password reset fails. Details | TWiki:Main.PeterThoeny |
Fix: Pathinfo cleanup for hosted sites. Details | TWiki:Main.MikeSalisbury TWiki:Main.SvenDowideit |
Fix: Software error in SEARCH if regular expression pattern has unmached parenthesis. Details | TWiki:Main.PeterThoeny |
Fix: Pipe chars in the comment field of the attachment table are not escaped. Details | TWiki:Main.PeterThoeny |
Fix: Link escaping in preview fails for not quoted hrefs. Details | TWiki:Main.TedPavlic TWiki:Main.PeterThoeny |
Fix: Preview expands variables twice. Details | TWiki:Main.PeterThoeny |
Fix: Using a proxy with TWiki fails; no proxy-HTTP request, minimal request not HTTP 1.0, requests marked 1.1 are at best 1.0. Details | TWiki:Main.MichaelSparks TWiki:Main.JohnTalintyre |
Fix: Runaway view processes with TWiki::Sore::RcsLite. Details | TWiki:Main.SvenDowideit |
Fix: Regex Error in WebTopicList with topics that have meta characters in the name. Details | TWiki:Main.PeterThoeny |
Fix: Rename script misses some ref-by topics. Details | TWiki:Main.JohnTalintyre |
Fix: Links to self within the page being renamed are not changed. Details | TWiki:Main.SvenDowideit |
Fix: Rename topic does 'Main.Main.UserName' for attachments. Details | TWiki:Main.PeterThoeny |
Fix: Revision date is set to Jan 1970 when using RCS Lite. Details | TWiki:Main.SvenDowideit |
Fix: The new dynamically-created SiteMap is very nice, but somewhat slow. Details | TWiki:Main.PeterThoeny |
Fix: The makeAnchorName function did not produce the same results if called iteratively, resulting in problems trying to link to headers.. Details | TWiki:Main.WalterMundt |
Fix: Statistics page does not provide links to non-wikiword topics. Details | TWiki:Main.PeterThoeny |
Fix: Make TOC link URI references relative. Details | TWiki:Main.MartinGregory TWiki:Main.PeterThoeny |
Fix: TWiki hangs when used on Apache 2.0. Details | TWiki:Main.SvenDowideit |
Fix: TOC incorrectly strips out links in headers. Details | TWiki:Main.PeterThoeny |
Fix: The HTML tags that are generated by TOC do not close properly. Details | TWiki:Main.PeterThoeny |
Fix: TOC on INCLUDEd topic ignores STOPINCLUDE. Details | TWiki:Main.WillNorris TWiki:Main.PeterThoeny |
Fix: Quotes in tooltip message can break a TWiki form. Details | TWiki:Main.PeterThoeny |
Fix: Better error message if the file attachment directory is not writable. Details | TWiki:Main.CrawfordCurrie TWiki:Main.SvenDowideit |
Fix: Image size of PNG files. Details | TWiki:Main.ArthurClemens |
Fix: The testenv script distinguishes between real user ID and effective user ID. Details | TWiki:Main.RichardDonkin |
Fix: Variables in square bracket links dont work in form fields. Details | TWiki:Main.SvenDowideit |
Fix: Variable with Parameters in Form Fields Disappear. Details | TWiki:Main.PeterThoeny |
Fix: Verbatim tag should escape HTML entities. Details | TWiki:Main.PeterThoeny |
Fix: Field names of TWiki Forms can be WikiWords, this is used to link to a help topic. Details | TWiki:Main.PeterThoeny |
Fix: Clean up the WebRssBase INCLUDES to use VARIABLES set in TWikiPreferences. Details | TWiki:Main.SvenDowideit |
Fix: Resolving variables in included topics. Details | TWiki:Main.OliverKrueger TWiki:Main.SvenDowideit |
/bin/view/Web.TopicName
topic view URL (besides the default /bin/view/Web/TopicName
URL); useful for InterwikiPlugin links like TWiki:Codev.ReadmeFirst
readTopicText
, saveTopicText
, setTopicEditLock
, checkTopicEditLock
%NOAUTOLINK%
setting in the TWikiPreferences to disable the auto-linking of WikiWords
registrationHandler
, beforeEditHandler
, afterEditHandler
, beforeSaveHandler
, writeHeaderHandler
, redirectCgiQueryHandler
, getSessionValueHandler
, setSessionValueHandler
%INCLUDE{ "OtherTopic" rev="1.2" }%
%NOP{}%
variable in TWikiTemplates topic gets removed at topic creation time; useful to write protect template topics
%URLPARAM{}%
variable in TWikiTemplates topic gets expanded at topic creation time; useful for dynamic content creation
$logDir
introduced in TWiki.cfg to set the log directory
setlib.cfg
file in the bin directory to set the TWiki library path
%PROXYHOST
and %PROXYPORT%
settings in the TWikiPreferences
%WIKILOGOIMG%
, %TWIKILOGOURL%
and %WIKILOGOALT%
variables in TWikiPreferences; replacing $wikiHomeUrl
in TWiki.cfg
%WIKITOOLNAME%
variable in TWikiPreferences; replacing $wikiToolName
in TWiki.cfg
%EDITBOXSTYLE%
preferences variable which sets the edit box width automatically to the window width
%URLENCODE{}%
variable to encodes a string for using in a URL parameter, e.g. %URLENCODE{"spaced name"}%
returns spaced%20name
/twiki/templates/register.tmpl
template file
%TOC%
table of content, e.g. ---+!! This heading
is not shown in a TOC
%SEARCH{}%
variable, FormattedSearch and WebSearch
<verbatim>
tags are no longer expanded
%SEARCH{}%
variable for database like reporting.
TWiki.cfg
notedited.tmpl
, notext.tmpl
and notwiki.tmpl
templates. More in TWikiTemplates.
%TOPICLIST{"format"}%
and %WEBLIST{"format"}%
variables to get a formatted topic index and web index, respectively. More in TWikiVariables.
%URLPARAM{"name"}%
variable to query URL parameters. More in TWikiVariables.
| *bold* |
cells as table headers, (ii) render space padded cells | center aligned |
and | right aligned |
, (iii) span multiple columns using | empty cells |||
. More in TextFormattingRules.
.htaccess
files that are attached to a topic get a .txt
suffix appended to the file name. See also TWiki:Codev/FileAttachmentFilterSecurityAlert
---++ My Title
; and new %TOC%
variable to build a table of content from headings in a topic. More in TWikiVariables.
[[http://TWki.org][TWiki]]
) and internal links (i.e [[WikiSyntax][syntax]]
). More in TWikiVariables.
#MyAnchor
at the beginning of a line, and link to it with [[#MyAnchor]]
. More in TWikiVariables.
Net::SMTP
module instead of sendmail
if installed.
<verbatim>
... </verbatim>
tags to show source code "as is". Unlike the <pre>
... </pre>
tags, it also shows <
, >
, &
characters "as is".
==Bold Fixed==
to get Bold Fixed
.
%GMTIME{"..."}%
and %SERVERTIME{"..."}%
variables. Format is now "$hour:$min"
instead of "hour:min"
. More in TWikiVariables. Attention: Check your existing topics when you upgrade TWiki!
%STARTINCLUDE%
and %STOPINCLUDE%
variables to control what gets included of a topic. More in TWikiVariables.
print
skin for a printable view of a topic. More in TWikiSkins and TWiki:Codev/TWikiSkins.
%BASEWEB%
, %INCLUDINGWEB%
, %BASETOPIC%
and %INCLUDINGTOPIC%
to have more control over include handling. More in TWikiVariables and TWiki:Codev/IncludeHandlingImprovements.
noheader="on"
switch in %SEARCH{...}%
to suppress table header. More in TWikiVariables.
$doHidePasswdInRegistration
in wikicfg.pm
to hide plain text password in registration email.
%VAR{"NAME" web="Web"}%
to get web specific preferences. More in TWikiVariables.
view
"knows" the user once authenticated in edit
. More in TWikiUserAuthentication.
png
image support.
%INCLUDE{"%TWIKIWEB%.TWikiWebsTable"}%
. More in TWiki:Codev/BetterTWikiTagTemplateProcessing.
mailnotify
to suppress all normal output.
[[text formatting FAQ]]
to get the link text formatting FAQ that points to topic TextFormattingFAQ.
%HTTP_EQUIV_ON_VIEW%
, %HTTP_EQUIV_ON_EDIT%
and %HTTP_EQUIV_ON_PREVIEW%
that define the <meta http-equiv="...">
meta tags for the TWiki templates. This can be used for example to set a document expiration time.
%GMTIME{"..."}%
and %SERVERTIME{"..."}%
. More in TWikiVariables.
%INCLUDE{"Web/TopicName.txt"}%
to %INCLUDE{"Web.TopicName"}%
. Legacy syntax still supported.
*bold*, italic, __bold italic__
and fixed
, where it is not necessary anymore to have a trailing space before .,;:?!
characters.
%INCLUDE%
of arbitrary files.
%GMTIME%
variable that shows the current GM time.
%HTTP_HOST%
, %REMOTE_ADDR%
, %REMOTE_PORT%
and %REMOTE_USER%
.
%ATTACHLINKBOX%
controls the default state of the link check box in the attach file page.
Perl -T
option )
%EDITBOXWIDTH%
and %EDITBOXHEIGHT%
to specify the edit box size.
wikiwebs.inc
, wikiwebtable.inc
, weblist.inc
, webcopyright.inc
and webcolors.inc
files.
%SCRIPTSUFFIX%
/ $scriptSuffix containing an optional file extension of the TWiki Perl script. Templates have been changed to use this variable. This allows you to rename the Perl script files to have a file extension like for example ".cgi".
%SCRIPTURLPATH%
/ $scriptUrlPath containing the script URL without the domain name. Templates have been changed to use this variable instead of %SCRIPTURL%
. This is for performance reasons.
%INCLUDE:"filename.ext"%
to %INCLUDE{"filename.ext"}%
. (Previous syntax still supported. Change was done because of inline search syntax)
%SEARCH{"str" ...}%
to show a search result embedded in a topic text. TWikiVariables has more on the syntax. Inline search combined with the category table feature can be used for example to create a simple bug tracking system.
initialize
in wiki.pm
did not handle $thePathInfo
correctly.
$doLogTopic*
in wikicfg.pm to selectively log topic view, edit, save, rdiff, attach, search and changes to monthly log file.
$doRemovePortNumber
in wikicfg.pm to optionally remove the port number from the TWiki URL. Example www.some.domain:1234/twiki
gets www.some.domain/twiki
.
%INCLUDE:"file.inc"%
variable. Search first in the current web, then in parent data directory. Useful to overload default include text in the data directory by web-specific text, like for example webcopyright.inc
text.
TestVersion
/ TestVersions
, TestPolicy
/ TestPolicies
, TestAddress
/ TestAddresses
, TestBox
/ TestBoxes
.
webcopyright.inc
file. This is to easily customize the copyright text.
%WIKIHOMEURL%
(link when pressing the icon on the upper left corner) and %WIKITOOLNAME%
(the name of the wiki tool TWiki
).
%PUBURL%
(Public directory URL) and %ATTACHURL%
(URL of topic file attachment).
fixed font text
. Words get showns in fixed font
by enclosing them in "=" equal signs. Example Writing =fixed font= will show up as fixed font
.
Diffs
link at the bottom of each topic, e.g. Topic TWikiHistory . { Edit Ref-By Diffs r1.3 > r1.2 > r1.1 }
Revision r1.3 1998/11/10 01:34 by PeterThoeny
data/logYYYYMM.txt
, where YYYYMM
the year and month in numeric format is. Intended for auditing only, not accessible from the web.
r1.3
) and differences thereof (e.g. >
) at the bottom Topic TWikiHistory . { Edit Ref-By r1.3 > r1.2 > r1.1 }
Revision r1.3 1998/11/10 01:34 by TWiki:Main.PeterThoeny
Topic TWikiHistory . { Edit Ref-By r1.3 r1.2 r1.1 }
Revision r1.3 1998/10/26 01:34:00 by TWiki:Main.PeterThoeny
AaA
sequence, e.g. AaA1
is a valid WikiTopic name, but not Aa1
.
%INCLUDE:"filename.ext"%
%TOPIC%
(Topic name), %WEB%
(web name), %SCRIPTURL%
(script URL), %DATE%
(current date), %WIKIWEBMASTER%
(Wiki webmaster address), %WIKIVERSION%
(Wiki version), %USERNAME%
(user name), %WIKIUSERNAME%
(Wiki user name).
PeterThoeny
instead of thoeny
in case the Wiki username exists. Implementation Automatic lookup of Wiki username in topic TWikiUsers.
Know.WebSeach
.
The typical TWiki development flow...