Doubleclick anywhere to return to the top of the page.
- TWiki System Requirements
- TWiki Installation Guide
- TWiki Upgrade Guide
- Overview
- Upgrade Requirements
- Major Changes from TWiki 01-Sep-2001
- Major Changes from TWiki 01-Dec-2000
- TWiki Directory Structure and File Names
- Standard Upgrade Procedure from 01-Sep-2001 to 01-Dec-2001 Release
- Standard Upgrade Procedure from 01-Dec-2000 to 01-Dec-2001 Release
- Pre-Upgrade Preparation
- Step 1: Backup & Unpack
- Step 2: Upgrade TWiki document files
- Step 3: Install new template files
- Step 4: Install new data and pub files
- Step 5: Install new CGI scripts
- Step 6: Install new Perl library files
- Step 7: Set configurations and test installation
- Step 8: Update topics
- Step 9: Customize template files
- Step 10: Switch over to new installation
- Step 11: Test the TWiki Plugins
- General Format Changes
- Known Issues
- TWiki User Authentication
- TWiki Access Control
- TWiki Text Formatting
- TWiki Variables
- TWiki Forms
- TWiki Templates
- TWiki Skins
- TWiki Formatted Search Results
- TWiki Meta Data
- TWiki Plugins
- TWikiSiteTools
- Managing Topics
- Managing Webs
- Appendix A: TWiki File System
- Appendix B: TWiki Development Timeline
TWiki System Requirements
Server and client system requirements for TWiki 01-Sep-2001Overview
Maintaining minimum client and server requirements is necessary to keep TWiki deployment as broad as possible.Server Requirements
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:Required Server Environment | ||
---|---|---|
Resource | Unix | Windows |
Perl | 5.005_03 or higher | |
Non standard Perl modules | Net::SMTP (or sendmail ) | Net::SMTP , MIME::Base64 , Digest::SHA1 |
RCS | 5.7 or higher | |
Other external programs | ls, fgrep, egrep | |
Web server | Apache; others (with support for CGI, authentication, extended path) * |
Client Requirements
The TWiki standard installation has extremely low browser requirements:- HTML 3.2 compliant
- generates XHTML 1.0 pages that are compatible with HTML 3.2
- minimal use of JavaScript in the user interface (degrades gracefully)
- no cookies
- no CSS
Known Issues
- The new TWikiPlugins feature currently does not have compatibility guidelines for developers. Plugins can require just about anything: browser-specific functions, stylesheets (CSS), DHTML, Java applets, cookies.
TWiki Installation Guide
Installation instructions for the TWiki 01-Sep-2001 production releaseOverview
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 OS and server that meet the system requirements. Documentation for other platforms is currently limited. For Windows, check TWiki:Codev/TWikiOnWindows. Search the TWiki:Codev web for other intallation notes.Standard Installation
Request and download the TWiki 01-Sep-2001 distribution in Unix ZIP format from http://TWiki.org/download.html. (To install TWiki on SourceForge, for use on a software development project, read TWiki:Codev/SourceForgeHowTo.)Step 1: Create & Configure the Directories
NOTE: If you don't have access to your Web server configuration files - for example, if you're installing on an ISP-hosted account - use the alternative Step 1 instead.- Create directory
/home/httpd/twiki
and unzip the TWiki distribution into this directory. - The
twiki/bin
directory of TWiki must be set as a cgi-bin directory. Add/home/httpd/twiki/bin
to file/etc/httpd/httpd.conf
with onlyExecCGI
option. - The
twiki/pub
directory of TWiki must be set so that it is visible as a URL. Add/home/httpd/twiki
to filehttpd.conf
with normal access options (copy from/home/httpd/html
). - Now add
ScriptAlias
for/twiki/bin
andAlias
for/twiki
to filehttpd.conf
.
NOTE: TheScriptAlias
must come before theAlias
, otherwise, Apache will fail to correctly set up/twiki/bin/
, by treating it as just another subdirectory of the/twiki/
alias.
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 AllowOverride all Allow from all </Directory> <Directory "/home/httpd/twiki/pub"> Options FollowSymLinks +Includes AllowOverride None Allow from all </Directory>
- Restart Apache by
/etc/rc.d/rc5.d/S85httpd restart
. - Test that the
twiki/bin
directory is CGI-enabled by trying visiting it in your browser:- Enter the URL for the
bin
directory,http://yourdomain.com/twiki/bin/
. - Your settings are OK if you get a message like
"Forbidden. You don't have permission to access /twiki/bin/ on this server"
. - Settings are NOT correct if you get something like
"Index of /twiki/bin"
- recheck yourhttpd.conf
file.
- Enter the URL for the
- Go directly to Step 2...
Step 1 for Non-Root Accounts
To install TWiki on a system where you don't have server administrator privileges, for example, on a hosted Web account:- Download and unzip TWiki on your local PC
- Using the table below, create a directory structure on your host server
- Upload the TWiki files by FTP (transfer as text except for the image files in
pub
)
TWiki dir: What it is: Where to copy: Example: twiki/bin
CGI bin cgi-enabled dir /home/smith/public_html/cgi-bin
twiki/lib
library files same level as twiki/bin
/home/smith/public_html/lib
twiki/pub
public files htdoc enabled dir /home/smith/public_html/pub
twiki/data
topic data outside of htdoc tree (for security) /home/smith/twiki/data
twiki/templates
web templates outside of htdoc tree (for security) /home/smith/twiki/templates
Step 2: Set File Permissions
- Make sure Perl 5 and the Perl CGI library are installed on your system. The default location of Perl is
/usr/bin/perl
. If it's elsewhere, change the path to Perl in the first line of each script in thetwiki/bin
directory, or create a symbolic link from/usr/bin/perl
.- IMPORTANT: On ISP-hosted accounts, Perl CGI scripts usually require a
.cgi
extension to run. Some systems need.pl
, the regular Perl extension. Modify alltwiki/bin
script filenames if necessary.
- IMPORTANT: On ISP-hosted accounts, Perl CGI scripts usually require a
- Set the file permission of all Perl scripts in the
twiki/bin
directory as executable to-rwxr-xr-x
(755). - To be able to edit the Perl scripts and
.tmpl
files it is necessary tochown
andchgrp -R twiki
so all the files have the owner you want. - NOTE: This Guide assumes user
nobody
ownership for all files manipulated by the CGI scripts (executed by the Web server), and usertwiki
for all other files. You can:- replace
nobody
with another user if your server executes scripts under a different name (ex: default for Debian iswww-data
).- HINT: Run the
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 yourtwiki/lib/TWiki.cfg
configuration file (you'll configure that in a minute).
- HINT: Run the
- replace user
twiki
with your own username
- replace
- Set the permission of all files below
twiki/data
so that they are writable by usernobody
. A simple way is tochmod
them to-rw-rw-r--
(664) and tochown
them tonobody
. - Set the permission of the
twiki/data
directory and its subdirectories so that files in there are writable by usernobody
. A simple way is to chmod them todrwxrwxr-x
(775) and tochown
them tonobody
. - Set the permission of the
twiki/pub
directory and all its subdirectories so that files in there are writable by usernobody
. A simple way is tochmod
them todrwxrwxr-x
(775) and tochown
them tonobody
. - NOTE: The
twiki/data/*/*.txt,v
RCS repository files in the installation package are locked by usernobody
. If your CGI scripts are not running as usernobody
, 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, exwww-data
, or delete them all - new files will be automatically created the first time each topic is edited. A simple way to change ownership is with a search-and-replace in all files; for example, using sed:
for f in *,v; do sed 's/nobody\:/www-data\:/' $f > x; mv x $f; done
Step 3: Set the Main Configuration File
- Edit the file
twiki/lib/TWiki.cfg
, setting the variables to your needs.- Set the file extension in the
$scriptSuffix
variable tocgi
orpl
if required. - Make sure RCS is installed. Set
$rcsDir
intwiki/lib/TWiki.cfg
to mach the location of your RCS binaries.
- Set the file extension in the
- Security issue: Directories
twiki/data
,twiki/templates
and all its subdirectories should be set so that they are not visible as a URL. (Alternatively, move the directories to a place where they are not visible, and change the variables intwiki/lib/TWiki.cfg
accordingly) - Test your settings by running the
testenv
script from your browser:http://yourdomain.com/twiki/bin/testenv
. Check if yourtwiki/lib/TWiki.cfg
configuration file settings are correct.
Step 4: Finish Up from Your Browser
- Point your Web browser at
http://yourdomain.com/twiki/bin/view
and start TWiki-ing away! - Edit the TWikiPreferences topic in the TWiki:TWiki web to set the
WIKIWEBMASTER
email address, and other preferences. - Edit the WebPreferences topic in each web, if necessary: set individual
WEBCOPYRIGHT
messages, and other preferences. - Enable email notification of topic changes, TWikiSiteTools has more.
- Edit the WebNotify topic in all webs and add the users you want to notify.
- Add the TWiki:Main/PoweredByTWikiLogo to your WebHome? topic.
- You can add new
%VARIABLES%
. Define site-level variables in the TWikiPreferences topic. See also: TWikiVariables.
Additional Server-Level 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.Enabling Authentication of Users
- If TWiki is installed on a non-authenticated server - not using SSL - and you'd like to authenticate users:
- Rename file
.htaccess.txt
in thetwiki/bin
directory to.htaccess
and change it to your needs. For details, consult the HTTP server documentation (for Apache server: [1], [2]). In particular, the following red part needs to be configured correctly:
Redirect /urlpath/to/TWiki/index.html http://your.domain.com/urlpath/to/TWiki/bin/view
AuthUserFile /filepath/to/TWiki/data/.htpasswd
ErrorDocument 401 /urlpath/to/TWiki/bin/oops/TWiki/TWikiRegistration?template=oopsauth
- NOTE: In case you renamed the CGI script files to have a file extension you need to reflect that in the
edit
,view
,preview
, etc entries in.htaccess
. - NOTE: The browser should ask for login name and password when you click on the Edit link. In case
.htaccess
does not have the desired effect you need to enable it: Add "AllowOverride All" to the Directory section ofaccess.conf
for yourtwiki/bin
directory.
- NOTE: In case you renamed the CGI script files to have a file extension you need to reflect that in the
- Copy the TWikiRegistrationPub topic to TWikiRegistration. Do that by either editing the topics in theTWiki web, or by renaming the
.txt
and.txt,v
files in thetwiki/data/TWiki
directory.- HINT: You can customize the registration form by deleting or adding input tags. The
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 processed correctly.
- HINT: You can customize the registration form by deleting or adding input tags. The
- Rename file
- Register yourself in the TWikiRegistration topic.
- NOTE: When a user registers, a new line with the username and encrypted password is added to the
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.
- NOTE: When a user registers, a new line with the username and encrypted password is added to the
- Create a new topic to check if authentication works.
- Edit the TWikiAdminGroup topic in the TWiki:Main web to include users with system administrator status.
- Edit the TWikiPreferences topic in the TWiki:TWiki web to set access privileges.
- Edit the WebPreferences topic in each web, if necessary: set access priviliges.
Adding a New Web
To create a new web:- Create a new web data directory under
twiki/data
and check the file permission of the directory.- Use a name starting with characters
A..Z
, followed bya..z
and/or0..9
characters, but not a WikiWord.
- Use a name starting with characters
- Copy all files from the
twiki/data/_default
directory to the new data directory, preserving the original files' owner, group and permissions (on Unix, usecp -p
). The data files must be writable by the owner the CGI scripts are running on (usually,nobody
).- HINT: You can set permissions of
.txt
and.txt,v
files to-rw-rw-rw-
(666) and then edit the topic using your browser; RCS will restore the file permissions correctly when saving the topic.
- HINT: You can set permissions of
- Add the new web to the web list (visible in the upper right corner of each topic) by editing the site-level preferences, TWikiPreferences:
- Add the new web to the
%WIKIWEBLIST%
variable.
- Add the new web to the
- Update the web settings by editing the WebPreferences topic of the new web:
- Customize the
%WEBTOPICLIST%
variable to contain the web-specific links you prefer. - Set the WEBBGCOLOR variable to a color. The number represents the unique color for the web.
- Set Plugins, access privileges, custom variables, other web-level options (ex:
%WEBCOPYRIGHT%
can be set for an individual web).
- Customize the
- Add the new web to the color-coded web directory table by editing the TWikiWebsTable topic.
- Test the new web: view pages, create a new page.
- Create custom web-specific templates in a new
twiki/templates/Someweb
directory (otherwise, templates are inherited fromtwiki/templates
). - Add TWikiForms for form-based page input that's stored separately from the main free-form topic text.
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!
TWiki File System Info
See Appendix A: TWiki File System for an installed system snapshot and descriptions of all files in the TWiki 01-Sep-2001 distribution. -- PeterThoeny - 13 Sep 2001-- MikeMannix - 03 Dec 2001
TWiki Upgrade Guide
Upgrade from TWiki 01-Dec-2000 or TWiki 01-Sep-2001 to TWiki 01-Dec-2001 (previous to new full release)Overview
This guide describes how to upgrade either from TWiki 01-Dec-2000 or TWiki 01-Sep-2001 to TWiki 01-Dec-2001.- The latest version of TWiki (01-Dec-2001) is a small incremental release over the 01-Sep-2001 version.
- The 01-Sep-2001 version involves several major new features and numerous enhancements to the last full version (01-Dec-2000). The file system set-up is almost identical, but much of the underlying data structure and processes is new. With all the changes, the upgrade procedure is straightforward, and your existing page data is imported directly.
Upgrade Requirements
- To upgrade from a 01-Dec-2000 or 01-Sep-2001 standard installation to the latest 01-Dec-2001 TWiki Production Release, follow the instructions below.
- NOTE: To upgrade from a pre-01-Dec-2000 TWiki, start with TWikiUpgradeTo01Dec2000.
- To upgrade from a Beta of the new release, or if you made custom modifications to the application, read through all new reference documentation, then use the procedure below as a guideline.
Major Changes from TWiki 01-Sep-2001
The latest 01-Dec-2001 release includes the following new features and enhancements compared to the 01-Sep-2001 release:- FormattedSearch - New
format=""
parameter in%SEARCH{}%
variable for database like reporting. - Various bug fixes
Major Changes from TWiki 01-Dec-2000
The 01-Sep-2001 release includes the following new features and enhancements compared to the 01-Dec-2000 release:- TWikiPlugins - Easily install program enhancements using external plug-in modules. Developers can create plug-ins in Perl, with the TWiki Plugin API.
- InterwikiPlugin (preinstalled) - Link to external sites with text aliases,
SiteAlias:Page
; rules are defined in InterWikis. (Get more Plugins from the TWiki:Plugins web.)
- InterwikiPlugin (preinstalled) - Link to external sites with text aliases,
- TWikiTemplates - New, more flexible template system.
- TWikiSkins - Overwrite template headers and footers; page content is unaffected.
- TWikiMetaData - New data format
- TWiki.TWikiForms - Create multiple input forms per web; data is rendered in HTML tables.
- ManagingTopics - Individual topics can be renamed, moved and deleted through the browser. Deleted topics are stored in a common Trash web.
- Change passwords - Change and reset passwords using forms.
- TOC (Table of Contents) -
%TOC%
variable generates a hierarchical table of contents from topic headings: <h1>...<h6>. - Arbitrary Text for WikiWord Links - Text formatting rules to generate automatic links from any combination of words and spaces.
- Attachments Under Revision Control - Changes made to files attached to topics are now saved under revision control (RCS).
- SuperAdministrator Group - Lets you to make the members of one user group - by default, TWikiAdminGroup - into TWiki superusers, with the ability to overwrite locked topics from the browser interface. (This gets around the problem of topic lockouts, caused by typos in access privilege definitions.)
- HierarchicalNavigation uses new Meta Data variables to link hierarchically.
- Convert to XHTML - Pages are rendered for display in XHTML 1.0, as far as possible without breaking HTML 3.2 compliance.
TWiki Directory Structure and File Names
The TWiki directory structure remains the same, with one exception, the TWiki configuration file and Perl modules have been moved from thetwiki/bin
directory into it's own twiki/lib
directory tree. The following files have been renamed and moved:
From TWiki 01-Dec-2000: | To TWiki 01-Dec-2001: |
---|---|
twiki/bin/wikicfg.pm | twiki/lib/TWiki.cfg |
twiki/bin/wiki.pm | twiki/lib/TWiki.pm |
twiki/bin/wikiaccess.pm | twiki/lib/TWiki/Access.pm |
twiki/bin/wikiprefs.pm | twiki/lib/TWiki/Prefs.pm |
twiki/bin/wikisearch.pm | twiki/lib/TWiki/Search.pm |
twiki/bin/wikistore.pm | twiki/lib/TWiki/Store.pm |
twiki/lib/TWiki/Plugins
directory contains the new Plugin modules.
Standard Upgrade Procedure from 01-Sep-2001 to 01-Dec-2001 Release
This incremental update can be performed easily. The following steps describe the upgrade assuming that$TWIKIROOT
is the root of your current 01-Sep-2001 release.
- Back up and prepare:
- Back up all existing TWiki directories
$TWIKIROOT/bin
,$TWIKIROOT/pub
,$TWIKIROOT/data
,$TWIKIROOT/templates
. - Create a temporary directory and unpack the ZIP file there.
- Back up all existing TWiki directories
- Update files in TWiki root:
- Overwrite all
*.html
and*.txt
files in$TWIKIROOT
with the new ones.
- Overwrite all
- Update template files:
- Overwrite all template files in
$TWIKIROOT/templates
with the new ones.
- Overwrite all template files in
- Update script files:
- Overwrite all script files in
$TWIKIROOT/bin
with the new ones.
- Overwrite all script files in
- Update library files:
- Overwrite the
TWiki.pm
library in$TWIKIROOT/lib
with the new one. - Overwrite all
*.pm
library files in$TWIKIROOT/lib/TWiki
and$TWIKIROOT/lib/TWiki/Plugins
with the new ones.
- Overwrite the
- Update data/TWiki files: (in case you want the updated docs)
- Using your browser, merge the new TWiki.TWikiRegistration topic (or TWiki.TWikiRegistrationPub in case you used that one) into your existing TWiki.TWikiRegistration topic.
- In the temporary
twiki/data/TWiki
directory where you unzipped the installation package:- Remove the files you do not want to upgrade:
TWikiPreferences.*
,TWikiWebsTable.*
,WebNotify.*
,WebPreferences.*
,WebStatistics.*
and allWebTopic*
files. - In case the cgi-scripts are not running as user
nobody
: The*,v
RCS repository files delivered with the installation package are locked by user nobody and need to be changed the user of your cgi-scripts, i.e.www-data
. A simple way to switch the locker of the RCS files is to use sed:
for f in *,v; do sed 's/nobody\:/www-data\:/' $f > x; mv x $f; done
- Remove the files you do not want to upgrade:
- Move all remaining
*.txt
and*.txt,v
files from the temporarydata/TWiki
directory to your$TWIKIROOT/data/TWiki
directory.
- Update pub/TWiki files:
- Move the new
pub/TWiki/TWikiDocGraphics
directory into your$TWIKIROOT/pub/TWiki
directory.
- Move the new
Standard Upgrade Procedure from 01-Dec-2000 to 01-Dec-2001 Release
The idea is to have the new and old installation work in parallel so that you can test the new installation before switching over. That way you can make the switch on your live TWiki installation within one minute without affecting the users.Before Switch: | After Switch: | ||
---|---|---|---|
Current 01-Dec-2000: | New 01-Dec-2001: | Obsolete 01-Dec-2000: | New 01-Dec-2001: |
twiki/templates/ | twiki/templates2/ | twiki/templates1/ | twiki/templates/ |
twiki/bin/ | twiki/bin/2/ | (overwritten) | twiki/bin/ |
(N/A) | twiki/bin/lib/ | (N/A) | twiki/lib/ |
twiki/data/TWiki | twiki/data/TWiki2 | twiki/data/TWiki1 | twiki/data/TWiki |
(other directories do not change) |
Pre-Upgrade Preparation
Two major areas of TWiki functionality - TWikiTemplates and TWikiForms (input forms associated with a topic)- are entirely different in the new TWiki. If you've customized your templates or use Category Tables, read those sections before starting your upgrade. The following steps describe the upgrade on Unix. Windows setup is very similar. It's assumed that$TWIKIROOT
is the root of your current 01-Dec-2000 release, ex: export TWIKIROOT=/some/dir/
Step 1: Backup & Unpack
- Back up all existing TWiki directories
twiki/bin
,twiki/pub
,twiki/data
,twiki/templates
. - Create a temporary directory and unpack the ZIP file there:
mkdir -p ~/tmp/
cp -p ~/downloads/TWiki20011201.zip ~/tmp/
cd ~/tmp/
unzip ~/tmp/TWiki20011201.zip
Step 2: Upgrade TWiki document files
- Move the document files to your TWiki root (
twiki
):
mv ~/tmp/TWiki*.html $TWIKIROOT
mv ~/tmp/index.html $TWIKIROOT
mv ~/tmp/readme.txt $TWIKIROOT
mv ~/tmp/license.txt $TWIKIROOT
Step 3: Install new template files
- Move & rename the template directory to a temporary
twiki/templates2
directory, ex:
mv ~/tmp/templates $TWIKIROOT/templates2
- Pay attention to the file and directory permissions (security issue). Set file permissions, ex:
chmod 644 *.cgi
Step 4: Install new data and pub files
- Move the TWiki web to a temporary TWiki2
twiki/data/TWiki2
directory. Do the same to files attached to this web, ex:
mv ~/tmp/data/TWiki $TWIKIROOT/data/TWiki2
mv ~/tmp/pub/TWiki $TWIKIROOT/pub/TWiki2
- Move & rename the Know web to a temporary
twiki/data/Know2
directory, ex:
mv ~/tmp/data/Know $TWIKIROOT/data/Know2
mv ~/tmp/pub/Know $TWIKIROOT/pub/Know2
- Move the _default and Trash web, ex:
mv ~/tmp/data/_default $TWIKIROOT/data
mv ~/tmp/data/Trash $TWIKIROOT/data
- Move the MIME types file, ex:
mv ~/tmp/data/mime.types $TWIKIROOT/data
- Move the TWiki logo files, ex:
mv ~/tmp/pub/*.gif $TWIKIROOT/pub
- Pay attention to the file permissions of the
TWiki2
andKnow2
directories and its files. The files must be writable by the cgi-scripts (usually usernobody
). - In case the cgi-scripts are not running as user
nobody
: The*,v
RCS repository files delivered with the installation package are locked by user nobody and need to be changed the user of your cgi-scripts, i.e.www-data
. A simple way to switch the locker of the RCS files is to use sed:
for f in *,v; do sed 's/nobody\:/www-data\:/' $f > x; mv x $f; done
Step 5: Install new CGI scripts
- Move & rename the CGI script directory to a temporary
twiki/bin/2
directory, ex:
mv ~/tmp/bin $TWIKIROOT/bin/2
- If necessary, change the script names to include the required extension, ex:
.cgi
- Copy any additional scripts you might have from the 01-Dec-2000 release, ex:
cp -p $TWIKIROOT/bin/somescript $TWIKIROOT/bin/2
- In case you use basic authentication, rename
.htaccess.txt
to.htaccess
and customize it, ex:
cd $TWIKIROOT/bin/2
mv .htaccess.txt .htaccess
diff ../.htaccess .
and merge the content - Pay attention to the file and directory permissions (security issue). Set permissions, ex:
chmod 755 *.cgi
Step 6: Install new Perl library files
- Move the lib directory to a temporary
twiki/bin/lib
directory, ex:
mv ~/tmp/lib $TWIKIROOT/bin
- Pay attention to the file and directory permissions (security issue). Set permissions, ex:
chmod 644 *.pm
Step 7: Set configurations and test installation
- Merge the content of the old
twiki/bin/wikicfg.pm
into the newtwiki/lib/TWiki.cfg
configuration file. Use thediff
command to find out the differences, ex:
cd $TWIKIROOT/bin/lib
diff ../wikicfg.pm TWiki.cfg
- Make sure to set the correct temporary location of templates and scripts, ex:
$scriptUrlPath = "/twiki/bin/2";
$templateDir = "/home/httpd/twiki/templates2";
- Do not merge the functions
extendHandleCommonTags
,extendGetRenderedVersionOutsidePRE
,extendGetRenderedVersionInsidePRE
from the oldtwiki/bin/wikicfg.pm
. This is now handled by the Default plugintwiki/lib/TWiki/Plugins/Default.pm
- Test your new TWiki installation to see if you can view topics. Point your browser to the old installation and fix the URL to see the new installation, ex:
- Old URL:
http://localhost/cgi-bin/view
- New URL:
http://localhost/cgi-bin/2/view
- Old URL:
Step 8: Update topics
You can do the following changes using your old TWiki 01-Dec-2000 or new TWiki 01-Dec-2001 installation. Pointing your browser to the old installation for edit-copy-edit-paste operations is recommended, so that users don't get surprised by meta data content showing up in topics.- Remember that you now have two TWiki webs:
- The original
TWiki
web. - The new
TWiki2
web, which gets renamed toTWiki
when you switch over the installation.
- The original
- In case you customized
TWiki.TWikiRegistration
, merge your changes back intoTWiki2.TWikiRegistration
. - Copy
TWiki.TWikiWebsTable
toTWiki2.TWikiWebsTable
.- Do the same for any other topics you might have created in the
TWiki
web.
- Do the same for any other topics you might have created in the
- In
TWiki2.TWikiPreferences
, merge the oldTWiki.TWikiPreferences
settings and customize it.- Add your webs to WIKIWEBLIST
- Set the WIKIWEBMASTER
- Set the SMTPMAILHOST
- In
WebPreferences
of all webs, add or change the following web preferences: (seeTWiki.WebPreferences
)- Add a NOSEARCHALL in case you want to exclude the web from a
web="all"
search:
* Set NOSEARCHALL = on
- In WEBTOPICLIST, remove the
%WEB% . {}
decoration from the list (it is now in the templates), ex:
* Set WEBTOPICLIST = <a href="Home">Home</a>
| <a href="WebChanges">Changes</a>
| <a href="WebIndex">Index</a>
| <a href="WebSearch">Search</a>
| Go <input type="text" name="topic" size="16" />
- Add a these new preferences:
* Set DENYWEBVIEW =
* Set ALLOWWEBVIEW =
* Set DENYWEBRENAME =
* Set ALLOWWEBRENAME =
- Set the FINALPREFERENCES:
* Set FINALPREFERENCES = WEBTOPICLIST, DENYWEBVIEW, ALLOWWEBVIEW, DENYWEBCHANGE, ALLOWWEBCHANGE, DENYWEBRENAME, ALLOWWEBRENAME
- Add a NOSEARCHALL in case you want to exclude the web from a
- Optional: In
WebSearch
of all webs, replace content with this one line:
%INCLUDE{"%TWIKIWEB%.WebSearch"}%
- Optional: In
WebChanges
of all webs, replace content with this one line:
%INCLUDE{"%TWIKIWEB%.WebChanges"}%
Step 9: Customize template files
NOTE: Skip this step if you did not customize your template files.- Remember that you have now two template directories:
- The original
twiki/templates
. - The new
twiki/templates2
, which gets renamed totwiki/templates
when you switch over the installation.
- The original
- Customized templates and skins need to be upgraded to the new TWikiTemplates. This isn't difficult, but you have be familiar with the new template set-up before starting the conversion. The safest way is to use the new templates as a base and to merge your changes back. Changes in new templates:
- Templates are now rendered by TWiki. You can use all TextFormattingRules, but you have to escape unwanted ones. Also, remove empty lines unless you want a
=<p />
tag added. - Added TWikiMetaData rendering.
- Templates are now rendered by TWiki. You can use all TextFormattingRules, but you have to escape unwanted ones. Also, remove empty lines unless you want a
- Form Templates replace the TWikiCategoryTables:
- Create a replacement
WebForm
topic based ontwikicatitems.tmpl
in each web that uses a Category Table. See details in TWikiForms and compare with the settings in theKnow2.WebPreferences
topic.
NOTE: Do not remove thetwikicatitems.tmpl
file, it is still used for topics that are of the old format. - Searches need to be adjusted to deal with format change. It is possible to define a regular expression search that can deal at the same time with topics in the old format and new format.
- Example: List all topics in the Know web that have a TopicClassification? of PublicFAQ?:
%SEARCH{ "[T]opicClassification.*?(td..td|value\=).*?[P]ublicFAQ" casesensitive="on" regex="on" nosearch="on" web="Know"}%
(The[T]
and[P]
is done so that search does not find the topic where this search string is located in!) - Example: Create a link that lists all topics in the Know web with a TopicClassification? of PublicFAQ?:
[[%SCRIPTURL%/search%SCRIPTSUFFIX%/Know/?scope=text
&search=%5BT%5DopicClassification.*%3F%28td..td%7C
value%5C%3D%29.*%3F%5BP%5DublicFAQ®ex=on][All Public FAQ]]
All Public FAQ
- Example: List all topics in the Know web that have a TopicClassification? of PublicFAQ?:
- Create a replacement
- For each web that has a custom
notedited.tmpl
template, create an equivalent WebTopicEditTemplate to conform with the new TemplateTopics. The new format replaces thenotedited.tmpl
,notext.tmpl
andnotwiki.tmpl
templates.
Step 10: Switch over to new installation
In this step, you move the working 01-Dec-2001 installation to the old 01-Dec-2000 installation, so that users don't have to change the URL.- Test your new 01-Dec-2001 installation under
twiki/bin/2/view
to make sure everything works as expected.- NOTE: Don't worry about the Plugins, they'll work after the switch.
- Edit
$TWIKIROOT/bin/2/TWiki.cfg
and remove the/2
from$scriptUrlPath
and$templateDir
, ex:
$scriptUrlPath = "/twiki/bin";
$templateDir = "/home/httpd/twiki/templates";
- Rename the
TWiki2
web toTWiki
, including attachments, ex:
cd $TWIKIROOT/data
mv TWiki TWiki1
mv TWiki2 TWiki
cd $TWIKIROOT/pub
mv TWiki TWiki1
mv TWiki2 TWiki
- Rename the
templates2
directory totemplates
, ex:
cd $TWIKIROOT
mv templates templates1
mv templates2 templates
- Move the
lib
directory one level up from$TWIKIROOT/bin/lib
to$TWIKIROOT/lib
, ex:
cd $TWIKIROOT
mv bin/lib .
- Copy content of
bin/2
tobin
, ex:
cd $TWIKIROOT/bin
cp -p bin/2/* .
cp -p bin/2/.htaccess .
- Point your browser to the original URL and make sure the relocated 01-Dec-2001 installation works as expected: check browsing, searching and user registration.
- Clean up and remove obsolete directories:
- Remove directory
$TWIKIROOT/bin/2
- Remove directory
$TWIKIROOT/templates1
- Remove directory
$TWIKIROOT/data/TWiki1
- Remove directory
$TWIKIROOT/pub/TWiki1
- Remove temporary directory, ex:
~/tmp
- Remove directory
Step 11: Test the TWiki Plugins
- Test the new TWikiPlugins by checking the Plugins settings in TWikiPreferences.
- The
EmptyPlugin
,DefaultPlugin
, andInterwikiPlugin
should be preinstalled. To check the InterwikiPlugin, go to its page.
- The
- If you have customized the functions
extendHandleCommonTags
,extendGetRenderedVersionOutsidePRE
andextendGetRenderedVersionInsidePRE
intwiki/bin/wikicfg.pm
:- Merge those changes back into
twiki/lib/TWiki/Plugins/Default.pm
- Merge those changes back into
General Format Changes
- The format of the
%GMTIME{"..."}%
and%SERVERTIME{"..."}%
variables is now"$hour:$min"
instead of"hour:min"
. More in TWikiVariables.
- ExtendingTableSyntax: Enhanced table syntax might have unwanted side effect:
| *bold* |
cells,| center aligned |
and| right aligned |
cells, span multiple columns using| empty cells |||
. More in TextFormattingRules.
- Use
Net::SMTP
module instead ofsendmail
if installed.
- Use
<verbatim> ... </verbatim>
tags instead of<pre> ... </pre>
tags where appropriate. More in TextFormattingRules.
- New variable
%STARTINCLUDE%
and%STOPINCLUDE%
variables to control what gets included of a topic. More in TWikiVariables.
- FileAttachment info is now stored as TWiki Meta Data.
- Upgrading of imported pagess is done automatically after first edit, on save. "In memory" upgrade is done on topic view.
- Attachments are now under revision control:
$attachAsciiPath
inTWiki.cfg
defines which file types are stored in ASCII, otherwise, binary format is used. This means that the RCS version used should support binary files.
- Handling for topic-specific templates like
edit.new.tmpl
has been removed and replaced by template topics in the new TWikiTemplates.
- A new file
warning.txt
file can appear in thedata
directory. It may contain diagnostic info identifying problems that need fixing. This file could get fairly large if you have a lot of problems your site - you can delete it at any time.
Known Issues
- Check TWiki:Codev/KnownIssuesOfTWiki01Dec2001 for known issues of TWiki 01 Dec 2001 (production release)
- Check TWiki:Codev/KnownIssuesOfTWiki01Sep2001 for known issues of TWiki 01 Sep 2001 (production release)
-- MikeMannix - 12 Sep 2001
-- PeterThoeny - 03 Dec 2001
TWiki User Authentication
TWiki site access control and user activity trackingOverview
TWiki does not authenticate users internally, it depends on theREMOTE_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.
Authentication Options
No special installation steps are required if the server is already authenticated. If it isn't, you have three standard options for controlling user access:- Forget about authentication to make your site completely public - anyone can browse and edit freely, in classic Wiki mode. All visitors are assigned the TWikiGuest? default identity, so you can't track individual user activity.
- Use SSL (Secure Sockets Layer; HTTPS) to authenticate and secure the whole server.
- Use Basic Authentication (.htaccess) to control access by protecting key scripts:
attach
,edit=
,installpasswd
,preview
,rename
,save
,upload
using the .htaccess file. The TWikiInstallationGuide has step-by-step instructions.
Partial Authentication
Tracking by IP address is an experimental feature, enabled inlib/TWiki.cfg
. It lets you combine open access to some functions, with authentication on others, with full user activity tracking:
- Normally, the
REMOTE_USER
environment variable is set for the scripts that are under authentication. If, for example, theedit
,save
andpreview
scripts are authenticated, but notview
, you would get your WikiName inpreview
for the%WIKIUSERNAME%
variable, butview
will showTWikiGuest
instead of your WikiName.
- TWiki can be configured to remember the IP address/username pair whenever an authentication happens (edit topic, attach file). Once remembered, the non-authenticated scripts, like
view
, will show the correct username instead of TWikiGuest?.
- Enable this feature by setting the
$doRememberRemoteUser
flag inTWiki.cfg
. TWiki then persistently stores the IP address/username pairs in the file,$remoteUserFilename
, which is"$dataDir/remoteusers.txt"
by default.
- NOTE: This approach can fail if the IP address changes due to dynamically assigned IP addresses or proxy servers.
- You are TWikiGuest?
TWiki Username vs. Login Username
This section applies only if your netfrag.org is installed on a server that is both authenticated and on an intranet. netfrag.org internally manages two usernames: Login username and TWiki username.- Login username: When you login to the intranet, you use your existing login username, ex:
pthoeny
. This name is normally passed to netfrag.org by theREMOTE_USER
environment variable, and used by internally by netfrag.org. Login usernames are maintained by your system administrator.
- TWiki username: Your name in WikiNotation, ex:
PeterThoeny
, is recorded when you register using TWikiRegistration; doing so also generates a personal home page in the Main web.
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 netfrag.org.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.
Changing Passwords
Change and reset passwords using forms on regular pages. Use TWikiAccessControl to restrict use as required.- The ChangePassword form (
TWiki/ChangePassword
):
Change password
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.
- The ResetPassword form (
TWiki/ResetPassword
):
Request for reset of password-- MikeMannix - 29 Aug 2001
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 receive a page with yor new password appearing encrypted.
TWiki Access Control
Restricting read and write access to topics and webs, by users and groupsOverview
TWikiAccessControl allows you restrict access to single topics and entire webs, by individual user and by user groups, in three main areas: view; edit & attach; and rename/move/delete. These controls, combined with TWikiUserAuthentication, let you easily create and manage an extremely flexible, fine-grained privilege system.An Important Control Consideration
Open, freeform editing is the essence of the WikiCulture - it's what makes TWiki different and often more effective than other collaboration tools. So, it is strongly recommended that decisions to restrict read or write access to a web or a topic are made with care. Experience shows that unrestricted write access works very well because:- Peer influence is enough to ensure that only relevant content is posted.
- Peer editing - the ability to rearrange anything on a page - keeps topics focussed.
- All content is preserved under revision control.
- Edits can be undone by the TWikiAdminGroup (the default administrators group; see #ManagingGroups).
- Users are encouraged to edit and refactor (condense a long topic), since there's a safety net.
- Create broad groups (more and varied input), and...
- Avoid creating view-only users (if you can read it, you can contribute to it).
Users and Groups
Access control is based on users and groups. Users are defined by their WikiNames, an then organized into unlimited combinations under different user groups.Managing Users
A user is created by with the TWikiRegistration form. The process generates a topic in the Main web in the new user's WikiName. The default visitor name is TWikiGuest?.- Users can be authenticated using Basic Authentication or SSL. TWikiUserAuthentication is required in order to track user identities.
Managing Groups
Groups are defined by group topics in theMain
web, like the TWikiAdminGroup. To start a new group:
- Create a new topic with A name that ends in Group,
SomeGroup
- Define two variables:
- Set GROUP = < list of users and groups >
- Set ALLOWTOPICCHANGE = < list of users and groups >
- GROUP is a comma-separated list of users and of other groups:
Set GROUP = Main.SomeUser, Main.OtherUser, Main.SomeOtherGroup
- ALLOWTOPICCHANGE defines who is allowed to change the group topic; it is a comma delimited list of users and groups. You typically want to restrict that to the members of the group itself, so it should contain the name of the topic,
Set ALLOWTOPICCHANGE = Main.TWikiAdminGroup
for the TWikiAdminGroup topic. (This prevents users not in the group from editing the topic and from gaining unauthorized membership to the group.)
Restricting Write Access
You can define who is allowed to make changes to a web or a topic.Deny Editing by Topic
Denying editing of a topic also restricts attaching files to it; both privileges are assigned together.- Define one or both of these variables in a topic, preferably at the end of the page:
- Set DENYTOPICCHANGE = < list of users and groups >
- Set ALLOWTOPICCHANGE = < list of users and groups >
- DENYTOPICCHANGE defines users or groups that are not allowed to make changes to the topic. It is a comma delimited list of users and groups. Example:
* Set DENYTOPICCHANGE = Main.SomeBadBoy, Main.SomeBadGirl, Main.SomeHackerGroup
- ALLOWTOPICCHANGE defines users or groups that are allowed to make changes to the topic. It is a comma delimited list of users and groups. Example:
* Set ALLOWTOPICCHANGE = Main.SomeGoodGuy, Main.SomeGoodGirl, Main.TWikiAdminGroup
- DENYTOPICCHANGE is evaluated before ALLOWTOPICCHANGE. Access is denied if the authenticated person is in the DENYTOPICCHANGE list, or not in the ALLOWTOPICCHANGE list. Access is granted in case DENYTOPICCHANGE and ALLOWTOPICCHANGE is not defined.
Deny Editing by Web
Restricting web-level editing blocks creating new topics, changing topics or attaching files.- Define one or both of these variable in the WebPreferences topic:
- Set DENYWEBCHANGE = < list of users and groups >
- Set ALLOWWEBCHANGE = < list of users and groups >
- DENYTOPICCHANGE (in topic) overrides DENYWEBCHANGE (in WebPreferences)
- ALLOWTOPICCHANGE (in topic) overrides ALLOWWEBCHANGE (in WebPreferences)
Restricting Rename Access
You can define who is allowed to rename, move or delete a topic, or rename a web.Deny Renaming by Topic
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.- Define one or both of these variables in a topic, preferably at the end of the topic:
- Set DENYTOPICRENAME = < list of users and groups >
- Set ALLOWTOPICRENAME = < list of users and groups >
- DENYTOPICCRENAME defines users or groups that are not allowed to rename the topic. It is a comma delimited list of users and groups. Example:
* Set DENYTOPICRENAME = Main.SomeBadBoy, Main.SomeBadGirl, Main.SomeHackerGroup
- ALLOWTOPICRENAME defines users or groups that are allowed to rename the topic. It is a comma delimited list of users and groups. Example:
* Set ALLOWTOPICRENAME = Main.SomeGoodGuy, Main.SomeGoodGirl, Main.TWikiAdminGroup
- DENYTOPICRENAME is evaluated before ALLOWTOPICRENAME. Access is denied if the authenticated person is in the DENYTOPICRENAME list, or not in the ALLOWTOPICRENAME list. Access is granted in case DENYTOPICRENAME and ALLOWTOPICRENAME is not defined.
Deny Renaming by Web
You can define restrictions of who is allowed to rename a netfrag.org web.- Define one or both of these variable in the WebPreferences topic:
- Set DENYWEBRENAME = < list of users and groups >
- Set ALLOWWEBRENAME = < list of users and groups >
- DENYTOPICRENAME (in topic) overrides DENYWEBRENAME (in WebPreferences)
- ALLOWTOPICRENAME (in topic) overrides ALLOWWEBRENAME (in WebPreferences)
Restricting Read Access
You can define restrictions of who is allowed to view a netfrag.org web.- Define one or both of these variable in the WebPreferences topic:
- Set DENYWEBVIEW = < list of users and groups >
- Set ALLOWWEBVIEW = < list of users and groups >
Known Issues
- The view restriction is not suitable for very sensitive content since there is a way to circumvent the read access restriction.
- Read access restriction only works if the view script is authenticated, that means that users need to log on also just to read topics. TWikiInstallationGuide has more on Basic Authentication based on the
.htaccess
file.
Selective Unrestricted Web Access
- There is a workaround if you prefer to have unrestricted access to view topics located in normal webs, and to authenticate users only for webs where view restriction is enabled:
- Omit the
view
script from the.htaccess
file. - Enable the
$doRememberRemoteUser
flag inlib/TWiki.cfg
as described in TWikiUserAuthentication. netfrag.org will now remember the IP address of an authenticated user. - Copy the
view
script toviewauth
(or better, create a symbolic link) - Add
viewauth
to the list of authenticated scripts in the .htaccess file.- When a user accesses a web where you enabled view restriction, netfrag.org will redirect from the
view
script to theviewauth
script once (this happens only if the user has never edited a topic). Doing so will ask for authentication. Theviewauth
script shows the requested topic if the user could log on and if the user is authorized to see that web. - If you enable view restriction for a web, it is recommended to restrict search "all webs" from searching this web. Enable this restriction with the
NOSEARCHALL
variable in its WebPreferences, like:- Set NOSEARCHALL = on
- It is not recommended to restrict view access to individual topics since all content is searchable within a web.
- When a user accesses a web where you enabled view restriction, netfrag.org will redirect from the
- Omit the
Hiding Control Settings
- To hide access control settings from normal browser viewing, place them in comment markers.
<!--
Set DENYTOPICCHANGE = Main.SomeGroup
-->
The SuperAdminGroup
By mistyping a user or group name in the ALLOWTOPICCHANGE setting, it's possible to lock a topic so that it no-one can edit it from a browser. To avoid this:- Set the
$superAdminGroup
variable inlib/TWiki.cfg
to the name of a group of users that are always allowed to edit/view topics.
$superAdminGroup = "TWikiAdminGroup";
- The default setting is not to have superusers.
TWiki Text Formatting
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 layed out below - refer back to this page in a pop-up window from the Edit screen.TWiki Editing Shorthand
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.
|
---++ Sushi ---+++ Maguro |
SushiMaguro |
|||||||||||||||
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 to "stick" the * _ = == signs to the words, e.g. take away spaces.
|
_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 and an asterisk. |
* bullet item |
|
|||||||||||||||
Nested List Item: Six, nine, ... spaces and an asterisk. |
* nested stuff |
|
|||||||||||||||
Ordered List: Three spaces and a number. |
1 Sushi 1 Dim Sum |
|
|||||||||||||||
Definition List: Three spaces, the term, a colon, a space, followed by the definition. Note: Terms with spaces are not supported. In case you do have a term with more then one word, separate the words with dashes or with the non-breaking-space entity.
|
Sushi: Japan Dim Sum: S.F. |
|
|||||||||||||||
Table: Optional spaces followed by the cells enclosed in vertical bars. Note: | *bold* | cells are rendered as table headers. Note: | spaced | cells are rendered center aligned. Note: | spaced | cells are rendered right aligned. Note: | 2 colspan || cells are rendered as multi-span columns. Note: In case you have a long row and you want it to be more readable when you edit the table you can split the row into lines that end with a '\' backslash character. |
| *L* | *C* | *R* | | A2 | 2 | 2 | | A3 | 3 | 3 | | multi span ||| | A4 \ | next \ | next | |
|
|||||||||||||||
WikiWord Links: CapitalizedWordsStuckTogether (or WikiWords) will produce a link automatically. Note: In case you want to link to a topic in a different netfrag.org web write Webname.TopicName .
|
WebNotify Know.ReadmeFirst | WebNotify ReadmeFirst? | |||||||||||||||
#SquareBrackets
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; i.e. [[text formatting FAQ]] links to topic TextFormattingFAQ. You can also refer to a different web and use anchors.
|
[[wiki syntax]] [[Main.TWiki users]] | wiki syntax Main.TWiki users | |||||||||||||||
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 (i.e. WikiSyntax) and external link references (i.e. http://TWiki.org/) are supported. The same Forced Links rules apply for internal link references. Anchor names can be added as well, like [[WebHome#MyAnchor][go home]] and [[http://www.yahoo.com/#somewhere][Yahoo!]] .
|
[[WikiSyntax][syntax]] [[http://gnu.org][GNU]] | syntax GNU | |||||||||||||||
Anchors: You can define a link reference inside a netfrag.org 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.
|
[[WebHome#NotThere]] [[#MyAnchor][Jump]] #MyAnchor To here | WebHome#NotThere Jump To here | |||||||||||||||
Prevent a Link: Prevent a WikiWord from being linked by prepending it with the <nop> tag.
|
<nop>SunOS | SunOS |
Using HTML
You can use just about any HTML tag without a problem - however, there are a few usability and technical considerations to keep in mind.HTML and TWiki Usability
- On collaboration pages, it's preferable NOT to use HTML, and to use TWiki shorthand instead - this keeps the text uncluttered and easy to edit.
- NOTE: TWiki is designed to work with a wide range of browsers and computer platforms, holding to HTML 3.2 compatibility in the standard installation - adding raw HTML, particularly browser-specific tags (or any other mark-up that doesn't degrade well) will reduce compatibility.
TWiki HTML Rendering
- TWiki converts shorthand notation to XHTML 1.0 for display. To copy a fully marked-up page, simply view source in your browser and save the contents.
- If you need to save HTML frequently, you may want to check out TWiki:Plugins/GenHTMLAddon - it will "generate a directory containing rendered versions of a set of TWiki pages together with any attached files."
- NOTE: The opening and closing angle brackets -
<...>
- of an HTML tag must be on the same line, or the tag will be broken.- This feature allows you to enter an unclosed angle bracket - as a greater than or less than symbol - and have it automatically rendered as if you had entered its HTML character,
<
, ex:a > b
- If you're pasting in preformatted HTML text and notice problems, check the file in a text processor with no text wrap. Also, save without hard line breaks on text wrap, in your HTML editing program.
- This feature allows you to enter an unclosed angle bracket - as a greater than or less than symbol - and have it automatically rendered as if you had entered its HTML character,
Hyperlinks
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.Internal Links
- NotExistingYet? is a topic waiting to be written. Create the topic by clicking on the ?. (Try clicking, but then, Cancel - creating the topic would wreck this example!)
External Links
-
http://...
,https://...
,ftp://...
andmailto:...@...
are linked automatically.
- Email addresses like
name@domain.com
are linked automatically.
-
[[Square bracket rules]]
let you easily create non-WikiWord links.
TWikiPlugin Formatting Extensions
Plugins provide additional text formatting capabilities and can extend the functionality of netfrag.org 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%
:
- DefaultPlugin: This plugin can be used to specify some simple custom rendering rules. It also renders deprecated
*_text_*
as bold italic text. - HeadlinesPlugin: Build news portals that show headline news based on RSS news feeds from news sites.
- InterwikiPlugin: Link
ExternalSite:Page
text to external sites based on aliases defined in the InterWikis topic. - TablePlugin: Control attributes of tables and sorting of table columns
- VisualConfirmPlugin: Plugin for visual confirmation of new user registration.
TWiki Variables
Text strings expanded on the fly to display data or system infoOverview
TWikiVariables are text strings -%VARIABLE%
- that expand into content whenever a page is opened. Variables are replaced by their actual values: stored data, or system info (like the date, or the current user). There are predefined variables, and Preference variables that you set. You can also define custom variables, with new names and values.
Predefined Variables
Most predefined variables return values that were either defined when TWiki was installed, or taken from server info (like current username, or date and time). Many of the variables let you control how the formatted results appear. netfrag.org expands the following variables (enclosed in%
percent signs):
Variable: | Expanded to: | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
%WIKIHOMEURL% |
The base script URL of netfrag.org, is the link of the Home icon in the upper left corner, is http://TWiki.org/ | ||||||||||||||||||||||||||||||||||||||||||||||||
%SCRIPTURL% |
The script URL of netfrag.org, is https://netfrag.org/twiki/bin | ||||||||||||||||||||||||||||||||||||||||||||||||
%SCRIPTURLPATH% |
The path of the script URL of netfrag.org, is /twiki/bin | ||||||||||||||||||||||||||||||||||||||||||||||||
%SCRIPTSUFFIX% |
The script suffix, ex: .pl , .cgi is |
||||||||||||||||||||||||||||||||||||||||||||||||
%PUBURL% |
The public URL of TWiki, is https://netfrag.org/twiki/pub | ||||||||||||||||||||||||||||||||||||||||||||||||
%PUBURLPATH% |
The path of the public URL of netfrag.org, is /twiki/pub | ||||||||||||||||||||||||||||||||||||||||||||||||
%ATTACHURL% |
The attachment URL of the current topic, is https://netfrag.org/twiki/pub/TWiki/TWikiVariables Example: If you attach a file you can refer to it as %ATTACHURL%/image.gif |
||||||||||||||||||||||||||||||||||||||||||||||||
%ATTACHURLPATH% |
The path of the attachment URL of the current topic, is /twiki/pub/TWiki/TWikiVariables | ||||||||||||||||||||||||||||||||||||||||||||||||
%URLPARAM{"name"}% |
Returns the value of a URL parameter. Ex: %URLPARAM{"skin"}% returns print for a .../view/TWiki/TWikiVariables?skin=print URL. Is |
||||||||||||||||||||||||||||||||||||||||||||||||
%WIKITOOLNAME% |
Name of wiki tool, is netfrag.org | ||||||||||||||||||||||||||||||||||||||||||||||||
%WIKIVERSION% |
Wiki tool version is 04 Sep 2004 $Rev: 1742 $ | ||||||||||||||||||||||||||||||||||||||||||||||||
%USERNAME% |
Your login username is guest | ||||||||||||||||||||||||||||||||||||||||||||||||
%WIKINAME% |
Your Wiki username. Same as %USERNAME% if not defined in the TWikiUsers topic. Is TWikiGuest | ||||||||||||||||||||||||||||||||||||||||||||||||
%WIKIUSERNAME% |
Your %WIKINAME% including the Main web name. Usefull for signatures. Is Main.TWikiGuest | ||||||||||||||||||||||||||||||||||||||||||||||||
%MAINWEB% |
The Main web containing TWikiUsers, OfficeLocations? and TWikiGroups?. Is Main | ||||||||||||||||||||||||||||||||||||||||||||||||
%TWIKIWEB% |
The web containing all documentation and configuration of netfrag.org is TWiki | ||||||||||||||||||||||||||||||||||||||||||||||||
%WEB% |
The current web is TWiki | ||||||||||||||||||||||||||||||||||||||||||||||||
%BASEWEB% |
The web name where the includes started, e.g. the web of the first topic of nested includes. Same as %WEB% in case there is no include. |
||||||||||||||||||||||||||||||||||||||||||||||||
%INCLUDINGWEB% |
The web name of the topic that includes the current topic. Same as %WEB% in case there is no include. |
||||||||||||||||||||||||||||||||||||||||||||||||
%HOMETOPIC% |
The home topic in each web. Is Home? | ||||||||||||||||||||||||||||||||||||||||||||||||
%NOTIFYTOPIC% |
The notify topic in each web. Is WebNotify | ||||||||||||||||||||||||||||||||||||||||||||||||
%WIKIUSERSTOPIC% |
The index topic of all registered users. Is TWikiUsers | ||||||||||||||||||||||||||||||||||||||||||||||||
%WIKIPREFSTOPIC% |
The web preferences topic. Is TWikiPreferences | ||||||||||||||||||||||||||||||||||||||||||||||||
%WEBPREFSTOPIC% |
The web preferences topic. Is WebPreferences | ||||||||||||||||||||||||||||||||||||||||||||||||
%STATISTICSTOPIC% |
The web statistics topic. Is WebStatistics | ||||||||||||||||||||||||||||||||||||||||||||||||
%TOPIC% |
The current topic name, is TWikiVariables | ||||||||||||||||||||||||||||||||||||||||||||||||
%BASETOPIC% |
The name of the topic where the includes started, e.g. the first topic of nested includes. Same as %TOPIC% in case there is no include. |
||||||||||||||||||||||||||||||||||||||||||||||||
%INCLUDINGTOPIC% |
The name of the topic that includes the current topic. Same as %TOPIC% in case there is no include. |
||||||||||||||||||||||||||||||||||||||||||||||||
%SPACEDTOPIC% |
The current topic name with added spaces, for regular expression search of Ref-By, is TWiki%20*Variables | ||||||||||||||||||||||||||||||||||||||||||||||||
%TOPICLIST{"format"}% |
Topic index of a web. The "format" defines the format of one topic item. It may include variables: The $name variable gets expanded to the topic name; the $web variable gets expanded to the name of the web.
Parameters are format, separator and 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). |
||||||||||||||||||||||||||||||||||||||||||||||||
%WEBLIST{"format"}% |
Web index, e.g. list of all webs. Hidden webs are excluded, e.g. webs with a 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 .
Parameters are format, separator and web:
%WEBLIST{" * [[$name.Home]]"}% creates a bullet list of all webs.
%WEBLIST{"" webs="Trash,public" selection="TWiki" separator=" "}% Dropdown of all public Webs + Trash Web, current Web highlighted.
|
||||||||||||||||||||||||||||||||||||||||||||||||
%GMTIME% |
GM time, is 21 Nov 2024 - 20:30 | ||||||||||||||||||||||||||||||||||||||||||||||||
%GMTIME{"format"}% |
Formatted GM time based on time variables.
%GMTIME{"$day $month, $year - $hour:$min:$sec"}% is 21 Nov, 2024 - 20:30:35 |
||||||||||||||||||||||||||||||||||||||||||||||||
%SERVERTIME% |
Server time, is 21 Nov 2024 - 21:30 | ||||||||||||||||||||||||||||||||||||||||||||||||
%SERVERTIME{"format"}% |
Formatted server time. Example: %SERVERTIME{"$hou:$min"}% is 21:30 |
||||||||||||||||||||||||||||||||||||||||||||||||
%HTTP_HOST% |
HTTP_HOST environment variable, is netfrag.org | ||||||||||||||||||||||||||||||||||||||||||||||||
%REMOTE_ADDR% |
REMOTE_ADDR environment variable, is 3.136.23.132 | ||||||||||||||||||||||||||||||||||||||||||||||||
%REMOTE_PORT% |
REMOTE_PORT environment variable, is 28034 | ||||||||||||||||||||||||||||||||||||||||||||||||
%REMOTE_USER% |
REMOTE_USER environment variable, is | ||||||||||||||||||||||||||||||||||||||||||||||||
%INCLUDE{"page" ...}% |
Server side include to IncludeTopicsAndWebPages. Parameters are page name, and an optional pattern="(reg-exp)" . The page name is:
|
||||||||||||||||||||||||||||||||||||||||||||||||
%STARTINCLUDE% |
If present in included topic, start to include text from this location up to the end, or up to the location of the %STOPINCLUDE% variable. A normal view of the topic shows everyting exept the %STARTINCLUDE% variable itself. |
||||||||||||||||||||||||||||||||||||||||||||||||
%STOPINCLUDE% |
If present in included topic, stop to include text at this location and ignore the remaining text. A normal view of the topic shows everyting exept the %STOPINCLUDE% variable itself. |
||||||||||||||||||||||||||||||||||||||||||||||||
%TOC% |
Table of Contents of current topic. | ||||||||||||||||||||||||||||||||||||||||||||||||
%TOC{"SomeTopic" ...}% |
Table of Contents. Shows a TOC that is generated automatically based on headings of a topic. Headings in WikiSyntax ("---++ text" ) and HTML ("<h2>text<h2>" ) are taken into account. (But not "<H2>text</H2>" , which can be used to exclude a heading from the TOC.) Parameters are topic name, web and depth:
%TOC{depth="2"}% , %TOC{"TWikiDocumentation" web="TWiki"}%
| ||||||||||||||||||||||||||||||||||||||||||||||||
%SEARCH{"text" ...}% |
Inline search, shows a search result embedded in a topic. Parameters are the search term, web, scope, order and many more: [1]
%SEARCH{"wiki" web="Main" scope="topic"}% |
||||||||||||||||||||||||||||||||||||||||||||||||
%METASEARCH{...}% |
Special search of meta data
%METASEARCH{type="topicmoved" web="%WEB%" topic="%TOPIC%" title="This topic used to exist and was moved to: "}% , you may want to use this in WebTopicViewTemplate and WebTopicNonWikiTemplate%METASEARCH{type="parent" web="%WEB%" topic="%TOPIC%" title="Children: "}%
| ||||||||||||||||||||||||||||||||||||||||||||||||
%VAR{"NAME" web="Web"}% |
Get a preference value from a web other then the current one. Example: To get %WEBBGCOLOR% of the Main web write %VAR{"WEBBGCOLOR" web="Main"}% , is #444444 |
[1] Note: The search form uses identical names for input fields. [2] Note: A web can be excluded from aweb="all"
search if you define aNOSEARCHALL=on
variable in its WebPreferences.
Preferences Variables
Additional variables are defined in the preferences ( site-level ( SL ) in TWikiPreferences, web-level ( WL ) in WebPreferences of each web, and user level ( UL ) preferences in individual user topics):Variable: | Level: | What: |
---|---|---|
%WIKIWEBMASTER% |
SL | Webmaster email address (sender of email notifications) , is webmaster@netfrag.org |
%WIKIWEBLIST% |
SL | List of netfrag.org webs (in upper right corner of topics) |
%WEBTOPICLIST% |
WL | Common links of web (second line of topics) |
%WEBCOPYRIGHT% |
SL , WL | Copyright notice (bottom right corner of topics) |
%WEBBGCOLOR% |
WL | Background color of web |
%NOSEARCHALL% |
WL | Exclude web from a web="all" search (set variable to on for hidden webs) |
%NEWTOPICBGCOLOR% |
SL , UL | Background color of non existing topic. ( UL needs authentication for topic views ) |
%NEWTOPICFONTCOLOR% |
SL , UL | Font color of non existing topic. ( UL needs authentication for topic views ) |
%EDITBOXWIDTH% |
SL , UL | Horizontal size of edit box, is 100 |
%EDITBOXHEIGHT% |
SL , UL | Vertical size of edit box, is 20 |
%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: checked |
%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: checked |
%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: |
%HTTP_EQUIV_ON_VIEW% |
SL | http-equiv meta tags for view, rdiff, attach, search* scripts. |
%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. |
%DENYWEBCHANGE% |
WL | List of users and groups who are not allowed to change topics in the netfrag.org web. (More in TWikiAccessControl) |
%ALLOWWEBCHANGE% |
WL | List of users and groups who are allowed to change topics in the netfrag.org web. (More in TWikiAccessControl) |
%DENYTOPICCHANGE% |
(any topic) | List of users and groups who are not allowed to change the current topic. (More in TWikiAccessControl) |
%ALLOWTOPICCHANGE% |
(any topic) | List of users and groups who are allowed to change the current topic. (More in TWikiAccessControl) |
%DENYWEBRENAME% |
WL | List of users and groups who are not allowed to rename topics in the netfrag.org web. (More in TWikiAccessControl) |
%ALLOWWEBRENAME% |
WL | List of users and groups who are allowed to rename topics in the netfrag.org web. (More in TWikiAccessControl) |
%DENYTOPICRENAME% |
(any topic) | List of users and groups who are not allowed to rename the current topic. (More in TWikiAccessControl) |
%ALLOWTOPICRENAME% |
(any topic) | List of users and groups who are allowed to rename the current topic. (More in TWikiAccessControl) |
%FINALPREFERENCES% |
SL , WL | List of preferences that are not allowed to be overridden by next level preferences |
Setting Preferences
- The syntax for Preferences variables is the same anywhere in TWiki. In Edit mode, from the start of a new line:
[6 spaces] * [space] Set [space] VARIABLENAME [space] = [value]
Example:-
Set VARIABLENAME = value
-
Creating Custom Variables
- You can add your own preference variables for an entire site, a single web, or a single topic, using the standard syntax. Whatever you include in your variable will be expanded on display, and treated exactly as if it had been written out. So you can place formatted text, page links, image paths.
Example: Create a custom logo variable-- PeterThoeny - 13 Sep 2001
- To place a logo anywhere in a web by typing
%MYLOGO%
, simply define the variable on the web's WebPreferences page. You also have to uploadlogo.gif
- this can be done by attaching a file toLogoTopic
(any topic name you choose):
Set MYLOGO = %PUBURL%/%MAINWEB%/LogoTopic/logo.gif
-- MikeMannix - 30 Nov 2001
File Attachments
Each topic can have files attached to it, similar to an email attachment. Use your browser to upload or download a file. Attachments are stored under revision control, so uploads can never be lost, and files changes can be made with a rollback option that lets you retrieve all previous versions.What Are Attachments Good For?
File Attachments can be used to create powerful groupware solutions - file sharing, document management - and for speedy Web authoring.Document Management System
- You can use Attachments to store and retrieve documents (in any format, with associated graphics, and other media files); attach documents to specific TWiki topics; collaborate on documents with full revision control; distribute documents on a need-to-know basis using; create a central reference library that's easy to access and manage by an entire user group.
File Sharing
- For file sharing, FileAttachments on a series of topics can be used to quickly create a well-documented, categorized digital download center for all types of files: documents; graphics and other media; drivers and patches; applications; anything you can safely upload!
Web Authoring
- Through your Web browser, you can easily upload graphics (or sound files, or anything else you want to embed on a page) and place them anywhere in on a single page, or for use across a web, or site-wide.
- NOTE: You can also add graphics - any files - directly, typically by FTP upload. This requires server access, and may be more convenient if a large number of files, or a particular directory location, is required. These files can't be managed using browser-based Attachment controls.
Uploading Files
- To upload: Click on the Attach link at the bottom of each page. A form is shown where you can browse for a file and upload it. The uploaded file will show up in the File Attachment table.
- Files of any type can be uploaded. Some files that might impose a security risk are renamed, ex:
*.php
files are renamed to*.php.txt
. - Currently there is no file size limit besides the disk space on the server.
- The previous upload path is retained for convenience. In case you make some changes to the local file and want to upload it, again you can copy the previous upload path into the Local file field.
- Files of any type can be uploaded. Some files that might impose a security risk are renamed, ex:
Downloading Files
- To download: Click on the file in the File Attachment table.
- NOTE: There is no access control on individual attachments. If you need this type of control, create separate topics and define access restrictions per topic.
Moving Attachment Files
An attachement can be moved between topics. To do this click Action on the attachment to be moved. On the control page, select the new web and topic, the click Move. The attachment and its version history are moved. The original location is stored as topic Meta Data.Deleting Attachments
It is not possible to delete attached files with the current TWiki implementation. However, they can be moved to another topic. You may care to have a topic Trash.TrashAttachments - move attachments that are no longer wanted here.Linking to Attached Files
- Once a file is attached it can be referenced in the topic. Example:
- Attach file:
Sample.txt
- Edit topic and write text:
%ATTACHURL%/Sample.txt
- Preview -
%ATTACHURL
text appears as: https://netfrag.org/twiki/pub/TWiki/FileAttachment/Sample.txt, a link.
- Attach file:
- To reference an attachment located in another topic, write text:
-
%PUBURL%/%WEB%/OtherTopic/Sample.txt
(for the same web) -
%PUBURL%/Otherweb/OtherTopic/Sample.txt
(for adifferent web)
-
- Attached HTML files and text files can be inlined in a topic. Example:
- Attach file:
Sample.txt
- Edit topic and write text:
%INCLUDE{"%ATTACHURL%/Sample.txt"}%
- Content of attached file is shown inlined.
- Read more in IncludeTopicsAndWebPages.
- Attach file:
- GIF, JPG and PNG images can be attached and shown embedded in a topic. Example:
- Attach file:
Smile.gif
- Edit topic and write text:
%ATTACHURL%/Smile.gif
- Preview - text appears as , an image.
- Attach file:
File Attachment Contents Table
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 action 30 22 Jul 2000 - 19:37 PeterThoeny Just a sample Smile.gif action 94 22 Jul 2000 - 19:38 PeterThoeny Smiley face
File Attachment Controls
Clicking on an Action link takes you to a new page that looks like this:- The first table is a list of all attachments, including their attributes. An
h
means the attachment is hidden, it isn't listed when viewing a topic.
- The second table is all the versions of the attachment. Click on View to see that version. If it's the most recent version, you'll be taken to an URL that always displays the latest version, which is usually what you want.
- To change the comment on an attachment, enter a new comment and then click Change properties. Note that the comment listed against the specific version will not change, however the comment displayed when viewing the topic does change.
- To hide/unhide an attachment, enable the Hide file checkbox, then click Change properties.
Known Issues
- Unlike topics, attachments are not locked during editing. As a workaround, you can change the comment to indicate an attachment file is being worked on - the comment on the specific version isn't lost, it's there when you list all versions of the attachment.
TWiki Forms
Form-based input in topics, with name/value pairs stored as Meta Data variables; multiple forms per web & topicOverview
By adding form-based input to free-form content, you can structure topics with unlimited, easily searchable categories. When forms are enabled for a web and selected in a topic, the form appears in edit mode, and the contents are rendered as a table when viewing the actual page. When editing, can switch forms, if more than one is defined, or remove forms entirely. Form input values are stored as TWikiMetaData; all data is saved. Form Templates replace TWikiCategory Tables from the 01-Dec-2000 version of TWiki.Main Changes from Category Tables
Form Templates 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 |
Importing Category Table Data
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 oldtwikicatitems.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
.
Defining a Form Template
A Form Template is simply a page containing your form, defined in a table where each row is one form field.Form Template Elements
- form template - a set of fields defining a form (replaces category table definition)
- A web can use one or more form templates.
- form - A topic containing additional meta-data (besides the free form TEXTAREA) which categorizes the content. (replaces category table)
- A topic has zero or one of the defined forms. So there are topics with a form or without.
- form field - a named item in a form (replaces category item name)
- field type - selects the INPUT type:
- select - drop-down menu or scrollable box
- checkbox - one or more checkboxes
- checkbox+buttons - one or more checkboxes, plus Set and Clear buttons
- radio - one or more radio buttons
- text - a one-line text field
- textarea - a text box; size is 40x10 (columns x rows)
- field value - one or more values from a fixed set (select, checkbox, radio type) or free-form (text). (replaces category item value)
Defining a Form in One Topic
- Create a new topic with your Form name: MyForm, ExpenseReport, InfoCategory, RecordReview, whatever you need.
- Create a TWiki table, with each column representing one element of an entry field: Name, Type, Size, Values, and Tooltip msessage (see sample below).
- For each field, fill in a new line; for the type of field, select from the list.
- Save the topic.
Example: WebForm from the TWiki.Know web| *Name* | *Type* | *Size* | *Values* | *Tooltip message* | | Know.TopicClassification | select | 1 | Know.NoDisclosure, Know.PublicSupported, Know.PublicFAQ | blah blah... | | Know.OperatingSystem | checkbox | 3 | Know.OsHPUX, Know.OsLinux, Know.OsSolaris, Know.OsWin | blah blah... | | Know.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...
Defining a Form with Multiple Topics
The Form Template can also be defined in an alternative way by using more then one topic:- A Form Template topic defines the Form.
- Fields that have more then one value - radio, select, checkbox - can be defined in individual field value topics.
Example: WebFormTemplate
- Implementation Notes: This format allows you to define field items with or without WikiNames, depending on your needs.
- The topic can be protected in the usual manner so that not everybody can change the form template - see TWikiAccessControl
-
[[...]]
links can be used for force a link, at present[[...][...]]
format is not supported. - The "Tooltip message" column is used as a tool tip for the field name (only if field name is a WikiName) - you only see the tooltip on edit.
- The first item in the list is the default item. Alternative initial values can be given in a topic template such as
WebTopicEditTemplate
or using field=value or for checkboxes field=1. - The topic definition is not read when a topic is viewed.
Enabling Forms by Web
Forms are enabled on a per web basis. TheWEBFORMS
variable in WebPreferences is optional and defines a list of possible Form Templates. Example:
- Set WEBFORMS = BugForm, FeatureForm, BookLoanForm
- With
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 inWEBFORMS
, or the No form option.
- A default Form Template (new topics get this default form) can be provided by creating the
WebTopicEditTemplate
topic in a web and adding a form to it. Initial Form values can be set there.
- Additionally a new topic can be given a Form using the
formtemplate
parameter in the URL. Initial values can then be provided in the URLs or as form values:- other than checkboxes:
name
, ex:?BugPriority=1
- checkbox:
namevalue=1
, ex:?ColourRed=1
.
Boxes with a tick must be specified.
- other than checkboxes:
Including Forms in New Topics
When you create a new topic in a web that has the WEBFORMS Preferences variable set, an Add Form button appears at the bottom of the page. You can start all new topics with forms enabled, and pre-select a form if there's more than one available:- Edit the WebTopicEditTemplate topic, adding the name of an available Form.
- Create a new topic to check - the Form should appear with values set.
- Click Change to switch or remove Forms.
formtemplate
parameter in the URL.
Setting Up Multiple Form Options
- The optional
WEBFORMS
variable defines alternative Form Templates that can be selected by pressing Change in edit mode.
- A Template topic can use any Form Template.
- New topics with a Form are created by simple HTML forms asking for a topic name. For example, you can have a
SubmitExpenseReport
topic where you can create new expense reports - aSubmitVacationRequest
topic and so on. These can specify the required template topic with its associated Form.
Form Template Data Storage
The Form Template topic name, fields and values are stored as TWikiMetaData. The order of field/value pairs in the Meta Data is the same as in the Template. -- JohnTalintyre - 16 Aug 2001-- MikeMannix? - 03 Dec 2001
TWiki Templates
Definition of the templates used to render all HTML pages displayed in TWikiOverview
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 mark-up for template-specific content. Templates are used to define page layout, and also to supplydefault content for new pages.Major changes from the previous template system
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:- separates a set of common template parts into a base template that is included by all of the related templates;
- defines common variables, like a standard separator (ex: "|"), in the base template;
- defines variable text in the individual templates and passes it back to the base template.
Functional Specifications
- Special template directives (or preprocessor commands) are embedded in normal templates.
- Use of template directives is optional, templates work without them.
- All template preprocessing is done in
&TWiki::Store::readTemplate()
so that the caller simply gets an expanded template file (the same as before). - Directives are of the form
%TMPL:<key>%
and%TMPL:<key>{"attr"}%
. - Directives:
-
%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.
-
- Variables are live in a global name space, there is no parameter passing.
- Two-pass processing, so that you can use a variable before declaring it or after.
- Templates and TWikiSkins work transparently and interchangeably. For example, you can create a skin that overloads just the
twiki.tmpl
, liketwiki.print.tmpl
, that redefines the header and footer. - NOTE: The template directives work only for templates, they do not get processed in topic text.
TWiki Master Template
All common parts are defined in a master template,twiki.tmpl
, that all other templates use.
Template variable: Defines: %TMPL:DEF{"sep"}% "|" separator %TMPL:DEF{"htmldoctype"}% Start of all HTML pages %TMPL:DEF{"standardheader"}% Standard header (ex: view, index, seach) %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
Types of Template
There are two types of templates:- HTML Page Templates: Defines layout of netfrag.org pages
- Template Topics: Defines default text when you create a new topic
HTML Page Templates
netfrag.org uses HTML template files for all actions like topic view, edit, preview and so on. This allows you to change the look and feel of all pages by editing just some template files. The template files are in thetwiki/templates
directory. As an example, twiki/templates/view.tmpl
is the template file for the twiki/bin/view
script. Templates can be overloaded per web. The following search order applies:
-
twiki/templates/$webName/$scriptName.tmpl
-
twiki/templates/$scriptName.tmpl
$webName
is the name of the web (ex: Main
), and $scriptName
is the script (ex: view
).
Note: TWikiSkins can be defined to overload the standard templates.
Special variables are used in templates, especially in view
, to display meta data.
Template Topics
Template topics define the default text for new topics. There are three types of template topics:All template topics are located in the TWiki web. The WebTopicEditTemplate can be overloaded. The following search order applies when you create a new topic:
Topic Name: What it is: WebTopicViewTemplate Help text shown when you view a non existing topic. WebTopicNonWikiTemplate Help text shown when you view a non existing topic that has not a WikiName. WebTopicEditTemplate Default text shown when you create a new topic.
- The topic name specified by the
templatetopic
CGI parameter. - WebTopicEditTemplate in the current web.
- WebTopicEditTemplate in the TWiki web.
Template Topics in Action
Here is an example for creating new topics based on a specific template topic: Above form asks for a topic name. A hidden input tag of name "templatetopic" specifies the ExampleTopicTemplate as the template topic. Here is the HTML source of the form:<form name="new" action="%SCRIPTURLPATH%/edit%SCRIPTSUFFIX%/%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="onlywikiname" value="on" /> <input type="submit" value="Create" /> (date format is <nop>YYYYxMMxDD) </form>The "onlywikiname" parameter enforces WikiWords for topic names. Note: Use can use the
%WIKIUSERNAME%
and %DATE%
variables in your topic templates as the signature; those variables are expanded when a new topic is created. The standard topic signature is: -- %WIKIUSERNAME% - %DATE%
Templates by Example
Attached is an example of an oops base templateoopsbase.tmpl
and a example oops dialog oopstest.tmpl
which is based on the base template. NOTE: This isn't the release version, just a quick, simple demo.
Base template oopsbase.tmpl
The first line declares the 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>
Test template oopstest.tmpl
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"}%
Sample screen shot of oopstest.tmpl
With URL:.../bin/oops/Test/TestTopic2?template=oopstest¶m1=WebHome¶m2=WebNotify
Known Issues
- A drawback of referring to a master template is that you can only test a template from within TWiki, where the include variables are resolved. In the previous system, each template is a structurally complete HTML document with a
.tmpl
filename extension - it contains unresolved%VARIABLES%
, but can still be previewed directly in a browser.
-- MikeMannix - 14 Sep 2001
TWiki Skins
Skins overlay regular templates with alternate header/footer layouts; topic text is not affectedOverview
Skins are customized TWikiTemplates files. You can use skins to change the look of a netfrag.org 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.Defining Skins
Skin files are located in thetwiki/templates
directory and are named with the syntax: <scriptname>.<skin>.tmpl
. For example, the Printable skin for the view
template is view.print.tmpl
.
Activating Skins
A skin can be activated in two ways:- Define the
SKIN
Preference variable in TWikiPreferences, one of the WebPreferences, or in a user - TWikiGuest? - topic.-
Set SKIN = print
-
- Add
?skin=name
to the URL, for this example:- https://netfrag.org/twiki/bin/view/TWiki/TWikiSkins?skin=print (for the print view skin)
- https://netfrag.org/twiki/bin/view/TWiki/TWikiSkins?skin=plain (for the plain view skin that has no header and footer)
?skin=name
URL parameter overrides the SKIN Preference value.
-- PeterThoeny - 14 Jul 2001 TWiki Formatted Search Results
Inline search feature allows flexible formatting of search resultOverview
By default, the format for displaying a search result is fixed, e.g. a table with rows of topic name and topic summary. Use theformat="..."
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 (i.e. %SEARCH{ "food" format="| $topic | $summary |" }%
).
Syntax
Two paramters can be used to specify a customized search result: 1.header="..."
parameter
Use the header paramter to specify the header of a search result. It should correspond to the format of the format parameter. This parameter is optional. I.e. header="| *Topic:* | *Summary:* |"
2. format="..."
parameter
Use the format paramter to specify the format of one search hit. I.e. format="| $topic | $summary |"
Variables that can be used in the format string:
Name: | Expands To: |
---|---|
$n | New line |
$web | Name of the web |
$topic | Topic name |
$locked | LOCKED flag (if any) |
$date | Time stamp of last topic update, i.e. 21 Nov 2024 - 20:30 |
$isodate | Time stamp of last topic update, i.e. 2024-11-21T20:30Z |
$rev | Number of last topic revision, i.e. 1.4 |
$wikiusername | Wiki user name of last topic update, i.e. Main.JohnSmith |
$username | User name of last topic update, i.e. JohnSmith |
$summary | Topic summary |
$formfield(name) | The field value of a form field, i.e. $formfield(TopicClassification) would get expanded to PublicFAQ . This applies only to topics that have a TWikiForm |
$pattern(reg-exp) | A regular expression pattern to extract some text from a topic, i.e. $pattern(.*?\*.*?Email\:\s*([^\n\r]+).*) extracts the email address from a bullet of format * Email: ... . |
$pattern(reg-exp)
, specify a RegularExpression that scans from start to end and contains the text you want to keep in parenthesis, i.e. $pattern(.*?(from here.*?to here).*)
. You need to make sure that the integrity of a web page is not compromised, i.e. if you include a table make sure to include everything including the table end tag.
Examples
Bullet list showing topic name and summary
Write this:%SEARCH{ "FAQ" scope="topic" nosearch="on" nototal="on" header=" * *Topic: Summary:*" format=" * [[$topic]]: $summary" }%
To get this:
- Topic: Summary:
- TWikiFAQ: Frequently Asked Questions About TWiki This is a real FAQ, and also a demo of one easily implemented knowledge base solution. See how it's done, click Edit . SEARCH ...
- TWikiFaqTemplate: FAQ: Answer: Back to: NOP TWikiFAQ WIKIUSERNAME DATE
- TextFormattingFAQ: Text Formatting FAQ The most frequently asked questions about text formatting are answered. Also, TextFormattingRules contains the complete TWiki shorthand system ...
Table showing form field values of topics with a form
Write this in the Know web:| *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 |
Extract some text from a topic using regular expression
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:
- How do I delete or rename a topic? Answer...
- Why does the topic revision not increase when I edit a topic? Answer...
- TWiki has a GPL (GNU General Public License). What is GPL? Answer...
- I've problems with the WebSearch. There is no Search Result on any inquiry. By clicking the Index topic it's the same problem. Answer...
- What happens if two of us try to edit the same topic simultaneously? Answer...
- I would like to install TWiki on my server. Can I get the source? Answer...
- So what is this WikiWiki thing exactly? Answer...
- Everybody can edit any page, this is scary. Doesn't that lead to chaos? Answer...
TWiki Meta Data
Additional topic data, program-generated or from TWikiForms, is stored inMETA
variable name/value pairs
Overview
TWikiMetaData usesMETA
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 Data Syntax
- Format is the same as in TWikiVariables, except all fields have a key.
-
%META:<type>{key1="value1" key2="value2" ...}%
-
- Order of fields within the meta variables is not defined, except that if there is a field with key
name
, this appears first for easier searching (note the order of the variables themselves is defined).
- Each meta variable is on one line.
-
\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"}%
Meta Data Specifications
The current version of Meta Data is 1.0, with support for the following variables.META:TOPICINFO
Key | Comment |
---|---|
version | Same as RCS version |
date | integer, unx time, seconds since start 1970 |
author | last to change topic, is the REMOTE_USER |
format | Format of this topic, will be used for automatic format conversion |
META:TOPICMOVED
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, unx time, seconds since start 1970 |
- at present version number is not supported directly, it can be inferred from the RCS history.
- there is only one META:TOPICMOVED in a topic, older move information can be found in the RCS history.
META:TOPICPARENT
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. |
META:FILEATTACHMENT
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, unx time, seconds since start 1970 |
user | the REMOTE_USER, not WikiName |
comment | As supplied when file uploaded |
attr | h if hidden, optional |
Key | Comment |
---|---|
movedfrom | full topic name - web.topic |
movedby | the REMOTE_USER, not WikiName |
movedto | full topic name - web.topic |
moveddate | integer, unx time, seconds since start 1970 |
META:FORM
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 |
META:FIELD
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 |
Recommended Sequence
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:- form fields remain in the order they are defined
- the
diff
function output appears in a logical order
- META:TOPICINFO
-
text of topic
- META:TOPICMOVED (optional)
- META:TOPICPARENT (optional)
- META:FILEATTACHMENT (0 or more entries)
- META:FORM (optional)
- META:FIELD (0 or more entries; FORM required)
Viewing Meta Data in Page Source
When viewing a topic theRaw Text
link can be clicked to show the text of a topic (ie: 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
Rendering Meta Data
Meta Data is rendered with the %META% variable. This is mostly used in theview
, preview
and edit
scripts.
Current support covers:
Variable usage: | Comment: |
---|---|
%META{"form"}% | Show form data, see TWikiForms |
%META{"attachments"}% | Show attachments, exclude hidden |
Options for Attachments: | |
all="on" | Show ALL attachments (including hidden) |
%META{"moved"}% | Details of any topic moves |
%META{"parent [options]"}% | Show topic parent |
Options for parent: | |
dontrecurse="on" | By default recurses up tree, at some cost |
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 " > " |
Known Issues
At present, there is no Meta Data support for Plugins. However, the format is readily extendable and theMeta.pm
code that supports the format needs only minor alteration.
-- JohnTalintyre - 29 Aug 2001 -- MikeMannix - 03 Dec 2001
TWiki Plugins
Plug-in enhanced feature add-ons, with a Plugin API for developersOverview
You can add Plugins to extend TWiki's functionality, without altering the core program code. A plug-in approach lets you:- add virtually unlimited features while keeping the main TWiki code compact and efficient;
- heavily customize an installation and still do clean updates to new versions of TWiki;
- rapidly develop new TWiki functions in Perl using the Plugin API.
Preinstalled Plugins
TWiki comes with three Plugins as part of the standard installation.- DefaultPlugin optionally handles some legacy variables from older versions of TWiki. You can control this option from TWikiPreferences. (Perl programmers can also add rules for simple custom processing.)
- EmptyPlugin is a fully functional module, minus active code; it does nothing and serves as a template for new Plugin development.
- InterwikiPlugin is preinstalled but can be disabled or removed. Use it for shorthand linking to remote sites, ex:
TWiki:Plugins
expands to TWiki:Plugins on TWiki.org. You can edit the predefined set of of Wiki-related sites, and add your own.
Installing Plugins
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:- Download the zip file containing the Plugin, documentation, and any other required files, from TWiki:Plugins.
- Distribute the files to their proper locations - unzip the zip archive in your TWiki installation directory - if have a standard TWiki installation, this will distribute automatically. Otherwise, place the files according to the directory paths listed on the Plugin top in TWiki:Plugins.
- Check the demo example on the Plugin topic: if it's working, the installation was fine!
SomePlugin
), there's a separate development page.
- Doc page: Read all available info about the Plugin; download the attached distribution files.
- Dev page: Post feature requests, bug reports and general dev comments; topic title ends in
Dev
(SomePluginDev
). - User support: Post installation, how to use type questions (and answers, if you have them) in the TWiki:Support web.
On-Site Pretesting
To test new Plugins on your installation before making them public, you may want to use one of these two approaches:- Method 1: Safely test on-the-fly by creating separate Production and Test branches in your live TWiki installation.
- Duplicate the
twiki/bin
andtwiki/lib
directories for the Test version, adjusting the paths in the newlib/TWiki.cfg
, thetwiki/data
; thetwiki/templates
andtwiki/pub
directories are shared. - Test Plugins and other new features in the Test installation until you're satisfied.
- If you modify topics using the new features, live users will likely see unfamiliar new META tags showing up on their pages - to avoid this, create and edit test-only topics to try out new features.
- Copy the modified files to the Production installation. You can update a TWiki installation live and users won't even notice.
- Duplicate the
- Method 2: List the Plugin under
Test
in theDISABLEDPLUGINS
variable in TWikiPreferences. Redefine theDISABLEDPLUGINS
variable in the Test web and do the testing there.
Managing Plugins
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.Setting Preferences
Installed Plugins can be toggled on or off, site-wide or by web, through TWikiPreferences and individual WebPreferences:- All Plugin modules present in the
lib/TWiki/Plugins
directory are activated automatically unless disabled by theDISABLEDPLUGINS
Preferences variable in TWikiPreferences. You can optionally list the installed Plugins in theINSTALLEDPLUGINS
Preferences variable. This is useful to define the sequence of Plugin execution, or to specify other webs than the netfrag.org web for the Plugin topics. Settings in TWikiPreferences are:-
Set INSTALLEDPLUGINS = DefaultPlugin, ...
-
Set DISABLEDPLUGINS = EmptyPlugin, ...
-
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:
- One line description, used to form the bullets describing the Plugins in the TextFormattingRules topic:
-
Set SHORTDESCRIPTION = Blah blah woof woof.
-
- Debug Plugin, output can be seen in
data/debug.txt
. Set to 0=off or 1=on:-
Set DEBUG = 0
-
- The settings can be retrieved as Preferences variables like
%<pluginname>_<var>%
, ex:%DEFAULTPLUGIN_SHORTDESCRIPTION%
shows the description of the DefaultPlugin.
Listing Active Plugins
Plugin status variables let you list all active Plugins wherever needed. There are two list formats:- The
%ACTIVATEDPLUGINS%
variable lists activated Plugins by name. (This variable is displayed in TWikiPreferences for debugging use.) - The
%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 Variables Using%ACTIVATEDPLUGINS%
:
On this TWiki site, the active Plugins are: DefaultPlugin, HeadlinesPlugin, InterwikiPlugin, TablePlugin, VisualConfirmPlugin. 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 deprecated
*_text_*
as bold italic text.- HeadlinesPlugin: Build news portals that show headline news based on RSS news feeds from news sites.
- InterwikiPlugin: Link
ExternalSite:Page
text to external sites based on aliases defined in the InterWikis topic.- TablePlugin: Control attributes of tables and sorting of table columns
- VisualConfirmPlugin: Plugin for visual confirmation of new user registration.
The TWiki Plugin API
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.Available Core Functions
Thelib/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.
- For best performance, enable only the functions you really need. NOTE:
outsidePREHandler
andinsidePREHandler
are particularly expensive.
Predefined Hooks
In addition to TWiki core functions, Plugins can use predefined hooks, or call backs, listed in thelib/TWiki/Plugins/EmptyPlugin.pm
module.
- All but the initPlugin are disabled. To enable a call back, remove
DISABLE_
from the function name.
Plugin Version Detection
To eliminate the incompatibility problems bound to arise from active open Plugin development, a Plugin versioning system and an APIGetVersion
detection routine are provided for automatic compatibility checking.
- All modules require a
$VERSION='0.000'
variable, beginning at1.000
.
- The
initPlugin
handler should check all dependencies and return TRUE if the initialization is OK or FALSE if something went wrong.- The Plugin initialization code does not register a Plugin that returns FALSE (or that has no
initPlugin
handler).
- The Plugin initialization code does not register a Plugin that returns FALSE (or that has no
-
$VERSION='1.000'
is the current setting inTWiki::Plugins.pm
and in the preinstalled system Plugins (DefaultPlugin, EmptyPlugin, InterwikiPlugin).
Creating Plugins
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.The DefaultPlugin Alternative
- DefaultPlugin can handle some outdated TWiki variables, found, for example, in sites recently updated from an old version. Settings are in DefaultPlugin topic. You can also add your own simple custom processing rules here, though in all but very simple cases, writing a new Plugin is preferable.
Anatomy of a Plugin
A basic TWiki Plugin consists of two elements:- a Perl module, ex:
MyFirstPlugin.pm
- a documentation topic, ex:
MyFirstPlugin.txt
MyFirstPlugin
topic. Other needed Perl code is best placed in a lib/TWiki/Plugins/MyFirstPlugin/
directory.
The Plugin API handles the details of connecting your Perl module with main TWiki code. When you're familiar with the Plugin API, you're ready to develop Plugins.
Creating the Perl Module
Copy filelib/TWiki/Plugins/EmptyPlugin.pm
to <name>Plugin.pm
. EmptyPlugin.pm
contains no executable code, so it does nothing, but it's ready to be used. Customize it. Refer to the Plugin API specs for more information.
Writing the Documentation Topic
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:- Copy the Plugin topic template from EmptyPlugin. To copy the text, go to the page and:
- click Edit
- select all in the Edit box & copy
- Cancel the edit
- paste & save as a text file or new topic on your site
- Customize the template for your Plugin; you'll probably want to post a working version on your local TWiki site.
- Save your topic as a text file, for use in packaging and publishing your Plugin.
OUTLINE: Doc Topic Contents
Check EmptyPlugin 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.>" MyFirstPlugin Settings: <Description and settings for custom Plugin %VARIABLES%, and those required by TWiki.>"How-to Instructions: <Step-by-step set-up guide, user help, whatever it takes to install and run, goes here.>" Test Example: <Include an example of the Plugin in action: if it works, the installation was a success!>" 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.>"
- Plugins Preferences <If user settings are needed, explain... Entering valuse works exactly like TWikiPreferences and WebPreferences: six (6) spaces and then:>"
- Set <EXAMPLE = value added>
Packaging for Distribution
A minimum Plugin release consists of a Perl module with a WikiName that ends inPlugin
, ex: MyFirstPlugin.pm
, and a documentation page with the same name(MyFirstPlugin.txt
).
- Distribute the Plugin files in a directory structure that mirrors TWiki. If your Plugin uses additional files, include them ALL:
-
lib/TWiki/Plugins/MyFirstPlugin.pm
-
data/TWiki/MyFirstPlugin.txt
-
pub/TWiki/MyFirstPlugin/uparrow.gif
[a required graphic]
-
- Create a zip archive with the Plugin name (
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
-
Publishing for Public Use
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. Publish your Plugin in three steps:- Post the Plugin documentation topic in the TWiki:Plugins web:
- create a new topic using the Plugin name, ex:
MyFirstPlugin.txt
- paste in the topic text from Creating Plugin Documentation and save
- create a new topic using the Plugin name, ex:
- Attach the distribution zip file to the topic, ex:
MyFirstPlugin.zip
- Link from the doc page to a new, blank page named after the Plugin, and ending in
Dev
, ex:MyFirstPluginDev
. This is the discussion page for future development. (User support for Plugins is handled in TWiki:Support.)
-- PeterThoeny - 14 Sep 2001
-- MikeMannix - 03 Dec 2001
TWikiSiteTools
Utilities for searching, navigation, and monitoring site activityOverview
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.WebNotify Recent Changes Alert
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 scriptmailnotify
is called by a deamon in regular intervals. The script sends an automated email to subscribed users if topics were changed in a web within last interval.
- You can create a WebNotify using TWikiVariables with
%NOTIFYTOPIC%
Configuring Outgoing Mail
netfrag.org will use theNet::SMTP
module if it is installed on your system. Set this with the SMTPMAILHOST
variable in TWikiPreferences.
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
.
- Net::SMTP can be easily disabled (ex: if there is an installation error) by setting
SMTPMAILHOST
in TWikiPreferences to an empty value.
- You can set a separate
SMTPSENDERHOST
variable to define the mail sender host (some SMTP installations require this).
Setting the Automatic Email Schedule
For Unix platforms: Edit thecron
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 15,45 * * * * (cd ~twiki/public_html/bin; ./mailnotify -q)The above line will call mailnotify at 15 minutes and 45 minutes past every hour. 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
(as of 2001-11-20, none of them free).
WebStatistics Site Usage Log
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.- You can create a WebStatistics link using TWikiVariables with
%STATISTICSTOPIC%
Configuring for Automatic Operation
- You can automatically generate usage statistics for all webs. To enable this:
- Make sure variable
$doLogTopicView, $doLogTopicSave and $doLogTopicUpload
inTWiki.cfg
are set. This will generate log entries in filetwiki/data/log<date>.txt
. - The WebStatistics topic must be present in all webs where you want to have statistics. You can use the topic in the Main web as a template.
- Call the
twiki/bin/statistics
script from a cron job, once a day is recommended. This will update the WebStatistics topics in all webs. - Attention: The script must run as the same user as the CGI scripts are running, which is user
nobody
on most systems. Example crontab entry:
0 0 * * * (cd /path/to/TWiki/bin; ./statistics >/dev/null 2>&1)
- There is a workaround in case you can't run the script as user
nobody
: Run the utilitytwiki/bin/geturl
in your cron job and specify the URL of thetwiki/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)
- Make sure variable
Generating Statistics Manually by URL
- The
twiki/bin/statistics
script can also be executed as a CGI script, just enter the URL in your browser. Examples:- Update current month for all webs:
http://mydomain.com/twiki/bin/statistics
- Update current month for Main web only:
http://mydomain.com/twiki/bin/statistics/Main
- Update January 2000 for Main web:
http://mydomain.com/twiki/bin/statistics/Main?logdate=200001
- Update current month for all webs:
WebSearch
WebSearch is an extremely fast and flexible search facility, part of the core TWiki feature set. Options include:- topic title or full-text search
- regular expressions
- search within web or site-wide
- index-style A-Z alphabetical listing sorted topic title
- many more
WebChanges
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 presetSEARCH
. The number of topics listed by the limit
parameter.:
%SEARCH{".*" web="TWiki" regex="on" nosearch="on" order="modified"
reverse="on" limit="50"}%
WebIndex
WebIndex lists all web topics in alphabetical order, with the first couple of lines of text. This is simply a presetSEARCH
:
-- MikeMannix? - 01 Dec 2001%SEARCH{"\.*" scope="topic" regex="on" nosearch="on"}%
Managing Topics
Browser-based rename, move, and delete for individual topicsOverview
Use browser controls while viewing a topic, to change its name, move it to another TWiki web, or delete it to a hiddenTrash
web.
How to Rename/Move/Delete a Topic
- Click on
[More]
(bottom right of page) on the topic to be changed, then, in the new screen, on[Rename/move]
. - Select target web if other than the current web - chose
Trash
to delete a topic - Enter the new topic name - default is current name
NOTE: You will be warned if there are locks or if there is a name conflict. - Select from the list of referring links any topics NOT to be updated with the new name (by default, all referring links will be updated).
- Click on
[Rename/Move]
: the topic will be renamed and links to the topic updated as requested.- If any of the referring pages are locked then they will be listed.
- You can correct these later by again pressing
[Rename/Move]
.
Referring Topics
Referring topics are found using the the %SEARCH% variable, see the templatesearchrenameview.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 refernces to the topic being changed.
Changed references are kept are as short as possible, ex: topic is used in preference to web.topic.
About Deleting a Topic
Deleted topics are moved to theTrash
web - 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.
Clearing the Trash
TheTrash
web should be be cleared periodically, by archiving the contents if required (recommended), then deleting the files from the Trash
directory.
Redirecting from an Old Topic
You can use TWikiMetaData to place a command in WebTopicViewTemplate and WebTopicNonWikiTemplate that will show if a topic has 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: "}%
Effect of Access Settings
Permissions affect the rename function in various ways. To rename a topic, you need both change and rename permissions. To alter refer4ing topics, you need change permission. See TWikiAccessControl for information on setting up access permissions.How Rename/move Works
- %SEARCH%, with a special template, finds and displays all occurrences of the topic name in other topics, site-wide. These referring links are by default automatically changed to the new topic and/or web name. This includes relevant TWikiMetaData definitions.
- User can omit one or more topics from the update list.
-
<pre>
and<verbatim>
are honoured - no changes are made to text within these areas.
- The topic is moved (if locks allow).
- References are changed (locks and permissions permitting).
- Any referring topics that can't be changed due to locks are listed - user can change them at another time.
Known Limitations
Rename/move in 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 thatsearch
can show matches that will not be updated because of case differences. Other mismatches to actual rendered output are also possible as the approaches are so different.
The following shows some limitations of square bracket processing.
-- MikeMannix - 15 Sep 2001[[Old Topic]] => [[NewTopic][Old Topic]] [[old topic]] => [[NewTopic][old topic]] [[old t opic]] => not changed [[OldTopic]] => [[NewTopic]]
Managing Webs
Adding, renaming and deleting webs are manual operations done directly on the serverOverview
Managing TWiki webs 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.Adding a New Web
Adding new webs is quick and easy - you can have a basic web up and running in a couple of minutes:- Create a new directory under
twiki/data/
, ex:twiki/data/Newweb
- the name has to start with a capital and cannot be a WikiWord
- Copy in the contents of
twiki/data/_default
.
Renaming or Deleting a Web
NOTE: If you plan to rename the netfrag.org.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).
- Prepare your site: Search each web for links to the target web, searching topic text for
Oldwebname.
, including the dot so you'll find references likeOldwebname.SomeTopic
.- Make changes as required, to
Newwebname.SomeTopic
or better yet, to%MAINWEB%.SomeTopic
.
- Make changes as required, to
- Edit the TWikiPreferences topic: Rename or delete the web from the
WIKIWEBLIST
variable. - Edit the TWikiWebsTable topic: Rename or delete the web from the table.
- Login to the netfrag.org server, via Telnet or FTP.
- Go to
twiki/data
and rename or remove the web directory. - Go to
twiki/templates
and rename or remove the web directory if present. - Go to
twiki/pub
and rename or remove the web directory if present.
Appendix A: TWiki File System
Annotated listings of files included in the 01-Sep-2001 TWiki distributionOverview
This Appendix contains directory and file listings, and individual file descriptions, for the full 01-Sep-2001 TWiki distribution package.Directory Structure
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 subdirectory structure 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 |
twiki/pub | list | Public files (e.g. images) and FileAttachments and their RCS histories |
twiki/data | list | Topic text (page content) and RCS histories |
twiki/templates | list | HTML templates, used by TWiki scripts |
File Descriptions
A rundown of the individual files included in the current 01-Sep-2001 distribution, organized by TWiki root directories. Files in twiki
Application info and the current reference documentation. Full file list:
File: | Used for: |
---|---|
index.html | A page with a link to first launch TWiki after install |
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 |
Files in twiki/bin
Perl CGI scripts. Full file list:
File: | Used for: |
---|---|
.htaccess.txt | Authentication. Rename to .htaccess and customize if used |
attach | Script that shows the attach file page (FileAttachment) |
edit | Script to edit a topic |
geturl | Script to fetch URL data |
installpasswd | Script to install new password by admin |
mailnotify | Script called by cron job to notify users of changes |
oops | Script that shows an OK or oops dialog |
passwd | Script to reset and change password |
preview | Script to preview topic after edit |
rdiff | Script to see differences of topics |
register | Script to register new users |
rename | Script to rename/move topics and move attachments |
save | Script that saves a topic, called by preview |
search | Script that displays search results |
statistics | Script to create statistics topic |
testenv | Script to test CGI environment variables |
upload | Script that does file upload (FileAttachment) |
view | Script to view a topic ( the script ) |
viewfile | Script to view a file attachment |
Files under twiki/lib
The new lib/TWiki/Plugins
directories contain configuration, library and function files, and TWikiPlugins. Full file list:
File: | Used for: |
---|---|
TWiki.cfg | For configuration, used by TWiki.pm |
TWiki.pm | Main TWiki library |
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/Prefs.pm | Preferences handling |
TWiki/Search.pm | Search engine, used by wiki.pm |
TWiki/Store.pm | Back-end storage, *.txt text file and *.txt,v RCS repository file handling |
TWiki/Plugins/DefaultPlugin.pm | Handles some legacy rules |
TWiki/Plugins/EmptyPlugin.pm | Empty plugin, use to create your own |
TWiki/Plugins/InterwikiPlugin.pm | Use aliases as links for predefined URLs |
Files under twiki/pub
The pub
directory stores data-related files, including images used by TWiki and FileAttachments. Attachments are stored in sub-directories created with the related topic name. Partial file list:
File: | Used for: |
---|---|
favicon.ico | ICO file |
twikilogo.gif | GIF file |
twikilogo1.gif | GIF file |
twikilogo2.gif | GIF file |
twikilogo3.gif | GIF file |
twikilogo4.gif | GIF file |
twikilogo88x31 | GIF file |
wikiHome.gif | GIF file |
icn/_filetypes.txt | GIF file |
icn/bat.gif | GIF file |
icn/bmp.gif | GIF file |
... | ... |
TWiki/FileAttachment/Sample.txt | TEXT file |
TWiki/FileAttachment/Smile.gif | GIF file |
TWiki/PreviewBackground/blankltgraybg.gif | GIF file |
TWiki/PreviewBackground/blankwhitebg.gif | GIF file |
TWiki/PreviewBackground/previewbg.gif | GIF file |
TWiki/WabiSabi/wabisabi.gif | GIF file |
Know/IncorrectDllVersionW32PTH10DLL/W32PTH10.DLL | DLL file |
Files under twiki/data
TWiki page data stored as individual text files. Each active web has its own subdirectory. The TWiki distribution includes four start-up webs - Main
, TWiki
, Know
, Test
- with documentation and demo content, a Trash
web, and a _default
directory containing all topics required to start a new web. Partial file list:
File: | Used for: |
---|---|
.htpasswd | Basic Authentication (htaccess) password file |
debug.txt | Program messages useful for debugging |
mime.types | Recognized file formats |
warning.txt | Diagnostic messages for identifying problems |
_default directory can be copied to empty directory when creating new Webs | |
_default/.changes | Web-level record of topic changes |
_default/.mailnotify | Web-level timstamp of last e-mail 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/WebNotify.txt | Subscribe/unsubscribe to web changes email alert |
_default/WebNotify.txt,v | Revisions history (RCS) |
_default/WebPreferences.txt | Web-level preference settings |
_default/WebPreferences.txt,v | Revisions history (RCS) |
_default/WebSearch.txt | Web-level search options |
_default/WebSearch.txt,v | Revisions history (RCS) |
_default/WebStatistics.txt | Generates web usage statistics |
_default/WebStatistics.txt,v | Revisions history (RCS) |
... | ... |
Files in twiki/templates
Templates used to control appearance of all rendered pages. Full file list:
File: | Used for: |
---|---|
attach.tmpl | Attach file control screen |
attachagain.tmpl | Control screen |
attachnew.tmpl | Control screen |
changeform.tmpl | Control screen |
changes.tmpl | Displays WebChanges 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 | Control screen |
oopsaccesschange.tmpl | Error message |
oopsaccessgroup.tmpl | Error message |
oopsaccessrename.tmpl | Error message |
oopsaccessview.tmpl | Error message |
oopsauth.tmpl | Error message |
oopsbadpwformat.tmpl | Error message |
oopschangepasswd.tmpl | Error message |
oopsempty.tmpl | Error message |
oopslocked.tmpl | Error message |
oopslockedrename.tmpl | Error message |
oopsmissing.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 |
oopsregexist.tmpl | Error message |
oopsregpasswd.tmpl | Error message |
oopsregrequ.tmpl | Error message |
oopsregthanks.tmpl | Error message |
oopsregwiki.tmpl | Error message |
oopsrenameerr.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 |
oopswrongpassword.tmpl | Error message |
preview.tmpl | Preview Changes screen |
rdiff.tmpl | Displays text changes before & after (Diffs) |
register.tmpl | Registration page |
registernotify.tmpl | Registration notification |
rename.tmpl | Doing a new topic rename, user chooses web & topic |
renamebase.tmpl | Used by other rename templates |
renameconfirm.tmpl | Confirms a pre-specified rename, ex: undoing a rename |
renamerefs.tmpl | Rename done, but some references not changed (topics were locked) |
search.tmpl | Search screen |
searchbookview.tmpl | Search results with full topic content |
searchmeta.tmpl | Search screen |
searchrenameview.tmpl | Used by rename to list references to topic being renamed |
twiki.tmpl | Base template definitions used by other templates |
view.plain.tmpl | Printable topic view with reduced header/footer |
view.print.tmpl | Topic view without header/footer |
view.tmpl | Main topic view |
TWiki File System Snapshot
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. Directorytwiki/bin
:
drwxrwxr-x 2 twiki twiki 4096 Sep 14 22:45 . drwxrwxr-x 5 twiki twiki 4096 Aug 3 01:57 .. -rw-rw-r-- 1 twiki twiki 895 Aug 25 01:32 .htaccess -rw-rw-r-- 1 twiki twiki 782 Aug 25 01:32 .htaccess.txt -rw-rwxr-x 1 twiki twiki 4819 Sep 7 01:44 attach -rwxrwxr-x 1 twiki twiki 3381 Jul 21 18:41 changes -rw-rwxr-x 1 twiki twiki 8056 Sep 3 22:44 edit -rwxrwxr-x 1 twiki twiki 1736 Nov 17 2000 geturl -rwxrwxr-x 1 twiki twiki 4481 Aug 21 19:10 installpasswd -rwxrwxr-x 1 twiki twiki 5829 Aug 21 22:03 mailnotify -rwxrwxr-x 1 twiki twiki 4512 Aug 25 22:10 makedistrib -rw-rwxr-x 1 twiki twiki 2254 Aug 21 19:25 oops -rwxrwxr-x 1 twiki twiki 6399 Aug 22 18:31 passwd -rw-rwxr-x 1 twiki twiki 5315 Sep 3 22:45 preview -rwxrwxr-x 1 twiki twiki 8946 Sep 8 18:35 rdiff -rw-rwxr-x 1 twiki twiki 9199 Aug 25 21:02 register -rwxrwxr-x 1 twiki twiki 13481 Sep 7 21:17 rename -rw-rwxr-x 1 twiki twiki 4645 Sep 7 01:44 save -rwxrwxr-x 1 twiki twiki 4166 Jul 21 18:45 search -rw-rwxr-x 1 twiki twiki 10006 Sep 7 01:42 statistics -rwxrwxr-x 1 twiki twiki 9356 Aug 31 10:04 testenv -rw-rwxr-x 1 twiki twiki 13782 Aug 21 22:17 upload -rwxrwxr-x 1 twiki twiki 10164 Sep 8 18:24 view -rw-rwxr-x 1 twiki twiki 2773 Sep 13 17:21 viewfileDirectory
twiki/templates/
:
drwxrwxr-x 2 twiki twiki 4096 Sep 8 00:47 . drwxrwxr-x 4 twiki twiki 4096 Sep 10 23:21 .. -rw-rw-r-- 1 twiki twiki 2573 Aug 31 13:06 attach.tmpl -rw-rw-r-- 1 twiki twiki 1604 Aug 3 14:52 attachagain.tmpl -rw-rw-r-- 1 twiki twiki 449 Aug 3 14:47 attachnew.tmpl -rw-rw-r-- 1 twiki twiki 1309 Sep 3 22:47 changeform.tmpl -rw-rw-r-- 1 twiki twiki 1619 Aug 31 13:16 changes.tmpl -rw-rw-r-- 1 twiki twiki 11842 Sep 10 19:00 edit.iejs.tmpl -rw-rw-r-- 1 twiki twiki 2603 Sep 3 22:48 edit.tmpl -rw-rw-r-- 1 twiki twiki 981 May 28 20:14 mailnotify.tmpl -rw-rw-r-- 1 twiki twiki 1499 Aug 31 13:16 moveattachment.tmpl -rw-rw-r-- 1 twiki twiki 570 Aug 1 01:24 oopsaccesschange.tmpl -rw-rw-r-- 1 twiki twiki 586 Aug 1 01:24 oopsaccessgroup.tmpl -rw-rw-r-- 1 twiki twiki 573 Aug 1 01:47 oopsaccessrename.tmpl -rw-rw-r-- 1 twiki twiki 573 Aug 1 01:24 oopsaccessview.tmpl -rw-rw-r-- 1 twiki twiki 1014 Aug 1 01:25 oopsauth.tmpl -rw-rw-r-- 1 twiki twiki 405 Aug 1 01:49 oopsbadpwformat.tmpl -rw-rw-r-- 1 twiki twiki 344 Jul 31 10:16 oopschangepasswd.tmpl -rw-rw-r-- 1 twiki twiki 624 Jul 31 02:09 oopsempty.tmpl -rw-rw-r-- 1 twiki twiki 918 Jul 31 02:20 oopslocked.tmpl -rw-rw-r-- 1 twiki twiki 590 Jul 31 10:25 oopslockedrename.tmpl -rw-rw-r-- 1 twiki twiki 328 Jul 31 10:26 oopsmissing.tmpl -rw-rw-r-- 1 twiki twiki 2158 Sep 13 02:03 oopsmore.tmpl -rw-rw-r-- 1 twiki twiki 407 Aug 1 10:22 oopsmoveerr.tmpl -rw-rw-r-- 1 twiki twiki 1136 Aug 1 01:30 oopsnoformdef.tmpl -rw-rw-r-- 1 twiki twiki 522 Aug 1 01:31 oopsnotwikiuser.tmpl -rw-rw-r-- 1 twiki twiki 413 Jul 31 02:07 oopsnoweb.tmpl -rw-rw-r-- 1 twiki twiki 393 Aug 1 01:32 oopspreview.tmpl -rw-rw-r-- 1 twiki twiki 462 Aug 1 01:32 oopsregexist.tmpl -rw-rw-r-- 1 twiki twiki 345 Aug 1 00:52 oopsregpasswd.tmpl -rw-rw-r-- 1 twiki twiki 356 Aug 1 00:53 oopsregrequ.tmpl -rw-rw-r-- 1 twiki twiki 540 Aug 1 01:57 oopsregthanks.tmpl -rw-rw-r-- 1 twiki twiki 679 Aug 1 01:02 oopsregwiki.tmpl -rw-rw-r-- 1 twiki twiki 411 Aug 1 10:23 oopsrenameerr.tmpl -rw-rw-r-- 1 twiki twiki 483 Aug 1 01:59 oopsresetpasswd.tmpl -rw-rw-r-- 1 twiki twiki 921 Sep 7 23:47 oopsrev.tmpl -rw-rw-r-- 1 twiki twiki 774 Aug 1 01:35 oopssave.tmpl -rw-rw-r-- 1 twiki twiki 477 Aug 1 02:01 oopssaveerr.tmpl -rw-rw-r-- 1 twiki twiki 452 Aug 1 01:37 oopssendmailerr.tmpl -rw-rw-r-- 1 twiki twiki 379 Aug 1 10:23 oopstopicexists.tmpl -rw-rw-r-- 1 twiki twiki 342 Jul 31 10:09 oopsupload.tmpl -rw-rw-r-- 1 twiki twiki 364 Aug 1 02:05 oopswrongpassword.tmpl -rw-rw-r-- 1 twiki twiki 2584 Sep 3 22:49 preview.tmpl -rw-rw-r-- 1 twiki twiki 1539 Sep 8 18:29 rdiff.tmpl -rw-rw-r-- 1 twiki twiki 552 Jul 14 19:23 register.tmpl -rw-rw-r-- 1 twiki twiki 1151 Aug 23 16:38 registernotify.tmpl -rw-rw-r-- 1 twiki twiki 789 Aug 8 23:32 rename.tmpl -rw-rw-r-- 1 twiki twiki 2310 Sep 10 14:56 renamebase.tmpl -rw-rw-r-- 1 twiki twiki 475 Aug 3 16:53 renameconfirm.tmpl -rw-rw-r-- 1 twiki twiki 589 Aug 8 23:32 renamerefs.tmpl -rw-rw-r-- 1 twiki twiki 1792 Aug 31 18:38 search.tmpl -rw-rw-r-- 1 twiki twiki 1650 Aug 31 18:38 searchbookview.tmpl -rw-rw-r-- 1 twiki twiki 149 Sep 13 02:00 searchmeta.tmpl -rw-rw-r-- 1 twiki twiki 2044 Aug 31 18:38 searchrenameview.tmpl -rw-rw-r-- 1 twiki twiki 2246 Aug 31 13:08 twiki.tmpl -rw-rw-r-- 1 twiki twiki 418 Aug 31 13:07 view.plain.tmpl -rw-rw-r-- 1 twiki twiki 826 Aug 31 13:08 view.print.tmpl -rw-rw-r-- 1 twiki twiki 1770 Sep 8 00:32 view.tmplDirectory
twiki/data/
:
drwxrwxr-x 8 nobody nobody 4096 Sep 7 01:04 . drwxrwxr-x 4 nobody nobody 4096 Sep 10 23:21 .. -rw-rw-rw- 1 twiki twiki 159 Aug 24 19:49 .htpasswd drwxrwxr-x 2 nobody nobody 4096 Sep 9 02:45 Know drwxrwxr-x 2 nobody nobody 4096 Sep 9 02:45 Main drwxrwxr-x 2 nobody nobody 8192 Sep 14 23:22 TWiki drwxrwxr-x 2 nobody nobody 4096 Sep 9 02:45 Test drwxrwxr-x 2 nobody nobody 4096 Sep 14 12:04 Trash drwxrwxr-x 2 nobody nobody 4096 Sep 9 02:45 _default -rw-rw-rw-- 1 twiki twiki 0 Jul 1 02:20 debug.txt -rw-rw-r-- 1 twiki twiki 3419 Aug 13 00:15 mime.types -rw-rw-rw-- 1 twiki twiki 0 Jul 1 02:19 warning.txtPartial file list for
twiki/data/Main
:
drwxrwxrwx 2 nobody nobody 4096 Aug 19 04:15 . drwxrwxrwx 6 nobody nobody 4096 Aug 3 01:09 .. -rw-rw-rw- 1 twiki twiki 3716 Aug 19 02:19 .changes -rw-rw-rw- 1 twiki twiki 9 Aug 19 02:45 .mailnotify -rw-r--r-- 1 nobody nobody 358 Aug 18 17:22 OfficeLocations.txt -r--r--r-- 1 nobody nobody 878 Aug 18 17:22 OfficeLocations.txt,v -rw-r--r-- 1 nobody nobody 680 Aug 18 17:36 TWikiGuest.txt -r--r--r-- 1 nobody nobody 1989 Aug 18 17:36 TWikiGuest.txt,v -rw-r--r-- 1 nobody nobody 459 Aug 18 17:19 TWikiUsers.txt -r--r--r-- 1 nobody nobody 3840 Aug 18 17:19 TWikiUsers.txt,v -rw-r--r-- 1 nobody nobody 95 Aug 19 03:06 WebChanges.txt -r--r--r-- 1 nobody nobody 284 Aug 19 03:06 WebChanges.txt,v -rw-r--r-- 1 nobody nobody 1853 Aug 18 18:08 WebHome.txt -r--r--r-- 1 nobody nobody 6523 Aug 18 18:08 WebHome.txt,vDirectory
twiki/pub/
:
drwxrwxrwx 6 nobody nobody 4096 Aug 3 01:21 . drwxrwxr-x 3 twiki twiki 4096 Jun 17 16:35 .. drwxrwxrwx 3 nobody nobody 4096 Jun 17 16:35 Know drwxrwxrwx 3 nobody nobody 4096 Aug 3 01:21 TWiki -rw-rw-r-- 1 twiki twiki 1078 Jan 14 2000 favicon.ico drwxrwxr-x 2 twiki twiki 4096 Jun 17 16:35 icn -rw-rw-r-- 1 twiki twiki 3016 Oct 5 1999 twikilogo.gif -rw-rw-r-- 1 twiki twiki 5320 Oct 5 1999 twikilogo1.gif -rw-rw-r-- 1 twiki twiki 6125 Oct 5 1999 twikilogo2.gif -rw-rw-r-- 1 twiki twiki 7218 Oct 5 1999 twikilogo3.gif -rw-rw-r-- 1 twiki twiki 6710 Oct 5 1999 twikilogo4.gif -rw-rw-r-- 1 twiki twiki 3501 Sep 14 11:57 twikilogo88x31.gif -rw-rw-r-- 1 twiki twiki 2877 Jun 7 1999 wikiHome.gifPartial file list for
twiki/pub/icn/
:
drwxrwxr-x 2 twiki twiki 4096 Jun 17 16:35 . drwxrwxrwx 6 nobody nobody 4096 Aug 3 01:21 .. -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-- MikeMannix? - 14 Sep 2001
-- PeterThoeny? - 14 Sep 2001
Appendix B: TWiki Development Timeline
01-Dec-2001 Release (Athens)
- 25 Oct 2001 - PeterThoeny
- Added FormattedSearch to
%SEARCH{}%
variable for database like reporting.
- Added FormattedSearch to
01-Sep-2001 Release
- 30 Aug 2001 - JohnTalintyre
- Easier install for Windows, including auto detection in
TWiki.cfg
- Easier install for Windows, including auto detection in
- 30 Aug 2001 - JohnTalintyre
- Ability to move attachments between topics, see FileAttachments
- 21 Aug 2001 - PeterThoeny
- Convert to XHTML 1.0 function: first step to XHTML-ifying TWiki
- 26 Jun 2001 - JohnTalintyre
- Category information to forms using the TWikiMetaData format, see TWikiForms
- 07 Jun 2001 - PeterThoeny
- New topic templates as topics instead of templates. Customize by editing the topic. Retired
notedited.tmpl
,notext.tmpl
andnotwiki.tmpl
templates. More in TWikiTemplates.
- New topic templates as topics instead of templates. Customize by editing the topic. Retired
- 07 Jun 2001 - PeterThoeny
- New
%TOPICLIST{"format"}%
and%WEBLIST{"format"}%
variables to get a formatted topic index and web index, respectively. More in TWikiVariables.
- New
- 01 Jun 2001 - PeterThoeny
- New
%URLPARAM{"name"}%
variable to query URL parameters. More in TWikiVariables.
- New
- 01 Jun 2001 - AndreaSterbini
- API to extend TWiki, see TWikiPluginAPI
- 01 Jun 2001 - KlausWriessnegger, AndreaSterbini
- Forms to change/reset/install passwords, see ChangePassword & ResetPassword
- 01 May 2001 - AndreaSterbini
- The TWikiAdminGroup (or other group) can be enabled as a SuperAdminGroup. Members have browser edit access to all locked topics.
- 01 May 2001 - JohnTalintyre
- Meta information format, see TWikiMetaData
- 01 May 2001 - JohnTalintyre
- Attachment under revision control See FileAttachment
- 01 May 2001 - JohnTalintyre
- Ability to rename/move topics, ManagingTopics
- 27 Mar 2001 - PeterThoeny
- The table syntax has been enhanced to (i) render
| *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.
- The table syntax has been enhanced to (i) render
- 25 Mar 2001 - PeterThoeny
- Security fix Questionable files like PHP scripts (executables) and
.htaccess
files that are attached to a topic get a.txt
suffix appended to the file name. See also TWiki:Codev/FileAttachmentFilterSecurityAlert
- Security fix Questionable files like PHP scripts (executables) and
- 28 Feb 2001 - AndreaSterbini, PeterThoeny
- New Wiki rule for headings, i.e.
---++ My Title
; and new%TOC%
variable to build a table of content from headings in a topic. More in TWikiVariables.
- New Wiki rule for headings, i.e.
- 28 Feb 2001 - PeterThoeny
- New Wiki rule to specify arbitrary text for external links (i.e.
[[http://TWki.org][TWiki]]
) and internal links (i.e[[WikiSyntax][syntax]]
). More in TWikiVariables.
- New Wiki rule to specify arbitrary text for external links (i.e.
- 28 Feb 2001 - PeterThoeny
- New Wiki rule for named anchors, e.g. links within a topic. Define a named anchor with
#MyAnchor
at the beginning of a line, and link to it with[[#MyAnchor]]
. More in TWikiVariables.
- New Wiki rule for named anchors, e.g. links within a topic. Define a named anchor with
- 25 Feb 2001 - NicholasLee, PeterThoeny
- Use
Net::SMTP
module instead ofsendmail
if installed.
- Use
- 01 Feb 2001 - PeterThoeny
- Added
<verbatim>
...</verbatim>
tags to show source code "as is". Unlike the<pre>
...</pre>
tags, it also shows<
,>
,&
characters "as is".
- Added
- 01 Feb 2001 - PeterThoeny
- 21 Jan 2001 - PeterThoeny
- Added a "Minor change, don't notify" checkbox in preview. More in DontNotify.
- 21 Jan 2001 - PeterThoeny
- Added Bold Fixed formatting using double-equal signs, e.g. write
==Bold Fixed==
to getBold Fixed
.
- Added Bold Fixed formatting using double-equal signs, e.g. write
- 20 Jan 2001 - PeterThoeny
- Format changed of
%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!
- Format changed of
- 18 Jan 2001 - PeterThoeny
- WebChanges, WebSearch and e-mail notification indicate also the revision number of a topic (i.e. 18 Jan 2001 16:43 r1.5), or NEW for a new topic (i.e. i.e. 18 Jan 2001 16:43 NEW).
- 16 Jan 2001 - PeterThoeny
- New variable
%STARTINCLUDE%
and%STOPINCLUDE%
variables to control what gets included of a topic. More in TWikiVariables.
- New variable
- 16 Jan 2001 - PeterThoeny
- TWiki skins Define a different page layout with a customized header and footer layout, i.e. a
print
skin for a printable view of a topic. More in TWikiSkins and TWiki:Codev/TWikiSkins.
- TWiki skins Define a different page layout with a customized header and footer layout, i.e. a
- 07 Jan 2001 - StanleyKnutson
- Better error handling when saving a topic.
- 05 Jan 2001 - PeterThoeny
- View authorization based on groups. Define who is allowed to see a TWiki web. More in TWikiAccessControl and TWiki:Codev/AuthenticationBasedOnGroups.
- 05 Dec 2000 - PeterThoeny
- Improved include handling. Infinite recursion of includes are prevented; new variables
%BASEWEB%
,%INCLUDINGWEB%
,%BASETOPIC%
and%INCLUDINGTOPIC%
to have more control over include handling. More in TWikiVariables and TWiki:Codev/IncludeHandlingImprovements.
- Improved include handling. Infinite recursion of includes are prevented; new variables
- 03 Dec 2000 - PeterThoeny
- New
noheader="on"
switch in%SEARCH{...}%
to suppress table header. More in TWikiVariables.
- New
01-Dec-2000 Release
- 03 Nov 2000 - PeterThoeny
- Flag
$doHidePasswdInRegistration
inwikicfg.pm
to hide plain text password in registration email.
- Flag
- 01 Nov 2000 - PeterThoeny
- New variable
%VAR{"NAME" web="Web"}%
to get web specific preferences. More in TWikiVariables.
- New variable
- 01 Nov 2000 - PeterThoeny
- Added a "Cancel" link in edit that releases the edit lock.
- 23 Oct 2000 - PeterThoeny
- Authorization based on groups. Define fine graned control who is allowed to change or create topics. More in TWikiAccessControl and TWiki:Codev/AuthenticationBasedOnGroups.
- 05 Oct 2000 - PeterThoeny
- Remember user by IP address so that
view
"knows" the user once authenticated inedit
. More in TWikiUserAuthentication.
- Remember user by IP address so that
- 26 Sep 2000 - AlWilliams, PeterThoeny
- Fixed TWiki:Codev/UppercaseAttachments bug and added
png
image support.
- Fixed TWiki:Codev/UppercaseAttachments bug and added
- 26 Sep 2000 - HaroldGottschalk, AndreaSterbini, PeterThoeny
- Allow nesting of variables, i.e.
%INCLUDE{"%TWIKIWEB%.TWikiWebsTable"}%
. More in TWiki:Codev/BetterTWikiTagTemplateProcessing.
- Allow nesting of variables, i.e.
- 20 Sep 2000 - ManpreetSingh
- New -q switch in
mailnotify
to suppress all normal output.
- New -q switch in
- 19 Sep 2000 - PeterThoeny
- 18 Sep 2000 - ManpreetSingh, PeterThoeny
- Added forced internal links. Write
[[text formatting FAQ]]
to get the link text formatting FAQ that points to topic TextFormattingFAQ.
- Added forced internal links. Write
- 19 Aug 2000 - PeterThoeny
- Ref-By link searches all webs (not just the current web.)
- 16 Aug 2000 - PeterThoeny
- New TWikiPreferences variables
%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.
- New TWikiPreferences variables
- 29 Jul 2000 - PeterThoeny
- New variables
%GMTIME{"..."}%
and%SERVERTIME{"..."}%
. More in TWikiVariables.
- New variables
- 23 Jul 2000 - PeterThoeny
- Changed include syntax from
%INCLUDE{"Web/TopicName.txt"}%
to%INCLUDE{"Web.TopicName"}%
. Legacy syntax still supported.
- Changed include syntax from
- 23 Jul 2000 - PeterThoeny
- BookView search allows you show a set of topics for easy printing.
- 22 Jul 2000 - PeterThoeny
- More forgiving syntax for
*bold*, italic, __bold italic__
andfixed
, where it is not necessary anymore to have a trailing space before.,;:?!
characters.
- More forgiving syntax for
- 22 Jul 2000 - PeterThoeny
- Split the TWiki.Main web into TWiki.Main (users, company data) and TWiki.TWiki (TWiki related documentation, registration)
- 07 Jul 2000 - PeterThoeny
- Added an "Release edit lock" checkbox in preview to let other people edit the topic immediately without the one hour lock.
- 07 Jul 2000 - PeterThoeny
- Fixed problem of losing carriage returns when editing topics with KDE KFM browser or W3M browser.
- 21 Jun 2000 - PeterThoeny
- Fixed problem that a page redirect on some server environments is not working (host name is needed in URL).
- 21 Jun 2000 - CrisBailiff, PeterThoeny
- Fixed security issue to prevent a server side
%INCLUDE%
of arbitrary files.
- Fixed security issue to prevent a server side
- 29 May 2000 - PeterThoeny
- New
%GMTIME%
variable that shows the current GM time.
- New
- 28 May 2000 - PeterThoeny
- Lock warning shows remaining lock time in minutes.
- 15 May 2000 - PeterFokkinga
- Each topic can have its own template file. TWikiTemplatesVer1? has more.
- 02 May 2000 - KevinKinnell, PeterThoeny
- Advanced search features like search multiple webs; sort by topic name / modified time / author; limit the number of results returned. More in TWikiVariables.
01-May-2000 Release
- 21 Apr 2000 - PeterThoeny
- New TWikiVariables
%HTTP_HOST%
,%REMOTE_ADDR%
,%REMOTE_PORT%
and%REMOTE_USER%
.
- New TWikiVariables
- 21 Apr 2000 - JohnAltstadt, PeterThoeny
- TWikiRegistration is done separately for Intranet use (depends on remote_user) or Internet use (depends on .htpasswd file).
- 20 Mar 2000 - PeterThoeny
- Uploading a file (topic file attachment) will optionally create a link to the uploaded file at the end of the topic. The preference variable
%ATTACHLINKBOX%
controls the default state of the link check box in the attach file page.
- Uploading a file (topic file attachment) will optionally create a link to the uploaded file at the end of the topic. The preference variable
- 11 Mar 2000 - PeterThoeny
- Better security with taint checking (
Perl -T
option )
- Better security with taint checking (
- 25 Feb 2000 - PeterThoeny
- New preference variables
%EDITBOXWIDTH%
and%EDITBOXHEIGHT%
to specify the edit box size.
- New preference variables
- 25 Feb 2000 - PeterThoeny
- Edit preferences topics to set TWiki variables. There are three level of preferences Site-level (TWikiPreferences), web-level (WebPreferences in each web) and user-level preferences (for each of the TWikiUsers). With this, discontinue use of server side include of
wikiwebs.inc
,wikiwebtable.inc
,weblist.inc
,webcopyright.inc
andwebcolors.inc
files.
- Edit preferences topics to set TWiki variables. There are three level of preferences Site-level (TWikiPreferences), web-level (WebPreferences in each web) and user-level preferences (for each of the TWikiUsers). With this, discontinue use of server side include of
- 11 Feb 2000 - PeterThoeny
- New variable
%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".
- New variable
- 11 Feb 2000 - PeterThoeny
- New variable
%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.
- New variable
- 07 Feb 2000 - PeterThoeny
- Changed the syntax for server side include variable from
%INCLUDE:"filename.ext"%
to%INCLUDE{"filename.ext"}%
. (Previous syntax still supported. Change was done because of inline search syntax)
- Changed the syntax for server side include variable from
- 07 Feb 2000 - PeterThoeny
- Inline search. New variable
%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.
- Inline search. New variable
- 04 Feb 2000 - PeterThoeny
- Access statistics. Each web has a WebStatistics topic that shows monthy statistics with number of topic views and changes, most popular topics, and top contributors. (It needs to be enabled, TWikiDocumentation has more.)
- 29 Jan 2000 - PeterThoeny
- Fixed bug where TWiki would not initialize correctly under certain circumstances, i.e. when running it under mod_perl. Sub
initialize
inwiki.pm
did not handle$thePathInfo
correctly.
- Fixed bug where TWiki would not initialize correctly under certain circumstances, i.e. when running it under mod_perl. Sub
- 24 Jan 2000 - PeterThoeny
- Fixed bug where an email address starting with a WikiName was rendered as an internal Wiki link instead of an email address, i.e. SomeWikiName@somewhere.test .
- 10 Jan 2000 - PeterThoeny
- No more escaping for '%' percent characters. (Number of consecutive '%' entered and displayed is identical.)
- 03 Oct 1999 - PeterThoeny
01-Sep-1999 Release
- 31 Aug 1999 - PeterThoeny
- Fixed Y2K bug. (Date in year 2000 had wrong format.)
- 08 Aug 1999 - PeterThoeny
- New text formatting rule for creating tables. Text gets rendered as a table if enclosed in " " vertical bars. Example line as it is written and how it shows up
- 03 Aug 1999 - PeterThoeny
- Online registration of new user using web form in TWikiRegistration. Authentication of users.
- 22 Jul 1999 - PeterThoeny
- Flags
$doLogTopic*
in wikicfg.pm to selectively log topic view, edit, save, rdiff, attach, search and changes to monthly log file.
- Flags
- 21 Jul 1999 - PeterThoeny
- Flag
$doRemovePortNumber
in wikicfg.pm to optionally remove the port number from the TWiki URL. Examplewww.some.domain:1234/twiki
getswww.some.domain/twiki
.
- Flag
- 15 Jul 1999 - PeterThoeny
- Search path for include files in
%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 examplewebcopyright.inc
text.
- Search path for include files in
- 07 Jul 1999 - ChristopheVermeulen
- Link a plural topic to a singular topic in case the plural topic does not exist. Example
TestVersion
/TestVersions
,TestPolicy
/TestPolicies
,TestAddress
/TestAddresses
,TestBox
/TestBoxes
.
- Link a plural topic to a singular topic in case the plural topic does not exist. Example
01-Jul-1999 Release
- 23 Jun 1999 - PeterThoeny
- New TextFormattingRules to write bold italic text by enclosing words with double underline characters.
- 23 Jun 1999 - PeterThoeny
- Separate wiki.pm into configuration (wikicfg.pm) and TWiki core (wiki.pm) . This is to ease the upgrade of TWiki installations, it also allows customized extensions to TWiki without affecting the TWiki core.
- 21 May 1999 - DavidWarman
- Externalize copyright text at the bottom of every page into a web-specific
webcopyright.inc
file. This is to easily customize the copyright text.
- Externalize copyright text at the bottom of every page into a web-specific
- 20 May 1999 - PeterThoeny
- Added meta tag so that robots index only /view/ of topics, not /edit/, /attach/ e.t.c. Tag <META NAME="ROBOTS" CONTENT="NOINDEX">
- 20 May 1999 - PeterThoeny
- New variables
%WIKIHOMEURL%
(link when pressing the icon on the upper left corner) and%WIKITOOLNAME%
(the name of the wiki toolnetfrag.org
).
- New variables
- 15 Apr 1999 - PeterThoeny
- Topic locking Warn user if a topic has been edited by an other person within one hour. This is to prevent contention, e.g. simultaneous topic updates.
- 26 Mar 1999 - PeterThoeny
- File attachments Upload and download any file as a topic attachment by using the browser. FileAttachment has more.
- 26 Mar 1999 - PeterThoeny
- New variables
%PUBURL%
(Public directory URL) and%ATTACHURL%
(URL of topic file attachment).
- New variables
- 09 Feb 1999 - PeterThoeny
- New text formatting rule for creating
fixed font text
. Words get showns infixed font
by enclosing them in "=" equal signs. Example Writing =fixed font= will show up asfixed font
.
- New text formatting rule for creating
- 09 Feb 1999 - PeterThoeny
- No new topic revision is created if the same person saves a topic again within one hour.
- 03 Feb 1999 - PeterThoeny
- Possible to view complete revision history of a topic on one page. Access at the linked date in the Changes page, or the
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
- Possible to view complete revision history of a topic on one page. Access at the linked date in the Changes page, or the
- 04 Jan 1999 - PeterThoeny
- Fixed bug when viewing differences between topic revisions that include HTML table tags like <table>, <tr>, <td>.
1998 Releases
- 08 Dec 1998 - PeterThoeny
- Signature is shown below the text area when editing a topic. Use this to easily copy & paste your signature into the text.
- 07 Dec 1998 - PeterThoeny
- Possible to add a category table to a TWiki topic. This permits storing and searching for more structured information. Editing a topic shows a HTML form with the usual text area and a table with selectors, checkboxes, radio buttons and text fields. TWikiDocumentation has more on setup. The TWiki.Know web uses this category table to set classification, platform and OS version.
- 18 Nov 1998 - PeterThoeny
- Internal log of topic save actions to the file
data/logYYYYMM.txt
, whereYYYYMM
the year and month in numeric format is. Intended for auditing only, not accessible from the web.
- Internal log of topic save actions to the file
- 10 Nov 1998 - PeterThoeny
- The email notification and the Changes topic have now a topic date that is linked. Clicking on the link will show the difference between the two most recent topic revisions.
- 10 Nov 1998 - PeterThoeny
- View differences between topic revisions. Each topic has a list of revisions (e.g.
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 PeterThoeny
- View differences between topic revisions. Each topic has a list of revisions (e.g.
- 26 Oct 1998 - PeterThoeny
- Added preview of topic changes before saving the topic. This was necessary to prevent unneeded revisions.
- 26 Oct 1998 - PeterThoeny
- Added revision control using RCS. Each topic has now a list of revisions at the bottom and a revision info, e.g.
Topic TWikiHistory . { Edit Ref-By r1.3 r1.2 r1.1 }
Revision r1.3 1998/10/26 01:34:00 by PeterThoeny
- Added revision control using RCS. Each topic has now a list of revisions at the bottom and a revision info, e.g.
- 14 Oct 1998 - PeterThoeny
- Refered-By Find out which topics have a link to the current topic. Each topic has a Ref-By link for that. Note Only references from the current web are shown, not references from other webs.
- 13 Oct 1998 - PeterThoeny
- Alphabetical topic index in WebSearch.
- 24 Sep 1998 - PeterThoeny
- Corrected templates for automatic email notification so that MS Outlook can display attachment as an HTML file.
- 13 Aug 1998 - PeterThoeny
- WikiNotation allows also numbers after the
AaA
sequence, e.g.AaA1
is a valid WikiTopic name, but notAa1
.
- WikiNotation allows also numbers after the
- 07 Aug 1998 - PeterThoeny
- Automatic email notification when something has changed in a TWiki web. Each web has a topic WebNotify where one can subscribe and unsubscribe.
- 06 Aug 1998 - PeterThoeny
- Added server side include of files. Syntax is
%INCLUDE:"filename.ext"%
- Added server side include of files. Syntax is
- 05 Aug 1998 - PeterThoeny
- Signature and date is inserted automatically when creating a new topic.
- 04 Aug 1998 - PeterThoeny
- Separate templates for text of non existing topic and default text of new topic. (template file templates/Web/notedited.tmpl)
- 04 Aug 1998 - PeterThoeny
- Warn user if new topic name is not a valid Wiki name. (template file templates/Web/notwiki.tmpl)
- 31 Jul 1998 - PeterThoeny
- Support for quoted text with a '>' at the beginning of the line.
- 28 Jul 1998 - PeterThoeny
- Added TWiki variables, enclosed in % signs
%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).
- Added TWiki variables, enclosed in % signs
- 28 Jul 1998 - PeterThoeny
- Topic WebChanges shows Wiki username instead of Intranet username, e.g.
PeterThoeny
instead ofthoeny
in case the Wiki username exists. Implementation Automatic lookup of Wiki username in topic TWikiUsers.
- Topic WebChanges shows Wiki username instead of Intranet username, e.g.
- 28 Jul 1998 - PeterThoeny
- Topic index. (Technically speaking a simple '.*' search on topic names.)
- 28 Jul 1998 - PeterThoeny
- Topic WebSearch allows full text search and and topic search with/without regular expressions.
- 27 Jul 1998 - PeterThoeny
- Added automatic links to topics in other TWiki webs by specifying <web name>.<topic name>, e.g.
Know.WebSeach
.
- Added automatic links to topics in other TWiki webs by specifying <web name>.<topic name>, e.g.
- 23 Jul 1998 - PeterThoeny
- Installed initial version, based on the JOS Wiki. See WikiWikiClones for details.
Dev Flow
The typical TWiki development flow...- TWiki:Codev/FeatureBrainstorming: open forum for new ideas
- TWiki:Codev/TWikiEnhancementRequests: specific detailed request
- TWiki:Codev/TWikiPlannedFeatures: accepted for future development
- TWiki:Codev/FeatureToDo: prioritized to up-next dev status
- TWiki:Codev/FeatureUnderConstruction: currently in development
- TWiki:Codev/FeatureDone: completed and implemented
- TWiki:Codev/DocRequest: request for documentation
- TWiki:Codev/DocsToDo: feature documentation pending
- TWiki:Codev/FeatureDocumented: documented feature
- TWikiDocumentation: reference manual for the latest TWiki