buildrelease
authorTWikiContributor <TWikiContributor>
Sun, 3 Aug 2008 22:17:53 +0000 (22:17 +0000)
committerTWikiContributor <TWikiContributor>
Sun, 3 Aug 2008 22:17:53 +0000 (22:17 +0000)
68 files changed:
Main/WebStatistics.mdwn
TWiki/BehaviourContrib.mdwn
TWiki/BulkRegistration.mdwn
TWiki/ClassicSkin.mdwn
TWiki/CommentPlugin.mdwn
TWiki/CommentPluginTemplate.mdwn
TWiki/EditTablePlugin.mdwn
TWiki/EmptyPlugin.mdwn
TWiki/FileAttachment.mdwn
TWiki/HierarchicalNavigation.mdwn
TWiki/IfStatements.mdwn
TWiki/InstalledPlugins.mdwn
TWiki/InterwikiPlugin.mdwn
TWiki/JSCalendarContrib.mdwn
TWiki/MailerContrib.mdwn
TWiki/ManagingWebs.mdwn
TWiki/PatternSkinColorSettings.mdwn
TWiki/PatternSkinWebCreateNewTopicTemplate.mdwn
TWiki/PreferencesPlugin.mdwn
TWiki/QuerySearch.mdwn
TWiki/SiteMap.mdwn
TWiki/SlideShowPlugin.mdwn
TWiki/SourceCode.mdwn
TWiki/TWikiAccessControl.mdwn
TWiki/TWikiDocGraphics.mdwn
TWiki/TWikiFuncDotPm.mdwn
TWiki/TWikiHistory.mdwn
TWiki/TWikiInstallationGuide.mdwn
TWiki/TWikiLogos.mdwn
TWiki/TWikiPlugins.mdwn
TWiki/TWikiPluralsDotPm.mdwn
TWiki/TWikiPreferences.mdwn
TWiki/TWikiRegistration.mdwn
TWiki/TWikiReleaseNotes04x01.mdwn
TWiki/TWikiReleaseNotes04x02.mdwn
TWiki/TWikiScripts.mdwn
TWiki/TWikiSite.mdwn
TWiki/TWikiSkins.mdwn
TWiki/TWikiTemplates.mdwn
TWiki/TWikiUserMappingContrib.mdwn
TWiki/TWikiUserMappingDotPm.mdwn
TWiki/TWikiUsersBaseUserMappingDotPm.mdwn [new file with mode: 0644]
TWiki/TWikiUsersDotPm.mdwn
TWiki/TWikiUsersPasswordDotPm.mdwn
TWiki/TWikiVariables.mdwn
TWiki/TablePlugin.mdwn
TWiki/TinyMCEPlugin.mdwn
TWiki/TinyMCEQuickHelp.mdwn
TWiki/TwistyContrib.mdwn
TWiki/TwistyPlugin.mdwn
TWiki/VarDISPLAYTIME.mdwn
TWiki/VarDISPLAYTIME2.mdwn
TWiki/VarEDITTABLE.mdwn
TWiki/VarFORMFIELD.mdwn
TWiki/VarINCLUDE.mdwn
TWiki/VarSEARCH.mdwn
TWiki/VarURLPARAM.mdwn
TWiki/VarUSERINFO.mdwn
TWiki/WebHome.mdwn
TWiki/WebLeftBar.mdwn
TWiki/WebLeftBarLogin.mdwn
TWiki/WebPreferences.mdwn
TWiki/WebSearch.mdwn
TWiki/WebSearchAdvanced.mdwn
TWiki/WebStatistics.mdwn
TWiki/WebTopicCreator.mdwn
TWiki/WelcomeGuest.mdwn
TWiki/WysiwygPlugin.mdwn

index 54ee350..115b3cf 100644 (file)
@@ -27,6 +27,6 @@
 
 **_Notes:_**
 
-- This topic is updated by the statistics script. (You can also [force](http://www.dementia.org/twiki/statistics/%WEB%) an update)
-- %SYSTEMWEB%.TWikiDocumentation tells you how to enable the automatic updates of the statistics.
+- Do not edit this topic, it is updated automatically. (You can also [force](http://www.dementia.org/twiki/statistics/%WEB%) an update)
+- [[TWikiSiteTools|SYSTEMWEB/TWikiSiteTools#WebStatistics_site_statistics]] tells you how to enable the automatic updates of the statistics.
 - Suggestion: You could archive this topic once a year and delete the previous year's statistics from the table.
index 60360fa..b0b7dca 100644 (file)
@@ -242,7 +242,7 @@ If we have a 'normal' link to TWiki Web hometopic: [[TWiki Web Home|TWiki/WebHom
 >   </tr>
 >   <tr>
 >     <td align="right"> Version: </td>
->     <td> 15675 (22 Jan 2008) </td>
+>     <td> 15675 (04 Aug 2008) </td>
 >   </tr>
 >   <tr>
 >     <td align="right"> Dependencies: </td>
index a99212f..722d75b 100644 (file)
@@ -1,22 +1,22 @@
 # <a name="Bulk Registration"></a> Bulk Registration
 
-Administrators can use this topic to register (i.e. create logins and [[UserTopics]]) for a group of people quickly. Create a table in the REGISTERTOPIC named below, setting each row to represent each user and each column to correspond to the metadata. Then press the button on this page to perform registration for those users. Unlike normal registration the administrator is assumed to have correct e-mail addresses for the users, so no verification is required. Note that the new users are not notified that they have an account. This is so you can prepare and verify the accounts before announcing them. To announce them use the [[BulkResetPassword]] feature: this will assign a new random password and notify users.
+Administrators can use this topic to register (i.e. create logins and user topics) for a group of people in one batch.
 
-## <a name="Bulk Registration usage"></a> Bulk Registration usage
-
-Any fields you define in this table will end up in the User's topic. If a form (such as [[UserForm]]) is attached to [[NewUserTemplate]] then the data will go in as META:FIELDS, meaning that you can use SEARCH formfield constructs to search.
+Unlike normal registration the administrator is assumed to have correct e-mail addresses for the users, so **no verification is required.** Note that the new users are not notified that they have an account. This is so you can prepare and verify the accounts before announcing them. To announce them use the [[BulkResetPassword]] feature: this will assign a new random password and notify users.
 
-If you use the [[UserForm]] then ensure that it contains all the fields you define here. Otherwise they will disappear when the user edits their home topic!
+## <a name="Bulk Registration usage"></a> Bulk Registration usage
 
-### <a name="Mandatory fields"></a> Mandatory fields
+Note: this is an administrator job - only admistrators can run this.
 
-- WikiName
-- FirstName
-- LastName
+If you are administrator, you will take these actions:
 
-### <a name="Optional fields"></a> Optional fields
+1. (First time use) Create new bulk registration topics (see [[Settings|Main/WebHome#Settings]] below).
+2. In the REGISTERTOPIC topic: create a table of new users. An example table is provided below to copy.
+3. Return to this topic and press the button "Bulk Register" to create the new topics.
+4. Read %LOGTOPIC% to verify if all has gone well.
+5. When you are ready, use the [[BulkResetPassword]] page to assign passwords and notify the users of their new accounts.
 
-- [[LoginName]] - if not set will register with [[WikiName]]
+Below are the details.
 
 ## <a name="Settings"></a> Settings
 
@@ -27,27 +27,58 @@ If you use the [[UserForm]] then ensure that it contains all the fields you defi
 - Set this to 1 to make the bulk registration overwrite any existing user topics. By default, existing user topics are left alone.
   - Set OVERWRITEHOMETOPICS = 0
 
+## <a name="The user table"></a> The user table
+
+This table is a template for user data that will be written to the new user topics. If you stick to these basic fields you can just use the first example below. If you want to write more data (like phone number or country) read the section [[Customizing user data|Main/WebHome#CustomizingUserData]] as well.
+
 ### <a name="Example format"></a> Example format
 
-The following should be inserted into your REGISTERTOPIC as a table.
+The following should be inserted into your %REGISTERTOPIC% as a table. This is the most simple format:
 
-    | FirstName | LastName | Email | WikiName | CustomFieldThis | SomeOtherRandomField | WhateverYouLike |
-    | Test | User | you@example.com | TestUser | A | B | C |
+    <noautolink>
+    %EDITTABLE{}%
+    | FirstName | LastName | Email | WikiName |
+    | Test | User | you@example.com | TestUser |
+    </noautolink>
+
+**Usage:**
+
+1. Copy this text to your clipboard
+2. Click through and paste this on %REGISTERTOPIC%.
+3. Add and customize entries, save table. Note that the first row must not contain bolded entries, so don't apply any formatting.
+4. Return here
+
+<a name="CustomizingUserData"></a>
 
-To use this:
+### <a name="Customizing user data"></a> Customizing user data
 
-1. Make sure that the Custom fields appear on the [[UserForm]]
-2. Copy the above table to your clipboard
-3. Click through and paste this on %REGISTERTOPIC%, save the topic and return here.
-4. Click the Bulk register button below
-5. Read %LOGTOPIC%
-6. When you are ready, use the [[BulkResetPassword]] page to assign passwords and notify the users of their new accounts.
+You can write additional data to the new user topics. Do this by enhancing the user table with additional field names as table headers.
 
-Notes:
+Any fields you define in this table will end up in the User's topic. If a form (such as [[UserForm]]) is attached to [[NewUserTemplate]] then the data will go in as META:FIELDS, meaning that you can use SEARCH formfield constructs to search.
+
+If you use the [[UserForm]] then ensure that it contains all the fields you define here. Otherwise they will disappear when the user edits their home topic!
+
+#### <a name="Mandatory fields"></a> Mandatory fields
+
+- WikiName
+- FirstName
+- LastName
+
+#### <a name="Optional fields"></a> Optional fields
+
+- [[LoginName]] - if not set will register with [[WikiName]]
+
+#### <a name="Customized table example"></a> Customized table example
+
+Make sure that the extra fields also appear on the [[UserForm]].
+
+    <noautolink>
+    %EDITTABLE{}%
+    | FirstName | LastName | Email | WikiName | CustomFieldThis | SomeOtherRandomField | WhateverYouLike |
+    | Test | User | you@example.com | TestUser | A | B | C |
+    </noautolink>
 
-1. The first row of the table dictates the heading format and that the fieldnames must be plain, i.e. **must not contain bolded** entries.
-2. You are responsible for ensuring that the fieldnames appear in the [[TWiki.UserForm|TWiki/UserForm]]
-3. Only administrators can run this.
+----
 
 **Sorry, the password system is currently read only, please contact 0**<br />
 
index 8ddb37a..ffdc59f 100644 (file)
@@ -25,13 +25,17 @@ This is not really a skin. It is the set of default templates, shown if no skin
   </tr>
   <tr>
     <td align="right"> Skin Version: </td>
-    <td> 21 May 2007 (v1.001) </td>
+    <td> 03 Aug 2008 </td>
   </tr>
   <tr>
     <td align="right"> Change History: </td>
     <td>  </td>
   </tr>
   <tr>
+    <td align="right"> 03 May 2008 </td>
+    <td> TWiki 4.2.1 release version </td>
+  </tr>
+  <tr>
     <td align="right"> 21 May 2007 </td>
     <td> Bugs:Item3969 - 8bit email fix (TWiki:Main.WillNorris) </td>
   </tr>
index ae989f1..61ea4cf 100644 (file)
@@ -130,7 +130,7 @@ A set of default comment templates are shipped with the plugin - see also [[Comm
   </tr>
   <tr>
     <td><code>action</code></td>
-    <td> Action added to action table directly above comment box (requires TWiki:Plugins/ActionTrackerPlugin) </td>
+    <td> Action added to action table directly above comment box (see <a href="#Installation">Plugin Installation Instructions</a> below for immportant notes) </td>
   </tr>
   <tr>
     <td><code>table</code></td>
@@ -372,6 +372,8 @@ Two TWiki Preference variables are recognised by the [[CommentPlugin]]:
 
 These can be set in TWikiPreferences, in WebPreferences or in individual topics.
 
+#Installation
+
 ## <a name="Plugin Installation Instructions"></a> Plugin Installation Instructions
 
 - This plugin is pre-installed in most TWiki releases. However if you need to upgrade the plugin for any reason:
@@ -383,6 +385,11 @@ These can be set in TWikiPreferences, in WebPreferences or in individual topics.
   - Manually resolve the dependencies listed below. None
 - Use `configure` to enable the plugin
 
+Note that if you want to use the `action` template then you must also:
+
+1. Install the TWiki:Plugins/ActionTrackerPlugin;
+2. Put the CommentPlugin **before** the ActionTrackerPlugin in the `{PluginsOrder}` configuration option (in `configure`)
+
 ## <a name="Plugin Info"></a> Plugin Info
 
 Another great TWiki extension from the [![](http://www.dementia.org/twiki//view/wikiringlogo20x20.png) **WikiRing** ](http://wikiring.com) - working together to improve your wiki experience!
@@ -394,13 +401,21 @@ Another great TWiki extension from the [![](http://www.dementia.org/twiki//view/
   </tr>
   <tr>
     <td align="right"> Plugin Version: </td>
-    <td> 15776 (22 Jan 2008) </td>
+    <td> 03 Aug 2008 17302 (04 Aug 2008) </td>
   </tr>
   <tr>
     <td align="right"> Change History: </td>
     <td>   </td>
   </tr>
   <tr>
+    <td align="right"> 03 Aug 2008 </td>
+    <td> The TWiki 4.2.1 release version </td>
+  </tr>
+  <tr>
+    <td align="right"> 11 Apr 2008 </td>
+    <td> TWikibug:Item5518 corrected the template definition for bulletabove </td>
+  </tr>
+  <tr>
     <td align="right"> 5 Sep 2007 </td>
     <td> TWikibug:Item3689 corrected <code>location</code> handling TWikibug:Item4181 added [[Main/VarCOMMENT]] TWikibug:Item4402 corrected access check </td>
   </tr>
index 8fa561d..e6694ef 100644 (file)
@@ -90,7 +90,7 @@ Bullet item added immediately before anchor. The input field width is passed wit
 
 > %COMMENT{type="bulletabove" inputsize="20"}%
 
-    %TMPL:DEF{PROMPT:bulletabove}%<input class="twikiInputField" name="bullet_above_item" id="bullet_above_item" type="text" size="%inputsize|40" value="%URLPARAM{"bullet_above_item"}%" />&nbsp;<input %DISABLED% type="submit" value="%button|Add item%" class="twikiButton" />%TMPL:END%
+    %TMPL:DEF{PROMPT:bulletabove}%<input class="twikiInputField" name="bullet_above_item" id="bullet_above_item" type="text" size="%inputsize|40%" value="%URLPARAM{"bullet_above_item"}%" />&nbsp;<input %DISABLED% type="submit" value="%button|Add item%" class="twikiButton" />%TMPL:END%
 
     %TMPL:DEF{OUTPUT:bulletabove}%   * %URLPARAM{"bullet_above_item"}%%POS:BEFORE%
     %TMPL:END%
index 4a83a89..b2ba351 100644 (file)
@@ -32,35 +32,38 @@ Add a `%EDITTABLE{...}%` variable just before an existing table to make it edita
 
 ### <a name="Using TWiki Variables in the For"></a> Using TWiki Variables in the Format Parameter
 
-TWiki variables like `%Y%` in `<initial value>` (of text input field) and `<label text>` (of fixed label) will get expanded when a new row is added.
-
-This is useful to write variables like dates into the table.
-
-> For example:
->
->     %EDITTABLE{ format="| label, 0, %SERVERTIME{"$day $mon $year $hour:$min"}% |" }%
->
-> ... will get expanded to
->
-> `29 Jun 2010 12:07`
->
-> when the new row is created.
-
-To prevent variable expansion: escape the format variable with [[formatting tokens|TWiki/FormatTokens]] (particularly `$percnt`).
-
-> For example:
->
->     %EDITTABLE{ format="| text, 20, $percntY$percnt |" }%
->
-> ... will create a new row with
->
-> `$percntY$percnt`
->
-> . In view mode this is temporarily translated to
->
-> `%Y%`
->
-> and subsequent rendered as %Y%.
+By default, variables in `<initial value>` (of text input field) and `<label text>` (of fixed label) get expanded when a new row is added. This can be used for example to add a timestamp to a label. You can escape characters with format tokens if you do not want that.
+
+Any TWiki variable inside a table cell will be preserved. For instance, `%TOPIC%` will not get expanded to the current topic name.
+
+The format tokens are the same as with [[FormattedSearch]]:
+
+<table border="1" cellpadding="0" cellspacing="0">
+  <tr>
+    <th bgcolor="#99CCCC"><strong> Escape: </strong></th>
+    <th bgcolor="#99CCCC"><strong> Expands To: </strong></th>
+  </tr>
+  <tr>
+    <td><code>$n</code> or <code>$n()</code></td>
+    <td> New line. Use <code>$n()</code> if followed by alphanumeric character, e.g. write <code>Foo$n()Bar</code> instead of <code>Foo$nBar</code></td>
+  </tr>
+  <tr>
+    <td><code>$nop</code> or <code>$nop()</code></td>
+    <td> Is a "no operation". </td>
+  </tr>
+  <tr>
+    <td><code>$quot</code></td>
+    <td> Double quote (<code>"</code>) </td>
+  </tr>
+  <tr>
+    <td><code>$percnt</code></td>
+    <td> Percent sign (<code>%</code>) </td>
+  </tr>
+  <tr>
+    <td><code>$dollar</code></td>
+    <td> Dollar sign (<code>$</code>) </td>
+  </tr>
+</table>
 
 <a name="DateField"></a>
 
@@ -181,6 +184,7 @@ The following example shows a simple table with key/value rows. The default edit
   </tr>
   <tr>
     <td valign="top"><pre>
+%TABLE{"headerrows="1"}%
 %EDITTABLE{ format="| label | text, 40 |" changerows="off" }%
 |*Key*|*Value*|
 | Name: | John Smith |
@@ -203,7 +207,7 @@ Plugin settings are stored as preferences variables. To reference a plugin setti
 - Set DEBUG to 1 to get debug messages in `data/debug.txt`. Default: `0`
   - Set DEBUG = 0
 
-- Set JAVASCRIPTINTERFACE to 1 to be able to directly move and delete row without page refresh.
+- Set JAVASCRIPTINTERFACE to 1 to be able to directly move and delete row without page refresh. Can be overridden with parameter `javascriptinterface`.
   - Set JAVASCRIPTINTERFACE = 1
 
 - Default for change rows flag: `on`, `off`, `add`
@@ -230,7 +234,6 @@ Plugin settings are stored as preferences variables. To reference a plugin setti
 
 - This Plugin does not support TWiki table formatting like Multi-span cells (e.g. `| ... ||`) and cell justification (e.g. `|  centered  |   right |`)
 - There is a performance issue when editing a large table, say, with more then 50 rows
-- Variables like `%ATTACHURL%` get expanded unless they are in a label
 - You cannot put two `%EDITTABLE{}%` statements on the same line in the source
 - You can include %-vars now in select values, by quoting them with &lt;nop&gt;, as in %&lt;nop&gt;X% for %X%, say for instance: <br />`select,1,%<nop>X%,%<nop>Y%`
 
@@ -259,7 +262,7 @@ Plugin settings are stored as preferences variables. To reference a plugin setti
   </tr>
   <tr>
     <td align="right"> Copyright: </td>
-    <td> © 2002-2007, TWiki:Main.PeterThoeny (<a href="http://www.twiki.net/" target="_top">TWIKI.NET</a>) and TWiki Contributors </td>
+    <td> © 2002-2008, TWiki:Main.PeterThoeny (<a href="http://www.twiki.net/" target="_top">TWIKI.NET</a>) and TWiki Contributors </td>
   </tr>
   <tr>
     <td align="right"> License: </td>
@@ -267,13 +270,25 @@ Plugin settings are stored as preferences variables. To reference a plugin setti
   </tr>
   <tr>
     <td align="right"> Plugin Version: </td>
-    <td> 4.7.10 (08 Jan 2008) </td>
+    <td> 4.8.4 (03 Aug 2008) </td>
   </tr>
   <tr>
     <td align="right"> Change History: </td>
     <td>  </td>
   </tr>
   <tr>
+    <td align="right"> 03 Aug 2008: </td>
+    <td> 4.8.4 TWiki 4.2.1 release version </td>
+  </tr>
+  <tr>
+    <td align="right"> 19 Jul 2008: </td>
+    <td> 4.8.3 Bugfix release </td>
+  </tr>
+  <tr>
+    <td align="right"> 20 Mar 2008: </td>
+    <td> 4.8: Arthur Clemens: Code refactoring; disabled table sort when editing; removed usage of <code>$percnt</code> to prevent variable expansion (is now done automatically); made Javascript interface aware of headers and footers, and of <code>changerows="off"</code>; improved feedback on row move. </td>
+  </tr>
+  <tr>
     <td align="right"> 25 Dec 2007: </td>
     <td> 4.7.1: Arthur Clemens: Added warning if <code>include</code> parameter topic does not exist. </td>
   </tr>
@@ -440,5 +455,3 @@ Plugin settings are stored as preferences variables. To reference a plugin setti
 </table>
 
 **_Related Topics:_** [[VarEDITTABLE]], [[TWikiPreferences]], [[TWikiPlugins]]
-
--- TWiki:Main/PeterThoeny - 07 Oct 2007
index f7570a5..046d9e1 100644 (file)
@@ -46,7 +46,7 @@ Plugin settings are stored as preferences variables. To reference a plugin setti
   </tr>
   <tr>
     <td align="right"> Plugin Version: </td>
-    <td> 15942 (22 Jan 2008) </td>
+    <td> 15942 (04 Aug 2008) </td>
   </tr>
   <tr>
     <td align="right"> Change History: </td>
index 7f284fb..d52b914 100644 (file)
@@ -56,7 +56,7 @@ File Attachments can be used to archive data, or to create powerful customized g
     - %X% It's not recommended to upload files greater than a few hundred K through a browser. Large files can be extremely slow-loading, and often time out. Use an FTP site for large file uploads.
 - Automatic attachments:
   - When enabled, all files in a topic's attachment directory are shown as attachments to the topic - even if they were directly copied to the directory and never attached by using an 'Attach' link. This is a convenient way to quickly "attach" files to a topic without uploading them one by one; although at the cost of losing audit trail and version control.
-  - To enable this feature, set the \{AutoAttachPubDir\} configuration option.
+  - To enable this feature, set the \{AutoAttachPubFiles\} configuration option.
   - **_NOTE:_** The automatic attachment feature can only be used by an administrator who has access to the server's file system.
 
 ## <a name="Downloading Files"></a> Downloading Files
index 5d3a6c0..95d09fc 100644 (file)
@@ -6,18 +6,11 @@ _NOTE: The lookup for parent and children will increase the loading time of your
 
 <div>
   <ul>
-    <li>
-      <ul>
-        <li><a href="#Usage"> Usage</a><ul>
-            <li><a href="#Displaying the Parent - Current"> Displaying the Parent - Current - Children block</a></li>
-            <li><a href="#Displaying child topics"> Displaying child topics</a></li>
-          </ul>
-        </li>
+    <li><a href="#Usage"> Usage</a><ul>
+        <li><a href="#Displaying the Parent - Current"> Displaying the Parent - Current - Children block</a></li>
+        <li><a href="#Displaying child topics"> Displaying child topics</a></li>
       </ul>
     </li>
-    <li><a href="#TWiki Installation Error">TWiki Installation Error</a></li>
-    <li><a href="#TWiki Installation Error">TWiki Installation Error</a></li>
-    <li><a href="#TWiki Installation Error">TWiki Installation Error</a></li>
   </ul>
 </div>
 
@@ -50,24 +43,35 @@ generates:
 
 **Child topics:**
 
-<div style="display: none">
-  <div>
-    <div>
-      <h1><a name="TWiki Installation Error"></a> TWiki Installation Error </h1>Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags)</div>
-    <div>
-      <ul>
-        <li> WebHome </li>
-      </ul>
-    </div>
-    <div>
-      <h1><a name="TWiki Installation Error"></a> TWiki Installation Error </h1>Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags)</div>
-  </div>
-  <p>
-  </p>
-  <div>
-    <div>
-      <h1><a name="TWiki Installation Error"></a> TWiki Installation Error </h1>Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags)</div>
-  </div>
+When included in [[WebLeftBar]] (using default Pattern skin) this is styled to:
+
+<div id="patternLeftBarContents">
   <p>
   </p>
 </div>
+
+    %STARTSECTION{name="all"}%<div class="twikiHierarchicalNavigation">
+    <ul>
+    %SEARCH{
+    "parent"
+    type="query"
+    topic="%BASETOPIC%"
+    web="%BASEWEB%"
+    nonoise="on"
+    format="<li class='twikiParentTopic'><img src='%ICONURL{parent_gray}%' width='16' height='16' alt='' border='0' /> [[$web.$parent][$parent]]</li>"
+    }%
+    <li class='twikiCurrentTopic' style='font-weight:bold;'><nop>%BASETOPIC%</li>%INCLUDE{"%TOPIC%" section="childlist"}%
+    </ul>
+    </div><!--/twikiHierarchicalNavigation-->%ENDSECTION{name="all"}%
+
+    %STARTSECTION{name="children"}%<div class="twikiHierarchicalNavigation">
+    <ul>%INCLUDE{"%TOPIC%" section="childlist"}%</ul>
+    </div><!--/twikiHierarchicalNavigation-->%ENDSECTION{name="children"}%</div>%ENDSECTION{name="children"}%
+
+    %STARTSECTION{name="childlist"}%%SEARCH{
+    "parent.name='%BASETOPIC%'"
+    web="%BASEWEB%"
+    type="query"
+    nonoise="on"
+    format="<li class='childTopic'><img src='%ICONURL{line_ur_gray}%' width='16' height='16' alt='' border='0' /> [[$web.$topic][$topic]]</li>"
+    }%%ENDSECTION{name="childlist"}%
index 46ad312..ef0432e 100644 (file)
@@ -29,7 +29,7 @@ The basic syntax of a condition is the same as [[the syntax used for queries|Mai
   </tr>
   <tr>
     <td> ingroup </td>
-    <td><code>'X' ingroup 'Y'</code> is true if user 'X' is in group 'Y' </td>
+    <td><code>'X' ingroup 'Y'</code> is true if user 'X' is in group 'Y'. 'X' can be a login name or a wikiname. </td>
   </tr>
   <tr>
     <td> defined </td>
@@ -49,16 +49,16 @@ The basic syntax of a condition is the same as [[the syntax used for queries|Mai
 
 1. TWiki variable defined or not
 
-    %IF{"defined WIKINAME" then="WIKINAME is defined" else="WIKINAME is not defined"}%
+    %IF{"defined 'WIKINAME'" then="WIKINAME is defined" else="WIKINAME is not defined"}%
 
 2. Compare TWiki variable
 
-    You are %IF{ "$ WIKINAME='TWikiGuest' and not defined OPEN_DAY" then="not" }% allowed to
+    You are %IF{ "$ WIKINAME='TWikiGuest' and not defined 'OPEN_DAY'" then="not" }% allowed to
     %IF{ "context view" then="view" else="edit"}% this TWiki today.
 
 3. URL parameter
 
-    %IF{ "defined search" then="Search: $percntURLPARAM{search}$percnt" else="No search passed in"}%
+    %IF{ "defined 'search'" then="Search: $percntURLPARAM{search}$percnt" else="No search passed in"}%
 
 4. Range test on URL parameter
 
@@ -113,6 +113,10 @@ expands to: %BR% You are an admin
     <td> Set if absolute URLs are required </td>
   </tr>
   <tr>
+    <td> attach </td>
+    <td> in attach script (see [[Main/TWikiScripts]]) </td>
+  </tr>
+  <tr>
     <td> authenticated </td>
     <td> a user is authenticated </td>
   </tr>
@@ -157,6 +161,14 @@ expands to: %BR% You are an admin
     <td> if active links such as 'edit' and 'attach' should be disabled </td>
   </tr>
   <tr>
+    <td> login &amp; logon </td>
+    <td> in login / logon script (see [[Main/TWikiScripts]]) </td>
+  </tr>
+  <tr>
+    <td> manage </td>
+    <td> in manage script (see [[Main/TWikiScripts]]) </td>
+  </tr>
+  <tr>
     <td> mirror </td>
     <td> if this is a mirror </td>
   </tr>
@@ -173,6 +185,18 @@ expands to: %BR% You are an admin
     <td> in preview script (see [[Main/TWikiScripts]]) </td>
   </tr>
   <tr>
+    <td> register </td>
+    <td> in register script (see [[Main/TWikiScripts]]) </td>
+  </tr>
+  <tr>
+    <td> rename </td>
+    <td> in rename script (see [[Main/TWikiScripts]]) </td>
+  </tr>
+  <tr>
+    <td> resetpasswd </td>
+    <td> in resetpasswd script (see [[Main/TWikiScripts]]) </td>
+  </tr>
+  <tr>
     <td> rss </td>
     <td> if this is an RSS skin rendering </td>
   </tr>
@@ -185,14 +209,26 @@ expands to: %BR% You are an admin
     <td> in search script (see [[Main/TWikiScripts]]) </td>
   </tr>
   <tr>
+    <td> statistics </td>
+    <td> in statistics script (see [[Main/TWikiScripts]]) </td>
+  </tr>
+  <tr>
     <td> textareas_hijacked </td>
     <td> provided for use by editors that highjack textareas, and want to signal this fact. This is used by skins, for example, so they can suppress extra controls when textareas have been hijacked. </td>
   </tr>
   <tr>
+    <td> upload </td>
+    <td> in upload script (see [[Main/TWikiScripts]]) </td>
+  </tr>
+  <tr>
     <td> view </td>
     <td> in view script (see [[Main/TWikiScripts]]) </td>
   </tr>
   <tr>
+    <td> viewfile </td>
+    <td> in viewfile script (see [[Main/TWikiScripts]]) </td>
+  </tr>
+  <tr>
     <td> rest </td>
     <td> in rest script (see [[Main/TWikiScripts]]) </td>
   </tr>
index 4723dfa..22b6469 100644 (file)
@@ -16,7 +16,9 @@ Here is a list of the plugins currently installed and enabled on this TWiki site
 
 Administrators can enable and disable plugins using [<img src="http://www.dementia.org/twiki//view/Main/WebHome/wrench.gif" width="16" height="16" alt="wrench" /> configure](http://www.dementia.org/twiki/configure).
 
-## <a name="Contrib Modules"></a> Contrib Modules
+## <a name="All Contrib Modules"></a> All Contrib Modules
+
+This list includs Plugins, some some of which may be disabed in configure, or due to other reasons. See %SYSTEMWEB%.TWikiSkinBrowser for an overview of the installed Skins.
 
 # <a name="TWiki Installation Error"></a> TWiki Installation Error
 
@@ -119,4 +121,4 @@ Plugins: could not fully register TwistyPlugin, no plugin topic
 
 **_Note:_** The diagnostics are provided by the `%FAILEDPLUGINS%` variable
 
-**_Related Topics:_** [[TWikiPlugins]], [[TWikiPreferences]], [[AdminDocumentationCategory]], [[AdminToolsCategory]]
+**_Related Topics:_** [[TWikiPlugins]], [[TWikiPreferences]], [[AdminDocumentationCategory]], [[AdminToolsCategory]], [[TWikiSkinBrowser]]
index 64c785b..d0a64fa 100644 (file)
@@ -99,13 +99,21 @@ Plugin settings are stored as Preferences variables. To reference a plugin setti
   </tr>
   <tr>
     <td align="right"> Plugin Version: </td>
-    <td> 16052 (22 Jan 2008) </td>
+    <td> 03 Aug 2008 17302 (04 Aug 2008) </td>
   </tr>
   <tr>
     <td align="right"> Change History: </td>
     <td>  </td>
   </tr>
   <tr>
+    <td align="right"> 03 Aug 2008: </td>
+    <td> TWiki 4.2.1 release version </td>
+  </tr>
+  <tr>
+    <td align="right"> 22 Jan 2008: </td>
+    <td> TWiki 4.2.0 release version </td>
+  </tr>
+  <tr>
     <td align="right"> 25 Nov 2007: </td>
     <td> 15752 - TWikibug:Item5006 - Renamed Bugs rule to TWikibug rule (PTh) </td>
   </tr>
index 6b111a0..6ed87c5 100644 (file)
@@ -73,7 +73,39 @@ This function will automatically add the headers for the calendar to the page be
       ....
     }
 
-The first parameter to `showCalendar` is the id of the textfield, and the second parameter is the . See the Mishoo documentation for details of the '$e %B %Y' parameter.
+The first parameter to `showCalendar` is the id of the textfield, and the second parameter is the date format. Default format is '%e %B %Y'.
+
+All available date specifiers:
+
+    %a - abbreviated weekday name
+    %A - full weekday name
+    %b - abbreviated month name
+    %B - full month name
+    %C - century number
+    %d - the day of the month ( 00 .. 31 )
+    %e - the day of the month ( 0 .. 31 )
+    %H - hour ( 00 .. 23 )
+    %I - hour ( 01 .. 12 )
+    %j - day of the year ( 000 .. 366 )
+    %k - hour ( 0 .. 23 )
+    %l - hour ( 1 .. 12 )
+    %m - month ( 01 .. 12 )
+    %M - minute ( 00 .. 59 )
+    %n - a newline character
+    %p - "PM" or "AM"
+    %P - "pm" or "am"
+    %S - second ( 00 .. 59 )
+    %s - number of seconds since Epoch (since Jan 01 1970 00:00:00 UTC)
+    %t - a tab character
+    %U, %W, %V - the week number
+       The week 01 is the week that has the Thursday in the current year,
+       which is equivalent to the week that contains the fourth day of January.
+       Weeks start on Monday.
+    %u - the day of the week ( 1 .. 7, 1 = MON )
+    %w - the day of the week ( 0 .. 6, 0 = SUN )
+    %y - year without the century ( 00 .. 99 )
+    %Y - year including the century ( ex. 1979 )
+    %% - a literal % character
 
 `addHEAD` can be called from `commonTagsHandler` for adding the header to all pages, or from `beforeEditHandler` just for edit pages etc.
 
@@ -144,7 +176,7 @@ Another great TWiki extension from the [![](http://www.dementia.org/twiki//view/
   </tr>
   <tr>
     <td align="right"> Version: </td>
-    <td> 16236 (22 Jan 2008) of the Mishoo calendar </td>
+    <td> 03 Aug 2008 </td>
   </tr>
   <tr>
     <td align="right"> Copyright ©: </td>
@@ -159,10 +191,14 @@ Another great TWiki extension from the [![](http://www.dementia.org/twiki//view/
     <td> None </td>
   </tr>
   <tr>
-    <td> Change History: </td>
+    <td align="right"> Change History: </td>
     <td>   </td>
   </tr>
   <tr>
+    <td align="right"> 03 Aug 2008 </td>
+    <td> TWiki 4.2.1 release version incl new calendar icon </td>
+  </tr>
+  <tr>
     <td align="right"> 6 Sep 2007 </td>
     <td> Bugs:Item4030 Added doc for using the calendar in user forms </td>
   </tr>
index 85797b6..42baf67 100644 (file)
@@ -39,7 +39,7 @@ The script collates the changes emails so that each subscriber only receives one
 
 Each web can optionally contain a topic called WebNotify.
 
-Users subscribe to email notifications using their [[WikiName]] or an alternative email address, and can specify the webs/topics they wish to track, WWhole groups of users can also be subscribed for notification.
+Users subscribe to email notifications using their [[WikiName]] or an alternative email address, and can specify the webs/topics they wish to track, Whole groups of users can also be subscribed for notification.
 
 The general format of a subscription is:
 
@@ -54,12 +54,12 @@ _topics_ is an optional space-separated list of topics:
 
 Users may further customize the specific content they will receive using the following controls:
 
-- You can use `*` in a topic name, where it is treated as a [wildcard character](http://en.wikipedia.org/wiki/Wildcard_character). A `*` will match zero or more other characters - so, for example, `Fred*` will match all topic names starting with `Fred`, `*Fred` will match all topic names _ending_ with `Fred`, and `*` will match _all_ topic names.
-- Each topic may optionally be preceded by a '+' or '-' sign. The '+' sign means "subscribe to this topic". The '-' sign means "unsubscribe" or "don't send notifications regarding this particular topic". This allows users to elect to filter out certain topics. Topic filters ('-') take precedence over topic includes ('+') i.e. if you unsubscribe from a topic it will cancel out any subscriptions to that topic.
-- Each topic may optionally be followed by an integer in parentheses, indicating the depth of the tree of children below that topic. Changes in all these children will be detected and reported along with changes to the topic itself. _Note_ This uses the TWiki "Topic parent" feature.
-- Each topic may optionally be immediately followed by an exclamation mark ! or a question mark ? with no intervening spaces, indicating that the topic (and children if there is a tree depth specifier as well) should be mailed out as **complete topics** instead of change summaries. ! causes the topic to be mailed every time _even if there have been no changes_, and ? will mail the topic only if there have been changes to it. This only makes sense for subscriptions, and is intended for mailshotting regular newletters.
+- **Using wild-card character in topic names** - You can use `*` in a topic name, where it is treated as a [wildcard character](http://en.wikipedia.org/wiki/Wildcard_character). A `*` will match zero or more other characters - so, for example, `Fred*` will match all topic names starting with `Fred`, `*Fred` will match all topic names _ending_ with `Fred`, and `*` will match _all_ topic names.
+- **Unsubscribing to specific topics** - Each topic may optionally be preceded by a '+' or '-' sign. The '+' sign means "subscribe to this topic". The '-' sign means "unsubscribe" or "don't send notifications regarding this particular topic". This allows users to elect to filter out certain topics. Topic filters ('-') take precedence over topic includes ('+') i.e. if you unsubscribe from a topic it will cancel out any subscriptions to that topic.
+- **Including child-topics in subscription** - Each topic may optionally be followed by an integer in parentheses, indicating the depth of the tree of children below that topic. Changes in all these children will be detected and reported along with changes to the topic itself. _Note_ This uses the TWiki "Topic parent" feature.
+- **Subscribing to entire topic ("news mode")** - Each topic may optionally be immediately followed by an exclamation mark ! or a question mark ? with no intervening spaces, indicating that the topic (and children if there is a tree depth specifier as well) should be mailed out as **complete topics** instead of change summaries. ! causes the topic to be mailed every time _even if there have been no changes_, and ? will mail the topic only if there have been changes to it. One can limit the content of the subscribed topic to send out by inserting %STARTPUBLISH% and %STOPPUBLISH% markers within the topic. Note that "news mode" subscriptions require a corresponding cron job that includes the "-news" option (see [[details|Main/TOPIC#Setting_up_your_cron_job_s]]).
 
-For example: Subscribe Daisy to all changes to topics in this web.
+Examples: Subscribe Daisy to all changes to topics in this web.
 
        * daisy.cutter@flowers.com
 
@@ -154,7 +154,7 @@ The script is used as follows: <code>perl -I _bin_ mailnotify [-q] [-news] [ _we
   </tr>
   <tr>
     <td><code>-news</code></td>
-    <td> Run in news mode (process NewsNotify instead of WebNotify) </td>
+    <td> Run in "news mode" (process subscriptions that include "!" or "?" following the topic) </td>
   </tr>
   <tr>
     <td><code><i>web1 web2 ... webN</i></code></td>
@@ -176,6 +176,8 @@ will generate change notifications for all webs, except the `Sandbox` web.
 
 will generate newsletters from **all** webs every week on midnight Saturday.
 
+%X% Note: Multiple instances of mailnotify script are not allowed to be executed simutaneously. If you need to run the script multiple times with different options, make sure the cron jobs are scheduled so a previous run has finished before the next starts. You can also write a small script that runs mailnotify in sequence as described in TWiki:Support.DuplicateNotificationsFromMailerCon.
+
 ## <a name="Developer Notes"></a> Developer Notes
 
 The changes mails sent to users are based on a TWiki template called `mailnotify`. This template must contain the following definitions.
@@ -239,43 +241,59 @@ Many thanks to the following sponsors for supporting this work:
   </tr>
   <tr>
     <td align="right"> Version: </td>
-    <td> 16078 (22 Jan 2008) </td>
+    <td> 03 Aug 2008 </td>
   </tr>
   <tr>
     <td align="right"> Change History: </td>
     <td>   </td>
   </tr>
   <tr>
+    <td align="right"> 03 Aug 2008 </td>
+    <td> TWiki 4.2.1 release version </td>
+  </tr>
+  <tr>
+    <td align="right"> 27 Jul 2008 </td>
+    <td> TWikibug:Item5776: TWiki:Main.KennethLavrsen added note to warn against running multiple instances of mailnotify at the same time. </td>
+  </tr>
+  <tr>
+    <td align="right"> 15 May 2008 </td>
+    <td> TWikibug:Item5232: TWiki:Main.CrawfordCurrie added support for non-ascii alphanumerics in topic names to [[Main/WebNotify]]. TWikibug:Item5630: TWiki:Main.SvenDowideit fixed some spelling errors </td>
+  </tr>
+  <tr>
+    <td align="right"> 25 Jan 2008 </td>
+    <td> TWikibug:Item4812: added TWiki:Main.BobGoldstein's noexpand patch for groups </td>
+  </tr>
+  <tr>
     <td align="right"> 2 Nov 2007 </td>
-    <td> Bugs:Item4818: added quotes to support non-alphabetic and other wierd group names Bugs:Item4887: corrected minor rendering error Bugs:Item4917: removed dependence on symbolic web names </td>
+    <td> TWikibug:Item4818: added quotes to support non-alphabetic and other wierd group names TWikibug:Item4887: corrected minor rendering error TWikibug:Item4917: removed dependence on symbolic web names </td>
   </tr>
   <tr>
     <td align="right"> 9 Sep 2007 </td>
-    <td> Bugs:Item4326 workaround for possible error in WebNotify API in old releases, Should not affect most users. </td>
+    <td> TWikibug:Item4326 workaround for possible error in WebNotify API in old releases, Should not affect most users. </td>
   </tr>
   <tr>
     <td align="right"> 6 Sep 2007 </td>
-    <td> Bugs:Item4488 doc tweaks </td>
+    <td> TWikibug:Item4488 doc tweaks </td>
   </tr>
   <tr>
     <td align="right"> 14550 </td>
-    <td> Bugs:Item4461 - 'Changed' link now points to most recent changes, not the entire history </td>
+    <td> TWikibug:Item4461 - 'Changed' link now points to most recent changes, not the entire history </td>
   </tr>
   <tr>
     <td align="right"> 22 Jun 2007 </td>
-    <td> Bugs:Item4284 - added access control checks and email filter </td>
+    <td> TWikibug:Item4284 - added access control checks and email filter </td>
   </tr>
   <tr>
     <td align="right"> 21 May 2007 </td>
-    <td> Bugs:Item3969 - 8bit email fix (TWiki:Main.WillNorris) </td>
+    <td> TWikibug:Item3969 - 8bit email fix (TWiki:Main.WillNorris) </td>
   </tr>
   <tr>
     <td align="right"> 13623 </td>
-    <td> Bugs:Item4014 no changes was resetting the notify time to 0. Thanks to TWiki:Main.JeffCrawford for nailing this down. </td>
+    <td> TWikibug:Item4014 no changes was resetting the notify time to 0. Thanks to TWiki:Main.JeffCrawford for nailing this down. </td>
   </tr>
   <tr>
     <td align="right"> 12496 </td>
-    <td><a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item3415" rel="nofollow">Item3415</a> mailnotify did not send notifications to intranet users because of wrong call to findUser. </td>
+    <td> TWikibug:Item3415 mailnotify did not send notifications to intranet users because of wrong call to findUser. </td>
   </tr>
   <tr>
     <td align="right"> 11672 </td>
@@ -283,71 +301,71 @@ Many thanks to the following sponsors for supporting this work:
   </tr>
   <tr>
     <td align="right"> 11534 </td>
-    <td><a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item2153" rel="nofollow">Item2153</a> Clarified docs. <a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item2698" rel="nofollow">Item2698</a> Improved error reporting. </td>
+    <td> TWikibug:Item2153 Clarified docs. TWikibug:Item2698 Improved error reporting. </td>
   </tr>
   <tr>
     <td align="right"> 8808 </td>
-    <td><a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item1654" rel="nofollow">Item1654</a> mailnotify must enter the command_line context </td>
+    <td> TWikibug:Item1654 mailnotify must enter the command_line context </td>
   </tr>
   <tr>
     <td align="right"> 8625 </td>
-    <td><a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item1508" rel="nofollow">Item1508</a> Making the dashes in the separatator clearer </td>
+    <td> TWikibug:Item1508 Making the dashes in the separatator clearer </td>
   </tr>
   <tr>
     <td align="right"> 8606 </td>
-    <td><a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item1508" rel="nofollow">Item1508</a> [[Main/MailerContrib]]: Brushing up HTML mailnotify template </td>
+    <td> TWikibug:Item1508 [[Main/MailerContrib]]: Brushing up HTML mailnotify template </td>
   </tr>
   <tr>
     <td align="right"> 8602 </td>
-    <td><a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item1508" rel="nofollow">Item1508</a> [[Main/MailerContrib]]: Cleaning up plaintext e-mail template, removing TEXTAREA </td>
+    <td> TWikibug:Item1508 [[Main/MailerContrib]]: Cleaning up plaintext e-mail template, removing TEXTAREA </td>
   </tr>
   <tr>
     <td align="right"> 8522 </td>
-    <td><a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item1511" rel="nofollow">Item1511</a> arguments to getScriptUrl in wrong order :-( </td>
+    <td> TWikibug:Item1511 arguments to getScriptUrl in wrong order :-( </td>
   </tr>
   <tr>
     <td align="right"> 8434 </td>
-    <td><a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item1465" rel="nofollow">Item1465</a> Fix 'TWiki.' to '%TWIKIEB%.' </td>
+    <td> TWikibug:Item1465 Fix 'TWiki.' to '%TWIKIEB%.' </td>
   </tr>
   <tr>
     <td align="right"> 8398 </td>
-    <td><a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item1460" rel="nofollow">Item1460</a> polished up the comment a bit </td>
+    <td> TWikibug:Item1460 polished up the comment a bit </td>
   </tr>
   <tr>
     <td align="right"> 8308 </td>
-    <td><a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item1362" rel="nofollow">Item1362</a> moving mailnotify cron script </td>
+    <td> TWikibug:Item1362 moving mailnotify cron script </td>
   </tr>
   <tr>
     <td align="right"> 7848 </td>
-    <td><a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item1167" rel="nofollow">Item1167</a> forced all mail operations to generate absolute URLs </td>
+    <td> TWikibug:Item1167 forced all mail operations to generate absolute URLs </td>
   </tr>
   <tr>
     <td align="right"> 7568 </td>
-    <td><a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item910" rel="nofollow">Item910</a> use SCRIPTURL{view} instead of complex url expr </td>
+    <td> TWikibug:tem910 use SCRIPTURL{view} instead of complex url expr </td>
   </tr>
   <tr>
     <td align="right"> 6864 </td>
-    <td><a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item624" rel="nofollow">Item624</a> mailer templates moved the the right places </td>
+    <td> TWikibug:tem624 mailer templates moved the the right places </td>
   </tr>
   <tr>
     <td align="right"> 6861 </td>
-    <td><a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item624" rel="nofollow">Item624</a> Added proper templates support for plain text mails </td>
+    <td> TWikibug:tem624 Added proper templates support for plain text mails </td>
   </tr>
   <tr>
     <td align="right"> 6809 </td>
-    <td><a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item623" rel="nofollow">Item623</a> don't print anything if verbosity is switched off. </td>
+    <td> TWikibug:tem623 don't print anything if verbosity is switched off. </td>
   </tr>
   <tr>
     <td align="right"> 6659 </td>
-    <td><a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item528" rel="nofollow">Item528</a> Updated [[Main/MailerContrib]]. it's working and the sendmail parameter is used. </td>
+    <td> TWikibug:tem528 Updated [[Main/MailerContrib]]. it's working and the sendmail parameter is used. </td>
   </tr>
   <tr>
     <td align="right"> 6474 </td>
-    <td><a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item420" rel="nofollow">Item420</a> removed spurious remove_obsolete_locks from [[Main/MailerContrib]]</td>
+    <td> TWikibug:tem420 removed spurious remove_obsolete_locks from [[Main/MailerContrib]]</td>
   </tr>
   <tr>
     <td align="right"> 5924 </td>
-    <td><a href="http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item153" rel="nofollow">Item153</a> fix mail URL-fixing scheme </td>
+    <td> TWikibug:tem153 fix mail URL-fixing scheme </td>
   </tr>
   <tr>
     <td align="right"> 5269 </td>
index 39df44e..98dfd64 100644 (file)
@@ -123,7 +123,14 @@ Rename a web via the Tools section in each [[WebPreferences]] topic. You may del
 
 ### <a name="Permissions"></a> Permissions
 
-You may only rename a web if you have permissions to rename all the topics within that web, including any topics in that web's subwebs. You will also need permissions to update any topics containing references to that web.
+You may only rename a web if you have the following permissions
+
+- You must be allowed to rename and changes topics in the web you want to rename
+- You must be allowed to rename topics in the parent web of the web you want to rename
+- If the web is a root web (i.e. it has no parent web) then you must have permission to both create and rename root webs. These permissions are controlled by the ALLOWROOTCHANGE preference, which can be set in [[%USERSWEB%.TWikiPreferences|USERSWEB/TWikiPreferences]].
+- If you move the web to another parent web you must be allowed to create and change topics in the new parent web.
+
+When you rename a web TWiki will try and update all links that refer to the old web. You should note that links only get updated in topics that you are allowed to edit. If you use access rights in the TWiki installation it is generally best to let an administrator rename webs to avoid too many broken links.
 
 ### <a name="Edit Conflicts"></a> Edit Conflicts
 
index 0d872c4..2c16d24 100644 (file)
@@ -483,7 +483,8 @@ Do not change the text below this line unless you know what you are doing!
     }
     blockquote {
        background-color:%ACTIVE_FORM_BACKGROUND%;
-       border-color:%NEUTRAL_BORDER%;
+       border-color:%ACTIVE_FORM_BACKGROUND% %ACTIVE_FORM_BACKGROUND% %ACTIVE_FORM_BACKGROUND% %NEUTRAL_BORDER%;
+
     }
     blockquote h2 {
        background:none;
@@ -892,8 +893,6 @@ Do not change the text below this line unless you know what you are doing!
     }
     .patternSigLine {
        color:%MUTED_TEXT%;
-       background-color:%ATTACHMENT_AND_FORM_BACKGROUND%;
-       border-color:%SEPARATOR_BORDER%;
     }
     .patternToolBar a:link .twikiAccessKey,
     .patternToolBar a:visited .twikiAccessKey {
index aedabf1..36cebdc 100644 (file)
@@ -1,5 +1,7 @@
 %TMPL:INCLUDE\{"WebCreateNewTopic"\}%
 
+%\{"hide page top controls"\}% %TMPL:DEF\{"top"\}%%TMPL:END%
+
 %TMPL:DEF\{"script:topictemplate"\}%%TMPL:END%
 
 %TMPL:DEF\{"formstartstep"\}%
index 11bc0a0..1f1c0cf 100644 (file)
@@ -69,7 +69,7 @@ Like many other TWiki extensions, this module is shipped with a fully automatic
   </tr>
   <tr>
     <td align="right"> Plugin Version: </td>
-    <td> 15487 (22 Jan 2008) </td>
+    <td> 15487 (04 Aug 2008) </td>
   </tr>
   <tr>
     <td align="right"> Change History: </td>
index ab8948b..f292aad 100644 (file)
@@ -15,6 +15,7 @@ Query searches are defined using a simple SQL-like query language. The language
         <li><a href="#Constants"> Constants</a></li>
         <li><a href="#Operators"> Operators</a></li>
         <li><a href="#Putting it all together"> Putting it all together</a></li>
+        <li><a href="#Gotcha"> Gotcha</a></li>
         <li><a href="#Examples"> Examples</a><ul>
             <li><a href="#Query examples"> Query examples</a></li>
             <li><a href="#Search examples"> Search examples</a></li>
@@ -50,7 +51,8 @@ All meta-data in a topic is referenced according to a to a simple plan.
   - `author`
   - `date`
   - `format`
-  - `version`
+  - `rev` - topic revision (`12`) to match `%REVINFO{'$rev'}%` and [[FormattedSearch]] `$rev`
+  - `version` - internal Store topic version (`1.12` for rcs based Stores)
 - `META:TOPICMOVED`
   - `by`
   - `date`
@@ -206,6 +208,10 @@ When a query is applied to a topic, the goal is to reduce to a TRUE or FALSE val
 
 A query matches if the query returns one or more values when it is applied to the topic. So if I have a very simple query, such as `"attachments"`, then this will return TRUE for all topics that have one or more attachments. If I write `"attachments[size>1024 AND name ~ '*.gif']"` then it will return TRUE for all topics that have at least one attachment larger than 1024 bytes with a name ending in `.gif`.
 
+## <a name="Gotcha"></a> Gotcha
+
+- Remember that in the query language, TWiki topic names are _constants_. You cannot write `Main.UserTopic/UserForm.firstName` because `Main.UserTopic` will be interpreted as a form field name. If you want to refer to topics you **must** enclose the topic name in quotes i.e. `'Main.UserTopic'/UserForm.firstName`
+
 ## <a name="Examples"></a> Examples
 
 ### <a name="Query examples"></a> Query examples
@@ -215,7 +221,7 @@ A query matches if the query returns one or more values when it is applied to th
 - `(Firstname='Emma' OR Firstname='John') AND Lastname='Peel'` - shortcut form of the previous query
 - `HistoryForm[name='Age'].value>2` - true if the topic has a `HistoryForm`, and the form has a field called `Age` with a value &gt; 2
 - `HistoryForm.Age > 2` - shortcut for the previous query
-- =preferences[name='FaveColour' AND value='Tangerine'] - true if the topic has the given preference setting and value
+- `preferences[name='FaveColour' AND value='Tangerine']` - true if the topic has the given preference setting and value
 - <code>Person/([[ClothesForm]][name='Headgear'].value ~ '\*Bowler\*' AND attachments[name~'\*hat.gif' AND date &lt; d2n('2007-01-01')])</code> - true if the form attached to the topic has a field called `Person` that has a value that is the name of a topic, and that topic contains the form `ClothesForm`, with a field called `Headgear`, and the value of that field contains the string `'Bowler'`, and the topic also has at least one attachment that has a name matching `*hat.gif` and a date before 1st Jan 2007. (Phew!)
 
 ### <a name="Search examples"></a> Search examples
index 3d5a2c7..8171b71 100644 (file)
@@ -1,25 +1,33 @@
 # <a name="%WIKITOOLNAME% Site Map"></a> %WIKITOOLNAME% Site Map
 
-<table bgcolor="#000000" border="0" cellpadding="3" cellspacing="2" width="100%">
-  <tr bgcolor="#eeeeee">
-    <th> Web </th>
-    <th> %WIKITOOLNAME% Site Map </th>
-    <th> Use to... </th>
-  </tr>
+<table border="1" cellpadding="0" cellspacing="0">
   <tr>
-    <td>
-      <h1><a name="TWiki Installation Error"></a> TWiki Installation Error </h1>Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags) </td>
+    <th bgcolor="#99CCCC"><strong> TWiki Web </strong></th>
+    <th bgcolor="#99CCCC"><strong> Description of Web </strong></th>
+    <th bgcolor="#99CCCC"><strong> Used to... </strong></th>
+    <th bgcolor="#99CCCC"><strong> Links </strong></th>
   </tr>
-  <tr bgcolor="#ffffff">
-    <td colspan="3">You can use color coding by web for identification and reference. This table is updated automatically based on WebPreferences settings of the individual webs. Contact if you need a separate collaboration web for your team. See also [[Main/AdminToolsCategory]].</td>
+</table>
+
+# <a name="TWiki Installation Error"></a> TWiki Installation Error
+
+Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags)
+
+<table border="1" cellpadding="0" cellspacing="0">
+  <tr>
+    <td colspan="4"> You can use color coding by web for identification and reference. This table is updated automatically based on WebPreferences settings of the individual webs. Contact if you need a separate collaboration web for your team. See also [[Main/AdminToolsCategory]]. </td>
   </tr>
 </table>
-<table border="0" cellpadding="3" cellspacing="2">
-  <tr bgcolor="#ffffff">
-    <td valign="top"> Legend of icons: </td>
-    <td valign="top">  </td>
-    <td valign="top"><img alt="Home of web" border="0" height="16" src="http://www.dementia.org/twiki//view/%SYSTEMWEB%/TWikiDocGraphics/home.gif" width="16" /> = Go to the home of the web%BR% <img alt="Search web" border="0" height="16" src="http://www.dementia.org/twiki//view/%SYSTEMWEB%/TWikiDocGraphics/searchtopic.gif" width="16" /> = Search the web </td>
-    <td valign="top">  </td>
-    <td valign="top"><img alt="Recent changes in the web" border="0" height="16" src="http://www.dementia.org/twiki//view/%SYSTEMWEB%/TWikiDocGraphics/recentchanges.gif" width="16" /> = See recent changes in the web%BR% <img alt="Get notified of changes to the web" border="0" height="16" src="http://www.dementia.org/twiki//view/%SYSTEMWEB%/TWikiDocGraphics/notify.gif" width="16" /> = Subscribe to get notified of changes by e-mail </td>
+
+<table border="1" cellpadding="0" cellspacing="0">
+  <tr>
+    <td> Legend: </td>
+    <td><img align="top" alt="home" border="0" height="16" src="http://www.dementia.org/twiki//view/Main/WebHome/home.gif" width="16" /> Go to the home of the web </td>
+    <td><img align="top" alt="recentchanges" border="0" height="16" src="http://www.dementia.org/twiki//view/Main/WebHome/recentchanges.gif" width="16" /> See recent changes in the web </td>
+  </tr>
+  <tr>
+    <td> ^ </td>
+    <td><img align="top" alt="searchtopic" border="0" height="16" src="http://www.dementia.org/twiki//view/Main/WebHome/searchtopic.gif" width="16" /> Search the web </td>
+    <td><img align="top" alt="notify" border="0" height="16" src="http://www.dementia.org/twiki//view/Main/WebHome/notify.gif" width="16" /> Subscribe to get notified of changes by e-mail </td>
   </tr>
 </table>
index 8f46316..463c6ad 100644 (file)
@@ -239,13 +239,17 @@ The part between the rulers defines the default format of a slide:
   </tr>
   <tr>
     <td align="right"> Plugin Version: </td>
-    <td> 29 Sep 2007 (15091) </td>
+    <td> 02 Aug 2008 </td>
   </tr>
   <tr>
     <td align="right"> Change History: </td>
     <td>  </td>
   </tr>
   <tr>
+    <td align="right"> 02 Aug 2008: </td>
+    <td> Fixed corruption of preview </td>
+  </tr>
+  <tr>
     <td align="right"> 29 Sep 2007: </td>
     <td> Added %SYSTEMWEB%.VarSLIDESHOWSTART and %SYSTEMWEB%.VarSLIDESHOWEND to have them listed in %SYSTEMWEB%.TWikiVariables </td>
   </tr>
index 8e278a9..fcac707 100644 (file)
@@ -219,7 +219,7 @@ Global variables are avoided wherever possible to avoid problems with CGI accele
 - `users` TWiki::Users singleton
 - `webName` Name of web found in URL path, or `web` URL parameter, or \{UsersWebName\}
 
-This package has smell factor of **32**
+This package has smell factor of **34**
 
 ## <a name="TWiki::Form"></a> [[TWiki::Form|Main/TWikiFormDotPm]]
 
@@ -494,7 +494,7 @@ Plugins may throw TWiki::OopsException. For example:
 
     Handle conversion of plural topic names to singular form.
 
-    This package has smell factor of *3*
+    This package doesn't smell
 
     ---++ [[TWikiPrefsDotPm][TWiki::Prefs]]
 
@@ -602,7 +602,7 @@ Plugins may throw TWiki::OopsException. For example:
 
     This module implements all the search functionality.
 
-    This package has smell factor of *15*
+    This package has smell factor of *14*
 
     ---++ [[TWikiStoreDotPm][TWiki::Store]]
 
@@ -751,7 +751,7 @@ Plugins may throw TWiki::OopsException. For example:
     Search .txt files in $dir for $searchString. See RcsFile::searchInWebContent
     for details.
 
-    This package has smell factor of *1*
+    This package has smell factor of *3*
 
     ---++ [[TWikiStoreSearchAlgorithmsPurePerlDotPm][TWiki::Store::SearchAlgorithms::PurePerl]]
 
@@ -797,7 +797,7 @@ Plugins may throw TWiki::OopsException. For example:
 
     UI functions for web, topic and user management
 
-    This package has smell factor of *5*
+    This package has smell factor of *4*
 
     ---++ [[TWikiUIOopsDotPm][TWiki::UI::Oops]]
 
@@ -870,7 +870,7 @@ Plugins may throw TWiki::OopsException. For example:
     The null prefix is reserver for the TWikiUserMapping for compatibility
     with old TWiki releases.
 
-    __Note:__ in all the following documentation, =$user= refers to a
+    __Note:__ in all the following documentation, =$cUID= refers to a
     *canonical user id*.
 
     This package has smell factor of *1*
@@ -888,6 +888,28 @@ Plugins may throw TWiki::OopsException. For example:
 
     This package has smell factor of *1*
 
+    ---++ [[TWikiUsersBaseUserMappingDotPm][TWiki::Users::BaseUserMapping]]
+
+    User mapping is the process by which TWiki maps from a username (a login name)
+    to a display name and back. It is also where groups are maintained.
+
+    The BaseMapper provides support for a small number of predefined users.
+    No registration - this is a read only usermapper. It uses the mapper
+    prefix 'BaseUserMapping_'.
+
+    ---++ Users
+       * TWikiAdmin - uses the password that was set in Configure (IF its not null)
+       * TWikiGuest
+       * UnknownUser
+       * TWikiContributor - 1 Jan 2005
+       * TWikiRegistrationAgent - 1 Jan 2005
+
+    ---+++ Groups
+       * $TWiki::cfg{SuperAdminGroup}
+       * TWikiBaseGroup
+
+    This package has smell factor of *2*
+
     ---++ [[TWikiUsersDotPm][TWiki::Users]]
     This package provides services for the lookup and manipulation of login and
     wiki names of users, and their authentication.
@@ -934,8 +956,9 @@ Plugins may throw TWiki::OopsException. For example:
          login name may have many emails.
 
     *NOTE:*
-       * wherever the code references $user, its a canonical_id
+       * wherever the code references $cUID, its a canonical_id
        * wherever the code references $group, its a group_name
+       * $name may be a group or a cUID
 
     This package has smell factor of *5*
 
@@ -958,4 +981,4 @@ Plugins may throw TWiki::OopsException. For example:
 
     This package doesn't smell
 
-     There were a total of *192* smells
+     There were a total of *193* smells
index 4d0e021..9eac3e6 100644 (file)
@@ -26,6 +26,7 @@ TWiki Access Control allows you restrict access to single topics and entire webs
             <li><a href="#How TWiki evaluates ALLOW/DENY s"> How TWiki evaluates ALLOW/DENY settings</a></li>
           </ul>
         </li>
+        <li><a href="#Access control and INCLUDE"> Access control and INCLUDE</a></li>
         <li><a href="#Access Control quick recipes"> Access Control quick recipes</a><ul>
             <li><a href="#Obfuscating Webs"> Obfuscating Webs</a></li>
             <li><a href="#Restrict Access to Whole TWiki S"> Restrict Access to Whole TWiki Site</a></li>
@@ -169,7 +170,9 @@ Remember when opening up access to specific topics within a restricted web that
 
 The same rules apply to ALLOWTOPICCHANGE/DENYTOPICCHANGE and APPLYTOPICRENAME/DENYTOPICRENAME. Setting ALLOWTOPICCHANGE or ALLOWTOPICRENAME to en empty value means the same as not defining it. Setting DENYTOPICCHANGE or DENYTOPICRENAME to an empty value means that anyone can edit or rename the topic.
 
-%X% _The setting to an empty has caused confusion and great debate and it has been decided that the empty setting syntax will be replaced by something which is easier to understand in the 4.2 version of TWiki. A method to upgrade will be provided. Please read the release notes carefully when you upgrade._
+%X% If the same setting is defined multiple times the last one overrides the previous. They are not OR'ed together.
+
+%X% _The setting to an empty has caused confusion and great debate and it has been decided that the empty setting syntax will be replaced by something which is easier to understand in a later version of TWiki. A method to upgrade will be provided. Please read the release notes carefully when you upgrade._
 
 See "How TWiki evaluates ALLOW/DENY settings" below for more on how ALLOW and DENY interacts.
 
@@ -222,6 +225,15 @@ When deciding whether to grant access, TWiki evaluates the following rules in or
   - everyone else will be **DENIED**
 7. If you got this far, access is **PERMITTED**
 
+## <a name="Access control and INCLUDE"></a> Access control and INCLUDE
+
+ALLOWTOPICVIEW and ALLOWTOPICCHANGE only applies to the topic in which the settings are defined. If a topic A includes another topic B, topic A does not inherit the access rights of the included topic B.
+
+Examples: Topic A includes topic B
+
+- If the included topic B has ALLOWTOPICCHANGE set to block editing for a user, it does not prevent editing the including topic A.
+- If the included topic B has ALLOWTOPICVIEW set to block view for a user, the user can still view topic A but he cannot see the included topic B. He will see a message _No permission to view B_
+
 ## <a name="Access Control quick recipes"></a> Access Control quick recipes
 
 ### <a name="Obfuscating Webs"></a> Obfuscating Webs
@@ -268,7 +280,7 @@ Use the following setup to provide unrestricted viewing access to open webs, wit
 
 ### <a name="Hide Control Settings"></a> Hide Control Settings
 
-**_%T% Tip:_** To hide access control settings from normal browser viewing, you can put them into the topic-local settings. You can access those settings via the "More" screen, as explained in [[TWikiVariables|Main/TWikiVariables#Setting_Preferences_Variables]].
+**_%T% Tip:_** To hide access control settings from normal browser viewing, you can put them into the _topic preference settings_ by clicking the link `Edit topic preference settings` under `More topic actions` menu. Preferences set in this manner are not visible in the topic text, but take effect nevertheless. Access control settings added as topic preference settings are stored in the topic meta data and they override settings defined in the topic text.
 
 Alternatively, place them in HTML comment markers, but this exposes the access setting during ordinary editing.
 
index aeb2533..faf5bd1 100644 (file)
@@ -531,6 +531,18 @@ Other usage: [[see below|Main/TOPIC#Usage_extended]].
     <td bgcolor="#ffffff" style=""><code>%ICON{group}%</code></td>
   </tr>
   <tr>
+    <td bgcolor="#ffffff" style=""><img alt="Active user" src="http://www.dementia.org/twiki//view/useractive.gif" title="Active user" /></td>
+    <td bgcolor="#ffffff" style=""><code>useractive.gif</code></td>
+    <td bgcolor="#ffffff" style=""> Active user </td>
+    <td bgcolor="#ffffff" style=""><code>%ICON{useractive}%</code></td>
+  </tr>
+  <tr>
+    <td bgcolor="#ffffff" style=""><img alt="Inactive user" src="http://www.dementia.org/twiki//view/userinactive.gif" title="Inactive user" /></td>
+    <td bgcolor="#ffffff" style=""><code>userinactive.gif</code></td>
+    <td bgcolor="#ffffff" style=""> Inactive user </td>
+    <td bgcolor="#ffffff" style=""><code>%ICON{userinactive}%</code></td>
+  </tr>
+  <tr>
     <td bgcolor="#ffffff" style=""><img alt="Building" src="http://www.dementia.org/twiki//view/building.gif" title="Building" /></td>
     <td bgcolor="#ffffff" style=""><code>building.gif</code></td>
     <td bgcolor="#ffffff" style=""> Building </td>
@@ -1311,6 +1323,12 @@ Other usage: [[see below|Main/TOPIC#Usage_extended]].
     <td bgcolor="#ffffff" style=""><code>%ICON{line_ur}%</code></td>
   </tr>
   <tr>
+    <td bgcolor="#ffffff" style=""><img alt="" src="http://www.dementia.org/twiki//view/line_ur_gray.gif" title="" /></td>
+    <td bgcolor="#ffffff" style=""><code>line_ur_gray.gif</code></td>
+    <td bgcolor="#ffffff" style=""> Line graph up-right, gray </td>
+    <td bgcolor="#ffffff" style=""><code>%ICON{line_ur_gray}%</code></td>
+  </tr>
+  <tr>
     <td bgcolor="#ffffff" style=""><img alt="" src="http://www.dementia.org/twiki//view/dot_ld.gif" title="" /></td>
     <td bgcolor="#ffffff" style=""><code>dot_ld.gif</code></td>
     <td bgcolor="#ffffff" style=""> Dot graph left-down </td>
@@ -1382,6 +1400,12 @@ Other usage: [[see below|Main/TOPIC#Usage_extended]].
     <td bgcolor="#ffffff" style=""> Empty transparent 16x16 spacer </td>
     <td bgcolor="#ffffff" style=""><code>%ICON{empty}%</code></td>
   </tr>
+  <tr>
+    <td bgcolor="#ffffff" style=""><img alt="" src="http://www.dementia.org/twiki//view/parent_gray.gif" title="" /></td>
+    <td bgcolor="#ffffff" style=""><code>parent_gray.gif</code></td>
+    <td bgcolor="#ffffff" style=""> Parent arrow </td>
+    <td bgcolor="#ffffff" style=""><code>%ICON{parent_gray}%</code></td>
+  </tr>
 </table>
 
 ### <a name="Filetype icons"></a><a name=" Filetype icons"></a> <img src="http://www.dementia.org/twiki//view/Main/WebHome/gif.gif" width="16" height="16" alt="gif" /> Filetype icons
@@ -1402,6 +1426,12 @@ Filetype icons are used by the attachment table and are seldom used in topics. W
     <td bgcolor="#ffffff" style=""><code>%ICON{as}%</code></td>
   </tr>
   <tr>
+    <td bgcolor="#ffffff" style=""><img alt="air" src="http://www.dementia.org/twiki//view/air.gif" title="air" /></td>
+    <td bgcolor="#ffffff" style=""><code>air.gif</code></td>
+    <td bgcolor="#ffffff" style=""> Adobe Air </td>
+    <td bgcolor="#ffffff" style=""><code>%ICON{air}%</code></td>
+  </tr>
+  <tr>
     <td bgcolor="#ffffff" style=""><img alt="bat" src="http://www.dementia.org/twiki//view/bat.gif" title="bat" /></td>
     <td bgcolor="#ffffff" style=""><code>bat.gif</code></td>
     <td bgcolor="#ffffff" style=""> MS-DOS batch file </td>
@@ -1420,6 +1450,12 @@ Filetype icons are used by the attachment table and are seldom used in topics. W
     <td bgcolor="#ffffff" style=""><code>%ICON{c}%</code></td>
   </tr>
   <tr>
+    <td bgcolor="#ffffff" style=""><img alt="css" src="http://www.dementia.org/twiki//view/css.gif" title="css" /></td>
+    <td bgcolor="#ffffff" style=""><code>css.gif</code></td>
+    <td bgcolor="#ffffff" style=""> Cascading Style Sheet file </td>
+    <td bgcolor="#ffffff" style=""><code>%ICON{css}%</code></td>
+  </tr>
+  <tr>
     <td bgcolor="#ffffff" style=""><img alt="dll" src="http://www.dementia.org/twiki//view/dll.gif" title="dll" /></td>
     <td bgcolor="#ffffff" style=""><code>dll.gif</code></td>
     <td bgcolor="#ffffff" style=""> Dynamic Linked Library; Microsoft application file </td>
index 2db6a2e..3346445 100644 (file)
@@ -57,19 +57,19 @@ A full history of the changes to this API can be found at the end of this topic.
             <li><a href="#get_CanonicalUserID( $user ) ->"> getCanonicalUserID( $user ) -&gt; $cUID</a></li>
             <li><a href="#get_WikiName( $user ) -> $wikiNa"> getWikiName( $user ) -&gt; $wikiName</a></li>
             <li><a href="#get_WikiUserName( $user ) -> $wi"> getWikiUserName( $user ) -&gt; $wikiName</a></li>
-            <li><a href="#wiki_ToUserName( $wikiName ) ->"> wikiToUserName( $wikiName ) -&gt; $loginName</a></li>
+            <li><a href="#wiki_ToUserName( $id ) -> $login"> wikiToUserName( $id ) -&gt; $loginName</a></li>
             <li><a href="#user_ToWikiName( $loginName, $do"> userToWikiName( $loginName, $dontAddWeb ) -&gt; $wikiName</a></li>
             <li><a href="#email_ToWikiNames( $email, $dont"> emailToWikiNames( $email, $dontAddWeb ) -&gt; @wikiNames</a></li>
-            <li><a href="#wiki_NameToEmails( $wikiname ) -"> wikiNameToEmails( $wikiname ) -&gt; @emails</a></li>
+            <li><a href="#wikiname_ToEmails( $user ) -> @e"> wikinameToEmails( $user ) -&gt; @emails</a></li>
             <li><a href="#isGuest( ) -> $boolean"> isGuest( ) -&gt; $boolean</a></li>
-            <li><a href="#is_AnAdmin( $login ) -> $boolean"> isAnAdmin( $login ) -&gt; $boolean</a></li>
-            <li><a href="#is_GroupMember( $group, $login )"> isGroupMember( $group, $login ) -&gt; $boolean</a></li>
+            <li><a href="#is_AnAdmin( $id ) -> $boolean"> isAnAdmin( $id ) -&gt; $boolean</a></li>
+            <li><a href="#is_GroupMember( $group, $id ) ->"> isGroupMember( $group, $id ) -&gt; $boolean</a></li>
             <li><a href="#eachUser() -> $iterator"> eachUser() -&gt; $iterator</a></li>
-            <li><a href="#eachMembership($wikiname) -> $it"> eachMembership($wikiname) -&gt; $iterator</a></li>
+            <li><a href="#eachMembership($id) -> $iterator"> eachMembership($id) -&gt; $iterator</a></li>
             <li><a href="#eachGroup() -> $iterator"> eachGroup() -&gt; $iterator</a></li>
             <li><a href="#isGroup( $group ) -> $boolean"> isGroup( $group ) -&gt; $boolean</a></li>
             <li><a href="#each_GroupMember($group) -> $ite"> eachGroupMember($group) -&gt; $iterator</a></li>
-            <li><a href="#check_AccessPermission( $type, $"> checkAccessPermission( $type, $wikiName, $text, $topic, $web, $meta ) -&gt; $boolean</a></li>
+            <li><a href="#check_AccessPermission( $type, $"> checkAccessPermission( $type, $id, $text, $topic, $web, $meta ) -&gt; $boolean</a></li>
           </ul>
         </li>
         <li><a href="#Webs, Topics and Attachments"> Webs, Topics and Attachments</a><ul>
@@ -475,13 +475,13 @@ Return: `$loginName` Default user name, e.g. `'guest'`
 
 ### <a name="get_CanonicalUserID( $user ) - $"></a> getCanonicalUserID( $user ) -&gt; $cUID
 
-Return the cUID of the specified user. A cUID is a unique identifier which is assigned by TWiki for each user. BEWARE: While the default [[TWikiUserMapping]] uses a cUID that looks like a user's [[LoginName]], some characters are modified to make them compatible with rcs. Additionally, other usermappings will use other conventions - the [[JoomlauserMapping]] for example, has cUIDs like 'JoomlaeUserMapping\_1234'.
+- `$user` can be a login, wikiname or web.wikiname
 
-If $user is undefined Get the cUID of logged in user, and will generally be 'BaseUserMapping\_666'
+Return the cUID of the specified user. A cUID is a unique identifier which is assigned by TWiki for each user. BEWARE: While the default [[TWikiUserMapping]] uses a cUID that looks like a user's [[LoginName]], some characters are modified to make them compatible with rcs. Other usermappings may use other conventions - the JoomlaUserMapping for example, has cUIDs like 'JoomlaeUserMapping\_1234'.
 
-- $user can be a cUID, login, wikiname or web.wikiname
+If $user is undefined, it assumes the currently logged-in user.
 
-Return: `$cUID` an internal unique and transportable escaped identifier for registered users (they can be autogenerated for an authenticated but unregistered user)
+Return: `$cUID`, an internal unique and portable escaped identifier for registered users. This may be autogenerated for an authenticated but unregistered user.
 
 **Since:** TWiki::Plugins::VERSION 1.2
 
@@ -505,11 +505,11 @@ Return: `$wikiName` Wiki Name, e.g. `"Main.JohnDoe"`
 
 **Since:** TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
 
-### <a name="wiki_ToUserName( $wikiName ) - $"></a> wikiToUserName( $wikiName ) -&gt; $loginName
+### <a name="wiki_ToUserName( $id ) - $loginN"></a> wikiToUserName( $id ) -&gt; $loginName
 
-Translate a Wiki name (or login name or cUID, if it can) to a login name.
+Translate a Wiki name to a login name.
 
-- `$wikiName` - Wiki name, e.g. `'Main.JohnDoe'` or `'JohnDoe'`
+- `$id` - Wiki name, e.g. `'Main.JohnDoe'` or `'JohnDoe'`. Since TWiki 4.2.1, $id may also be a login name. This will normally be transparent, but should be borne in mind if you have login names that are also legal wiki names.
 
 Return: `$loginName` Login name of user, e.g. `'jdoe'`, or undef if not matched.
 
@@ -523,12 +523,12 @@ returns undef if the [[WikiName]] is not found.
 
 Translate a login name to a Wiki name
 
-- `$loginName` - Login name, e.g. `'jdoe'`
+- `$loginName` - Login name, e.g. `'jdoe'`. Since TWiki 4.2.1 this may also be a wiki name. This will normally be transparent, but may be relevant if you have login names that are also valid wiki names.
 - `$dontAddWeb` - Do not add web prefix if `"1"`
 
 Return: `$wikiName` Wiki name of user, e.g. `'Main.JohnDoe'` or `'JohnDoe'`
 
-userToWikiName will always return a name, if the user does not exist in the mapping, the $loginName parameter is returned. (backward compatibility)
+userToWikiName will always return a name. If the user does not exist in the mapping, the $loginName parameter is returned. (backward compatibility)
 
 **Since:** TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
 
@@ -541,11 +541,13 @@ Find the wikinames of all users who have the given email address as their regist
 
 **Since:** TWiki::Plugins::VERSION 1.2
 
-### <a name="wiki_NameToEmails( $wikiname ) -"></a> wikiNameToEmails( $wikiname ) -&gt; @emails
+### <a name="wikiname_ToEmails( $user ) - @em"></a> wikinameToEmails( $user ) -&gt; @emails
+
+- `$user` - wikiname of user to look up
 
-- `$wikiname` - wikiname of user to look up
+Returns the registered email addresses of the named user. If $user is undef, returns the registered email addresses for the logged-in user.
 
-Returns the registered email addresses of the named user. If $wikiname is undef, returns the registered email addresses for the logged-in user.
+Since TWiki 4.2.1, $user may also be a login name, or the name of a group.
 
 **Since:** TWiki::Plugins::VERSION 1.2
 
@@ -555,17 +557,17 @@ Test if logged in user is a guest ([[TWikiGuest]])
 
 **Since:** TWiki::Plugins::VERSION 1.000 (7 Dec 2002)
 
-### <a name="is_AnAdmin( $login ) - $boolean"></a> isAnAdmin( $login ) -&gt; $boolean
+### <a name="is_AnAdmin( $id ) - $boolean"></a> isAnAdmin( $id ) -&gt; $boolean
 
 Find out if the user is an admin or not. If the user is not given, the currently logged-in user is assumed.
 
-- $login can be either a login, or a CUID
+- $id can be either a login name or a [[WikiName]]
 
 **Since:** TWiki::Plugins::VERSION 1.2
 
-### <a name="is_GroupMember( $group, $login )"></a> isGroupMember( $group, $login ) -&gt; $boolean
+### <a name="is_GroupMember( $group, $id ) -"></a><a name="is_GroupMember( $group, $id ) - "></a> isGroupMember( $group, $id ) -&gt; $boolean
 
-Find out if $login is in the named group. e.g.
+Find out if $id is in the named group. e.g.
 
     if( TWiki::Func::isGroupMember( "HesperionXXGroup", "jordi" )) {
         ...
@@ -573,7 +575,7 @@ Find out if $login is in the named group. e.g.
 
 If `$user` is `undef`, it defaults to the currently logged-in user.
 
-- $login can be a login name, or a cUID, or [[WikiName]]
+- $id can be a login name or a [[WikiName]]
 
 **Since:** TWiki::Plugins::VERSION 1.2
 
@@ -593,9 +595,11 @@ Use it as follows:
 
 **Since:** TWiki::Plugins::VERSION 1.2
 
-### <a name="eachMembership($wikiname) - $ite"></a> eachMembership($wikiname) -&gt; $iterator
+### <a name="eachMembership($id) - $iterator"></a> eachMembership($id) -&gt; $iterator
 
-Get an iterator over the names of all groups that the user is a member of. If `$wikiname` is `undef`, defaults to the currently logged-in user.
+- `$id` - [[WikiName]] or login name of the user. If `$id` is `undef`, defaults to the currently logged-in user.
+
+Get an iterator over the names of all groups that the user is a member of.
 
 **Since:** TWiki::Plugins::VERSION 1.2
 
@@ -635,12 +639,12 @@ Use it as follows:
 
 **Since:** TWiki::Plugins::VERSION 1.2
 
-### <a name="check_AccessPermission( $type, $"></a> checkAccessPermission( $type, $wikiName, $text, $topic, $web, $meta ) -&gt; $boolean
+### <a name="check_AccessPermission( $type, $"></a> checkAccessPermission( $type, $id, $text, $topic, $web, $meta ) -&gt; $boolean
 
 Check access permission for a topic based on the [[%SYSTEMWEB%.TWikiAccessControl|SYSTEMWEB/TWikiAccessControl]] rules
 
 - `$type` - Access type, required, e.g. `'VIEW'`, `'CHANGE'`.
-- `$wikiName` - [[WikiName]] of remote user, required, e.g. `"PeterThoeny"`. If `$wikiName` is '', 0 or `undef` then access is **always permitted**.
+- `$id` - [[WikiName]] of remote user, required, e.g. `"PeterThoeny"`. From TWiki 4.2.1, $id may also be a login name. If `$id` is '', 0 or `undef` then access is **always permitted**.
 - `$text` - Topic text, optional. If 'perl false' (undef, 0 or ''), topic `$web.$topic` is consulted. `$text` may optionally contain embedded `%META:PREFERENCE` tags. Provide this parameter if:
   1. You are setting different access controls in the text to those defined in the stored topic,
   2. You already have the topic text in hand, and want to help TWiki avoid having to read it again,
@@ -651,7 +655,7 @@ Check access permission for a topic based on the [[%SYSTEMWEB%.TWikiAccessContro
 
 A perl true result indicates that access is permitted.
 
-**Note** the wierd parameter order is due to compatibility constraints with earlier TWiki releases.
+**Note** the weird parameter order is due to compatibility constraints with earlier TWiki releases.
 
 **Tip** if you want, you can use this method to check your own access control types. For example, if you:
 
@@ -746,8 +750,8 @@ Use it as follows:
 
         my $iterator = TWiki::Func::eachChangeSince(
             $web, time() - 7 * 24 * 60 * 60); # the last 7 days
-        while ($it->hasNext()) {
-            my $change = $it->next();
+        while ($iterator->hasNext()) {
+            my $change = $iterator->next();
             # $change is a perl hash that contains the following fields:
             # topic => topic name
             # user => wikiname - wikiname of user who made the change
@@ -814,8 +818,8 @@ It is **impossible** to fully lock a topic. Concurrent changes will be merged.
     <td> don't log this change in twiki log </td>
   </tr>
   <tr>
-    <td><code>comment</code></td>
-    <td> comment for save </td>
+    <td><code>forcenewrevision</code></td>
+    <td> force the save to increment the revision counter </td>
   </tr>
   <tr>
     <td><code>minor</code></td>
@@ -831,7 +835,7 @@ For example,
 
     my( $meta, $text ) = TWiki::Func::readTopic( $web, $topic )
     $text =~ s/APPLE/ORANGE/g;
-    TWiki::Func::saveTopic( $web, $topic, $meta, $text, { comment => 'refruited' } );
+    TWiki::Func::saveTopic( $web, $topic, $meta, $text, { forcenewrevision => 1 } );
 
 **_Note:_** Plugins handlers ( e.g. `beforeSaveHandler` ) will be called as appropriate.
 
@@ -1265,12 +1269,16 @@ Leave a blank line between the last header field and the message body.
 
 ### <a name="wiki_ToEmail( $wikiName ) - $ema"></a> wikiToEmail( $wikiName ) -&gt; $email
 
-- `$wikiName` - wiki name of the user
+- `$wikiname` - wiki name of the user
 
 Get the e-mail address(es) of the named user. If the user has multiple e-mail addresses (for example, the user is a group), then the list will be comma-separated.
 
 **Since:** TWiki::Plugins::VERSION 1.1
 
+**Deprecated** in favour of wikinameToEmails, because this function only returns a single email address, where a user may in fact have several.
+
+Since TWiki 4.2.1, $wikiName may also be a login name.
+
 ## <a name="Creating New Topics"></a> Creating New Topics
 
 ### <a name="expand_VariablesOnTopicCreation"></a><a name="expand_VariablesOnTopicCreation "></a> expandVariablesOnTopicCreation ( $text ) -&gt; $text
index e7a7be4..6443d25 100644 (file)
@@ -3,7 +3,7 @@
 <div>
   <ul>
     <li><a href="#Appendix A: TWiki Development Ti"> Appendix A: TWiki Development Time-line</a><ul>
-        <li><a href="#TWiki Release 4.2 (Freetown), 22"> TWiki Release 4.2 (Freetown), 22 Jan 2008</a></li>
+        <li><a href="#TWiki Release 4.2.1 (Freetown) r"> TWiki Release 4.2.1 (Freetown) released 00:13:28 04 August 2008</a></li>
         <li><a href="#TWiki Release 4.1 (Edinburgh), 1"> TWiki Release 4.1 (Edinburgh), 16 Jan 2007</a></li>
         <li><a href="#TWiki Release 4.0.0 (Dakar), 01"> TWiki Release 4.0.0 (Dakar), 01 Feb 2006</a></li>
         <li><a href="#01-Sep-2004 Release (Cairo)"> 01-Sep-2004 Release (Cairo)</a></li>
@@ -23,7 +23,9 @@
 
 <a name="FreetownRelease"></a>
 
-## <a name="TWiki Release 4.2 (Freetown), 22"></a> TWiki Release 4.2 (Freetown), 22 Jan 2008
+## <a name="TWiki Release 4.2.1 (Freetown) r"></a> TWiki Release 4.2.1 (Freetown) released 00:13:28 04 August 2008
+
+Patch release following the 4.2.0 released 22 Jan 2008
 
 **_New Features and Enhancements of TWiki Release 4.2_**
 
@@ -67,7 +69,7 @@
 Many people have been involved in creating TWiki 4.2. Special thanks go to the most active contributors in the following areas:
 
 - Release management led by TWiki:Main.KennethLavrsen, ably assisted by TWiki:Main.SvenDowideit
-- Design and development driven by TWiki:Main.CrawfordCurrie, TWiki:Main.ArthurClemens, and TWiki:Main.SvenDowideit
+- Design and development driven by TWiki:Main.CrawfordCurrie, TWiki:Main.ArthurClemens, [[KennethLavrsen]] and TWiki:Main.SvenDowideit
 - Testing driven by TWiki:Main.KennethLavrsen
 
 Many thanks also to the contributors in the following areas:
index 99620e9..81b365b 100644 (file)
@@ -269,7 +269,7 @@ TWiki is written in Perl 5, uses a number of shell commands, and requires [RCS (
   </tr>
   <tr>
     <td> Perl </td>
-    <td> 5.8.4 or higher is recommended </td>
+    <td> 5.8.4 or higher is recommended. TWiki will run in perl 5.6.1 but only with Wysiwyg editor disabled. Wysiwyg requires unicode support which is provided by perl 5.8.1 and forward. </td>
   </tr>
   <tr>
     <td> RCS </td>
@@ -311,6 +311,10 @@ The following Perl [CPAN](http://cpan.perl.org/) modules are used by TWiki:
     <td>   </td>
   </tr>
   <tr>
+    <td> CGI </td>
+    <td> Versions 2.89 and 3.37 must be avoided. Most version from 3.15 and onwards should work. </td>
+  </tr>
+  <tr>
     <td> CGI::Carp </td>
     <td> &gt;=1.26 </td>
   </tr>
index 83ffda3..16eb41f 100644 (file)
@@ -58,7 +58,7 @@ You may NOT use any original artwork from TWiki.org, nor make or use modified ve
 - You may use the 'collaborate with TWiki' logo on a Web site that is powered by the TWiki collaboration platform.
 - You may use the 'collaborate with TWiki' logo in product description and promotional material IF and ONLY IF such use can in no way be interpreted as anything other than an attribution. Using the TWiki name and artwork in a manner that implies endorsement of a product or service is not allowed.
 
-TWiki™, the TWiki logo and the "Collaborate with TWiki" tagline are a trademarks of TWiki:Main.PeterThoeny. The TWiki logo is Copyright 2005 by TWiki:Main.PeterThoeny, TWiki:Main.ArthurClemens and [[TWikiContributors]].
+TWiki<sup>®</sup> is a registered trademarks of TWiki founder [Peter Thoeny](http://twiki.org/cgi-bin/view/Main/PeterThoeny), [TWIKI.NET](http://twiki.net/). The TWiki logo and the "Collaborate with TWiki" tagline are trademarks of Peter Thoeny. The TWiki logo is Copyright 2005 by TWiki:Main.PeterThoeny, TWiki:Main.ArthurClemens and [[TWikiContributors]].
 
 ## <a name="Background and Feedback"></a> Background and Feedback
 
index d085308..fb037e6 100644 (file)
@@ -1,6 +1,6 @@
 # <a name="TWiki Plugins"></a> TWiki Plugins
 
-_Add functionality to TWiki with readily available Plugins; create Plugins based on APIs_
+_Add functionality to TWiki with readily available plugins; create plugins based on APIs_
 
 <div>
   <ul>
@@ -62,15 +62,15 @@ _Add functionality to TWiki with readily available Plugins; create Plugins based
 
 ## <a name="Overview"></a> Overview
 
-You can add Plugins to extend TWiki functionality, without altering the core code. A plug-in approach lets you:
+You can add plugins to extend TWiki functionality, without altering the core 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.
+- rapidly develop new TWiki functions in Perl using the plugin API.
 
-Everything to do with TWiki Plugins - demos, new releases, downloads, development, general discussion - is available at TWiki.org, in the ** TWiki:Plugins ** web.
+Everything to do with TWiki plugins - demos, new releases, downloads, development, general discussion - is available at TWiki.org, in the ** TWiki:Plugins ** web.
 
-TWiki Plugins are developed and contributed by interested members of the community. Plugins are provided on an 'as is' basis; they are not a part of TWiki, but are independently developed and maintained.
+TWiki plugins are developed and contributed by interested members of the community. Plugins are provided on an 'as is' basis; they are not a part of TWiki, but are independently developed and maintained.
 
 **_Relevant links on TWiki.org:_**
 
@@ -86,25 +86,25 @@ TWiki Plugins are developed and contributed by interested members of the communi
 
 ## <a name="Installing Plugins"></a> Installing Plugins
 
-Each TWiki Plugin comes with its own documentation: step-by-step installation instructions, a detailed description of any special requirements, version details, and a working example for testing. Many Plugins have an install script that automates these steps for you.
+Each TWiki plugin comes with its own documentation: step-by-step installation instructions, a detailed description of any special requirements, version details, and a working example for testing. Many plugins have an install script that automates these steps for you.
 
-**Special Requirements:** Some Plugins need certain Perl modules to be preinstalled on the host system. Plugins may also use other resources, like graphics, other modules, applications, and templates. You should be able to find detailed instructions in the Plugin's documentation.
+**Special Requirements:** Some plugins need certain Perl modules to be preinstalled on the host system. Plugins may also use other resources, like graphics, other modules, applications, and templates. You should be able to find detailed instructions in the plugin's documentation.
 
-Each Plugin has a standard release topic, located in the TWiki:Plugins web at TWiki.org. There's usually a number of other related topics, such as a developers page, and an appraisal page.
+Each plugin has a standard release topic, located in the TWiki:Plugins web at TWiki.org. There's usually a number of other related topics, such as a developers page, and an appraisal page.
 
 <a name="PreTesting"></a>
 
 ### <a name="On-Site Pretesting"></a> On-Site Pretesting
 
-The recommended approach to testing new Plugins before making them public is to create a second local TWiki installation, and test the Plugin there. You can allow selected users access to the test area. Once you are satisfied that it won't compromise your main installation, you can install it there as well.
+The recommended approach to testing new plugins before making them public is to create a second local TWiki installation, and test the plugin there. You can allow selected users access to the test area. Once you are satisfied that it won't compromise your main installation, you can install it there as well.
 
-[[InstalledPlugins]] shows which Plugins are: 1) installed, 2) loading properly, and 3) what TWiki:Codev.PluginHandlers they invoke. Any failures are shown in the Errors section. The <code>[[%FAILEDPLUGINS%|Main/VarFAILEDPLUGINS]]</code> variable can be used to debug failures. You may also want to check your webserver error log and the various TWiki log files.
+[[InstalledPlugins]] shows which plugins are: 1) installed, 2) loading properly, and 3) what TWiki:Codev.PluginHandlers they invoke. Any failures are shown in the Errors section. The <code>[[%FAILEDPLUGINS%|Main/VarFAILEDPLUGINS]]</code> variable can be used to debug failures. You may also want to check your webserver error log and the various TWiki log files.
 
 ### <a name="Some Notes on Plugin Performance"></a> Some Notes on Plugin Performance
 
-The performance of the system depends to some extent on the number of Plugins installed and on the Plugin implementation. Some Plugins impose no measurable performance decrease, some do. For example, a Plugin might use many Perl libraries that need to be initialized with each page view (unless you run mod\_perl). You can only really tell the performance impact by installing the Plugin and by measuring the performance with and without the new Plugin. Use the TWiki:Plugins.PluginBenchmarkAddOn, or test manually with the Apache `ab` utility. Example on Unix:%BR% `time wget -qO /dev/null http://www.dementia.org/twiki/view/%SYSTEMWEB%/AbcPlugin`
+The performance of the system depends to some extent on the number of plugins installed and on the plugin implementation. Some plugins impose no measurable performance decrease, some do. For example, a Plugin might use many Perl libraries that need to be initialized with each page view (unless you run mod\_perl). You can only really tell the performance impact by installing the plugin and by measuring the performance with and without the new plugin. Use the TWiki:Plugins.PluginBenchmarkAddOn, or test manually with the Apache `ab` utility. Example on Unix:%BR% `time wget -qO /dev/null http://www.dementia.org/twiki/view/%SYSTEMWEB%/AbcPlugin`
 
-%T% If you need to install an "expensive" Plugin, but you only need its functionality only in a subset of your data, you can disable it elsewhere by defining the %DISABLEDPLUGINS% TWiki variable.
+%T% If you need to install an "expensive" plugin, but you only need its functionality only in a subset of your data, you can disable it elsewhere by defining the %DISABLEDPLUGINS% TWiki variable.
 
 Define `DISABLEDPLUGINS` to be a comma-separated list of names of plugins to disable. Define it in %USERSWEB%.TWikiPreferences to disable those plugins everywhere, in the WebPreferences topic to disable them in an individual web, or in a topic to disable them in that topic. For example,
 
@@ -114,35 +114,39 @@ Define `DISABLEDPLUGINS` to be a comma-separated list of names of plugins to dis
 
 ## <a name="Managing Installed Plugins"></a> Managing Installed Plugins
 
-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:
+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:
 
 ### <a name="Enabling Plugins"></a> Enabling Plugins
 
-Plugins can be enabled and disabled with the [configure](http://www.dementia.org/twiki/configure) script. An installed Plugin needs to be enabled before it can be used.
+Plugins can be enabled and disabled with the [configure](http://www.dementia.org/twiki/configure) script. An installed plugin needs to be enabled before it can be used.
 
 ### <a name="Plugin Evaluation Order"></a> Plugin Evaluation Order
 
-By default, TWiki executes Plugins in alphabetical order on Plugin name. It is possible to change the order, for example to evaluate database variables before the spreadsheet CALCs. This can be done with `{PluginsOrder}` in the Plugins section of [configure](http://www.dementia.org/twiki/configure).
+By default, TWiki executes plugins in alphabetical order on plugin name. It is possible to change the order, for example to evaluate database variables before the spreadsheet CALCs. This can be done with `{PluginsOrder}` in the plugins section of [configure](http://www.dementia.org/twiki/configure).
 
 ### <a name="Plugin-Specific Settings"></a> Plugin-Specific Settings
 
-Plugins are usually configured by variables accessible though the [configure](http://www.dementia.org/twiki/configure) interface, but in some cases (usually older plugins) TWiki preferences are used. If a TWiki variable is defined in a Plugin topic e.g:
+Some plugins are configured with plugin preferences variables, newer plugins with configure variables.
 
-- Set SETTING = Create dynamic foo bar reports
+Configure variables are accessible though the [configure](http://www.dementia.org/twiki/configure) interface.
 
-Then these settings can be retrieved as preferences variables like `%<pluginname>_<var>%`. For example, `%RUBBERPLUGIN_SETTING%` shows the value of SETTING in the RubberPlugin topic.
+Plugin preferences variables are defined in the plugin topic and can be overloaded. The SHORTDESCRIPTION preferences variable is always present, it is needed for the TWiki:Plugins repository on twiki.org. Example preferences variable defined in the [[TablePlugin]] topic:
+
+- `Set SHORTDESCRIPTION = Control attributes of tables and sorting of table columns`
+
+Preferences variables of active plugins can be retrieved anywhere in TWiki with `%<pluginname>_<var>%`, such as `%TABLEPLUGIN_SHORTDESCRIPTION%`. They can also be redefined with the `%<pluginname>_<var>%` setting at a lower level in the [[Main.TWikiPreferences|Main/TWikiPreferences]] or at the web level. For an easier upgrade it is recommended to customize plugin preferences variables in Main.TWikiPreferences only.
 
 ### <a name="Listing Active Plugins"></a> Listing Active Plugins
 
-Plugin status variables let you list all active Plugins wherever needed.
+Plugin status variables let you list all active plugins wherever needed.
 
-This site is running TWiki version **TWiki-4.1.2, Sat, 03 Mar 2007, build 13046**, Plugin API version **1\.11**
+This site is running TWiki version **TWiki-4.1.2, Sat, 03 Mar 2007, build 13046**, plugin API version **1\.11**
 
 <a name="ActivatedPlugins"></a>
 
 #### <a name="=%ACTIVATEDPLUGINS%="></a> `%ACTIVATEDPLUGINS%`
 
-On this TWiki site, the enabled Plugins are: [[SpreadSheetPlugin]], [[CommentPlugin]], [[EditTablePlugin]], [[InterwikiPlugin]], [[PreferencesPlugin]], [[SlideShowPlugin]], [[SmiliesPlugin]], [[TablePlugin]], [[TwistyPlugin]].
+On this TWiki site, the enabled plugins are: [[SpreadSheetPlugin]], [[CommentPlugin]], [[EditTablePlugin]], [[InterwikiPlugin]], [[PreferencesPlugin]], [[SlideShowPlugin]], [[SmiliesPlugin]], [[TablePlugin]], [[TwistyPlugin]].
 
 #### <a name="=%PLUGINDESCRIPTIONS%="></a> `%PLUGINDESCRIPTIONS%`
 
@@ -257,17 +261,17 @@ Plugins: could not fully register TwistyPlugin, no plugin topic
 
 ## <a name="The TWiki Plugin API"></a> The TWiki Plugin API
 
-The Application Programming Interface (API) for TWiki Plugins provides the specifications for hooking into the core TWiki code from your external Perl Plugin module.
+The Application Programming Interface (API) for TWiki plugins provides the specifications for hooking into the core TWiki code from your external Perl plugin module.
 
 ### <a name="Available Core Functions"></a> Available Core Functions
 
-The [[TWikiFuncDotPm]] module (`lib/TWiki/Func.pm`) describes **all** the interfaces available to Plugins. Plugins should **only** use the interfaces described in this module.
+The [[TWikiFuncDotPm]] module (`lib/TWiki/Func.pm`) describes **all** the interfaces available to plugins. Plugins should **only** use the interfaces described in this module.
 
-**_%X% Note:_** If you use other core functions not described 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.
+**_%X% Note:_** If you use other core functions not described 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.
 
 ### <a name="Predefined Hooks"></a> Predefined Hooks
 
-In addition to TWiki core functions, Plugins can use **predefined hooks**, or **callbacks**, as described in the `lib/TWiki/Plugins/EmptyPlugin.pm` module.
+In addition to TWiki core functions, plugins can use **predefined hooks**, or **callbacks**, as described in the `lib/TWiki/Plugins/EmptyPlugin.pm` module.
 
 - All but the initPlugin are disabled. To enable a callback, remove `DISABLE_` from the function name.
 
@@ -277,7 +281,7 @@ TWiki:Codev/StepByStepRenderingOrder helps you decide which rendering handler to
 
 ### <a name="Hints on Writing Fast Plugins"></a> Hints on Writing Fast Plugins
 
-- Delay initialization as late as possible. For example, if your Plugin is a simple syntax processor, you might delay loading extra Perl modules until you actually see the syntax in the text.
+- Delay initialization as late as possible. For example, if your plugin is a simple syntax processor, you might delay loading extra Perl modules until you actually see the syntax in the text.
   - For example, use an `eval` block like this:%BR% `eval { require IPC::Run }` %BR% `return "<font color=\"red\">SamplePlugin: Can't load required modules ($@)</font>" if $@;`
 - Keep the main plugin package as small as possible; create other packages that are loaded if and only if they are used. For example, create sub-packages of BathPlugin in `lib/TWiki/Plugins/BathPlugin/`.
 - Avoid using preferences in the plugin topic; set `$NO_PREFS_IN_TOPIC` if you possibly can, as that will stop TWiki from reading the plugin topic for every page. Use [[Config.spec|Main/WebHome#ConfigSpec]] instead.
@@ -286,49 +290,50 @@ TWiki:Codev/StepByStepRenderingOrder helps you decide which rendering handler to
 
 ### <a name="Version Detection"></a> Version Detection
 
-To eliminate the incompatibility problems that are bound to arise from active open Plugin development, a Plugin versioning system is provided for automatic compatibility checking.
+To eliminate the incompatibility problems that are bound to arise from active open plugin development, a plugin versioning system is provided for automatic compatibility checking.
 
 - All plugin packages require a `$VERSION` variable. This should be an integer, or a subversion version id.
 
 - The `initPlugin` handler should check all dependencies and return 1 if the initialization is OK or 0 if something went wrong.
-  - The Plugin initialization code does not register a Plugin that returns 0 (or that has no `initPlugin` handler).
+  - The plugin initialization code does not register a plugin that returns 0 (or that has no `initPlugin` handler).
 
-- `$TWiki::Plugins::VERSION` in the `TWiki::Plugins` module contains the TWiki Plugin API version, currently **1\.11**.
-  - You can also use the <code>[[%PLUGINVERSION{}%|Main/VarPLUGINVERSION]]</code> variable to query the Plugin API version or the version of installed Plugins.
+- `$TWiki::Plugins::VERSION` in the `TWiki::Plugins` module contains the TWiki plugin API version, currently **1\.11**.
+  - You can also use the <code>[[%PLUGINVERSION{}%|Main/VarPLUGINVERSION]]</code> variable to query the plugin API version or the version of installed plugins.
 
 ### <a name="Security"></a> Security
 
-- Badly written Plugins can open huge security holes in TWiki. This is especially true if care isn't taken to prevent execution of arbitrary commands on the server.
-- Don't allow sensitive configuration data to be edited by users. it is better to add sensitive configuration options to the `%TWiki::cfg` hash than adding it as preferences in the Plugin topic
-  - See TWiki:Plugins.MailInContrib for an example of this
+- Badly written plugins can open huge security holes in TWiki. This is especially true if care isn't taken to prevent execution of arbitrary commands on the server.
+- Don't allow sensitive configuration data to be edited by users. it is better to add sensitive configuration options to the `%TWiki::cfg` hash than adding it as preferences in the plugin topic.
+  - [[Integrating with configure|Main/WebHome#ConfigSpec]] describes the steps
+  - TWiki:Plugins.MailInContrib has an example
   - TWiki:Plugins.BuildContrib can help you with this
 - Always use the TWiki::Sandbox to execute commands.
-- Always audit the Plugins you install, and make sure you are happy with the level of security provided. While every effort is made to monitor Plugin authors activities, at the end of the day they are uncontrolled user contributions.
+- Always audit the plugins you install, and make sure you are happy with the level of security provided. While every effort is made to monitor plugin authors activities, at the end of the day they are uncontrolled user contributions.
 
 <a name="CreatePlugins"></a>
 
 ## <a name="Creating Plugins"></a> 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|Main/WebHome#PluginAPI]] Plugins by providing a programming interface for TWiki.
+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|Main/WebHome#PluginAPI]] provides the programming interface for TWiki.
 
 ### <a name="Anatomy of a Plugin"></a> Anatomy of a Plugin
 
-A (very) basic TWiki Plugin consists of two files:
+A (very) basic TWiki plugin consists of two files:
 
 - a Perl module, e.g. `MyFirstPlugin.pm`
 - a documentation topic, e.g. `MyFirstPlugin.txt`
 
-The Perl module can be a block of code that talks to with TWiki alone, or it can include other elements, like other Perl modules (including other Plugins), graphics, TWiki templates, external applications (ex: a Java applet), or just about anything else it can call. In particular, files that should be web-accessible (graphics, Java applets ...) are best placed as attachments of the `MyFirstPlugin` topic. Other needed Perl code is best placed in a `lib/TWiki/Plugins/MyFirstPlugin/` directory.
+The Perl module can be a block of code that talks to with TWiki alone, or it can include other elements, like other Perl modules (including other plugins), graphics, TWiki templates, external applications (ex: a Java applet), or just about anything else it can call. In particular, files that should be web-accessible (graphics, Java applets ...) are best placed as attachments of the `MyFirstPlugin` topic. Other needed Perl code is best placed in a `lib/TWiki/Plugins/MyFirstPlugin/` directory.
 
-The Plugin API handles the details of connecting your Perl module with main TWiki code. When you're familiar with the [[Plugin API|Main/WebHome#PluginAPI]], you're ready to develop Plugins.
+The plugin API handles the details of connecting your Perl module with main TWiki code. When you're familiar with the [[Plugin API|Main/WebHome#PluginAPI]], you're ready to develop plugins.
 
-_The TWiki::Plugins.BuildContrib module provides a lot of support for plugins development, including a plugin creator, automatic publishing support, and automatic installation script writer. If you plan on writing more than one plugin, you probably need it_.
+_The TWiki:Plugins.BuildContrib module provides a lot of support for plugins development, including a plugin creator, automatic publishing support, and automatic installation script writer. If you plan on writing more than one plugin, you probably need it_.
 
 ### <a name="Creating the Perl Module"></a> Creating the Perl Module
 
 Copy file `lib/TWiki/Plugins/EmptyPlugin.pm` to `<name>Plugin.pm`. The `EmptyPlugin.pm` module contains mostly empty functions, so it does nothing, but it's ready to be used. Customize it. Refer to the [[Plugin API|Main/WebHome#PluginAPI]] specs for more information.
 
-If your Plugin uses its own modules and objects, you must include the name of the Plugin in the package name. For example, write `Package MyFirstPlugin::Attrs;` instead of just `Package Attrs;`. Then call it using:
+If your plugin uses its own modules and objects, you must include the name of the plugin in the package name. For example, write `Package MyFirstPlugin::Attrs;` instead of just `Package Attrs;`. Then call it using:
 
     use TWiki::Plugins::MyFirstPlugin::Attrs;
     $var = MyFirstPlugin::Attrs->new();
@@ -337,32 +342,32 @@ If your Plugin uses its own modules and objects, you must include the name of th
 
 ### <a name="Writing the Documentation Topic"></a> Writing the Documentation Topic
 
-The Plugin documentation topic contains usage instructions and version details. It serves the Plugin files as %SYSTEMWEB%.FileAttachments for downloading. (The doc topic is also included _in_ the [[distribution package|Main/WebHome#CreatePluginPackage]].) To create a documentation topic:
+The plugin documentation topic contains usage instructions and version details. It serves the plugin files as %SYSTEMWEB%.FileAttachments for downloading. (The doc topic is also included _in_ the [[distribution package|Main/WebHome#CreatePluginPackage]].) To create a documentation topic:
 
-1. **Copy** the Plugin topic template from TWiki.org. To copy the text, go to TWiki:Plugins/PluginPackage and:
-  - enter the Plugin name in the "How to Create a Plugin" section
+1. **Copy** the plugin topic template from TWiki.org. To copy the text, go to TWiki:Plugins/PluginPackage and:
+  - enter the plugin name in the "How to Create a Plugin" section
   - click Create
   - select all in the Edit box &amp; copy
   - Cancel the edit
   - go back to your site to the %SYSTEMWEB% web
-  - In the [[GoBox]] enter your Plugin name, for example `MyFirstPlugin`, press enter and create the new topic
-  - paste &amp; save new Plugin topic on your site
-2. **Customize** your Plugin topic.
-  - Important: In case you plan to publish your Plugin on TWiki.org, use Interwiki names for author names and links to TWiki.org topics, such as TWiki:Main/admin. This is important because links should work properly in a Plugin topic installed on any TWiki, not just on TWiki.org.
+  - In the [[GoBox]] enter your plugin name, for example `MyFirstPlugin`, press enter and create the new topic
+  - paste &amp; save new plugin topic on your site
+2. **Customize** your plugin topic.
+  - Important: In case you plan to publish your plugin on TWiki.org, use Interwiki names for author names and links to TWiki.org topics, such as TWiki:Main/admin. This is important because links should work properly in a plugin topic installed on any TWiki, not just on TWiki.org.
 3. **Document** the performance data you gathered while [[measuring the performance|Main/WebHome#MeasurePerformance]]
-4. **Save** your topic, for use in [[packaging|Main/WebHome#CreatePluginPackage]] and [[publishing|Main/WebHome#PublishPlugin]] your Plugin.
+4. **Save** your topic, for use in [[packaging|Main/WebHome#CreatePluginPackage]] and [[publishing|Main/WebHome#PublishPlugin]] your plugin.
 
 > **OUTLINE: Doc Topic Contents**
 >
 > <br />
 >
-> Check the Plugins web on TWiki.org for the latest Plugin doc topic template. Here's a quick overview of what's covered:
+> Check the plugins web on TWiki.org for the latest plugin doc topic template. Here's a quick overview of what's covered:
 >
 > **Syntax Rules:** &lt;_Describe any special text formatting that will be rendered._&gt;"
 >
-> **Example:** &lt;_Include an example of the Plugin in action. Possibly include a static HTML version of the example to compare if the installation was a success!_&gt;"
+> **Example:** &lt;_Include an example of the plugin in action. Possibly include a static HTML version of the example to compare if the installation was a success!_&gt;"
 >
-> **Plugin Settings:** &lt;_Description and settings for custom Plugin %VARIABLES%, and those required by TWiki._&gt;"
+> **Plugin Settings:** &lt;_Description and settings for custom plugin %VARIABLES%, and those required by TWiki._&gt;"
 >
 > - **Plugins Preferences** &lt;_If user settings are needed, explain... Entering values works exactly like %SYSTEMWEB%.TWikiPreferences and [[WebPreferences]]: six (6) spaces and then:_&gt;"
 >   - **Set &lt;_EXAMPLE = value added_&gt;**
@@ -375,15 +380,15 @@ The Plugin documentation topic contains usage instructions and version details.
 
 ### <a name="Packaging for Distribution"></a> Packaging for Distribution
 
-The TWiki:Plugins.BuildContrib is a powerful build environment that is used by the TWiki project to build TWiki itself, as well as many of the Plugins. You don't **have** to use it, but it is highly recommended!
+The TWiki:Plugins.BuildContrib is a powerful build environment that is used by the TWiki project to build TWiki itself, as well as many of the plugins. You don't **have** to use it, but it is highly recommended!
 
-If you don't want (or can't) use the BuildContrib, then a minimum Plugin release consists of a Perl module with a [[WikiName]] that ends in `Plugin`, ex: `MyFirstPlugin.pm`, and a documentation page with the same name(`MyFirstPlugin.txt`).
+If you don't want (or can't) use the BuildContrib, then a minimum plugin release consists of a Perl module with a [[WikiName]] that ends in `Plugin`, ex: `MyFirstPlugin.pm`, and a documentation page with the same name(`MyFirstPlugin.txt`).
 
-1. Distribute the Plugin files in a directory structure that mirrors TWiki. If your Plugin uses additional files, include them all:
+1. 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]
-2. 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:
+2. 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`
@@ -392,7 +397,7 @@ If you don't want (or can't) use the BuildContrib, then a minimum Plugin release
 
 ### <a name="Measuring and Improving the Plug"></a> Measuring and Improving the Plugin Performance
 
-A high quality Plugin performs well. You can use the TWiki:Plugins.PluginBenchmarkAddOn to measure your TWiki:Plugins.PluginBenchmarks. The data is needed as part of the Documentation Topic.
+A high quality plugin performs well. You can use the TWiki:Plugins.PluginBenchmarkAddOn to measure your TWiki:Plugins.PluginBenchmarks. The data is needed as part of the Documentation Topic.
 
 See also [[Hints on Writing Fast Plugins|Main/WebHome#FastPluginHints]].
 
@@ -400,30 +405,30 @@ See also [[Hints on Writing Fast Plugins|Main/WebHome#FastPluginHints]].
 
 ### <a name="Publishing for Public Use"></a> 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/PluginPackage.
+You can release your tested, packaged plugin to the TWiki community through the TWiki:Plugins web. All plugins submitted to TWiki.org are available for download and further development in TWiki:Plugins/PluginPackage.
 
-Publish your Plugin by following these steps:
+Publish your plugin by following these steps:
 
-1. **Post** the Plugin documentation topic in the TWiki:Plugins/PluginPackage:
-  - enter the Plugin name in the "How to Create a Plugin" section, for example `MyFirstPlugin`
+1. **Post** the plugin documentation topic in the TWiki:Plugins/PluginPackage:
+  - enter the plugin name in the "How to Create a Plugin" section, for example `MyFirstPlugin`
   - paste in the topic text from [[Writing the Documentation Topic|Main/WebHome#CreatePluginTopic]] and save
 2. **Attach** the distribution zip file to the topic, ex: `MyFirstPlugin.zip`
-3. **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.)
-4. **Put** the Plugin into the SVN repository, see TWiki:Plugins/ReadmeFirst (optional)
+3. **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.)
+4. **Put** the plugin into the SVN repository, see TWiki:Plugins/ReadmeFirst (optional)
 
-%N% Once you have done the above steps once, you can use the BuildContrib to upload updates to your Plugin.
+%N% Once you have done the above steps once, you can use the BuildContrib to upload updates to your plugin.
 
-Thank you very much for sharing your Plugin with the TWiki community :-)
+Thank you very much for sharing your plugin with the TWiki community :-)
 
 <a name="RecommendedStorageOfPluginData"></a>
 
 ## <a name="Recommended Storage of Plugin Sp"></a> Recommended Storage of Plugin Specific Data
 
-Plugins sometimes need to store data. This can be Plugin internal data such as cache data, or data generated for browser consumption such as images. Plugins should store data using [[TWikiFuncDotPm]] functions that support saving and loading of topics and attachments.
+Plugins sometimes need to store data. This can be plugin internal data such as cache data, or data generated for browser consumption such as images. Plugins should store data using [[TWikiFuncDotPm]] functions that support saving and loading of topics and attachments.
 
 ### <a name="Plugin Internal Data"></a> Plugin Internal Data
 
-You can create a Plugin "work area" using the `TWiki::Func::getWorkArea()` function, which gives you a persistent directory where you can store data files. By default they will not be web accessible. The directory is guaranteed to exist, and to be writable by the webserver user. For convenience, `TWiki::Func::storeFile()` and `TWiki::Func::readFile()` are provided to persistently store and retrieve simple data in this area.
+You can create a plugin "work area" using the `TWiki::Func::getWorkArea()` function, which gives you a persistent directory where you can store data files. By default they will not be web accessible. The directory is guaranteed to exist, and to be writable by the webserver user. For convenience, `TWiki::Func::storeFile()` and `TWiki::Func::readFile()` are provided to persistently store and retrieve simple data in this area.
 
 ### <a name="Web Accessible Data"></a> Web Accessible Data
 
@@ -432,13 +437,13 @@ You can create a Plugin "work area" using the `TWiki::Func::getWorkArea()` funct
 Recommendation for file name:
 
 - Prefix the filename with an underscore (the leading underscore avoids a name clash with files attached to the same topic)
-- Identify where the attachment originated from, typically by including the Plugin name in the file name
+- Identify where the attachment originated from, typically by including the plugin name in the file name
 - Use only alphanumeric characters, underscores, dashes and periods to avoid platform dependency issues and URL issues
-- Example: `_FooBarPlugin_img123.gif`
+- Example: `_GaugePlugin_img123.gif`
 
-**_Web specific data_** can be stored in the Plugin's attachment area, which is web accessible. Use the `TWiki::Func::saveAttachment()` function to store the data.
+**_Web specific data_** can be stored in the plugin's attachment area, which is web accessible. Use the `TWiki::Func::saveAttachment()` function to store the data.
 
-Recommendation for file names in Plugin attachment area:
+Recommendation for file names in plugin attachment area:
 
 - Prefix the filename with an underscore
 - Include the name of the web in the filename
@@ -565,21 +570,29 @@ See `lib/TWiki.spec` for many more examples.
 
 `Config.spec` files are also used for other (non-plugin) extensions. in this case they are stored under the `Contrib` directory instead of the `Plugins` directory.
 
+TWiki:TWiki/SpecifyingConfigurationItemsForExtensions has supplemental documentation on configure settings.
+
 <a name="MaintainPlugins"></a>
 
 ## <a name="Maintaining Plugins"></a> Maintaining Plugins
 
 ### <a name="Discussions and Feedback on Plug"></a> Discussions and Feedback on Plugins
 
-Each published Plugin has a Plugin development topic on TWiki.org. Plugin development topics are named after your Plugin and end in `Dev`, such as `MyFirstPluginDev`. The Plugin development topic is a great resource to discuss feature enhancements and to get feedback from the TWiki community.
+Each published plugin has a plugin development topic on TWiki.org. Plugin development topics are named after your plugin and end in `Dev`, such as `MyFirstPluginDev`. The plugin development topic is a great resource to discuss feature enhancements and to get feedback from the TWiki community.
 
 ### <a name="Maintaining Compatibility with E"></a> Maintaining Compatibility with Earlier TWiki Versions
 
-The Plugin interface ([[TWikiFuncDotPm]] functions and handlers) evolve over time. TWiki 4.0 introduced new API functions to address the needs of Plugin authors. It also deprecated some functions. Some Plugins written for earlier TWiki releases using unofficial TWiki internal functions no longer work on the TWiki 4.0 codebase. All this means that some Plugins need to be updated to work on the TWiki 4.0 codebase.
+The plugin interface ([[TWikiFuncDotPm]] functions and plugin handlers) evolve over time. TWiki introduces new API functions to address the needs of plugin authors. Plugins using unofficial TWiki internal functions may no longer work on a TWiki upgrade.
 
-Organizations typically do not upgrade to the latest TWiki for many months. However, many administrators still would like to install the latest versions of a Plugin on their older TWiki installation. This need is fulfilled if Plugins are maintained in a compatible manner.
+Organizations typically do not upgrade to the latest TWiki for many months. However, many administrators still would like to install the latest versions of a plugin on their older TWiki installation. This need is fulfilled if plugins are maintained in a compatible manner.
 
-**_%T% Tip:_** Plugins can be written to be compatible with older and newer TWiki releases. This can be done also for Plugins using unofficial TWiki internal functions of an earlier release that no longer work on the latest TWiki codebase. TWiki:TWiki.TWikiPluginsSupplement#MaintainPlugins has more.
+**_%T% Tip:_** Plugins can be written to be compatible with older and newer TWiki releases. This can be done also for plugins using unofficial TWiki internal functions of an earlier release that no longer work on the latest TWiki codebase. Here is an example; the TWiki:TWiki.TWikiPluginsSupplement#MaintainPlugins has more details.
+
+        if( $TWiki::Plugins::VERSION >= 1.1 ) {
+            @webs = TWiki::Func::getListOfWebs( 'user,public' );
+        } else {
+            @webs = TWiki::Func::getPublicWebList( );
+        }
 
 ### <a name="Handling deprecated functions"></a> Handling deprecated functions
 
@@ -598,3 +611,5 @@ This is done by defining a map from the handler name to the `TWiki::Plugins` ver
 If the currently-running TWiki version is 1.1 _or later_, then the _handler will not be called_ and _the warning will not be issued_. TWiki with versions of `TWiki::Plugins` before 1.1 will still call the handler as required.
 
 **_Related Topics:_** [[DeveloperDocumentationCategory]], [[AdminDocumentationCategory]], TWiki:TWiki.TWikiPluginsSupplement
+
+-- **_Contributors:_** TWiki:Main.PeterThoeny, TWiki:Main.AndreaSterbini, TWiki:Main.MikeMannix, TWiki:Main.CrawfordCurrie, TWiki:Main.ArthurClemens, TWiki:Main.WillNorris
index 8cbbdba..8f03b64 100644 (file)
@@ -22,4 +22,4 @@ Returns undef if no singular form exists, otherwise returns the singular form of
 
 [[I18N]] - Only apply plural processing if site language is English, or if a built-in English-language web (Main, TWiki or Plugins). Plurals apply to names ending in 's', where topic doesn't exist with plural name.
 
-SMELL: this is highly langauge specific, and shoud be overridable on a per-installation basis.
+Note that this is highly langauge specific, and need to be enabled on a per-installation basis with $TWiki::cfg\{PluralToSingular\}.
index edf3c8c..c280998 100644 (file)
@@ -29,6 +29,7 @@ Preference settings local to your site should be set in [[Main.TWikiPreferences|
     <li><a href="#Miscellaneous Settings"> Miscellaneous Settings</a></li>
     <li><a href="#Access Control Settings"> Access Control Settings</a></li>
     <li><a href="#Creating New Preference Variable"> Creating New Preference Variables</a></li>
+    <li><a href="#Protected System Settings"> Protected System Settings</a></li>
     <li><a href="#Related Topics"> Related Topics</a></li>
   </ul>
 </div>
@@ -225,7 +226,7 @@ Preference settings local to your site should be set in [[Main.TWikiPreferences|
 ### <a name="Legacy support"></a> Legacy support
 
 - Support for legacy "EDITTOPIC", used to be hard-coded, now replaced by TMPL:P conditional instantiation
-  - Set EDITURL = <http://www.dementia.org/twiki/edit/%WEB%/%TOPIC%?t=1277827703>
+  - Set EDITURL = <http://www.dementia.org/twiki/edit/%WEB%/%TOPIC%?t=1277827909>
   - Set EDITTOPIC = [Edit](%EDITURL% Edit Topic - deprecated usage - please see release notes)
 
 ## <a name="Plugins Settings"></a> Plugins Settings
@@ -367,6 +368,12 @@ You can introduce new VARIABLES and use them in your topics and templates. There
 - %X% The sequential order of the preference settings is significant. Define preferences that use other preferences FIRST. For example, set <code>**WEBCOPYRIGHT**</code> before <code>**WIKIWEBMASTER**</code> since the copyright notice uses the TWiki administrator e-mail address.
 - %X% In order to protect your custom variables from being overwritten when upgrading the [[%SYSTEMWEB%.%TOPIC%|SYSTEMWEB/TOPIC]] topic, it is recommended that custom variables are defined in [[%USERSWEB%.%TOPIC%|USERSWEB/TOPIC]].
 
+## <a name="Protected System Settings"></a> Protected System Settings
+
+The following settings are declared final to protect them as read only. These are system variables that should never be attempted set or altered in any preference topic or topic settings.
+
+- Set FINALPREFERENCES = WEB, TOPIC
+
 ## <a name="Related Topics"></a> Related Topics
 
 - [[WebPreferences]] has preferences of the %WEB% web.
index 6d772fc..9e5bf85 100644 (file)
@@ -89,6 +89,7 @@
               <option>Cyprus</option>
               <option>Czech Republic</option>
               <option>Denmark</option>
+              <option>Dominican Republic</option>
               <option>Ecuador</option>
               <option>Egypt</option>
               <option>El Salvador</option>
               <option>Switzerland</option>
               <option>Syria</option>
               <option>Taiwan</option>
+              <option>Tajikistan</option>
               <option>Tanzania</option>
               <option>Thailand</option>
-              <option>Tajikistan</option>
+              <option>Trinidad and Tobago</option>
               <option>Tunisia</option>
               <option>Turkey</option>
               <option>Turkmenistan</option>
index 80000ae..bc91cf4 100644 (file)
@@ -1,4 +1,4 @@
-# <a name="TWiki Release 4.1.2 (Edinburgh),"></a><a name=" TWiki Release 4.1.2 (Edinburgh)"></a> TWiki Release 4.1.2 (Edinburgh), 04:18:52 22 January 2008
+# <a name="TWiki Release 4.1.2 (Edinburgh),"></a><a name=" TWiki Release 4.1.2 (Edinburgh)"></a> TWiki Release 4.1.2 (Edinburgh), 00:13:28 04 August 2008
 
 _Note: This is the release note for the previous major release version 4.1.X. This note and the [[TWikiReleaseNotes04x00]] are included with 4.2.X because they contain valuable information for people upgrading from earlier versions. Both for the admin and the users. See [[TWikiReleaseNotes04x02]] for the 4.2.X release notes_
 
@@ -1401,7 +1401,7 @@ None
 
 ## <a name="TWiki 4.1.2 Patch Release Detail"></a> TWiki 4.1.2 Patch Release Details
 
-The 4.1.2 release was built from SVN <http://svn.twiki.org/svn/twiki/Patch04x01> revision 16278 (22 Jan 2008) (04:18:52 22 January 2008).
+The 4.1.2 release was built from SVN <http://svn.twiki.org/svn/twiki/Patch04x01> revision 17311 (04 Aug 2008) (00:13:28 04 August 2008).
 
 TWiki 4.1.1 Fixes
 
index 0ccde82..f40227f 100644 (file)
@@ -1,10 +1,18 @@
-# <a name="TWiki Release 4.2.0 (Freetown),"></a><a name=" TWiki Release 4.2.0 (Freetown),"></a> TWiki Release 4.2.0 (Freetown), 04:18:52 22 January 2008
+# <a name="TWiki Release 4.2.1 (Freetown),"></a><a name=" TWiki Release 4.2.1 (Freetown),"></a> TWiki Release 4.2.1 (Freetown), 00:13:28 04 August 2008
 
 <div>
   <ul>
     <li><a href="#Introduction"> Introduction</a></li>
     <li><a href="#Pre-installed Extensions"> Pre-installed Extensions</a></li>
     <li><a href="#New Features Highlights"> New Features Highlights</a></li>
+    <li><a href="#Important Changes since 4.2.0"> Important Changes since 4.2.0</a><ul>
+        <li><a href="#Perl 5.8 is now minimum requirem"> Perl 5.8 is now minimum requirement with Wysiwyg</a></li>
+        <li><a href="#TWiki now installs and works wit"> TWiki now installs and works with Perl 5.10.0.</a></li>
+        <li><a href="#The RCS files in subdirectories"> The RCS files in subdirectories feature removed</a></li>
+        <li><a href="#The Japanese language file has b"> The Japanese language file has been renamed</a></li>
+        <li><a href="#Highlights of bug fixes since 4."> Highlights of bug fixes since 4.2.0</a></li>
+      </ul>
+    </li>
     <li><a href="#Important Changes since 4.1.2"> Important Changes since 4.1.2</a><ul>
         <li><a href="#New WYSIWYG Editor"> New WYSIWYG Editor</a></li>
         <li><a href="#NEWTOPICLINKSYMBOL removed"> NEWTOPICLINKSYMBOL removed</a></li>
     <li><a href="#TWiki 4.2.0 Minor Release - Deta"> TWiki 4.2.0 Minor Release - Details</a></li>
     <li><a href="#Fixes"> Fixes</a></li>
     <li><a href="#Enhancements"> Enhancements</a></li>
+    <li><a href="#TWiki 4.2.1 Minor Release - Deta"> TWiki 4.2.1 Minor Release - Details</a></li>
+    <li><a href="#Fixes"> Fixes</a></li>
+    <li><a href="#Enhancements"> Enhancements</a></li>
   </ul>
 </div>
 
 ## <a name="Introduction"></a> Introduction
 
-TWiki Release 4.2.0 is a minor release. TWiki releases are either major (major new features and changes in architecture), minor (enhancements and bug fixes), or patch releases (bug fixes only) which can be installed as upgrades on production installations.
+TWiki 4.2.0 was released 22 Jan 2008 and introduced some hot new features that make TWiki a better user experience for both beginners and experienced application developers. It also contained quite a number of bugfixes since 4.1.2.
 
-TWiki Release 4.2.0 introduces some good enhancements and quite many bug fixes since 4.1.2.
+TWiki 4.2.1 is a patch release which only contains bug fixes. More than 150 bugs have been fixed since the release of 4.2.1 in all areas of TWiki.
 
-The development team has done everything to maintain full compatibility with topics generated in TWiki-4.0 and there are no changes to the topic format when using normal TWikiUserMapping
+It is highly recommended to upgrade TWiki 4.2.0 to 4.2.1. Users will find the 4.2.1 much more stable in daily use.
 
 ## <a name="Pre-installed Extensions"></a> Pre-installed Extensions
 
-TWiki 4.2.0 is shipped with
+TWiki 4.2.1 is shipped with
 
 - **Plugins:** CommentPlugin, EditTablePlugin, EmptyPlugin, InterwikiPlugin, PreferencesPlugin, RenderListPlugin, SlideShowPlugin, SmiliesPlugin, SpreadSheetPlugin, TablePlugin, TinyMCEPlugin, TwistyPlugin, WysiwygPlugin
 - **Contribs:** BehaviourContrib, JSCalendarContrib, MailerContrib, TipsContrib, TWikiUserMappingContrib, TwistyContrib
@@ -69,6 +80,60 @@ TWiki 4.2.0 is shipped with
   - Table of Content (TOC) feature enhanced
   - User Mapping (mapping between login name and WikiName) code has been extended to allow pluggable modules to integrate with all sorts of alternative authentication and Management schemes. For normal cases you use the default TWikiUserMapping which is using the Main.TWikiUsers topic to map between login and WikiName. A new BaseUserMapping is provided for TWikis where you only have guests and an administrator. In this case you use the login and password given in configure to login as an admin.
 
+## <a name="Important Changes since 4.2.0"></a> Important Changes since 4.2.0
+
+### <a name="Perl 5.8 is now minimum requirem"></a> Perl 5.8 is now minimum requirement with Wysiwyg
+
+In TWiki 4.2.1 the support of international characters has been improved. Especially when using the Wysiwyg editor. This requires that perl internally works with unicode and that the Encode CPAN lib is installed. For this reason Perl 5.8.X is required for Wysiwyg support. TWiki will run with perl 5.6.1 if WysiwygPlugin is disabled.
+
+### <a name="TWiki now installs and works wit"></a> TWiki now installs and works with Perl 5.10.0.
+
+Newer distributions of Linux now ships with Perl 5.10.0. TWiki has been tested with Perl 5.10.0 and it should work fine. If the CGI library is version 3.37 you will need to update it to a newer version as the 3.37 contains some fatal bugs. Simply updating your perl using the standard update feature in your distribution may be enough to cure this problem.
+
+### <a name="The RCS files in subdirectories"></a><a name="The RCS files in subdirectories "></a> The RCS files in subdirectories feature removed
+
+The feature related to the config option TWiki::cfg\{RCS\}\{useSubDir\} has been removed. It never really worked and there are all sorts of issues related to it with respect to distribution of extensions and packaged applications, and it does not really add any performance advantages. So instead of trying to repair a bad feature that never really worked it was decided to remove it.
+
+The removal was announced in a news letter and in a proposal topic, and discussed at several release meetings, and noone objected against its removal.
+
+If you have run TWiki with this feature (maybe with a self implemented fix of the code) you will need to simply copy all the ,v files in all RCS directories to the directory above (where you find the .txt file or the attached filed) when you upgrade to 4.2.1.
+
+### <a name="The Japanese language file has b"></a> The Japanese language file has been renamed
+
+We decided to rename the locale/jp.po to locale/ja.po to match the rule that the file has the same name as the code for the locale.
+
+For those using the Japanese language file you need to do the following if you upgrade TWiki
+
+- Delete the old jp.po file
+- Delete the locale/languages.cache file (it gets recreated by TWiki first time it runs with language files)
+- Rename the entry `$TWiki::cfg{Languages}{jp}{Enabled} = 1;` in the lib/LocalSite.cfg to `$TWiki::cfg{Languages}{ja}{Enabled} = 1;`
+
+### <a name="Highlights of bug fixes since 4."></a> Highlights of bug fixes since 4.2.0
+
+- Much more stable Wysiwyg editor
+  - Better support for non-English characters
+  - Better handling of bullet points
+  - Pickaxe feature which enables quick swap between Wysiwyg and raw edit is more stable
+  - Attachment of files within Wysiwyg editor working better
+  - Linking feature fixed
+- More stable EditTablePlugin
+- Better support for UTF8 though UTF8 is still regarded as experimental and features such as wiki words do not work with non-english characters. UTF8 will be a good choice for languages such as Chinese, Japanese and Korean
+- Better support for non English charsets
+- Easier configuration of language settings in configure
+- Renaming of webs much improved
+- Compatibility with perl 5.10
+- Fixes related to mandatory fields in forms
+- Universal edit button with Firefox extension
+- Access controls using login ID instead of wikiname which was broken in 4.2.0 works again
+- Search features have had a few bugs fixed
+- Several bugs related to attaching files have been fixed
+- Some cross site scripting possibilities have been eliminated
+- Plugins that uses beforeAttachmentSaveHandler now works stable (e.g. BlackListPlugin)
+- The feature of having RCS files (the ,v file) in a separate directory never worked. Feature has now been removed as it really does not give any advantages.
+- User mapping feature improved to ensure 1:1 mapping between canonical user ID and login ID which is important for security
+
+See the full list of bug fixes at the bottom of this topic.
+
 ## <a name="Important Changes since 4.1.2"></a> Important Changes since 4.1.2
 
 ### <a name="New WYSIWYG Editor"></a> New WYSIWYG Editor
@@ -157,7 +222,7 @@ In Func getOopsUrl and permissionsSet have been declared deprecated. There is no
 
 ## <a name="TWiki 4.2.0 Minor Release - Deta"></a> TWiki 4.2.0 Minor Release - Details
 
-The 4.2.0 release was built from SVN <http://svn.twiki.org/svn/twiki/branches/TWikiRelease04x02> revision 16278 (22 Jan 2008).
+The 4.2.0 release was built from SVN <http://svn.twiki.org/svn/twiki/branches/TWikiRelease04x02> revision 17311 (04 Aug 2008).
 
 ## <a name="Fixes"></a> Fixes
 
@@ -180,7 +245,7 @@ The 4.2.0 release was built from SVN <http://svn.twiki.org/svn/twiki/branches/TW
   </tr>
   <tr>
     <td>[[BUGS/Item5210]]</td>
-    <td> EDITTABLE with a simple text input in which the user has put %BR% gets trunkated at the first BR </td>
+    <td> EDITTABLE with a simple text input in which the user has put %BR gets trunkated at the first BR </td>
   </tr>
   <tr>
     <td>[[BUGS/Item5123]]</td>
@@ -296,7 +361,7 @@ The 4.2.0 release was built from SVN <http://svn.twiki.org/svn/twiki/branches/TW
   </tr>
   <tr>
     <td>[[BUGS/Item4848]]</td>
-    <td> TWiki:Plugins.EditTablePlugin textarea bug! </td>
+    <td> EditTablePlugin textarea bug! </td>
   </tr>
   <tr>
     <td>[[BUGS/Item4846]]</td>
@@ -520,7 +585,7 @@ The 4.2.0 release was built from SVN <http://svn.twiki.org/svn/twiki/branches/TW
   </tr>
   <tr>
     <td>[[BUGS/Item4432]]</td>
-    <td align="right"> causes an internal server error </td>
+    <td> %VAR causes an internal server error </td>
   </tr>
   <tr>
     <td>[[BUGS/Item4426]]</td>
@@ -528,7 +593,7 @@ The 4.2.0 release was built from SVN <http://svn.twiki.org/svn/twiki/branches/TW
   </tr>
   <tr>
     <td>[[BUGS/Item4425]]</td>
-    <td> Empty bullets get a <code><br /></code> tag. </td>
+    <td> Empty bullets get a br tag. </td>
   </tr>
   <tr>
     <td>[[BUGS/Item4403]]</td>
@@ -924,7 +989,7 @@ The 4.2.0 release was built from SVN <http://svn.twiki.org/svn/twiki/branches/TW
   </tr>
   <tr>
     <td>[[BUGS/Item3832]]</td>
-    <td>[[Main/BracketLinks]] are not updated during page renames </td>
+    <td> bracket links are not updated during page renames </td>
   </tr>
   <tr>
     <td>[[BUGS/Item3829]]</td>
@@ -1072,7 +1137,7 @@ The 4.2.0 release was built from SVN <http://svn.twiki.org/svn/twiki/branches/TW
   </tr>
   <tr>
     <td>[[BUGS/Item3703]]</td>
-    <td>   in the size field of a form will crash the forms code </td>
+    <td> &amp; nbsp; in the size field of a form will crash the forms code </td>
   </tr>
   <tr>
     <td>[[BUGS/Item3690]]</td>
@@ -1605,4 +1670,649 @@ The 4.2.0 release was built from SVN <http://svn.twiki.org/svn/twiki/branches/TW
   </tr>
 </table>
 
+## <a name="TWiki 4.2.1 Minor Release - Deta"></a> TWiki 4.2.1 Minor Release - Details
+
+The 4.2.1 release was built from SVN <http://svn.twiki.org/svn/twiki/branches/TWikiRelease04x02> revision 17311 (04 Aug 2008).
+
+## <a name="Fixes"></a> Fixes
+
+<table border="1" cellpadding="0" cellspacing="0">
+  <tr>
+    <td>[[BUGS/Item5876]]</td>
+    <td> Make query search ref more clear in VarSEARCH. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5873]]</td>
+    <td> REVINFO shows unknown user instead of the author value when it cannot map. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5868]]</td>
+    <td> ApacheHtpasswdUser compile error </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5866]]</td>
+    <td> shortcircuit TWiki::_processTags shortpath for 10-30% TWiki render speed improvement </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5854]]</td>
+    <td> Forking search result collation regex can cause many spurious log entries </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5850]]</td>
+    <td> ResetPassword/ChangePassword combo "Oops: we could not recognize you" </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5849]]</td>
+    <td> regex SEARCH on Native Windows crashes when there are [^] chars or mismatched "s in the regex. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5844]]</td>
+    <td> Automatic statistics denied by default server configuration </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5834]]</td>
+    <td> Edit in ClassicSkin with action=form still displays the text field for the topic </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5833]]</td>
+    <td> Double header in Classic skin when editing with action=text </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5832]]</td>
+    <td> EDITACTION only works on Edit but not Edit Raw </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5831]]</td>
+    <td> EDITACTION parameter does get replaced properly in the changeform templates if combined with setting EDITACTION </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5826]]</td>
+    <td> improved the security of the password generated for resetPassword </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5823]]</td>
+    <td> Adding MD5 Password Feature </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5819]]</td>
+    <td> Document that 4.2.1 with Wysiwyg will no longer work with Perl 5.6 </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5810]]</td>
+    <td> %IF in a set statement fails </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5808]]</td>
+    <td> TWiki.InstalledPlugins lists Contribs and AddOns but no Skins </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5798]]</td>
+    <td> urlHost field initialized too late in TWiki::new </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5796]]</td>
+    <td> SubscribePlugin and perl 5.8.4 exposes a taint issue in the latest MailerContrib </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5794]]</td>
+    <td> potential dataloss bug in EditTablePlugin 4.8.2 </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5790]]</td>
+    <td> LOCAL_SEARCH does expand nop'ed TML </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5789]]</td>
+    <td> don't rely on the author info being present in attachment meta data </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5787]]</td>
+    <td> square bracket url links don't escape their contents well enough </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5786]]</td>
+    <td> improve TemplateOopsAttentionNotFound message </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5776]]</td>
+    <td> MailerContrib cannot run multiple instances at the same time (document this fact) </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5772]]</td>
+    <td> base and current revisions reversed in diff URL of MailerContrib notify message </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5744]]</td>
+    <td> When renaming webs you get a File does not exist .. twiki_renamedelete.js </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5743]]</td>
+    <td> Easy to goof up web renaming because the default new webname includes subweb. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5741]]</td>
+    <td> REVTITLE isn't rendered except on rdiff </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5739]]</td>
+    <td> twiki_httpd_conf.txt is inconsistent in the paths it has as default. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5727]]</td>
+    <td> configure and perl 5.10 dies with Use of uninitialized value $filename in substitution (s///) at (eval 41) line 23 </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5726]]</td>
+    <td> Changing a form when the old form has mandatory fields which are empty causes bogus error </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5725]]</td>
+    <td> Editing in Classic skin gives missing Save and Cancel buttons </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5724]]</td>
+    <td> When you Edit Raw and then add form you end up in Wysiwyg edit mode </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5721]]</td>
+    <td> TinyMCE not honouring Template Topic in special cases. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5716]]</td>
+    <td> universal edit button work </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5711]]</td>
+    <td> Registration of Zyc ends in the end of TWiki users instead of the last entry in list of users </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5703]]</td>
+    <td> Putting setting with empty value in 'Topic Preference' interface does not work. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5701]]</td>
+    <td> tempatetopic not implemented as per the docco in TWikiScripts </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5690]]</td>
+    <td> Chinese is fail on newest TinyMCEPlugin / WysiwygPlugin </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5688]]</td>
+    <td> Documentation of eachChangeSince uses $iterator and $it </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5687]]</td>
+    <td> TWikiScripts docco for formtemplate is missing details. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5677]]</td>
+    <td> META tag does not show form field data in 4.2 </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5674]]</td>
+    <td> IF and Query have problems if some part of an evaluated statement is undef </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5668]]</td>
+    <td> twiki form Hidden Labels aren't being hidden in view mode. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5667]]</td>
+    <td> Named jp.po to ja.po to match locale. Fixed the translation of the word Japanese </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5656]]</td>
+    <td> CGI::charset called in BEGIN{} breaks mod_perl preloading of TWiki.pm </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5655]]</td>
+    <td> Query and IF info.version value is not compatible with the common external representation of topic revision </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5649]]</td>
+    <td> INCLUDE{"WebHome" section=""} returns nothing. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5648]]</td>
+    <td> LINKTOOLTIPINFO format cannot be changed </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5643]]</td>
+    <td> REVINFO with topic= set to a non-existant topic returns stupid values. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5638]]</td>
+    <td> readdir/closedir attempted on invalid dirhandle on perl-5.10 </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5636]]</td>
+    <td> Main Web preferences lists nonexistant topic in WEBFORM </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5633]]</td>
+    <td> Documentation mistakes in TWikiFuncDotPm/saveTopic </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5632]]</td>
+    <td> moveAttachment creates duplicates when topic/web are the same as the source </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5631]]</td>
+    <td> WebStatistics topic was linking to the massive TWikiDocumentation topic </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5630]]</td>
+    <td> spooling erra's in the WebNotify topics </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5629]]</td>
+    <td> registration email does not explicitly tell the user what their login is. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5627]]</td>
+    <td> Image and Attachment references are trashed when using short URLs </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5626]]</td>
+    <td> Encoding problem with iso-8859 and umlauts </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5622]]</td>
+    <td> Jumping text with blockindent on IE </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5620]]</td>
+    <td> Core: edit window no longer has focus on load </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5615]]</td>
+    <td> ActionTracker with CommentPlugin order Dependencies </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5612]]</td>
+    <td> Selecting "All Public Webs" option not sticking in UI </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5609]]</td>
+    <td> Bug in lib/TWiki/Prefs/PrefsCache.pm (CGI::H3 should be CGI::h3) </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5602]]</td>
+    <td> Web Rename not following ALLOWWEBRENAME Preference </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5601]]</td>
+    <td> registerHandler should be called once per registration </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5597]]</td>
+    <td> default skin search template is broken for webchanges </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5593]]</td>
+    <td> raw=on broken on topics with a view_template </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5588]]</td>
+    <td> INCLUDE of attached HTML files fails in subwebs </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5562]]</td>
+    <td> Query type Search does not report with large number of topics </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5559]]</td>
+    <td> TWikiJavascript does not enable partial js usage. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5556]]</td>
+    <td> it appears that BuildContrib defaults all unspecified permissions to 664? </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5554]]</td>
+    <td> Missuse of sort and loops </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5547]]</td>
+    <td> "action" parameter for "edit" script fail in 4.2 </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5542]]</td>
+    <td> After you enable {UserInterfaceInternationalisation} first view shows an error </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5540]]</td>
+    <td> TWikiUserMapping: single character erroneously reported as a group </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5536]]</td>
+    <td> robots.txt is missing some obvious scripts - like login </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5535]]</td>
+    <td> IF{"$BANNER" does not really work. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5534]]</td>
+    <td> missing contexts for several bin scripts </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5533]]</td>
+    <td> tmpl login script does not do writeCompletePage, so it does not get addToHEAD bits. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5529]]</td>
+    <td> SEARCHes of type word do not work if word is non-English and with TWiki running utf-8 </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5526]]</td>
+    <td> WebSearch link "Get notified on changes on this search" breaks when search string contains quote </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5518]]</td>
+    <td> "URLPARAM{" in Comment Box when type="bulletabove" </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5517]]</td>
+    <td> Wrong call $session-&gt;{i18n} </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5516]]</td>
+    <td> LanguageSelector javascript breaks on topic names with underscores </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5514]]</td>
+    <td> suppressTWikiSaveValidation and validateTWikiMandatoryFields Javascript errors in IE and Firefox </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5509]]</td>
+    <td> IF &amp; query String matching may be incorrectly greedy. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5501]]</td>
+    <td> IF allows does not work correctly if the topic does not exist. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5499]]</td>
+    <td> TWiki::UI::Resister::changePassword sends login, not cUID to TWiki::Users::setPassword </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5495]]</td>
+    <td> add twikiBroadcastMessage class div to default &amp; classic skins </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5491]]</td>
+    <td> FileAttachment documentation fix - {AutoAttachPubDir} should read {AutoAttachPubFiles} </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5490]]</td>
+    <td> %REVTITLE2% not substituted in RDiff.pm </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5478]]</td>
+    <td> Personal left bar is potentially buggy in layout </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5467]]</td>
+    <td> Pickaxe saves absolute URL instead of ATTACHURL </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5466]]</td>
+    <td> default and classic search.tmpl's have one table per topic result </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5462]]</td>
+    <td> Hide Attachment option does not work </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5461]]</td>
+    <td> default skin does not show the form attached to the topic. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5458]]</td>
+    <td> Rename web drop all link refer to the web </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5457]]</td>
+    <td> TinyMCE breaks Cyrillic Encoding (cp1251 or KOI8-R) </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5451]]</td>
+    <td> MailInContrib reveals error in Password.pm, that has been carried over to LdapContrib </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5450]]</td>
+    <td> MailInContrib docs refer to bin/mailincron but actually its in tools </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5449]]</td>
+    <td> TWiki::Sandbox::sysCommand leaves an extra process if command fails </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5447]]</td>
+    <td> If <code>manage</code> requires login, impossible to change password </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5443]]</td>
+    <td> Searches order="editby" are sorted by login ID (cUID) instead of WikiName making result look random </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5432]]</td>
+    <td> Image links inserted with Manage Attachment only work with lower case file extension </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5431]]</td>
+    <td> Register.pm redirects to TWikiUsers topic on error, even though that topic may not exist </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5430]]</td>
+    <td> reset password message has some errors </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5428]]</td>
+    <td> Topic save error with form does not remove nop </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5426]]</td>
+    <td> RSS feeds failing due to newlines at top of page. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5418]]</td>
+    <td> readme.txt refers to missing 'install instructions' TWikiDocumentation.html </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5412]]</td>
+    <td> "You are trying to templatetopic a topic that does not exist" makes no sense </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5410]]</td>
+    <td> WebSearchAdvanced does not regex search when you select that it should </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5405]]</td>
+    <td> TWikiHierarchicalNavigation seach broken </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5399]]</td>
+    <td> DISPLAYTIME documentation improved </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5393]]</td>
+    <td> Adding bullet right after a heading adds annoying html paragraph tags </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5387]]</td>
+    <td> Issue with multi-span rows and the EditRowPlugin / TablePlugin </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5382]]</td>
+    <td> TWiki.pm sets wrong urlHost if https protocol and ShorterUrlCookbook is used </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5348]]</td>
+    <td> Comment regarding FINALPREFERENCES should also mention subwebs. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5345]]</td>
+    <td> Logging in as admin still redirects to main home </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5344]]</td>
+    <td> PatternSkin small bug fixes and enhancements after 4.2 </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5343]]</td>
+    <td> Can't set parent to none anymore </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5339]]</td>
+    <td> Attachment uploaded by name not shown as TWiki link in 4.2 for attachments uploaded by TWiki 4.1.2 </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5324]]</td>
+    <td> Oops allows the template url parameter to pass through without filtering. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5316]]</td>
+    <td> PHP flag in pub-htaccess.txt is not working with PHP running as CGI </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5314]]</td>
+    <td> TinyMCE breaks Chinese, Japanese, Korean Unicode Encoding upon entering "Edit Twiki Markup" from WYSIWYG </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5311]]</td>
+    <td> deep recursion in getEmails() </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5307]]</td>
+    <td> Plugins with beforeAttachmentSaveHandler break file attachments with TWiki 4.2.0 </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5294]]</td>
+    <td> Wysywig &amp; TinyMCE corrupt some topics. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5293]]</td>
+    <td> DATE in TWiki.pm to follow configured displaytime </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5288]]</td>
+    <td> META tag doesn't call expandStandardEscapes() and crashes (trunk only does not affect 4.2.1) </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5287]]</td>
+    <td> Linking is totally broken - in 4.2 WikiWord links do not work - in 4.1.2 buttons are disabled </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5284]]</td>
+    <td> You cannot paste into Wysiwyg in IE unless you are in Intranet security zone (documentation issue) </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5283]]</td>
+    <td> EditTablePlugin dollar percent expansion does not work well together with SpreadSheetPlugin </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5276]]</td>
+    <td> Link to Release Notes 4.1 in distribution documentation of 4.2.0 </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5258]]</td>
+    <td> Preview does not set ORIGINALREV and other values in edit.tmpl, so continuing from there has problems </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5257]]</td>
+    <td> TinyMCE pads bullets incl. "set" variables with trailing spaces breaking some plugins and TWiki apps. </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5232]]</td>
+    <td> Locales problem in WebNotify.pm and Subscibe.pmI </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5206]]</td>
+    <td> Image not shown , when inserting image with Image button and not using any path </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5182]]</td>
+    <td> "save" does not treat bad templatetopic as an error </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5176]]</td>
+    <td> %SCRIPTSUFFIX is added twice in TOC links </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5124]]</td>
+    <td> Registration confirmation should contain name, not WikiName </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5118]]</td>
+    <td> Difference from 4.1.2 - 4.2: Apache loginname no longer works with access control lists </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5116]]</td>
+    <td> WYSIWYG Line Returns Removed In Opera </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item5053]]</td>
+    <td> Dropdown in TinyMCE help text is confusing </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item4946]]</td>
+    <td> urlDecode() not working for characters represented by Unicode code points </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item4922]]</td>
+    <td> add the other meta field infos to the output of FORMFIELD{format=""} </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item4863]]</td>
+    <td> Removal of RcsDirs feature (was RcsWrap does not support RcsDirs) </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item4824]]</td>
+    <td> Security bug: TWiki's user management code needs rework again </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item4780]]</td>
+    <td> Twisty addToHEAD does not work in login template </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item4741]]</td>
+    <td> %META{"formfield" ....} does not expand </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item4289]]</td>
+    <td> Document effect if INCLUDE on access control settings </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item4288]]</td>
+    <td> Document what happens if access control set more than once </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item3824]]</td>
+    <td> Possible to hijack TOPIC or WEB variable making editing a topic with one of these defined impossible </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item3715]]</td>
+    <td> Simplify I18N configuration </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item3502]]</td>
+    <td> preview of a slideshow is corrupted </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item3048]]</td>
+    <td> Documented that CGI version 2.89 causes character entities to not be escaped in Raw View </td>
+  </tr>
+  <tr>
+    <td>[[BUGS/Item1861]]</td>
+    <td> Document EDITACTION </td>
+  </tr>
+</table>
+
+## <a name="Enhancements"></a> Enhancements
+
+None!
+
 **_Related Topic:_** [[TWikiHistory]]
index 1f2150d..39b58bd 100644 (file)
@@ -157,7 +157,7 @@ The main difference between invoking this script and using [[WebChanges]] is tha
 
 ### <a name="=edit="></a> `edit`
 
-The `edit` scipt understands the following parameters, typically supplied by HTML input fields:
+The `edit` script understands the following parameters, typically supplied by HTML input fields:
 
 <table border="1" cellpadding="0" cellspacing="0">
   <tr>
@@ -167,7 +167,7 @@ The `edit` scipt understands the following parameters, typically supplied by HTM
   </tr>
   <tr>
     <td><code>action</code></td>
-    <td> Optional. Use the editaction template instead of the standard edit. If action=text, then hide the form. If action=form hide the normal text area and only edit the form. </td>
+    <td> Optional. Use the editaction template instead of the standard edit. If action=text, then hide the form. If action=form hide the normal text area and only edit the form. You can change the Edit/Edit Raw buttons to always append the action parameter in skins like Pattern and Classic by setting the topic or preference variable [[Main/VarEDITACTION]] to the value <code>text</code> or <code>form</code>. To edit the topic once the EDITACTION is defined as form simply remove the action=form from the browser URL of the edit script and reload the edit window </td>
     <td>   </td>
   </tr>
   <tr>
@@ -182,7 +182,7 @@ The `edit` scipt understands the following parameters, typically supplied by HTM
   </tr>
   <tr>
     <td><code>templatetopic</code></td>
-    <td> The name of the template topic, copied to get the initial content </td>
+    <td> The name of the template topic, copied to get the initial content (new topic <em>only</em>) </td>
     <td>   </td>
   </tr>
   <tr>
@@ -197,7 +197,7 @@ The `edit` scipt understands the following parameters, typically supplied by HTM
   </tr>
   <tr>
     <td><code>formtemplate</code></td>
-    <td> Name of the form to instantiate in the topic. Overrides the form set in the <code>templatetopic</code> if defined. </td>
+    <td> Name of the form to instantiate in the topic. Overrides the form set in the <code>templatetopic</code> if defined. (will remove the form is set to 'none') </td>
     <td>   </td>
   </tr>
   <tr>
@@ -720,7 +720,7 @@ The `save` script performs a range of save-related functions, as selected by the
   </tr>
   <tr>
     <td><code>templatetopic</code></td>
-    <td> Name of a topic to use as a template for the text and form </td>
+    <td> Name of a topic to use as a template for the text and form (new topic <em>only</em>) </td>
     <td>   </td>
   </tr>
   <tr>
@@ -740,7 +740,7 @@ The `save` script performs a range of save-related functions, as selected by the
   </tr>
   <tr>
     <td><code>formtemplate</code></td>
-    <td> if defined, use the named template for the form </td>
+    <td> if defined, use the named template for the form (will remove the form is set to 'none') </td>
     <td>   </td>
   </tr>
   <tr>
@@ -777,14 +777,14 @@ The parameters are interpreted in according to the following rules.
 1. The first sequence of ten or more `X` characters in the topic name will be converted to a number such that the resulting topic name is unique in the target web.
 2. When the action is `save`, `checkpoint`, `quietsave`, or `preview`:
   1. The new text is taken from the `text` parameter, if it is defined,
-    - otherwise it is taken from the `templatetopic`, if it is defined,
+    - otherwise it is taken from the `templatetopic`, if it is defined, (new topic _only_)
     - otherwise it is taken from the previous version of the topic, if any,
   2. The name of the new form is taken from the `formtemplate`, if defined
-    - otherwise it is taken from the `templatetopic`, if defined,
+    - otherwise it is taken from the `templatetopic`, if defined, (new topic _only_)
     - otherwise it is taken from the previous version of the topic, if any,
     - otherwise no form is attached.
   3. The value for each field in the form is taken from the query, if it is defined
-    - otherwise it is taken from the `templatetopic`, if defined,
+    - otherwise it is taken from the `templatetopic`, if defined, (new topic _only_)
     - otherwise it is taken from the previous version of the topic, if any,
     - otherwise it defaults to the empty string.
 
index 7c33e8f..769e151 100644 (file)
 
 ## <a name="Disclaimer"></a> Disclaimer
 
-- TWiki™, the TWiki logo and the "Collaborate with TWiki" tagline are trademarks of TWiki:Main.PeterThoeny - founder of TWiki.
-- TWiki is developed as Free Software under the [[GNU/GPL|Main/GnuGeneralPublicLicense]]
+- TWiki<sup>®</sup> is a registered trademarks of TWiki founder [Peter Thoeny](http://twiki.org/cgi-bin/view/Main/PeterThoeny), [TWIKI.NET](http://twiki.net/). The [[TWiki logo|Main/TWikiLogos]] and the "Collaborate with TWiki" tagline are trademarks of Peter Thoeny.
+- TWiki is developed as Free Software under the [[GNU/GPL|Main/GnuGeneralPublicLicense]].
 - TWiki has its root in the GPLed JosWiki. Many thanks to Markus Peter and Dave Harris for creating JosWiki!
 - TWiki's home address is <http://twiki.org/>
 - The latest TWiki release is available from <http://twiki.org/download.html>
 - This site is powered by TWiki version **TWiki-4.1.2, Sat, 03 Mar 2007, build 13046**
 
 **_Related Topics:_** [[UserDocumentationCategory]]
+
+-- **_Contributors:_** TWiki:Main.MikeMannix, TWiki:Main.PeterThoeny
index 7f76a6c..f46898a 100644 (file)
@@ -110,7 +110,7 @@ The following template files are used for TWiki screens, and are referenced in t
 
 `twiki.tmpl` is a master template conventionally used by other templates, but not used directly by code.
 
-**_%X% Note:_** It is best to create these templates for your skin. If you `TMPL:INCLUDE` the default templates, or templates from other skins, when you are defining your own skin, you run the risk that the included file might change and break your skin.
+**_%X% Note:_** Make sure templates do not end with a newline. Any newline will expand to an empty `<p />` in the generated html. It will produce invalid html, and may break the page layout.
 
 ### <a name="Partial customisation, or adding"></a> Partial customisation, or adding in new features to an existing skin
 
index f14079e..111ebe2 100644 (file)
@@ -177,7 +177,7 @@ The default `{TemplatePath}` will not give you the desired result if you put the
 
 ## <a name="Template Topics"></a> Template Topics
 
-The second type of template in TWiki are template topics. Template topics define the default text for new topics. There are three types of template topic:
+The second type of template in TWiki are template topics. Template topics define the default text for new topics. There are four types of template topic:
 
 <table border="1" cellpadding="0" cellspacing="0">
   <tr>
@@ -196,6 +196,10 @@ The second type of template in TWiki are template topics. Template topics define
     <td>[[Main/WebTopicEditTemplate]]</td>
     <td> Default text used in a new topic. </td>
   </tr>
+  <tr>
+    <td> &lt;MyCustomNamed&gt;Template </td>
+    <td> Whenever you create a topic ending in the word "Template", it is automatically added to the list of available templates in the "Use Template" drop down field on the WebCreateNewTopic page. </td>
+  </tr>
 </table>
 
 When you create a new topic using the `edit` script, TWiki locates a topic to use as a content template according to the following search order:
index c913f90..9e7368c 100644 (file)
@@ -66,7 +66,7 @@ It's a part of the default distribution of the TWiki Core.
   </tr>
   <tr>
     <td align="right"> Contrib Version: </td>
-    <td> 4.2.0 </td>
+    <td> 4.2.1 </td>
   </tr>
   <tr>
     <td align="right"> Copyright: </td>
@@ -81,6 +81,14 @@ It's a part of the default distribution of the TWiki Core.
     <td>  </td>
   </tr>
   <tr>
+    <td align="right"> 4.2.1 </td>
+    <td> 03 Aug 2008 - Distributed with TWiki 4.2.1 </td>
+  </tr>
+  <tr>
+    <td align="right"> 4.2.0 </td>
+    <td> 22 Jan 2008 - Distributed with TWiki 4.2.0 </td>
+  </tr>
+  <tr>
     <td align="right"> Dependencies: </td>
     <td> None </td>
   </tr>
index d55567a..a4cbd84 100644 (file)
@@ -12,7 +12,7 @@ User mappings work by mapping both login names and display names to a _canonical
 
 The null prefix is reserver for the [[TWikiUserMapping]] for compatibility with old TWiki releases.
 
-**_Note:_** in all the following documentation, `$user` refers to a **canonical user id**.
+**_Note:_** in all the following documentation, `$cUID` refers to a **canonical user id**.
 
 <div>
   <ul>
@@ -22,29 +22,26 @@ The null prefix is reserver for the [[TWikiUserMapping]] for compatibility with
         <li><a href="#ObjectMethod *login_TemplateName"> ObjectMethod loginTemplateName <tt>() -&gt; $templateFile</tt></a></li>
         <li><a href="#ObjectMethod *supportsRegistrati"> ObjectMethod supportsRegistration <tt>() -&gt; $boolean</tt></a></li>
         <li><a href="#ObjectMethod <strong>handlesUser</strong> ($cUI"> ObjectMethod handlesUser <tt>($cUID,$login,$wikiname) -&gt; $boolean</tt></a></li>
-        <li><a href="#ObjectMethod *get_CanonicalUserI"> ObjectMethod getCanonicalUserID <tt>($login,$dontcheck) -&gt; cUID</tt></a></li>
+        <li><a href="#ObjectMethod <strong>login2cUID</strong> ($logi"> ObjectMethod login2cUID <tt>($login,$dontcheck) -&gt; cUID</tt></a></li>
         <li><a href="#ObjectMethod <strong>get_LoginName</strong> ($c"> ObjectMethod getLoginName <tt>($cUID) -&gt; login</tt></a></li>
-        <li><a href="#ObjectMethod <strong>addUser</strong> ($login,$"> ObjectMethod addUser <tt>($login,$wikiname,$password,$emails) -&gt; cUID</tt></a></li>
-        <li><a href="#ObjectMethod <strong>removeUser</strong> ($user"> ObjectMethod removeUser <tt>($user) -&gt; $boolean</tt></a></li>
-        <li><a href="#ObjectMethod <strong>get_WikiName</strong> ($cU"> ObjectMethod getWikiName <tt>($cUID) -&gt; wikiname</tt></a></li>
+        <li><a href="#ObjectMethod <strong>addUser</strong> ($login,$"> ObjectMethod addUser <tt>($login,$wikiname,$password,$emails) -&gt; $cUID</tt></a></li>
+        <li><a href="#ObjectMethod <strong>removeUser</strong> ($cUID"> ObjectMethod removeUser <tt>($cUID) -&gt; $boolean</tt></a></li>
+        <li><a href="#ObjectMethod <strong>get_WikiName</strong> ($cU"> ObjectMethod getWikiName <tt>($cUID) -&gt; $wikiname</tt></a></li>
         <li><a href="#ObjectMethod <strong>userExists</strong> ($cUID"> ObjectMethod userExists <tt>($cUID) -&gt; $boolean</tt></a></li>
-        <li><a href="#ObjectMethod <strong>eachUser</strong> () -> li"> ObjectMethod eachUser <tt>() -&gt; listIteratorofcUIDs</tt></a></li>
+        <li><a href="#ObjectMethod <strong>eachUser</strong> () -> TW"> ObjectMethod eachUser <tt>() -&gt; TWiki::ListIteratorofcUIDs</tt></a></li>
         <li><a href="#ObjectMethod *each_GroupMember*"> ObjectMethod eachGroupMember <tt>($group) -&gt; TWiki::ListIteratorofcUIDs</tt></a></li>
-        <li><a href="#ObjectMethod <strong>isGroup</strong> ($user) -"> ObjectMethod isGroup <tt>($user) -&gt; boolean</tt></a></li>
-        <li><a href="#ObjectMethod <strong>eachGroup</strong> () ->"> ObjectMethod eachGroup <tt>() -&gt; ListIteratorofgroupnames</tt></a></li>
-        <li><a href="#ObjectMethod <strong>eachMembership</strong> ($"> ObjectMethod eachMembership <tt>($cUID) -&gt; ListIteratorofgroupsthisuserisin</tt></a></li>
-        <li><a href="#ObjectMethod <strong>isAdmin</strong> ($user) -"> ObjectMethod isAdmin <tt>($user) -&gt; $boolean</tt></a></li>
-        <li><a href="#ObjectMethod <strong>is_InGroup</strong> ($user"> ObjectMethod isInGroup <tt>($user,$group,$scanning) -&gt; bool</tt></a></li>
+        <li><a href="#ObjectMethod <strong>isGroup</strong> ($name) -"> ObjectMethod isGroup <tt>($name) -&gt; boolean</tt></a></li>
+        <li><a href="#ObjectMethod <strong>eachGroup</strong> () -> T"> ObjectMethod eachGroup <tt>() -&gt; TWiki::ListIteratorofgroupnames</tt></a></li>
+        <li><a href="#ObjectMethod <strong>eachMembership</strong> ($"> ObjectMethod eachMembership <tt>($cUID) -&gt; TWiki::ListIteratorofgroupsthisuserisin</tt></a></li>
+        <li><a href="#ObjectMethod <strong>isAdmin</strong> ($cUID) -"> ObjectMethod isAdmin <tt>($cUID) -&gt; $boolean</tt></a></li>
+        <li><a href="#ObjectMethod <strong>is_InGroup</strong> ($cUID"> ObjectMethod isInGroup <tt>($cUID,$group) -&gt; $bool</tt></a></li>
         <li><a href="#ObjectMethod *find_UserByEmail*"> ObjectMethod findUserByEmail <tt>($email) -&gt; \@users</tt></a></li>
-        <li><a href="#ObjectMethod <strong>getEmails</strong> ($user)"> ObjectMethod getEmails <tt>($user) -&gt; @emailAddress</tt></a></li>
-        <li><a href="#ObjectMethod <strong>setEmails</strong> ($user,"> ObjectMethod setEmails <tt>($user,@emails)</tt></a></li>
+        <li><a href="#ObjectMethod <strong>getEmails</strong> ($name)"> ObjectMethod getEmails <tt>($name) -&gt; @emailAddress</tt></a></li>
+        <li><a href="#ObjectMethod <strong>setEmails</strong> ($cUID,"> ObjectMethod setEmails <tt>($cUID,@emails)</tt></a></li>
         <li><a href="#ObjectMethod *find_UserByWikiNam"> ObjectMethod findUserByWikiName <tt>($wikiname) -&gt; listofcUIDsassociatedwiththatwikiname</tt></a></li>
-        <li><a href="#ObjectMethod <strong>checkPassword</strong> ($u"> ObjectMethod checkPassword <tt>($userName,$passwordU) -&gt; $boolean</tt></a></li>
-        <li><a href="#ObjectMethod <strong>setPassword</strong> ($use"> ObjectMethod setPassword <tt>($user,$newPassU,$oldPassU) -&gt; $boolean</tt></a></li>
+        <li><a href="#ObjectMethod <strong>checkPassword</strong> ($l"> ObjectMethod checkPassword <tt>($login,$passwordU) -&gt; $boolean</tt></a></li>
+        <li><a href="#ObjectMethod <strong>setPassword</strong> ($cUI"> ObjectMethod setPassword <tt>($cUID,$newPassU,$oldPassU) -&gt; $boolean</tt></a></li>
         <li><a href="#ObjectMethod <strong>passwordError</strong> ()"> ObjectMethod passwordError <tt>() -&gt; $string</tt></a></li>
-        <li><a href="#ObjectMethod *ASSERT_IS_CANONICA"> ObjectMethod ASSERT_IS_CANONICAL_USER_ID <tt>($user_id) -&gt; $boolean</tt></a></li>
-        <li><a href="#ObjectMethod *ASSERT_IS_USER_LOG"> ObjectMethod ASSERT_IS_USER_LOGIN_ID <tt>($user_login) -&gt; $boolean</tt></a></li>
-        <li><a href="#ObjectMethod *ASSERT_IS_USER_DIS"> ObjectMethod ASSERT_IS_USER_DISPLAY_NAME <tt>($user_display) -&gt; $boolean</tt></a></li>
       </ul>
     </li>
   </ul>
@@ -74,25 +71,27 @@ Default is **false**
 
 Called by the TWiki::Users object to determine which loaded mapping to use for a given user (must be fast).
 
-Default is **false**
+The user can be identified by any of $cUID, $login or $wikiname. Any of these parameters may be undef, and they should be tested in order; cUID first, then login, then wikiname.
 
-## <a name="ObjectMethod &lt;strong&gt;get_CanonicalUserI"></a> [[ObjectMethod]] \*getCanonicalUserID `($login,$dontcheck) -> cUID`
+## <a name="ObjectMethod &lt;strong&gt;login2cUID&lt;/strong&gt; ($logi"></a> [[ObjectMethod]] **login2cUID** `($login,$dontcheck) -> cUID`
 
-Convert a login name to the corresponding canonical user name. The canonical name can be any string of 7-bit alphanumeric and underscore characters, and must correspond 1:1 to the login name. (undef on failure)
+Convert a login name to the corresponding canonical user name. The canonical name can be any string of 7-bit alphanumeric and underscore characters, and must map 1:1 to the login name. (undef on failure)
 
-(if dontcheck is true, return a cUID for a nonexistant user too - used for registration)
+(if $dontcheck is true, return a cUID for a nonexistant user too. This is used for registration)
 
 Subclasses **must** implement this method.
 
+Note: This method was previously (in TWiki 4.2.0) known as getCanonicalUserID. The name was changed to avoid confusion with TWiki::Users::getCanonicalUserID, which has a more generic function. However to support older user mappers, getCanonicalUserID will still be called if login2cUID is not defined.
+
 ## <a name="ObjectMethod &lt;strong&gt;get_LoginName&lt;/strong&gt; ($c"></a> [[ObjectMethod]] **getLoginName** `($cUID) -> login`
 
 Converts an internal cUID to that user's login (undef on failure)
 
 Subclasses **must** implement this method.
 
-## <a name="ObjectMethod &lt;strong&gt;addUser&lt;/strong&gt; ($login,$"></a> [[ObjectMethod]] **addUser** `($login,$wikiname,$password,$emails) -> cUID`
+## <a name="ObjectMethod &lt;strong&gt;addUser&lt;/strong&gt; ($login,$"></a> [[ObjectMethod]] **addUser** `($login,$wikiname,$password,$emails) -> $cUID`
 
-Add a user to the persistant mapping that maps from usernames to wikinames and vice-versa, via a **canonical user id** (cUID).
+Add a user to the persistant mapping that maps from usernames to wikinames and vice-versa.
 
 $login and $wikiname must be acceptable to $TWiki::cfg\{NameFilter\}. $login must **always** be specified. $wikiname may be undef, in which case the user mapper should make one up.
 
@@ -106,11 +105,11 @@ where $error is a descriptive string.
 
 Throws an Error::Simple if user adding is not supported (the default).
 
-## <a name="ObjectMethod &lt;strong&gt;removeUser&lt;/strong&gt; ($user"></a> [[ObjectMethod]] **removeUser** `($user) -> $boolean`
+## <a name="ObjectMethod &lt;strong&gt;removeUser&lt;/strong&gt; ($cUID"></a> [[ObjectMethod]] **removeUser** `($cUID) -> $boolean`
 
 Delete the users entry from this mapper. Throws an Error::Simple if user removal is not supported (the default).
 
-## <a name="ObjectMethod &lt;strong&gt;get_WikiName&lt;/strong&gt; ($cU"></a> [[ObjectMethod]] **getWikiName** `($cUID) -> wikiname`
+## <a name="ObjectMethod &lt;strong&gt;get_WikiName&lt;/strong&gt; ($cU"></a> [[ObjectMethod]] **getWikiName** `($cUID) -> $wikiname`
 
 Map a canonical user name to a wikiname.
 
@@ -122,45 +121,45 @@ Determine if the user already exists or not. Whether a user exists or not is det
 
 Subclasses **must** implement this method.
 
-## <a name="ObjectMethod &lt;strong&gt;eachUser&lt;/strong&gt; () - lis"></a> [[ObjectMethod]] **eachUser** `() -> listIteratorofcUIDs`
+## <a name="ObjectMethod &lt;strong&gt;eachUser&lt;/strong&gt; () - TWi"></a> [[ObjectMethod]] **eachUser** `() -> TWiki::ListIteratorofcUIDs`
 
-Called from TWiki::Users. See the documentation of the corresponding method in that module for details.
+Get an iterator over the list of all the registered users **not** including groups.
 
 Subclasses **must** implement this method.
 
 ## <a name="ObjectMethod &lt;strong&gt;each_GroupMember*"></a><a name="ObjectMethod *each_GroupMember&lt;/strong&gt; "></a> [[ObjectMethod]] **eachGroupMember** `($group) -> TWiki::ListIteratorofcUIDs`
 
-Called from TWiki::Users. See the documentation of the corresponding method in that module for details.
+Return a iterator over the canonical user ids of users that are members of this group. Should only be called on groups.
+
+Note that groups may be defined recursively, so a group may contain other groups. This method should **only** return users i.e. all contained groups should be fully expanded.
 
 Subclasses **must** implement this method.
 
-## <a name="ObjectMethod &lt;strong&gt;isGroup&lt;/strong&gt; ($user) -"></a> [[ObjectMethod]] **isGroup** `($user) -> boolean`
+## <a name="ObjectMethod &lt;strong&gt;isGroup&lt;/strong&gt; ($name) -"></a> [[ObjectMethod]] **isGroup** `($name) -> boolean`
 
-Called from TWiki::Users. See the documentation of the corresponding method in that module for details.
+Establish if a user refers to a group or not. If $name is not a group name it will probably be a canonical user id, though that should not be assumed.
 
 Subclasses **must** implement this method.
 
-## <a name="ObjectMethod &lt;strong&gt;eachGroup&lt;/strong&gt; () - _L"></a> [[ObjectMethod]] **eachGroup** <tt>() -&gt; [[ListIteratorofgroupnames]]</tt>
+## <a name="ObjectMethod &lt;strong&gt;eachGroup&lt;/strong&gt; () - TW"></a> [[ObjectMethod]] **eachGroup** `() -> TWiki::ListIteratorofgroupnames`
 
-Called from TWiki::Users. See the documentation of the corresponding method in that module for details.
+Get an iterator over the list of all the groups.
 
 Subclasses **must** implement this method.
 
-## <a name="ObjectMethod &lt;strong&gt;eachMembership&lt;/strong&gt; ($"></a> [[ObjectMethod]] **eachMembership** <tt>($cUID) -&gt; [[ListIteratorofgroupsthisuserisin]]</tt>
+## <a name="ObjectMethod &lt;strong&gt;eachMembership&lt;/strong&gt; ($"></a> [[ObjectMethod]] **eachMembership** `($cUID) -> TWiki::ListIteratorofgroupsthisuserisin`
 
-Called from TWiki::Users. See the documentation of the corresponding method in that module for details.
+Return an iterator over the names of groups that $cUID is a member of.
 
 Subclasses **must** implement this method.
 
-## <a name="ObjectMethod &lt;strong&gt;isAdmin&lt;/strong&gt; ($user) -"></a> [[ObjectMethod]] **isAdmin** `($user) -> $boolean`
-
-True if the user is an administrator. Default is **false**
+## <a name="ObjectMethod &lt;strong&gt;isAdmin&lt;/strong&gt; ($cUID) -"></a> [[ObjectMethod]] **isAdmin** `($cUID) -> $boolean`
 
-## <a name="ObjectMethod &lt;strong&gt;is_InGroup&lt;/strong&gt; ($user"></a> [[ObjectMethod]] **isInGroup** `($user,$group,$scanning) -> bool`
+True if the user is an administrator.
 
-Called from TWiki::Users. See the documentation of the corresponding method in that module for details.
+## <a name="ObjectMethod &lt;strong&gt;is_InGroup&lt;/strong&gt; ($cUID"></a> [[ObjectMethod]] **isInGroup** `($cUID,$group) -> $bool`
 
-Default is **false**
+Test if the user identified by $cUID is in the given group. The default implementation iterates over all the members of $group, which is rather inefficient.
 
 ## <a name="ObjectMethod &lt;strong&gt;find_UserByEmail*"></a><a name="ObjectMethod *find_UserByEmail&lt;/strong&gt; "></a> [[ObjectMethod]] **findUserByEmail** `($email) -> \@users`
 
@@ -168,35 +167,35 @@ Default is **false**
 
 Return a list of canonical user names for the users that have this email registered with the password manager or the user mapping manager.
 
-Returns an empty list by default.
-
-## <a name="ObjectMethod &lt;strong&gt;getEmails&lt;/strong&gt; ($user)"></a> [[ObjectMethod]] **getEmails** `($user) -> @emailAddress`
+## <a name="ObjectMethod &lt;strong&gt;getEmails&lt;/strong&gt; ($name)"></a> [[ObjectMethod]] **getEmails** `($name) -> @emailAddress`
 
-If this is a user, return their email addresses. If it is a group, return the addresses of everyone in the group.
+If $name is a cUID, return that user's email addresses. If it is a group, return the addresses of everyone in the group.
 
 Duplicates should be removed from the list.
 
-By default, returns the empty list.
+## <a name="ObjectMethod &lt;strong&gt;setEmails&lt;/strong&gt; ($cUID,"></a> [[ObjectMethod]] **setEmails** `($cUID,@emails)`
 
-## <a name="ObjectMethod &lt;strong&gt;setEmails&lt;/strong&gt; ($user,"></a> [[ObjectMethod]] **setEmails** `($user,@emails)`
-
-Set the email address(es) for the given user. Does nothing by default.
+Set the email address(es) for the given user.
 
 ## <a name="ObjectMethod &lt;strong&gt;find_UserByWikiNam"></a> [[ObjectMethod]] \*findUserByWikiName `($wikiname) -> listofcUIDsassociatedwiththatwikiname`
 
-Called from TWiki::Users. See the documentation of the corresponding method in that module for details.
+- `$wikiname` - wikiname to look up
+
+Return a list of canonical user names for the users that have this wikiname. Since a single wikiname might be used by multiple login ids, we need a list.
+
+Note that if $wikiname is the name of a group, the group will **not** be expanded.
 
 Subclasses **must** implement this method.
 
-## <a name="ObjectMethod &lt;strong&gt;checkPassword&lt;/strong&gt; ($u"></a> [[ObjectMethod]] **checkPassword** `($userName,$passwordU) -> $boolean`
+## <a name="ObjectMethod &lt;strong&gt;checkPassword&lt;/strong&gt; ($l"></a> [[ObjectMethod]] **checkPassword** `($login,$passwordU) -> $boolean`
 
-Finds if the password is valid for the given user.
+Finds if the password is valid for the given login. This is called using a login name rather than a cUID because the user may not have been mapped at the time it is called.
 
 Returns 1 on success, undef on failure.
 
 Default behaviour is to return 1.
 
-## <a name="ObjectMethod &lt;strong&gt;setPassword&lt;/strong&gt; ($use"></a> [[ObjectMethod]] **setPassword** `($user,$newPassU,$oldPassU) -> $boolean`
+## <a name="ObjectMethod &lt;strong&gt;setPassword&lt;/strong&gt; ($cUI"></a> [[ObjectMethod]] **setPassword** `($cUID,$newPassU,$oldPassU) -> $boolean`
 
 If the $oldPassU matches matches the user's password, then it will replace it with $newPassU.
 
@@ -212,18 +211,4 @@ Default behaviour is to fail.
 
 Returns a string indicating the error that happened in the password handlers TODO: these delayed errors should be replaced with Exceptions.
 
-returns undef if no error 9the default)
-
-## <a name="ObjectMethod &lt;strong&gt;ASSERT_IS_CANONICA"></a> [[ObjectMethod]] \*ASSERT\_IS\_CANONICAL\_USER\_ID `($user_id) -> $boolean`
-
-Used for debugging to ensure we are actually passing a canonical\_id
-
-## <a name="ObjectMethod &lt;strong&gt;ASSERT_IS_USER_LOG"></a> [[ObjectMethod]] \*ASSERT\_IS\_USER\_LOGIN\_ID `($user_login) -> $boolean`
-
-Used for debugging to ensure we are actually passing a user login
-
-## <a name="ObjectMethod &lt;strong&gt;ASSERT_IS_USER_DIS"></a> [[ObjectMethod]] \*ASSERT\_IS\_USER\_DISPLAY\_NAME `($user_display) -> $boolean`
-
-Used for debugging to ensure we are actually passing a user display\_name (commonly a [[WikiWord]] Name)
-
-Returns true by default.
+returns undef if no error (the default)
diff --git a/TWiki/TWikiUsersBaseUserMappingDotPm.mdwn b/TWiki/TWikiUsersBaseUserMappingDotPm.mdwn
new file mode 100644 (file)
index 0000000..0718c71
--- /dev/null
@@ -0,0 +1,141 @@
+# <a name="Package &lt;code&gt;TWiki::Users::_BaseUser"></a> Package =TWiki::Users::BaseUserMapping
+
+User mapping is the process by which TWiki maps from a username (a login name) to a display name and back. It is also where groups are maintained.
+
+The [[BaseMapper]] provides support for a small number of predefined users. No registration - this is a read only usermapper. It uses the mapper prefix 'BaseUserMapping\_'.
+
+## <a name="Users"></a> Users
+
+- [[TWikiAdmin]] - uses the password that was set in Configure (IF its not null)
+- [[TWikiGuest]]
+- [[UnknownUser]]
+- [[TWikiContributor]] - 1 Jan 2005
+- [[TWikiRegistrationAgent]] - 1 Jan 2005
+
+### <a name="Groups"></a> Groups
+
+- $TWiki::cfg\{SuperAdminGroup\}
+- [[TWikiBaseGroup]]
+
+<div>
+  <ul>
+    <li><a href="#Package =TWiki::Users::_BaseUser"> Package TWiki::Users::BaseUserMapping</a><ul>
+        <li><a href="#Users"> Users</a><ul>
+            <li><a href="#Groups"> Groups</a></li>
+          </ul>
+        </li>
+        <li><a href="#ClassMethod <strong>new</strong> ($session)"> ClassMethod new <tt>($session)</tt></a></li>
+        <li><a href="#ObjectMethod <strong>finish</strong> ()"> ObjectMethod finish <tt>()</tt></a></li>
+        <li><a href="#ObjectMethod *login_TemplateName"> ObjectMethod loginTemplateName <tt>() -&gt; templateFile</tt></a></li>
+        <li><a href="#ObjectMethod <strong>handlesUser</strong> ($cUI"> ObjectMethod handlesUser <tt>($cUID,$login,$wikiname) -&gt; $boolean</tt></a></li>
+        <li><a href="#ObjectMethod <strong>login2cUID</strong> ($logi"> ObjectMethod login2cUID <tt>($login) -&gt; $cUID</tt></a></li>
+        <li><a href="#ObjectMethod <strong>get_LoginName</strong> ($c"> ObjectMethod getLoginName <tt>($cUID) -&gt; login</tt></a></li>
+        <li><a href="#ObjectMethod <strong>get_WikiName</strong> ($cU"> ObjectMethod getWikiName <tt>($cUID) -&gt; wikiname</tt></a></li>
+        <li><a href="#ObjectMethod <strong>userExists</strong> ($user"> ObjectMethod userExists <tt>($user) -&gt; $boolean</tt></a></li>
+        <li><a href="#ObjectMethod <strong>eachUser</strong> () -> li"> ObjectMethod eachUser <tt>() -&gt; listIteratorofcUIDs</tt></a></li>
+        <li><a href="#ObjectMethod *each_GroupMember*"> ObjectMethod eachGroupMember <tt>($group) -&gt; listIteratorofcUIDs</tt></a></li>
+        <li><a href="#ObjectMethod <strong>isGroup</strong> ($name) -"> ObjectMethod isGroup <tt>($name) -&gt; boolean</tt></a></li>
+        <li><a href="#ObjectMethod <strong>eachGroup</strong> () ->"> ObjectMethod eachGroup <tt>() -&gt; ListIteratorofgroupnames</tt></a></li>
+        <li><a href="#ObjectMethod <strong>eachMembership</strong> ($"> ObjectMethod eachMembership <tt>($cUID) -&gt; ListIteratorofgroupsthisuserisin</tt></a></li>
+        <li><a href="#ObjectMethod <strong>isAdmin</strong> ($cUID) -"> ObjectMethod isAdmin <tt>($cUID) -&gt; $boolean</tt></a></li>
+        <li><a href="#ObjectMethod <strong>getEmails</strong> ($name)"> ObjectMethod getEmails <tt>($name) -&gt; @emailAddress</tt></a></li>
+        <li><a href="#ObjectMethod *find_UserByWikiNam"> ObjectMethod findUserByWikiName <tt>($wikiname) -&gt; listofcUIDsassociatedwiththatwikiname</tt></a></li>
+        <li><a href="#ObjectMethod <strong>checkPassword</strong> ($l"> ObjectMethod checkPassword <tt>($login,$passwordU) -&gt; $boolean</tt></a></li>
+        <li><a href="#ObjectMethod <strong>setPassword</strong> ($cUI"> ObjectMethod setPassword <tt>($cUID,$newPassU,$oldPassU) -&gt; $boolean</tt></a></li>
+        <li><a href="#ObjectMethod <strong>passwordError</strong> ()"> ObjectMethod passwordError <tt>() -&gt; $string</tt></a></li>
+      </ul>
+    </li>
+  </ul>
+</div>
+
+## <a name="ClassMethod &lt;strong&gt;new&lt;/strong&gt; ($session)"></a> [[ClassMethod]] **new** `($session)`
+
+Construct the [[BaseUserMapping]] object
+
+## <a name="ObjectMethod &lt;strong&gt;finish&lt;/strong&gt; ()"></a> [[ObjectMethod]] **finish** `()`
+
+Break circular references.
+
+## <a name="ObjectMethod &lt;strong&gt;login_TemplateName"></a> [[ObjectMethod]] \*loginTemplateName `() -> templateFile`
+
+allows [[UserMappings]] to come with customised login screens - that should preffereably only over-ride the UI function
+
+## <a name="ObjectMethod &lt;strong&gt;handlesUser&lt;/strong&gt; ($cUI"></a> [[ObjectMethod]] **handlesUser** `($cUID,$login,$wikiname) -> $boolean`
+
+See baseclass for documentation.
+
+In the [[BaseUserMapping]] case, we know all the details of the users we specialise in.
+
+## <a name="ObjectMethod &lt;strong&gt;login2cUID&lt;/strong&gt; ($logi"></a> [[ObjectMethod]] **login2cUID** `($login) -> $cUID`
+
+Convert a login name to the corresponding canonical user name. The canonical name can be any string of 7-bit alphanumeric and underscore characters, and must correspond 1:1 to the login name. (undef on failure)
+
+## <a name="ObjectMethod &lt;strong&gt;get_LoginName&lt;/strong&gt; ($c"></a> [[ObjectMethod]] **getLoginName** `($cUID) -> login`
+
+converts an internal cUID to that user's login (undef on failure)
+
+## <a name="ObjectMethod &lt;strong&gt;get_WikiName&lt;/strong&gt; ($cU"></a> [[ObjectMethod]] **getWikiName** `($cUID) -> wikiname`
+
+Map a canonical user name to a wikiname
+
+## <a name="ObjectMethod &lt;strong&gt;userExists&lt;/strong&gt; ($user"></a> [[ObjectMethod]] **userExists** `($user) -> $boolean`
+
+Determine if the user already exists or not.
+
+## <a name="ObjectMethod &lt;strong&gt;eachUser&lt;/strong&gt; () - lis"></a> [[ObjectMethod]] **eachUser** `() -> listIteratorofcUIDs`
+
+See baseclass for documentation.
+
+## <a name="ObjectMethod &lt;strong&gt;each_GroupMember*"></a><a name="ObjectMethod *each_GroupMember&lt;/strong&gt; "></a> [[ObjectMethod]] **eachGroupMember** `($group) -> listIteratorofcUIDs`
+
+See baseclass for documentation.
+
+The basemapper implementation assumes that there are no nested groups in the basemapper.
+
+## <a name="ObjectMethod &lt;strong&gt;isGroup&lt;/strong&gt; ($name) -"></a> [[ObjectMethod]] **isGroup** `($name) -> boolean`
+
+See baseclass for documentation.
+
+## <a name="ObjectMethod &lt;strong&gt;eachGroup&lt;/strong&gt; () - _L"></a> [[ObjectMethod]] **eachGroup** <tt>() -&gt; [[ListIteratorofgroupnames]]</tt>
+
+See baseclass for documentation.
+
+## <a name="ObjectMethod &lt;strong&gt;eachMembership&lt;/strong&gt; ($"></a> [[ObjectMethod]] **eachMembership** <tt>($cUID) -&gt; [[ListIteratorofgroupsthisuserisin]]</tt>
+
+See baseclass for documentation.
+
+## <a name="ObjectMethod &lt;strong&gt;isAdmin&lt;/strong&gt; ($cUID) -"></a> [[ObjectMethod]] **isAdmin** `($cUID) -> $boolean`
+
+True if the user is an admin
+
+- is a member of the $TWiki::cfg\{SuperAdminGroup\}
+
+## <a name="ObjectMethod &lt;strong&gt;getEmails&lt;/strong&gt; ($name)"></a> [[ObjectMethod]] **getEmails** `($name) -> @emailAddress`
+
+If $name is a cUID, return their email addresses. If it is a group, return the addresses of everyone in the group.
+
+## <a name="ObjectMethod &lt;strong&gt;find_UserByWikiNam"></a> [[ObjectMethod]] \*findUserByWikiName `($wikiname) -> listofcUIDsassociatedwiththatwikiname`
+
+See baseclass for documentation.
+
+## <a name="ObjectMethod &lt;strong&gt;checkPassword&lt;/strong&gt; ($l"></a> [[ObjectMethod]] **checkPassword** `($login,$passwordU) -> $boolean`
+
+Finds if the password is valid for the given user.
+
+Returns 1 on success, undef on failure.
+
+## <a name="ObjectMethod &lt;strong&gt;setPassword&lt;/strong&gt; ($cUI"></a> [[ObjectMethod]] **setPassword** `($cUID,$newPassU,$oldPassU) -> $boolean`
+
+If the $oldPassU matches matches the user's password, then it will replace it with $newPassU.
+
+If $oldPassU is not correct and not 1, will return 0.
+
+If $oldPassU is 1, will force the change irrespective of the existing password, adding the user if necessary.
+
+Otherwise returns 1 on success, undef on failure.
+
+## <a name="ObjectMethod &lt;strong&gt;passwordError&lt;/strong&gt; ()"></a><a name="ObjectMethod &lt;strong&gt;passwordError&lt;/strong&gt; () "></a> [[ObjectMethod]] **passwordError** `() -> $string`
+
+returns a string indicating the error that happened in the password handlers TODO: these delayed error's should be replaced with Exceptions.
+
+returns undef if no error
index 0db3272..572b382 100644 (file)
@@ -22,8 +22,9 @@ The canonical user id should **never** be seen by a user. On the other hand, cor
 
 **NOTE:**
 
-- wherever the code references $user, its a canonical\_id
+- wherever the code references $cUID, its a canonical\_id
 - wherever the code references $group, its a group\_name
+- $name may be a group or a cUID
 
 <div>
   <ul>
@@ -32,34 +33,31 @@ The canonical user id should **never** be seen by a user. On the other hand, cor
         <li><a href="#ObjectMethod <strong>finish</strong> ()"> ObjectMethod finish <tt>()</tt></a></li>
         <li><a href="#ObjectMethod *login_TemplateName"> ObjectMethod loginTemplateName <tt>() -&gt; templateFile</tt></a></li>
         <li><a href="#ObjectMethod *supportsRegistrati"> ObjectMethod supportsRegistration <tt>() -&gt; boolean</tt></a></li>
-        <li><a href="#ObjectMethod <strong>initialiseUser</strong> ($"> ObjectMethod initialiseUser <tt>($login) -&gt; cUID</tt></a></li>
+        <li><a href="#ObjectMethod <strong>initialiseUser</strong> ($"> ObjectMethod initialiseUser <tt>($login) -&gt; $cUID</tt></a></li>
         <li><a href="#randomPassword()"> randomPassword()</a></li>
         <li><a href="#ObjectMethod <strong>addUser</strong> ($login,$"> ObjectMethod addUser <tt>($login,$wikiname,$password,$emails) -&gt; $cUID</tt></a></li>
-        <li><a href="#StaticMethod <strong>forceCUID</strong> ($cUID)"> StaticMethod forceCUID <tt>($cUID) -&gt; $cUID</tt></a></li>
-        <li><a href="#ObjectMethod *get_CanonicalUserI"> ObjectMethod getCanonicalUserID <tt>($login) -&gt; $user</tt></a></li>
+        <li><a href="#StaticMethod <strong>map_Login2cUID</strong> ($"> StaticMethod mapLogin2cUID <tt>($login) -&gt; $cUID</tt></a></li>
+        <li><a href="#ObjectMethod *get_CanonicalUserI"> ObjectMethod getCanonicalUserID <tt>($identifier) -&gt; $cUID</tt></a></li>
         <li><a href="#ObjectMethod *find_UserByWikiNam"> ObjectMethod findUserByWikiName <tt>($wn) -&gt; \@users</tt></a></li>
         <li><a href="#ObjectMethod *find_UserByEmail*"> ObjectMethod findUserByEmail <tt>($email) -&gt; \@users</tt></a></li>
-        <li><a href="#ObjectMethod <strong>getEmails</strong> ($user)"> ObjectMethod getEmails <tt>($user) -&gt; @emailAddress</tt></a></li>
-        <li><a href="#ObjectMethod <strong>setEmails</strong> ($user,"> ObjectMethod setEmails <tt>($user,@emails)</tt></a></li>
+        <li><a href="#ObjectMethod <strong>getEmails</strong> ($name)"> ObjectMethod getEmails <tt>($name) -&gt; @emailAddress</tt></a></li>
+        <li><a href="#ObjectMethod <strong>setEmails</strong> ($cUID,"> ObjectMethod setEmails <tt>($cUID,@emails)</tt></a></li>
         <li><a href="#ObjectMethod <strong>isAdmin</strong> ($cUID) -"> ObjectMethod isAdmin <tt>($cUID) -&gt; $boolean</tt></a></li>
-        <li><a href="#ObjectMethod <strong>is_InList</strong> ($user,"> ObjectMethod isInList <tt>($user,$list) -&gt; $boolean</tt></a></li>
-        <li><a href="#ObjectMethod <strong>get_LoginName</strong> ($c"> ObjectMethod getLoginName <tt>($cUID) -&gt; $string</tt></a></li>
+        <li><a href="#ObjectMethod <strong>is_InList</strong> ($cUID,"> ObjectMethod isInList <tt>($cUID,$list) -&gt; $boolean</tt></a></li>
+        <li><a href="#ObjectMethod <strong>get_LoginName</strong> ($c"> ObjectMethod getLoginName <tt>($cUID) -&gt; $login</tt></a></li>
         <li><a href="#ObjectMethod <strong>get_WikiName</strong> ($cU"> ObjectMethod getWikiName <tt>($cUID) -&gt; $wikiName</tt></a></li>
-        <li><a href="#ObjectMethod <strong>web_DotWikiName</strong> ("> ObjectMethod webDotWikiName <tt>($user) -&gt; $webDotWiki</tt></a></li>
+        <li><a href="#ObjectMethod <strong>web_DotWikiName</strong> ("> ObjectMethod webDotWikiName <tt>($cUID) -&gt; $webDotWiki</tt></a></li>
         <li><a href="#ObjectMethod <strong>userExists</strong> ($cUID"> ObjectMethod userExists <tt>($cUID) -&gt; $boolean</tt></a></li>
-        <li><a href="#ObjectMethod <strong>eachUser</strong> () -> $i"> ObjectMethod eachUser <tt>() -&gt; $iterator</tt></a></li>
-        <li><a href="#ObjectMethod <strong>eachGroup</strong> () -> $"> ObjectMethod eachGroup <tt>() -&gt; $iterator</tt></a></li>
+        <li><a href="#ObjectMethod <strong>eachUser</strong> () -> TW"> ObjectMethod eachUser <tt>() -&gt; TWiki::IteratorofcUIDs</tt></a></li>
+        <li><a href="#ObjectMethod <strong>eachGroup</strong> () -> T"> ObjectMethod eachGroup <tt>() -&gt; TWiki::ListIteratorofgroupnames</tt></a></li>
         <li><a href="#ObjectMethod *each_GroupMember*"> ObjectMethod eachGroupMember <tt>($group) -&gt; $iterator</tt></a></li>
-        <li><a href="#ObjectMethod <strong>isGroup</strong> ($user) -"> ObjectMethod isGroup <tt>($user) -&gt; boolean</tt></a></li>
-        <li><a href="#ObjectMethod <strong>is_InGroup</strong> ($user"> ObjectMethod isInGroup <tt>($user,$group) -&gt; $boolean</tt></a></li>
+        <li><a href="#ObjectMethod <strong>isGroup</strong> ($name) -"> ObjectMethod isGroup <tt>($name) -&gt; boolean</tt></a></li>
+        <li><a href="#ObjectMethod <strong>is_InGroup</strong> ($cUID"> ObjectMethod isInGroup <tt>($cUID,$group) -&gt; $boolean</tt></a></li>
         <li><a href="#ObjectMethod <strong>eachMembership</strong> ($"> ObjectMethod eachMembership <tt>($cUID) -&gt; $iterator</tt></a></li>
-        <li><a href="#ObjectMethod <strong>checkPassword</strong> ($u"> ObjectMethod checkPassword <tt>($userName,$passwordU) -&gt; $boolean</tt></a></li>
-        <li><a href="#ObjectMethod <strong>setPassword</strong> ($use"> ObjectMethod setPassword <tt>($user,$newPassU,$oldPassU) -&gt; $boolean</tt></a></li>
+        <li><a href="#ObjectMethod <strong>checkLogin</strong> ($logi"> ObjectMethod checkLogin <tt>($login,$passwordU) -&gt; $boolean</tt></a></li>
+        <li><a href="#ObjectMethod <strong>setPassword</strong> ($cUI"> ObjectMethod setPassword <tt>($cUID,$newPassU,$oldPassU) -&gt; $boolean</tt></a></li>
         <li><a href="#ObjectMethod <strong>passwordError</strong> ()"> ObjectMethod passwordError <tt>() -&gt; $string</tt></a></li>
-        <li><a href="#ObjectMethod <strong>removeUser</strong> ($user"> ObjectMethod removeUser <tt>($user) -&gt; $boolean</tt></a></li>
-        <li><a href="#ObjectMethod *ASSERT_IS_CANONICA"> ObjectMethod ASSERT_IS_CANONICAL_USER_ID <tt>($user_id) -&gt; $boolean</tt></a></li>
-        <li><a href="#ObjectMethod *ASSERT_IS_USER_LOG"> ObjectMethod ASSERT_IS_USER_LOGIN_ID <tt>($user_login) -&gt; $boolean</tt></a></li>
-        <li><a href="#ObjectMethod *ASSERT_IS_USER_DIS"> ObjectMethod ASSERT_IS_USER_DISPLAY_NAME <tt>($user_display) -&gt; $boolean</tt></a></li>
+        <li><a href="#ObjectMethod <strong>removeUser</strong> ($cUID"> ObjectMethod removeUser <tt>($cUID) -&gt; $boolean</tt></a></li>
       </ul>
     </li>
   </ul>
@@ -81,11 +79,13 @@ allows [[UserMappings]] to come with customised login screens - that should pref
 
 #return 1 if the main [[UserMapper]] supports registration (ie can create new users)
 
-## <a name="ObjectMethod &lt;strong&gt;initialiseUser&lt;/strong&gt; ($"></a> [[ObjectMethod]] **initialiseUser** `($login) -> cUID`
+## <a name="ObjectMethod &lt;strong&gt;initialiseUser&lt;/strong&gt; ($"></a> [[ObjectMethod]] **initialiseUser** `($login) -> $cUID`
+
+Given a login (which must have been authenticated) determine the cUID that corresponds to that user. This method is used from TWiki.pm to map the $REMOTE\_USER to a cUID.
 
 ## <a name="randomPassword()"></a> randomPassword()
 
-Static function that returns a random password
+Static function that returns a random password. This function is not used in this module; it is provided as a service for other modules, such as custom mappers and registration modules.
 
 ## <a name="ObjectMethod &lt;strong&gt;addUser&lt;/strong&gt; ($login,$"></a> [[ObjectMethod]] **addUser** `($login,$wikiname,$password,$emails) -> $cUID`
 
@@ -101,19 +101,21 @@ $login can be undef; $wikiname must always have a value.
 
 The return value is the canonical user id that is used by TWiki to identify the user.
 
-## <a name="StaticMethod &lt;strong&gt;forceCUID&lt;/strong&gt; ($cUID)"></a> [[StaticMethod]] **forceCUID** `($cUID) -> $cUID`
+## <a name="StaticMethod &lt;strong&gt;map_Login2cUID&lt;/strong&gt; ($"></a> [[StaticMethod]] **mapLogin2cUID** `($login) -> $cUID`
+
+This function maps an arbitrary string into a valid cUID. The transformation is reversible, but the function is not idempotent (a cUID passed to this function will NOT be returned unchanged). The generated cUID will be unique for the given login name.
 
-This function ensures that any cUID's are able to be used for rcs, and other internals not capable of coping with user identifications that contain more than 7 bit ascii.
+This static function is designed to be called from custom user mappers that support 1:1 login-to-cUID mappings.
 
-repeated calls must result in the same result (sorry, can't spell the word for it)so the '\_' must not be re-encoded
+## <a name="ObjectMethod &lt;strong&gt;get_CanonicalUserI"></a> [[ObjectMethod]] \*getCanonicalUserID `($identifier) -> $cUID`
 
-Please, call this function in any custom Usermapper to simplifyyour mapping code.
+Works out the TWiki canonical user identifier for the user who either (1) logs in with the login name $identifier or (2) has the wikiname $identifier.
 
-## <a name="ObjectMethod &lt;strong&gt;get_CanonicalUserI"></a> [[ObjectMethod]] \*getCanonicalUserID `($login) -> $user`
+The canonical user ID is an alphanumeric string that is unique to the login name, and can be mapped back to a login name and the corresponding wiki name using the methods of this class.
 
-Works out the unique TWiki identifier for the user who logs in with the given login. The canonical user ID is an alphanumeric string that is unique to the login name, and can be mapped back to a login name and the corresponding wiki name using the methods of this class.
+Note that if the login name to wiki name mapping is not 1:1, this method will map a wikiname to one of the login names that corresponds to the wiki name, but there is no guarantee which one.
 
-returns undef if the user does not exist.
+Returns undef if the user does not exist.
 
 ## <a name="ObjectMethod &lt;strong&gt;find_UserByWikiNam"></a> [[ObjectMethod]] \*findUserByWikiName `($wn) -> \@users`
 
@@ -129,15 +131,15 @@ If $wn is the name of a group, the group will **not** be expanded.
 
 Return a list of canonical user names for the users that have this email registered with the user mapping managers.
 
-## <a name="ObjectMethod &lt;strong&gt;getEmails&lt;/strong&gt; ($user)"></a> [[ObjectMethod]] **getEmails** `($user) -> @emailAddress`
+## <a name="ObjectMethod &lt;strong&gt;getEmails&lt;/strong&gt; ($name)"></a> [[ObjectMethod]] **getEmails** `($name) -> @emailAddress`
 
-If this is a user, return their email addresses. If it is a group, return the addresses of everyone in the group.
+If $name is a cUID, return their email addresses. If it is a group, return the addresses of everyone in the group.
 
 The password manager and user mapping manager are both consulted for emails for each user (where they are actually found is implementation defined).
 
 Duplicates are removed from the list.
 
-## <a name="ObjectMethod &lt;strong&gt;setEmails&lt;/strong&gt; ($user,"></a> [[ObjectMethod]] **setEmails** `($user,@emails)`
+## <a name="ObjectMethod &lt;strong&gt;setEmails&lt;/strong&gt; ($cUID,"></a> [[ObjectMethod]] **setEmails** `($cUID,@emails)`
 
 Set the email address(es) for the given user. The password manager is tried first, and if it doesn't want to know the user mapping manager is tried.
 
@@ -148,23 +150,23 @@ True if the user is an admin
 - is $TWiki::cfg\{SuperAdminGroup\}
 - is a member of the $TWiki::cfg\{SuperAdminGroup\}
 
-## <a name="ObjectMethod &lt;strong&gt;is_InList&lt;/strong&gt; ($user,"></a> [[ObjectMethod]] **isInList** `($user,$list) -> $boolean`
+## <a name="ObjectMethod &lt;strong&gt;is_InList&lt;/strong&gt; ($cUID,"></a> [[ObjectMethod]] **isInList** `($cUID,$list) -> $boolean`
 
-Return true if $user is in a list of user **wikinames** and group ids.
+Return true if $cUID is in a list of user **wikinames**, **logins** and group ids.
 
-$list is a comma-separated wikiname and group list. The list may contain the conventional web specifiers (which are ignored).
+The list may contain the conventional web specifiers (which are ignored).
 
-## <a name="ObjectMethod &lt;strong&gt;get_LoginName&lt;/strong&gt; ($c"></a> [[ObjectMethod]] **getLoginName** `($cUID) -> $string`
+## <a name="ObjectMethod &lt;strong&gt;get_LoginName&lt;/strong&gt; ($c"></a> [[ObjectMethod]] **getLoginName** `($cUID) -> $login`
 
-Get the login name of a user.
+Get the login name of a user. Returns undef if the user is not known.
 
 ## <a name="ObjectMethod &lt;strong&gt;get_WikiName&lt;/strong&gt; ($cU"></a> [[ObjectMethod]] **getWikiName** `($cUID) -> $wikiName`
 
 Get the wikiname to display for a canonical user identifier.
 
-can return undef if the user is not in the mapping system (or the special case from initialiseUser)
+Can return undef if the user is not in the mapping system (or the special case from initialiseUser)
 
-## <a name="ObjectMethod &lt;strong&gt;web_DotWikiName&lt;/strong&gt; ("></a> [[ObjectMethod]] **webDotWikiName** `($user) -> $webDotWiki`
+## <a name="ObjectMethod &lt;strong&gt;web_DotWikiName&lt;/strong&gt; ("></a> [[ObjectMethod]] **webDotWikiName** `($cUID) -> $webDotWiki`
 
 Return the fully qualified wikiname of the user
 
@@ -172,7 +174,7 @@ Return the fully qualified wikiname of the user
 
 Determine if the user already exists or not. A user exists if they are known to to the user mapper.
 
-## <a name="ObjectMethod &lt;strong&gt;eachUser&lt;/strong&gt; () - $it"></a> [[ObjectMethod]] **eachUser** `() -> $iterator`
+## <a name="ObjectMethod &lt;strong&gt;eachUser&lt;/strong&gt; () - TWi"></a> [[ObjectMethod]] **eachUser** `() -> TWiki::IteratorofcUIDs`
 
 Get an iterator over the list of all the registered users **not** including groups.
 
@@ -186,7 +188,7 @@ Use it as follows:
             ...
         }
 
-## <a name="ObjectMethod &lt;strong&gt;eachGroup&lt;/strong&gt; () - $i"></a> [[ObjectMethod]] **eachGroup** `() -> $iterator`
+## <a name="ObjectMethod &lt;strong&gt;eachGroup&lt;/strong&gt; () - TW"></a> [[ObjectMethod]] **eachGroup** `() -> TWiki::ListIteratorofgroupnames`
 
 Get an iterator over the list of all the groups.
 
@@ -196,31 +198,27 @@ Return a iterator of user ids that are members of this group. Should only be cal
 
 Note that groups may be defined recursively, so a group may contain other groups. This method should **only** return users i.e. all contained groups should be fully expanded.
 
-## <a name="ObjectMethod &lt;strong&gt;isGroup&lt;/strong&gt; ($user) -"></a> [[ObjectMethod]] **isGroup** `($user) -> boolean`
-
-Establish if a user refers to a group or not.
-
-The default implementation is to check if the wikiname of the user ends with 'Group'. Subclasses may override this behaviour to provide alternative interpretations. The $TWiki::cfg\{SuperAdminGroup\} is recognized as a group no matter what it's name is.
+## <a name="ObjectMethod &lt;strong&gt;isGroup&lt;/strong&gt; ($name) -"></a> [[ObjectMethod]] **isGroup** `($name) -> boolean`
 
-QUESTION: is the $user parameter here a string, or a canonical\_id??
+Establish if a $name refers to a group or not. If $name is not a group name it will probably be a canonical user id, though that should not be assumed.
 
-## <a name="ObjectMethod &lt;strong&gt;is_InGroup&lt;/strong&gt; ($user"></a> [[ObjectMethod]] **isInGroup** `($user,$group) -> $boolean`
+## <a name="ObjectMethod &lt;strong&gt;is_InGroup&lt;/strong&gt; ($cUID"></a> [[ObjectMethod]] **isInGroup** `($cUID,$group) -> $boolean`
 
-Test if user is in the given group.
+Test if the user identified by $cUID is in the given group.
 
 ## <a name="ObjectMethod &lt;strong&gt;eachMembership&lt;/strong&gt; ($"></a> [[ObjectMethod]] **eachMembership** `($cUID) -> $iterator`
 
 Return an iterator over the groups that $cUID is a member of.
 
-## <a name="ObjectMethod &lt;strong&gt;checkPassword&lt;/strong&gt; ($u"></a> [[ObjectMethod]] **checkPassword** `($userName,$passwordU) -> $boolean`
+## <a name="ObjectMethod &lt;strong&gt;checkLogin&lt;/strong&gt; ($logi"></a> [[ObjectMethod]] **checkLogin** `($login,$passwordU) -> $boolean`
 
-Finds if the password is valid for the given user.
+Finds if the password is valid for the given user. This method is called using the login name rather than the $cUID so that it can be called with a user who can be authenticated, but may not be mappable to a cUID (yet).
 
 Returns 1 on success, undef on failure.
 
 TODO: add special check for [[BaseMapping]] admin user's login, and if its there (and we're in sudo\_context?) use that..
 
-## <a name="ObjectMethod &lt;strong&gt;setPassword&lt;/strong&gt; ($use"></a> [[ObjectMethod]] **setPassword** `($user,$newPassU,$oldPassU) -> $boolean`
+## <a name="ObjectMethod &lt;strong&gt;setPassword&lt;/strong&gt; ($cUI"></a> [[ObjectMethod]] **setPassword** `($cUID,$newPassU,$oldPassU) -> $boolean`
 
 If the $oldPassU matches matches the user's password, then it will replace it with $newPassU.
 
@@ -232,28 +230,10 @@ Otherwise returns 1 on success, undef on failure.
 
 ## <a name="ObjectMethod &lt;strong&gt;passwordError&lt;/strong&gt; ()"></a><a name="ObjectMethod &lt;strong&gt;passwordError&lt;/strong&gt; () "></a> [[ObjectMethod]] **passwordError** `() -> $string`
 
-returns a string indicating the error that happened in the password handlers TODO: these delayed error's should be replaced with Exceptions.
+Returns a string indicating the error that happened in the password handlers TODO: these delayed error's should be replaced with Exceptions.
 
 returns undef if no error
 
-## <a name="ObjectMethod &lt;strong&gt;removeUser&lt;/strong&gt; ($user"></a> [[ObjectMethod]] **removeUser** `($user) -> $boolean`
+## <a name="ObjectMethod &lt;strong&gt;removeUser&lt;/strong&gt; ($cUID"></a> [[ObjectMethod]] **removeUser** `($cUID) -> $boolean`
 
 Delete the users entry. Removes the user from the password manager and user mapping manager. Does **not** remove their personal topics, which may still be linked.
-
-## <a name="ObjectMethod &lt;strong&gt;ASSERT_IS_CANONICA"></a> [[ObjectMethod]] \*ASSERT\_IS\_CANONICAL\_USER\_ID `($user_id) -> $boolean`
-
-used for debugging to ensure we are actually passing a canonical\_id
-
-These ASSERTS have been disabled, as they have been made dangerous and misleading due to the legacy cUID code
-
-## <a name="ObjectMethod &lt;strong&gt;ASSERT_IS_USER_LOG"></a> [[ObjectMethod]] \*ASSERT\_IS\_USER\_LOGIN\_ID `($user_login) -> $boolean`
-
-used for debugging to ensure we are actually passing a user login
-
-These ASSERTS have been disabled, as they have been made dangerous and misleading due to the legacy cUID code
-
-## <a name="ObjectMethod &lt;strong&gt;ASSERT_IS_USER_DIS"></a> [[ObjectMethod]] \*ASSERT\_IS\_USER\_DISPLAY\_NAME `($user_display) -> $boolean`
-
-used for debugging to ensure we are actually passing a user display\_name (commonly a [[WikiWord]] Name)
-
-These ASSERTS have been disabled, as they have been made dangerous and misleading due to the legacy cUID code
index f8fb09e..b5c65aa 100644 (file)
@@ -19,7 +19,7 @@ The methods of this class should be overridded by subclasses that want to implem
         <li><a href="#ObjectMethod *is_ManagingEmails*"> ObjectMethod isManagingEmails <tt>() -&gt; $boolean</tt></a></li>
         <li><a href="#ObjectMethod <strong>getEmails</strong> ($login"> ObjectMethod getEmails <tt>($login) -&gt; @emails</tt></a></li>
         <li><a href="#ObjectMethod <strong>setEmails</strong> ($login"> ObjectMethod setEmails <tt>($login,@emails) -&gt; $boolean</tt></a></li>
-        <li><a href="#ObjectMethod *find_LoginByEmail*"> ObjectMethod findLoginByEmail <tt>($email) -&gt; \@users</tt></a></li>
+        <li><a href="#ObjectMethod *find_UserByEmail*"> ObjectMethod findUserByEmail <tt>($email) -&gt; \@users</tt></a></li>
         <li><a href="#ObjectMethod <strong>can_FetchUsers</strong> ()"> ObjectMethod canFetchUsers <tt>() -&gt; boolean</tt></a></li>
         <li><a href="#ObjectMethod <strong>fetchUsers</strong> () ->"> ObjectMethod fetchUsers <tt>() -&gt; newTWiki::ListIterator(\@users)</tt></a></li>
       </ul>
@@ -91,7 +91,7 @@ Fetch the email address(es) for the given login. Default behaviour is to return
 
 Set the email address(es) for the given login name. Returns true if the emails were set successfully. Default behaviour is a nop, which will result in the user mapping manager taking over. Called by Users.pm. Only used if `isManagingEmails` -&gt; `true`.
 
-## <a name="ObjectMethod &lt;strong&gt;find_LoginByEmail*"></a> [[ObjectMethod]] \*findLoginByEmail `($email) -> \@users`
+## <a name="ObjectMethod &lt;strong&gt;find_UserByEmail*"></a><a name="ObjectMethod *find_UserByEmail&lt;/strong&gt; "></a> [[ObjectMethod]] **findUserByEmail** `($email) -> \@users`
 
 Returns an array of login names that relate to a email address. Defaut behaviour is a nop, which will result in the user mapping manager being asked for its opinion. If subclass implementations return a value for this, then the user mapping manager will **not** be asked. Only used if `isManagingEmails` -&gt; `true`.
 
index 852ffec..25343af 100644 (file)
@@ -137,7 +137,7 @@ There are additional useful preferences variables defined in [[TWikiPreferences]
 
 Most predefined variables return values that were either set in the configuration when TWiki was installed, or taken from server info (such as current username, or date and time). Some, like `%SEARCH%`, are powerful and general tools.
 
-- %X% Predefined variables can be overridden by [[preferences variables|Main/WebHome#PreferencesVariables]]
+- %X% Predefined variables can be overridden by [[preferences variables|Main/WebHome#PreferencesVariables]] (except TOPIC and WEB)
 - %X% Plugins may extend the set of predefined variables (see individual Plugins topics for details)
 - %T% **Take the time to thoroughly read through ALL preference variables.** If you actively configure your site, review variables periodically. They cover a wide range of functions, and it can be easy to miss the one perfect variable for something you have in mind. For example, see `%INCLUDINGTOPIC%`, `%INCLUDE%`, and the mighty `%SEARCH%`.
 
index cd62435..22fa0c6 100644 (file)
@@ -256,7 +256,7 @@ This plugin is pre-installed with your TWiki release. You should not have to ins
   </tr>
   <tr>
     <td align="right" bgcolor="#ffffff" style=""> Copyright: </td>
-    <td bgcolor="#ffffff" style=""> © 2001-2007, TWiki:Main/JohnTalintyre, <a href="mailto:Peter@Thoeny.org">Peter@Thoeny.org</a> (<a href="http://www.twiki.net/" target="_top">TWIKI.NET</a>), TWiki Contributors </td>
+    <td bgcolor="#ffffff" style=""> © 2001-2008, TWiki:Main/JohnTalintyre, <a href="mailto:Peter@Thoeny.org">Peter@Thoeny.org</a> (<a href="http://www.twiki.net/" target="_top">TWIKI.NET</a>), TWiki Contributors </td>
   </tr>
   <tr>
     <td align="right" bgcolor="#ecf2f8" style=""> License: </td>
@@ -264,13 +264,21 @@ This plugin is pre-installed with your TWiki release. You should not have to ins
   </tr>
   <tr>
     <td align="right" bgcolor="#ffffff" style=""> Plugin Version: </td>
-    <td bgcolor="#ffffff" style=""> 1.032 (22 Dec 2007) </td>
+    <td bgcolor="#ffffff" style=""> 1.034 (03 Aug 2008) </td>
   </tr>
   <tr>
     <td align="right" bgcolor="#ecf2f8" style=""> Change History: </td>
     <td bgcolor="#ecf2f8" style="">  </td>
   </tr>
   <tr>
+    <td align="right" bgcolor="#ffffff" style=""> 03 Aug 2008 </td>
+    <td bgcolor="#ffffff" style=""> 1.034 TWiki 4.2.1 release version </td>
+  </tr>
+  <tr>
+    <td align="right" bgcolor="#ecf2f8" style=""> 20 Mar 2008 </td>
+    <td bgcolor="#ecf2f8" style=""> 1.033 TWikibug:Item5387: allow rowspanned columns to contain HTML tags; otherwise it is impossible to add an invisible anchor to a rowspanned cell </td>
+  </tr>
+  <tr>
     <td align="right" bgcolor="#ffffff" style=""> 16 Dec 2007 </td>
     <td bgcolor="#ffffff" style=""> 1.030: Kenneth Lavrsen: Fixed the problem of tables being sorted by by [[Main/TablePlugin]] while the table is being edited by plugins such as [[Main/EditTablePlugin]]. This required adding a new attribute <code>disableallsort</code> so plugins such as [[Main/EditTablePlugin]] can temporarily disable all sorting for a table. Additionally the CGI variable (URL parameter or hidden formfield) <code>sort</code> can be set to "off" which disables all header sorting in the topic. This is used by plugins such as [[Main/EditTablePlugin]] to disable the sorting by clicking header fields during editing of tables. Ref: TWikibug:Item5135 and TWikibug:Item2690. </td>
   </tr>
index 0affa72..7304ac8 100644 (file)
@@ -30,7 +30,7 @@ The editor uses a translator module to convert from TWiki markup language (TML)
 
 **_NOTES:_**
 
-- This plugin comes pre-installed on TWiki 4.2.0. You should only need to re-install if there is an upgrade to the plugin.
+- This plugin comes pre-installed on TWiki 4.2.X. You should only need to re-install if there is an upgrade to the plugin.
 - It requires the very latest revision of [[WysiwygPlugin]]. It will **not** work with the version shipped with TWiki 4.1.2.
 - When installed, it **replaces** the old "textarea" editor. If you want to maintain access to the old editor from the standard screens, follow the instructions under [[Configuring the buttons on TWiki < 4.2.0|Main/WebHome#InstallingOnOldTWikis]].
 
@@ -67,9 +67,9 @@ You can override this setting by defining TINYMCEPLUGIN\_DEBUG to enable some si
 
 This setting contains all the options passed to the [[TinyMCE]] editor on startup. For a full explanation of the available options, and guidance on reconfiguring [[TinyMCE]], see the [Moxicode TinyMCE Wiki](http://wiki.moxiecode.com/index.php/TinyMCE:Configuration). Note the inclusion of the Pattern Skin standard CSS files in the `content_css` setting.
 
-       * Set INIT = mode : "exact",
+       * Set INIT = mode:"textareas",
+       editor_selector : "twikiTextarea",
        save_on_tinymce_forms: true,
-       elements : "text",
        cleanup : true,
        theme : "advanced",
        convert_urls : true,
@@ -145,11 +145,11 @@ Another great TWiki extension from the [![](http://www.dementia.org/twiki//view/
   </tr>
   <tr>
     <td align="right"> Plugin Version: </td>
-    <td> 16268 (22 Jan 2008) </td>
+    <td> 03 Aug 2008 17302 (04 Aug 2008) </td>
   </tr>
   <tr>
     <td align="right"> Copyright: </td>
-    <td> © 2007 Crawford Currie <a href="http://c-dot.co.uk" target="_top">http://c-dot.co.uk</a></td>
+    <td> © 2007-2008 Crawford Currie <a href="http://c-dot.co.uk" target="_top">http://c-dot.co.uk</a></td>
   </tr>
   <tr>
     <td>   </td>
@@ -164,7 +164,35 @@ Another great TWiki extension from the [![](http://www.dementia.org/twiki//view/
     <td>  </td>
   </tr>
   <tr>
-    <td> 20 Dec 2007 </td>
+    <td align="right"> 03 Aug 2008 </td>
+    <td> TWiki 4.2.1 release version </td>
+  </tr>
+  <tr>
+    <td align="right"> 04 May 2008 </td>
+    <td> TWikibug:Item5547: Change mechanism by which TMCE recognises textareas to camp on. Use class instead of element name. </td>
+  </tr>
+  <tr>
+    <td align="right"> 12 Apr 2008 </td>
+    <td> TWikibug:Item4946: I think I have finally fixed non-iso-8859-1 character sets. Painful. </td>
+  </tr>
+  <tr>
+    <td align="right"> 31 Mar 2008 </td>
+    <td> TWikibug:Item5314: TWikibug:Item5457: Fixed pickaxe mode for editing UTF-8. Characters above 255 are converted to entitites, which is a bit of a PITA, but at least it no longer corrupts topics. <strong>NOTE: YOU MUST UPGRADE [[Main/WysiwygPlugin]] TO 16600 OR LATER</strong></td>
+  </tr>
+  <tr>
+    <td align="right"> 28 Mar 2008 </td>
+    <td> TWikibug:Item5432: added upper case file extensions for images TWikibug:Item5206: fixed expansion of simple filenames entered in image popup TWikibug:Item5462: fixed hide attachment switch </td>
+  </tr>
+  <tr>
+    <td align="right"> 25 Jan 2008 </td>
+    <td> TWikibug:Item5287: links entered through dialog weren't working </td>
+  </tr>
+  <tr>
+    <td align="right"> 24 Jan 2008 </td>
+    <td> TWikibug:Item4840: TWikibug:Item5138: UTF8 fixes, TWikibug:Item5022: made TT font size same as verbatim. Had to add a new style to do it, as TMCE didn't want to play with TT or CODE tags. TWikibug:Item5138: post-conversion of 8-bit entities to characters to aid searching, TWikibug:Item5254: non-fatal JS error fixed, TWikibug:Item5263: remove preview on WYSIWYG edit, TWikibug:Item5116: added Opera to bad browsers filter </td>
+  </tr>
+  <tr>
+    <td align="right"> 20 Dec 2007 </td>
     <td> TWikibug:Item5047: disable save and preview during page load TWikibug:Item5111: make the entry in the format menu sensitive to where the cursor is TWikibug:Item5022: made TT font size same as verbatim. Had to add a new style to do it, as TMCE didn't want to play with TT or CODE tags. </td>
   </tr>
   <tr>
@@ -231,7 +259,7 @@ Another great TWiki extension from the [![](http://www.dementia.org/twiki//view/
         </tr>
         <tr>
           <td align="left">TWiki::Plugins::WysiwygPlugin</td>
-          <td align="left">&gt;=14523</td>
+          <td align="left">&gt;=16650</td>
           <td align="left">Translator module</td>
         </tr>
       </table>
index 50eef76..b9ec44e 100644 (file)
@@ -1,76 +1,53 @@
 # <a name="TinyMCE Editor Help Summary"></a><a name=" _TinyMCE Editor Help Summary"></a> TinyMCE Editor Help Summary
 
-<table>
+<table border="0" cellpadding="0" cellspacing="0" id="tinyMceInfo">
   <tr>
-    <td rowspan="3" style="vertical-align: top; background-color: #f9f9f9" width="100px">
-      <p>
-      </p><select><option>Normal</option>
-        <option>Heading 1</option>
-        <option>Heading 2</option>
-        <option>Heading 3</option>
-        <option>Heading 4</option>
-        <option>Heading 5</option>
-        <option>Heading 6</option>
-        <option>VERBATIM</option>
-        <option>LITERAL</option>
-        <option>Protect on save</option>
-        <option>Protect forever</option></select></td>
-    <td rowspan="3" style="vertical-align: top">
+    <td><img alt="format dropdown" height="188" src="http://www.dementia.org/twiki//view/%SYSTEMWEB%/TinyMCEQuickHelp/Format_Drop_Down.gif" width="124" /></td>
+    <td>
       <ul>
         <li><code><b>Normal</b></code> - Normal text style </li>
-        <li><code><b>Heading 1-6</b></code> - Headings. 1 is largest </li>
-        <li><code><b>VERBATIM</b></code> - Text is shown in monospace with line breaks.%BR% <em>Wraps &lt;verbatim&gt; tags around the selected text. No TWiki Variables are interpreted inside verbatim tags</em></li>
-        <li><code><b>LITERAL</b></code> - Styled content is saved exactly as it appears in the editor.%BR% <em>Saves the selected content as raw HTML and wraps it in &lt;literal&gt; tags</em></li>
-        <li><code><b>Protect on save</b></code> - Prevent any change to the selected text when the edit is saved.%BR% <em>Use this to save advanced TWiki Variables where you do not want the Wysiwyg editor to modify the text during save</em></li>
-        <li><code><b>Protect forever</b></code> - Content is saved exactly as it is typed, and the protection is still there in future edit sessions.%BR% <em>Content is wrapped in &lt;sticky&gt; tags</em></li>
+        <li><code><b>Heading 1-6</b></code> - Headings; 1 is largest </li>
+        <li><code><b>VERBATIM</b></code> - Text is shown in monospace with line breaks. Wraps &lt;verbatim&gt; tags around the selected text. No TWiki variables are interpreted inside verbatim tags. </li>
+        <li><code><b>LITERAL</b></code> - Styled content is saved exactly as it appears in the editor. Saves the selected content as raw HTML and wraps it in &lt;literal&gt; tags. </li>
+        <li><code><b>Protect on save</b></code> - Prevent any change to the selected text when the edit is saved. Use this to save advanced TWiki variables where you do not want the Wysiwyg editor to modify the text during save. </li>
+        <li><code><b>Protect forever</b></code> - Content is saved exactly as it is typed, and the protection is still there in future edit sessions. Content is wrapped in &lt;sticky&gt; tags. </li>
       </ul>
     </td>
-    <td style="vertical-align: top; background-color: #f9f9f9"><img alt="indent" src="http://www.dementia.org/twiki//view/%WEB%/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/images/indent.gif" /> <img alt="outdent" src="http://www.dementia.org/twiki//view/%WEB%/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/images/outdent.gif" /></td>
-    <td style="vertical-align: top">
+    <td rowspan="4"><strong>Setting a TWiki variable</strong><ol>
+        <li> Create a list item using the toolbar button</li>
+        <li> In the list item, type <code>Set NAME = value</code></li>
+        <li> Select the value, and assign the <code><b>Protect on save</b></code> style to it (only required if the value contains any TWiki Markup Language or if you style it e.g. to add bold, or if it's sensitive to the number of spaces) </li>
+      </ol><strong>Using a TWiki Variable</strong><ul>
+        <li> Just type it in. When the topic is saved, what you type will be saved just as you wrote it. </li>
+        <li> If any part of your variable parameters is sensitive to spacing, then select the entire TWiki variable and assign the <code><b>PROTECTED</b></code> style to it before you save. </li>
+      </ul><span>[[TWiki/TWikiVariables]]</span><p><strong>Editing the raw text instead of Wysiwyg</strong></p>
       <ul>
-        <li> If the cursor is in a list item, change the indent </li>
-        <li> Otherwise mark text with &lt;BLOCKQUOTE&gt; tags (the default TWiki skin shows blockquotes indented with a blue background)</li>
+        <li> Select <img alt="the pickaxe" src="http://www.dementia.org/twiki//view/%WEB%/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/twikibuttons/images/hide.gif" /> , or use the <em>Raw Edit</em> link in the bottom action bar. </li>
       </ul>
     </td>
   </tr>
   <tr>
-    <td style="vertical-align: top; background-color: #f9f9f9"><img alt="link" src="http://www.dementia.org/twiki//view/%WEB%/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/images/link.gif" /> <img alt="unlink" src="http://www.dementia.org/twiki//view/%WEB%/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/images/unlink.gif" /></td>
-    <td style="vertical-align: top">
+    <td><img alt="indent" src="http://www.dementia.org/twiki//view/%WEB%/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/images/indent.gif" /> <img alt="outdent" src="http://www.dementia.org/twiki//view/%WEB%/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/images/outdent.gif" /></td>
+    <td>
       <ul>
-        <li> Links can either point to a URL or to the name of a TWiki topic. </li>
-        <li> E.g. <code>http://twiki.org</code>, <code>TopicNames</code>, <code>Webname.TopicNames</code>, or <code>Webname.Subweb.WebName</code>. </li>
+        <li> If the cursor is in a list item, changes the indent. Otherwise marks text with &lt;blockquote&gt; tags.</li>
       </ul>
     </td>
   </tr>
   <tr>
-    <td style="vertical-align: top; background-color: #f9f9f9"><img alt="anchor" src="http://www.dementia.org/twiki//view/%WEB%/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/images/anchor.gif" /></td>
-    <td style="vertical-align: top">
+    <td><img alt="link" src="http://www.dementia.org/twiki//view/%WEB%/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/images/link.gif" /> <img alt="unlink" src="http://www.dementia.org/twiki//view/%WEB%/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/images/unlink.gif" /></td>
+    <td>
       <ul>
-        <li> An anchor is a hidden mark you can use to link to a certain part of a topic, e.g a heading or a paragraph. An anchor must be a WikiWord. </li>
+        <li> Links can either point to a URL or to the name of a TWiki topic. For example <code>http://twiki.org</code>, <code>TopicNames</code>, <code>Webname.TopicNames</code>, or <code>Webname.Subweb.WebName</code>.</li>
       </ul>
     </td>
   </tr>
   <tr>
-  </tr>
-  <tr>
-    <td colspan="2" width="50%">
-      <h3><a name="Setting a TWiki variable"></a> Setting a TWiki variable </h3>
-      <ol>
-        <li> Create a list item using the toolbar button</li>
-        <li> In the list item, type <code>Set NAME = value</code></li>
-        <li> Select the value, and assign the <code><b>Protect on save</b></code> style to it (only required if the value contains any TWiki Markup Language or if you style it e.g. to add bold, or if it's sensitive to the number of spaces) </li>
-      </ol>
-    </td>
-    <td colspan="2">
-      <h3><a name="Using a TWiki Variable"></a> Using a TWiki Variable </h3>
+    <td><img alt="anchor" src="http://www.dementia.org/twiki//view/%WEB%/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/images/anchor.gif" /></td>
+    <td>
       <ul>
-        <li> Just type it in. When the topic is saved, what you type will be saved just as you wrote it. </li>
-        <li> If any part of your variable parameters is sensitive to spacing, then select the entire TWiki variable and assign the <code><b>PROTECTED</b></code> style to it before you save. </li>
+        <li> An anchor is a hidden mark you can use to link to a certain part of a topic, for example a heading or a paragraph. An anchor must be a WikiWord. </li>
       </ul>
     </td>
   </tr>
 </table>
-
-### <a name="Editing the raw text instead of"></a><a name="Editing the raw text instead of "></a> Editing the raw text instead of Wysiwyg
-
-- Select ![the pickaxe](http://www.dementia.org/twiki//view/%WEB%/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/twikibuttons/images/hide.gif) , or use the _Raw Edit_ link in the bottom action bar.
index 8b9b9c3..8253e52 100644 (file)
@@ -193,7 +193,7 @@ You can also set the global TWiki variable TWISTYCONTRIB\_DEBUG to 1 to make the
   </tr>
   <tr>
     <td align="right"> Version: </td>
-    <td> 15675 (22 Jan 2008) </td>
+    <td> 15675 (04 Aug 2008) </td>
   </tr>
   <tr>
     <td align="right"> Change History: </td>
index e5da800..3317522 100644 (file)
@@ -899,83 +899,91 @@ Plugin settings are stored as preferences variables. To reference a plugin setti
 
 <table border="1" cellpadding="0" cellspacing="0">
   <tr>
-    <td> Authors: </td>
+    <td align="right"> Authors: </td>
     <td> TWiki:Main.RafaelAlvarez, TWiki:Main.ArthurClemens </td>
   </tr>
   <tr>
-    <td> Copyright ©: </td>
+    <td align="right"> Copyright ©: </td>
     <td> 2005 Rafael Alvarez; 2006, 2007 Arthur Clemens </td>
   </tr>
   <tr>
-    <td> License: </td>
+    <td align="right"> License: </td>
     <td><a href="http://www.gnu.org/copyleft/gpl.html" target="_top">GPL</a></td>
   </tr>
   <tr>
-    <td> Dependencies: </td>
+    <td align="right"> Dependencies: </td>
     <td> None </td>
   </tr>
   <tr>
-    <td> Plugin Version: </td>
-    <td> 24 Nov 2007 (version 1.4.8) </td>
+    <td align="right"> Plugin Version: </td>
+    <td> 03 Aug 2008 (version 1.4.10) </td>
   </tr>
   <tr>
-    <td> Change History: </td>
+    <td align="right"> Change History: </td>
     <td>  </td>
   </tr>
   <tr>
-    <td> 24 Nov 2007 </td>
+    <td align="right"> 03 Aug 2008 </td>
+    <td> 1.4.10 TWiki 4.2.1 release version </td>
+  </tr>
+  <tr>
+    <td align="right"> 13 Dec 2007 </td>
+    <td> 1.4.9 fix to the loading order of javascript files in head </td>
+  </tr>
+  <tr>
+    <td align="right"> 24 Nov 2007 </td>
     <td> 1.4.6 - 1.4.8 Arthur Clemens - Added format tokens. </td>
   </tr>
   <tr>
-    <td> 07 Oct 2007 </td>
+    <td align="right"> 07 Oct 2007 </td>
     <td> 1.4.5 Arthur Clemens - Fix html tag with show/hide controls. </td>
   </tr>
   <tr>
-    <td> 25 Sep 2007 </td>
+    <td align="right"> 25 Sep 2007 </td>
     <td> 1.4.4 Arthur Clemens - Fix rendering of headers when <code>prefix</code> is used. </td>
   </tr>
   <tr>
-    <td> 11 Jul 2007 </td>
+    <td align="right"> 11 Jul 2007 </td>
     <td> 1.4.3 Arthur Clemens - Fix invalid html when <code>prefix</code> and <code>suffix</code> is used. </td>
   </tr>
   <tr>
-    <td> 23 Jun 2007 </td>
+    <td align="right"> 23 Jun 2007 </td>
     <td> 1.4.2 Arthur Clemens - Fixed bugs with parameters <code>firststart</code> and <code>noscript</code> (since version 1.4). </td>
   </tr>
   <tr>
-    <td> 20 Jun 2007 </td>
+    <td align="right"> 20 Jun 2007 </td>
     <td> 1.4 Arthur Clemens - Updated to work without ugly inserted javascript 'init' calls. This will change nothing to the functionality, but it will produce cleaner HTML, while at the same time the twisty is still set immediately (not at page onload) and graceful fallback in case of no javascript is maintained. </td>
   </tr>
   <tr>
-    <td> 19 Jun 2006 </td>
+    <td align="right"> 19 Jun 2006 </td>
     <td> 1.3 Arthur Clemens - Updated with TWiki 4 JavaScript files. </td>
   </tr>
   <tr>
-    <td> 25 Oct 2006 </td>
+    <td align="right"> 25 Oct 2006 </td>
     <td> 1.2 New variables to set default values: <code>TWISTYSHOWLINK</code>, <code>TWISTYHIDELINK</code>, <code>TWISTYMODE</code>, <code>TWISTYREMEMBER</code>; property <code>id</code> is no longer required as this is automatically set (still recommended in some cases with <code>remember="on"</code>); property value <code>remember="off"</code> will clear a previously stored cookie; new properties <code>prefix</code> and <code>suffix</code>; JavaScript to collapse or expand all Twisties on the page. </td>
   </tr>
   <tr>
-    <td> 27 Sep 2006 </td>
+    <td align="right"> 27 Sep 2006 </td>
     <td> 1.101 Fixes JavaScript handling when AllowInlineScript in configure is not set </td>
   </tr>
   <tr>
-    <td> 11 June 2006 </td>
+    <td align="right"> 11 June 2006 </td>
     <td> 1.100 Added parameters <code>start</code>, <code>firststart</code>, <code>noscript</code> and <code>class</code>; complete JavaScript rewrite for speed </td>
   </tr>
   <tr>
-    <td> 12 Sep 2005 </td>
+    <td align="right"> 12 Sep 2005 </td>
     <td> 1.000 First Version </td>
   </tr>
   <tr>
-    <td> Home: </td>
+    <td align="right"> Home: </td>
     <td><a href="http://TWiki.org/cgi-bin/view/Plugins/%TOPIC%" target="_top">http://TWiki.org/cgi-bin/view/Plugins/%TOPIC%</a></td>
   </tr>
   <tr>
-    <td> Feedback: </td>
+    <td align="right"> Feedback: </td>
     <td><a href="http://TWiki.org/cgi-bin/view/Plugins/%TOPIC%Dev" target="_top">http://TWiki.org/cgi-bin/view/Plugins/%TOPIC%Dev</a></td>
   </tr>
   <tr>
-    <td> Appraisal: </td>
+    <td align="right"> Appraisal: </td>
     <td><a href="http://TWiki.org/cgi-bin/view/Plugins/%TOPIC%Appraisal" target="_top">http://TWiki.org/cgi-bin/view/Plugins/%TOPIC%Appraisal</a></td>
   </tr>
 </table>
index 1b63032..fb7e4e4 100644 (file)
@@ -1,8 +1,8 @@
 <a name="VarDISPLAYTIME"></a>
 
-### <a name="DISPLAYTIME -- display time"></a> DISPLAYTIME -- display time
+### <a name="DISPLAYTIME -- display date and"></a><a name="DISPLAYTIME -- display date and "></a> DISPLAYTIME -- display date and time
 
 - Syntax: `%DISPLAYTIME%`
-- Expands to: `29 Jun 2010 - 16:09`
-- Date format defined as \{DefaultDateFormat\} in [configure](http://www.dementia.org/twiki/configure)
+- Expands to: `29 Jun 2010 - 16:12`
+- Date part of the format is displayed as defined by the \{DefaultDateFormat\} in [configure](http://www.dementia.org/twiki/configure). The time is shown as hh:mm (24 hour clock)
 - Related: [[DISPLAYTIME{"format"}|Main/VarDISPLAYTIME2]], [[GMTIME|Main/VarGMTIME]], [[SERVERTIME|Main/VarSERVERTIME]]
index 50a266d..072f9d7 100644 (file)
@@ -2,7 +2,7 @@
 
 ### <a name="DISPLAYTIME{&quot;format&quot;} -- formatt"></a> DISPLAYTIME\{"format"\} -- formatted display time
 
-- Formatted time - either GMT or Local server time, depending on setting in [configure](http://www.dementia.org/twiki/configure). Same format qualifiers as `%GMTIME%`
+- Formatted time - either GMT or Local server time, depending on \{DisplayTimeValues\} setting in [configure](http://www.dementia.org/twiki/configure). Same format qualifiers as `%GMTIME%`
 - Syntax: `%DISPLAYTIME{"format"}%`
-- Example: `%DISPLAYTIME{"$hou:$min"}%` expands to `16:09`
+- Example: `%DISPLAYTIME{"$hou:$min"}%` expands to `16:12`
 - Related: [[DISPLAYTIME|Main/VarDISPLAYTIME]], [[GMTIME|Main/VarGMTIME]], [[SERVERTIME|Main/VarSERVERTIME]]
index 5612991..19ea2f3 100644 (file)
   <tr>
     <td><code>changerows</code></td>
     <td> Rows can be added and removed if <code>"on"</code><br /> Rows can be added but not removed if <code>"add"</code><br /> Rows cannot be added or removed if <code>"off"</code></td>
-    <td><code>CHANGEROWS</code> %BR% Plugin setting </td>
+    <td><code>CHANGEROWS</code> %BR% plugin setting </td>
   </tr>
   <tr>
     <td><code>quietsave</code></td>
     <td> Quiet Save button is shown if <code>"on"</code>, hidden if <code>"off"</code></td>
-    <td><code>QUIETSAVE</code> %BR% Plugin setting </td>
+    <td><code>QUIETSAVE</code> %BR% plugin setting </td>
   </tr>
   <tr>
     <td><code>include</code></td>
   <tr>
     <td><code>editbutton</code></td>
     <td> Set edit button text, e.g. <code>"Edit this table"</code>; set button image with alt text, e.g. <code>"Edit table, %PUBURL%/%TWIKIWEB%/TWikiDocGraphics/edittopic.gif"</code>; hide edit button at the end of the table with <code>"hide"</code> (Note: Button is automatically hidden if an edit button is present in a cell) </td>
-    <td><code>EDITBUTTON</code> %BR% Plugin setting </td>
+    <td><code>EDITBUTTON</code> %BR% plugin setting </td>
+  </tr>
+  <tr>
+    <td><code>javascriptinterface</code></td>
+    <td> Use javascript to directly move and delete row without page refresh. Enable with <code>"on"</code>, disable with <code>"off"</code>. </td>
+    <td><code>JAVASCRIPTINTERFACE</code> %BR% plugin setting </td>
   </tr>
 </table>
 
index 27b9b6f..ddee0fb 100644 (file)
@@ -21,7 +21,7 @@
   </tr>
   <tr>
     <td><code>format="..."</code></td>
-    <td> Format string. <code>$value</code> expands to the field value, and <code>$title</code> expands to the fieldname </td>
+    <td> Format string. <code>$value</code> expands to the field value, and <code>$title</code> expands to the fieldname (also expands $name, $attributes, $type, $size and $definingTopic) </td>
     <td><code>"$value"</code></td>
   </tr>
   <tr>
index dc5a721..adff4b5 100644 (file)
@@ -76,7 +76,7 @@
   </tr>
   <tr>
     <td><code>section="name"</code></td>
-    <td> Includes only the specified named section, as defined in the included topic by the [[Main/VarSTARTSECTION]] and [[Main/VarENDSECTION]] variables. Nothing is shown if the named section does not exists. </td>
+    <td> Includes only the specified named section, as defined in the included topic by the [[Main/VarSTARTSECTION]] and [[Main/VarENDSECTION]] variables. Nothing is shown if the named section does not exists. <code>section=""</code> is equivalent to not specifying a section </td>
     <td>   </td>
   </tr>
   <tr>
index a4a851f..b6eb62b 100644 (file)
   </tr>
 </table>
 - Example: `%SEARCH{"wiki" web="%USERSWEB%" scope="topic"}%`
-- Example with format: `%SEARCH{"FAQ" scope="topic" nosearch="on" nototal="on" header="| *Topic: * | *Summary: * |" format="| $topic | $summary |"%` _(displays results in a table with header - [[details|Main/FormattedSearch]])_
+- Example with format: `%SEARCH{"FAQ" scope="topic" nosearch="on" nototal="on" header="| *Topic: * | *Summary: * |" format="| $topic | $summary |"}%` _(displays results in a table with header - [[details|Main/FormattedSearch]])_
 - %H% Hint: If the TWiki:Plugins.TablePlugin is installed, you may set a `%TABLE{}%` variable just before the `%SEARCH{}%` to alter the output of a search. Example: `%TABLE{ tablewidth="90%" }%`
-- Related: [[METASEARCH|Main/VarMETASEARCH]], [[TOPICLIST|Main/VarTOPICLIST]], [[WEBLIST|Main/VarWEBLIST]], [[FormattedSearch]], [[SearchHelp]], [[SearchPatternCookbook]], [[RegularExpression]]
+- Related: [[METASEARCH|Main/VarMETASEARCH]], [[TOPICLIST|Main/VarTOPICLIST]], [[WEBLIST|Main/VarWEBLIST]], [[FormattedSearch]], [[QuerySearch]], [[SearchHelp]], [[SearchPatternCookbook]], [[RegularExpression]]
index 257b452..41073ca 100644 (file)
   </tr>
 </table>
 - Example: `%URLPARAM{"skin"}%` returns `print` for a `.../view/%WEB%/%INCLUDINGTOPIC%?skin=print` URL
-- **_%X% Note:_** URL parameters passed into HTML form fields must be entity [[ENCODEd|Main/VarENCODE]].
-- **_%X% Note:_** Double quotes in URL parameters must be escaped when passed into other TWiki variables.%BR% Example: `%SEARCH{ "%URLPARAM{ "search" encode="quotes" }%" noheader="on" }%`
-- **_%X% Note:_** When used in a template topic, this variable will be expanded when the template is used to create a new topic. See [[TWikiTemplates#TemplateTopicsVars]] for details.
-- **_%X% Note:_** There is a risk that this variable could be misused for cross-site scripting.
+- **_%X% Notes:_**
+  - URL parameters passed into HTML form fields must be entity [[ENCODEd|Main/VarENCODE]].
+  - Double quotes in URL parameters must be escaped when passed into other TWiki variables.%BR% Example: `%SEARCH{ "%URLPARAM{ "search" encode="quotes" }%" noheader="on" }%`
+  - When used in a template topic, this variable will be expanded when the template is used to create a new topic. See [[TWikiTemplates#TemplateTopicsVars]] for details.
+  - Watch out for TWiki internal parameters, such as `rev`, `skin`, `template`, `topic`, `web`; they have a special meaning in TWiki. Common parameters and view script specific parameters are documented at [[TWikiScripts]].
+  - If you have `%URLPARAM{` in the value of a URL parameter, it will be modified to `%<nop>URLPARAM{`. This is to prevent an infinite loop during expansion.
+  - There is a risk that this variable could be misused for cross-site scripting.
 - Related: [[ENCODE|Main/VarENCODE]], [[SEARCH|Main/VarSEARCH]], [[FormattedSearch]], [[QUERYSTRING|Main/VarQUERYSTRING]]
-
-**_Note_** If you have `%URLPARAM{` in the value of a URL parameter, it will be modified to `%<nop>URLPARAM{`. This is to prevent an infinite loop during expansion.
index e1f14bd..f743c79 100644 (file)
@@ -1,6 +1,6 @@
 <a name="VarUSERINFO"></a>
 
-### <a name="USERINFO{&quot;_WikiName&quot;} -- retriev"></a> USERINFO\{"WikiName"\} -- retrieve details about a user
+### <a name="USERINFO{&quot;name&quot;} -- retrieve det"></a> USERINFO\{"name"\} -- retrieve details about a user
 
 - Syntax: `%USERINFO%`
 - Expands to: `admin, Main.admin, ` (comma-separated list of the username, wikiusername, and emails)
@@ -10,5 +10,5 @@
 - Retrieve information about another user:
   - Example: `%USERINFO{ "TWikiGuest" format="$username is really $wikiname" }%`
   - Expands to: ``
-  - **_Note:_** The parameter should be the wikiname of a user. You can only get information about another user if the `{AntiSpam}{HideUserDetails}` configuration option is not enabled, or if you are an admin. _(User details are hidden in this TWiki)_
+  - **_Note:_** The parameter should be the wikiname of a user. Since TWiki 4.2.1, you can also pass a login name. You can only get information about another user if the `{AntiSpam}{HideUserDetails}` configuration option is not enabled, or if you are an admin. _(User details are hidden in this TWiki)_
 - Related: [[USERNAME|Main/VarUSERNAME]], [[WIKINAME|Main/VarWIKINAME]], [[WIKIUSERNAME|Main/VarWIKIUSERNAME]], [[TWikiUserAuthentication]], [[ChangeEmailAddress]]
index 37afc49..d3d95e7 100644 (file)
@@ -1,4 +1,4 @@
-<div style="float: right; width: 255px; padding: 1em; text-align: center"><a href="http://twiki.org"><img alt="Collaborate with TWiki -- visit TWiki.org" border="0" height="67" src="http://www.dementia.org/twiki//view/%SYSTEMWEB%/TWikiLogos/T-logo-235x67-t.gif" style="margin: .3em 0" title="Collaborate with TWiki -- visit TWiki.org" width="235" /></a><br />The official TWiki site is <a href="http://twiki.org"><span>twiki.org</span></a></div>
+<div style="float: right; width: 255px; padding: 1em; text-align: center"><a href="http://twiki.org"><img alt="Collaborate with TWiki -- visit TWiki.org" border="0" height="67" src="http://www.dementia.org/twiki//view/%SYSTEMWEB%/TWikiLogos/T-logo-235x67-t.gif" style="margin: .3em 0" title="Collaborate with TWiki -- visit TWiki.org" width="235" /></a><br />The official TWiki<sup>®</sup> site is <a href="http://twiki.org"><span>twiki.org</span></a></div>
 
 # <a name="Welcome to the %WEB% Web"></a><a name=" Welcome to the %WEB% Web"></a> Welcome to the %WEB% Web
 
@@ -37,7 +37,7 @@ TWiki is a flexible, powerful, secure, yet simple web-based collaboration platfo
 
 ## <a name="Disclaimer"></a> Disclaimer
 
-- TWiki™, the [[TWiki logo|Main/TWikiLogos]] and the "Collaborate with TWiki" tagline are trademarks of [Peter Thoeny](http://twiki.org/cgi-bin/view/Main/PeterThoeny)
-- **_Note_**: Twiki (with a lower case "w") is a robot character from the _Buck Rogers™ in the 25th Century_ TV series. TWiki (with an upper case "W") is not affiliated with the Dille Family Trust, the registered trademark owner of the _Buck Rogers_ name
-- TWiki is developed as Free Software under the [[GNU/GPL|Main/GnuGeneralPublicLicense]]
-- Get the latest version from [TWiki.org downloads](http://TWiki.org/download.html)
+- TWiki<sup>®</sup> is a registered trademarks of TWiki founder [Peter Thoeny](http://twiki.org/cgi-bin/view/Main/PeterThoeny), [TWIKI.NET](http://twiki.net/). The [[TWiki logo|Main/TWikiLogos]] and the "Collaborate with TWiki" tagline are trademarks of Peter Thoeny.
+- Twiki (with a lower case "w") is a robot character from the _Buck Rogers™ in the 25th Century_ TV series. TWiki (with an upper case "W") is not affiliated with the Dille Family Trust, the registered trademark owner of the _Buck Rogers_ name.
+- TWiki is developed as Free Software under the [[GNU/GPL|Main/GnuGeneralPublicLicense]].
+- Get the latest version from [TWiki.org downloads](http://TWiki.org/download.html).
index 9bc1810..8707133 100644 (file)
@@ -14,6 +14,7 @@
 - [[TextFormattingRules]]
 - [[TWikiVariables]]
 - [[FormattedSearch]]
+- [[QuerySearch]]
 - [[TWikiDocGraphics]]
 - [[TWikiSkinBrowser]]
 - [[InstalledPlugins]]
index 4e820ef..0d5b73a 100644 (file)
@@ -1,9 +1,7 @@
 <div> Hello [[Main/Admin]]%BR%<ul>
     <li>[[Main/WebHome?logout=1]]</li>
   </ul>
-  <div>
-    <ul>
-      <li><a href="http://www.dementia.org/twiki/edit/%USERSWEB%/adminLeftBar?templatetopic=%SYSTEMWEB%.WebLeftBarPersonalTemplate&topicparent=admin">Create personal sidebar</a></li>
-    </ul>
-  </div>
+  <div> $percntINCLUDE{$quot$percntMAINWEB$percnt.$percntWIKINAME$percntLeftBar$quot warn=$quot<ul>
+      <li><a href="http://www.dementia.org/twiki/edit/Main/adminLeftBar?templatetopic=TWiki.WebLeftBarPersonalTemplate&topicparent=admin">Create personal sidebar</a></li>
+    </ul>$quot }$percnt </div>
 </div>
index 902107f..cbd1373 100644 (file)
@@ -42,5 +42,5 @@ These settings override the defaults for this web only. See [[full list of defau
 - Users or groups allowed to change or rename this %TOPIC% topic: (e.g., %USERSWEB%.WebAdministratorsGroup)
   - Set ALLOWTOPICCHANGE = %USERSWEB%.TWikiAdminGroup
 
-- Web preferences that are **not** allowed to be overridden by user or topic preferences:
+- Web preferences that are **not** allowed to be overridden by sub-web, user or topic preferences:
   - Set FINALPREFERENCES = NOSEARCHALL, ATTACHFILESIZELIMIT, WIKIWEBMASTER, WEBCOPYRIGHT, WEBTOPICLIST, DENYWEBVIEW, ALLOWWEBVIEW, DENYWEBCHANGE, ALLOWWEBCHANGE, ALLOWWEBRENAME, DENYWEBRENAME
index 2d3386d..9646732 100644 (file)
@@ -16,7 +16,7 @@ Incorrect format of search template (missing sections? There should be 4 %SPLIT%
       <tr>
         <th>Search where:</th>
         <td><input id="textbody" name="scope" type="radio" value="text" /><label for="textbody"> Text body</label>   <input id="topictitle" name="scope" type="radio" value="topic" /><label for="topictitle"> Topic title</label>   <input checked id="both" name="scope" type="radio" value="all" /><label for="both"> Both body and title</label>
-          <hr /><input id="web" name="web" type="checkbox" /><label for="web"> All public webs</label><span>(otherwise search %INCLUDINGWEB% Web only)</span></td>
+          <hr /><input id="web" name="web" type="checkbox" value="all" /><label for="web"> All public webs</label><span>(otherwise search %INCLUDINGWEB% Web only)</span></td>
       </tr>
     </table>
   </form>
index 206e403..cd4b88c 100644 (file)
@@ -18,7 +18,7 @@ Incorrect format of search template (missing sections? There should be 4 %SPLIT%
         <td><input id="textbody" name="scope" type="radio" value="text" /><label for="textbody"> Text body</label>
           <br /><input id="topictitle" name="scope" type="radio" value="topic" /><label for="topictitle"> Topic title</label>
           <br /><input checked id="both" name="scope" type="radio" value="all" /><label for="both"> Both body and title</label>
-          <hr /><input id="web" name="web" type="checkbox" /><label for="web"> All public webs</label><span>(otherwise search %INCLUDINGWEB% Web only)</span></td>
+          <hr /><input id="web" name="web" type="checkbox" value="all" /><label for="web"> All public webs</label><span>(otherwise search %INCLUDINGWEB% Web only)</span></td>
       </tr>
       <tr>
         <th>Sort results by:</th>
@@ -56,7 +56,6 @@ Incorrect format of search template (missing sections? There should be 4 %SPLIT%
     <li> If you already know the name of the topic, enter the name of the topic into the [[SYSTEMWEB/GoBox]] at the top </li>
     <li><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=\.*">List all topics in the %INCLUDINGWEB% web in alphabetical order</a></li>
     <li> List topics that start with the letter: <a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Ea">A</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Eb">B</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Ec">C</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Ed">D</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Ee">E</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Ef">F</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Eg">G</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Eh">H</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Ei">I</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Ej">J</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Ek">K</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5El">L</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Em">M</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5En">N</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Eo">O</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Ep">P</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Eq">Q</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Er">R</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Es">S</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Et">T</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Eu">U</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Ev">V</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Ew">W</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Ex">X</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Ey">Y</a><span> | </span><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&search=%5Ez">Z</a></li>
-    <li><a href="http://www.dementia.org/twiki/search/%INCLUDINGWEB%/?scope=topic&regex=on&bookview=on&search=\.*">All topics in BookView</a> <span>([[SYSTEMWEB/BookView]])</span></li>
     <li>[[INCLUDINGWEB/WebChanges]]</li>
   </ul>
 </div>
index 26cf373..115b3cf 100644 (file)
@@ -27,6 +27,6 @@
 
 **_Notes:_**
 
-- Do not edit this topic; it is updated automatically. (You can also [force](http://www.dementia.org/twiki/statistics/%WEB%) an update)
-- %SYSTEMWEB%.TWikiDocumentation tells you how to enable the automatic updates of the statistics.
+- Do not edit this topic, it is updated automatically. (You can also [force](http://www.dementia.org/twiki/statistics/%WEB%) an update)
+- [[TWikiSiteTools|SYSTEMWEB/TWikiSiteTools#WebStatistics_site_statistics]] tells you how to enable the automatic updates of the statistics.
 - Suggestion: You could archive this topic once a year and delete the previous year's statistics from the table.
index 1681258..42015c5 100644 (file)
@@ -13,5 +13,5 @@
 &lt;/li&gt;&lt;/ul&gt;
 --&gt;
 </textarea>
-  <p> All WebTopicCreator topic on this site: </p>
+  <p> All WebTopicCreator topics on this site: </p>
   <h1><a name="TWiki Installation Error"></a> TWiki Installation Error </h1>Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags) </div>
index 1dd62df..5a6a19e 100644 (file)
@@ -46,7 +46,7 @@ Welcome to %WIKITOOLNAME%! This is a [[TWikiSite]] (pronounced _twee-kee site_),
 
 ### <a name="Creating a page"></a> Creating a page
 
-See a question mark link "<u>?</u>" behind a WikiWord? That means that there's no topic yet for that [[TWikiWord]]. If you want to create a topic for that WikiWord, just click on the question mark. The topic will be created and you will be in the editor window.
+See a question mark link "<u>?</u>" behind a WikiWord? That means that there's no topic yet for that [[NewWikiWord69593]]. If you want to create a topic for that WikiWord, just click on the question mark. The topic will be created and you will be in the editor window.
 
 ### <a name="Viewing the history of a topic"></a> Viewing the history of a topic
 
index da2da1a..77a4653 100644 (file)
@@ -237,13 +237,37 @@ Many thanks to the following sponsors for supporting this work:
   </tr>
   <tr>
     <td align="right"> Plugin Version: </td>
-    <td> 16174 (22 Jan 2008) </td>
+    <td> 03 Aug 2008 17302 (04 Aug 2008) </td>
   </tr>
   <tr>
     <td align="right"> Change History: </td>
     <td>   </td>
   </tr>
   <tr>
+    <td align="right"> 03 Aug 2008 </td>
+    <td> TWiki 4.2.1 release version </td>
+  </tr>
+  <tr>
+    <td align="right"> 25 May 2008 </td>
+    <td> TWikibug:Item5457: TWikibug:Item5528: TWikibug:Item5626: using a debug simulation, I believe I have finally fixed all the complexities of using international character sets with the translator. </td>
+  </tr>
+  <tr>
+    <td align="right"> 13 Apr 2008 </td>
+    <td> TWikibug:Item4946: TWikibug:Item5530: I think I have finally fixed non-iso-8859-1 character sets. Painful. TWikibug:Item5393: removed spurious DIV generated by IE inside LI tags </td>
+  </tr>
+  <tr>
+    <td align="right"> 31 Mar 2008 </td>
+    <td> TWikibug:Item5314: TWikibug:Item5457: Fixed pickaxe mode for editing UTF-8. Characters above 255 are converted to entitites, which is a bit of a PITA, but at least it no longer corrupts topics. </td>
+  </tr>
+  <tr>
+    <td align="right"> 28 Mar 2008 </td>
+    <td> TWikibug:Item5294: fixed angle brackets in plain text and promoted sticky to be higher priority than any other tag, solving several problems in one go </td>
+  </tr>
+  <tr>
+    <td align="right"> 24 Jan 2008 </td>
+    <td> TWikibug:Item5257: remove extra spaces at end of Set lines </td>
+  </tr>
+  <tr>
     <td align="right"> 20 Dec 2007 </td>
     <td> TWikibug:Item5022: made TT font size same as verbatim. Had to add a new style to do it, as TMCE didn't want to play with TT or CODE tags. TWikibug:Item5138: post-conversion of 8-bit entities to characters to aid searching etc. </td>
   </tr>