</ul>
</div>
-## <a name="TWiki Access Control"></a> TWiki Access Control
+# <a name="TWiki Access Control"></a> TWiki Access Control
_Restricting read and write access to topics and webs, by users and groups_
-### <a name="Overview"></a> Overview
+## <a name="Overview"></a> Overview
[[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|Main/TWikiDocumentation#TWiki_User_Authentication]], let you easily create and manage an extremely flexible, fine-grained privilege system.
-### <a name="An Important Control Considerati"></a> An Important Control Consideration
+## <a name="An Important Control Considerati"></a> 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:
- Create broad groups (more and varied input), and...
- Avoid creating view-only users (if you can read it, you can contribute to it).
-### <a name="Users and Groups"></a> Users and Groups
+## <a name="Users and Groups"></a> 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.
-#### <a name="Managing Users"></a> Managing Users
+### <a name="Managing Users"></a> Managing Users
A user is created by with the [TWikiRegistration](%SCRIPTULRPATH%/view/TWiki/TWikiRegistration) form. The process generates a topic in the Main web in the new user's [[WikiName]]. The default visitor name is [[TWikiGuest]].
<a name="ManagingGroups"></a>
-#### <a name="Managing Groups"></a> Managing Groups
+### <a name="Managing Groups"></a> Managing Groups
Groups are defined by group topics in the <code>**Main**</code> web, like the [[TWikiAdminGroup]]. To start a new group:
- - 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,<br />` * Set ALLOWTOPICCHANGE = Main.TWikiAdminGroup`<br /> for the TWikiAdminGroup topic. (This prevents users not in the group from editing the topic and from gaining unauthorized membership to the group.)
-### <a name="Restricting Write Access"></a> Restricting Write Access
+## <a name="Restricting Write Access"></a> Restricting Write Access
You can define who is allowed to make changes to a web or a topic.
-#### <a name="Deny Editing by Topic"></a> Deny Editing by Topic
+### <a name="Deny Editing by Topic"></a> Deny Editing by Topic
Denying editing of a topic also restricts attaching files to it; both privileges are assigned together.
- 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.
-#### <a name="Deny Editing by Web"></a> Deny Editing by Web
+### <a name="Deny Editing by Web"></a> Deny Editing by Web
Restricting web-level editing blocks creating new topics, changing topics or attaching files.
- DENYTOPICCHANGE (in topic) overrides DENYWEBCHANGE (in WebPreferences)
- ALLOWTOPICCHANGE (in topic) overrides ALLOWWEBCHANGE (in WebPreferences)
-### <a name="Restricting Rename Access"></a> Restricting Rename Access
+## <a name="Restricting Rename Access"></a> Restricting Rename Access
You can define who is allowed to rename, move or delete a topic, or rename a web.
-#### <a name="Deny Renaming by Topic"></a> Deny Renaming by Topic
+### <a name="Deny Renaming by Topic"></a> 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.
- 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.
-#### <a name="Deny Renaming by Web"></a> Deny Renaming by Web
+### <a name="Deny Renaming by Web"></a> Deny Renaming by Web
You can define restrictions of who is allowed to rename a %WIKITOOLNAME% web.
- DENYTOPICRENAME (in topic) overrides DENYWEBRENAME (in WebPreferences)
- ALLOWTOPICRENAME (in topic) overrides ALLOWWEBRENAME (in WebPreferences)
-### <a name="Restricting Read Access"></a> Restricting Read Access
+## <a name="Restricting Read Access"></a> Restricting Read Access
You can define restrictions of who is allowed to view a %WIKITOOLNAME% web.
- Set DENYWEBVIEW = < list of users and groups >
- Set ALLOWWEBVIEW = < list of users and groups >
-#### <a name="Known Issues"></a> Known Issues
+### <a name="Known Issues"></a> 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. [[TWiki Installation Guide|Main/TWikiDocumentation#TWikiInstallationGuide]] has more on Basic Authentication based on the <code>**.htaccess**</code> file.
-##### <a name="Selective Unrestricted Web Acces"></a> Selective Unrestricted Web Access
+#### <a name="Selective Unrestricted Web Acces"></a> 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:
1. **Omit** the <code>**view**</code> script from the `.htaccess` file.
<a name="SuperAdminGroup"></a>
-### <a name="The _SuperAdminGroup"></a> The SuperAdminGroup
+## <a name="The _SuperAdminGroup"></a> 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:
-# <a name="TWiki Reference Manual (01-Sep-2"></a> TWiki Reference Manual (01-Sep-2001)
+<font>TWiki Reference Manual</font><font> (01-Sep-2001)</font>
This page contains all documentation topics as one long, complete reference sheet.<br />**_Doubleclick anywhere_** to return to the top of the page.
-<div>
- <ul>
- <li><a href="#TWiki Reference Manual (01-Sep-2"> TWiki Reference Manual (01-Sep-2001)</a></li>
- </ul>
-</div>
-
**_Note:_** Read the most up to date version of this document at <http://TWiki.org/cgi-bin/view/TWiki/TWikiDocumentation>
**_Related Topics:_** [[TWikiSite]], [[TWikiHistory]], [[TWikiPlannedFeatures]], [[TWikiEnhancementRequests]]
</ul>
</div>
-## <a name="TWiki Installation Guide"></a> TWiki Installation Guide
+# <a name="TWiki Installation Guide"></a> TWiki Installation Guide
_Clean install of the current public release (01-Sep-2001)_
-### <a name="Overview"></a> Overview
+## <a name="Overview"></a> Overview
These installation steps use the Apache web server on Linux as an example. TWiki should run on other web servers and Unix systems as well. (TWiki on Windows is possible, but has not been well-documented. More on that at <http://TWiki.org/cgi-bin/view/Codev/TWikiOnWindows>.)
Read <http://TWiki.org/cgi-bin/view/Codev/SourceForgeHowTo> in case you want to install TWiki on SourceForge.
-### <a name="Standard Installation"></a> Standard Installation
+## <a name="Standard Installation"></a> Standard Installation
Request and download the TWiki %VERSION% distribution in Unix ZIP format from <http://TWiki.org/download.html>.
-#### <a name="Step 1: Create Configure the Di"></a> Step 1: Create & Configure the Directories
+### <a name="Step 1: Create Configure the Di"></a> Step 1: Create & Configure the Directories
- 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 only `ExecCGI` option.
> Allow from all
> </Directory>
-#### <a name="Step 2: Check the Server Directo"></a> Step 2: Check the Server Directory Settings
+### <a name="Step 2: Check the Server Directo"></a> Step 2: Check the Server Directory Settings
- 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."`
- Execute the `testenv` script from your browser ( `http://your.domain.com/twiki/bin/testenv` ). It shows a table with all CGI environment variables and tests the settings in your <code>**twiki/bin/wikicfg.pm**</code> configuration file.
-#### <a name="Step 3: Enable Perl File Permiss"></a> Step 3: Enable Perl File Permissions
+### <a name="Step 3: Enable Perl File Permiss"></a> Step 3: Enable Perl File Permissions
- Make sure Perl 5 and the Perl CGI library are 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 <code>**twiki/bin**</code> directory must be changed (alternatively you can create a symbolic link from <code>**/usr/bin/perl**</code> ).
- **IMPORTANT:** On most ISP virtual domain accounts, Perl CGI scripts require a <code>**.cgi**</code> extension to run. Some systems need <code>**.pl**</code>, the regular Perl extension. Change all <code>**twiki/bin**</code> scripts appropriately if necssary.
- Set the permission of the <code>**twiki/data**</code> directory and its subdirectories so that files in there are writable by user <code>**nobody**</code>. A simple way is to chmod them to <code>**drwxrwxrwx**</code> (777).
- Set the permission of the `twiki/pub` directory and all its subdirectories so that files in there are writable by user `nobody`. A simple way is to chmod them to <code>**drwxrwxrwx**</code> (777).
-#### <a name="Step 4: Set the Main Configurati"></a> Step 4: Set the Main Configuration File
+### <a name="Step 4: Set the Main Configurati"></a> Step 4: Set the Main Configuration File
- Edit the file <code>**twiki/bin/wikicfg.pm**</code> and set the variables at the beginning of the file to your needs.
- Set the file extension in the `$scriptSuffix` variable to <code>**cgi**</code> or <code>**pl**</code> if required.
- Enable email notification of topic changes, [[Notification of Changes|Main/TWikiDocumentation#TWiki_Notification_of_Changes]] has more.
- Add the [TWiki:Main.PoweredByTWikiLogo](http://TWiki.org/cgi-bin/view/Main/PoweredByTWikiLogo) to your [[WebHome]] topic.
-#### <a name="Step 5: Finish Up from Your Brow"></a> Step 5: Finish Up from Your Browser
+### <a name="Step 5: Finish Up from Your Brow"></a> Step 5: Finish Up from Your Browser
- Point your Web browser at <code>**http://your.domain.com/twiki/bin/view**</code> and start TWiki-ing away!
- Edit the [[TWikiPreferences]] topic in the TWiki:TWiki web to set the WIKIWEBMASTER email address, the WEBCOPYRIGHT message and other preferences.
That's it for the standard virgin installation of TWiki. Read on to learn how to customize TWiki.
-### <a name="Extra Server-Level Options"></a> Extra Server-Level Options
+## <a name="Extra Server-Level Options"></a> Extra Server-Level Options
Complete a Standard Installation and your new TWiki site should be up and running. You can develop and manage most aspects of your site from the browser interface. Core set-up functions require direct access to the server file system, via Telnet or FTP. You can make server-level site changes during installation, or at any time afterwards.
<a name="CreateWeb"></a>
-#### <a name="Creating a New Web"></a> Creating a New Web
+### <a name="Creating a New Web"></a> Creating a New Web
- To create a new web:
- Use a name for the web consisting of characters `A..Z` , `a..z` but **not** in [[WikiNotation]].
- In case you want usage statistics for this web: Copy file `WebStatistics.txt` from the `twiki/data/Main` directory to the new data directory. Edit topic WebStatistics in the new web and delete old usage entries.
- Note that user home topics are only located in the %WIKITOOLNAME%.Main web, so don't try to move them or create them in other webs. From any web you can refer to users located in the %WIKITOOLNAME%.Main web like `Main.UserName` or `%MAINWEB%.UserName`.
-#### <a name="Adding Variables Rendering Rule"></a> Adding Variables & Rendering Rules
+### <a name="Adding Variables Rendering Rule"></a> Adding Variables & Rendering Rules
- 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` .
-#### <a name="Enabling Basic Authentication (."></a> Enabling Basic Authentication (.htaccess)
+### <a name="Enabling Basic Authentication (."></a> Enabling Basic Authentication (.htaccess)
- If you are on a non authenticated server (i.e. not using SSL) and you would like to authenticate users:
- Rename file `.htaccess.txt` in the `twiki/bin` directory to `.htaccess` and change it to your needs. For details consult the HTTP server documentation (for Apache server: [[1]](http://www.apache.org/docs/mod/directives.html), [[2]](http://www.mcs.kent.edu/system/web_help/htaccess/introduction.html)). In particular, the following <font>red</font> part needs to be configured correctly: <br /><code>Redirect <font>/urlpath/to/TWiki/index.html</font> http://<font>your.domain.com/urlpath/to/TWiki/bin/</font>view</code><br /><code>AuthUserFile <font>/filepath/to/TWiki/data/</font>.htpasswd</code><br /><code>ErrorDocument 401 <font>/urlpath/to/TWiki/bin/</font>oops/TWiki/TWikiRegistration?template=oopsauth</code>
- **_Note:_** You can customize the registration form if needed, like 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 will ensure that the fields are processed correctly.
- A new line containing user name and encrypted password gets added to the `data/.htpasswd` file when a users registers. The file that comes with the TWiki installation contains a few user accounts of TWiki core team members (needed for testing). You can edit the file and delete those lines.
-### <a name="TWiki File System Snapshot"></a> TWiki File System Snapshot
+## <a name="TWiki File System Snapshot"></a> TWiki File System Snapshot
Here are partial directory listings showing typical file permissions and ownership. This is provided for general debugging use only and isn't an exact representation of the current distribution. There is also a complete file [[listing by directory|TWiki/TWikiImplementationNotes]], with individual file descriptions, for the current TWiki release.
-rw-rw-r-- 1 twiki twiki 144 Mar 9 1999 dll.gif
-rw-rw-r-- 1 twiki twiki 152 Mar 9 1999 doc.gif
--- [[PeterThoeny]] - 16 Mar 2001 <br />
+-- [[MikeMannix]] - 07 Sep 2001 <br />
-## <a name="TWiki Skins"></a> TWiki Skins
+# <a name="TWiki Skins"></a> TWiki Skins
Skins are customized [[TWikiTemplate|Main/TWikiTemplates]] files. You can use skins to change the look of a %WIKITOOLNAME% topic, for example the layout of the header and footer. Note that the renderd text between header and footer does **_not_** change. You can also use skins to define an alternate view, ex: a view optimized for printing.
</ul>
</div>
-## <a name="TWiki Operating Environment"></a> TWiki Operating Environment
+# <a name="TWiki Operating Environment"></a> TWiki Operating Environment
_Server and client system requirements, file system structure_
-### <a name="Overview"></a> Overview
+## <a name="Overview"></a> Overview
Maintaining minimum client and server requirements is necessary to keep TWiki deployment as broad as possible.
-### <a name="Server-Side Requirements"></a> Server-Side Requirements
+## <a name="Server-Side Requirements"></a> Server-Side Requirements
TWiki is written in Perl 5 and uses a number of shell commands. It requires GNU RCS (Revision Control System) to be installed on the same system. TWiki is developed in a standard Linux/Apache environment. It can also work with Microsoft Windows and other platforms.
Current documentation covers Linux only. Compiling a basic [TWikiOnWindows](http://twiki.org/cgi-bin/view/Codev/TWikiOnWindows) installation guide is an ongoing effort.
-### <a name="Client-Side Requirements"></a> Client-Side Requirements
+## <a name="Client-Side Requirements"></a> Client-Side Requirements
The TWiki standard installation has extremely low browser requirements:
TWiki generates XHTML 1.0 code as long as it is compatible with HTML 3.2.
-#### <a name="Known Issues"></a> Known Issues
+### <a name="Known Issues"></a> Known Issues
- The new [[TWikiPlugins]] feature currently does not have any compatibility guidelines for developers. Plugins can require just about anything: browser-specific functions, stylesheets (CSS), Java, cookies, etc.
-### <a name="TWiki File System"></a> TWiki File System
+## <a name="TWiki File System"></a> TWiki File System
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:
</tr>
</table>
-#### <a name="File Descriptions"></a> File Descriptions
+### <a name="File Descriptions"></a> File Descriptions
A rundown of the individual files in the current %VERSION% distribution, organized by TWiki root directories. All listings are complete unless otherwise noted.
<a name="TWikiFiles"></a>
-##### <a name="Files in twiki"></a> Files in `twiki`
+#### <a name="Files in twiki"></a> Files in `twiki`
Introductory and installation files.
<a name="BinFiles"></a>
-##### <a name="Files in twiki/bin"></a> Files in `twiki/bin`
+#### <a name="Files in twiki/bin"></a> Files in `twiki/bin`
All Perl CGI scripts.
<a name="LibFiles"></a>
-##### <a name="Files under twiki/lib"></a> Files under `twiki/lib`
+#### <a name="Files under twiki/lib"></a> Files under `twiki/lib`
The new `lib/TWiki/Plugins` directories contain core configuration, libraries and function modules, and Plugins.
<a name="PubFiles"></a>
-##### <a name="Files under twiki/pub"></a> Files under `twiki/pub`
+#### <a name="Files under twiki/pub"></a> Files under `twiki/pub`
**_attachments like images..._**
<a name="DataFiles"></a>
-##### <a name="Files under twiki/data"></a> Files under `twiki/data`
+#### <a name="Files under twiki/data"></a> Files under `twiki/data`
The `data` directory stores TWiki page data as individual text files. Each active web has its own subdirectory. The TWiki distribution package includes four start-up webs, with a number of pages of documentation and demo content. _This is a representative partial file listing..._
<a name="TemplatesFiles"></a>
-##### <a name="Files in twiki/templates"></a> Files in `twiki/templates`
+#### <a name="Files in twiki/templates"></a> Files in `twiki/templates`
_Used to flexibly control appearance of rendered pages..._
<div>
<ul>
- <li><a href="#new topic for the final doc"> new topic for the final doc</a><ul>
- <li><a href="#TWiki Template System"> TWiki Template System</a><ul>
- <li><a href="#Overview"> Overview</a></li>
- <li><a href="#Needs of the TWiki templating sy"> Needs of the TWiki templating system</a></li>
- <li><a href="#Functional Spec"> Functional Spec</a></li>
- <li><a href="#Examples"> Examples</a><ul>
- <li>
- <ul>
- <li><a href="#Base template oopsbase.tmpl"> Base template oopsbase.tmpl</a></li>
- <li><a href="#Test template oopstest.tmpl"> Test template oopstest.tmpl</a></li>
- <li><a href="#Sample screen shot of oopstest.t"> Sample screen shot of oopstest.tmpl</a></li>
- </ul>
- </li>
+ <li><a href="#new topic for the final doc"> new topic for the final doc</a></li>
+ <li><a href="#TWiki Template System"> TWiki Template System</a></li>
+ <li><a href="#Overview"> Overview</a><ul>
+ <li><a href="#Needs of the TWiki templating sy"> Needs of the TWiki templating system</a></li>
+ <li><a href="#Functional Spec"> Functional Spec</a></li>
+ <li><a href="#Examples"> Examples</a><ul>
+ <li>
+ <ul>
+ <li><a href="#Base template oopsbase.tmpl"> Base template oopsbase.tmpl</a></li>
+ <li><a href="#Test template oopstest.tmpl"> Test template oopstest.tmpl</a></li>
+ <li><a href="#Sample screen shot of oopstest.t"> Sample screen shot of oopstest.tmpl</a></li>
</ul>
</li>
- <li><a href="#Comments and feedback"> Comments and feedback</a></li>
</ul>
</li>
+ <li><a href="#Comments and feedback"> Comments and feedback</a></li>
</ul>
</li>
</ul>
</div>
-## <a name="TWiki Template System"></a> TWiki Template System
+# <a name="TWiki Template System"></a> TWiki Template System
_Define the templates used to render all HTML pages displayed in TWiki_
-### <a name="Overview"></a> Overview
+# <a name="Overview"></a> Overview
We have a need for more advanced template handling. As [[JohnTalintyre]] pointed out in [[CommonHeaderFooterTemplate]] it makes sense to separate the header and footer into one file so that it can be easily altered (or even overloaded by a skin). Also the oops dialog messages are all identical except for a few variables like heading, and so on.
Using external modules like the [[TemplateToolkit]] would be one way to go, but this will add a lot of baggage to TWiki.
-### <a name="Needs of the TWiki templating sy"></a> Needs of the TWiki templating system
+## <a name="Needs of the TWiki templating sy"></a> Needs of the TWiki templating system
- Separate common parts into one (or more) base template file(s) and include that from other template files like `view.tmpl`.
- Define common variables like a "|" separator in the base template and use them in other template files
- Define variable text in templates (i.e. `view.tmpl`) and pass them to the base template
-### <a name="Functional Spec"></a> Functional Spec
+## <a name="Functional Spec"></a> Functional Spec
I tried to define a simple but powerful solution that can be extended over time. Here we go:
- Templates and skins work transparently and interchangeably. You could for example define a new skin just for the header & footer and keep the other template files unchanged.
- **_Note:_** The template directive work only for templates, they do not get processed in topic text.
-### <a name="Examples"></a> Examples
+## <a name="Examples"></a> Examples
Attached is an example of an oops base template `oopsbase.tmpl` and a example oops dialog `oopstest.tmpl` which is based on the base template. This is not the version that will go into the release, it is just a quick hack.
-##### <a name="Base template oopsbase.tmpl"></a> Base template oopsbase.tmpl
+#### <a name="Base template oopsbase.tmpl"></a> 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"}%`
</td></tr>
</table >
-##### <a name="Test template oopstest.tmpl"></a> Test template oopstest.tmpl
+#### <a name="Test template oopstest.tmpl"></a> Test template oopstest.tmpl
Each oops template basically just defines some variables and includes the base template that does the layout work.
<tr>
<td> </table > <p>
</p>
- <h5><a name="Sample screen shot of oopstest.t"></a> Sample screen shot of oopstest.tmpl </h5>
+ <h4><a name="Sample screen shot of oopstest.t"></a> Sample screen shot of oopstest.tmpl </h4>
<p> With URL: <code><b>.../bin/oops/Test/TestTopic2?template=oopstest&param1=WebHome&param2=WebNotify</b></code></p>
<p>
</p>
</table>
<p>
</p>
- <h3><a name="Comments and feedback"></a> Comments and feedback </h3>
+ <h2><a name="Comments and feedback"></a> Comments and feedback </h2>
<p>
</p>
<ul>
</ul>
</div>
-## <a name="TWiki User Authentication"></a> TWiki User Authentication
+# <a name="TWiki User Authentication"></a> TWiki User Authentication
_TWiki site access control and user activity tracking_
-### <a name="Overview"></a> Overview
+## <a name="Overview"></a> Overview
TWiki does not authenticate users internally, it depends on the <code>**REMOTE\_USER**</code> 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.
-### <a name="Authentication Options"></a> Authentication Options
+## <a name="Authentication Options"></a> Authentication Options
No special installation steps need to be performed if the server is already authenticated. If not, you have three standard options for controlling user access:
2. **Use SSL** (Secure Sockets Layer; HTTPS) to authenticate and secure the whole server. <br />
3. **Use Basic Authentication (HTAccess)** to control access by protecting key scripts: `attach`, `edit=`, `installpasswd`, `password`, `preview`, `rename`, `save`, `upload`, `view`, `viewfile` using .htaccess files. The [[TWiki Installation Guide|Main/TWikiDocumentation#TWiki_Installation_Notes]] has step-by-step instructions.
-#### <a name="Partial Authentication"></a> Partial Authentication
+### <a name="Partial Authentication"></a> Partial Authentication
**Tracking by IP address** is an experimental feature, enabled in `lib/TWiki.cfg`. It lets you combine open access to some functions, with authentication on others, with full user activity tracking:
- You are Main.admin
-### <a name="TWiki Username vs. Login Usernam"></a> TWiki Username vs. Login Username
+## <a name="TWiki Username vs. Login Usernam"></a> TWiki Username vs. Login Username
This section applies only if your %WIKITOOLNAME% is installed on a server that is both **authenticated** and on an **intranet**.
<a name="ChangingPasswords"></a>
-### <a name="Changing Passwords"></a> Changing Passwords
+## <a name="Changing Passwords"></a> Changing Passwords
Change and reset passwords using forms on regular pages. Use [[TWikiAccessControl]] to restrict use as required.
>
--- [[PeterThoeny]] - 16 Mar 2001 <br /> -- [[MikeMannix]] - 29 Aug 2001
+-- [[MikeMannix]] - 29 Aug 2001
<div>
<ul>
<li><a href="#TWiki Variables"> TWiki Variables</a><ul>
+ <li><a href="#Overview"> Overview</a></li>
<li><a href="#Predefined Variables"> Predefined Variables</a></li>
<li><a href="#Preferences Variables"> Preferences Variables</a></li>
<li><a href="#Setting Preferences"> Setting Preferences</a></li>
</ul>
</div>
-## <a name="TWiki Variables"></a> TWiki Variables
+# <a name="TWiki Variables"></a> TWiki Variables
+
+_Text strings expanded on the fly include predefined, preference-driven and custom-defined data_
+
+## <a name="Overview"></a> Overview
TWikiVariables are text strings enclosed in percentage signs: <code>**%VARIABLE%**</code> that represent stored data. When a topic is rendered for viewing, defined variables are replaced by their actual values. TWiki has two types of variable, predefined and Preference-based, where usually you determine the content. Through Preference variables, you can also define custom variables, creating new variable name and value. TWiki variables are as simple to use as they are powerful, and vice versa!
-### <a name="Predefined Variables"></a> Predefined Variables
+## <a name="Predefined Variables"></a> Predefined Variables
With a couple of notable exceptions, predefined variables return set values that are defined one-time on installation and left alone. Most are directory names and file paths, customized for your server, and only have to be updated once in the main configuration file if your server set-up changes.
<td> 2 digit year </td>
<td> 99 </td>
</tr>
- </table> Variables can be shortened to 3 characters. Example: <br /><code>%GMTIME{"$day $month, $year - $hour:$min:$sec"}%</code> is <br /><b>29 Jun, 2010 - 15:29:26</b></td>
+ </table> Variables can be shortened to 3 characters. Example: <br /><code>%GMTIME{"$day $month, $year - $hour:$min:$sec"}%</code> is <br /><b>29 Jun, 2010 - 15:29:33</b></td>
</tr>
<tr>
<td><code>%SERVERTIME%</code></td>
>
> [2] **_Note_**: A web can be excluded from a `web="all"` search if you define a `NOSEARCHALL=on` variable in its [[WebPreferences]].
-### <a name="Preferences Variables"></a> Preferences Variables
+## <a name="Preferences Variables"></a> 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):
<td> List of preferences that are not allowed to be overridden by next level preferences</td>
</tr></font></font></table>
-### <a name="Setting Preferences"></a> Setting Preferences
+## <a name="Setting Preferences"></a> Setting Preferences
- The syntax for Preferences variables is the same anywhere in TWiki. In Edit mode, from the start of a new line: <br />[6 spaces] \* [space] Set [space] VARIABLENAME [space] = [value] <br />**_Example:_**
- <code>**Set VARIABLENAME = value**</code>
-### <a name="Creating Custom Variables"></a> Creating Custom Variables
+## <a name="Creating Custom Variables"></a> 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.