(4) TWiki Category Table
It is possible to add a category table to a TWiki web. 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. The category table is shown at the end of a topic. The format of the category table can be defined per TWiki web.
If you want to use a Category Table in a TWiki web you need to have the following three files in the twiki/templates/{Yourweb} directory:
- twikicatitems.tmpl : Defines the items in the table
- twikicatedit.tmpl : Defines the look of the table when editing a topic
- twikicatview.tmpl : Defines the look of the table when viewing a topic
Format of category definition template twikicatitems.tmpl
Valid lines:
select|{name}|{selSize}|{val1}|{val2}|{val3}...
checkbox|{name}|{checkFlag}|{itemsPerLine}|{val1}|{val2}|{val3}...
radio|{name}|{itemsPerLine}|{val1}|{val2}|{val3}...
text|{name}|{charSize}
# comments start with a # character
Explanation:
{name} name of tag
{selSize} vertical size of SELECT tag
{val1}|{val2}... values
{checkFlag} set to true for [Set] [Clear] buttons, else set to false
{itemsPerLine} input items per line before wrap around, 0 if no wrap around
{charSize} number of characters for text fields
Remark: Line radio|UseCategory|0|Yes|No
has a special meaning. If present, it is possible to choose in "edit" if the category table is included in the topic or not
Example file:
radio|UseCategory|0|Yes|No, delete this category table
select|TopicClassification|1|Select one...|NoDisclosure|PublicSupported|PublicFAQ
checkbox|OperatingSystem|true|5|OsSolaris|OsSunOS|OsHPUX|OsWin
text|OsVersion|16
Format of twikicatedit.tmpl and twikicatview.tmpl
Use the example below and customize if needed. twikicatedit.tmpl and twikicatview.tmpl can be identical, but they do not have to be.
Attention: <!--TWikiCat-->
is needed at the beginning and end as markers. Do not delete them!
Example:
<!--TWikiCat--> <h4> TWikiCategory </h4>
<table border="2" cellspacing="1" cellpadding="1">
%REPEAT%<tr>
<td valign="top" align="right"> %CATNAME%: <br>%CATMODIFIER%</td><td> %CATVALUE% </td>
</tr>%REPEAT%
</table><!--TWikiCat-->
Above template files will result in the following category table when viewing a topic:
File: | Used for: |
.htaccess.txt | Authentication. Rename to .htaccess and customize if used |
attach | Script that shows the attach file page (FileAttachment) |
changes | Script that shows recent changes |
delete | (not used yet) |
edit | Script to edit a topic |
mailnotify | Script called by cron job to notify users of changes |
oops | Script that shows a OK or oops dialog |
preview | Script to preview topic after edit |
rdiff | Script to see differences of topics |
register | Script to register new users |
save | Script that saves a topic, called by preview |
search | Script that displays search results |
upload | Script that does file upload (FileAttachment) |
view | Script to view a topic ( the script ) |
viewfile | Script to view an file attachment |
wiki.pm | main TWiki library |
wikicfg.pm | for initialization and configuration, used by wiki.pm |
(6) Installation Notes
These installation steps use Apache web server on Linux as an example. TWiki should run on other web servers and Unix systems as well.
Note: These installation notes assume user nobody
for all files manupulated by the cgi scripts (executed by the web server), and user twiki
for all other files. You need to replace user nobody
with an other user in case the web server executes the script with a different user ( default for Debian is www-data
). Also, you can substitute user twiki
with your own user name.
- Request the TWiki distribution (in Unix ZIP format) from http://www.mindspring.net/~peterthoeny/twiki/index.html .
- Create directory
/home/httpd/twiki
and unzip the TWiki distribution to this directory.
- The
twiki/bin
directory of TWiki must be set as a cgi-bin directory. Add /home/httpd/twiki/bin
to /etc/httpd/conf/access.conf
with only ExecCGI
option.
- The
twiki/pub
directory of TWiki must be set so that it is visible as a URL. Add /home/httpd/twiki/pub
to /etc/httpd/conf/access.conf
with normal access options (copy from /home/httpd/html).
- Now add
Alias
for /twiki/pub
and ScriptAlias
for /twiki/bin
to /etc/httpd/conf/srm-conf
.
- Restart Apache by
/etc/rc.d/rc5.d/S85httpd restart
.
- Test if the
twiki/bin
directory is cgi-enabled: Enter the URL of that directory into your browser (http://your.domain.com/twiki/bin). It is not set correctly as cgi-bin in case you get something like "Index of /twiki/bin"
. It is OK if you get a message like "Forbidden. You don't have permission to access /twiki/bin/ on this server."
.
- Make sure PERL and the PERL CGI library is installed on your system. Default location of PERL executable is
/usr/bin/perl
. In case PERL is installed in a different location, the first line of all perl scripts in the twiki/bin
directory need to be changed (alternatively you can create a symbolic link from /usr/bin/perl
).
- To be able to edit the perl scripts and .tmpl files it is necessary to
chown
and chgrp -R twiki
so all the files have the owner you want.
- The scripts execute as
nobody
. Set the file permission of all Perl scripts in the twiki/bin
directory as executable to -rw-r-xr-x
.
- Set the file permission of all files below
twiki/data
to 666 ( -rw-rw-rw-
).
- Set the file permission of the
twiki/data
directory and all its subdirectories to 777 ( drwxrwxrwx
).
- Set the file permission of the
twiki/pub
directory to 777 ( drwxrwxrwx
).
- Edit the file
twiki/bin/wikicfg.pm
and set the variables at the beginning of the file to your needs.
- Make sure RCS is installed. In case RCS is not in the
path
environment variable, add it to path
. Alternatively, add the full path name to the rcs, ci, co, rlog, rcsdiff
commands in the variables of twiki/bin/wikicfg.pm
.
- Point your browser at http://your.domain.com/twiki/bin/view and start wiki-ing away!
- Note in case cgi user is not
nobody
: The *,v
RCS repository files delivered with the installation package are locked by user nobody
. In case the user is different (e.g. www-data
), it is not possible to check in files, this has the effect that the topic version number does not increase when saving a topic. In this case you need to unlock all repository files and lock them as user www-data
, or simply delete all the repository files.
- 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 directries to a place where they are not visible, and change the variables in twiki/bin/wikicfg.pm
accordingly)
- Optional: You can add new rendering rules or new %variables%. To insure an easy upgrade of TWiki it is recommended to do this customization in
twiki/bin/wikicfg.pm
, not twiki/bin/wiki.pm
.
- Optional: If you are on a public server and you would like to authenticate users you need to rename file
.htaccess.txt
in the twiki/bin
directory to .htaccess
and change it to your needs. Consult the HTTP server documentation for details.
- To create a new web:
- Use a topic name consisting of characters
A..Z
, a..z
but not in WikiNotation.
- Create a new template directory under
twiki/templates
.
- Create a new data directory under
twiki/data
and check the file permission of the directory.
- Copy the files TWikiUsers?.txt, WebHome.txt, WebNotify.txt, WebSearch.txt, webcolor.inc, and weblist.inc from the
twiki/data/Main
directory to the new data directory.
- Make changes to webcolor.inc (unique color for web), and possibly also weblist.inc (web specific links on top).
- In case you need a web specific copyright notice (at the bottom), copy file webcopyright.inc from the
twiki/data
directory to the new data directory, and customize it.
- If needed, create customized templates in the new templates directory. (Non existing templates are inherited from
twiki/templates
)
- If you want to use a category table, copy the three files twikicatitems.tmpl, twikicatedit.tmpl and twikicatview.tmpl from the
twiki/templates/Know
directory to the new templates directory, and customize it. The TWiki Category Table section has more.
Here are contents of directories with file permissions. Please note that this is for debugging reasons only and does not exactly reflect the distribution:
directory twiki/bin
:
drwxr-xr-x 5 twiki t5 512 Nov 11 02:52 .
drwxr-xr-x 5 twiki t5 512 Nov 6 02:57 ..
-rw-r--r-- 1 twiki t5 430 Oct 21 18:51 .htaccess
-rw-r-xr-x 1 twiki t5 3752 Mar 27 02:21 attach
-rw-r-xr-x 1 twiki t5 2810 Oct 21 18:51 changes
-rw-r-xr-x 1 twiki t5 1244 Mar 27 02:21 delete
-rw-r-xr-x 1 twiki t5 2589 Nov 6 03:05 edit
-rwxr-xr-x 1 twiki t5 4614 Oct 21 18:52 mailnotify
-rw-r-xr-x 1 twiki t5 1353 Oct 23 20:19 oops
-rw-r-xr-x 1 twiki t5 2043 Nov 6 03:05 preview
-rw-r-xr-x 1 twiki t5 6249 Aug 3 04:34 register
-rw-r-xr-x 1 twiki t5 6890 Nov 11 03:06 rdiff
-rw-r-xr-x 1 twiki t5 1819 Nov 6 03:06 save
-rw-r-xr-x 1 twiki t5 3174 Oct 21 18:51 search
-rw-r-xr-x 1 twiki t5 6696 Mar 27 02:22 upload
-rw-r-xr-x 1 twiki t5 3878 Nov 11 03:06 view
-rw-r-xr-x 1 twiki t5 1538 Mar 27 02:22 viewfile
-rw-r-xr-x 1 twiki t5 16169 Nov 7 01:43 wiki.pm
-rw-r-xr-x 1 twiki t5 3945 Jun 23 01:24 wikicfg.pm
directory twiki/templates/
:
drwxr-xr-x 6 twiki t5 512 Nov 4 20:34 .
drwxr-xr-x 5 twiki t5 512 Nov 11 02:52 ..
drwxr-xr-x 2 twiki t5 512 Oct 23 20:57 Know
drwxr-xr-x 2 twiki t5 512 Nov 4 20:35 Main
-rw-r--r-- 1 twiki t5 2232 Mar 27 02:03 attach.tmpl
-rw-r--r-- 1 twiki t5 1200 Mar 27 02:03 attachtable.tmpl
-rw-r--r-- 1 twiki t5 1751 Nov 11 02:41 changes.tmpl
-rw-r--r-- 1 twiki t5 1711 Nov 6 03:01 edit.tmpl
-rw-r--r-- 1 twiki t5 896 Oct 21 18:51 mailnotify.tmpl
-rw-r--r-- 1 twiki t5 25 Oct 21 18:51 notedited.tmpl
-rw-r--r-- 1 twiki t5 21 Oct 21 18:51 notext.tmpl
-rw-r--r-- 1 twiki t5 157 Oct 23 21:05 notwiki.tmpl
-rw-r--r-- 1 twiki t5 218 Oct 23 20:06 noweb.tmpl
-rw-r--r-- 1 twiki t5 279 Oct 23 20:29 oops.tmpl
-rw-r--r-- 1 twiki t5 833 Mar 27 02:03 oopsdel.tmpl
-rw-r--r-- 1 twiki t5 1331 Oct 23 20:29 oopslocked.tmpl
-rw-r--r-- 1 twiki t5 1026 Aug 03 08:21 oopsregexist.tmpl
-rw-r--r-- 1 twiki t5 935 Aug 03 08:23 oopsregpasswd.tmpl
-rw-r--r-- 1 twiki t5 924 Aug 03 08:26 oopsregrequ.tmpl
-rw-r--r-- 1 twiki t5 931 Aug 03 08:29 oopsregwiki.tmpl
-rw-r--r-- 1 twiki t5 868 Mar 27 02:03 oopsupload.tmpl
-rw-r--r-- 1 twiki t5 2010 Nov 6 03:01 preview.tmpl
-rw-r--r-- 1 twiki t5 1501 Nov 12 22:56 rdiff.tmpl
-rw-r--r-- 1 twiki t5 263 Aug 3 02:44 register.tmpl
-rw-r--r-- 1 twiki t5 1548 Oct 23 21:10 search.tmpl
-rw-r--r-- 1 twiki t5 1541 Oct 26 21:07 view.tmpl
directory twiki/templates/Main
:
drwxr-xr-x 2 twiki t5 512 Nov 4 20:35 .
drwxr-xr-x 6 twiki t5 512 Nov 4 20:34 ..
-rw-r--r-- 1 twiki t5 2328 Nov 6 03:03 edit.tmpl
directory twiki/templates/Know
(has a TWiki Category Table) :
drwxr-xr-x 2 twiki t5 512 Nov 4 20:35 .
drwxr-xr-x 6 twiki t5 512 Nov 4 20:34 ..
-rw-r--r-- 1 twiki t5 611 Dec 7 20:59 notedited.tmpl
-rw-r--r-- 1 twiki t5 210 Dec 24 23:22 twikicatedit.tmpl
-rw-r--r-- 1 twiki t5 1887 Jan 6 20:54 twikicatitems.tmpl
-rw-r--r-- 1 twiki t5 245 Dec 24 23:27 twikicatview.tmpl
directory twiki/data/
:
drwxrwxrwx 6 twiki t5 512 Nov 19 01:01 .
drwxr-xr-x 5 twiki t5 512 Nov 11 02:52 ..
drwxrwxrwx 2 twiki t5 9216 Nov 13 13:55 Know
drwxrwxrwx 2 twiki t5 4608 Nov 15 21:42 Main
-rw-r--r-- 1 nobody 65535 53 Aug 03 08:31 .htpasswd
-rw-rw-rw- 1 twiki t5 1091 Nov 6 04:15 debug.txt
-rw-r--r-- 1 nobody 65535 4153 Nov 19 01:01 log199810.txt
-rw-r--r-- 1 nobody 65535 7189 Nov 19 01:01 log199811.txt
-rw-r--r-- 1 twiki t5 2356 Oct 22 00:56 webcopyright.inc
-rw-r--r-- 1 twiki t5 276 Oct 22 00:28 wikiwebs.inc
-rw-r--r-- 1 twiki t5 1484 Oct 22 01:11 wikiwebtable.inc
part of directory twiki/data/Main
:
drwxrwxrwx 2 twiki t5 4608 Nov 19 00:56 .
drwxrwxrwx 6 twiki t5 512 Nov 19 01:01 ..
-rw-rw-rw- 1 twiki t5 5974 Nov 15 21:42 .changes
-rw-rw-rw- 1 twiki t5 9 Nov 15 23:00 .mailnotify
-rw-r--r-- 1 nobody 65535 3991 Jul 22 04:33 FileAttachment.txt
-r--r--r-- 1 nobody 65535 4173 Jul 22 04:33 FileAttachment.txt,v
-rw-r--r-- 1 nobody 65535 6773 Aug 5 16:18 TWikiRegistration.txt
-r--r--r-- 1 nobody 65535 6960 Aug 5 16:18 TWikiRegistration.txt,v
-rw-r--r-- 1 nobody 65535 1990 Nov 6 18:25 TWikiUsers.txt
-r--r--r-- 1 nobody 65535 3045 Nov 6 18:25 TWikiUsers.txt,v
-rw-r--r-- 1 nobody 65535 1181 Oct 29 20:54 WebHome.txt
-r--r--r-- 1 nobody 65535 1537 Oct 29 20:54 WebHome.txt,v
-rw-r--r-- 1 nobody 65535 454 Oct 21 18:52 WebNotify.txt
-r--r--r-- 1 nobody 65535 638 Oct 27 02:45 WebNotify.txt,v
-rw-r--r-- 1 nobody 65535 3653 Oct 21 18:52 WebSearch.txt
-r--r--r-- 1 nobody 65535 3835 Oct 27 02:45 WebSearch.txt,v
-rw-r--r-- 1 twiki t5 7 Oct 21 18:52 webcolor.inc
-rw-r--r-- 1 twiki t5 278 May 20 17:42 webcopyright.inc
-rw-r--r-- 1 twiki t5 402 Oct 26 07:45 weblist.inc
directory twiki/pub/
:
drwxrwxrwx 4 twiki t5 1024 Mar 27 02:58 .
drwxr-xr-x 4 twiki t5 1024 Mar 27 02:08 ..
drwxrwxrwx 4 nobody nobody 1024 Mar 27 03:54 Main
-rw-r--r-- 1 twiki t5 2877 Mar 27 02:27 wikiHome.gif
drwxr-xr-x 2 twiki t5 1024 Mar 27 03:17 icn
directory twiki/pub/icn/
:
drwxr-xr-x 2 twiki t5 1024 Mar 27 03:17 .
drwxrwxrwx 4 twiki t5 1024 Mar 27 02:58 ..
-rw-r--r-- 1 twiki t5 801 Mar 27 03:02 _filetypes.txt
-rw-r--r-- 1 twiki t5 143 Mar 27 03:16 bat.gif
-rw-r--r-- 1 twiki t5 926 Mar 27 03:16 bmp.gif
-rw-r--r-- 1 twiki t5 141 Mar 27 03:16 c.gif
-rw-r--r-- 1 twiki t5 144 Mar 27 03:16 dll.gif
-rw-r--r-- 1 twiki t5 152 Mar 27 03:16 doc.gif
-rw-r--r-- 1 twiki t5 130 Mar 27 03:16 else.gif
-rw-r--r-- 1 twiki t5 876 Mar 27 03:16 exe.gif
-rw-r--r-- 1 twiki t5 147 Mar 27 03:16 fon.gif
-rw-r--r-- 1 twiki t5 142 Mar 27 03:16 h.gif
-rw-r--r-- 1 twiki t5 156 Mar 27 03:16 hlp.gif
-rw-r--r-- 1 twiki t5 186 Mar 27 03:16 html.gif
-rw-r--r-- 1 twiki t5 144 Mar 27 03:16 java.gif
-rw-r--r-- 1 twiki t5 148 Mar 27 03:16 mov.gif
-rw-r--r-- 1 twiki t5 150 Mar 27 03:16 pdf.gif
-rw-r--r-- 1 twiki t5 146 Mar 27 03:16 pl.gif
-rw-r--r-- 1 twiki t5 150 Mar 27 03:16 ppt.gif
-rw-r--r-- 1 twiki t5 148 Mar 27 03:16 ps.gif
-rw-r--r-- 1 twiki t5 148 Mar 27 03:16 py.gif
-rw-r--r-- 1 twiki t5 130 Mar 27 03:17 ram.gif
-rw-r--r-- 1 twiki t5 154 Mar 27 03:17 reg.gif
-rw-r--r-- 1 twiki t5 147 Mar 27 03:17 sh.gif
-rw-r--r-- 1 twiki t5 155 Mar 27 03:17 sniff.gif
-rw-r--r-- 1 twiki t5 149 Mar 27 03:17 ttf.gif
-rw-r--r-- 1 twiki t5 134 Mar 27 03:17 txt.gif
-rw-r--r-- 1 twiki t5 154 Mar 27 03:17 wav.gif
-rw-r--r-- 1 twiki t5 152 Mar 27 03:17 wri.gif
-rw-r--r-- 1 twiki t5 152 Mar 27 03:17 xls.gif
-rw-r--r-- 1 twiki t5 144 Mar 27 03:17 zip.gif
-- PeterThoeny? - 22 Oct 1998
-- PeterThoeny? - 18 Nov 1998
-- PeterThoeny? - 11 Jan 1999
-- PeterThoeny? - 20 Jan 1999
-- PeterThoeny? - 06 Mar 1999
-- PeterThoeny? - 27 Mar 1999
-- PeterThoeny? - 02 Jun 1999
-- PeterThoeny? - 14 Jun 1999
-- PeterThoeny? - 23 Jun 1999
-- PeterThoeny? - 01 Sep 1999
-- PeterThoeny? - 29 Sep 1999
-- PeterThoeny? - 14 Jan 2000