buildrelease
authorTWikiContributor <TWikiContributor>
Tue, 16 Jan 2007 04:12:07 +0000 (04:12 +0000)
committerTWikiContributor <TWikiContributor>
Tue, 16 Jan 2007 04:12:07 +0000 (04:12 +0000)
173 files changed:
TWiki/ATasteOfTWiki.mdwn
TWiki/AdminToolsCategory.mdwn
TWiki/AnApplicationWithWikiForm.mdwn
TWiki/BehaviourContrib.mdwn [new file with mode: 0644]
TWiki/BulkResetPassword.mdwn
TWiki/ChangeEmailAddress.mdwn
TWiki/ChangePassword.mdwn
TWiki/CommentPlugin.mdwn
TWiki/CommentPluginExamples.mdwn [new file with mode: 0644]
TWiki/CommentPluginTemplate.mdwn
TWiki/EditTablePlugin.mdwn
TWiki/EmptyPlugin.mdwn
TWiki/FileAttachment.mdwn
TWiki/FormattedSearch.mdwn
TWiki/GoBox.mdwn
TWiki/HierarchicalNavigation.mdwn [new file with mode: 0644]
TWiki/HierarchicalNavigationChildExample.mdwn [new file with mode: 0644]
TWiki/IfStatements.mdwn
TWiki/InstalledPlugins.mdwn
TWiki/InstantEnhancements.mdwn
TWiki/InterWikis.mdwn
TWiki/InterwikiPlugin.mdwn
TWiki/JSCalendarContrib.mdwn
TWiki/LoginName.mdwn
TWiki/MailerContrib.mdwn
TWiki/ManagingTopics.mdwn
TWiki/ManagingUsers.mdwn
TWiki/ManagingWebs.mdwn
TWiki/NewUserTemplate.mdwn
TWiki/PatternSkin.mdwn
TWiki/PatternSkinColorSettings.mdwn [new file with mode: 0644]
TWiki/PatternSkinCss.mdwn
TWiki/PatternSkinCssCookbook.mdwn
TWiki/PatternSkinCssCookbookNoLeftBar.mdwn
TWiki/PatternSkinCustomization.mdwn
TWiki/PatternSkinElements.mdwn [new file with mode: 0644]
TWiki/PreferencesPlugin.mdwn
TWiki/RegistrationApprovals.mdwn
TWiki/RegularExpression.mdwn
TWiki/RenderListPlugin.mdwn
TWiki/ResetPassword.mdwn
TWiki/SearchPatternCookbook.mdwn
TWiki/SitePermissions.mdwn
TWiki/SlideShowPlugin.mdwn
TWiki/SmiliesPlugin.mdwn
TWiki/SourceCode.mdwn
TWiki/SpreadSheetPlugin.mdwn
TWiki/TWikiAccessControl.mdwn
TWiki/TWikiAddOns.mdwn [new file with mode: 0644]
TWiki/TWikiCompatibilityDotPm.mdwn
TWiki/TWikiConfigureLoadDotPm.mdwn [new file with mode: 0644]
TWiki/TWikiConfigureUIsEXTENDDotPm.mdwn [new file with mode: 0644]
TWiki/TWikiContribs.mdwn [new file with mode: 0644]
TWiki/TWikiCss.mdwn
TWiki/TWikiDocGraphics.mdwn
TWiki/TWikiDocumentation.mdwn
TWiki/TWikiDotPm.mdwn
TWiki/TWikiEditingShorthand.mdwn
TWiki/TWikiFAQ.mdwn
TWiki/TWikiFormDotPm.mdwn
TWiki/TWikiForms.mdwn
TWiki/TWikiFuncDotPm.mdwn
TWiki/TWikiHistory.mdwn
TWiki/TWikiI18NExtractDotPm.mdwn
TWiki/TWikiInstallationGuide.mdwn
TWiki/TWikiLogos.mdwn
TWiki/TWikiMetaData.mdwn
TWiki/TWikiMetaDotPm.mdwn
TWiki/TWikiNetDotPm.mdwn
TWiki/TWikiOopsExceptionDotPm.mdwn
TWiki/TWikiPlugins.mdwn
TWiki/TWikiPluginsDotPm.mdwn
TWiki/TWikiPreferences.mdwn
TWiki/TWikiPrefsDotPm.mdwn
TWiki/TWikiReferenceManual.mdwn
TWiki/TWikiRegistration.mdwn
TWiki/TWikiReleaseNotes04x00.mdwn
TWiki/TWikiReleaseNotes04x01.mdwn [new file with mode: 0644]
TWiki/TWikiRenderDotPm.mdwn
TWiki/TWikiRenderingShortcut.mdwn [new file with mode: 0644]
TWiki/TWikiScripts.mdwn
TWiki/TWikiSearchDotPm.mdwn
TWiki/TWikiShorthand.mdwn
TWiki/TWikiSiteTools.mdwn
TWiki/TWikiSkins.mdwn
TWiki/TWikiStoreDotPm.mdwn
TWiki/TWikiStoreRcsFileDotPm.mdwn
TWiki/TWikiSystemRequirements.mdwn
TWiki/TWikiTemplates.mdwn
TWiki/TWikiTimeDotPm.mdwn
TWiki/TWikiTip013.mdwn
TWiki/TWikiTutorial.mdwn
TWiki/TWikiUIDotPm.mdwn
TWiki/TWikiUIViewDotPm.mdwn
TWiki/TWikiUpgradeGuide.mdwn
TWiki/TWikiUserAuthentication.mdwn
TWiki/TWikiUserSetting.mdwn [new file with mode: 0644]
TWiki/TWikiUsersDotPm.mdwn
TWiki/TWikiVariables.mdwn
TWiki/TWikiVariablesQuickStart.mdwn
TWiki/TablePlugin.mdwn
TWiki/TipsContrib.mdwn
TWiki/TwistyContrib.mdwn
TWiki/TwistyPlugin.mdwn [new file with mode: 0644]
TWiki/VarAQUA.mdwn [new file with mode: 0644]
TWiki/VarATTACHURL.mdwn
TWiki/VarATTACHURLPATH.mdwn
TWiki/VarAUTHREALM.mdwn
TWiki/VarBB.mdwn [new file with mode: 0644]
TWiki/VarBB2.mdwn [new file with mode: 0644]
TWiki/VarBB3.mdwn [new file with mode: 0644]
TWiki/VarBB4.mdwn [new file with mode: 0644]
TWiki/VarBLACK.mdwn [new file with mode: 0644]
TWiki/VarBLUE.mdwn [new file with mode: 0644]
TWiki/VarBR.mdwn [new file with mode: 0644]
TWiki/VarBROWN.mdwn [new file with mode: 0644]
TWiki/VarBULLET.mdwn [new file with mode: 0644]
TWiki/VarENCODE.mdwn
TWiki/VarENDCOLOR.mdwn [new file with mode: 0644]
TWiki/VarGMTIME2.mdwn
TWiki/VarGRAY.mdwn [new file with mode: 0644]
TWiki/VarGREEN.mdwn [new file with mode: 0644]
TWiki/VarH.mdwn [new file with mode: 0644]
TWiki/VarI.mdwn [new file with mode: 0644]
TWiki/VarINCLUDE.mdwn
TWiki/VarLIME.mdwn [new file with mode: 0644]
TWiki/VarM.mdwn [new file with mode: 0644]
TWiki/VarMAKETEXT.mdwn
TWiki/VarMAROON.mdwn [new file with mode: 0644]
TWiki/VarMETA.mdwn
TWiki/VarN.mdwn [new file with mode: 0644]
TWiki/VarNAVY.mdwn [new file with mode: 0644]
TWiki/VarOLIVE.mdwn [new file with mode: 0644]
TWiki/VarORANGE.mdwn [new file with mode: 0644]
TWiki/VarP.mdwn [new file with mode: 0644]
TWiki/VarPINK.mdwn [new file with mode: 0644]
TWiki/VarPUBURL.mdwn
TWiki/VarPUBURLPATH.mdwn
TWiki/VarPURPLE.mdwn [new file with mode: 0644]
TWiki/VarQ.mdwn [new file with mode: 0644]
TWiki/VarQUERYPARAMS.mdwn [new file with mode: 0644]
TWiki/VarQUERYSTRING.mdwn
TWiki/VarRED.mdwn [new file with mode: 0644]
TWiki/VarREVINFO2.mdwn
TWiki/VarS.mdwn [new file with mode: 0644]
TWiki/VarSEARCH.mdwn
TWiki/VarSILVER.mdwn [new file with mode: 0644]
TWiki/VarT.mdwn [new file with mode: 0644]
TWiki/VarTEAL.mdwn [new file with mode: 0644]
TWiki/VarTOPICURL.mdwn [new file with mode: 0644]
TWiki/VarU.mdwn [new file with mode: 0644]
TWiki/VarURLPARAM.mdwn
TWiki/VarVBAR.mdwn [new file with mode: 0644]
TWiki/VarWEBLIST.mdwn
TWiki/VarWHITE.mdwn [new file with mode: 0644]
TWiki/VarWIKIHOMEURL.mdwn
TWiki/VarX.mdwn [new file with mode: 0644]
TWiki/VarY.mdwn [new file with mode: 0644]
TWiki/VarYELLOW.mdwn [new file with mode: 0644]
TWiki/WebAtomBase.mdwn
TWiki/WebChanges.mdwn
TWiki/WebLeftBar.mdwn
TWiki/WebLeftBarLogin.mdwn
TWiki/WebPreferences.mdwn
TWiki/WebTemplateTopics.mdwn [new file with mode: 0644]
TWiki/WebTopicCreator.mdwn
TWiki/WebTopicNonWikiTemplate.mdwn
TWiki/WebTopicViewTemplate.mdwn
TWiki/WhatDoesTWikiStandFor.mdwn
TWiki/WikiReferences.mdwn
TWiki/WikiSyntax.mdwn
TWiki/WikiWord.mdwn
TWiki/WysiwygPlugin.mdwn

index 20fdd6f..ac9bb7a 100644 (file)
@@ -4,36 +4,21 @@ This is a short introductory training course for TWiki beginners.
 
 ## <a name="Slide 1: A Taste of TWiki"></a> Slide 1: A Taste of TWiki
 
-<table cellspacing="10">
-  <tr>
-    <td><img alt="Hula girl" height="111" src="http://www.dementia.org/twiki//view/hula.gif" width="113" /></td>
-    <td> The basic function of TWiki is a Wiki (if that helps!) <p> A Wiki is like a web site, except that you can edit the content in your browser </p>
-      <p>
-      </p>
-      <ul>
-        <li> "Wiki" is short for "wiki wiki", the Hawaiian for "Quick" </li>
-        <li> The idea originates from <a href="http://www.hyperdictionary.com/computing/hypercard" target="_top">Macintosh Hypercard</a>, via <a href="http://www.c2.com/cgi/wiki?WardCunningham" target="_top">Ward Cunningham</a></li>
-        <li> In Ward's words, Wiki is <em>"the simplest online database that could possibly work"</em></li>
-        <li> A Wiki is basically a shared, online, persistent whiteboard </li>
-      </ul>
-    </td>
-  </tr>
-</table>
+<img src="http://www.dementia.org/twiki//view/hula.gif" width="113" height="111" alt="Hula girl" /> The basic function of TWiki is a Wiki (if that helps!)
+
+A Wiki is like a web site, except that you can edit the content in your browser
+
+- "Wiki" is short for "wiki wiki", the Hawaiian for "Quick"
+- The idea originates from [Macintosh Hypercard](http://www.hyperdictionary.com/computing/hypercard), via [Ward Cunningham](http://www.c2.com/cgi/wiki?WardCunningham)
+- In Ward's words, Wiki is _"the simplest online database that could possibly work"_
+- A Wiki is basically a shared, online, persistent whiteboard
 
 ## <a name="Slide 2: TWiki Wiki"></a> Slide 2: TWiki Wiki
 
-<table cellspacing="10">
-  <tr>
-    <td><img alt="Whiteboard" height="160" src="http://www.dementia.org/twiki//view/whiteboard.gif" width="240" /></td>
-    <td>TWiki implements the basic Wiki idea of a shared whiteboard <p>
-      </p>
-      <ul>
-        <li> Anyone can add content<br />... or change what is written<br />... or change the organisation of the content </li>
-        <li> Whatever what you write is<br />... nicely presented<br />... remembered... and never forgotten </li>
-      </ul>
-    </td>
-  </tr>
-</table>
+<img src="http://www.dementia.org/twiki//view/whiteboard.gif" width="240" height="160" alt="Whiteboard" /> TWiki implements the basic Wiki idea of a shared whiteboard
+
+- Anyone can add content<br />... or change what is written<br />... or change the organisation of the content
+- Whatever what you write is<br />... nicely presented<br />... remembered... and never forgotten
 
 TWiki also acts as an "application platform" to integrate a number of other functions.
 
@@ -58,7 +43,7 @@ TWiki is mainly used in commercial environments, often on corporate intranets
 
 A number of public Wiki sites also use TWiki
 
-- Examples: <br /><https://uimon.cern.ch/twiki/bin/view/><br /><http://csci.mrs.umn.edu/twiki/view>
+- Examples: <br /><https://twiki.cern.ch/twiki/bin/view/><br /><http://csci.mrs.umn.edu/twiki/view>
 
 ## <a name="Slide 4: TWiki Features"></a> Slide 4: TWiki Features
 
@@ -408,7 +393,7 @@ Basic TWiki is rich with features, but is enriched even further by the addition
 
 Here's a brief description of some of the more common plugins, together with the tags you might expect to see in topics if they are used. You can find out more by visiting the plugin pages.
 
-- ActionTrackerPlugin: Support **action tags** in topics, with **automatic notification** of action statii `%ACTION...`
+- ActionTrackerPlugin: Support **action tags** in topics, with **automatic notification** of action statuses `%ACTION...`
 - CalendarPlugin: Show a **monthly calendar** with highlighted events `%CALENDAR...%`
 - CommentPlugin: Support **rapid entry of short comments** (also known as **blogging**) `%COMMENT...`
 - ChartPlugin: Create PNG or GIF **charts to visualize data in TWiki tables** `%CHART...`
index 664a0ad..421a785 100644 (file)
@@ -1,44 +1,43 @@
 # <a name="Admin tools"></a> Admin tools
 
-Manage whole **%WIKITOOLNAME%** site from one screen.
+Manage whole **TWiki** site from one screen.
 
-- **[[Users|Main/TWikiUsers]]:** [[Register|Main/TWikiRegistration]], [[NewUserTemplate]], [[UserForm]], [[ResetPassword]], [[ChangePassword]]
-- **[[Site Tools|Main/TWikiSiteTools]]:** [Configure](http://www.dementia.org/twiki/configure), [[TWikiPreferences]], [[InterWikis]], [[Variables|Main/TWikiVariables]]
-- **Managing:** [[Topics|Main/ManagingTopics]], [[Webs|Main/ManagingWebs]], [[YouAreHere]]
-- **Webs:**
-
-> <table bgcolor="#000000" border="0" cellpadding="3" cellspacing="2" width="100%">
->   <tr bgcolor="#99CCCC">
->     <th>Web</th>
->     <th>Tools</th>
->     <th>Use to...</th>
->   </tr>
->   <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>
->   </tr>
->   <tr bgcolor="#ffffff">
->     <td colspan="3">This table is updated automatically based on WebPreferences settings of the individual webs.</td>
->   </tr>
-> </table>
-> <table border="0" cellpadding="0" cellspacing="2">
->   <tr bgcolor="#ffffff">
->     <td valign="top"> Legend: </td>
->     <td valign="top">  </td>
->     <td valign="top"><img alt="Home of web" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/home.gif" width="16" /> WebHome </td>
->     <td valign="top"><img alt="Search web" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/searchtopic.gif" width="16" /> WebSearch </td>
->     <td valign="top"><img alt="Recent changes in the web" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/recentchanges.gif" width="16" /> WebChanges </td>
->     <td valign="top"><img alt="Get notified of changes to the web" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/notify.gif" width="16" /> WebNotify </td>
->   </tr>
->   <tr bgcolor="#ffffff">
->     <td valign="top">  </td>
->     <td valign="top">  </td>
->     <td valign="top"><img alt="Preferences of web" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/wrench.gif" width="16" /> WebPreferences </td>
->     <td valign="top"><img alt="Statistics of web" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/statistics.gif" width="16" /> WebStatistics </td>
->     <td valign="top"><img alt="Bullet list of all topics" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/indexlist.gif" width="16" /> WebTopicList </td>
->     <td valign="top"><img alt="Index of all topics" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/index.gif" width="16" /> WebIndex </td>
->   </tr>
-> </table>
+- <img src="http://www.dementia.org/twiki//view/Main/WebHome/help.gif" width="16" height="16" alt="help" /> Documentation: [[TWiki Reference Manual|Main/TWikiReferenceManual]]
+- <img src="http://www.dementia.org/twiki//view/Main/WebHome/wrench.gif" width="16" height="16" alt="wrench" /> [[Site Tools|Main/TWikiSiteTools]]: [Configure](http://www.dementia.org/twiki/configure), [[TWikiPreferences]], [[InterWikis]], [[Variables|Main/TWikiVariables]], [[Doc Graphics|Main/TWikiDocGraphics]]
+- <img src="http://www.dementia.org/twiki//view/Main/WebHome/persons.gif" width="16" height="16" alt="persons" /> Manage [[Users|Main/TWikiUsers]]: [[Register|Main/TWikiRegistration]], [[NewUserTemplate]], [[UserForm]], [[ResetPassword]], [[ChangePassword]]
+- <img src="http://www.dementia.org/twiki//view/Main/WebHome/indexlist.gif" width="16" height="16" alt="indexlist" /> Manage Content: [[Topics|Main/ManagingTopics]], [[Webs|Main/ManagingWebs]], [[YouAreHere]]
+- <img src="http://www.dementia.org/twiki//view/Main/WebHome/folder.gif" width="16" height="16" alt="folder" /> Webs: <table bgcolor="#000000" border="0" cellpadding="3" cellspacing="2" width="100%">
+  <tr bgcolor="#99CCCC">
+    <th>Web</th>
+    <th>Tools</th>
+    <th>Use to...</th>
+  </tr>
+  <tr>
+    <td>
+      <h1>TWiki Installation Error</h1>Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags) </td>
+  </tr>
+  <tr bgcolor="#ffffff">
+    <td colspan="3">This table is updated automatically based on WebPreferences settings of the individual webs.</td>
+  </tr>
+</table>
+<table border="0" cellpadding="3" cellspacing="2">
+  <tr bgcolor="#ffffff">
+    <td valign="top"> Legend: </td>
+    <td valign="top">  </td>
+    <td valign="top"><img alt="Home of web" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/home.gif" width="16" /> WebHome </td>
+    <td valign="top"><img alt="Search web" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/searchtopic.gif" width="16" /> WebSearch </td>
+    <td valign="top"><img alt="Recent changes in the web" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/recentchanges.gif" width="16" /> WebChanges </td>
+    <td valign="top"><img alt="Get notified of changes to the web" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/notify.gif" width="16" /> WebNotify </td>
+  </tr>
+  <tr bgcolor="#ffffff">
+    <td valign="top">  </td>
+    <td valign="top">  </td>
+    <td valign="top"><img alt="Preferences of web" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/wrench.gif" width="16" /> WebPreferences </td>
+    <td valign="top"><img alt="Statistics of web" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/statistics.gif" width="16" /> WebStatistics </td>
+    <td valign="top"><img alt="Bullet list of all topics" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/indexlist.gif" width="16" /> WebTopicList </td>
+    <td valign="top"><img alt="Index of all topics" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/index.gif" width="16" /> WebIndex </td>
+  </tr>
+</table>
 
 ## <a name="All Admin Tools Category topics"></a> All Admin Tools Category topics
 
index 4344d96..8ac2bec 100644 (file)
@@ -28,10 +28,10 @@ The following is the code source of [[TWikiFAQ]]:
 
 And the `SEARCH` function:
 
-    %SEARCH{ "Back to\:__ TWikiFAQ" casesensitive="on" regex="on" nosearch="on" nototal="on"}%
+    %SEARCH{ "Back to\:__ TWikiFAQ" casesensitive="on" type="regex" nosearch="on" nototal="on"}%
 
 **_Back to:_** [[TWikiFAQ]]
 
 **_Related Topics:_** [[UserDocumentationCategory]]
 
--- TWiki:Main.MiyokoTakushima - 18 Oct 2004 <br />
+-- **_Contributors:_** TWiki:Main.MiyokoTakushima - 18 Oct 2004
diff --git a/TWiki/BehaviourContrib.mdwn b/TWiki/BehaviourContrib.mdwn
new file mode 100644 (file)
index 0000000..1c674ba
--- /dev/null
@@ -0,0 +1,178 @@
+# <a name="Behaviour Javascript framework C"></a><a name=" Behaviour Javascript framework "></a> Behaviour Javascript framework Contrib
+
+This contrib packages the third-party `Behaviour` Javascript event library, available from <http://bennolan.com/behaviour/>.
+
+Behaviour is suited to create javascript based interaction that degrades well when javascript is not available.
+
+Javascript file: [behaviour.js](http://www.dementia.org/twiki//view/TWiki/%TOPIC%/behaviour.js) (8.1K). The [compressed javascript file](http://www.dementia.org/twiki//view/TWiki/%TOPIC%/behaviour.compressed.js) (2.9K) has been processed by [ShrinkSafe](http://alex.dojotoolkit.org/shrinksafe/).
+
+<div><span>On this page:</span><ul>
+    <li><a href="#Introduction"> Introduction</a></li>
+    <li><a href="#Usage"> Usage</a></li>
+    <li><a href="#Example"> Example</a></li>
+    <li><a href="#Development"> Development</a></li>
+    <li><a href="#License"> License</a></li>
+    <li><a href="#Links"> Links</a></li>
+    <li><a href="#Contrib Info"> Contrib Info</a></li>
+  </ul>
+</div>
+
+## <a name="Introduction"></a> Introduction
+
+From the website:
+
+> After all the work of WASP and others to promote clean markup, valid pages and graceful degradation via css - it sucks that we're going back to tag soup days by throwing javascript tags into our html.
+>
+> The better way to do javascript is to do it unobtrusively. PPK and Simon Willison have been recommending this approach for ages. And it's definitely the way to go. The only problem is that it's a bit of a pain in the ass.
+>
+> That's why I came up with Behaviour - my solution to unobtrusive javascript behaviours.
+>
+> **How does it work?**
+>
+> Behaviour lets you use CSS selectors to specify elements to add javascript events to. This means that instead of writing:
+>
+>     <li>
+>        <a onclick="this.parentNode.removeChild(this)" href="#">
+>           Click me to delete me
+>        </a>
+>     </li>
+>
+> You can use:
+>
+>     <ul id="example">
+>        <li>
+>           <a href="/someurl">Click me to delete me</a>
+>        </li>
+>     </ul>
+>
+> And then use css selectors to select that element and add javascript functions to it.
+>
+>     var myrules = {
+>        '#example li' : function(el){
+>           el.onclick = function(){
+>              this.parentNode.removeChild(this);
+>
+>           }
+>        }
+>     };
+>
+>     Behaviour.register(myrules);
+
+## <a name="Usage"></a> Usage
+
+Include the javascript file:
+
+> <script type="text/javascript" src="%PUBURL%/%TWIKIWEB%/BehaviourContrib/behaviour.compressed.js"></script>
+
+In your code you create a "rules" object, with sub-objects for each html element class name or id:
+
+> var myrules = {
+>        '.classname' : function(element) {
+>           // element event
+>           element.onclick = function() {
+>              // code here
+>           }
+>        },
+>
+>        '#id' : function(element) {
+>           // element event
+>           element.onclick = function() {
+>              // code here
+>           }
+>        }
+>     };
+>
+> Or use nested identifiers:
+>
+>     var myrules = {
+>        '.menu li a' : function(element) {
+>           element.onclick = function() {
+>              // code here
+>           }
+>        }
+>     };
+
+Apply the rules with:
+
+> Behaviour.register(myrules);
+
+## <a name="Example"></a> Example
+
+If we have a 'normal' link to TWiki Web hometopic: [[TWiki Web Home|TWiki/WebHome]], we can use javascript to make it open a popup window. When javascript is not available the link behaviour defaults to opening the page in the current window.
+
+> <span class="link%TWIKIWEB%%HOMETOPIC%">[[%TWIKIWEB%.%HOMETOPIC%][TWiki Web Home]]</span>
+>
+>     <script type="text/javascript">
+>     // <![CDATA[
+>     var myrules = {
+>        '.link%TWIKIWEB%%HOMETOPIC% a' : function(el){
+>           el.onclick = function() {
+>              // open in a popup with no other attributes than template 'viewplain'
+>              launchTheWindow(this.href,null,null,null,"viewplain");
+>              return false;
+>           }
+>        }
+>     };
+>
+>     Behaviour.register(myrules);
+>     // ]]>
+>     </script>
+>
+> The class name `link%TWIKIWEB%%HOMETOPIC%` will get expanded to `linkTWikiWebHome`
+
+Creates:
+
+<span>[[TWiki Web Home|TWiki/WebHome]]</span>
+
+## <a name="Development"></a> Development
+
+- [Google Groups: Behaviour Javascript Library](http://groups.google.com/group/behaviour)
+- [Dean Edwards: Faster DOM Queries](http://dean.edwards.name/weblog/2006/03/faster/) - with a speed-up hack to Behaviour
+
+## <a name="License"></a> License
+
+Behaviour is freely distributable under the terms of an BSD license. For details, see the Behaviour website.
+
+## <a name="Links"></a> Links
+
+- [Behaviour website](http://bennolan.com/behaviour/)
+- [Behaviour Google Group](http://groups.google.com/group/behaviour)
+
+## <a name="Contrib Info"></a> Contrib Info
+
+<table border="1" cellpadding="0" cellspacing="0">
+  <tr>
+    <td> Author: </td>
+    <td> TWiki:Main.ArthurClemens </td>
+  </tr>
+  <tr>
+    <td> Copyright: </td>
+    <td> version 1.1 - Copyright (c) Ben Nolan and Simon Willison </td>
+  </tr>
+  <tr>
+    <td> License: </td>
+    <td> BSD </td>
+  </tr>
+  <tr>
+    <td> Dependencies: </td>
+    <td> None </td>
+  </tr>
+  <tr>
+    <td> 4 June 2006 </td>
+    <td> 1.000 First Version. Included Behaviour version: 1.1 </td>
+  </tr>
+  <tr>
+    <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 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 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>
+
+**_Related Topics:_** [[TWikiPreferences]]
index 40e11a4..c832631 100644 (file)
@@ -1,47 +1,37 @@
 # <a name="Bulk Reset Passwords"></a> Bulk Reset Passwords
 
-The [[TWikiAdminGroup]] can use %TOPIC% to reset any number of passwords. Users whose passwords are reset with this will be sent an e-mail at the address recorded in their home topic (the administrator will **not** be told the new passwords).
-
-<div>
-  <form action="http://www.dementia.org/twiki/resetpasswd/%WEB%/%TOPIC%" method="post">
-    <table border="0">
-      <tr>
-        <th colspan="4"> This text will be sent to users in their "reset" e-mail: </th>
-      </tr>
-      <tr>
-        <td colspan="4">
-          <textarea cols="70" name="Introduction" rows="4" style="width: 99%">
-Welcome! The site ready for your use. Please use the login name and password listed below and contact me if you have any questions.
+**The [[TWikiAdminGroup]] can use this topic to reset any number of user passwords.**
+
+Users whose passwords are reset with this will be sent an e-mail at the address recorded **in their home topic**. The administrator will **not** be told the new passwords.
+
+**Follow these two steps:**
+
+<form action="http://www.dementia.org/twiki/resetpasswd/%WEB%/%TOPIC%" method="post">
+  <div>
+    <div>
+      <h3><a name="Select users"></a> Select users </h3>
+      <p>
+      </p>
+      <p>
+      </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) <p><strong><em>Note</em></strong> if you don't see all the users you expect in this table, make sure their home topic has an attached [[Main/UserForm]]. This is used to identify users. </p>
+    </div>
+    <div>
+      <h3><a name="Write message"></a> Write message </h3>
+      <p><strong>This text will be sent to users in their "reset" e-mail.</strong> The login name and password will be filled in automatically. </p>
+      <textarea cols="70" name="Introduction" rows="4" style="width: 99%">
+Welcome! The site is ready for your use. Please use the login name and password listed below and contact me if you have any questions.
 </textarea>
-        </td>
-      </tr>
-      <tr>
-        <th colspan="4">
-          <p> Click the checkboxes below for the users whose passwords you want to reset: </p>
-        </th>
-      </tr>
-      <tr bgcolor="lightgray">
-        <th>WikiName</th>
-        <th>Created</th>
-        <th>Changed</th>
-        <th>Reset</th>
-      </tr>
-      <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>
-      </tr>
-      <tr>
-        <td align="center" colspan="4"><input name="action" type="hidden" value="resetPassword" /> <input type="submit" value="Reset selected passwords now" /></td>
-      </tr>
-    </table>
-  </form>
-</div>
-
-**_Note_** if you don't see all the users you expect in the table below, make sure their home topic has an attached [[UserForm]]. This is used to identify users.
+    </div>
+    <div><input name="action" type="hidden" value="resetPassword" /> <input type="submit" value="Reset selected user passwords and send message" /></div>
+  </div>
+</form>
+
+%BR% %BR%
 
 ----
 
-**_Related Topics:_** [[AdminToolsCategory]]
+%BR% **_Related Topics:_** [[AdminToolsCategory]]
 
 - - Set ALLOWTOPICVIEW = [[TWikiAdminGroup]]
   - Set ALLOWTOPICCHANGE = [[TWikiAdminGroup]]
index ff1903f..2d38664 100644 (file)
@@ -1,6 +1,6 @@
 # <a name="Change E-mail Address"></a> Change E-mail Address
 
-This form is used to change your registered e-mail addresses. Your registered e-mails are used by TWiki for sending you e-mails, include notifications of password changes. The addresses you register via this form are kept secret and will **not** be published anywhere on this site.
+**This form is used to change your registered e-mail addresses. Your registered e-mails are used by TWiki for sending you e-mails, include notifications of password changes. The addresses you register via this form are kept secret and will **not** be published anywhere on this site.**
 
 %X% **_Security Note_**: You really ought to register a valid e-mail address. If TWiki can't find a registered e-mail for you in the secret database, it will look in your user topic for a line like this:
 
@@ -10,38 +10,40 @@ If your user topic is not protected from changes by other people, and you don't
 
 If your old e-mail addresses are all invalid (you can't receive mail there any more) and you have forgotten your password, please contact 0 for help.
 
-Registered e-mail addresses for currently logged in user (`admin`):
-
-[[TWikiUsers]] has a list of other TWiki users.
-
 <form action="http://www.dementia.org/twiki/passwd/%WEB%/%TOPIC%" method="post" name="passwd">
   <div>
+    <div><strong>After submitting this form your e-mail will be changed, and you will be returned to this form.</strong></div>
+    <div> Registered e-mail addresses for currently logged in user (<code>admin</code>): </div>
     <div>
-      <table border="1" cellpadding="0" cellspacing="0" style="border-width: 1px">
+      <table border="0" cellpadding="0" cellspacing="0" style="border-width: 0px">
         <tr>
-          <td align="right" style=""> Your [[TWiki/LoginName]]: </td>
-          <td style=""><input name="username" size="40" type="text" value="admin" /> <code><font color="red">**</font></code></td>
+          <td style="border-width: 0px">   </td>
+          <td style="border-width: 0px"> Fields marked <code><font color="red">**</font></code> are required </td>
         </tr>
         <tr>
-          <td align="right" style=""> Password: </td>
-          <td style=""><input name="oldpassword" size="40" type="password" value="" /> <code><font color="red">**</font></code></td>
+          <td align="right" style="border-width: 0px"> Your [[TWiki/LoginName]]: </td>
+          <td style="border-width: 0px"><input name="username" size="40" type="text" value="admin" /> <code><font color="red">**</font></code></td>
         </tr>
         <tr>
-          <td align="right" style=""> New e-mails (space-separated list): </td>
-          <td style=""><input name="email" size="40" type="text" /> <code><font color="red">**</font></code></td>
+          <td align="right" style="border-width: 0px"> Password: </td>
+          <td style="border-width: 0px"><input name="oldpassword" size="40" type="password" value="" /> <code><font color="red">**</font></code></td>
         </tr>
         <tr>
-          <td align="right" style="">  <input name="TopicName" type="hidden" value="%TOPIC%" /><input name="action" type="hidden" value="changePassword" /></td>
-          <td style=""><input type="submit" value="Change e-mail address" />    (Fields marked <code><font color="red">**</font></code> are required) </td>
+          <td align="right" style="border-width: 0px"> New e-mails (space-separated list): </td>
+          <td style="border-width: 0px"><input name="email" size="40" type="text" /> <code><font color="red">**</font></code></td>
         </tr>
       </table>
     </div>
+    <div><input name="TopicName" type="hidden" value="%TOPIC%" /> <input name="action" type="hidden" value="changePassword" /> <input type="submit" value="Change e-mail address" /></div>
   </div>
 </form>
 
-After submitting this form your e-mail will be changed, and you will be returned to this form.
-
-If you have any questions, please contact 0.
+<div>
+  <ul>
+    <li><img align="top" alt="info" border="0" height="16" src="http://www.dementia.org/twiki//view/Main/WebHome/info.gif" width="16" /> If you have any questions, please contact 0. </li>
+    <li><img align="top" alt="info" border="0" height="16" src="http://www.dementia.org/twiki//view/Main/WebHome/info.gif" width="16" /> [[Main/TWikiUsers]] has a list of other TWiki users. </li>
+  </ul>
+</div>
 
 **_Related topics:_** [[ChangePassword]], [[ResetPassword]], [[UserToolsCategory]], [[AdminToolsCategory]]
 
index 905ea1e..e160179 100644 (file)
@@ -2,40 +2,42 @@
 
 **_Forgotten your password?_** Use [[ResetPassword]] instead.
 
-[[TWikiUsers]] has a list of other TWiki users.
-
 <form action="http://www.dementia.org/twiki/passwd/TWiki/WebHome" method="post" name="passwd">
   <div>
+    <div><strong>After submitting this form your password will be changed.</strong></div>
     <div>
-      <table border="1" cellpadding="0" cellspacing="0" style="border-width: 1px">
+      <table border="0" cellpadding="0" cellspacing="0" style="border-width: 0px">
         <tr>
-          <td align="right" style=""> Your [[TWiki/LoginName]]: </td>
-          <td style=""><input name="username" size="40" type="text" value="admin" /> <code><font color="red">**</font></code></td>
+          <td colspan="2" style="border-width: 0px"> Fields marked <code><font color="red">**</font></code> are required </td>
         </tr>
         <tr>
-          <td align="right" style=""> Current password: </td>
-          <td style=""><input name="oldpassword" size="40" type="password" value="" /> <code><font color="red">**</font></code></td>
+          <td align="right" style="border-width: 0px"> Your [[TWiki/LoginName]]: </td>
+          <td style="border-width: 0px"><input name="username" size="40" type="text" value="admin" /> <code><font color="red">**</font></code></td>
         </tr>
         <tr>
-          <td align="right" style=""> New password: </td>
-          <td style=""><input name="password" size="40" type="password" /> <code><font color="red">**</font></code></td>
+          <td align="right" style="border-width: 0px"> Current password: </td>
+          <td style="border-width: 0px"><input name="oldpassword" size="40" type="password" value="" /> <code><font color="red">**</font></code></td>
         </tr>
         <tr>
-          <td align="right" style=""> Retype new password: </td>
-          <td style=""><input name="passwordA" size="40" type="password" /> <code><font color="red">**</font></code></td>
+          <td align="right" style="border-width: 0px"> New password: </td>
+          <td style="border-width: 0px"><input name="password" size="40" type="password" /> <code><font color="red">**</font></code></td>
         </tr>
         <tr>
-          <td align="right" style="">  <input name="TopicName" type="hidden" value="%TOPIC%" /></td>
-          <td style=""><input name="action" type="hidden" value="changePassword" /> <input type="submit" value="Change password" />    (Fields marked <code><font color="red">**</font></code> are required) </td>
+          <td align="right" style="border-width: 0px"> Retype new password: </td>
+          <td style="border-width: 0px"><input name="passwordA" size="40" type="password" /> <code><font color="red">**</font></code></td>
         </tr>
       </table>
     </div>
+    <div><input name="TopicName" type="hidden" value="%TOPIC%" /> <input name="action" type="hidden" value="changePassword" /> <input type="submit" value="Change password" /></div>
   </div>
 </form>
 
-After submitting this form your password will be changed.
-
-If you have any questions, please contact 0.
+<div>
+  <ul>
+    <li><img align="top" alt="info" border="0" height="16" src="http://www.dementia.org/twiki//view/Main/WebHome/info.gif" width="16" /> If you have any questions, please contact 0. </li>
+    <li><img align="top" alt="info" border="0" height="16" src="http://www.dementia.org/twiki//view/Main/WebHome/info.gif" width="16" /> [[Main/TWikiUsers]] has a list of other TWiki users. </li>
+  </ul>
+</div>
 
 **_Related topics:_** [[ResetPassword]], [[ChangeEmailAddress]], [[UserToolsCategory]], [[AdminToolsCategory]]
 
index c6d6d4c..2340553 100644 (file)
@@ -1,8 +1,8 @@
 # <a name="Comment Plugin"></a><a name=" Comment Plugin"></a> Comment Plugin
 
-This plugin allows users to quickly post comments to a page without an edit/preview/save cycle.
+**Comment Plugin lets users quickly post comments to a page without an edit/preview/save cycle.**
 
-**WARNING: TWiki-4 only. If you want to use this plugin with an earlier version of TWiki, please see [here](http://twiki.org/cgi-bin/view/Plugins/%TOPIC%?rev=1.57)**
+<div style="background-color: #ffc">WARNING: TWiki-4 only. If you want to use this plugin with an earlier version of TWiki, please use <a href="http://twiki.org/cgi-bin/attach/Plugins/CommentPlugin?filename=CommentPlugin.zip&revInfo=1" target="_top">revision 31 of the zip</a>.</div>
 
 <div>
   <ul>
@@ -18,7 +18,13 @@ This plugin allows users to quickly post comments to a page without an edit/prev
       </ul>
     </li>
     <li><a href="#Customisation"> Customisation</a><ul>
-        <li><a href="#The <code>PROMPT</code> template"> The PROMPT template</a></li>
+        <li><a href="#Defining custom templates"> Defining custom templates</a></li>
+        <li><a href="#Customisation example"> Customisation example</a></li>
+        <li><a href="#The <code>PROMPT</code> template"> The PROMPT template</a><ul>
+            <li><a href="#Providing attribute values"> Providing attribute values</a></li>
+            <li><a href="#Special variables"> Special variables</a></li>
+          </ul>
+        </li>
         <li><a href="#The <code>OUTPUT</code> template"> The OUTPUT template</a></li>
       </ul>
     </li>
@@ -28,7 +34,7 @@ This plugin allows users to quickly post comments to a page without an edit/prev
   </ul>
 </div>
 
-# <a name="Features"></a> Features
+## <a name="Features"></a> Features
 
 Inserts an edit box into the page that allows users to type in and save comments. Comments can be made
 
@@ -37,11 +43,11 @@ Inserts an edit box into the page that allows users to type in and save comments
 - signed or unsigned, dated or undated (as defined by a template),
 - in other topics, or other positions within the current topic.
 
-# <a name="Syntax Rules"></a> Syntax Rules
+## <a name="Syntax Rules"></a> Syntax Rules
 
-Write the command `%COMMENT{` _attributes_ `}%` anywhere in a TWiki topic. %COMMENT% is also legal.
+Write the command `%COMMENT{` _attributes_ `}%` anywhere in a TWiki topic. `%COMMENT%` is also legal.
 
-<a name="StandardAttrs"></a> The following attributes are [[recognised|Main/WebHome#MoreAttrs]]
+<a name="StandardAttrs"></a> The following attributes are recognized (see also [[additional attributes|Main/WebHome#MoreAttrs]]):
 
 <table border="1" cellpadding="0" cellspacing="0">
   <tr>
@@ -53,6 +59,10 @@ Write the command `%COMMENT{` _attributes_ `}%` anywhere in a TWiki topic. %COMM
     <td> This is the name of the template to use for this comment. Comment templates are defined in a TWiki template - see [[Main/WebHome#TemPlates]], below. If this attribute is not defined, the type is whatever is defined by COMMENTPLUGIN_DEFAULT_TYPE, either in this topic or in your [[Main/WebPreferences]]. By default this is 'below'. </td>
   </tr>
   <tr>
+    <td><code>default</code></td>
+    <td> Default text to put into the textarea of the prompt. </td>
+  </tr>
+  <tr>
     <td><code>target</code></td>
     <td> Name of the topic to add the comment to. Defaults to the current topic. </td>
   </tr>
@@ -70,15 +80,27 @@ Write the command `%COMMENT{` _attributes_ `}%` anywhere in a TWiki topic. %COMM
   </tr>
   <tr>
     <td><code>noform</code></td>
-    <td> Set to "on" to disable the automatic form that encloses your comment block - <em>remember</em> to insert <code>&lt;FORM&gt;</code> tags yourself! </td>
+    <td> Set to "on" to disable the automatic form that encloses your comment block - <em>remember</em> to insert <code>&lt;form&gt;</code> tags yourself! See [[Main/CommentPluginExamples#noform]] for an example. </td>
+  </tr>
+  <tr>
+    <td><code>nopost</code></td>
+    <td> Set to "on" to disable insertion of the posted text into the topic. </td>
+  </tr>
+  <tr>
+    <td><code>remove</code></td>
+    <td> Set to "on" to remove the comment prompt after the first time it is clicked. </td>
+  </tr>
+  <tr>
+    <td><code>button</code></td>
+    <td> Button label text; by default <code>Add comment</code>. </td>
   </tr>
 </table>
 
-## <a name="Positioning the comment"></a> Positioning the comment
+### <a name="Positioning the comment"></a> Positioning the comment
 
 `%COMMENT` supports several ways to specify _where_ a comment should be inserted in the target topic. This is referred to as the _location_ of the comment.
 
-### <a name="Location relative to %COMMENT ta"></a> Location relative to `%COMMENT` tag
+#### <a name="Location relative to %COMMENT ta"></a> Location relative to `%COMMENT` tag
 
 The default _location_ is the `%COMMENT` tag itself. For example:
 
@@ -86,7 +108,7 @@ The default _location_ is the `%COMMENT` tag itself. For example:
 
 will add comments in the current topic, directly below the `%COMMENT` tag.
 
-### <a name="Location relative to a TWiki anc"></a> Location relative to a TWiki anchor
+#### <a name="Location relative to a TWiki anc"></a> Location relative to a TWiki anchor
 
 The `target` attribute may specify a web, and may also specify an anchor within the target topic; for example,
 
@@ -94,7 +116,7 @@ The `target` attribute may specify a web, and may also specify an anchor within
 
 This uses a standard TWiki in-topic anchor as the insertion location. See [[TextFormattingRules]] for more about TWiki anchors.
 
-### <a name="Location relative to an arbitrar"></a> Location relative to an arbitrary text string
+#### <a name="Location relative to an arbitrar"></a> Location relative to an arbitrary text string
 
 Getting more sophisticated, you can also specify a regular expression for the target location using the `location` parameter. The target topic is searched for the regular expression, and the comment inserted relative to the string that the search matched. For example,
 
@@ -108,7 +130,7 @@ I look forward to someone leveraging this feature to create - for example - thre
 
 If you specify an anchor _and_ a `location`, the anchor will be ignored.
 
-## <a name="Default templates"></a> Default templates
+### <a name="Default templates"></a> Default templates
 
 Templates are used to define the "comment style" i.e. how comments appear in the page. The default is to add comments in "Blog like" style using bulleted lists, with the most recent comment at the top, but many other styles are available such as tables or Wiki thread mode comments. It is easy to define your own customer styles as well.
 
@@ -153,31 +175,53 @@ Your local installation may add more template types as well - see [[Customisatio
 
 <a name="TemPlates"></a>
 
-# <a name="Customisation"></a> Customisation
+## <a name="Customisation"></a> Customisation
 
 Customisation of the comment plugin requires
 
-- familiarity with HTML forms,
+- familiarity with HTML forms
 - some familiarity with the [[TWiki templating language|TWiki/TWikiTemplates]].
 
 To define a comment type, you have to provide two simple template definitions in the template file; one for the prompt box, and one for the generated output. If we have a template type "mytype", these are named `PROMPT:mytype` and `OUTPUT:mytype` respectively. See `comments.tmpl` in the templates directory for examples.
 
-The plugin picks up these template definitions from a standard TWiki template file, `templates/comments.tmpl`. This allows different templates to be defined for different TWiki skins. By default, this template includes the topic [[CommentPluginTemplate]], which contains all the shipped standard templates and in turn includes TWiki.UserCommentsTemplate. This allows for several levels of customisation:
+The plugin picks up these template definitions from a standard TWiki template file, `templates/comments.tmpl`. This allows different templates to be defined for different TWiki skins.
+
+### <a name="Defining custom templates"></a> Defining custom templates
+
+By default, `templates/comments.tmpl` includes the topic [[CommentPluginTemplate]], which contains all the shipped standard templates and in turn includes TWiki.UserCommentsTemplate that can include non-standard customisations.
 
-1. To override all default templates, everywhere, change `comments.tmpl` to include a different topic (this customisation will be lost next time you upgrade, though).
-2. To add site-wide local template customisations, add them to TWiki.UserCommentsTemplate. You can redefine the standard templates here if you want, and your definitions will override the standard definitions.
-3. To override templates on a web-by-web basis, add a topic UserCommentsTemplate to the web (this will replace TWiki.UserCommentsTemplate)
-4. To override templates for a specific skin, add them to TWiki.UserComments&lt;Skin&gt;Template (where &lt;Skin&gt; is the name of the skin with the first letter capitalised, e.g. Pattern)
+This allows for several levels of customisation:
+
+1. To **override all default templates, everywhere**, change `comments.tmpl` to include a different topic (this customisation will be lost next time you upgrade, though).
+2. To add **site-wide local template customisations**, add them to [[UserCommentsTemplate]] (create if it does not exist yet). You can redefine the standard templates here if you want, and your definitions will override the standard definitions.
+3. To override templates on a **web-by-web basis**, add a topic `UserCommentsTemplate` to the web (this will replace TWiki.UserCommentsTemplate)
+4. To override templates **for a specific skin**, add them to TWiki.UserComments&lt;Skin&gt;Template (where &lt;Skin&gt; is the name of the skin with the first letter capitalised, e.g. Pattern)
 
 %X% Templates are picked up by following the [[standard TWiki rules|Main/TWikiTemplates#Finding_Templates]] for locating template files. Note that you can use `%TMPL:INCLUDE` to include other files of templates.
 
-## <a name="The &lt;code&gt;PROMPT&lt;/code&gt; template"></a> The `PROMPT` template
+### <a name="Customisation example"></a> Customisation example
+
+Provide both a `PROMPT` and an `OUTPUT` definition:
+
+    %TMPL:DEF{PROMPT:myComment}%%TMPL:P{promptbox}%%TMPL:END%
+    %TMPL:DEF{OUTPUT:myComment}%%TMPL:P{outputoneliner}%%POS:TOP%
+    %TMPL:END%
+
+Call your custom comment with:
+
+    %COMMENT{type="myComment"}%
+
+### <a name="The &lt;code&gt;PROMPT&lt;/code&gt; template"></a> The `PROMPT` template
 
 The `PROMPT` template defines the contents of an HTML form that is used to capture the comment. This form invokes the comment generator when submitted. Parameters to the comment generator are defined using standard HTML input fields, such as `input`, `textarea` and `select`. The user enters values for these parameters, and these are then available when the `OUTPUT` template is expanded, in the form of `%URLPARAM%`s.
 
-Only the input fields of the form need be defined. The plugin automatically generates the `>form<` and `&gt:/form<` tags, unless you specify `noform="on"`, in which case you have to provide them yourself. **Note** that you must define a "submit" button if you want the form to work!
+Only the input fields of the form need be defined. The plugin automatically generates the `<form>` and `</form>` tags, unless you specify `noform="on"`, in which case you have to provide them yourself. **Note** that you must define a "submit" button if you want the form to work!
+
+<a name="MoreAttrs"></a>
+
+#### <a name="Providing attribute values"></a> Providing attribute values
 
-<a name="MoreAttrs"></a> If an attribute is given to the `%COMMENT` tag that is not one of the [[standard attributes|Main/WebHome#StandardAttrs]], then that attribute is taken as the name of a parameter to be expanded in the `PROMPT` template. Expressions in the template of the form `%`_param_`|`_default_`%` (e.g. `%rows|3%`, `%button|Push me%`) are expanded to the values given in the `%COMMENT`. For example, if the `PROMPT` template 'example' contains:
+If an attribute is given to the `%COMMENT` tag that is not one of the [[standard attributes|Main/WebHome#StandardAttrs]], then that attribute is taken as the name of a parameter to be expanded in the `PROMPT` template. Expressions in the template of the form `%`_param_`|`_default_`%` (e.g. `%rows|3%`, `%button|Push me%`) are expanded to the values given in the `%COMMENT`. For example, if the `PROMPT` template 'example' contains:
 
     <textarea rows=%rows|3% cols="%cols|50%" value="%tval|Rubbish%">
 
@@ -189,6 +233,8 @@ then the template will be expanded as
 
     <textarea rows="3" cols="75" value="Rubbish">
 
+#### <a name="Special variables"></a> Special variables
+
 As well as support for all the usual TWiki variables in templates, the following special variables are supported in the `PROMPT` definition:
 
 <table border="1" cellpadding="0" cellspacing="0">
@@ -197,18 +243,68 @@ As well as support for all the usual TWiki variables in templates, the following
     <th bgcolor="#99CCCC"><strong> Description </strong></th>
   </tr>
   <tr>
+    <td><code>%DISABLED%</code></td>
+    <td> Set to 'disabled' when you cannot comment (e.g. in preview mode). </td>
+  </tr>
+  <tr>
     <td><code>%MESSAGE%</code></td>
-    <td> A helpful generated message, either a lock message or a reminder to refresh. </td>
+    <td> The text specified by <code>default</code>. This may be overridden by a helpful message when the prompt is DISABLED. </td>
   </tr>
+</table>
+
+**EXPERT** Note that when a comment is saved, the TWiki `save` script is invoked on the target topic, with a number of parameters provided by the comment form. Normally the [[CommentPlugin]] will provide these fields in the form, but experts can also provide the fields themselves in order to get finer control over what is submitted, or you might want to define your own HTML forms that do comment submission. The parameters that the [[CommentPlugin]] recognises are as follows:
+
+<table border="1" cellpadding="0" cellspacing="0">
   <tr>
-    <td><code>%DISABLED%</code></td>
-    <td> Set to 'disabled' when you cannot comment (e.g. in preview mode). </td>
+    <th bgcolor="#99CCCC"><strong> CGI parameter </strong></th>
+    <th bgcolor="#99CCCC"><strong> Description </strong></th>
+  </tr>
+  <tr>
+    <td><code>comment_action</code></td>
+    <td> Must be <code>save</code> to get the [[Main/CommentPlugin]] to perform </td>
+  </tr>
+  <tr>
+    <td><code>comment_type</code></td>
+    <td> Type of the OUTPUT template </td>
+  </tr>
+  <tr>
+    <td><code>comment_index</code></td>
+    <td> Zero-based index of the %COMMENT in the source topic. Used to place a post relative to an existing %COMMENT. </td>
+  </tr>
+  <tr>
+    <td><code>comment_anchor</code></td>
+    <td> Anchor taken from the <code>target</code> spec </td>
+  </tr>
+  <tr>
+    <td><code>comment_location</code></td>
+    <td> As passed to %COMMENT </td>
+  </tr>
+  <tr>
+    <td><code>comment_nonotify</code></td>
+    <td> As passed to %COMMENT </td>
+  </tr>
+  <tr>
+    <td><code>comment_remove</code></td>
+    <td> Zero-based index of a %COMMENT to remove from the target topic </td>
+  </tr>
+  <tr>
+    <td><code>comment_nopost</code></td>
+    <td> As passed to %COMMENT </td>
   </tr>
 </table>
 
-## <a name="The &lt;code&gt;OUTPUT&lt;/code&gt; template"></a> The `OUTPUT` template
+Note that `comment_location` overrides `comment_anchor`, and both override `comment_index`. Example, shows an "I Approve" button that adds your approval signature to the end of the topic:
 
-The `OUTPUT` template defines the format for the text that actually gets embedded into the topic. All the usual TWiki variables are available in the `PROMPT` definition, but note that they get expanded _when the comment is inserted in the text_, so time, date and username will refer to the time and date when the comment was made and the user who made it.
+    <form method="post" action="%SCRIPTURL{save}%/%WEB%/%TOPIC%">
+    <input type="submit" value="I Approve" />
+    <input type="hidden" name="comment_action" value="save" />
+    <input type="hidden" name="comment_type" value="bottom" />
+    <input type="hidden" name="comment" value="I Approve" />
+    </form>
+
+### <a name="The &lt;code&gt;OUTPUT&lt;/code&gt; template"></a> The `OUTPUT` template
+
+The `OUTPUT` template defines the format for the text that actually gets embedded into the topic. All the usual TWiki variables are available in the `PROMPT` definition, but note that they get expanded _when the comment is inserted in the text_, so time, date and username will refer to the time and date when the comment was made, and the user who made it.
 
 There are also four position tags that are used to indicate where the comment should be placed, relative to the `location` defined in the `%COMMENT` tag:
 
@@ -235,25 +331,42 @@ Note that these position tags are obviously mutually exclusive. If you define mo
 
 All the usual [[TWikiVariables]] that can be used in a topic template can also be used in an `OUTPUT` template. See [[TWikiVariables]] for details.
 
-# <a name="Settings"></a> Settings
+## <a name="Settings"></a> Settings
+
+Two TWiki Preference variables are recognised by the [[CommentPlugin]]:
+
+<table border="1" cellpadding="0" cellspacing="0">
+  <tr>
+    <th bgcolor="#99CCCC"><strong> Preference </strong></th>
+    <th bgcolor="#99CCCC"><strong> Default </strong></th>
+    <th bgcolor="#99CCCC"><strong> Description </strong></th>
+  </tr>
+  <tr>
+    <td><code>%COMMENTPLUGIN_TEMPLATES%</code></td>
+    <td><code>comments</code></td>
+    <td> Name of template file in the 'templates' directory that contains the comment templates. The default 'comments.tmpl' automatically includes user templates from [[TWiki/CommentPluginTemplate]], which in turn includes [[TWiki/UserCommentsTemplate]]. </td>
+  </tr>
+  <tr>
+    <td><code>%COMMENTPLUGIN_DEFAULT_TYPE%</code></td>
+    <td><code>above</code></td>
+    <td> Default template type </td>
+  </tr>
+</table>
 
-- Description:
-  - Set SHORTDESCRIPTION = Allows users to quickly post comments to a page without an edit/preview/save cycle.
-- Name of file in the 'templates' directory that contains the comment templates. The default 'comments.tmpl' automatically includes user templates from [[CommentsTmpl]]
-  - Set TEMPLATES = comments
-- default template type (if not present, defaults to "below")
-  - Set DEFAULT\_TYPE = below
+These can be set in TWikiPreferences, in WebPreferences or in individual topics.
 
-# <a name="Plugin Installation Instructions"></a> Plugin Installation Instructions
+## <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:
-  - Download the archive file from the Plugin web (see below)
-  - Unpack the archive in your twiki installation directory.
-  - You may need to correct file permissions.
-  - Run <code>**%TOPIC%\_installer**</code> to automatically check and install other modules that this module depends on. You can also do this step manually. Dependencies: None
-  - Visit `configure` in your TWiki installation, and enable the plugin in the \{Plugins\} section.
+- Download the archive file from the Plugin web (see below)
+- Unpack the archive in your twiki installation directory.
+  - You may need to correct file permissions
+- Run <code>**%TOPIC%\_installer**</code> to automatically check and install other modules that this module depends on, and enable the plugin.
+- Alternatively,
+  - Manually resolve the dependencies listed below. None
+- Use `configure` to enable the plugin
 
-# <a name="Plugin Info"></a> Plugin Info
+## <a name="Plugin Info"></a> Plugin Info
 
 <table border="1" cellpadding="0" cellspacing="0">
   <tr>
@@ -265,76 +378,80 @@ All the usual [[TWikiVariables]] that can be used in a topic template can also b
     <td>   </td>
   </tr>
   <tr>
-    <td> 11118 </td>
+    <td align="right"> 11358 </td>
+    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item2802" rel="nofollow">Item2802</a> moved SHORTDESCRIPTION to .pm. Coded up TWiki:main.PankajPant's suggestions as <code>nopost</code> and <code>remove</code>. Added default text for the %COMMENT as requested by TWiki:Main.AndyGlew </td>
+  </tr>
+  <tr>
+    <td align="right"> 11118 </td>
     <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item2322" rel="nofollow">Item2322</a> removed span tag around oneliner bullet output </td>
   </tr>
   <tr>
-    <td> 8788 </td>
+    <td align="right"> 8788 </td>
     <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item1465" rel="nofollow">Item1465</a> Item1577: reverted 8433 to fix inclusion of correct user templates </td>
   </tr>
   <tr>
-    <td> 8787 </td>
+    <td align="right"> 8787 </td>
     <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item1573" rel="nofollow">Item1573</a> renamed standard templates topic to avoid naming clash on Windows, where filenames are case-insensitive </td>
   </tr>
   <tr>
-    <td> 8433 </td>
-    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item1465" rel="nofollow">Item1465</a> Fix 'TWiki.' to '%TWIKIEB%.'; also fixed include 'UserComments' to 'UserCommentsTemplate' (at least that is what the doc suggests) </td>
+    <td align="right"> 8433 </td>
+    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item1465" rel="nofollow">Item1465</a> Fix 'TWiki.' to 'TWiki.'; also fixed include 'UserComments' to 'UserCommentsTemplate' (at least that is what the doc suggests) </td>
   </tr>
   <tr>
-    <td> 7427 </td>
+    <td align="right"> 7427 </td>
     <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item845" rel="nofollow">Item845</a> removed duplicate date in default comments; stick with server time </td>
   </tr>
   <tr>
-    <td> 7251 </td>
+    <td align="right"> 7251 </td>
     <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item810" rel="nofollow">Item810</a> fix for user template inclusion; reorganised templates to make customisation easier </td>
   </tr>
   <tr>
-    <td> 5906 </td>
-    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item143" rel="nofollow">Item143</a> apache warning from comment plugin when [[Main/CommentsTmpl]].txt not foudn </td>
+    <td align="right"> 5906 </td>
+    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item143" rel="nofollow">Item143</a> apache warning from comment plugin when CommentsTmpl.txt not found </td>
   </tr>
   <tr>
-    <td> 5519 </td>
-    <td>[[Main/CommentPluginOnAnchorsBroken]]: incorporated [[Main/JacobEisinger]]'s fix </td>
+    <td align="right"> 5519 </td>
+    <td> CommentPluginOnAnchorsBroken: incorporated JacobEisinger's fix </td>
   </tr>
   <tr>
-    <td> 5518 </td>
-    <td>[[Main/CommentPluginOnAnchorsBroken]]: incorporated [[Main/OlivierBerger]]'s fix </td>
+    <td align="right"> 5518 </td>
+    <td> CommentPluginOnAnchorsBroken: incorporated OlivierBerger's fix </td>
   </tr>
   <tr>
-    <td> 5455 </td>
+    <td align="right"> 5455 </td>
     <td> On Niels Kodslo's prompting, removed the global recursion prevention that I believe is no longer needed. </td>
   </tr>
   <tr>
-    <td> 5280 </td>
+    <td align="right"> 5280 </td>
     <td> Removed templates, and some minor fixes </td>
   </tr>
   <tr>
-    <td> 5250 </td>
+    <td align="right"> 5250 </td>
     <td> Removed newlines from prompt box </td>
   </tr>
   <tr>
-    <td> 4902 </td>
+    <td align="right"> 4902 </td>
     <td> Changed to use viewauth. Moved templates into user topics. </td>
   </tr>
   <tr>
-    <td> 4901 </td>
+    <td align="right"> 4901 </td>
     <td> Added templates in user webs support </td>
   </tr>
   <tr>
-    <td> 4897 </td>
+    <td align="right"> 4897 </td>
     <td> Fixes for disabling during preview; re-enabled old legacy parameters </td>
   </tr>
   <tr>
-    <td> 4889 </td>
-    <td> Chopped down from [[Main/PeterMasiar]] version, removing several parameters, savecomment script, changing way templates are done. Major rewrite, atcherly. </td>
+    <td align="right"> 4889 </td>
+    <td> Chopped down from PeterMasiar version, removing several parameters, savecomment script, changing way templates are done. Major rewrite, atcherly. </td>
   </tr>
   <tr>
-    <td> 4882 </td>
-    <td> Update from [[Main/PeterMasiar]]'s 2.0 version, plus documentation and small code improvements. </td>
+    <td align="right"> 4882 </td>
+    <td> Update from PeterMasiar's 2.0 version, plus documentation and small code improvements. </td>
   </tr>
   <tr>
-    <td> 4745 </td>
-    <td> 06Mar 2002 initial commit </td>
+    <td align="right"> 4745 </td>
+    <td> 06 Mar 2002 initial commit </td>
   </tr>
   <tr>
     <td align="right"> Perl Version: </td>
@@ -352,4 +469,4 @@ All the usual [[TWikiVariables]] that can be used in a topic template can also b
 
 **_Related Topics:_** [[TWikiPreferences]], [[TWikiPlugins]]
 
--- TWiki:Main/CrawfordCurrie - 02:16:06 25 October 2006
+-- TWiki:Main/CrawfordCurrie - 05:07:17 16 January 2007
diff --git a/TWiki/CommentPluginExamples.mdwn b/TWiki/CommentPluginExamples.mdwn
new file mode 100644 (file)
index 0000000..9fe2189
--- /dev/null
@@ -0,0 +1,222 @@
+- Top comment output 2 -- [[TWikiContributor]] - 26 Nov 2006
+- Top comment output 1 -- [[TWikiContributor]] - 26 Nov 2006
+
+# <a name="CommentPlugin examples"></a><a name=" _CommentPlugin examples"></a> [[CommentPlugin]] examples
+
+<div>
+  <ul>
+    <li><a href="#!_CommentPlugin templates"> CommentPlugin templates</a><ul>
+        <li><a href="#Default"> Default</a></li>
+        <li><a href="#=top="> top</a></li>
+        <li><a href="#=bottom="> bottom</a></li>
+        <li><a href="#=above="> above</a></li>
+        <li><a href="#=below="> below</a></li>
+        <li><a href="#=bulletabove="> bulletabove</a></li>
+        <li><a href="#=threadmode="> threadmode</a></li>
+        <li><a href="#=belowthreadmode="> belowthreadmode</a><ul>
+            <li><a href="#Main._TWikiContributor - 26 Nov"> TWikiContributor - 26 Nov 2006 - 12:09</a></li>
+            <li><a href="#Main._TWikiContributor - 26 Nov"> TWikiContributor - 26 Nov 2006 - 12:09</a></li>
+          </ul>
+        </li>
+        <li><a href="#=tableprepend="> tableprepend</a></li>
+        <li><a href="#=tableappend="> tableappend</a></li>
+        <li><a href="#=after="> after</a></li>
+        <li><a href="#=action="> action</a></li>
+        <li><a href="#=table="> table</a></li>
+        <li><a href="#=toctalk="> toctalk</a><ul>
+            <li><a href="#26 Nov 2006 - 00:45 Main._TWikiC"> 26 Nov 2006 - 00:45 TWikiContributor: Toctalk output summary 1</a></li>
+            <li><a href="#26 Nov 2006 - 11:09 Main._TWikiC"> 26 Nov 2006 - 11:09 TWikiContributor: Toctalk output summary 2</a></li>
+          </ul>
+        </li>
+        <li><a href="#=bookmark="> bookmark</a></li>
+        <li><a href="#=return="> return</a></li>
+        <li><a href="#=noform="> noform</a></li>
+      </ul>
+    </li>
+  </ul>
+</div>
+
+## <a name="CommentPlugin templates"></a><a name="_CommentPlugin templates"></a> CommentPlugin templates
+
+### <a name="Default"></a> Default
+
+Default comment output 1
+
+-- [[TWikiContributor]] - 26 Nov 2006
+
+Default comment output 2
+
+-- [[TWikiContributor]] - 26 Nov 2006
+
+<form action="http://www.dementia.org/twiki/save" enctype="multipart/form-data" id="above0" method="post" name="above0"><input name="comment_action" type="hidden" value="save" /><input name="comment_type" type="hidden" value="above" /><input name="comment_index" type="hidden" value="0" /></form>
+
+### <a name="=top="></a> `top`
+
+<form action="http://www.dementia.org/twiki/save" enctype="multipart/form-data" id="top1" method="post" name="top1"><input name="comment_action" type="hidden" value="save" /><input name="comment_type" type="hidden" value="top" /><input name="comment_index" type="hidden" value="1" /></form>
+
+### <a name="=bottom="></a> `bottom`
+
+<form action="http://www.dementia.org/twiki/save" enctype="multipart/form-data" id="bottom2" method="post" name="bottom2"><input name="comment_action" type="hidden" value="save" /><input name="comment_type" type="hidden" value="bottom" /><input name="comment_index" type="hidden" value="2" /></form>
+
+### <a name="=above="></a> `above`
+
+Above comment output 1
+
+-- [[TWikiContributor]] - 26 Nov 2006
+
+Above comment output 2
+
+-- [[TWikiContributor]] - 26 Nov 2006
+
+<form action="http://www.dementia.org/twiki/save" enctype="multipart/form-data" id="above3" method="post" name="above3"><input name="comment_action" type="hidden" value="save" /><input name="comment_type" type="hidden" value="above" /><input name="comment_index" type="hidden" value="3" /></form>
+
+### <a name="=below="></a> `below`
+
+<form action="http://www.dementia.org/twiki/save" enctype="multipart/form-data" id="below4" method="post" name="below4"><input name="comment_action" type="hidden" value="save" /><input name="comment_type" type="hidden" value="below" /><input name="comment_index" type="hidden" value="4" /></form>
+
+- Below comment output 2 -- [[TWikiContributor]] - 26 Nov 2006
+- Below comment output 1 -- [[TWikiContributor]] - 26 Nov 2006
+
+### <a name="=bulletabove="></a> `bulletabove`
+
+Example with `inputsize="20"`:
+
+- Bullet above comment output 1
+- Bullet above comment output 2
+
+<form action="http://www.dementia.org/twiki/save" enctype="multipart/form-data" id="bulletabove5" method="post" name="bulletabove5"><input name="comment_action" type="hidden" value="save" /><input name="comment_type" type="hidden" value="bulletabove" /><input name="comment_index" type="hidden" value="5" /></form>
+
+### <a name="=threadmode="></a> `threadmode`
+
+Threadmode comment output 1
+
+-- [[TWikiContributor]] - 26 Nov 2006
+
+Threadmode comment output 2
+
+-- [[TWikiContributor]] - 26 Nov 2006
+
+<form action="http://www.dementia.org/twiki/save" enctype="multipart/form-data" id="threadmode6" method="post" name="threadmode6"><input name="comment_action" type="hidden" value="save" /><input name="comment_type" type="hidden" value="threadmode" /><input name="comment_index" type="hidden" value="6" /></form>
+
+### <a name="=belowthreadmode="></a> `belowthreadmode`
+
+<form action="http://www.dementia.org/twiki/save" enctype="multipart/form-data" id="belowthreadmode7" method="post" name="belowthreadmode7"><input name="comment_action" type="hidden" value="save" /><input name="comment_type" type="hidden" value="belowthreadmode" /><input name="comment_index" type="hidden" value="7" /></form>
+
+#### <a name="Main._TWikiContributor - 26 Nov"></a><a name="Main._TWikiContributor - 26 Nov "></a> [[TWikiContributor]] - 26 Nov 2006 - 12:09
+
+Belowthreadmode comment output 2
+
+#### <a name="Main._TWikiContributor - 26 Nov"></a><a name="Main._TWikiContributor - 26 Nov "></a> [[TWikiContributor]] - 26 Nov 2006 - 12:09
+
+Belowthreadmode comment output 1
+
+### <a name="=tableprepend="></a> `tableprepend`
+
+<form action="http://www.dementia.org/twiki/save" enctype="multipart/form-data" id="tableprepend8" method="post" name="tableprepend8"><input name="comment_action" type="hidden" value="save" /><input name="comment_type" type="hidden" value="tableprepend" /><input name="comment_index" type="hidden" value="8" /></form>
+<table border="1" cellpadding="0" cellspacing="0">
+  <tr>
+    <td> Tablepreprend comment output 2 </td>
+    <td>[[Main/TWikiContributor]]</td>
+    <td> 26 Nov 2006 - 11:03 </td>
+  </tr>
+  <tr>
+    <td> Tablepreprend comment output 1 </td>
+    <td>[[Main/TWikiContributor]]</td>
+    <td> 26 Nov 2006 - 11:02 </td>
+  </tr>
+</table>
+
+### <a name="=tableappend="></a> `tableappend`
+
+<table border="1" cellpadding="0" cellspacing="0">
+  <tr>
+    <td> Tableappend comment output 1 </td>
+    <td>[[Main/TWikiContributor]]</td>
+    <td> 26 Nov 2006 - 10:38 </td>
+  </tr>
+  <tr>
+    <td> Tableappend comment output 2 </td>
+    <td>[[Main/TWikiContributor]]</td>
+    <td> 26 Nov 2006 - 10:39 </td>
+  </tr>
+</table>
+<form action="http://www.dementia.org/twiki/save" enctype="multipart/form-data" id="tableappend9" method="post" name="tableappend9"><input name="comment_action" type="hidden" value="save" /><input name="comment_type" type="hidden" value="tableappend" /><input name="comment_index" type="hidden" value="9" /></form>
+
+### <a name="=after="></a> `after`
+
+- After comment output 1 -- [[TWikiContributor]] - 26 Nov 2006
+- After comment output 2 -- [[TWikiContributor]] - 26 Nov 2006
+
+<form action="http://www.dementia.org/twiki/save" enctype="multipart/form-data" id="after10" method="post" name="after10"><input name="comment_action" type="hidden" value="save" /><input name="comment_type" type="hidden" value="after" /><input name="comment_index" type="hidden" value="10" /></form>
+
+### <a name="=action="></a> `action`
+
+(requires TWiki:Plugins/ActionTrackerPlugin)
+
+%ACTION\{ due="1-Dec-2007" creator="Main.TWikiContributor" uid="000001" state="open" created="26-Nov-2006" who="Main.TWikiContributor" \}% &lt;&lt;EOF Action comment output 1 - Created by [[TWikiContributor]], 26 Nov 2006 - 10:58 EOF %ACTION\{ due="1-Jan-2008" creator="Main.TWikiContributor" uid="000003" state="open" created="26-Nov-2006" who="Main.TWikiContributor" \}% &lt;&lt;EOF Action comment output 2 - Created by [[TWikiContributor]], 26 Nov 2006 - 10:58 EOF
+
+<form action="http://www.dementia.org/twiki/save" enctype="multipart/form-data" id="action11" method="post" name="action11"><input name="comment_action" type="hidden" value="save" /><input name="comment_type" type="hidden" value="action" /><input name="comment_index" type="hidden" value="11" /></form>
+
+### <a name="=table="></a> `table`
+
+<table border="1" cellpadding="0" cellspacing="0">
+  <tr>
+    <td> 1 Dec 2007 </td>
+    <td>[[Main/TWikiContributor]]</td>
+    <td> Athens </td>
+  </tr>
+  <tr>
+    <td> 1 Jan 2008 </td>
+    <td>[[Main/TWikiContributor]]</td>
+    <td> Beijing </td>
+  </tr>
+</table>
+<form action="http://www.dementia.org/twiki/save" enctype="multipart/form-data" id="table12" method="post" name="table12"><input name="comment_action" type="hidden" value="save" /><input name="comment_type" type="hidden" value="table" /><input name="comment_index" type="hidden" value="12" /></form>
+
+### <a name="=toctalk="></a> `toctalk`
+
+#### <a name="26 Nov 2006 - 00:45 Main._TWikiC"></a> 26 Nov 2006 - 00:45 [[TWikiContributor]]: Toctalk output summary 1
+
+Toctalk output message 1
+
+#### <a name="26 Nov 2006 - 11:09 Main._TWikiC"></a> 26 Nov 2006 - 11:09 [[TWikiContributor]]: Toctalk output summary 2
+
+Toctalk output message 2
+
+<form action="http://www.dementia.org/twiki/save" enctype="multipart/form-data" id="toctalk13" method="post" name="toctalk13"><input name="comment_action" type="hidden" value="save" /><input name="comment_type" type="hidden" value="toctalk" /><input name="comment_index" type="hidden" value="13" /></form>
+
+### <a name="=bookmark="></a> `bookmark`
+
+- [Bookmark output link label](http://twiki.org)
+- [TWiki](http://twiki.org) - Bookmark output comment
+
+<form action="http://www.dementia.org/twiki/save" enctype="multipart/form-data" id="bookmark14" method="post" name="bookmark14"><input name="comment_action" type="hidden" value="save" /><input name="comment_type" type="hidden" value="bookmark" /><input name="comment_index" type="hidden" value="14" /></form>
+
+### <a name="=return="></a> `return`
+
+Post to a different topic and return to here. In this example comments are written to [[%COMMENT_TOPIC%|Main/COMMENT_TOPIC]]. %RED% Available with TWiki 4.1. %ENDCOLOR%
+
+_Comments:_
+
+>
+
+----
+
+<form action="http://www.dementia.org/twiki/save/Main/%COMMENT_TOPIC%" enctype="multipart/form-data" id="return15" method="post" name="return15"><input name="comment_action" type="hidden" value="save" /><input name="comment_type" type="hidden" value="return" /><input name="comment_index" type="hidden" value="15" /></form>
+
+%BR%
+
+### <a name="=noform="></a> `noform`
+
+Example of a custom form to save a comment to a new topic. When the topic is created the parent will be our Sandbox [[example topic|Sandbox/CommentPluginExampleComments]].
+
+<form action="http://www.dementia.org/twiki/save/Sandbox/" enctype="application/x-www-form-urlencoded" id="noformcomment0" method="post" name="noformcomment0"><input name="topicparent" type="hidden" value="CommentPluginExampleComments" /> <input name="comment_action" type="hidden" value="save" /> <input name="nonwikiword" type="hidden" value="off" /> <input name="onlywikiname" type="hidden" value="on" /><div>
+    <div><strong>New topic name:</strong> %BR% <input %disabled%="%DISABLED%" id="topic" name="topic" size="40" type="text" value="" /> <span>Enter a WikiWord topic name</span></div>
+    <div><strong>Topic text:</strong> %BR% <input name="comment_action" type="hidden" value="save" /><input name="comment_type" type="hidden" value="above" /><input name="comment_index" type="hidden" value="16" /></div>
+  </div>
+</form>
+
+----
+
+- Bottom comment output 1 -- [[TWikiContributor]] - 26 Nov 2006
+- Bottom comment output 2 -- [[TWikiContributor]] - 26 Nov 2006
index d1b217f..312c9f4 100644 (file)
@@ -1,20 +1,25 @@
-Templates for [[CommentPlugin]] - See [[CommentPlugin#Customisation]] for help.
+# <a name="Templates for _CommentPlugin"></a><a name=" Templates for _CommentPlugin"></a> Templates for [[CommentPlugin]]
+
+See [[CommentPlugin: Customisation|TWiki/CommentPlugin#Customisation]] for help.
 
 While this topic can be viewed as a TWiki topic, it is used by the [[CommentPlugin]] as a template file - see [[TWikiTemplates]]. The important content in here is in the verbatim blocks. The rest of the topic is just comments.
 
-**WARNING: THIS FILE WILL BE OVERWRITTEN WHEN YOU UPGRADE THE COMMENT PLUGIN**
+<img src="http://www.dementia.org/twiki//view/Main/WebHome/hand.gif" width="16" height="16" alt="hand" /> See [[CommentPluginExamples]] to view rendered templates
+
+<div style="background-color: #ffc">WARNING: THIS FILE WILL BE OVERWRITTEN WHEN YOU UPGRADE THE COMMENT PLUGIN</div>
 
-Put your local templates into [[UserCommentsTemplate]]. **LOCAL TEMPLATES WILL OVERRIDE TEMPLATES DEFINED IN THIS FILE**
+Put your local templates into [[UserCommentsTemplate]] (create if it does not exist yet). **Local templates defined in that topic will override templates defined below.**
 
-<div>
-  <ul>
+<div><span>Table of Contents</span><ul>
     <li><a href="#Template definitions"> Template definitions</a><ul>
         <li><a href="#Templates used in rest of file"> Templates used in rest of file</a></li>
         <li><a href="#User templates"> User templates</a><ul>
             <li><a href="#top"> top</a></li>
             <li><a href="#bottom"> bottom</a></li>
             <li><a href="#above"> above</a></li>
+            <li><a href="#bulletabove"> bulletabove</a></li>
             <li><a href="#threadmode"> threadmode</a></li>
+            <li><a href="#belowthreadmode"> belowthreadmode</a></li>
             <li><a href="#below"> below</a></li>
             <li><a href="#tableprepend"> tableprepend</a></li>
             <li><a href="#tableappend"> tableappend</a></li>
@@ -23,35 +28,32 @@ Put your local templates into [[UserCommentsTemplate]]. **LOCAL TEMPLATES WILL O
             <li><a href="#table"> table</a></li>
             <li><a href="#toctalk"> toctalk</a></li>
             <li><a href="#bookmark"> bookmark</a></li>
+            <li><a href="#return"> return</a></li>
           </ul>
         </li>
       </ul>
     </li>
-    <li><a href="#Include _UserCommentsTemplate"> Include UserCommentsTemplate</a></li>
+    <li><a href="#Include _UserComments"> Include UserComments</a></li>
   </ul>
 </div>
 
-# <a name="Template definitions"></a> Template definitions
+## <a name="Template definitions"></a> Template definitions
 
-## <a name="Templates used in rest of file"></a> Templates used in rest of file
+### <a name="Templates used in rest of file"></a> Templates used in rest of file
 
 Generic prompt box used by other templates
 
-    %TMPL:DEF{promptbox}%
-    <div class="commentPlugin commentPluginPromptBox">
-    <table><tr valign="middle"><td><textarea %DISABLED% rows="%rows|3%" cols="%cols|70%" name="comment" wrap="soft" onfocus="if(this.value=='%MESSAGE%')this.value=''" onblur="if(this.value=='')this.value='%MESSAGE%'">%MESSAGE%</textarea></td><td><input %DISABLED% type="submit" value="%button|Add comment%" /></td></tr></table>
-    </div><!--/commentPlugin-->
-    %TMPL:END%
+    %TMPL:DEF{promptbox}%<div class="commentPlugin commentPluginPromptBox"><table border="0" cellpadding="0" cellspacing="0"><tr valign="middle"><td><textarea %DISABLED% rows="%rows|3%" cols="%cols|70%" name="comment" class="twikiInputField" wrap="soft" onfocus="if(this.value=='%MESSAGE%')this.value=''" onblur="if(this.value=='')this.value='%MESSAGE%'">%MESSAGE%</textarea></td><td>&nbsp;<input %DISABLED% type="submit" value="%button|Add comment%" class="twikiButton" /></td></tr></table></div><!--/commentPlugin-->%TMPL:END%
 
 Short comment, signed and dated
 
-    %TMPL:DEF{outputoneliner}%   * %URLPARAM{"comment"}% -- %WIKIUSERNAME% - %SERVERTIME%%TMPL:END%
+    %TMPL:DEF{outputoneliner}%   * %URLPARAM{"comment"}% -- %WIKIUSERNAME% - %GMTIME{"$day $month $year"}%%TMPL:END%
 
-----
+<img src="http://www.dementia.org/twiki//view/Main/WebHome/hand.gif" width="16" height="16" alt="hand" /> See rendered template [[Default|Main/CommentPluginExamples#Default]]
 
-## <a name="User templates"></a> User templates
+### <a name="User templates"></a> User templates
 
-### <a name="top"></a> top
+#### <a name="top"></a> top
 
 Comments, signed and dated, added at top of file
 
@@ -60,9 +62,9 @@ Comments, signed and dated, added at top of file
     %TMPL:DEF{OUTPUT:top}%%TMPL:P{outputoneliner}%%POS:TOP%
     %TMPL:END%
 
-----
+<img src="http://www.dementia.org/twiki//view/Main/WebHome/hand.gif" width="16" height="16" alt="hand" /> See rendered template [[top|Main/CommentPluginExamples#top]]
 
-### <a name="bottom"></a> bottom
+#### <a name="bottom"></a> bottom
 
 Comments, signed and dated, added at end of file
 
@@ -70,20 +72,32 @@ Comments, signed and dated, added at end of file
 
     %TMPL:DEF{OUTPUT:bottom}%%POS:BOTTOM%%TMPL:P{outputoneliner}%%TMPL:END%
 
-----
+<img src="http://www.dementia.org/twiki//view/Main/WebHome/hand.gif" width="16" height="16" alt="hand" /> See rendered template [[bottom|Main/CommentPluginExamples#bottom]]
 
-### <a name="above"></a> above
+#### <a name="above"></a> above
 
 Comments, signed and dated, added immediately before anchor
 
     %TMPL:DEF{PROMPT:above}%%TMPL:P{promptbox}%%TMPL:END%
 
-    %TMPL:DEF{OUTPUT:above}%%POS:BEFORE%%TMPL:P{outputoneliner}%
+    %TMPL:DEF{OUTPUT:above}%%POS:BEFORE%%TMPL:P{OUTPUT:threadmode}%%TMPL:END%
+
+<img src="http://www.dementia.org/twiki//view/Main/WebHome/hand.gif" width="16" height="16" alt="hand" /> See rendered template [[above|Main/CommentPluginExamples#above]]
+
+#### <a name="bulletabove"></a> bulletabove
+
+Bullet item added immediately before anchor. The input field width is passed with variable `inputsize`, for example:
+
+> %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{OUTPUT:bulletabove}%   * %URLPARAM{"bullet_above_item"}%%POS:BEFORE%
     %TMPL:END%
 
-----
+<img src="http://www.dementia.org/twiki//view/Main/WebHome/hand.gif" width="16" height="16" alt="hand" /> See rendered template [[bulletabove|Main/CommentPluginExamples#bulletabove]]
 
-### <a name="threadmode"></a> threadmode
+#### <a name="threadmode"></a> threadmode
 
 Wiki thread mode comment, signed and dated
 
@@ -96,9 +110,24 @@ Wiki thread mode comment, signed and dated
     -- %WIKIUSERNAME% - %DATE%
     %TMPL:END%
 
-----
+<img src="http://www.dementia.org/twiki//view/Main/WebHome/hand.gif" width="16" height="16" alt="hand" /> See rendered template [[threadmode|Main/CommentPluginExamples#threadmode]]
+
+#### <a name="belowthreadmode"></a> belowthreadmode
+
+Comments, signed and dated, added recurse after comment box.
+
+    %TMPL:DEF{PROMPT:belowthreadmode}%%TMPL:P{promptbox}%%TMPL:END%
+
+    %TMPL:DEF{OUTPUT:belowthreadmode}%%POS:AFTER%
+    ---++++ %WIKIUSERNAME% - %SERVERTIME%
+
+    %URLPARAM{"comment"}%
+
+    %TMPL:END%
+
+<img src="http://www.dementia.org/twiki//view/Main/WebHome/hand.gif" width="16" height="16" alt="hand" /> See rendered template [[belowthreadmode|Main/CommentPluginExamples#belowthreadmode]]
 
-### <a name="below"></a> below
+#### <a name="below"></a> below
 
 Comments, signed and dated, added immediately below anchor
 
@@ -107,20 +136,20 @@ Comments, signed and dated, added immediately below anchor
     %TMPL:DEF{OUTPUT:below}%%POS:AFTER%%TMPL:P{outputoneliner}%
     %TMPL:END%
 
-----
+<img src="http://www.dementia.org/twiki//view/Main/WebHome/hand.gif" width="16" height="16" alt="hand" /> See rendered template [[below|Main/CommentPluginExamples#below]]
 
-### <a name="tableprepend"></a> tableprepend
+#### <a name="tableprepend"></a> tableprepend
 
 Comments, signed and dated, added at top of table below the anchor/location/COMMENT
 
     %TMPL:DEF{PROMPT:tableprepend}%%TMPL:P{promptbox}%%TMPL:END%
 
-    %TMPL:DEF{OUTPUT:tableprepend}%%POS:AFTER%| %URLPARAM{"comment" newline="<br />"}% </td><td> %WIKIUSERNAME% </td><td> %SERVERTIME% |
+    %TMPL:DEF{OUTPUT:tableprepend}%%POS:AFTER%| %URLPARAM{"comment" newline="<br />"}% | %WIKIUSERNAME% | %SERVERTIME% |
     %TMPL:END%
 
-----
+<img src="http://www.dementia.org/twiki//view/Main/WebHome/hand.gif" width="16" height="16" alt="hand" /> See rendered template [[tableprepend|Main/CommentPluginExamples#tableprepend]]
 
-### <a name="tableappend"></a> tableappend
+#### <a name="tableappend"></a> tableappend
 
 Comments, signed and dated, added at end of table above the anchor/location/COMMENT
 
@@ -129,93 +158,104 @@ Comments, signed and dated, added at end of table above the anchor/location/COMM
     %TMPL:DEF{OUTPUT:tableappend}%%POS:BEFORE%| %URLPARAM{"comment" newline="<br />"}% | %WIKIUSERNAME% | %SERVERTIME% |
     %TMPL:END%
 
-----
+<img src="http://www.dementia.org/twiki//view/Main/WebHome/hand.gif" width="16" height="16" alt="hand" /> See rendered template [[tableappend|Main/CommentPluginExamples#tableappend]]
 
-### <a name="after: Add before the comment bo"></a> after: Add before the comment box, after the last comment
+#### <a name="after: Add before the comment bo"></a> after: Add before the comment box, after the last comment
 
     %TMPL:DEF{PROMPT:after}%%TMPL:P{promptbox}%%TMPL:END%
 
-    %TMPL:DEF{OUTPUT:after}%%NOP%
-    %TMPL:P{outputoneliner}% %POS:BEFORE%%TMPL:END%
+    %TMPL:DEF{OUTPUT:after}%%NOP%%TMPL:P{outputoneliner}%
+    %POS:BEFORE%%TMPL:END%
 
-----
+<img src="http://www.dementia.org/twiki//view/Main/WebHome/hand.gif" width="16" height="16" alt="hand" /> See rendered template [[after|Main/CommentPluginExamples#after]]
 
-### <a name="action"></a> action
+#### <a name="action"></a> action
 
-Action added to action table directly above comment box
+Action added to action table directly above comment box (requires TWiki:Plugins/ActionTrackerPlugin)
 
     %TMPL:DEF{PROMPT:action}%
-    <table>
-     <tr>
-      <td align="right">Action for (%TWIKIWEB%.WikiName):</td>
-      <td><input name="who" type="text" size="50" value="%URLPARAM{"who"}%" /></td>
-     </tr>
-     <tr>
-      <td align="right">Due date:</td>
-      <td>
-       <input name="due" id="idDue" type="text" size="30" value="%URLPARAM{"due"}%" />
-      </td>
-     </tr>
-     <tr>
-      <td colspan="2">
-       <textarea %DISABLED% rows="5" cols="120" name="comment" wrap="soft"></textarea>
-      </td>
-     </tr>
-     <tr>
-      <td colspan=2 align=middle><input %DISABLED% type="submit" value="Add action" /></td>
-     </tr>
-    </table>
-    %TMPL:END%
-
-    %TMPL:DEF{OUTPUT:action}%%POS:BEFORE%%AC%NOP%TION{who="%URLPARAM{"who"}%" due="%URLPARAM{"due"}%"}% %URLPARAM{"comment" newline="<br />"}%<br />- Created by %WIKIUSERNAME%, %SERVERTIME%
-    %TMPL:END%
-
-----
-
-### <a name="table"></a> table
+
+    %TABLE{databg="#ffffff" tableborder="0" cellborder="0"}%
+    |        <label for="action_who">Action for</label>| <input class="twikiInputField" name="action_who" id="action_who" type="text" size="50" value="%URLPARAM{"who"}%" /> |
+    | <label for="action_due">Due date</label>| <input class="twikiInputField" name="action_due" id="action_due" type="text" size="30" value="%URLPARAM{"due"}%" /> |
+    |    <label for="action_comment">Comment</label>| <textarea %DISABLED% rows="%rows|3%" cols="%cols|50%" name="action_comment" id="action_comment" class="twikiInputField" wrap="soft" onfocus="if(this.value=='%MESSAGE%')this.value=''" onblur="if(this.value=='')this.value='%MESSAGE%'">%MESSAGE%</textarea> |
+    || <input %DISABLED% type="submit" class="twikiButton" value="Add action" /> |
+    %TMPL:END%
+
+    %TMPL:DEF{OUTPUT:action}%%POS:BEFORE%%AC%NOP%TION{who="%URLPARAM{"action_who"}%" due="%URLPARAM{"action_due"}%"}% %URLPARAM{"action_comment" newline="<br />"}%<br />- Created by %WIKIUSERNAME%, %SERVERTIME%
+    %TMPL:END%
+
+<img src="http://www.dementia.org/twiki//view/Main/WebHome/hand.gif" width="16" height="16" alt="hand" /> See rendered template [[action|Main/CommentPluginExamples#action]]
+
+#### <a name="table"></a> table
 
 Tablerows adding on end - TWiki:Main/FranzJosefSilli
 
     %TMPL:DEF{PROMPT:table}%
-    <hr width="60%" /> Date: <input %DISABLED% type="text" size="40" name="comment_date" /> <br /> City: <input %DISABLED% type="text" size="40" name="comment_city" value="" /> <input %DISABLED% type="submit" value="%button|Add%" /> entry <hr width="90%" />
+    %TABLE{databg="#ffffff" tableborder="0" cellborder="0"}%
+    |        <label for="comment_date">Date</label>| <input class="twikiInputField" %DISABLED% type="text" size="40" name="comment_date" id="comment_date" /> |
+    |        <label for="comment_city">City</label>| <input class="twikiInputField" %DISABLED% type="text" size="40" name="comment_city" id="comment_city" value="" /> |
+    || <input %DISABLED% type="submit" class="twikiButton" value="%button|Add entry%" /> |
     %TMPL:END%
 
-    %TMPL:DEF{OUTPUT:table}%
-    %POS:BEFORE%| %URLPARAM{"comment_date"}% | %WIKIUSERNAME% | %URLPARAM{"comment_city" }% |
+    %TMPL:DEF{OUTPUT:table}%%POS:BEFORE%| %URLPARAM{"comment_date"}% | %WIKIUSERNAME% | %URLPARAM{"comment_city" }% |
     %TMPL:END%
 
-----
+<img src="http://www.dementia.org/twiki//view/Main/WebHome/hand.gif" width="16" height="16" alt="hand" /> See rendered template [[table|Main/CommentPluginExamples#table]]
 
-### <a name="toctalk"></a> toctalk
+#### <a name="toctalk"></a> toctalk
 
 Talk using TOC adding on end - TWiki:Main/FranzJosefSilli
 
     %TMPL:DEF{PROMPT:toctalk}%
-    <hr width="60%" /> Summary: <input %DISABLED% type="text" size="40" name="comment_summary" /> <br /> <textarea %DISABLED% rows="%rows|3%" cols="%cols|50%" name="comment_text" wrap="soft" onfocus="if(this.value=='%MESSAGE%')this.value=''" onblur="if(this.value=='')this.value='%MESSAGE%'">%MESSAGE%</textarea> <br /> <input %DISABLED% type="submit" value="%button|Add%" /> <hr width="90%" />
+    %TABLE{databg="#ffffff" tableborder="0" cellborder="0"}%
+    |        <label for="comment_summary">Summary</label>| <input class="twikiInputField" %DISABLED% type="text" size="40" name="comment_summary" id="comment_summary" /> |
+    |        <label for="toctalk_comment_text">Message</label>| <textarea %DISABLED% rows="%rows|3%" cols="%cols|50%" name="toctalk_comment_text" id="toctalk_comment_text" class="twikiInputField" wrap="soft" onfocus="if(this.value=='%MESSAGE%')this.value=''" onblur="if(this.value=='')this.value='%MESSAGE%'">%MESSAGE%</textarea> |
+    || <input %DISABLED% type="submit" value="%button|Add%" class="twikiButton" /> |
     %TMPL:END%
 
     %TMPL:DEF{OUTPUT:toctalk}%
-    %POS:BEFORE%---+++ %SERVERTIME% %WIKIUSERNAME%: %URLPARAM{"comment_summary"}%
-    %POS:BEFORE%%URLPARAM{"comment_text" }%
+    %POS:BEFORE%---++++ %SERVERTIME% %WIKIUSERNAME%: %URLPARAM{"comment_summary"}%
+    %POS:BEFORE%%URLPARAM{"toctalk_comment_text" }%
     %POS:BEFORE%
     %TMPL:END%
 
-----
+<img src="http://www.dementia.org/twiki//view/Main/WebHome/hand.gif" width="16" height="16" alt="hand" /> See rendered template [[toctalk|Main/CommentPluginExamples#toctalk]]
 
-### <a name="bookmark"></a> bookmark
+#### <a name="bookmark"></a> bookmark
 
 Talk using TOC adding on end - TWiki:Main/FranzJosefSilli
 
     %TMPL:DEF{PROMPT:bookmark}%
-    <hr width="60%" /> URL: <input %DISABLED% type="text" size="40" name="comment_url" value="http://" /> <br /> Link: <input %DISABLED% type="text" size="40" name="comment_link" /> <br /> Text: <input %DISABLED% type="text" size="40" name="comment_text" value="%MESSAGE%" /> <input %DISABLED% type="submit" value="%button|Add%" /> bookmark <hr width="90%" />
+    %TABLE{databg="#ffffff" tableborder="0" cellborder="0"}%
+    |        <label for="comment_url">Url</label>| <input class="twikiInputField" %DISABLED% type="text" size="40" name="comment_url" id="comment_url" value="http://" /> |
+    | <label for="comment_link">Link label</label>| <input class="twikiInputField" %DISABLED% type="text" size="40" name="comment_link" id="comment_link" /> |
+    |    <label for="bookmark_comment_text">Comment</label>| <input class="twikiInputField" %DISABLED% type="text" size="40" name="bookmark_comment_text" id="bookmark_comment_text" value="%MESSAGE%" /> |
+    || <input %DISABLED% type="submit" value="%button|Add bookmark%" class="twikiButton" /> |
     %TMPL:END%
 
-    %TMPL:DEF{OUTPUT:bookmark}%
-    %POS:BEFORE%   * [[%URLPARAM{"comment_url"}%][%URLPARAM{"comment_link"}%]] - %URLPARAM{"comment_text" }%
+    %TMPL:DEF{OUTPUT:bookmark}%%POS:BEFORE%   * [[%URLPARAM{"comment_url" encode="entity"}%][%URLPARAM{"comment_link" encode="entity"}%]] %IF{" '%URLPARAM{"bookmark_comment_text" encode="entity"}%' = '' " then="" else="- "}%%URLPARAM{"bookmark_comment_text" encode="entity"}%
     %TMPL:END%
 
-# <a name="Include _UserCommentsTemplate"></a> Include UserCommentsTemplate
+<img src="http://www.dementia.org/twiki//view/Main/WebHome/hand.gif" width="16" height="16" alt="hand" /> See rendered template [[bookmark|Main/CommentPluginExamples#bookmark]]
+
+#### <a name="return"></a> return
+
+Post to a different topic and return to here. The comment `target` is set in the `PROMPT`. In the form below the `redirectto` is set to the current (including) topic. %RED% Available with TWiki 4.1. %ENDCOLOR%
+
+    %TMPL:DEF{returnpromptbox}%
+    <input type="hidden" name="redirectto" value="%BASEWEB%.%BASETOPIC%" />
+    %TMPL:P{promptbox}%
+    %TMPL:END%
+
+    %TMPL:DEF{PROMPT:return}%%TMPL:P{returnpromptbox}%%TMPL:END%
+
+    %TMPL:DEF{OUTPUT:return}%%POS:BEFORE%%TMPL:P{OUTPUT:threadmode}%%TMPL:END%
+
+<img src="http://www.dementia.org/twiki//view/Main/WebHome/hand.gif" width="16" height="16" alt="hand" /> See rendered template [[return|Main/CommentPluginExamples#return]]
+
+## <a name="Include _UserComments"></a> Include UserComments
 
-Including [[UserCommentsTemplate]]:
+Including [[UserComments]]:
 
 %TMPL:INCLUDE\{"UserComments"\}%
index 7eecafb..775ad2f 100644 (file)
@@ -37,7 +37,7 @@ Add a `%EDITTABLE{...}%` variable just before an existing table to make it edita
   </tr>
   <tr>
     <td><code>format</code></td>
-    <td> The format of one column when editing the table. A cell can be a text input field, or any of these edit field types:%BR% • Text input field (1 line):%BR%   <code>| text, &lt;size&gt;, &lt;initial value&gt; |</code> %BR% • Textarea input field:%BR%   <code>| textarea, &lt;rows&gt;x&lt;columns&gt;, &lt;initial value&gt; |</code> %BR% • Drop down box: %BR%   <code>| select, &lt;size&gt;, &lt;option 1&gt;, &lt;option 2&gt;, etc |</code> %BR% • Radio buttons: %BR%   <code>| radio, &lt;size*&gt;, &lt;option 1&gt;, &lt;option 2&gt;, etc |</code> %BR%   <code>*</code> size indicates the number of buttons per line in edit mode %BR% • Checkboxes: %BR%   <code>| checkbox, &lt;size*&gt;, &lt;option 1&gt;, &lt;option 2&gt;, etc |</code> %BR%   <code>*</code> size indicates the number of checkboxes per line in edit mode %BR% • Fixed label: %BR%   <code>| label, 0, &lt;label text&gt; |</code> %BR% • Row number: %BR%   <code>| row, &lt;offset&gt; |</code> %BR% • Date: %BR%   <code>| date, &lt;size&gt;, &lt;initial value&gt;, &lt;DHTML date format&gt; |</code> %BR%   <code>*</code> see <a href="http://www.dementia.org/twiki//view/TWiki/JSCalendarContrib/doc/html/reference.html" target="_top">Mishoo documentation</a> for more infos about the DHTML date format </td>
+    <td> The format of one column when editing the table. A cell can be a text input field, or any of these edit field types:%BR% • Text input field (1 line):%BR%   <code>| text, &lt;size&gt;, &lt;initial value&gt; |</code> %BR% • Textarea input field:%BR%   <code>| textarea, &lt;rows&gt;x&lt;columns&gt;, &lt;initial value&gt; |</code> %BR% • Drop down box: %BR%   <code>| select, &lt;size&gt;, &lt;option 1&gt;, &lt;option 2&gt;, etc* |</code> %BR%   <code>*</code> only one item can be selected %BR% • Radio buttons: %BR%   <code>| radio, &lt;size*&gt;, &lt;option 1&gt;, &lt;option 2&gt;, etc |</code> %BR%   <code>*</code> size indicates the number of buttons per line in edit mode %BR% • Checkboxes: %BR%   <code>| checkbox, &lt;size*&gt;, &lt;option 1&gt;, &lt;option 2&gt;, etc |</code> %BR%   <code>*</code> size indicates the number of checkboxes per line in edit mode %BR% • Fixed label: %BR%   <code>| label, 0, &lt;label text&gt; |</code> %BR% • Row number: %BR%   <code>| row, &lt;offset&gt; |</code> %BR% • Date: %BR%   <code>| date, &lt;size&gt;, &lt;initial value&gt;, &lt;DHTML date format&gt; |</code> %BR%   <code>*</code> see <a href="http://www.dementia.org/twiki//view/TWiki/JSCalendarContrib/doc/html/reference.html" target="_top">Mishoo documentation</a> for more infos about the DHTML date format </td>
     <td><code>"text, 16"</code> %BR% for all cells </td>
   </tr>
   <tr>
@@ -318,7 +318,7 @@ Plugin settings are stored as preferences variables. To reference a plugin setti
   </tr>
   <tr>
     <td align="right"> Plugin Version: </td>
-    <td> 11706 </td>
+    <td> 12327 </td>
   </tr>
   <tr>
     <td align="right"> Change History: </td>
index 080cd22..e004d24 100644 (file)
@@ -12,19 +12,6 @@ To create your own Plugin:
 
 (none)
 
-## <a name="Plugin Settings"></a> Plugin Settings
-
-Plugin settings are stored as preferences variables. To reference a plugin setting write <code>**%&lt;plugin&gt;\_&lt;setting&gt;%**</code>, i.e. <code>**%EMPTYPLUGIN\_SHORTDESCRIPTION%**</code>
-
-- One line description, is shown in the [[TextFormattingRules]] topic:
-  - Set SHORTDESCRIPTION = Empty Plugin used as a template for new Plugins
-
-- Your own setting, for example:
-  - Set EXAMPLE = got it!
-
-- Debug plugin: (See output in `data/debug.txt`)
-  - Set DEBUG = 0
-
 ## <a name="Plugin Installation Instructions"></a> Plugin Installation Instructions
 
 - This plugin is preinstalled, you do not need to install it.
index dd65552..b593369 100644 (file)
         <li><a href="#Deleting Attachments"> Deleting Attachments</a></li>
         <li><a href="#Linking to Attached Files"> Linking to Attached Files</a></li>
         <li><a href="#File Attachment Contents Table"> File Attachment Contents Table</a></li>
-        <li><a href="#File Attachment Controls"> File Attachment Controls</a></li>
+        <li><a href="#File Attachment Controls"> File Attachment Controls</a><ul>
+            <li><a href="#Attach new file"> Attach new file </a></li>
+            <li><a href="#Comment"> Comment </a></li>
+            <li><a href="#Properties"> Properties </a></li>
+          </ul>
+        </li>
         <li><a href="#Known Issues"> Known Issues</a></li>
       </ul>
     </li>
@@ -102,106 +107,67 @@ Move unwanted Attachments to web `Trash`, topic `TrashAttachment`.
 
 Files attached to a topic are displayed in a directory table, displayed at the bottom of the page, or optionally, hidden and accessed when you click **Attach**.
 
-> <table border="1" cellpadding="1" cellspacing="0">
->   <tr>
->     <th align="center" bgcolor="#99CCCC"><strong>I</strong></th>
->     <th align="center" bgcolor="#99CCCC"><strong>Attachment</strong></th>
->     <th align="center" bgcolor="#99CCCC"><strong>Action</strong></th>
->     <th align="center" bgcolor="#99CCCC"><strong>Size</strong></th>
->     <th align="center" bgcolor="#99CCCC"><strong>Date</strong></th>
->     <th align="center" bgcolor="#99CCCC"><strong>Who</strong></th>
->     <th align="center" bgcolor="#99CCCC"><strong>Comment</strong></th>
->   </tr>
->   <tr>
->     <td><img align="top" alt="txt" border="0" height="16" src="http://www.dementia.org/twiki//view/Main/WebHome/txt.gif" width="16" /></td>
->     <td><a href="http://www.dementia.org/twiki/viewfile/%WEB%/%TOPIC%?rev=&filename=Sample.txt">Sample.txt</a></td>
->     <td><a href="http://www.dementia.org/twiki/attach/%WEB%/%TOPIC%?filename=Sample.txt&revInfo=1">manage</a></td>
->     <td align="right"> 0.1 K </td>
->     <td> 22 Jul 2000 - 19:37 </td>
->     <td><a href="UploadingUser">UploadingUser</a></td>
->     <td> Just a sample </td>
->   </tr>
->   <tr>
->     <td><img align="top" alt="bmp" border="0" height="16" src="http://www.dementia.org/twiki//view/Main/WebHome/bmp.gif" width="16" /></td>
->     <td><a href="http://www.dementia.org/twiki/viewfile/%WEB%/%TOPIC%?rev=&filename=Smile.gif">Smile.gif</a></td>
->     <td><a href="http://www.dementia.org/twiki/attach/%WEB%/%TOPIC%?filename=Smile.gif&revInfo=1">manage</a></td>
->     <td align="right"> 0.1 K </td>
->     <td> 22 Jul 2000 - 19:38 </td>
->     <td><a href="UploadingUser">UploadingUser</a></td>
->     <td> Smiley face </td>
->   </tr>
-> </table>
+<div>
+  <table border="1" cellpadding="0" cellspacing="0" id="twikiAttachmentsTable" rules="rows" style="border-width: 1px" summary="Topic attachments">
+    <caption>Topic attachments</caption>
+    <tr>
+      <th align="center" bgcolor="#ffffff" style="text-align: center; vertical-align: middle" valign="middle"><a href="%TOPIC%?sortcol=0;table=1;up=0#sorted_table" rel="nofollow" title="Sort by this column"><font color="#0066cc">I</font></a></th>
+      <th align="center" bgcolor="#ffffff" style="text-align: center; vertical-align: middle" valign="middle"><a href="%TOPIC%?sortcol=1;table=1;up=0#sorted_table" rel="nofollow" title="Sort by this column"><font color="#0066cc">Attachment</font></a></th>
+      <th align="center" bgcolor="#ffffff" style="text-align: center; vertical-align: middle" valign="middle"><a href="%TOPIC%?sortcol=2;table=1;up=0#sorted_table" rel="nofollow" title="Sort by this column"><font color="#0066cc">Action</font></a></th>
+      <th align="center" bgcolor="#ffffff" style="text-align: center; vertical-align: middle" valign="middle"><a href="%TOPIC%?sortcol=3;table=1;up=0#sorted_table" rel="nofollow" title="Sort by this column"><font color="#0066cc">Size</font></a></th>
+      <th align="center" bgcolor="#ffffff" style="text-align: center; vertical-align: middle" valign="middle"><a href="%TOPIC%?sortcol=4;table=1;up=0#sorted_table" rel="nofollow" title="Sort by this column"><font color="#0066cc">Date</font></a></th>
+      <th align="center" bgcolor="#ffffff" style="text-align: center; vertical-align: middle" valign="middle"><a href="%TOPIC%?sortcol=5;table=1;up=0#sorted_table" rel="nofollow" title="Sort by this column"><font color="#0066cc">Who</font></a></th>
+      <th align="center" bgcolor="#ffffff" style="text-align: center; vertical-align: middle" valign="middle"><a href="%TOPIC%?sortcol=6;table=1;up=0#sorted_table" rel="nofollow" title="Sort by this column"><font color="#0066cc">Comment</font></a></th>
+    </tr>
+    <tr>
+      <td align="center" bgcolor="#ffffff" style="text-align: center; vertical-align: top" valign="top"><img align="top" alt="txt" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/txt.gif" width="16" /><span>txt</span></td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"><a href="/twiki4/MAIN/bin/viewfile/TWiki/FileAttachment?rev=;filename=Sample.txt">Sample.txt</a></td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"><a href="/twiki4/MAIN/bin/attach/TWiki/FileAttachment?filename=Sample.txt&revInfo=1" rel="nofollow" title="change, update, previous revisions, move, delete...">manage</a></td>
+      <td align="right" bgcolor="#ffffff" style="text-align: right; vertical-align: top" valign="top"> 0.1 K </td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"> 22 Jul 2000 - 19:37 </td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"><a href="TWikiContributor">TWikiContributor</a></td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"> Just a sample </td>
+    </tr>
+    <tr>
+      <td align="center" bgcolor="#ffffff" style="text-align: center; vertical-align: top" valign="top"><img align="top" alt="gif" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/gif.gif" width="16" /><span>gif</span></td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"><a href="/twiki4/MAIN/bin/viewfile/TWiki/FileAttachment?rev=;filename=Smile.gif">Smile.gif</a></td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"><a href="/twiki4/MAIN/bin/attach/TWiki/FileAttachment?filename=Smile.gif&revInfo=1" rel="nofollow" title="change, update, previous revisions, move, delete...">manage</a></td>
+      <td align="right" bgcolor="#ffffff" style="text-align: right; vertical-align: top" valign="top"> 0.1 K </td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"> 22 Jul 2000 - 19:38 </td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"><a href="TWikiContributor">TWikiContributor</a></td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"> Smiley face </td>
+    </tr>
+  </table>
+</div>
 
 ## <a name="File Attachment Controls"></a> File Attachment Controls
 
 Clicking on a <code>**Manage**</code> link takes you to a new page that looks a bit like this (depending on what [[skin|Main/TWikiSkins]] is selected):
 
-> <form>
->   <table border="1" cellpadding="20" cellspacing="0">
->     <tr>
->       <td>
->         <h2>Update attachment <code>Sample.txt</code></h2>
->         <div>
->           <table border="1" cellpadding="1" cellspacing="0">
->             <tr>
->               <th align="center" bgcolor="#99CCCC"><strong>Version</strong></th>
->               <th align="center" bgcolor="#99CCCC"><strong>Action</strong></th>
->               <th align="center" bgcolor="#99CCCC"><strong>Date</strong></th>
->               <th align="center" bgcolor="#99CCCC"><strong>Who</strong></th>
->               <th align="center" bgcolor="#99CCCC"><strong>Comment</strong></th>
->             </tr>
->             <tr>
->               <td> 1 </td>
->               <td><a href="http://www.dementia.org/twiki/viewfile/%WEB%/%TOPIC%?rev=1&filename=Sample.txt">view</a></td>
->               <td> 22 Jul 2000 - 19:37 </td>
->               <td><a href="UploadingUser">UploadingUser</a></td>
->               <td> Just a sample </td>
->             </tr>
->           </table>
->         </div>
->         <p>
->         </p>
->         <div>
->           <table>
->             <tr>
->               <th>Previous upload</th>
->               <td><code>Sample.txt</code> <span>(<a href="http://visiblearea.com/devtwiki/bin/view/Main/TWikiContributor">TWikiContributor</a>)</span></td>
->               <td>Select a new local file to update this attachment.</td>
->             </tr>
->             <tr>
->               <th> Local file </th>
->               <td><input name="filename" type="hidden" value="Sample.txt" /><input name="filepath" size="30" type="file" value="Sample.txt" /></td>
->               <td> Upload up to 10000 KB. </td>
->             </tr>
->             <tr>
->               <th> Comment </th>
->               <td><input maxlength="256" name="filecomment" size="50" type="text" value="Just a sample" /></td>
->               <td>
->               </td>
->             </tr>
->             <tr>
->               <th> Link </th>
->               <td><input id="createlink" name="createlink" type="checkbox" /><label for="createlink">Create a link to the attached file</label>
->               </td>
->               <td> Images will be displayed, for other attachments a link will be created. </td>
->             </tr>
->             <tr>
->               <th> Hide file </th>
->               <td><input id="hidefile" name="hidefile" type="checkbox" /><label for="hidefile">Do not show attachment in table</label>
->               </td>
->               <td>Attachments will not be shown in topic view page.</td>
->             </tr>
->             <tr>
->               <th>
->               </th>
->               <td colspan="2"><input name="changeproperties" type="submit" value="Change properties only" /></td>
->             </tr>
->           </table>
->         </div>
->       </td>
->     </tr>
->   </table>
-> </form>
+<div>
+  <div>
+    <h3><a name="Attach new file"></a><a name=" Attach new file"></a> <a name="Attach_new_file"></a> Attach new file </h3>
+    <p> Select a new local file to update attachment <code>Sample.txt</code> <span>(<a href="#">UploadingUser</a>)</span><br />Upload up to 10000 KB. </p>
+    <p>
+    </p><input name="filepath" size="30" type="file" value="Sample.txt" /><input name="filename" type="hidden" value="Sample.txt" /></div>
+  <div>
+    <h3><a name="Comment"></a><a name=" Comment"></a> <a name="Comment"></a> Comment </h3>
+    <p> Describe the file so other people know what it is. </p>
+    <p>
+    </p><input maxlength="256" name="filecomment" size="50" type="text" value="Just a sample" /></div>
+  <div>
+    <h3><a name="Properties"></a><a name=" Properties"></a> <a name="Properties"></a> Properties </h3>
+    <p>
+    </p><input id="createlink" name="createlink" type="checkbox" /><label for="createlink">Create a link to the attached file</label><span>Images will be displayed, for other attachments a link will be created.</span><p>
+    </p><input id="hidefile" name="hidefile" type="checkbox" /><label for="hidefile">Do not show attachment in table</label><span>Attachments will not be shown in topic view page.</span></div>
+  <div><input name="changeproperties" type="submit" value="Change comment and properties only" /></div>
+</div>
+
+<a name="topic-actions"> </a>
+
+<div>
+  <div style="margin-top: -1px"><span> <input type="submit" value="Upload file" /> or <a accesskey="c" href="#" rel="nofollow" title="Back to topic"><span class="twikiAccessKey">C</span>ancel</a></span></div>
+</div>
 
 - The first table is a list of all attachments, including their attributes. An `h` means the attachment is hidden, it isn't listed when viewing a topic.
 
index 8e67893..81fb00c 100644 (file)
@@ -1,7 +1,11 @@
 <div>
   <ul>
     <li><a href="#TWiki Formatted Search"> TWiki Formatted Search</a><ul>
-        <li><a href="#Syntax"> Syntax</a></li>
+        <li><a href="#Syntax"> Syntax</a><ul>
+            <li><a href="#1. <code>header="..."</code> parameter"> 1. header="..." parameter</a></li>
+            <li><a href="#2. <code>format="..."</code> parameter"> 2. format="..." parameter</a></li>
+          </ul>
+        </li>
         <li><a href="#Examples"> Examples</a><ul>
             <li><a href="#Bullet list showing topic name a"> Bullet list showing topic name and summary</a></li>
           </ul>
@@ -63,11 +67,44 @@ The default output format of a <code>[[%SEARCH{...}%|Main/VarSEARCH]]</code> is
 
 Two parameters can be used to specify a customized search result:
 
-1. `header="..."` parameter
+### <a name="1. &lt;code&gt;header=&quot;...&quot;&lt;/code&gt; parameter"></a> 1. `header="..."` parameter
 
 Use the header parameter to specify the header of a search result. It should correspond to the format of the format parameter. This parameter is optional. <br /> Example: `header="| *Topic:* | *Summary:* |"`
 
-2. `format="..."` parameter
+Variables that can be used in the header string:
+
+<table border="1" cellpadding="0" cellspacing="0">
+  <tr>
+    <th bgcolor="#99CCCC"><strong> Name: </strong></th>
+    <th bgcolor="#99CCCC"><strong> Expands To: </strong></th>
+  </tr>
+  <tr>
+    <td><code>$web</code></td>
+    <td> Name of the web </td>
+  </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". This variable gets removed; useful for nested search </td>
+  </tr>
+  <tr>
+    <td><code>$quot</code></td>
+    <td> Double quote (<code>"</code>). Alternatively write <code>\"</code> to escape it </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="2. &lt;code&gt;format=&quot;...&quot;&lt;/code&gt; parameter"></a> 2. `format="..."` parameter
 
 Use the format parameter to specify the format of one search hit. <br /> Example: `format="| $topic | $summary |"`
 
@@ -116,11 +153,11 @@ Variables that can be used in the format string:
   </tr>
   <tr>
     <td><code>$date</code></td>
-    <td> Time stamp of last topic update, e.g. <code>29 Jun 2010 - 15:58</code></td>
+    <td> Time stamp of last topic update, e.g. <code>29 Jun 2010 - 16:02</code></td>
   </tr>
   <tr>
     <td><code>$isodate</code></td>
-    <td> Time stamp of last topic update, e.g. <code>2010-06-29T15:58Z</code></td>
+    <td> Time stamp of last topic update, e.g. <code>2010-06-29T16:02Z</code></td>
   </tr>
   <tr>
     <td><code>$rev</code></td>
@@ -230,6 +267,8 @@ Variables that can be used in the format string:
 
 ## <a name="Examples"></a> Examples
 
+Here are some samples of formatted searches. The [[SearchPatternCookbook]] has other examples, such as [[creating a picklist of usernames|Main/SearchPatternCookbook#SearchUsernames]], [[searching for topic children|Main/SearchPatternCookbook#SearchTopicChildren]] and more.
+
 <a name="SearchBulletList"></a>
 
 ### <a name="Bullet list showing topic name a"></a> Bullet list showing topic name and summary
@@ -248,7 +287,7 @@ Incorrect format of searchformat template (missing sections? There should be 4 %
 
 In a web where there is a form that contains a `TopicClassification` field, an `OperatingSystem` field and an `OsVersion` field we could write:
 
-`| *Topic:* | *OperatingSystem:* | *OsVersion:* |`<br />`%SEARCH{ "[T]opicClassification.*?value=\"[P]ublicFAQ\"" scope="text" regex="on" nosearch="on" nototal="on" format="| [[$topic]] | $formfield(OperatingSystem) | $formfield(OsVersion) |" }%`
+`| *Topic:* | *OperatingSystem:* | *OsVersion:* |`<br />`%SEARCH{ "[T]opicClassification.*?value=\"[P]ublicFAQ\"" scope="text" type="regex" nosearch="on" nototal="on" format="| [[$topic]] | $formfield(OperatingSystem) | $formfield(OsVersion) |" }%`
 
 To get this:
 
@@ -274,7 +313,7 @@ To get this:
 
 **Write this:**
 
-`%SEARCH{ "__Back to\:__ TWikiFAQ" scope="text" regex="on" nosearch="on" nototal="on" header="TWiki FAQs:" format="   * $pattern(.*?FAQ\:[\n\r]*([^\n\r]+).*) [[$topic][Answer...]]" }%`
+`%SEARCH{ "__Back to\:__ TWikiFAQ" scope="text" type="regex" nosearch="on" nototal="on" header="TWiki FAQs:" format="   * $pattern(.*?FAQ\:[\n\r]*([^\n\r]+).*) [[$topic][Answer...]]" }%`
 
 **To get this:**
 
@@ -314,7 +353,7 @@ Incorrect format of searchformat template (missing sections? There should be 4 %
 
 **Write this:**
 
-`%SEARCH{ "\.*" scope="topic" regex="on" nosearch="on" nototal="on" order="modified" reverse="on"  format="| [[$topic]] | $wikiusername  | $date |" limit="7" }%`
+`%SEARCH{ "\.*" scope="topic" type="regex" nosearch="on" nototal="on" order="modified" reverse="on"  format="| [[$topic]] | $wikiusername  | $date |" limit="7" }%`
 
 **To get this:**
 
@@ -335,7 +374,7 @@ This requires the TWiki:Plugins.SpreadSheetPlugin. The following example shows a
 
 **Write this:**
 
-`%CALC{$SET(weekold, $TIMEADD($TIME(), -7, day))}%` %BR% `%SEARCH{ "." scope="topic" regex="on" nosearch="on" nototal="on" order="modified" reverse="on" format="$percntCALC{$IF($TIME($date) < $GET(weekold), <nop>, | [[$topic]] | $wikiusername | $date | $rev |)}$percnt" limit="100" }%`
+`%CALC{$SET(weekold, $TIMEADD($TIME(), -7, day))}%` %BR% `%SEARCH{ "." scope="topic" type="regex" nosearch="on" nototal="on" order="modified" reverse="on" format="$percntCALC{$IF($TIME($date) < $GET(weekold), <nop>, | [[$topic]] | $wikiusername | $date | $rev |)}$percnt" limit="100" }%`
 
 - The first line sets the `weekold` variable to the serialized date of exactly one week ago
 - The SEARCH has a deferred CALC. The `$percnt` makes sure that the CALC gets executed once for each search hit
@@ -372,4 +411,6 @@ Result:
 
 Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags)
 
-**_Related Topics:_** [[UserDocumentationCategory]]
+**_Related Topics:_** [[UserDocumentationCategory]], [[SearchHelp]], [[TWikiVariables#VarSEARCH]], [[SearchPatternCookbook]], [[RegularExpression]]
+
+-- **_Contributors:_** TWiki:Main.PeterThoeny, TWiki:Main.CrawfordCurrie
index b40514c..eedae2c 100644 (file)
@@ -14,6 +14,9 @@ Enter part of a topic name to get a list of similar topics, for example:
 - **faq** to get
 # TWiki Installation Error
 Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags)
+- **Main.users** to jump to the Main web from any web, and get a list of topics about users (all in one step)
+
+**_%T% Tip:_** Entering part of a topic name is a simple, yet powerful way to quickly navigate to content of interest, also in a large wiki.
 
 **_Note:_** The Go box is not a search box
 
diff --git a/TWiki/HierarchicalNavigation.mdwn b/TWiki/HierarchicalNavigation.mdwn
new file mode 100644 (file)
index 0000000..71b9f9b
--- /dev/null
@@ -0,0 +1,73 @@
+# <a name="Hierarchical Navigation"></a><a name=" Hierarchical Navigation"></a> Hierarchical Navigation
+
+**Navigation block that displays the current topic, its parent and children (if any).** %BR% This is intended to be included in other topics, for example in a side navigation bar ([[WebLeftBar]]).
+
+_NOTE: The lookup for parent and children will increase the loading time of your pages._
+
+<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>
+      </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>
+
+## <a name="Usage"></a> Usage
+
+Two sections are defined:
+
+- `all`
+- `children`
+
+### <a name="Displaying the Parent - Current"></a><a name="Displaying the Parent - Current "></a> Displaying the Parent - Current - Children block
+
+> %INCLUDE{"%TWIKIWEB%.HierarchicalNavigation" section="all"}%
+
+generates:
+
+When included in [[WebLeftBar]] (using default Pattern skin) this is styled to:
+
+<div id="patternLeftBarContents">
+  <p>
+  </p>
+</div>
+
+### <a name="Displaying child topics"></a> Displaying child topics
+
+> *Child topics:*
+>     %INCLUDE{"%TWIKIWEB%.HierarchicalNavigation" section="children"}%
+
+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>
+  <p>
+  </p>
+</div>
diff --git a/TWiki/HierarchicalNavigationChildExample.mdwn b/TWiki/HierarchicalNavigationChildExample.mdwn
new file mode 100644 (file)
index 0000000..89e038d
--- /dev/null
@@ -0,0 +1 @@
+Example child topic for [[HierarchicalNavigation]].
index c7b524c..fe82665 100644 (file)
@@ -1,3 +1,5 @@
+# <a name="=IF= Statements"></a> `IF` Statements
+
 The `%IF%` construct gives TWiki the power to include content in topics based on the value of simple expressions.
 
 `%IF{"CONDITION" then="THEN" else="ELSE"}%`
@@ -73,7 +75,7 @@ examples:
     Text comparison
     %IF{ "$'URLPARAM{scope}'='text'" then="Plain text search" }%
 
-**Configuration items** are defined in `configure`. You cannot see the value of a configuration item, you can only see if the item is set or not.
+**Configuration items** are defined in [configure](http://www.dementia.org/twiki/configure). You cannot see the value of a configuration item, you can only see if the item is set or not.
 
 **Context identifiers** are used in TWiki to label various stages of the rendering process. They are especially useful for [[skin|Main/TWikiSkins]] authors to find out where they are in the rendering process. The following context identifiers are available:
 
index 795bbd3..ef7f6b0 100644 (file)
@@ -1,6 +1,6 @@
 # <a name="Installed Plugins"></a> Installed Plugins
 
-Plugins are mainly user-contributed add-ons that enhance and extend TWiki features and capabilities. A limited number of plugins are included in the core TWiki distribution - and any those can be removed - while the rest are optional, available from TWiki:Plugins.PluginPackage.
+Plugins are mainly user-contributed add-ons that enhance and extend TWiki features and capabilities. A limited number of plugins are included in the core TWiki distribution - and any of those can be removed - while the rest are optional, available from TWiki:Plugins.PluginPackage.
 
 Here is a list of the plugins currently installed and enabled on this TWiki site:
 
index 6e1c526..b6d91ff 100644 (file)
@@ -168,7 +168,7 @@ The SEARCH variable has many more formatting options, see [[TWikiVariables]].
 Here are the last 15 changed pages, formatted into a neat table.
 
     <table>
-    %SEARCH{ "\.*" scope="topic" regex="on" nosearch="on" nototal="on" order="modified" reverse="on"  format="<tr><td>  [[$topic][$topic]] </td><td>  $wikiusername  </td><td> $date  </td></tr>" limit="15" }%
+    %SEARCH{ "\.*" scope="topic" type="regex" nosearch="on" nototal="on" order="modified" reverse="on"  format="<tr><td>  [[$topic][$topic]] </td><td>  $wikiusername  </td><td> $date  </td></tr>" limit="15" }%
     </table>
 
 ----
index b3cd8d2..a605ce0 100644 (file)
@@ -8,6 +8,7 @@ Whenever you write <code>**ExternalSite:Page**</code> it will be linked automati
 
 - Inter-Site links are defined in the tables below.
 - Each entry must be of format: <br /><code>**| External site alias | URL | Tooltip help text |**</code>.
+- The Alias must start with an upper case letter and may contain alphanumeric letters.
 - The URL and Tooltip Text may contain optional <code>**$page**</code> variables; the variable gets expanded to the page name.
 - **_Note:_** The Tooltip Text must not contain any HTML tags (including <code>**&lt;nop&gt;**</code> escape code), no internal [[WikiWord]] links, and no external links. Hint: Escape <code>**'WikiWords'**</code> and <code>**'$page'**</code>.
 
index 3b9fe3f..1e74aae 100644 (file)
@@ -14,8 +14,12 @@ The %TOPIC% links <code>**ExternalSite:Page**</code> text to external sites base
 ## <a name="Syntax Rules"></a> Syntax Rules
 
 - Enter <code>**ExternalSite:Page**</code> to create a link that points to the <code>**Page**</code> on the <code>**ExternalSite**</code> server.
+- Enter <code>**\[[ExternalSite:Page]\[any label]]**</code> to specify a custom label.
 - All <code>**ExternalSite**</code> aliases are defined in the [[InterWikis]] topic.
 - Add and edit aliases in [[InterWikis]].
+- Each entry must be of format: <br /><code>**| External site alias | URL | Tooltip help text |**</code>.
+- Site aliases must start with an upper case letter and may contain alphanumeric letters.
+- The URL and Tooltip Text may contain optional <code>**$page**</code> variables; the variable gets expanded to the page name.
 - %H% For TWiki sites, both the **web** and the **topic** have to be specified: <code>**TWikisite:Webname/SomePage**</code>
   - TWiki:Plugins/InterwikiPlugin or TWiki:Plugins.InterwikiPlugin
 
@@ -29,8 +33,29 @@ Plugin settings are stored as Preferences variables. To reference a plugin setti
 - Link rules topic name: (default is [[InterWikis]])
   - Set RULESTOPIC =
 
-- Suppress tooltip help for links: (<code>****</code> or <code>**1**</code>, default is <code>****</code>)
-  - Set SUPPRESSTOOLTIP = 0
+- Inter-link format, with variables: <table border="1" cellpadding="0" cellspacing="0">
+  <tr>
+    <td> $site </td>
+    <td> Site alias </td>
+  </tr>
+  <tr>
+    <td> $page </td>
+    <td> Page (part after colon) </td>
+  </tr>
+  <tr>
+    <td> $url </td>
+    <td> Site URL (might contain $page) </td>
+  </tr>
+  <tr>
+    <td> $label </td>
+    <td> Equal to $site:$page </td>
+  </tr>
+  <tr>
+    <td> $tooltip </td>
+    <td> Tooltip message </td>
+  </tr>
+</table>
+  - Set INTERLINKFORMAT = [$label]($url $tooltip)
 
 ## <a name="Plugin Installation Instructions"></a> Plugin Installation Instructions
 
@@ -65,14 +90,30 @@ Plugin settings are stored as Preferences variables. To reference a plugin setti
     <td> TWiki:Main.AndreaSterbini, TWiki:Main.PeterThoeny </td>
   </tr>
   <tr>
+    <td align="right"> Copyright: </td>
+    <td> © 2006, TWiki:Main.AndreaSterbini, <a href="http://www.structuredwikis.com/" target="_top">Peter Thoeny</a></td>
+  </tr>
+  <tr>
+    <td align="right"> License: </td>
+    <td> GPL (<a href="http://www.gnu.org/copyleft/gpl.html" target="_top">GNU General Public License</a>) </td>
+  </tr>
+  <tr>
     <td align="right"> Plugin Version: </td>
-    <td> 1.008 </td>
+    <td> 11935 </td>
   </tr>
   <tr>
     <td align="right"> Change History: </td>
     <td>  </td>
   </tr>
   <tr>
+    <td align="right"> 08 Nov 2006: </td>
+    <td> 11935 - Added css <code></code> (TWiki:Main.PeterThoeny) </td>
+  </tr>
+  <tr>
+    <td align="right"> 07 Nov 2006: </td>
+    <td> 11924 - Added INTERLINKFORMAT; removed redundant SUPPRESSTOOLTIP; allow @ signs in page part of interwiki link; support single digit page part (TWiki:Main.PeterThoeny) </td>
+  </tr>
+  <tr>
     <td align="right"> 26 Feb 2005: </td>
     <td> 1.008 TWiki:Main.CrawfordCurrie cleaned up code and made Dakar-ready </td>
   </tr>
@@ -86,7 +127,7 @@ Plugin settings are stored as Preferences variables. To reference a plugin setti
   </tr>
   <tr>
     <td align="right"> 16 Feb 2004: </td>
-    <td> Support <code>[[Site:Page][label]]</code> Interwiki links (PTh); use TWiki::Func interface for [[Main/I18N]] regular expressions (Walter Mundt) </td>
+    <td> Support <code>[[Site:Page][label]]</code> Interwiki links (PTh); use TWiki::Func interface for I18N regular expressions (Walter Mundt) </td>
   </tr>
   <tr>
     <td align="right"> 18 Jan 2003: </td>
@@ -137,13 +178,23 @@ Plugin settings are stored as Preferences variables. To reference a plugin setti
     <td> 5.0 </td>
   </tr>
   <tr>
+    <td align="right">[[TWiki:Plugins/Benchmark]]: </td>
+    <td>[[TWiki/GoodStyle]] 100%, [[TWiki/FormattedSearch]] 98%, %TOPIC% 98% </td>
+  </tr>
+  <tr>
     <td align="right"> Plugin Home: </td>
-    <td> TWiki:Plugins/%TOPIC% (TWiki:Plugins/%TOPIC%) </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 align="right"> Feedback: </td>
-    <td> TWiki:Plugins/%TOPIC%Dev (TWiki:Plugins/%TOPIC%Dev) </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 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>
 
-**_Related Topics:_** [[InterWikis]], [[TWikiPreferences]], [[TWikiPlugins]]
+**_Related Topics:_** [[TWikiPlugins]], [[DeveloperDocumentationCategory]], [[AdminDocumentationCategory]], [[TWikiPreferences]], [[InterWikis]]
+
+-- TWiki:Main.PeterThoeny - 08 Nov 2006
index 58514f0..a534b61 100644 (file)
@@ -22,6 +22,8 @@ This module packages the [Mishoo JSCalendar](http://dynarch.com/mishoo/calendar.
 
 Read [the Mishoo documentation](http://www.dementia.org/twiki//view/doc/html/reference.html) or [visit the demo page](http://www.dementia.org/twiki//view).
 
+This package provides a `renderFormFieldForEditHandler` that could be invoked by a plugin to ensure that forms use the [Mishoo JSCalendar](http://dynarch.com/mishoo/calendar.epl) for editing.
+
 This package also includes a small Perl module to make using the calendar easier from TWiki plugins. This module includes the function:
 
     addHEAD( $setup )
@@ -445,6 +447,24 @@ Note that the header will only be added once, regardless of the number of times
 </table>
 
 - Make sure that all files are readable by the web server user
+- An administrator can customize the appearance of the calendar by setting the following in `LocalSite.cfg`<table border="1" cellpadding="0" cellspacing="0">
+  <tr>
+    <th bgcolor="#99CCCC"><strong> Setting </strong></th>
+    <th bgcolor="#99CCCC"><strong> Default </strong></th>
+  </tr>
+  <tr>
+    <td><code>$TWiki::cfg{JSCalendarContrib}{style}</code></td>
+    <td><code>'blue'</code></td>
+  </tr>
+  <tr>
+    <td><code>$TWiki::cfg{JSCalendarContrib}{lang}</code></td>
+    <td><code>'en'</code></td>
+  </tr>
+  <tr>
+    <td><code>$TWiki::cfg{JSCalendarContrib}{format}</code></td>
+    <td><code>'%e %b %Y'</code></td>
+  </tr>
+</table>
 
 ### <a name="Contrib Info"></a> Contrib Info
 
@@ -455,7 +475,7 @@ Note that the header will only be added once, regardless of the number of times
   </tr>
   <tr>
     <td align="right"> Version: </td>
-    <td> 10613 of the Mishoo calendar </td>
+    <td> 11704 of the Mishoo calendar </td>
   </tr>
   <tr>
     <td align="right"> Copyright ©: </td>
@@ -465,11 +485,6 @@ Note that the header will only be added once, regardless of the number of times
     <td align="right"> License: </td>
     <td> GPL (<a href="http://www.gnu.org/copyleft/gpl.html" target="_top">GNU General Public License</a>) </td>
   </tr>
-</table>
-
-|
-
-<table border="1" cellpadding="0" cellspacing="0">
   <tr>
     <td align="right"> Dependencies: </td>
     <td> None </td>
@@ -479,6 +494,14 @@ Note that the header will only be added once, regardless of the number of times
     <td>   </td>
   </tr>
   <tr>
+    <td> 11594 </td>
+    <td> Allow format to be configured. </td>
+  </tr>
+  <tr>
+    <td> 11415 </td>
+    <td> Add a <code>renderFormFieldForEditHandler</code> so other plugins can forward to this handler to add the date field to the [[Main/TWikiForms]]. (TWiki:Main.ThomasWeigert) </td>
+  </tr>
+  <tr>
     <td> 10247 </td>
     <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item2054" rel="nofollow">Item2054</a> put the calendar at z-index 2000, way above pattern skin divs. </td>
   </tr>
index 2fdbcff..55d5de8 100644 (file)
@@ -4,7 +4,7 @@ A login name is a sequence of alphanumeric characters and underscores.
 
 You cannot alter your LoginName: you have to get the administrator to do this for you.
 
-## <a name="How to find yours"></a> How to find yours
+## <a name="How to Find Yours"></a> How to Find Yours
 
 Look in [[TWikiUsers]] - if your name is followed by a dash and a word, usually lowercase, this is what you log in with.
 
@@ -20,4 +20,4 @@ If, on the other hand, if your entry is like this:
 
 Then you would log in using your [[WikiName]], in this case 'TWikiGuest'
 
-**_Related Topics:_** [[UserDocumentationCategory]]
+**_Related Topics for Administrators:_** [[ManagingUsers]], [[UserDocumentationCategory]]
index d572e36..bb0cbaf 100644 (file)
 # <a name="%TOPIC%"></a><a name=" %TOPIC%"></a> %TOPIC%
 
-Add-on to the TWiki kernel that supports e-mail notification of changes.
+Add-on to the TWiki kernel that allows users to "subscribe" to regularly scheduled e-mails containing either:
+
+- A report on changes to all topics that have changed within a particular TWiki web.
+- A report on changes to a specific topic or set of topics the user can define flexibly.
+- The entire content of a specific topic or set of topics. This is referred to as "news mode."
 
 **WARNING: TWiki-4 only. If you want to use this extension with an earlier version of TWiki, please see [here](http://twiki.org/cgi-bin/view/Plugins/%TOPIC%?rev=1.17)**
 
 <div>
   <ul>
-    <li><a href="#Summary of Contents"> Summary of Contents</a><ul>
-        <li><a href="#tools/mailnotify"> <code>tools/mailnotify</code></a></li>
-        <li><a href="#TWiki/Contrib/_MailerContrib cod"> <code>TWiki/Contrib/MailerContrib</code> code library</a></li>
+    <li><a href="#tools/mailnotify"> <code>tools/mailnotify</code></a></li>
+    <li><a href="#TWiki/Contrib/_MailerContrib cod"> <code>TWiki/Contrib/MailerContrib</code> code library</a></li>
+    <li><a href="#package TWiki::Contrib::_MailerC"> package TWiki::Contrib::MailerContrib::WebNotify</a><ul>
+        <li><a href="#ClassMethod new($web, $topic)"> ClassMethod new($web, $topic)</a></li>
+        <li><a href="#ObjectMethod write_WebNotify()"> ObjectMethod writeWebNotify()</a></li>
+        <li><a href="#ObjectMethod getSubscriber($name"> ObjectMethod getSubscriber($name, $noAdd)</a></li>
+        <li><a href="#ObjectMethod getSubscribers()"> ObjectMethod getSubscribers()</a></li>
+        <li><a href="#ObjectMethod subscribe($name, $t"> ObjectMethod subscribe($name, $topics, $depth)</a></li>
+        <li><a href="#ObjectMethod unsubscribe($name,"> ObjectMethod unsubscribe($name, $topics, $depth)</a></li>
+        <li><a href="#ObjectMethod stringify() -> stri"> ObjectMethod stringify() -&gt; string</a></li>
+        <li><a href="#ObjectMethod processChange($chan"> ObjectMethod processChange($change, $db, $changeSet, $seenSet, $allSet)</a></li>
+        <li><a href="#ObjectMethod processCompulsory($"> ObjectMethod processCompulsory($topic, $db, \%allSet)</a></li>
+        <li><a href="#ObjectMethod isEmpty() -> boolea"> ObjectMethod isEmpty() -&gt; boolean</a></li>
+      </ul>
+    </li>
+    <li><a href="#package TWiki::Contrib::_MailerC"> package TWiki::Contrib::MailerContrib::Subscriber</a><ul>
+        <li><a href="#ClassMethod new($name)"> ClassMethod new($name)</a></li>
+        <li><a href="#ObjectMethod get_EmailAddresses("> ObjectMethod getEmailAddresses() -&gt; list</a></li>
+        <li><a href="#ObjectMethod subscribe($subs)"> ObjectMethod subscribe($subs)</a></li>
+        <li><a href="#ObjectMethod unsubscribe($subs)"> ObjectMethod unsubscribe($subs)</a></li>
+        <li><a href="#ObjectMethod is_SubscribedTo($to"> ObjectMethod isSubscribedTo($topic) -&gt; $subscription</a></li>
+        <li><a href="#ObjectMethod is_UnsubscribedFrom"> ObjectMethod isUnsubscribedFrom($topic) -&gt; $subscription</a></li>
+        <li><a href="#ObjectMethod stringify() -> stri"> ObjectMethod stringify() -&gt; string</a></li>
+      </ul>
+    </li>
+    <li><a href="#package TWiki::Contrib::_MailerC"> package TWiki::Contrib::MailerContrib::Subscription</a><ul>
+        <li><a href="#ClassMethod new($pages, $childDe"> ClassMethod new($pages, $childDepth, $news)</a></li>
+        <li><a href="#ObjectMethod stringify() -> stri"> ObjectMethod stringify() -&gt; string</a></li>
+        <li><a href="#ObjectMethod matches($topic, $db"> ObjectMethod matches($topic, $db, $depth) -&gt; boolean</a></li>
+        <li><a href="#ObjectMethod getMode() -> $mode"> ObjectMethod getMode() -&gt; $mode</a></li>
+      </ul>
+    </li>
+    <li><a href="#package TWiki::Contrib::_MailerC"> package TWiki::Contrib::MailerContrib::Change</a><ul>
+        <li><a href="#ClassMethod new($web)"> ClassMethod new($web)</a></li>
+        <li><a href="#ObjectMethod merge($change)"> ObjectMethod merge($change)</a></li>
+        <li><a href="#ObjectMethod expandHTML($html) -"> ObjectMethod expandHTML($html) -&gt; string</a></li>
+        <li><a href="#ObjectMethod expandPlain() -> st"> ObjectMethod expandPlain() -&gt; string</a></li>
+      </ul>
+    </li>
+    <li><a href="#package TWiki::Contrib::_MailerC"> package TWiki::Contrib::MailerContrib::UpData</a><ul>
+        <li><a href="#ClassMethod new($web)"> ClassMethod new($web)</a></li>
+        <li><a href="#ObjectMethod getParent($topic) -"> ObjectMethod getParent($topic) -&gt; string</a></li>
+      </ul>
+    </li>
+    <li><a href="#package TWiki::Contrib::Mailer"> package TWiki::Contrib::Mailer</a><ul>
+        <li><a href="#StaticMethod mailNotify($webs, $"> StaticMethod mailNotify($webs, $session, $verbose)</a></li>
+      </ul>
+    </li>
+    <li><a href="#Installation Instructions"> Installation Instructions</a><ul>
+        <li><a href="#Setting up your cron job(s)"> Setting up your cron job(s)</a></li>
+      </ul>
+    </li>
+    <li><a href="#Developer Notes"> Developer Notes</a><ul>
+        <li><a href="#Contrib Info"> Contrib Info</a></li>
       </ul>
     </li>
-    <li><a href="#Installation Instructions"> Installation Instructions</a></li>
-    <li><a href="#Setting up your cron job"> Setting up your cron job</a></li>
-    <li><a href="#Settings"> Settings</a></li>
-    <li><a href="#Contrib Info"> Contrib Info</a></li>
   </ul>
 </div>
 
-## <a name="Summary of Contents"></a> Summary of Contents
+# <a name="tools/mailnotify"></a> `tools/mailnotify`
 
-### <a name="tools/mailnotify"></a> `tools/mailnotify`
+The central component of [[MailerContrib]] is a script, `tools/mailnotify`, that generates and sends out the emails based on analysis of
 
-The main part of the mailer module is a script, `tools/mailnotify`. This script is designed to be run from 'cron' (or an equivalent offline job scheduler), and processes the contents of the standard WebNotify topic. As well as providing the usual notification service, it also provides per-topic notification services. The script may be run from the command line or a cron job.
+1. users' subcriptions listed in the WebNotify topic in each web, and
+2. changes within the respective webs.
 
-Subscribers are listed in WebNotify following one of these bullet list formats:
+This script is designed to be run from `cron` (or an equivalent off-line job scheduler), or from the command-line.
+
+The script collates the changes emails so that each subscriber only receives one changes notification for all changes in all webs in the TWiki. Furthermore, users can elect to receive just summaries of changes, or the entire content of topics that have changed.
+
+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 using one of these bullet list formats:
 
 _three spaces_ \* [ _webname_ . ] _wikiName_ - _SMTP mail address_<br />_three spaces_ \* [ _webName_ . ] _wikiName_<br />_three spaces_ \* _SMTP mail address_<br />_three spaces_ \* _SMTP mail address_ : _topics_<br />_three spaces_ \* [ _webname_ . ] _wikiName_ : _topics_
 
-where _topics_ is a space-separated list of topic names.
+In the above examples, _topics_ is a space-separated list of topic names. The user may further customize the specific content they will receive using the following formats:
 
 - Specify topics without a _Web._ prefix
 - Topics must exist in this web.
 - Topics may be specified using \* wildcards
+- Each topic may optionally be preceded by a '+' or '-' sign. The '+' sign means "subscribe to this topic" (the same as not putting anything). The '-' sign means "unsubscribe" or "don't send notifications regarding this topic". This allows users to elect to filter out certain topics (and their children, to an arbitrary depth). Topic filters ('-') take precedence over topic includes ('+').
 - 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 preceded by a '+' or '-' sign. The '+' sign means "subscribe to this topic" (the same as not putting anything). The '-' sign means "don't send notifications regarding this topic". This allows users to elect to filter out changes to certain topics (and their children, to an arbitrary depth). Topic filters ('-') take precedence over topic includes ('+').
+- 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, ? will mail the topic only if there have been changes to it. This only makes sense for subscriptions.
+
+For example: Subscribe Daisy to all changes to topics in this web.
+
+       * daisy.cutter@flowers.com
 
-For example:
+Subscribe Daisy to all changes in all webs that start with `Web`.
 
-       * daisy@flowers.com
-       * daisy@flowers.com: Web*
-       * DaisyCutter: Petal* (1) WeedKillers (3) Red*Phlox
-       * StarTrekFan: * - *Wars - *sInTheirEyes - *shipTroopers
+       * daisy.cutter@flowers.com: Web*
 
-A user may be listed many times in the WebNotify topic. Where a user has several lines in WebNotify that all match the same topic, they will only be notified of changes to that topic _once_.
+Subscribe Daisy to changes to topics starting with `Petal`, and their immediate children, WeedKillers and children to a depth of 3, and all topics that match start with `Pretty` and end with `Flowers` e.g. `PrettyPinkFlowers`
+
+       * DaisyCutter: Petal* (1) WeedKillers (3) Pretty*Flowers
+
+Subscribe StarTrekFan to changes to all topics that start with `Star` **except** those that end in `Wars`, `sInTheirEyes` or `shipTroopers`.
+
+       * StarTrekFan: Star* - *Wars - *sInTheirEyes - *shipTroopers
+
+Subscribe Daisy to the full content of NewsLetter whenever it has changed
+
+       * daisy@flowers.com: NewsLetter?
+
+Subscribe buttercup to NewsLetter and its immediate children, even if it hasn't changed.
+
+       * buttercup@flowers.com: NewsLetter! (1)
+
+Subscribe GardenGroup (which includes Petunia) to all changed topics under AllnewsLetters to a depth of 3. Then unsubscribe Petunia from the ManureNewsLetter, which she would normally get as a member of [[GardenGroup]]:
+
+       * GardenGroup: AllNewsLetters? (3)
+       * petunia@flowers.com: - ManureNewsLetter
+
+A user may be listed many times in the WebNotify topic. Where a user has several lines in WebNotify that all match the same topic, they will only be notified about _changes_ that topic _once_ (though they will still receive individual mails for news topics).
 
 If a _TWiki group_ is listed for notification, the group will be recursively expanded to the e-mail addresses of all members.
 
@@ -51,26 +132,254 @@ If a _TWiki group_ is listed for notification, the group will be recursively exp
 
 In the future it is intended that individual users will be able to control the frequency with which they are notified of topic changes, by changing a schedule specification in their home topic. However at present, the notification schedule is controlled by the frequency of activation of the `cron` job that runs the `mailnotify` script.
 
-%RED% **_Note_** `mailnotify` ignores permissions in webs. It is entirely possible for a user to get added to a WebNotify topic in a web, when they are not authorised to view the topics in that web. This could result in them having limited access to sensitive information (the topic summaries). %ENDCOLOR%
+%RED% **_Note_** `mailnotify` ignores permissions in webs. It is entirely possible for a user to get added to one of the subscription topics in a web, when they are not authorised to view the topics in that web. This could result in them having access to sensitive information, particularly with news mode. %ENDCOLOR%
+
+Note that when using the "news mode" ! or ? specifiers are used the entire topic text is mailed out as HTML. The `newsletter` template is used to generate the content in this mail, using whatever skin is selected in the topic being mailed.
+
+In addition, the %STARTPUBLISH% and %STOPPUBLISH% markers used by TWiki:Plugins.PublishContrib to delimit the text to be published are respected.
+
+# <a name="TWiki/Contrib/_MailerContrib cod"></a> `TWiki/Contrib/MailerContrib` code library
+
+The second part of the module is a code library that provides the services for other applications to modify the subscription topics through a clean, well documented API. This allows (for example) plugin developers to add (for example) a "Register me for this newsletter" button to their pages. The main interface is the `WebNotify` package described below.
+
+# <a name="package TWiki::Contrib::_MailerC"></a> package TWiki::Contrib::MailerContrib::WebNotify
+
+Object that represents the contents of a [[WebNotify]] topic in a TWiki web
+
+## <a name="ClassMethod new($web, $topic)"></a> [[ClassMethod]] new($web, $topic)
+
+Create a new object by parsing the content of the given topic in the given web. This is the normal way to load a [[WebNotify]] topic. If the topic does not exist, it will create an empty object.
+
+## <a name="ObjectMethod write_WebNotify()"></a> [[ObjectMethod]] writeWebNotify()
+
+Write the object to the [[WebNotify]] topic it was read from. If there is a problem writing the topic (e.g. it is locked), the method will return an error message. If everything is ok it will return undef.
+
+## <a name="ObjectMethod getSubscriber($name"></a> [[ObjectMethod]] getSubscriber($name, $noAdd)
+
+- `$name` - Name of subscriber (wikiname with no web or email address)
+- `$noAdd` - If false or undef, a new subscriber will be created for this name
+
+Get a subscriber from the list of subscribers, and return a reference to the Subscriber object. If $noAdd is true, and the subscriber is not found, undef will be returned. Otherwise a new Subscriber object will be added if necessary.
+
+## <a name="ObjectMethod getSubscribers()"></a> [[ObjectMethod]] getSubscribers()
+
+Get a list of all subscriber names (unsorted)
+
+## <a name="ObjectMethod subscribe($name, $t"></a> [[ObjectMethod]] subscribe($name, $topics, $depth)
+
+- `$name` - Name of subscriber (wikiname with no web or email address)
+- `$topics` - wildcard expression giving topics to subscribe to
+- `$depth` - Child depth to scan (default 0)
+- `$mode` - ! if this is a non-changes subscription and the topics should be mailed evebn if there are no changes. ? to mail the full topic only if there are changes. undef to mail changes only.
+
+Add a subscription, adding the subscriber if necessary.
+
+## <a name="ObjectMethod unsubscribe($name,"></a><a name="ObjectMethod unsubscribe($name, "></a> [[ObjectMethod]] unsubscribe($name, $topics, $depth)
+
+- `$name` - Name of subscriber (wikiname with no web or email address)
+- `$topics` - wildcard expression giving topics to subscribe to
+- `$depth` - Child depth to scan (default 0)
+
+Add an unsubscription, adding the subscriber if necessary. An unsubscription is a specific request to ignore notifications for a topic for this particular subscriber.
+
+## <a name="ObjectMethod stringify() - strin"></a> [[ObjectMethod]] stringify() -&gt; string
+
+Return a string representation of this object, in [[WebNotify]] format.
+
+## <a name="ObjectMethod processChange($chan"></a> [[ObjectMethod]] processChange($change, $db, $changeSet, $seenSet, $allSet)
+
+- `$change` - ref of a TWiki::Contrib::Mailer::Change
+- `$db` - TWiki::Contrib::MailerContrib::UpData database of parent references
+- `$changeSet` - ref of a hash mapping emails to sets of changes
+- `$seenSet` - ref of a hash recording indices of topics already seen
+- `$allSet` - ref of a hash that maps topics to email addresses for news subscriptions
+
+Find all subscribers that are interested in the given change. Only the most recent change to each topic listed in the .changes file is retained. This method does _not_ change this object.
+
+## <a name="ObjectMethod processCompulsory($"></a> [[ObjectMethod]] processCompulsory($topic, $db, \\%allSet)
+
+- `$topic` - topic name
+- `$db` - TWiki::Contrib::MailerContrib::UpData database of parent references
+- `\%allSet` - ref of a hash that maps topics to email addresses for news subscriptions
+
+## <a name="ObjectMethod isEmpty() - boolean"></a> [[ObjectMethod]] isEmpty() -&gt; boolean
+
+Return true if there are no subscribers
+
+# <a name="package TWiki::Contrib::_MailerC"></a> package TWiki::Contrib::MailerContrib::Subscriber
+
+Object that represents a subscriber to notification. A subscriber is a name (which may be a wikiName or an email address) and a list of subscriptions which describe the topis subscribed to, and unsubscriptions representing topics they are specifically not interested in. The subscriber name may also be a group, so it may expand to many email addresses.
+
+## <a name="ClassMethod new($name)"></a> [[ClassMethod]] new($name)
+
+- `$name` - Wikiname, with no web, or email address, of user targeted for notification
+
+Create a new user.
+
+## <a name="ObjectMethod get_EmailAddresses("></a> [[ObjectMethod]] getEmailAddresses() -&gt; list
+
+Get a list of email addresses for the user(s) represented by this subscription
+
+## <a name="ObjectMethod subscribe($subs)"></a> [[ObjectMethod]] subscribe($subs)
+
+- `$subs` - Subscription object
+
+Add a new subscription to this subscriber object. The subscription will always be added, even if there is a wildcard overlap with an existing subscription.
+
+## <a name="ObjectMethod unsubscribe($subs)"></a> [[ObjectMethod]] unsubscribe($subs)
+
+- `$subs` - Subscription object
+
+Add a new unsubscription to this subscriber object. The unsubscription will always be added, even if there is a wildcard overlap with an existing subscription or unsubscription.
+
+An unsubscription is a statement of the subscribers desire _not_ to be notified of changes to this topic.
+
+## <a name="ObjectMethod is_SubscribedTo($to"></a> [[ObjectMethod]] isSubscribedTo($topic) -&gt; $subscription
+
+- `$topic` - Topic object we are checking
+- `$db` - TWiki::Contrib::MailerContrib::UpData database of parents
+
+Check if we have a subscription to the given topic. Return the subscription that matches if we do, undef otherwise.
 
-### <a name="TWiki/Contrib/_MailerContrib cod"></a> `TWiki/Contrib/MailerContrib` code library
+## <a name="ObjectMethod is_UnsubscribedFrom"></a> [[ObjectMethod]] isUnsubscribedFrom($topic) -&gt; $subscription
 
-The second part of the module is a code library that provides the services for other applications to modify WebNotify through a clean, well documented interface. This allows (for example) plugin developers to add a "Register me for notification" button to their pages. The main interface is the `WebNotify` package described below.
+- `$topic` - Topic object we are checking
+- `$db` - TWiki::Contrib::MailerContrib::UpData database of parents
 
-## <a name="Installation Instructions"></a> Installation Instructions
+Check if we have an unsubscription from the given topic. Return the subscription that matches if we do, undef otherwise.
 
-This Contrib is pre-installed as part of the TWiki release package, and should only have to be re-installed if an upgrade is required.
+## <a name="ObjectMethod stringify() - strin"></a> [[ObjectMethod]] stringify() -&gt; string
+
+Return a string representation of this object, in WebNotify format.
+
+# <a name="package TWiki::Contrib::_MailerC"></a> package TWiki::Contrib::MailerContrib::Subscription
+
+Object that represents a single subscription of a user to notification on a page. A subscription is expressed as a page spec (which may contain wildcards) and a depth of children of matching pages that the user is subscribed to.
+
+## <a name="ClassMethod new($pages, $childDe"></a> [[ClassMethod]] new($pages, $childDepth, $news)
+
+- `$pages` - Wildcarded expression matching subscribed pages
+- `$childDepth` - Depth of children of $topic to notify changes for. Defaults to 0
+- `$mode` - ! if this is a non-changes subscription and the topics should be mailed evebn if there are no changes. ? to mail the full topic only if there are changes. undef to mail changes only.
+
+Create a new subscription.
+
+## <a name="ObjectMethod stringify() - strin"></a> [[ObjectMethod]] stringify() -&gt; string
+
+Return a string representation of this object, in WebNotify format.
+
+## <a name="ObjectMethod matches($topic, $db"></a> [[ObjectMethod]] matches($topic, $db, $depth) -&gt; boolean
+
+- `$topic` - Topic object we are checking
+- `$db` - TWiki::Contrib::MailerContrib::UpData database of parent names
+- `$depth` - If non-zero, check if the parent of the given topic matches as well. undef = 0.
+
+Check if we match this topic. Recurses up the parenthood tree seeing if this is a child of a parent that matches within the depth range.
+
+## <a name="ObjectMethod getMode() - $mode"></a> [[ObjectMethod]] getMode() -&gt; $mode
+
+Return ! if this is a non-changes subscription and the topics should be mailed even if there are no changes. ? to mail the full topic only if there are changes. undef to mail changes only.
+
+----
+
+# <a name="package TWiki::Contrib::_MailerC"></a> package TWiki::Contrib::MailerContrib::Change
+
+Object that represents a change to a topic.
+
+## <a name="ClassMethod new($web)"></a> [[ClassMethod]] new($web)
+
+- `$web` - Web name
+- `$topic` - Topic name
+- `$author` - String author of change
+- `$time` - String time of change
+- `$rev` - Revision identifier
+
+Construct a new change object.
+
+## <a name="ObjectMethod merge($change)"></a> [[ObjectMethod]] merge($change)
+
+- `$change` - Change record to merge
+
+Merge another change record with this one, so that the combined record is a reflection of both changes.
+
+## <a name="ObjectMethod expandHTML($html) -"></a> [[ObjectMethod]] expandHTML($html) -&gt; string
+
+- `$html` - Template to expand keys within
+
+Expand an HTML template using the values in this change. The following keys are expanded: %TOPICNAME%, %AUTHOR%, %TIME%, %REVISION%, %TEXTHEAD%.
+
+Returns the expanded template.
+
+## <a name="ObjectMethod expandPlain() - str"></a> [[ObjectMethod]] expandPlain() -&gt; string
+
+Generate a plaintext version of this change.
+
+# <a name="package TWiki::Contrib::_MailerC"></a> package TWiki::Contrib::MailerContrib::UpData
+
+Object that lazy-scans topics to extract parent relationships.
+
+## <a name="ClassMethod new($web)"></a> [[ClassMethod]] new($web)
+
+- `$web` - Web we are building parent relationships for
+
+Constructor for a web; initially empty, will lazy-load as topics are referenced.
+
+## <a name="ObjectMethod getParent($topic) -"></a> [[ObjectMethod]] getParent($topic) -&gt; string
+
+Get the name of the parent topic of the given topic
+
+# <a name="package TWiki::Contrib::Mailer"></a> package TWiki::Contrib::Mailer
+
+Package of support for extended WebNotify notification, supporting per-topic notification and notification of changes to children.
+
+Also supported is a simple API that can be used to change the WebNotify topic from other code.
+
+## <a name="StaticMethod mailNotify($webs, $"></a> [[StaticMethod]] mailNotify($webs, $session, $verbose)
+
+- `$webs` - filter list of names webs to process. Wildcards (\*) may be used.
+- `$session` - optional session object. If not given, will use a local object.
+- `$verbose` - true to get verbose (debug) output
+
+Main entry point.
+
+Process the WebNotify topics in each web and generate and issue notification mails. Designed to be invoked from the command line; should only be called by `mailnotify` scripts.
+
+# <a name="Installation Instructions"></a> Installation Instructions
+
+You do not need to install anything in the browser to use this extension. The following instructions are for the administrator who installs the extension on the server where TWiki is running.
+
+Like many other TWiki extensions, this module is shipped with a fully automatic installer script written using the BuildContrib.
+
+- If you have TWiki 4.1 or later, and Perl 5.8, you can install from the `configure` interface (Go to Plugins-&gt;Find More Extensions)
+  - The webserver user has to have permission to write to all areas of your installation for this to work.
+- If you have a permanent connection to the internet (and Perl 5.8), you are recommended to use the automatic installer script
+  - Just download the `MailerContrib_installer` perl script and run it.
+- **Notes:**
+  - The installer script will:
+    - Automatically resolve dependencies,
+    - Copy files into the right places in your local install (even if you have renamed data directories),
+    - check in new versions of any installed files that have existing RCS histories files in your existing install (such as topics).
+    - If the $TWIKI\_PACKAGES environment variable is set to point to a directory, the installer will try to get archives from there. Otherwise it will try to download from twiki.org or cpan.org, as appropriate.
+    - (Developers only: the script will look for twikiplugins/MailerContrib/MailerContrib.tgz before downloading from TWiki.org)
+  - If you don't have a permanent connection, you can still use the automatic installer, by downloading all required TWiki archives to a local directory.
+    - Point the environment variable `$TWIKI_PACKAGES` to this directory, and the installer script will look there first for required TWiki packages.
+      - `$TWIKI_PACKAGES` is actually a path; you can list several directories separated by :
+    - If you are behind a firewall that blocks access to CPAN, you can build a local CPAN mini-mirror, as described at [http://twiki.org/cgi-bin/view/Codev/BuildingDakar#CPAN\_local\_minimirror](http://twiki.org/cgi-bin/view/Codev/BuildingDakar#CPAN_local_minimirror)
+- If you don't want to use the installer script, or have problems on your platform (e.g. you don't have Perl 5.8), then you can still install manually:
+  1. Download and unpack one of the `.zip` or `.tgz` archives to a temporary directory.
+  2. Manually copy the contents across to the relevant places in your TWiki installation.
+  3. Check in any installed files that have existing `,v` files in your existing install (take care **not** to lock the files when you check in)
+  4. Manually edit LocalSite.cfg to set any configuration variables.
+  5. Run `configure` and enable the module, if it is a plugin.
+  6. Repeat from step 1 for any missing dependencies.
 
-- Download the ZIP file from the Plugin web (see below)
-- Unzip <code>**%TOPIC%.zip**</code> in your twiki installation directory.
-- Run the installer script `MailContrib_intaller.pl` or alternatively resolve all dependencies manually.
 - To make sure the installation was successful, run the `mailnotify` script from the command line, with no parameters. In this case it will print out what it would have done to STDOUT.
 
-## <a name="Setting up your cron job"></a> Setting up your cron job
+## <a name="Setting up your cron job(s)"></a> Setting up your cron job(s)
 
-You need to set up a `cron` (or equivalent) job to run `mailnotify`.
+You need to set up a `cron` (or equivalent) job to run `tools/mailnotify`.
 
-<code>Usage: perl -I &lt;bin&gt; mailnotify [-q] [ _web1 web2 ... webN_ ]</code> &lt;bin&gt; is the path to the TWiki bin directory (usually `../bin`), so that the script can find the rest of TWiki.
+Usage: <code>perl -I &lt;bin&gt; mailnotify [-q] [-news] [ _web1 web2 ... webN_ ]</code> &lt;bin&gt; is the path to the TWiki bin directory, so that the script can find the rest of TWiki.
 
 <table border="1" cellpadding="0" cellspacing="0">
   <tr>
@@ -78,17 +387,63 @@ You need to set up a `cron` (or equivalent) job to run `mailnotify`.
     <td> Don't print progress information </td>
   </tr>
   <tr>
+    <td><code>-news</code></td>
+    <td> Run in news mode (process NewsNotify instead of WebNotify) </td>
+  </tr>
+  <tr>
     <td><code><i>web1 web2 ... webN</i></code></td>
     <td> List of webs to process, separated by spaces or commas. Default is to process all legal TWiki webs. Wildcards (*) are supported. </td>
   </tr>
 </table>
 
-For example, `perl -I /usr/local/twiki/bin mailnotify -q Public Private` will generate notifications for the Public and Private webs.
+For example, assuming TWiki was installed at `/usr/local/twiki`, this cron entry:
+
+    0 0 * * * cd /usr/local/twiki && perl -I bin tools/mailnotify -q Public Private
+
+will generate change notifications for the `Public` and `Private` webs every night at midnight.
+
+    0 0 * * 0 cd /usr/local/twiki && perl -I bin tools/mailnotify -news
+
+will generate newsletters from **all** webs every week on midnight Saturday.
+
+# <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.
+
+<table border="1" cellpadding="0" cellspacing="0">
+  <tr>
+    <td><code>HTML:before</code></td>
+    <td> Section of a HTML mail before the changes </td>
+  </tr>
+  <tr>
+    <td><code>HTML:middle</code></td>
+    <td> Repeated in a HTML mail for each change </td>
+  </tr>
+  <tr>
+    <td><code>HTML:after</code></td>
+    <td> Section of a HTML mail after the changes </td>
+  </tr>
+  <tr>
+    <td><code>PLAIN:before</code></td>
+    <td> Section of a plain text mail before the changes </td>
+  </tr>
+  <tr>
+    <td><code>PLAIN:middle</code></td>
+    <td> Repeated in a plain text mail for each changes </td>
+  </tr>
+  <tr>
+    <td><code>PLAIN:after</code></td>
+    <td> Section of a plain text mail after the changes </td>
+  </tr>
+  <tr>
+    <td><code>MailNotifyBody</code></td>
+    <td> All the above are embedded in this. %HTML_TEXT% expands to the HTML obtained by expanding the <code>HTML:*</code> templates, and %PLAIN_TEXT% from the <code>PLAIN:*</code> templates. </td>
+  </tr>
+</table>
 
-## <a name="Settings"></a> Settings
+The default template sends multipart mails containing both HTML and plaintext versions. You can easily provide a custom version of this template using a local skin.
 
-- Set STUB = TWiki::Contrib::Mailer
-- Set SHORTDESCRIPTION = Supports e-mail notification of changes.
+Newsletters are sent after formatting using the standard `view` template, using whatever skin is selected in the topic being mailed.
 
 ## <a name="Contrib Info"></a> Contrib Info
 
@@ -99,110 +454,122 @@ For example, `perl -I /usr/local/twiki/bin mailnotify -q Public Private` will ge
   </tr>
   <tr>
     <td align="right"> Copyright ©: </td>
-    <td> 2004, Wind River Systems </td>
+    <td> 2004, Wind River Systems; 2006, <a href="http://WikiRing.com" target="_top">http://WikiRing.com</a></td>
   </tr>
   <tr>
     <td align="right"> License: </td>
     <td> GPL </td>
   </tr>
   <tr>
-    <td> Change History: </td>
+    <td align="right"> Change History: </td>
     <td>   </td>
   </tr>
   <tr>
-    <td> 8808 </td>
-    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item1654" rel="nofollow">Item1654</a> mailnotify must enter the command_line context </td>
+    <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>
+  </tr>
+  <tr>
+    <td align="right"> 11672 </td>
+    <td> Added newsletter support, after much harassment from TWiki:Main.LynnwoodBrown </td>
+  </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>
+  </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>
   </tr>
   <tr>
-    <td> 8625 </td>
-    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item1508" rel="nofollow">Item1508</a> Making the dashes in the separatator clearer </td>
+    <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>
   </tr>
   <tr>
-    <td> 8606 </td>
-    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item1508" rel="nofollow">Item1508</a> [[Main/MailerContrib]]: Brushing up HTML mailnotify template </td>
+    <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>
   </tr>
   <tr>
-    <td> 8602 </td>
-    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item1508" rel="nofollow">Item1508</a> [[Main/MailerContrib]]: Cleaning up plaintext e-mail template, removing TEXTAREA </td>
+    <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>
   </tr>
   <tr>
-    <td> 8522 </td>
-    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item1511" rel="nofollow">Item1511</a> arguments to getScriptUrl in wrong order :-( </td>
+    <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>
   </tr>
   <tr>
-    <td> 8434 </td>
-    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item1465" rel="nofollow">Item1465</a> Fix 'TWiki.' to '%TWIKIEB%.' </td>
+    <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>
   </tr>
   <tr>
-    <td> 8398 </td>
-    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item1460" rel="nofollow">Item1460</a> polished up the comment a bit </td>
+    <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>
   </tr>
   <tr>
-    <td> 8308 </td>
-    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item1362" rel="nofollow">Item1362</a> moving mailnotify cron script </td>
+    <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>
   </tr>
   <tr>
-    <td> 7848 </td>
-    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item1167" rel="nofollow">Item1167</a> forced all mail operations to generate absolute URLs </td>
+    <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>
   </tr>
   <tr>
-    <td> 7568 </td>
-    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item910" rel="nofollow">Item910</a> use SCRIPTURL{view} instead of complex url expr </td>
+    <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>
   </tr>
   <tr>
-    <td> 6864 </td>
-    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item624" rel="nofollow">Item624</a> mailer templates moved the the right places </td>
+    <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>
   </tr>
   <tr>
-    <td> 6861 </td>
-    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item624" rel="nofollow">Item624</a> Added proper templates support for plain text mails </td>
+    <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>
   </tr>
   <tr>
-    <td> 6809 </td>
-    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item623" rel="nofollow">Item623</a> don't print anything if verbosity is switched off. </td>
+    <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>
   </tr>
   <tr>
-    <td> 6659 </td>
-    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item528" rel="nofollow">Item528</a> Updated [[Main/MailerContrib]]. it's working and the sendmail parameter is used. </td>
+    <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>
   </tr>
   <tr>
-    <td> 6474 </td>
-    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item420" rel="nofollow">Item420</a> removed spurious remove_obsolete_locks from [[Main/MailerContrib]]</td>
+    <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>
   </tr>
   <tr>
-    <td> 5924 </td>
-    <td><a href="http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item153" rel="nofollow">Item153</a> fix mail URL-fixing scheme </td>
+    <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>
   </tr>
   <tr>
-    <td> 5269 </td>
+    <td align="right"> 5269 </td>
     <td> Minor doc fixes </td>
   </tr>
   <tr>
-    <td> 5266 </td>
+    <td align="right"> 5266 </td>
     <td> Doc tidy-ups, added filtering of _ webs, added obsolete lock script </td>
   </tr>
   <tr>
-    <td> 5264 </td>
+    <td align="right"> 5264 </td>
     <td> Changed default to add web name to user name (I hope) </td>
   </tr>
   <tr>
-    <td> 5263 </td>
+    <td align="right"> 5263 </td>
     <td> Minor doc tidyups </td>
   </tr>
   <tr>
-    <td> 5261 </td>
+    <td align="right"> 5261 </td>
     <td> Documentation changes, and fixed to scan all webs. </td>
   </tr>
   <tr>
-    <td> 5253 </td>
+    <td align="right"> 5253 </td>
     <td> runnable as CGI script, minor bugfixes, removed dependency on [[Main/DBCacheContrib]]</td>
   </tr>
   <tr>
-    <td> 5234 </td>
+    <td align="right"> 5234 </td>
     <td> Minor doc changes </td>
   </tr>
   <tr>
-    <td> 5231 </td>
+    <td align="right"> 5231 </td>
     <td> Made a change an object, added unit tests to CVS, lots of testing. </td>
   </tr>
   <tr>
index 0f1b0c0..c0fafb3 100644 (file)
@@ -70,7 +70,7 @@ Changed references are kept are as short as possible, ex: `topic` is used in pre
 
 ### <a name="Effect of User Access Settings"></a> Effect of User Access Settings
 
-User permissions affect the Rename function in various ways. To rename a topic, you need both <code>**ALLOWTOPICCHANGE**</code> and <code>**ALLOWTOPICRENAME**</code> permission for that topic. To alter referring topics, you need change permission. See [[TWikiAccessControl]] for information on setting up access permissions.
+User permissions affect the Rename function in various ways. To rename a topic, you need both <code>**ALLOWTOPICVIEW**</code> and <code>**ALLOWTOPICCHANGE**</code> permission for that topic. To alter referring topics, you need change permission. See [[TWikiAccessControl]] for information on setting up access permissions.
 
 ## <a name="Special Considerations"></a> Special Considerations
 
index f67cd68..4116fb1 100644 (file)
@@ -4,6 +4,7 @@
         <li><a href="#Authentication and Access Contro"> Authentication and Access Control</a></li>
         <li><a href="#Register User"> Register User</a></li>
         <li><a href="#Change, Reset and Install Passwo"> Change, Reset and Install Passwords</a></li>
+        <li><a href="#Changing User Account Names"> Changing User Account Names</a></li>
         <li><a href="#Removing User Accounts"> Removing User Accounts</a></li>
       </ul>
     </li>
@@ -33,6 +34,21 @@ It is not necessary to have user home pages in the TWiki system for Authenticati
 - [[ResetPassword]] is for users who cannot remember their password; a system generated password is e-mailed to them
 - [[BulkResetPassword]] if for administrators who want to reset many passwords at once
 
+## <a name="Changing User Account Names"></a> Changing User Account Names
+
+To change the user's [[WikiName]]:
+
+- Rename the user's TWiki homepage in the Main web, such as from `JaneSmith` to `JaneMiller`.
+  - Fix backlinks in the Main web only
+  - Make sure the group topics are updated (if any.)
+- Edit the [[Main.TWikiUsers|Main/TWikiUsers]] topic and move the user's entry so that the list is in proper alphabetical order.
+- Recreate the old topic with a pointer to the new topic, so that links in other webs work properly. Example content:%BR% `%M% Jane Smith is now known as JaneMiller`
+
+If external authentication is used and you want to change the login name:
+
+- The login name needs to be changed in the directory server, such as AD or LDAP
+- In TWiki's [[Main.TWikiUsers|Main/TWikiUsers]] topic, fix the mapping from login name to [[WikiName]] such as from:%BR% `   * JohnSmith - john - 13 Sep 2006` %BR% to: %BR% `   * JohnSmith - jsmith - 13 Sep 2006`
+
 ## <a name="Removing User Accounts"></a> Removing User Accounts
 
 To remove a user account (FredQuimby, who logs in as "fred"):
@@ -41,7 +57,7 @@ To remove a user account (FredQuimby, who logs in as "fred"):
   - **Warning:** Do **not** use the Apache `htpasswd` program with `.htpasswd` files generated by TWiki! `htpasswd` wipes out email addresses that TWiki plants in the info fields of this file.
 2. Remove the `FredQuimby - fred` line from the Main.TWikiUsers topic
 3. Remove `FredQuimby` from all groups and from all the `ALLOWWEB/ALLOWTOPIC...` declarations, if any.%BR% **_Note:_** If you fail to do this you risk creating a security hole, as the next user to register with the wikiname FredQuimby will inherit the old FredQuimby's permissions.
-4. _[optional]_ Delete their user topic Main.FredQuimby.
+4. _[optional]_ Delete their user topic Main.FredQuimby (including attachments, if any.)
 
 **_Note:_** Consider leaving the user topic file in place so their past signatures and revision author entries don't end up looking like [[AnUncreatedTopic]]. If you want to make it clear the user is no longer with the organization or has been banished, replace the topic content with a note to that effect. The existance of the UserName topic should also prevent that user name from being re-used, sealing the potential security hole regarding inherited permissions..
 
index 377b6ac..3695683 100644 (file)
@@ -79,6 +79,7 @@ In either case you will want to be sure to verify that your new web has all the
 
 **_Notes:_**
 
+- You have to have `ROOTCHANGE` access to create a top-level web (one with no parent)
 - Attachments will NOT get copied over along with their topics
 - While creating the new web, TWiki will update the following variables in the [[WebPreferences]]: `WEBBGCOLOR`, `SITEMAPLIST`, `SITEMAPWHAT`, `SITEMAPUSETO` and `NOSEARCHALL`. These variables are used to dynamically generate the [[SiteMap]]
 - TWiki does not edit the [[TWiki.TWikiPreferences|TWiki/TWikiPreferences]] to update the `WIKIWEBLIST`. This must be done by hand
@@ -101,11 +102,11 @@ If anyone is editing a topic which requires updating, or which lives in the web
 
 If you plan to rename the Main web, remember that TWiki stores user and group topics in this web. That means that every [[WikiName]] signature - `Main.SomeUserName` - points to it and would need updating (unless the variable, `%MAINWEB%.SomeUserName`, is used throughout). This potentially large change can be performed automatically if you rename the web from the Tools section of [[WebPreferences]], as described above.
 
-%X% If you want to rename the TWiki or Main webs, remember they are referred to in the TWiki configuration. You will need to change the relevant settings in the configuration using the [configure](http://www.dementia.org/twiki/configure) interface.
+%X% If you want to rename the TWiki or Main webs, remember they are referred to in the TWiki configuration. You will need to change the `{SystemWebName}`, `{UsersWebName}` and/or `{LocalSitePreferences}` settings in the configuration using the [configure](http://www.dementia.org/twiki/configure) interface.
 
 ## <a name="Hierarchical Webs"></a> Hierarchical Webs
 
-Hierarchical web support is enabled by turning on the `{EnableHierarchicalWebs}` setting in `configure`. Without this setting, TWiki will only allow a single level of hierarchy (webs). If you set this, you can use multiple levels, like a directory tree, i.e. webs within webs.
+Hierarchical web support is enabled by turning on the `{EnableHierarchicalWebs}` setting in [configure](http://www.dementia.org/twiki/configure). Without this setting, TWiki will only allow a single level of hierarchy (webs). If you set this, you can use multiple levels, like a directory tree, i.e. webs within webs.
 
 **_%T% Note:_** You might not need hierarchical webs. TWiki topics already have a parent/child relationship within a web, which is shown in the breadcrumb. Try to keep the number of webs to a minimum in order to keep search and cross-referencing simple.
 
index 814194e..ab65712 100644 (file)
@@ -29,14 +29,6 @@ Uncomment preferences variables to activate them (remove the #-sign). Help and d
 
 - Show tool-tip topic info on mouse-over of [[WikiWord]] links, on or off:
   - #Set LINKTOOLTIPINFO = off
-- Horizontal size of text edit box:
-  - #Set EDITBOXWIDTH = 70
-- Vertical size of text edit box:
-  - #Set EDITBOXHEIGHT = 22
-- Style of text edit box. `width: 99%` for full window width (default), `width: auto` to disable.
-  - #Set EDITBOXSTYLE = width: 99%
-- Write protect your home page: (set it to your [[WikiName]])
-  - #Set ALLOWTOPICCHANGE = Main.admin
 
 ## <a name="Related Topics"></a> Related Topics
 
@@ -46,9 +38,18 @@ Uncomment preferences variables to activate them (remove the #-sign). Help and d
 - [[UserDocumentationCategory]] is a list of TWiki user documentation
 - [[UserToolsCategory]] lists all TWiki user tools
 
-Note to TWiki Administrator:
+----
+
+Notes to TWiki Administrator:
 
-Above text is for English speaking users. If you have a multilingual wiki community you can replace the "My Links", "Personal Preferences" and "Related Topics" sections above with the localized text below. Text enclosed in %MAKETEXT will be shown in the language selected by the user. Please note that the %MAKETEXT can be quite intimidating to new users. Consider translating above text to your own language if your community uses a non-English language. (Remove all text from `%STARTSECTION{type="templateonly"}%` to `%ENDSECTION{type="templateonly"}%` when you are done)
+Anything inside this "templateonly" section will not be copied to the home topic of the new user. It is a resource for the administrator to tailor the users home topic.
+
+On public TWiki's on the Internet user topics are often subject to spam so you may want to limit editing to the user himself. You can do this by moving these two lines to the Personal Preferences section above. Remove the small # in front of the "Set".
+
+- Write protect your home page: (set it to your [[WikiName]])
+  - #Set ALLOWTOPICCHANGE = Main.admin
+
+The default topic text above is for English speaking users. If you have a multilingual wiki community you can replace the "My Links", "Personal Preferences" and "Related Topics" sections above with the localized text below. Text enclosed in %MAKETEXT will be shown in the language selected by the user. Please note that the %MAKETEXT can be quite intimidating to new users. Consider translating above text to your own language if your community uses a non-English language. (Remove all text from `%STARTSECTION{type="templateonly"}%` to `%ENDSECTION{type="templateonly"}%` when you are done)
 
 Text for multilingual wiki community, copy from here to %ENDSECTION\{type="templateonly"\}%
 
@@ -68,14 +69,6 @@ Uncomment preferences variables to activate them (remove the #-sign). Help and d
 
 - Show tool-tip topic info on mouse-over of [[WikiWord]] links, on or off:
   - #Set LINKTOOLTIPINFO = off
-- Horizontal size of text edit box:
-  - #Set EDITBOXWIDTH = 70
-- Vertical size of text edit box:
-  - #Set EDITBOXHEIGHT = 22
-- Style of text edit box. `width: 99%` for full window width (default), `width: auto` to disable.
-  - #Set EDITBOXSTYLE = width: 99%
-- Write protect your home page: (set it to your [[WikiName]])
-  - Set ALLOWTOPICCHANGE = Main.admin
 
 ## <a name="Related Topics"></a> Related Topics
 
index e3683fa..ea91e05 100644 (file)
@@ -1,15 +1,19 @@
 # <a name="Pattern skin"></a><a name=" Pattern skin"></a> Pattern skin
 
-**PatternSkin is developed to provide a CSS based default look and feel for TWiki - flexible and [[W3C]]-compliant.** Its layout and color scheme are designed to provide a nice, clean and productive _editing environment_. For use in corporate or perhaps in personal websites it should be fairly easy to tune the looks or even create a PatternSkin-based new skin.
+**PatternSkin provides a CSS based default look and feel for TWiki - flexible and W3C-compliant.** Its layout and color scheme are designed to provide a nice, clean and productive _editing environment_. For use in corporate or perhaps in personal websites it should be fairly easy to tune the looks or even create a PatternSkin-based new skin.
 
 <div><span>Page contents</span><ul>
     <li>
       <ul>
-        <li><a href="#Screen Shot"> Screen Shot</a></li>
+        <li><a href="#Screenshot"> Screenshot</a></li>
       </ul>
     </li>
     <li><a href="#TWiki Installation Error">TWiki Installation Error</a><ul>
-        <li><a href="#Creating your own look"> Creating your own look</a></li>
+        <li><a href="#Creating your own look"> Creating your own look</a><ul>
+            <li><a href="#Template customization"> Template customization</a></li>
+            <li><a href="#Style sheet customization"> Style sheet customization</a></li>
+          </ul>
+        </li>
         <li><a href="#Supported browsers"> Supported browsers</a></li>
         <li><a href="#Installation"> Installation</a><ul>
             <li><a href="#Troubleshooting"> Troubleshooting</a></li>
   </ul>
 </div>
 
-## <a name="Screen Shot"></a> Screen Shot
+## <a name="Screenshot"></a> Screenshot
 
 [<img src="http://www.dementia.org/twiki//view/patternskin_screenshot.jpg" width="600" height="130" alt="Click for full screen image" style="border: 1px solid #eee" />](http://www.dementia.org/twiki//view/patternskin_screenshot_full.png)
 
 ## <a name="Creating your own look"></a> Creating your own look
 
-It is easy to tune the look and feel of PatternSkin by changing the color and space (margin, padding) settings in the Style Sheet files.
+### <a name="Template customization"></a> Template customization
+
+[[PatternSkinCustomization]] - how to configure page elements
 
-You may also choose to radically change the look and create a PatternSkin-based new skin. This is easier than to create a skin by writing new template files; you can concentrate on how things should look instead of what elements should get displayed.
+### <a name="Style sheet customization"></a> Style sheet customization
 
-- [[PatternSkinCustomization]] - how to configure page elements
-- [[PatternSkinCssCookbook]] - how to customize the default look of TWiki
-- [[PatternSkinCss]] - documentation of PatternSkin CSS classes
+[[PatternSkinCssCookbook]] - how to customize the visual style
 
 ## <a name="Supported browsers"></a> Supported browsers
 
@@ -79,6 +83,8 @@ If TWIKILAYOUTURL or TWIKISTYLEURL don't give a value or point to non-existing f
           * Set TWIKISTYLEURL = %PUBURLPATH%/%TWIKIWEB%/PatternSkin/style.css
           * Set TWIKICOLORSURL = %PUBURLPATH%/%TWIKIWEB%/PatternSkin/colors.css
 
+**NOTE:** customization of these values should be done in [[Main.TWikiPreferences|Main/TWikiPreferences]]
+
 If this still does not work, contact the administrator who installs skins.
 
 For further troubleshooting and feedback, go to TWiki:Plugins/PatternSkinDev. Report bugs in the [[Support web|TWiki:Support/WebHome]].
@@ -88,7 +94,7 @@ For further troubleshooting and feedback, go to TWiki:Plugins/PatternSkinDev. Re
 <table border="1" cellpadding="0" cellspacing="0">
   <tr>
     <td align="right"> Description: </td>
-    <td> TWiki's default skin; CSS based, flexible and [[Main/W3C]]-compliant </td>
+    <td> TWiki's default skin; CSS based, flexible and W3C-compliant </td>
   </tr>
   <tr>
     <td align="right"> Screenshot: </td>
@@ -108,19 +114,35 @@ For further troubleshooting and feedback, go to TWiki:Plugins/PatternSkinDev. Re
   </tr>
   <tr>
     <td align="right"> Skin Version: </td>
-    <td> 31 Jan 2006 (v2.0.0) </td>
+    <td> 15 Jan 2006 (v2.0.6) </td>
   </tr>
   <tr>
     <td align="right"> History: </td>
     <td>  </td>
   </tr>
   <tr>
+    <td align="right"> 15 Jan 2006: </td>
+    <td> v.2.0.6 - TWiki 4.1.0 (Edinburgh) RELEASE VERSION </td>
+  </tr>
+  <tr>
+    <td align="right"> 26 Sep 2006: </td>
+    <td> v.2.0.5 - Fixed form background colors </td>
+  </tr>
+  <tr>
+    <td align="right"> 22 Jul 2006: </td>
+    <td> v.2.0.4 - Refactored info in colors.css; fixed textarea color </td>
+  </tr>
+  <tr>
+    <td align="right"> 26 Jun 2006: </td>
+    <td> v.2.0.3 - TWiki 4.0.3 (Dakar) RELEASE VERSION </td>
+  </tr>
+  <tr>
     <td align="right"> 31 Jan 2006: </td>
-    <td> v.2.0.0 - DAKAR RELEASE VERSION </td>
+    <td> v.2.0.0 - TWiki 4.0.0 (Dakar) RELEASE VERSION </td>
   </tr>
   <tr>
     <td align="right"> 28 Aug 2004: </td>
-    <td> v.1.0.9 - CAIRO RELEASE VERSION </td>
+    <td> v.1.0.9 - TWiki 3.0 (Cairo) RELEASE VERSION </td>
   </tr>
   <tr>
     <td align="right"> 08 Aug 2004: </td>
diff --git a/TWiki/PatternSkinColorSettings.mdwn b/TWiki/PatternSkinColorSettings.mdwn
new file mode 100644 (file)
index 0000000..f27abf5
--- /dev/null
@@ -0,0 +1,1063 @@
+# <a name="Color scheme settings for TWiki."></a> Color scheme settings for [[PatternSkin]]
+
+**Appearance: text colors, background colors, border colors.**
+
+Use this topic to change the color settings of [[PatternSkin]]. When this topic is saved, the attachment `theme-colors.css` will be updated with new color values. This method relies on TWiki:Plugins.AttachContentPlugin to work.
+
+## <a name="Usage"></a><a name=" Usage"></a> Usage
+
+### <a name="Step 1"></a><a name=" Step 1"></a> Step 1
+
+Let [[PatternSkin]] point to the custom-made colors style sheet. In [[Main.TWikiPreferences|Main/TWikiPreferences]] put:
+
+       * Set USERCOLORSURL = %PUBURLPATH%/%MAINWEB%/TWikiPreferences/theme-colors.css
+
+### <a name="Step 2"></a><a name=" Step 2"></a> Step 2
+
+Edit this topic, and change the color variables as you like.
+
+## <a name="Color variables"></a><a name=" Color variables"></a> Color variables
+
+<div>
+  <ul>
+    <li><a href="#Logical groupings"> Logical groupings</a><ul>
+        <li><a href="#Text on background"> Text on background</a><ul>
+            <li><a href="#MAIN_TEXT_COLOR Main text color"> MAIN_TEXT_COLOR Main text color</a></li>
+            <li><a href="#MAIN_BACKGROUND_COLOR Main backg"> MAIN_BACKGROUND_COLOR Main background color</a></li>
+            <li><a href="#LIGHT_ON_DARK_TEXT_COLOR Light o"> LIGHT_ON_DARK_TEXT_COLOR Light on dark text color</a></li>
+          </ul>
+        </li>
+        <li><a href="#Links"> Links</a><ul>
+            <li><a href="#LINK_TEXT_NORMAL Link normal tex"> LINK_TEXT_NORMAL Link normal text</a></li>
+            <li><a href="#LINK_BACKGROUND_NORMAL Link norm"> LINK_BACKGROUND_NORMAL Link normal background</a></li>
+            <li><a href="#LINK_TEXT_ACTION_BUTTON Link tex"> LINK_TEXT_ACTION_BUTTON Link text red (same as LINK_BACKGROUND_HOVER)</a></li>
+            <li><a href="#LINK_TEXT_HOVER Link hover text"> LINK_TEXT_HOVER Link hover text</a></li>
+            <li><a href="#LINK_BACKGROUND_HOVER Link backg"> LINK_BACKGROUND_HOVER Link background hover</a></li>
+            <li><a href="#SIDE_BAR_LINK_TEXT Side bar link"> SIDE_BAR_LINK_TEXT Side bar link text</a></li>
+            <li><a href="#LINK_TEXT_NORMAL_TABLE_HEADER Ta"> LINK_TEXT_NORMAL_TABLE_HEADER Table header link text</a></li>
+            <li><a href="#LINK_TEXT_NORMAL_BORDER_TABLE_HE"> LINK_TEXT_NORMAL_BORDER_TABLE_HEADER Table header link border</a></li>
+            <li><a href="#LINK_TEXT_SORTED_TABLE_HEADER So"> LINK_TEXT_SORTED_TABLE_HEADER Sorted table header link text</a></li>
+            <li><a href="#LINK_TEXT_HOVER_TABLE_HEADER Tab"> LINK_TEXT_HOVER_TABLE_HEADER Table header link hover text</a></li>
+            <li><a href="#LINK_BORDER_TABLE_SELECTED_COLUM"> LINK_BORDER_TABLE_SELECTED_COLUMN_HEADER Link border in selected column header</a></li>
+          </ul>
+        </li>
+        <li><a href="#Disabled"> Disabled</a><ul>
+            <li><a href="#DISABLED_BORDER Disabled border"> DISABLED_BORDER Disabled border</a></li>
+            <li><a href="#DISABLED_TEXT Disabled text"> DISABLED_TEXT Disabled text</a></li>
+            <li><a href="#DISABLED_BACKGROUND Disabled bac"> DISABLED_BACKGROUND Disabled background</a></li>
+          </ul>
+        </li>
+        <li><a href="#'New'"> 'New'</a><ul>
+            <li><a href="#NEW_TEXT New text (green)"> NEW_TEXT New text (green) </a></li>
+            <li><a href="#NEW_BACKGROUND New background (l"> NEW_BACKGROUND New background (light green) </a></li>
+          </ul>
+        </li>
+        <li><a href="#Alert"> Alert</a><ul>
+            <li><a href="#ALERT_TEXT Alert text (red)"> ALERT_TEXT Alert text (red)</a></li>
+            <li><a href="#ALERT_TEXT_MUTED Muted alert tex"> ALERT_TEXT_MUTED Muted alert text (dark red)</a></li>
+            <li><a href="#ALERT_BORDER Alert border"> ALERT_BORDER Alert border</a></li>
+          </ul>
+        </li>
+        <li><a href="#Buttons"> Buttons</a><ul>
+            <li><a href="#BUTTON_TEXT Button text color (d"> BUTTON_TEXT Button text color (dark gray)</a></li>
+            <li><a href="#BUTTON_BORDERS Button borders"> BUTTON_BORDERS Button borders</a></li>
+            <li><a href="#BUTTON_BORDERS_ACTIVE Button bor"> BUTTON_BORDERS_ACTIVE Button borders (active)</a></li>
+            <li><a href="#SUBMIT_BUTTON_BACKGROUND Submit"> SUBMIT_BUTTON_BACKGROUND Submit button background (dark yellow)</a></li>
+            <li><a href="#SUBMIT_BUTTON_BORDER Submit butt"> SUBMIT_BUTTON_BORDER Submit button border (blue) </a></li>
+          </ul>
+        </li>
+        <li><a href="#Forms"> Forms</a><ul>
+            <li><a href="#INPUT_FIELD_BORDERS Input field"> INPUT_FIELD_BORDERS Input field borders</a></li>
+            <li><a href="#FORM_INPUT_BORDER Textarea, inpu"> FORM_INPUT_BORDER Textarea, input and select (darker gray)</a></li>
+            <li><a href="#FORM_BORDER Form (same as twikiT"> FORM_BORDER Form (same as twikiTable border)</a></li>
+            <li><a href="#ACTIVE_FORM_BACKGROUND Edit form"> ACTIVE_FORM_BACKGROUND Edit form, form steps</a></li>
+            <li><a href="#FORMFIELD_ACTIVE Active form fie"> FORMFIELD_ACTIVE Active form field (not implemented yet)</a></li>
+          </ul>
+        </li>
+      </ul>
+    </li>
+    <li><a href="#Color groupings"> Color groupings</a><ul>
+        <li><a href="#Text colors"> Text colors</a><ul>
+            <li><a href="#GENERAL_TEXT General text (if no"> GENERAL_TEXT General text (if not set in MAIN_BACKGROUND_COLOR) (black)</a></li>
+            <li><a href="#HEADER_TEXT Header text"> HEADER_TEXT Header text</a></li>
+            <li><a href="#CODE_TEXT Code text, left bar te"> CODE_TEXT Code text, left bar text and links</a></li>
+            <li><a href="#MUTED_TEXT Muted text (dark gray"> MUTED_TEXT Muted text (dark gray)</a></li>
+            <li><a href="#GRAYED_OUT_TEXT Grayed out text"> GRAYED_OUT_TEXT Grayed out text</a></li>
+            <li><a href="#STRONG_TEXT Dark text, header (d"> STRONG_TEXT Dark text, header (dark gray)</a></li>
+            <li><a href="#SEPARATOR Seperator in topic act"> SEPARATOR Seperator in topic action bar</a></li>
+          </ul>
+        </li>
+        <li><a href="#Background colors"> Background colors</a><ul>
+            <li><a href="#GENERAL_BACKGROUND General backg"> GENERAL_BACKGROUND General background color (if not set in MAIN_BACKGROUND_COLOR) (white)</a></li>
+            <li><a href="#SIDE_BAR_BACKGROUND Side bar bac"> SIDE_BAR_BACKGROUND Side bar background</a></li>
+            <li><a href="#SIDE_BAR_PERSONAL_BACKGROUND Sid"> SIDE_BAR_PERSONAL_BACKGROUND Side bar personal background</a></li>
+            <li><a href="#INFO_BACKGROUND Info (very light"> INFO_BACKGROUND Info (very light blue) (placeholder for background image)</a></li>
+            <li><a href="#TOPIC_ACTION_BACKGROUND Topic ac"> TOPIC_ACTION_BACKGROUND Topic action row (light yellow)</a></li>
+            <li><a href="#HEADER_BACKGROUND H1, H2, etc he"> HEADER_BACKGROUND H1, H2, etc header (light yellow) </a></li>
+            <li><a href="#ATTACHMENT_AND_FORM_BACKGROUND A"> ATTACHMENT_AND_FORM_BACKGROUND Attachment, form (light yellow)</a></li>
+            <li><a href="#DIFF_HEADER_BACKGROUND Diff head"> DIFF_HEADER_BACKGROUND Diff header (dark gray) (same as GRAYED_OUT_TEXT)</a></li>
+            <li><a href="#Table colors"> Table colors</a><ul>
+                <li><a href="#TABLE_DATA_BACKGROUND Table data"> TABLE_DATA_BACKGROUND Table data background</a></li>
+                <li><a href="#TABLE_HEADER_BACKGROUND Table he"> TABLE_HEADER_BACKGROUND Table header background</a></li>
+                <li><a href="#TABLE_SELECTED_COLUMN_HEADER_BAC"> TABLE_SELECTED_COLUMN_HEADER_BACKGROUND Sorted table column accent background </a></li>
+                <li><a href="#TABLE_DATA_ODD_BACKGROUND Table"> TABLE_DATA_ODD_BACKGROUND Table data background (odd row)</a></li>
+                <li><a href="#TABLE_DATA_EVEN_BACKGROUND Table"> TABLE_DATA_EVEN_BACKGROUND Table data background (even row)</a></li>
+                <li><a href="#TABLE_DATA_ODD_SELECTED_BACKGROU"> TABLE_DATA_ODD_SELECTED_BACKGROUND Table data background (odd row, selected column)</a></li>
+                <li><a href="#TABLE_DATA_EVEN_SELECTED_BACKGRO"> TABLE_DATA_EVEN_SELECTED_BACKGROUND Table data background (even row, selected column)</a></li>
+                <li><a href="#TABLE_DATA_MIX_BACKGROUND Table"> TABLE_DATA_MIX_BACKGROUND Table data background (mix between even and odd)</a></li>
+              </ul>
+            </li>
+          </ul>
+        </li>
+        <li><a href="#Border colors"> Border colors</a><ul>
+            <li><a href="#INFO_BORDER Info (light blue)"> INFO_BORDER Info (light blue)</a></li>
+            <li><a href="#SEPARATOR_BORDER HR line, bottom"> SEPARATOR_BORDER HR line, bottom of h2, attachment table, form (brown)</a></li>
+            <li><a href="#MINOR_SEPARATOR_BORDER Header H3"> MINOR_SEPARATOR_BORDER Header H3..H6 bottom (75% of SEPARATOR_BORDER)</a></li>
+            <li><a href="#LAYOUT_ELEMENT_BORDER Main layou"> LAYOUT_ELEMENT_BORDER Main layout elements (neutral tone) </a></li>
+            <li><a href="#TABLE_BORDER Table border, sup ("> TABLE_BORDER Table border, sup (light neutral tone)</a></li>
+            <li><a href="#TABLE_BORDER_LIGHT Table border"> TABLE_BORDER_LIGHT Table border light</a></li>
+          </ul>
+        </li>
+      </ul>
+    </li>
+  </ul>
+</div>
+
+## <a name="Logical groupings"></a> Logical groupings
+
+### <a name="Text on background"></a> Text on background
+
+#### <a name="MAIN_TEXT_COLOR Main text color"></a> MAIN\_TEXT\_COLOR Main text color
+
+- Set MAIN\_TEXT\_COLOR = #000
+
+#### <a name="MAIN_BACKGROUND_COLOR Main backg"></a> MAIN\_BACKGROUND\_COLOR Main background color
+
+- Set MAIN\_BACKGROUND\_COLOR = #fff
+
+#### <a name="LIGHT_ON_DARK_TEXT_COLOR Light o"></a> LIGHT\_ON\_DARK\_TEXT\_COLOR Light on dark text color
+
+- Set LIGHT\_ON\_DARK\_TEXT\_COLOR = #fff
+
+### <a name="Links"></a> Links
+
+#### <a name="LINK_TEXT_NORMAL Link normal tex"></a> LINK\_TEXT\_NORMAL Link normal text
+
+- Set LINK\_TEXT\_NORMAL = #06c
+
+#### <a name="LINK_BACKGROUND_NORMAL Link norm"></a> LINK\_BACKGROUND\_NORMAL Link normal background
+
+- Set LINK\_BACKGROUND\_NORMAL =
+
+#### <a name="LINK_TEXT_ACTION_BUTTON Link tex"></a> LINK\_TEXT\_ACTION\_BUTTON Link text red (same as LINK\_BACKGROUND\_HOVER)
+
+- Set LINK\_TEXT\_ACTION\_BUTTON = #D6000F
+
+#### <a name="LINK_TEXT_HOVER Link hover text"></a> LINK\_TEXT\_HOVER Link hover text
+
+- Set LINK\_TEXT\_HOVER = #FBF7E8
+
+#### <a name="LINK_BACKGROUND_HOVER Link backg"></a> LINK\_BACKGROUND\_HOVER Link background hover
+
+- Set LINK\_BACKGROUND\_HOVER = #D6000F
+
+#### <a name="SIDE_BAR_LINK_TEXT Side bar link"></a> SIDE\_BAR\_LINK\_TEXT Side bar link text
+
+- Set SIDE\_BAR\_LINK\_TEXT = #666
+
+#### <a name="LINK_TEXT_NORMAL_TABLE_HEADER Ta"></a> LINK\_TEXT\_NORMAL\_TABLE\_HEADER Table header link text
+
+- Set LINK\_TEXT\_NORMAL\_TABLE\_HEADER = #fff
+
+#### <a name="LINK_TEXT_NORMAL_BORDER_TABLE_HE"></a> LINK\_TEXT\_NORMAL\_BORDER\_TABLE\_HEADER Table header link border
+
+- Set LINK\_TEXT\_NORMAL\_BORDER\_TABLE\_HEADER = #bbb
+
+#### <a name="LINK_TEXT_SORTED_TABLE_HEADER So"></a> LINK\_TEXT\_SORTED\_TABLE\_HEADER Sorted table header link text
+
+- Set LINK\_TEXT\_SORTED\_TABLE\_HEADER = #fff
+
+#### <a name="LINK_TEXT_HOVER_TABLE_HEADER Tab"></a> LINK\_TEXT\_HOVER\_TABLE\_HEADER Table header link hover text
+
+- Set LINK\_TEXT\_HOVER\_TABLE\_HEADER = #fff
+
+#### <a name="LINK_BORDER_TABLE_SELECTED_COLUM"></a> LINK\_BORDER\_TABLE\_SELECTED\_COLUMN\_HEADER Link border in selected column header
+
+- Set LINK\_BORDER\_TABLE\_SELECTED\_COLUMN\_HEADER = #999
+
+### <a name="Disabled"></a> Disabled
+
+#### <a name="DISABLED_BORDER Disabled border"></a> DISABLED\_BORDER Disabled border
+
+- Set DISABLED\_BORDER = #e0e0e0
+
+#### <a name="DISABLED_TEXT Disabled text"></a> DISABLED\_TEXT Disabled text
+
+- Set DISABLED\_TEXT = #ccc
+
+#### <a name="DISABLED_BACKGROUND Disabled bac"></a> DISABLED\_BACKGROUND Disabled background
+
+- Set DISABLED\_BACKGROUND = #f5f5f5
+
+### <a name="&#39;New&#39;"></a> 'New'
+
+#### <a name="NEW_TEXT New text (green)"></a> NEW\_TEXT New text (green)
+
+- Set NEW\_TEXT = #049804
+
+#### <a name="NEW_BACKGROUND New background (l"></a> NEW\_BACKGROUND New background (light green)
+
+- Set NEW\_BACKGROUND = #ECFADC
+
+### <a name="Alert"></a> Alert
+
+#### <a name="ALERT_TEXT Alert text (red)"></a> ALERT\_TEXT Alert text (red)
+
+- Set ALERT\_TEXT = #f00
+
+#### <a name="ALERT_TEXT_MUTED Muted alert tex"></a> ALERT\_TEXT\_MUTED Muted alert text (dark red)
+
+- Set ALERT\_TEXT\_MUTED = #900
+
+#### <a name="ALERT_BORDER Alert border"></a> ALERT\_BORDER Alert border
+
+- Set ALERT\_BORDER = #f00
+
+### <a name="Buttons"></a> Buttons
+
+#### <a name="BUTTON_TEXT Button text color (d"></a> BUTTON\_TEXT Button text color (dark gray)
+
+- Set BUTTON\_TEXT = #333
+
+#### <a name="BUTTON_BORDERS Button borders"></a> BUTTON\_BORDERS Button borders
+
+- Set BUTTON\_BORDERS = #ddd #aaa #aaa #ddd
+
+#### <a name="BUTTON_BORDERS_ACTIVE Button bor"></a> BUTTON\_BORDERS\_ACTIVE Button borders (active)
+
+- Set BUTTON\_BORDERS\_ACTIVE = #999 #ccc #ccc #999
+
+#### <a name="SUBMIT_BUTTON_BACKGROUND Submit"></a><a name="SUBMIT_BUTTON_BACKGROUND Submit "></a> SUBMIT\_BUTTON\_BACKGROUND Submit button background (dark yellow)
+
+- Set SUBMIT\_BUTTON\_BACKGROUND = #FED764
+
+#### <a name="SUBMIT_BUTTON_BORDER Submit butt"></a> SUBMIT\_BUTTON\_BORDER Submit button border (blue)
+
+- Set SUBMIT\_BUTTON\_BORDER = #88B6CF
+
+### <a name="Forms"></a> Forms
+
+#### <a name="INPUT_FIELD_BORDERS Input field"></a><a name="INPUT_FIELD_BORDERS Input field "></a> INPUT\_FIELD\_BORDERS Input field borders
+
+- Set INPUT\_FIELD\_BORDERS = #aaa #ddd #ddd #aaa
+
+#### <a name="FORM_INPUT_BORDER Textarea, inpu"></a> FORM\_INPUT\_BORDER Textarea, input and select (darker gray)
+
+- Set FORM\_INPUT\_BORDER = #aaa
+
+#### <a name="FORM_BORDER Form (same as twikiT"></a> FORM\_BORDER Form (same as twikiTable border)
+
+- Set FORM\_BORDER = #ccc
+
+#### <a name="ACTIVE_FORM_BACKGROUND Edit form"></a> ACTIVE\_FORM\_BACKGROUND Edit form, form steps
+
+- Set ACTIVE\_FORM\_BACKGROUND = #f8fbfc
+
+#### <a name="FORMFIELD_ACTIVE Active form fie"></a> FORMFIELD\_ACTIVE Active form field (not implemented yet)
+
+- Set FORMFIELD\_ACTIVE = #ffc
+
+## <a name="Color groupings"></a> Color groupings
+
+### <a name="Text colors"></a> Text colors
+
+#### <a name="GENERAL_TEXT General text (if no"></a> GENERAL\_TEXT General text (if not set in MAIN\_BACKGROUND\_COLOR) (black)
+
+- Set GENERAL\_TEXT = #000
+
+#### <a name="HEADER_TEXT Header text"></a> HEADER\_TEXT Header text
+
+- Set HEADER\_TEXT = #a00
+
+#### <a name="CODE_TEXT Code text, left bar te"></a> CODE\_TEXT Code text, left bar text and links
+
+- Set CODE\_TEXT = #7A4707
+
+#### <a name="MUTED_TEXT Muted text (dark gray"></a> MUTED\_TEXT Muted text (dark gray)
+
+- Set MUTED\_TEXT = #666
+
+#### <a name="GRAYED_OUT_TEXT Grayed out text"></a> GRAYED\_OUT\_TEXT Grayed out text
+
+- Set GRAYED\_OUT\_TEXT = #8E9195
+
+#### <a name="STRONG_TEXT Dark text, header (d"></a> STRONG\_TEXT Dark text, header (dark gray)
+
+- Set STRONG\_TEXT = #333
+
+#### <a name="SEPARATOR Seperator in topic act"></a> SEPARATOR Seperator in topic action bar
+
+- Set SEPARATOR = #aaa
+
+### <a name="Background colors"></a> Background colors
+
+#### <a name="GENERAL_BACKGROUND General backg"></a> GENERAL\_BACKGROUND General background color (if not set in MAIN\_BACKGROUND\_COLOR) (white)
+
+- Set GENERAL\_BACKGROUND = #fff
+
+#### <a name="SIDE_BAR_BACKGROUND Side bar bac"></a> SIDE\_BAR\_BACKGROUND Side bar background
+
+- Set SIDE\_BAR\_BACKGROUND = #f7fafc
+
+#### <a name="SIDE_BAR_PERSONAL_BACKGROUND Sid"></a> SIDE\_BAR\_PERSONAL\_BACKGROUND Side bar personal background
+
+- Set SIDE\_BAR\_PERSONAL\_BACKGROUND = #e6eff5;
+
+#### <a name="INFO_BACKGROUND Info (very light"></a> INFO\_BACKGROUND Info (very light blue) (placeholder for background image)
+
+- Set INFO\_BACKGROUND = #f8fbfc
+
+#### <a name="TOPIC_ACTION_BACKGROUND Topic ac"></a> TOPIC\_ACTION\_BACKGROUND Topic action row (light yellow)
+
+- Set TOPIC\_ACTION\_BACKGROUND = #FCF8EC
+
+#### <a name="HEADER_BACKGROUND H1, H2, etc he"></a> HEADER\_BACKGROUND H1, H2, etc header (light yellow)
+
+- Set HEADER\_BACKGROUND = #FDFAF3
+
+#### <a name="ATTACHMENT_AND_FORM_BACKGROUND A"></a> ATTACHMENT\_AND\_FORM\_BACKGROUND Attachment, form (light yellow)
+
+- Set ATTACHMENT\_AND\_FORM\_BACKGROUND = #FEFCF6
+
+#### <a name="DIFF_HEADER_BACKGROUND Diff head"></a> DIFF\_HEADER\_BACKGROUND Diff header (dark gray) (same as GRAYED\_OUT\_TEXT)
+
+- Set DIFF\_HEADER\_BACKGROUND = #ccc
+
+#### <a name="Table colors"></a> Table colors
+
+##### <a name="TABLE_DATA_BACKGROUND Table data"></a> TABLE\_DATA\_BACKGROUND Table data background
+
+- Set TABLE\_DATA\_BACKGROUND = #f0f6f9
+
+##### <a name="TABLE_HEADER_BACKGROUND Table he"></a> TABLE\_HEADER\_BACKGROUND Table header background
+
+- Set TABLE\_HEADER\_BACKGROUND = #6b7f93
+
+##### <a name="TABLE_SELECTED_COLUMN_HEADER_BAC"></a> TABLE\_SELECTED\_COLUMN\_HEADER\_BACKGROUND Sorted table column accent background
+
+- Set TABLE\_SELECTED\_COLUMN\_HEADER\_BACKGROUND = #345
+
+##### <a name="TABLE_DATA_ODD_BACKGROUND Table"></a><a name="TABLE_DATA_ODD_BACKGROUND Table "></a> TABLE\_DATA\_ODD\_BACKGROUND Table data background (odd row)
+
+- Set TABLE\_DATA\_ODD\_BACKGROUND = #edf4f9
+
+##### <a name="TABLE_DATA_EVEN_BACKGROUND Table"></a> TABLE\_DATA\_EVEN\_BACKGROUND Table data background (even row)
+
+- Set TABLE\_DATA\_EVEN\_BACKGROUND = #ffffff
+
+##### <a name="TABLE_DATA_ODD_SELECTED_BACKGROU"></a> TABLE\_DATA\_ODD\_SELECTED\_BACKGROUND Table data background (odd row, selected column)
+
+- Set TABLE\_DATA\_ODD\_SELECTED\_BACKGROUND = #dce7ee
+
+##### <a name="TABLE_DATA_EVEN_SELECTED_BACKGRO"></a> TABLE\_DATA\_EVEN\_SELECTED\_BACKGROUND Table data background (even row, selected column)
+
+- Set TABLE\_DATA\_EVEN\_SELECTED\_BACKGROUND = #f5f5f5
+
+##### <a name="TABLE_DATA_MIX_BACKGROUND Table"></a><a name="TABLE_DATA_MIX_BACKGROUND Table "></a> TABLE\_DATA\_MIX\_BACKGROUND Table data background (mix between even and odd)
+
+- Set TABLE\_DATA\_MIX\_BACKGROUND = #f7fafc
+
+### <a name="Border colors"></a> Border colors
+
+#### <a name="INFO_BORDER Info (light blue)"></a> INFO\_BORDER Info (light blue)
+
+- Set INFO\_BORDER = #D5E6F3
+
+#### <a name="SEPARATOR_BORDER HR line, bottom"></a> SEPARATOR\_BORDER HR line, bottom of h2, attachment table, form (brown)
+
+- Set SEPARATOR\_BORDER = #E2DCC8
+
+#### <a name="MINOR_SEPARATOR_BORDER Header H3"></a> MINOR\_SEPARATOR\_BORDER Header H3..H6 bottom (75% of SEPARATOR\_BORDER)
+
+- Set MINOR\_SEPARATOR\_BORDER = #E9E4D2
+
+#### <a name="LAYOUT_ELEMENT_BORDER Main layou"></a> LAYOUT\_ELEMENT\_BORDER Main layout elements (neutral tone)
+
+- Set LAYOUT\_ELEMENT\_BORDER = #ccc
+
+#### <a name="TABLE_BORDER Table border, sup ("></a> TABLE\_BORDER Table border, sup (light neutral tone)
+
+- Set TABLE\_BORDER = #ccc
+
+#### <a name="TABLE_BORDER_LIGHT Table border"></a><a name="TABLE_BORDER_LIGHT Table border "></a> TABLE\_BORDER\_LIGHT Table border light
+
+- Set TABLE\_BORDER\_LIGHT = #e2e7eb
+
+Do not change the text below this line unless you know what you are doing!
+
+----
+
+    %STARTATTACH{"theme-colors.css"}%
+    /* PatternSkin colors */
+    /* Generated by AttachContentPlugin from TWiki.PatternSkinColorSettings */
+
+    /* LAYOUT ELEMENTS */
+
+    #patternTopBar {
+       background-color:%MAIN_BACKGROUND_COLOR%;
+       border-color:%LAYOUT_ELEMENT_BORDER%;
+    }
+    #patternMain { /* don't set a background here; use patternOuter */ }
+    #patternOuter {
+       background-color:%MAIN_BACKGROUND_COLOR%; /* Sets background of center col */
+       border-color:%LAYOUT_ELEMENT_BORDER%;
+    }
+    #patternLeftBar, #patternLeftBarContents { /* don't set a background here; use patternWrapper */ }
+    #patternWrapper {
+       background-color:%SIDE_BAR_BACKGROUND%;
+    }
+    #patternBottomBar {
+       background-color:%MAIN_BACKGROUND_COLOR%;
+       border-color:%LAYOUT_ELEMENT_BORDER%;
+    }
+    #patternBottomBarContents,
+    #patternBottomBarContents a:link,
+    #patternBottomBarContents a:visited {
+       color:%GRAYED_OUT_TEXT%;
+    }
+    #patternBottomBarContents a:hover {
+       color:%LINK_TEXT_HOVER%;
+    }
+
+    /* GENERAL HTML ELEMENTS */
+
+    html body {
+       background-color:%MAIN_BACKGROUND_COLOR%;
+       color:%MAIN_TEXT_COLOR%;
+    }
+    /* be kind to netscape 4 that doesn't understand inheritance */
+    body, p, li, ul, ol, dl, dt, dd, acronym, h1, h2, h3, h4, h5, h6 {
+       background-color:transparent;
+    }
+    hr {
+       color:%LAYOUT_ELEMENT_BORDER%;
+       background-color:%LAYOUT_ELEMENT_BORDER%;
+    }
+    pre, code, tt {
+       color:%CODE_TEXT%;
+    }
+    blockquote {
+       border-color:%INFO_BORDER%;
+       background-color:%ACTIVE_FORM_BACKGROUND%;
+    }
+    h1, h2, h3, h4, h5, h6 {
+       color:%HEADER_TEXT%;
+    }
+    h1 a:link,
+    h1 a:visited {
+       color:%HEADER_TEXT%;
+    }
+    h1 a:hover {
+       color:%LINK_TEXT_HOVER%;
+    }
+    h2 {
+       background-color:%HEADER_BACKGROUND%;
+       border-color:%SEPARATOR_BORDER%;
+    }
+    h3, h4, h5, h6 {
+       border-color:%MINOR_SEPARATOR_BORDER%;
+    }
+    /* to override old Render.pm coded font color style */
+    .twikiNewLink font {
+       color:inherit;
+    }
+    .twikiNewLink a:link sup,
+    .twikiNewLink a:visited sup {
+       color:%MUTED_TEXT%;
+       border-color:%TABLE_BORDER%;
+    }
+    .twikiNewLink a:hover sup {
+       background-color:%LINK_BACKGROUND_HOVER%;
+       color:%LINK_TEXT_HOVER%;
+       border-color:%LINK_BACKGROUND_HOVER%;
+    }
+    .twikiNewLink {
+       border-color:%TABLE_BORDER%;
+    }
+    :link:focus,
+    :visited:focus,
+    :link,
+    :visited,
+    :link:active,
+    :visited:active {
+       color:%LINK_TEXT_NORMAL%;
+       background-color:transparent;
+    }
+    :link:hover,
+    :visited:hover {
+       color:%LINK_TEXT_HOVER%;
+       background-color:%LINK_BACKGROUND_HOVER%;
+    }
+    :link:hover img,
+    :visited:hover img {
+       background-color:transparent;
+    }
+    /* fix for hover over transparent logo: */
+    #patternTopBar :link:hover img,
+    #patternTopBar :visited:hover img {
+       background:%MAIN_BACKGROUND_COLOR%;
+    }
+    .patternTopic a:visited {
+       color:%MUTED_TEXT%;
+    }
+    .patternTopic a:hover {
+       color:%LINK_TEXT_HOVER%;
+    }
+
+    /* Form elements */
+
+    textarea,
+    input,
+    select {
+       border-color:%FORM_INPUT_BORDER%;
+       color:%MAIN_TEXT_COLOR%;
+       background-color:%GENERAL_BACKGROUND%;
+    }
+    .twikiSubmit,
+    .twikiButton {
+       border-color:%BUTTON_BORDERS%;
+       color:%BUTTON_TEXT%;
+       background-color:%GENERAL_BACKGROUND%;
+    }
+    .twikiSubmit:active,
+    .twikiButton:active {
+       border-color:%BUTTON_BORDERS_ACTIVE%;
+       color:%GENERAL_TEXT%;
+    }
+    .twikiSubmitDisabled,
+    .twikiSubmitDisabled:active {
+       border-color:%DISABLED_BORDER%;
+       color:%DISABLED_TEXT%;
+       background-color:%DISABLED_BACKGROUND%;
+    }
+    .twikiInputField,
+    .twikiSelect {
+       border-color:%INPUT_FIELD_BORDERS%;
+       color:%MAIN_TEXT_COLOR%;
+       background-color:%MAIN_BACKGROUND_COLOR%;
+    }
+    .twikiInputFieldDisabled {
+       color:%MUTED_TEXT%;
+    }
+
+    /*   -----------------------------------------------------------
+       Plugin elements
+       -----------------------------------------------------------   */
+
+    /* TablePlugin */
+    .twikiTable,
+    .twikiTable td {
+       border-color:%TABLE_BORDER%;
+    }
+    .twikiTable th {
+       border-color:%TABLE_BORDER% %MAIN_BACKGROUND_COLOR%;
+    }
+    .twikiTable th a:link,
+    .twikiTable th a:visited,
+    .twikiTable th a font {
+       color:%LINK_TEXT_NORMAL_TABLE_HEADER%;
+    }
+
+    /* TwistyContrib */
+    .twistyPlaceholder {
+       color:%GRAYED_OUT_TEXT%;
+    }
+    a:hover.twistyTrigger {
+       color:%LINK_TEXT_HOVER%;
+    }
+
+    /* TipsContrib */
+    .tipsOfTheDay {
+       background-color:%INFO_BACKGROUND%;
+    }
+    .patternTopic .tipsOfTheDayHeader {
+       color:%STRONG_TEXT%;
+    }
+    /* TipsContrib - in left bar */
+    #patternLeftBar .tipsOfTheDay a:link,
+    #patternLeftBar .tipsOfTheDay a:visited {
+       color:%HEADER_TEXT%;
+    }
+    #patternLeftBar .tipsOfTheDay a:hover {
+       color:%LINK_TEXT_HOVER%;
+    }
+
+    /* RevCommentPlugin */
+    .revComment .patternTopicAction {
+       background-color:%ATTACHMENT_AND_FORM_BACKGROUND%;
+    }
+
+    /*   -----------------------------------------------------------
+       TWiki styles
+       -----------------------------------------------------------   */
+
+    .twikiGrayText {
+       color:%GRAYED_OUT_TEXT%;
+    }
+    .twikiGrayText a:link,
+    .twikiGrayText a:visited {
+       color:%GRAYED_OUT_TEXT%;
+    }
+    .twikiGrayText a:hover {
+       color:%LINK_TEXT_HOVER%;
+    }
+
+    table.twikiFormTable th.twikiFormTableHRow,
+    table.twikiFormTable td.twikiFormTableRow {
+       color:%MUTED_TEXT%;
+    }
+    .twikiEditForm {
+       color:%MAIN_TEXT_COLOR%;
+    }
+    .twikiEditForm .twikiFormTable,
+    .twikiEditForm .twikiFormTable th,
+    .twikiEditForm .twikiFormTable td {
+       border-color:%TABLE_BORDER_LIGHT%;
+    }
+    /* use a different table background color mix: no odd/even rows, no white background */
+    .twikiEditForm .twikiFormTable td  {
+       background-color:%TABLE_DATA_MIX_BACKGROUND%;
+    }
+    .twikiEditForm .twikiFormTable th {
+       background-color:%TABLE_DATA_ODD_BACKGROUND%;
+    }
+    .patternContent .twikiAttachments,
+    .patternContent .twikiForm {
+       background-color:%ATTACHMENT_AND_FORM_BACKGROUND%;
+       border-color:%SEPARATOR_BORDER%;
+    }
+    .twikiAttachments table,
+    table.twikiFormTable {
+       border-color:%LAYOUT_ELEMENT_BORDER%;
+       background-color:%MAIN_BACKGROUND_COLOR%;
+    }
+    .twikiAttachments table {
+       background-color:%MAIN_BACKGROUND_COLOR%;
+    }
+    .twikiAttachments td,
+    .twikiAttachments th {
+       border-color:%LAYOUT_ELEMENT_BORDER%;
+    }
+    .twikiAttachments .twikiTable th font,
+    table.twikiFormTable th.twikiFormTableHRow font {
+       color:%LINK_TEXT_NORMAL%;
+    }
+
+    .twikiFormSteps {
+       background-color:%ACTIVE_FORM_BACKGROUND%;
+       border-color:%SEPARATOR_BORDER%;
+    }
+    .twikiFormStep {
+       border-color:%SEPARATOR_BORDER%;
+    }
+    .twikiFormStep h3,
+    .twikiFormStep h4 {
+       background-color:transparent;
+    }
+    .twikiToc .twikiTocTitle {
+       color:%MUTED_TEXT%;
+    }
+    .twikiBroadcastMessage {
+       background-color:yellow;
+    }
+    .twikiBroadcastMessage b,
+    .twikiBroadcastMessage strong {
+       color:%ALERT_TEXT%;
+    }
+    .twikiAlert,
+    .twikiAlert code {
+       color:%ALERT_TEXT%;
+    }
+    .twikiEmulatedLink {
+       color:%LINK_TEXT_NORMAL%;
+    }
+    .twikiPageForm table {
+       border-color:%TABLE_BORDER%;
+       background:%MAIN_BACKGROUND_COLOR%;
+    }
+    .twikiPageForm hr {
+       border-color:%FORM_BORDER%;
+       background-color:%FORM_BORDER%;
+       color:%FORM_BORDER%;
+    }
+    .twikiHelp {
+       background-color:%INFO_BACKGROUND%;
+       border-color:%INFO_BORDER%;
+    }
+    .twikiAccessKey {
+       color:inherit;
+       border-color:%GRAYED_OUT_TEXT%;
+    }
+    a:link .twikiAccessKey,
+    a:visited .twikiAccessKey,
+    a:hover .twikiAccessKey {
+       color:inherit;
+    }
+
+    /*   -----------------------------------------------------------
+       Pattern skin specific elements
+       -----------------------------------------------------------   */
+    #patternPage {
+       background-color:%MAIN_BACKGROUND_COLOR%;
+    }
+    /* Left bar */
+    #patternLeftBarContents {
+       color:%MUTED_TEXT%;
+    }
+    #patternLeftBarContents .patternWebIndicator {
+       color:%GENERAL_TEXT%;
+    }
+    #patternLeftBarContents .patternWebIndicator a:link,
+    #patternLeftBarContents .patternWebIndicator a:visited {
+       color:%GENERAL_TEXT%;
+    }
+    #patternLeftBarContents .patternWebIndicator a:hover {
+       color:%LINK_TEXT_HOVER%;
+    }
+    #patternLeftBarContents hr {
+       color:%SEPARATOR_BORDER%;
+       background-color:%SEPARATOR_BORDER%;
+    }
+    #patternLeftBarContents a:link,
+    #patternLeftBarContents a:visited {
+       color:%SIDE_BAR_LINK_TEXT%;
+    }
+    #patternLeftBarContents a:hover {
+       color:%LINK_TEXT_HOVER%;
+    }
+    #patternLeftBarContents b,
+    #patternLeftBarContents strong {
+       color:%STRONG_TEXT%;
+    }
+    #patternLeftBarContents .patternChangeLanguage {
+       color:%GRAYED_OUT_TEXT%;
+    }
+    #patternLeftBarContents .patternLeftBarPersonal {
+       background-color:%SIDE_BAR_PERSONAL_BACKGROUND%
+    }
+    #patternLeftBarContents .patternLeftBarPersonal a:link,
+    #patternLeftBarContents .patternLeftBarPersonal a:visited,
+    #patternLeftBarContents .twikiHierarchicalNavigation a:link,
+    #patternLeftBarContents .twikiHierarchicalNavigation a:visited {
+       color:%LINK_TEXT_NORMAL%;
+    }
+    #patternLeftBarContents .patternLeftBarPersonal a:hover,
+    #patternLeftBarContents .twikiHierarchicalNavigation a:hover {
+       color:%LINK_TEXT_HOVER%;
+       background-color:%LINK_BACKGROUND_HOVER%;
+    }
+    #patternLeftBarContents .twikiHierarchicalNavigation {
+       background:%MAIN_BACKGROUND_COLOR%;
+    }
+    .patternTopicActions {
+       border-color:%SEPARATOR_BORDER%;
+    }
+    .patternTopicAction {
+       color:%MUTED_TEXT%;
+       border-color:%SEPARATOR_BORDER%;
+       background-color:%TOPIC_ACTION_BACKGROUND%;
+    }
+    .patternTopicAction s,
+    .patternTopicAction strike {
+       color:%DISABLED_TEXT%;
+    }
+    .patternTopicAction .twikiSeparator {
+       color:%SEPARATOR_BORDER%;
+    }
+    .patternActionButtons a:link,
+    .patternActionButtons a:visited {
+       color:%LINK_TEXT_ACTION_BUTTON%;
+    }
+    .patternActionButtons a:hover {
+       color:%LINK_TEXT_HOVER%;
+    }
+    .patternTopicAction .twikiAccessKey {
+       color:%LINK_TEXT_ACTION_BUTTON%;
+       border-color:%LINK_TEXT_ACTION_BUTTON%;
+    }
+    .patternTopicAction label {
+       color:%GENERAL_TEXT%;
+    }
+    .patternHelpCol {
+       color:%GRAYED_OUT_TEXT%;
+    }
+    .patternFormFieldDefaultColor {
+       /* input fields default text color (no user input) */
+       color:%GRAYED_OUT_TEXT%;
+    }
+
+    .patternToolBar .patternButton s,
+    .patternToolBar .patternButton strike,
+    .patternToolBar .patternButton a:link,
+    .patternToolBar .patternButton a:visited {
+       border-color:%SEPARATOR_BORDER%;
+       background-color:%GENERAL_BACKGROUND%;
+    }
+    .patternToolBar .patternButton a:link,
+    .patternToolBar .patternButton a:visited {
+       color:%MUTED_TEXT%;
+    }
+    .patternToolBar .patternButton s,
+    .patternToolBar .patternButton strike {
+       color:%DISABLED_TEXT%;
+       border-color:%DISABLED_BORDER%;
+    }
+    .patternToolBar .patternButton a:hover {
+       background-color:%LINK_BACKGROUND_HOVER%;
+       color:%LINK_TEXT_HOVER%;
+       border-color:%LINK_TEXT_ACTION_BUTTON%;
+    }
+    .patternToolBar .patternButton img {
+       background-color:transparent;
+    }
+    .patternToolBarBottom {
+       border-color:%SEPARATOR_BORDER%;
+    }
+    .patternToolBar a:link .twikiAccessKey,
+    .patternToolBar a:visited .twikiAccessKey {
+       color:inherit;
+       border-color:%MUTED_TEXT%;
+    }
+    .patternToolBar a:hover .twikiAccessKey {
+       background-color:transparent;
+       color:inherit;
+    }
+
+    .patternRevInfo,
+    .patternRevInfo a:link,
+    .patternRevInfo a:visited {
+       color:%GRAYED_OUT_TEXT%;
+    }
+    .patternRevInfo a:hover {
+       color:%LINK_TEXT_HOVER%;
+    }
+
+    .patternMoved,
+    .patternMoved a:link,
+    .patternMoved a:visited {
+       color:%GRAYED_OUT_TEXT%;
+    }
+    .patternMoved a:hover {
+       color:%LINK_TEXT_HOVER%;
+    }
+    .patternSaveHelp {
+       background-color:%MAIN_BACKGROUND_COLOR%;
+    }
+
+    /* WebSearch, WebSearchAdvanced */
+    table#twikiSearchTable th,
+    table#twikiSearchTable td {
+       background-color:%GENERAL_BACKGROUND%;
+       border-color:%TABLE_BORDER%;
+    }
+    table#twikiSearchTable th {
+       color:%MAIN_TEXT_COLOR%;
+    }
+    table#twikiSearchTable td.first {
+       background-color:%TOPIC_ACTION_BACKGROUND%;
+    }
+
+    /*   -----------------------------------------------------------
+       Search results
+       styles and overridden styles used in search.pattern.tmpl
+       -----------------------------------------------------------   */
+
+    h3.patternSearchResultsHeader,
+    h4.patternSearchResultsHeader {
+       background-color:%ATTACHMENT_AND_FORM_BACKGROUND%;
+       border-color:%LAYOUT_ELEMENT_BORDER%;
+    }
+    h4.patternSearchResultsHeader {
+       color:%MAIN_TEXT_COLOR%;
+    }
+    .patternNoViewPage h4.patternSearchResultsHeader {
+       color:%HEADER_TEXT%;
+    }
+    .patternSearchResult .twikiBottomRow {
+       border-color:%TABLE_BORDER%;
+    }
+    .patternSearchResult .twikiAlert {
+       color:%ALERT_TEXT%;
+    }
+    .patternSearchResult .twikiSummary .twikiAlert {
+       color:%ALERT_TEXT_MUTED%;
+    }
+    .patternSearchResult .twikiNew {
+       background-color:%NEW_BACKGROUND%;
+       border-color:%NEW_TEXT%;
+       color:%NEW_TEXT%;
+    }
+    .patternViewPage .patternSearchResultsBegin {
+       border-color:%TABLE_BORDER%;
+    }
+
+    /* Search results in book view format */
+
+    .patternBookView .twikiTopRow {
+       background-color:transparent; /* set to WEBBGCOLOR in css.pattern.tmpl */
+       color:%MUTED_TEXT%;
+    }
+    .patternBookView .twikiBottomRow {
+       border-color:%TABLE_BORDER%;
+    }
+    .patternBookView .patternSearchResultCount {
+       color:%GRAYED_OUT_TEXT%;
+    }
+
+    /* oopsmore.pattern.tmpl */
+
+    table.patternDiffOptions img {
+       border-color:%LAYOUT_ELEMENT_BORDER%;
+    }
+
+    /* edit.pattern.tmpl */
+
+    .twikiChangeFormButton .twikiButton,
+    .twikiChangeFormButtonHolder .twikiButton { /* looks like a link */
+       color:%LINK_TEXT_NORMAL%;
+       background:none;
+    }
+    .patternSig input {
+       color:%GRAYED_OUT_TEXT%;
+       background-color:%MAIN_BACKGROUND_COLOR%;
+    }
+
+    /* preview.pattern.tmpl */
+
+    .patternPreviewArea {
+       border-color:%ALERT_BORDER%;
+       background-color:%MAIN_BACKGROUND_COLOR%;
+    }
+
+    /* rdiff.pattern.tmpl */
+
+    .patternDiff {
+       border-color:%TABLE_HEADER_BACKGROUND%;
+    }
+    .patternDiff h4.patternSearchResultsHeader {
+       background-color:%TABLE_HEADER_BACKGROUND%;
+       color:%LIGHT_ON_DARK_TEXT_COLOR%;
+    }
+    .patternDiff h4.patternSearchResultsHeader a:link,
+    .patternDiff h4.patternSearchResultsHeader a:visited {
+       color:%LIGHT_ON_DARK_TEXT_COLOR%;
+    }
+    tr.twikiDiffDebug td {
+       border-color:%TABLE_BORDER%;
+    }
+    .patternDiffPage .twikiDiffTable th {
+       background-color:%DIFF_HEADER_BACKGROUND%;
+    }
+    /* Changed */
+    .twikiDiffChangedHeader,
+    tr.twikiDiffDebug .twikiDiffChangedText,
+    tr.twikiDiffDebug .twikiDiffChangedText {
+       background:#9f9; /* green - do not change */
+    }
+    /* Deleted */
+    .twikiDiffDeletedHeader,
+    tr.twikiDiffDebug .twikiDiffDeletedMarker,
+    tr.twikiDiffDebug .twikiDiffDeletedText {
+       background-color:#f99; /* red - do not change */
+    }
+    /* Added */
+    .twikiDiffAddedHeader,
+    tr.twikiDiffDebug .twikiDiffAddedMarker,
+    tr.twikiDiffDebug .twikiDiffAddedText {
+       background-color:#ccf; /* violet - do not change */
+    }
+    /* Unchanged */
+    tr.twikiDiffDebug .twikiDiffUnchangedText {
+       color:%GRAYED_OUT_TEXT%;
+    }
+    .twikiDiffUnchangedTextContents { }
+    .twikiDiffLineNumberHeader {
+       background-color:%DIFF_HEADER_BACKGROUND%;
+    }
+
+    /* IMAGES */
+    /* image positions are set here as well as these are dependent on the image */
+
+    .twikiInputField {
+       background-image:url(background_input.gif);
+       background-repeat:repeat-x;
+    }
+    .twikiInputFieldDisabled {
+       background-image:none;
+       border:none;
+    }
+    .twikiButton {
+       background-image:url(background_button.gif);
+       background-repeat:repeat-x;
+    }
+    .patternToolBarButtons .patternButton a {
+       /*
+       background-image:url(background_button.gif);
+       background-repeat:repeat-x;
+       */
+    }
+    .twikiSubmit {
+       background-image:url(background_submit.gif);
+       background-repeat:repeat-x;
+    }
+    .twikiSubmitDisabled {
+       background-image:none;
+    }
+    .twikiToc li {
+       background-image:url(bullet-child-black.gif);
+       background-repeat:no-repeat;
+       background-position:0 .35em;
+    }
+    /*#patternLeftBarContents .patternLeftBarPersonal,*/
+    #twikiLogin,
+    #patternLeftBarContents .tipsOfTheDayContents {
+       background-image:url(gradient_blue.gif);
+       background-repeat:repeat-x;
+    }
+    #patternOuter {
+       /* gradient yellow of left bar and main */
+       background-image:url(gradient_yellow.gif);
+       background-repeat:repeat-x;
+    }
+    .patternPrintPage #patternOuter {
+       background:#fff; /* white - do not change */
+    }
+    .twikiPageForm table {
+       background-image:url(form_gradient.gif);
+       background-repeat:repeat-x;
+    }
+
+    /* commong settings */
+    .patternLeftBarPersonal li,
+    .twikiHierarchicalNavigation .twikiChildTopics li,
+    .twikiHierarchicalNavigation .twikiParentTopic li,
+    li.patternLogOut,
+    li.patternLogIn {
+       padding-left:13px;
+       background-position:0 .25em;
+       background-repeat:no-repeat;
+    }
+    .patternLeftBarPersonal li,
+    .twikiHierarchicalNavigation .twikiChildTopics li {
+       background-image:url(bullet-blue.gif);
+    }
+    .twikiHierarchicalNavigation .twikiParentTopic li {
+       background-image:url(bullet-parent.gif);
+    }
+    .patternLeftBarPersonal li.patternLogOut {
+       background-image:url(bullet-lock.gif);
+    }
+    .patternLeftBarPersonal li.patternLogIn {
+       background-image:url(bullet-lock.gif);
+    }
+    %ENDATTACH%
index 82822fd..3cec1f4 100644 (file)
@@ -33,7 +33,7 @@ If you want to learn how to create your own look or skin based on PatternSkin, r
 PatternSkin uses namespaces for templates, by adding one (sometimes two - multiple) class names to the template's body tag.
 
 - The body tag in view.pattern.tmpl for instance has the class name "patternViewPage": `<body >`. All CSS elements specific to the view template thus can be defined as `.patternViewPage .someClassName`.
-- All templates that are _not_ the view template have the body class name "patternNoViewPage". That makes it easy to give all of these pages a different layout in one sweep (smaller or wider margins for instance). Template edit.pattern.tmpl uses `<body >`.
+- All templates that are _not_ the view template have the body class name "patternNoViewPage". That makes it easy to give all of these pages a different layout (smaller or wider margins for instance) in one sweep. Template edit.pattern.tmpl uses `<body >`.
 
 ### <a name="Page type classes"></a> Page type classes
 
index 01d313f..fe1c496 100644 (file)
@@ -4,9 +4,10 @@
 
 <div>
   <ul>
-    <li><a href="#Introduction"> Introduction</a><ul>
+    <li><a href="#First Read: How to modify _Patt"> First Read: How to modify PatternSkin styles</a><ul>
+        <li><a href="#Changing the color scheme"> Changing the color scheme</a></li>
         <li><a href="#When you need lots of graphic ch"> When you need lots of graphic changes: Rewriting CSS</a></li>
-        <li><a href="#When you need small adjustments:"> When you need small adjustments: Adding to existing CSS</a></li>
+        <li><a href="#When you need to make small adju"> When you need to make small adjustments: Adding to existing CSS</a></li>
       </ul>
     </li>
     <li><a href="#Recipes"> Recipes</a><ul>
         <li><a href="#Setting _EditTablePlugin styles"> Setting EditTablePlugin styles</a></li>
       </ul>
     </li>
+    <li><a href="#Style sheet documentation"> Style sheet documentation</a></li>
   </ul>
 </div>
 
-## <a name="Introduction"></a> Introduction
+## <a name="First Read: How to modify _Patte"></a> First Read: How to modify PatternSkin styles
 
 PatternSkin uses 3 style sheets (attached to [[PatternSkin]]):
 
@@ -31,6 +33,10 @@ PatternSkin uses 3 style sheets (attached to [[PatternSkin]]):
 
 When customizing your TWiki installation, you can either choose to completely rewrite all css styles, or to selectively override some styles. The latter option is by far less time consuming, but all depends on your graphical wishes.
 
+### <a name="Changing the color scheme"></a> Changing the color scheme
+
+Have a look at [[PatternSkinColorSettings]].
+
 ### <a name="When you need lots of graphic ch"></a> When you need lots of graphic changes: Rewriting CSS
 
 - Create a new topic that will contain your new CSS files
@@ -41,7 +47,7 @@ When customizing your TWiki installation, you can either choose to completely re
           * Set TWIKISTYLEURL = %PUBURLPATH%/%TWIKIWEB%/YourNewTopic/style.css
           * Set TWIKICOLORSURL = %PUBURLPATH%/%TWIKIWEB%/YourNewTopic/colors.css
 
-### <a name="When you need small adjustments:"></a> When you need small adjustments: Adding to existing CSS
+### <a name="When you need to make small adju"></a> When you need to make small adjustments: Adding to existing CSS
 
 With CSS you cannot remove already defined classes, you can only add to it, or overwrite existing styles. <br /> Overriding default CSS is done with 3 variables: `USERLAYOUTURL`, `USERSTYLEURL`, `USERCOLORSURL`.
 
@@ -93,3 +99,7 @@ See example at: [[PatternSkinCssCookbookCenterPageBorder]]
 ### <a name="Setting _EditTablePlugin styles"></a> Setting EditTablePlugin styles
 
 See example at: [[PatternSkinCssCookbookEditTableStyle]]
+
+## <a name="Style sheet documentation"></a> Style sheet documentation
+
+See [[PatternSkinCss]] for documentation of PatternSkin CSS classes
index 27ffb15..1ebd678 100644 (file)
@@ -2,4 +2,4 @@
 
 <div> This line loads the extra style definition: <pre>
    * Set USERSTYLEURL = %ATTACHURL%/hideleftbar.css
-</pre> You can write this line in [[TWiki/TWikiPreferences]], in [[Main/WebPreferences]], in your user topic or on a single page. </div>
+</pre> You can write this line in [[TWiki/TWikiPreferences]], in [[Main/WebPreferences]], in your user topic, or on a single page. </div>
index 941f121..ed3aa7f 100644 (file)
@@ -4,32 +4,55 @@
 
 <div>
   <ul>
-    <li><a href="#Logo questions"> Logo questions</a><ul>
+    <li><a href="#First Read: How to modify _Patt"> First Read: How to modify PatternSkin templates</a></li>
+    <li><a href="#Logo"> Logo</a><ul>
         <li><a href="#How can I change the web logo?"> How can I change the web logo?</a></li>
         <li><a href="#How do I set a site-wide logo?"> How do I set a site-wide logo?</a></li>
         <li><a href="#My logo does not fit the top bar"> My logo does not fit the top bar</a></li>
         <li><a href="#I want to change the white space"> I want to change the white space above and below the logo</a></li>
       </ul>
     </li>
-    <li><a href="#Top bar questions"> Top bar questions</a><ul>
+    <li><a href="#Top bar"> Top bar</a><ul>
         <li><a href="#I want to set or change the top"> I want to set or change the top background image</a></li>
         <li><a href="#I want to have the web color in"> I want to have the web color in the top bar</a></li>
         <li><a href="#I want to remove the Jump and Se"> I want to remove the Jump and Search boxes from the top bar </a></li>
         <li><a href="#I want to hide the top bar"> I want to hide the top bar</a></li>
       </ul>
     </li>
-    <li><a href="#Left bar questions"> Left bar questions</a><ul>
+    <li><a href="#Left bar"> Left bar</a><ul>
         <li><a href="#I want to hide the left bar"> I want to hide the left bar</a></li>
       </ul>
     </li>
     <li><a href="#Other page parts"> Other page parts</a><ul>
         <li><a href="#I want to hide the edit buttons"> I want to hide the edit buttons from certain users</a></li>
+        <li><a href="#I want to remove the History but"> I want to remove the History button from the bottom</a></li>
+        <li><a href="#I want to insert text outside of"> I want to insert text outside of the topic content</a></li>
       </ul>
     </li>
   </ul>
 </div>
 
-## <a name="Logo questions"></a> Logo questions
+## <a name="First Read: How to modify _Patte"></a> First Read: How to modify PatternSkin templates
+
+If you need to change any of the elements that are visible on the common 'view' pages, you need to change the 'view' _template_: `/templates/view.pattern.tmpl`. The quickest way would be to simply change the text in the template. A safer way - strongly recommended, because it will survive a TWiki update - is to create your own custom skin. That may sound like an awful lot of work, but in reality a skin may be as much as 1 file that consists of only a few lines of code.
+
+**Example** %BR% Let's say you want to simplify the bottom toolbar and remove all links except for "More topic actions". You would need to target `%TMPL:DEF{"topicactionbuttons"}%`, which is located in `view.pattern.tmpl`.
+
+**The steps you would need:**
+
+1. Think up a name for your skin. Let us use `myskin` for now.
+2. Create a new (empty) view template file in `/templates` called `view.myskin.tmpl`.
+3. In `view.myskin.tmpl` you write: %BR% `%TMPL:INCLUDE{"view"}%` %BR% `%TMPL:DEF{"topicactionbuttons"}%%TMPL:P{"activatable_more"}%%TMPL:END%`
+4. Now the skin is set. For testing, view any topic and append to the topic name: `?cover=myskin`. You should see an effect now.
+5. To make the changes visible on all pages, go to [[Main.TWikiPreferences|Main/TWikiPreferences]] (to keep [[TWikiPreferences]] intact) and write:
+
+> * Set COVER = myskin
+>
+> or write
+>
+>        * Set SKIN = myskin,pattern
+
+## <a name="Logo"></a> Logo
 
 ### <a name="How can I change the web logo?"></a> How can I change the web logo?
 
@@ -37,10 +60,10 @@ By default the logo at the top left of each web points to the image with name `l
 
 Redefine your custom variables in [[Main.TWikiPreferences|Main/TWikiPreferences]] (to keep [[TWikiPreferences]] intact):
 
-          * Set WEBLOGONAME = logo.gif
-          * Set WEBLOGOIMG = %PUBURLPATH%/%BASEWEB%/%WEBPREFSTOPIC%/%WEBLOGONAME%
-          * Set WEBLOGOURL = %SCRIPTURLPATH{"view"}%/%BASEWEB%/%HOMETOPIC%
-          * Set WEBLOGOALT = Home
+> * Set WEBLOGONAME = logo.gif
+>        * Set WEBLOGOIMG = %PUBURLPATH%/%BASEWEB%/%WEBPREFSTOPIC%/%WEBLOGONAME%
+>        * Set WEBLOGOURL = %SCRIPTURLPATH{"view"}%/%BASEWEB%/%HOMETOPIC%
+>        * Set WEBLOGOALT = Home
 
 There are 2 ways to change the logo in a web:
 
@@ -48,18 +71,21 @@ There are 2 ways to change the logo in a web:
 
 > - Create a new image named `logo.gif` and attach it to the web's [[WebPreferences]] topic. [[PatternSkin]]'s stylesheet assumes the logo is 40px high. More about that later.
 > - You can also upload the image with FTP to `/pub/YourWeb/WebPreferences/`.
+> - Copy the above instructions ("Redefine your custom variables") and insert your logo name.
 
 **Using a new filename:**
 
 > - Attach whatever image and attach it to the web's [[WebPreferences]] topic. Then add to the [[WebPreferences]] (under _Custom web preferences_):
 >
 >           * Set WEBLOGONAME = your-logo-name.gif-or-png
+>
+> - Copy the above instructions ("Redefine your custom variables") and insert your logo name.
 
 ### <a name="How do I set a site-wide logo?"></a> How do I set a site-wide logo?
 
 There is a bunch of site-wide logo variables in [[Main.TWikiPreferences|Main/TWikiPreferences]]: `WIKILOGOIMG`, `WIKILOGOURL` and `WIKILOGOALT`. To change only the web logo image to site-wide, in [[Main.TWikiPreferences|Main/TWikiPreferences]] set:
 
-       * Set WEBLOGOIMG = %WIKILOGOIMG%
+> * Set WEBLOGOIMG = %WIKILOGOIMG%
 
 ### <a name="My logo does not fit the top bar"></a> My logo does not fit the top bar
 
@@ -79,12 +105,12 @@ The top bar is 64 pixels high by default.
 >     #patternClearHeaderLeft,
 >     #patternClearHeaderRight,
 >     #patternTopBarContentsOuter {
->        height:64px; /* top bar height; make room for header columns */
->        overflow:hidden;
+>      height:64px; /* top bar height; make room for header columns */
+>      overflow:hidden;
 >     }
 >     %TMPL:END%
 >
-> Only change the number.
+> Only change the number from 64px to another value.
 
 **Using style sheets:**
 
@@ -100,9 +126,9 @@ The top bar is 64 pixels high by default.
 
 ### <a name="I want to change the white space"></a> I want to change the white space above and below the logo
 
-Change the table style in [[WebTopBar]]. Default top padding is 11px.
+Change the table style in topic [[WebTopBar]]. The default top padding is 11px.
 
-## <a name="Top bar questions"></a> Top bar questions
+## <a name="Top bar"></a> Top bar
 
 ### <a name="I want to set or change the top"></a><a name="I want to set or change the top "></a> I want to set or change the top background image
 
@@ -110,8 +136,8 @@ The image at the top is called "header art" - commonly the top image found on bl
 
 Redefine your custom variables in [[Main.TWikiPreferences|Main/TWikiPreferences]] (to keep [[TWikiPreferences]] intact):
 
-       * Set WEBHEADERART = %PUBURLPATH%/%TWIKIWEB%/PatternSkin/TWiki_header.gif
-       * Set WEBHEADERBGCOLOR = somehexcolor (no quotes, for example: #ffffff)
+> * Set WEBHEADERART = %PUBURLPATH%/%TWIKIWEB%/PatternSkin/TWiki_header.gif
+>        * Set WEBHEADERBGCOLOR = somehexcolor (no quotes, for example: #ffffff)
 
 You can also set `WEBHEADERART` per web, by defining the variable in the Web's WebPreferences.
 
@@ -119,7 +145,7 @@ You can also set `WEBHEADERART` per web, by defining the variable in the Web's W
 
 Redefine `WEBHEADERBGCOLOR` in [[Main.TWikiPreferences|Main/TWikiPreferences]] (to keep [[TWikiPreferences]] intact):
 
-       * Set WEBHEADERBGCOLOR = %WEBBGCOLOR%
+> * Set WEBHEADERBGCOLOR = %WEBBGCOLOR%
 
 ### <a name="I want to remove the Jump and Se"></a> I want to remove the Jump and Search boxes from the top bar
 
@@ -131,23 +157,33 @@ You can remove these items from [[WebTopBar]].
 
 **Using templates:**
 
-> The view template is populated like this:
->
->     %TMPL:INCLUDE{"page"}%
->     %TMPL:INCLUDE{"viewtopbar"}%
->     %TMPL:INCLUDE{"viewtoolbar"}%
->     %TMPL:INCLUDE{"viewleftbar"}%
->     %TMPL:INCLUDE{"viewrightbar"}%
->     %TMPL:INCLUDE{"viewtopicactionbuttons"}%
->     %TMPL:INCLUDE{"viewbottombar"}%
->
-> Each included template draws a part of the screen. Omit
+The view template is populated with page elements using template inclusions:
+
+    %TMPL:INCLUDE{"page"}%
+    %TMPL:INCLUDE{"viewtopbar"}%
+    %TMPL:INCLUDE{"viewtoolbar"}%
+    %TMPL:INCLUDE{"viewleftbar"}%
+    %TMPL:INCLUDE{"viewrightbar"}%
+    %TMPL:INCLUDE{"viewtopicactionbuttons"}%
+    %TMPL:INCLUDE{"viewbottombar"}%
+
+Each included template draws a part of the screen.%BR% Omit `%TMPL:INCLUDE{"viewtopbar"}%` to hide the top bar.
+
+Another approach is to clear the contents of module `topbar`; for example in `view.myskin.tmpl`:
+
+> %TMPL:INCLUDE{"view"}%
 >
-> `%TMPL:INCLUDE{"viewtopbar"}%`
+>     %TMPL:INCLUDE{"topbar"}%%TMPL:END%
 >
-> to hide the top bar, or in a view template clear it using
+> and add:
 >
-> `%TMPL:INCLUDE{"viewtopbar"}%%TMPL:END%`
+>     %TMPL:DEF{"topbardimensions"}%#patternTopBar,
+>     #patternClearHeaderCenter,
+>     #patternClearHeaderLeft,
+>     #patternClearHeaderRight,
+>     #patternTopBarContentsOuter {
+>      height:0px;
+>     }%TMPL:END%
 
 **Using style sheets:**
 
@@ -157,7 +193,7 @@ You can remove these items from [[WebTopBar]].
 >
 > .
 
-## <a name="Left bar questions"></a> Left bar questions
+## <a name="Left bar"></a> Left bar
 
 ### <a name="I want to hide the left bar"></a> I want to hide the left bar
 
@@ -169,7 +205,7 @@ You can remove these items from [[WebTopBar]].
 >
 > to hide the left bar, or in a view template clear it using
 >
-> `%TMPL:INCLUDE{"viewleftbar"}%%TMPL:END%`
+> `%TMPL:DEF{"viewleftbar"}%%TMPL:END%`
 
 **Using style sheets:**
 
@@ -187,12 +223,57 @@ It may defy the wiki-ness of your TWiki installation, but in certain circumstanc
 
 Create in the template directory the file `view.customer.tmpl`. 'Empty' `topicaction` and `toolbar` by writing in the template:
 
-    %TMPL:INCLUDE{"view.pattern"}%
-    %TMPL:DEF{"topicaction"}%%TMPL:END%
-    %TMPL:DEF{"toolbar"}%%TMPL:END%
+> %TMPL:INCLUDE{"view"}%
+>     %TMPL:DEF{"topicaction"}%%TMPL:END%
+>     %TMPL:DEF{"toolbar"}%%TMPL:END%
 
 In [[TWikiGuest]], set the cover to
 
-       * Set COVER = customer
+> * Set COVER = customer
 
 By default this topic is editable only by TWikiAdminGroup members.
+
+### <a name="I want to remove the History but"></a> I want to remove the History button from the bottom
+
+All action buttons are defined in `viewtopicactionbuttons.pattern.tmpl`. Remove module `revisions` from `%TMPL:DEF{"topicactionbuttons"}%`. %BR%
+
+> <code> %TMPL:DEF\{"topicactionbuttons"\}%%TMPL:P\{"activatable\_raw\_edit"\}%%TMPL:P\{"sep"\}% %TMPL:P\{context="WysiwygPluginEnabled" then="activatable\_edit\_wysiwyg"\}%%TMPL:P\{context="WysiwygPluginEnabled" then="sep"\}% %TMPL:P\{"activatable\_attach"\}%%TMPL:P\{"sep"\}% %TMPL:P\{"printable"\}%%TMPL:P\{"sep"\}% %TMPL:P\{"raw"\}%%TMPL:P\{"sep"\}% %TMPL:P\{"backlinks"\}%%TMPL:P\{"sep"\}% <span><font><s>%TMPL:P\{"revisions"\}%%TMPL:P\{"sep"\}%</s></font></span> %TMPL:P\{"activatable\_more"\}%%TMPL:END% </code>
+
+In your `view.myskin.tmpl` file (see above) you write:
+
+> %TMPL:INCLUDE{"view"}%
+>
+>     %TMPL:DEF{"topicactionbuttons"}% |
+>     %TMPL:P{context="WysiwygPluginEnabled" then="activatable_edit_wysiwyg"}%
+>     %TMPL:P{"activatable_attach"}% |
+>     %TMPL:P{"printable"}% |
+>     %TMPL:P{"raw"}% |
+>     %TMPL:P{"backlinks"}% |
+>     %TMPL:P{"activatable_more"}%%TMPL:END%
+>
+> Remove all newlines if you copy-paste above text.
+
+Test by appending `?cover=myskin` to any topic.
+
+### <a name="I want to insert text outside of"></a> I want to insert text outside of the topic content
+
+PatternSkin has 2 'buckets' to write additional content to: `beforetextcontents` and `aftertextcontents`, both defined in `view.pattern.tmpl`. These containers can contain text or html and are placed directly before and after the topic text.
+
+Both modules are wrapped in CSS containers:
+
+- `beforetextcontents` - wrapped in `div` of class `twikiBeforeText`
+- `aftertextcontents` - wrapped in `div` of class `twikiAfterText`
+
+To put contents before the main text, use the custom skin approach as described above.%BR% So our `view.myskin.tmpl` file contains:
+
+> %TMPL:INCLUDE{"view"}%
+>
+>     %TMPL:DEF{"beforetextcontents"}%This is the text before%TMPL:END%
+
+Test by appending `?cover=myskin` to any topic.
+
+Use the same procedure for contents to be put after the topic text:
+
+> %TMPL:INCLUDE{"view"}%
+>
+>     %TMPL:DEF{"aftertextcontents"}%This is the text after%TMPL:END%
diff --git a/TWiki/PatternSkinElements.mdwn b/TWiki/PatternSkinElements.mdwn
new file mode 100644 (file)
index 0000000..99cd7e5
--- /dev/null
@@ -0,0 +1,433 @@
+<div><strong>NOTE:</strong> Edit and Attach will be disabled today between 05:00 PM and 06:00 PM PDT (00:00 to 01:00 GMT) for a scheduled TWiki maintenance.</div>
+
+# <a name="h1 headerwith link"></a><a name=" h1 headerwith link"></a> h1 header [[with link|Main/TOPIC]]
+
+**Intro text.** Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text.
+
+<div><span>On this page:</span><ul>
+    <li>
+      <ul>
+        <li><a href="#h2 headerwith link"> h2 header with link</a></li>
+        <li><a href="#h2 headerwith link - no newline"> h2 header with link - no newline</a><ul>
+            <li><a href="#h3 headerwith link"> h3 header with link</a><ul>
+                <li><a href="#h4 headerwith link"> h4 header with link</a><ul>
+                    <li><a href="#h5 headerwith link"> h5 header with link</a><ul>
+                        <li><a href="#h6 headerwith link"> h6 header with link</a></li>
+                      </ul>
+                    </li>
+                  </ul>
+                </li>
+              </ul>
+            </li>
+          </ul>
+        </li>
+        <li><a href="#Text sizes"> Text sizes</a></li>
+        <li><a href="#Text colors"> Text colors</a></li>
+        <li><a href="#Rule"> Rule</a></li>
+        <li><a href="#Images"> Images</a></li>
+        <li><a href="#Blockquote"> Blockquote</a></li>
+        <li><a href="#Table"> Table</a></li>
+        <li><a href="#Verbatim"> Verbatim</a></li>
+        <li><a href="#Lists"> Lists</a></li>
+        <li><a href="#Attachment table"> Attachment table</a></li>
+        <li><a href="#TWiki form"> TWiki form</a></li>
+        <li><a href="#Search results and search form"> Search results and search form</a></li>
+      </ul>
+    </li>
+    <li><a href="#Web Search"> Web Search </a><ul>
+        <li><a href="#Upload Form"> Upload Form</a><ul>
+            <li><a href="#Attach new file"> Attach new file </a></li>
+            <li><a href="#Comment"> Comment </a></li>
+            <li><a href="#Properties"> Properties </a></li>
+          </ul>
+        </li>
+        <li><a href="#Login form"> Login form</a><ul>
+            <li><a href="#Username"> Username</a></li>
+            <li><a href="#Password"> Password</a></li>
+          </ul>
+        </li>
+        <li><a href="#Comment form/table"> Comment form/table</a></li>
+        <li><a href="#Comment"> Comment</a></li>
+        <li><a href="#Links"> Links</a></li>
+        <li><a href="#Form elements"> Form elements</a></li>
+        <li><a href="#Help text"> Help text</a></li>
+      </ul>
+    </li>
+  </ul>
+</div>
+
+## <a name="h2 headerwith link"></a> h2 header [[with link|Main/TOPIC]]
+
+**Intro text.** Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text.
+
+## <a name="h2 headerwith link - no newline"></a> h2 header [[with link|Main/TOPIC]] - no newline
+
+**Intro text.** Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text.
+
+### <a name="h3 headerwith link"></a> h3 header [[with link|Main/TOPIC]]
+
+**Intro text.** Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text.
+
+#### <a name="h4 headerwith link"></a> h4 header [[with link|Main/TOPIC]]
+
+**Intro text.** Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text.
+
+##### <a name="h5 headerwith link"></a> h5 header [[with link|Main/TOPIC]]
+
+**Intro text.** Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text.
+
+###### <a name="h6 headerwith link"></a> h6 header [[with link|Main/TOPIC]]
+
+**Intro text.** Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text.
+
+## <a name="Text sizes"></a> Text sizes
+
+Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal <span>Smallish text. Smallish text. Smallish text. Smallish text. Smallish text. Smallish text. Smallish text. Smallish text. Smallish text. </span> <span>Small text. Small text. Small text. Small text. Small text. Small text. Small text. Small text. Small text. </span>
+
+## <a name="Text colors"></a> Text colors
+
+<span>Grayed out text.</span>
+
+<span>Alert text.</span>
+
+## <a name="Rule"></a> Rule
+
+----
+
+## <a name="Images"></a> Images
+
+Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Text with :-) smilies and <img src="http://www.dementia.org/twiki//view/Main/WebHome/info.gif" width="16" height="16" alt="info" /> icons. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text.
+
+## <a name="Blockquote"></a> Blockquote
+
+> Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text.
+
+## <a name="Table"></a> Table
+
+<table border="1" cellpadding="0" cellspacing="0">
+  <tr>
+    <th bgcolor="#99CCCC"><strong> Numbers </strong></th>
+    <th bgcolor="#99CCCC"><strong> Texts </strong></th>
+  </tr>
+  <tr>
+    <td> 456 </td>
+    <td> uvw </td>
+  </tr>
+  <tr>
+    <td> 123 </td>
+    <td> xyz </td>
+  </tr>
+  <tr>
+    <td> 789 </td>
+    <td> rst </td>
+  </tr>
+</table>
+
+## <a name="Verbatim"></a> Verbatim
+
+    verbatim text
+    A lot more of verbatim text lot more of verbatim text lot more of verbatim text lot more of verbatim text lot more of verbatim text lot more of verbatim text lot more of verbatim text lot more of verbatim text
+
+## <a name="Lists"></a> Lists
+
+Bullet list:
+
+- Item A
+- Item B
+  - Item B.1
+  - Item B.2
+- Item C
+
+Numbered list:
+
+1. Item 1
+2. Item 2
+  1. Item 2.1
+  2. Item 2.2
+3. Item 3
+
+## <a name="Attachment table"></a> Attachment table
+
+<div>
+  <table border="1" cellpadding="0" cellspacing="0" id="twikiAttachmentsTable" rules="rows" style="border-width: 1px" summary="Topic attachments">
+    <caption>Topic attachments</caption>
+    <tr>
+      <th align="center" bgcolor="#ffffff" style="text-align: center; vertical-align: middle" valign="middle"><a href="%TOPIC%?sortcol=0;table=1;up=0#sorted_table" rel="nofollow" title="Sort by this column"><font color="#0066cc">I</font></a></th>
+      <th align="center" bgcolor="#ffffff" style="text-align: center; vertical-align: middle" valign="middle"><a href="%TOPIC%?sortcol=1;table=1;up=0#sorted_table" rel="nofollow" title="Sort by this column"><font color="#0066cc">Attachment</font></a></th>
+      <th align="center" bgcolor="#ffffff" style="text-align: center; vertical-align: middle" valign="middle"><a href="%TOPIC%?sortcol=2;table=1;up=0#sorted_table" rel="nofollow" title="Sort by this column"><font color="#0066cc">Action</font></a></th>
+      <th align="center" bgcolor="#ffffff" style="text-align: center; vertical-align: middle" valign="middle"><a href="%TOPIC%?sortcol=3;table=1;up=0#sorted_table" rel="nofollow" title="Sort by this column"><font color="#0066cc">Size</font></a></th>
+      <th align="center" bgcolor="#ffffff" style="text-align: center; vertical-align: middle" valign="middle"><a href="%TOPIC%?sortcol=4;table=1;up=0#sorted_table" rel="nofollow" title="Sort by this column"><font color="#0066cc">Date</font></a></th>
+      <th align="center" bgcolor="#ffffff" style="text-align: center; vertical-align: middle" valign="middle"><a href="%TOPIC%?sortcol=5;table=1;up=0#sorted_table" rel="nofollow" title="Sort by this column"><font color="#0066cc">Who</font></a></th>
+      <th align="center" bgcolor="#ffffff" style="text-align: center; vertical-align: middle" valign="middle"><a href="%TOPIC%?sortcol=6;table=1;up=0#sorted_table" rel="nofollow" title="Sort by this column"><font color="#0066cc">Comment</font></a></th>
+    </tr>
+    <tr>
+      <td align="center" bgcolor="#ffffff" style="text-align: center; vertical-align: top" valign="top"><img align="top" alt="txt" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/txt.gif" width="16" /><span>txt</span></td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"><a href="/twiki4/MAIN/bin/viewfile/TWiki/FileAttachment?rev=;filename=Sample.txt">Sample.txt</a></td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"><a href="/twiki4/MAIN/bin/attach/TWiki/FileAttachment?filename=Sample.txt&revInfo=1" rel="nofollow" title="change, update, previous revisions, move, delete...">manage</a></td>
+      <td align="right" bgcolor="#ffffff" style="text-align: right; vertical-align: top" valign="top"> 0.1 K </td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"> 22 Jul 2000 - 19:37 </td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"><a href="TWikiContributor">TWikiContributor</a></td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"> Just a sample </td>
+    </tr>
+    <tr>
+      <td align="center" bgcolor="#ffffff" style="text-align: center; vertical-align: top" valign="top"><img align="top" alt="gif" border="0" height="16" src="http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/gif.gif" width="16" /><span>gif</span></td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"><a href="/twiki4/MAIN/bin/viewfile/TWiki/FileAttachment?rev=;filename=Smile.gif">Smile.gif</a></td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"><a href="/twiki4/MAIN/bin/attach/TWiki/FileAttachment?filename=Smile.gif&revInfo=1" rel="nofollow" title="change, update, previous revisions, move, delete...">manage</a></td>
+      <td align="right" bgcolor="#ffffff" style="text-align: right; vertical-align: top" valign="top"> 0.1 K </td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"> 22 Jul 2000 - 19:38 </td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"><a href="TWikiContributor">TWikiContributor</a></td>
+      <td align="left" bgcolor="#ffffff" style="text-align: left; vertical-align: top" valign="top"> Smiley face </td>
+    </tr>
+  </table>
+</div>
+
+## <a name="TWiki form"></a> TWiki form
+
+<div>
+  <table border="1" class="twikiFormTable">
+    <tr>
+      <th class="twikiFormTableHRow twikiFirstCol" colspan="2"><a href="/twiki4/MAIN/bin/view/Main/UserForm">Main.UserForm</a></th>
+    </tr>
+    <tr valign="top">
+      <td align="right" class="twikiFormTableRow twikiFirstCol"> Title </td>
+      <td>
+      </td>
+    </tr>
+    <tr valign="top">
+      <td align="right" class="twikiFormTableRow twikiFirstCol"> FirstName </td>
+      <td> Arthur </td>
+    </tr>
+    <tr valign="top">
+      <td align="right" class="twikiFormTableRow twikiFirstCol"> LastName </td>
+      <td> Clemens </td>
+    </tr>
+    <tr valign="top">
+      <td align="right" class="twikiFormTableRow twikiFirstCol"> OrganisationName </td>
+      <td>
+      </td>
+    </tr>
+    <tr valign="top">
+      <td align="right" class="twikiFormTableRow twikiFirstCol"> OrganisationURL </td>
+      <td>
+      </td>
+    </tr>
+    <tr valign="top">
+      <td align="right" class="twikiFormTableRow twikiFirstCol"> Profession </td>
+      <td>
+      </td>
+    </tr>
+    <tr valign="top">
+      <td align="right" class="twikiFormTableRow twikiFirstCol"> Country </td>
+      <td> Netherlands </td>
+    </tr>
+    <tr valign="top">
+      <td align="right" class="twikiFormTableRow twikiFirstCol"> State </td>
+      <td>
+      </td>
+    </tr>
+    <tr valign="top">
+      <td align="right" class="twikiFormTableRow twikiFirstCol"> Address </td>
+      <td>
+      </td>
+    </tr>
+    <tr valign="top">
+      <td align="right" class="twikiFormTableRow twikiFirstCol"> Location </td>
+      <td>
+      </td>
+    </tr>
+    <tr valign="top">
+      <td align="right" class="twikiFormTableRow twikiFirstCol"> Telephone </td>
+      <td>
+      </td>
+    </tr>
+    <tr valign="top">
+      <td align="right" class="twikiFormTableRow twikiFirstCol"> VoIP </td>
+      <td>
+      </td>
+    </tr>
+    <tr valign="top">
+      <td align="right" class="twikiFormTableRow twikiFirstCol"> InstantMessaging (IM) </td>
+      <td>
+      </td>
+    </tr>
+    <tr valign="top">
+      <td align="right" class="twikiFormTableRow twikiFirstCol"> HomePage </td>
+      <td>
+      </td>
+    </tr>
+    <tr valign="top">
+      <td align="right" class="twikiFormTableRow twikiFirstCol"> Comment </td>
+      <td>
+      </td>
+    </tr>
+  </table>
+</div>
+
+## <a name="Search results and search form"></a> Search results and search form
+
+# <a name="Web Search"></a><a name=" Web Search"></a> <a name="Web_Search"></a> Web Search
+
+<span>Searched: **caching**</span><span></span><span></span>
+
+#### <span>**Results from TWiki web** retrieved at 00:46 (GMT)</span><span></span><br />
+
+<div>
+  <div>
+    <div><a href="/twiki4/MAIN/bin/view/TWiki/HeadlinesPlugin"><b>HeadlinesPlugin</b></a></div>
+    <div><a href="/twiki4/MAIN/bin/view/Main/TWikiContributor">TWikiContributor</a></div>
+    <div><span>NEW</span> - <a href="/twiki4/MAIN/bin/rdiff/TWiki/HeadlinesPlugin" rel="nofollow">27 May 2006 - 07:56</a> </div>
+    <br />
+  </div>
+  <div>
+    <div>Headlines Plugin Description This plugin displays RSS and ATOM feeds from news sites. Use it to build news portals that show headline news. Note: Syndic8.com ...</div>
+  </div>
+</div>
+<div>
+  <div>
+    <div><a href="/twiki4/MAIN/bin/view/TWiki/TWikiAjaxContrib"><b>TWikiAjaxContrib</b></a></div>
+    <div><a href="/twiki4/MAIN/bin/view/Main/TWikiContributor">TWikiContributor</a></div>
+    <div>r2 - <a href="/twiki4/MAIN/bin/rdiff/TWiki/TWikiAjaxContrib" rel="nofollow">02 Nov 2006 - 22:04</a> </div>
+    <br />
+  </div>
+  <div>
+    <div>TWikiAjaxContrib TWikiAjaxContrib provides a convenience wrapper class around Yahoo's Connection Manager (AJAX). Goals are: To make it possible for plugins ...</div>
+  </div>
+</div>
+<div>
+  <div>
+    <div><a href="/twiki4/MAIN/bin/view/TWiki/TWikiAjaxContribExamples"><b>TWikiAjaxContribExamples</b></a></div>
+    <div><a href="/twiki4/MAIN/bin/view/Main/TWikiContributor">TWikiContributor</a></div>
+    <div>r2 - <a href="/twiki4/MAIN/bin/rdiff/TWiki/TWikiAjaxContribExamples" rel="nofollow">02 Nov 2006 - 22:04</a> </div>
+    <br />
+  </div>
+  <div>
+    <div>!TWikiAjaxContrib Examples Code examples and demos for TWikiAjaxContrib. Default loading indicator Because TWiki files are served along dynamic urls we cannot use ...</div>
+  </div>
+</div>
+<div id="twikiBottomResultCount">Number of topics: <b>3</b></div>
+
+<a name="twikiSearchForm"></a>
+
+<div>
+  <form action="/twiki4/MAIN/bin/view/TWiki/WebSearch">
+    <table border="0" cellpadding="0" cellspacing="0" id="twikiSearchTable">
+      <tr>
+        <td colspan="2"><input name="search" size="40" type="text" value="caching" /> <input type="submit" value="Search" /><span>  <a href="/twiki4/MAIN/bin/view/TWiki/WebSearchAdvanced">Advanced search</a> | <a href="/twiki4/MAIN/bin/view/TWiki/SearchHelp">Help</a></span><div style="padding: 1em 0 0 0">TIP: to search for all topics that contain <code>"SOAP"</code>, <code>"WSDL"</code>, a literal <code>"web service"</code>, but not <code>"shampoo"</code>, write: <code>soap wsdl "web service" -shampoo</code></div>
+        </td>
+      </tr>
+      <tr>
+        <th>Search where:</th>
+        <td><input checked 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 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 TWiki Web only)</span></td>
+      </tr>
+    </table>
+  </form>
+</div>
+
+## <a name="Upload Form"></a> Upload Form
+
+<div>
+  <div>
+    <h3><a name="Attach new file"></a><a name=" Attach new file"></a> <a name="Attach_new_file"></a> Attach new file </h3>
+    <p> Select a new local file to update attachment <code>Sample.txt</code> <span>(<a href="#">UploadingUser</a>)</span><br />Upload up to 10000 KB. </p>
+    <p>
+    </p><input name="filepath" size="30" type="file" value="Sample.txt" /><input name="filename" type="hidden" value="Sample.txt" /></div>
+  <div>
+    <h3><a name="Comment"></a><a name=" Comment"></a> <a name="Comment"></a> Comment </h3>
+    <p> Describe the file so other people know what it is. </p>
+    <p>
+    </p><input maxlength="256" name="filecomment" size="50" type="text" value="Just a sample" /></div>
+  <div>
+    <h3><a name="Properties"></a><a name=" Properties"></a> <a name="Properties"></a> Properties </h3>
+    <p>
+    </p><input id="createlink" name="createlink" type="checkbox" /><label for="createlink">Create a link to the attached file</label><span>Images will be displayed, for other attachments a link will be created.</span><p>
+    </p><input id="hidefile" name="hidefile" type="checkbox" /><label for="hidefile">Do not show attachment in table</label><span>Attachments will not be shown in topic view page.</span></div>
+  <div><input name="changeproperties" type="submit" value="Change comment and properties only" /></div>
+</div>
+
+<a name="topic-actions"> </a>
+
+<div>
+  <div style="margin-top: -1px"><span> <input type="submit" value="Upload file" /> or <a accesskey="c" href="#" rel="nofollow" title="Back to topic"><span class="twikiAccessKey">C</span>ancel</a></span></div>
+</div>
+
+## <a name="Login form"></a> Login form
+
+<div>
+  <div>
+    <p>
+    </p>
+  </div>
+  <div>
+    <h3><a name="Username"></a> Username </h3>
+    <p><img align="top" alt="person" border="0" height="16" src="http://www.dementia.org/twiki//view/Main/WebHome/person.gif" width="16" /></p><input name="username" size="30" tabindex="1" type="text" value="" /><p>
+    </p>
+  </div>
+  <div>
+    <h3><a name="Password"></a> Password </h3>
+    <p><img align="top" alt="key" border="0" height="16" src="http://www.dementia.org/twiki//view/Main/WebHome/key.gif" width="16" /></p><input name="password" size="30" tabindex="2" type="password" value="" /></div>
+  <div><input tabindex="3" type="submit" value="Logon" /></div>
+</div>
+
+## <a name="Comment form/table"></a> Comment form/table
+
+(rendered html)
+
+<table border="0" cellpadding="0" cellspacing="0" style="border-width: 0px">
+  <tr>
+    <td align="right" bgcolor="#ffffff" style="vertical-align: top; border-width: 0px" valign="top">
+      <label for="comment_url">Url</label>
+    </td>
+    <td bgcolor="#ffffff" style="vertical-align: top; border-width: 0px" valign="top"><input id="comment_url" name="comment_url" size="40" type="text" value="http://" /></td>
+  </tr>
+  <tr>
+    <td bgcolor="#ffffff" style="vertical-align: top; border-width: 0px" valign="top">
+      <label for="comment_link">Link label</label>
+    </td>
+    <td bgcolor="#ffffff" style="vertical-align: top; border-width: 0px" valign="top"><input id="comment_link" name="comment_link" size="40" type="text" /></td>
+  </tr>
+  <tr>
+    <td align="right" bgcolor="#ffffff" style="vertical-align: top; border-width: 0px" valign="top">
+      <label for="bookmark_comment_text">Comment</label>
+    </td>
+    <td bgcolor="#ffffff" style="vertical-align: top; border-width: 0px" valign="top"><input id="bookmark_comment_text" name="bookmark_comment_text" size="40" type="text" value="" /></td>
+  </tr>
+  <tr>
+    <td bgcolor="#ffffff" style="vertical-align: top; border-width: 0px" valign="top">
+    </td>
+    <td bgcolor="#ffffff" style="vertical-align: top; border-width: 0px" valign="top"><input type="submit" value="Add bookmark" /></td>
+  </tr>
+</table>
+<input name="comment_action" type="hidden" value="save" />
+<input name="comment_type" type="hidden" value="bookmark" />
+<input name="comment_index" type="hidden" value="14" />
+<div>
+</div>
+
+## <a name="Comment"></a> Comment
+
+<form action="http://www.dementia.org/twiki/save" enctype="multipart/form-data" id="above0" method="post" name="above0"><input name="comment_action" type="hidden" value="save" /><input name="comment_type" type="hidden" value="above" /><input name="comment_index" type="hidden" value="0" /></form>
+
+## <a name="Links"></a> Links
+
+[[WebHome]] [[DoesNotExist]]
+
+## <a name="Form elements"></a> Form elements
+
+<input type="submit"" value="twikiButton" />
+
+<input type="submit"" value="twikiSubmit" />
+
+<input size="30" />
+
+<textarea rows="4" size="30">
+</textarea>
+
+## <a name="Help text"></a> Help text
+
+<div>
+  <ul>
+    <li><strong>Help:</strong> Please see <a href="" onclick="return launchWindow('TWiki','FileAttachment')" rel="nofollow" target="TWikiVariables">FileAttachment</a> for more information about attaching files. </li>
+    <li><strong>Bug:</strong> Internet Explorer 4.0 or earlier: If you get an "Internal Server Error" message when you upload a file, you need to try again. It should work the second time. </li>
+  </ul>
+</div>
index b12f39c..250892d 100644 (file)
     </tr>
     <tr>
       <td align="right"> Plugin Version: </td>
-      <td> 08 May 2005 </td>
+      <td> 15 Apr 2006 </td>
     </tr>
     <tr>
       <td align="right"> Change History: </td>
       <td>  </td>
     </tr>
     <tr>
+      <td align="right"> 15 Apr 2006: </td>
+      <td> Adding css classes to buttons. Removed debug print statement causing 500s on SunOne. Prevent extra space in settings on saves. Switched to earlier handler. Converted all SCRIPTURL to SCRIPTURLPATH, and added support. The only SCRIPTURLs should be the one in the BASE tag and those in mail notification templates. Because the forms package was throwing an exception when it failed to create a form, the edit preferences plugin was aborting the whole of the session whenever the form specified in EDITPREFERENCES didn't exist. Changed it so that the Form constructor does not throw, but returns undef on a non-existant form, and changed preferences plugin to be tolerant of missing forms (ie defaults all fields to text if the form is missing, of is a Set exists which is not in the form). </td>
+    </tr>
+    <tr>
       <td align="right"> 26 May 2005: </td>
       <td> Crawford Currie recoded to use code from Form.pm to render form fields. </td>
     </tr>
index f18027a..9b85231 100644 (file)
@@ -3,7 +3,6 @@ This topic is a placeholder for registrations not yet completed.
 Attachments are made when people first register, held pending until the registration is confirmed and approved, and are removed when registration is completed.
 
 - Set ALLOWTOPICVIEW = [[TWikiAdminGroup]]
-- Set ALLOWTOPICRENAME = [[TWikiAdminGroup]]
 - Set ALLOWTOPICCHANGE = [[TWikiAdminGroup]]
 
 **_Related Topics:_** [[AdminToolsCategory]]
index 1467e5e..79bb7e6 100644 (file)
@@ -129,4 +129,9 @@ Here is stuff for our UNIX freaks: (copied from 'man egrep')
 >
 > The backreference \\n, where n is a single digit, matches the substring previously matched by the nth parenthesized subexpression of the regular expression.
 
+**_Related Links:_**
+
+- <http://perldoc.perl.org/perlretut.html> - Regular expressions tutorial
+- <http://www.perl.com/doc/manual/html/pod/perlre.html> - Perl regular expressions
+
 **_Related Topics:_** [[UserDocumentationCategory]]
index 93a0630..df25753 100644 (file)
@@ -46,9 +46,11 @@ Render bullet lists in a variety of formats
 - Wrap long text with continuation lines, the Plugin does not do that for you%BR% `Align continuation lines with leading spaces like this`
 - You can specify an icon for a bullet of render type **tree** or **icon**:
   - Attach the icon to this Plugin topic, e.g. `myicon.gif`, or
-  - Use one of the existing icons: ![globe.gif](http://www.dementia.org/twiki//view/globe.gif) `globe.gif`, ![home.gif](http://www.dementia.org/twiki//view/home.gif) `home.gif`, ![virtualhome.gif](http://www.dementia.org/twiki//view/virtualhome.gif) `virtualhome.gif`, ![group.gif](http://www.dementia.org/twiki//view/group.gif) `group.gif`, ![persons.gif](http://www.dementia.org/twiki//view/persons.gif) `persons.gif`, ![virtualpersons.gif](http://www.dementia.org/twiki//view/virtualpersons.gif) `virtualpersons.gif`, ![person.gif](http://www.dementia.org/twiki//view/person.gif) `person.gif`, ![virtualperson.gif](http://www.dementia.org/twiki//view/virtualperson.gif) `virtualperson.gif`, ![email.gif](http://www.dementia.org/twiki//view/email.gif) `email.gif`, ![trend.gif](http://www.dementia.org/twiki//view/trend.gif) `trend.gif`, ![folder.gif](http://www.dementia.org/twiki//view/folder.gif) `folder.gif`, ![file.gif](http://www.dementia.org/twiki//view/file.gif) `file.gif`, ![doc.gif](http://www.dementia.org/twiki//view/doc.gif) `doc.gif`, ![image.gif](http://www.dementia.org/twiki//view/image.gif) `image.gif`, ![pdf.gif](http://www.dementia.org/twiki//view/pdf.gif) `pdf.gif`, ![ppt.gif](http://www.dementia.org/twiki//view/ppt.gif) `ppt.gif`, ![sound.gif](http://www.dementia.org/twiki//view/sound.gif) `sound.gif`, ![xls.gif](http://www.dementia.org/twiki//view/xls.gif) `xls.gif`, ![zip.gif](http://www.dementia.org/twiki//view/zip.gif) `zip.gif`, ![see.gif](http://www.dementia.org/twiki//view/see.gif) `see.gif`
+  - Use one of the existing icons: ![globe.gif](http://www.dementia.org/twiki//view/globe.gif) `globe.gif`, ![home.gif](http://www.dementia.org/twiki//view/home.gif) `home.gif`, ![virtualhome.gif](http://www.dementia.org/twiki//view/virtualhome.gif) `virtualhome.gif`, ![group.gif](http://www.dementia.org/twiki//view/group.gif) `group.gif`, ![persons.gif](http://www.dementia.org/twiki//view/persons.gif) `persons.gif`, ![virtualpersons.gif](http://www.dementia.org/twiki//view/virtualpersons.gif) `virtualpersons.gif`, ![person.gif](http://www.dementia.org/twiki//view/person.gif) `person.gif`, ![virtualperson.gif](http://www.dementia.org/twiki//view/virtualperson.gif) `virtualperson.gif`, ![email.gif](http://www.dementia.org/twiki//view/email.gif) `email.gif`, ![trend.gif](http://www.dementia.org/twiki//view/trend.gif) `trend.gif`, ![folder.gif](http://www.dementia.org/twiki//view/folder.gif) `folder.gif`, ![folders.gif](http://www.dementia.org/twiki//view/folders.gif) `folders.gif`, ![file.gif](http://www.dementia.org/twiki//view/file.gif) `file.gif`, ![files.gif](http://www.dementia.org/twiki//view/files.gif) `files.gif`, ![doc.gif](http://www.dementia.org/twiki//view/doc.gif) `doc.gif`, ![image.gif](http://www.dementia.org/twiki//view/image.gif) `image.gif`, ![pdf.gif](http://www.dementia.org/twiki//view/pdf.gif) `pdf.gif`, ![ppt.gif](http://www.dementia.org/twiki//view/ppt.gif) `ppt.gif`, ![sound.gif](http://www.dementia.org/twiki//view/sound.gif) `sound.gif`, ![xls.gif](http://www.dementia.org/twiki//view/xls.gif) `xls.gif`, ![zip.gif](http://www.dementia.org/twiki//view/zip.gif) `zip.gif`, ![see.gif](http://www.dementia.org/twiki//view/see.gif) `see.gif`
   - Refer to an attached icon at the beginning of the bullet with:
     - `icon:myicon Followed by normal bullet text`
+  - Any [[TWikiDocGraphics]] icon can be used as well:
+    - `%ICON{name}% Followed by normal bullet text`
 
 ## <a name="Examples"></a> Examples
 
@@ -443,7 +445,7 @@ Plugin settings are stored as preferences variables. To reference a plugin setti
 
 ## <a name="Plugin Installation Instructions"></a> Plugin Installation Instructions
 
-**_Note:_** You do not need to install anything on the browser to use this plugin. The following instructions are for the administrator who installs the plugin on the server where TWiki is running.
+**_Note:_** You do not need to install anything on the browser to use this plugin. The following instructions are for the administrator who installs the plugin on the TWiki server.
 
 - Download the ZIP file from the Plugin web (see below)
 - Unzip <code>**%TOPIC%.zip**</code> in your twiki installation directory. Content: <table border="1" cellpadding="0" cellspacing="0">
@@ -468,8 +470,8 @@ Plugin settings are stored as preferences variables. To reference a plugin setti
     <td> Image files for themes </td>
   </tr>
 </table>
-- Test if the installation was successful:
-  - See if the above example works
+- TWiki 4.0 and up: Run the [configure](http://www.dementia.org/twiki//configure) script to enable the Plugin
+- Test if the installation was successful: See if above examples work
 
 ## <a name="Plugin Info"></a> Plugin Info
 
@@ -479,14 +481,26 @@ Plugin settings are stored as preferences variables. To reference a plugin setti
     <td> TWiki:Main/PeterThoeny </td>
   </tr>
   <tr>
+    <td align="right"> Copyright: </td>
+    <td> © 2006, <a href="http://www.structuredwikis.com/peter.html" target="_top">Peter Thoeny</a></td>
+  </tr>
+  <tr>
+    <td align="right"> License: </td>
+    <td> GPL (<a href="http://www.gnu.org/copyleft/gpl.html" target="_top">GNU General Public License</a>) </td>
+  </tr>
+  <tr>
     <td align="right"> Plugin Version: </td>
-    <td> 25 Apr 2006 (V1.033) </td>
+    <td> 23 Sep 2006 (V1.034) </td>
   </tr>
   <tr>
     <td align="right"> Change History: </td>
     <td>  </td>
   </tr>
   <tr>
+    <td align="right"> 23 Sep 2006: </td>
+    <td> Support for img tag and image URL after <code>icon:</code> (suggested by TWiki:Main.JanFilipsky); support for [[TWiki/TWikiDocGraphics]] icons, such as <code>%ICON{folder}%</code> instead of <code>icon:folder</code>; added files.gif and folders.gif (contributed by TWiki:Main.SteveHobbs) </td>
+  </tr>
+  <tr>
     <td align="right"> 25 Apr 2006: </td>
     <td> SVN sync, Cairo + Dakar compatibility </td>
   </tr>
@@ -556,6 +570,6 @@ Plugin settings are stored as preferences variables. To reference a plugin setti
   </tr>
 </table>
 
-**_Related Topics:_** [[TWikiPreferences]], [[TWikiPlugins]], TWiki:Plugins/TreePlugin
+**_Related Topics:_** [[TWikiPlugins]], [[DeveloperDocumentationCategory]], [[AdminDocumentationCategory]], [[TWikiPreferences]], TWiki:Plugins/TreePlugin
 
--- TWiki:Main/PeterThoeny - 21 Nov 2004
+-- TWiki:Main/PeterThoeny - 23 Sep 2006
index 8884933..f462f97 100644 (file)
@@ -2,30 +2,31 @@
 
 **_Remember your password?_** Use [[ChangePassword]] instead. Otherwise, use this form to get a new one e-mailed to you.
 
-%X% **_Note:_** you **must** have at least one valid registered e-mail to be able to reset your password. If none of your registered e-mail addresses is valid, and you have forgotten your password, contact 0.
-
-[[TWikiUsers]] has a list of other TWiki users.
-
 <form action="http://www.dementia.org/twiki/passwd/Main/WebHome" method="post" name="passwd">
   <div>
+    <div><strong>After submitting this form, you will receive an e-mail with your new, <strong>system-generated</strong> password, and a link to a page where you can change it.</strong><p> %X% you <strong>must</strong> have at least one valid registered e-mail to be able to reset your password. If none of your registered e-mail addresses is valid, and you have forgotten your password, contact 0. </p>
+    </div>
     <div>
-      <table border="1" cellpadding="0" cellspacing="0" style="border-width: 1px">
+      <table border="0" cellpadding="0" cellspacing="0" style="border-width: 0px">
         <tr>
-          <td style=""> Your [[TWiki/LoginName]]: </td>
-          <td style=""><input name="LoginName" size="40" type="text" value="" /> <code><font color="red">**</font></code></td>
+          <td colspan="2" style="border-width: 0px"> Fields marked <code><font color="red">**</font></code> are required </td>
         </tr>
         <tr>
-          <td style="">  <input name="action" type="hidden" value="resetPassword" /><input name="TopicName" type="hidden" value="%TOPIC%" /></td>
-          <td style=""><input type="submit" value=" Reset password " />    (Fields marked <code><font color="red">**</font></code> are required) </td>
+          <td align="right" style="border-width: 0px"> Your [[TWiki/LoginName]]: </td>
+          <td style="border-width: 0px"><input name="LoginName" size="40" type="text" value="" /> <code><font color="red">**</font></code></td>
         </tr>
       </table>
     </div>
+    <div><input name="action" type="hidden" value="resetPassword" /> <input name="TopicName" type="hidden" value="%TOPIC%" /> <input type="submit" value=" Reset password " /></div>
   </div>
 </form>
 
-After submitting this form, you will receive an e-mail with your new, **system-generated** password, and a link to a page where you can change it.
-
-If you have any questions, please contact 0.
+<div>
+  <ul>
+    <li><img align="top" alt="info" border="0" height="16" src="http://www.dementia.org/twiki//view/Main/WebHome/info.gif" width="16" /> [[Main/TWikiUsers]] has a list of other TWiki users. </li>
+    <li><img align="top" alt="info" border="0" height="16" src="http://www.dementia.org/twiki//view/Main/WebHome/info.gif" width="16" /> If you have any questions, please contact 0. </li>
+  </ul>
+</div>
 
 **_Related topics:_** [[ChangePassword]], [[ChangeEmailAddress]], [[UserToolsCategory]], [[AdminToolsCategory]]
 
index 822f4f6..bed7ff6 100644 (file)
@@ -8,86 +8,40 @@ Most people not familiar (enough) with Regular Expressions mostly cut and paste
   <ul>
     <li>
       <ul>
-        <li><a href="#Pattern 1: Extract values from a"> Pattern 1: Extract values from a table</a><ul>
-            <li><a href="#Problem definition"> Problem definition</a></li>
-            <li><a href="#Solution"> Solution</a></li>
-          </ul>
-        </li>
+        <li><a href="#Pattern 1: Extract values from a"> Pattern 1: Extract values from a table</a></li>
       </ul>
     </li>
     <li><a href="#TWiki Installation Error">TWiki Installation Error</a><ul>
-        <li><a href="#Pattern 2: List generated from f"> Pattern 2: List generated from form classification</a><ul>
-            <li><a href="#Problem"> Problem</a></li>
-            <li><a href="#Test case"> Test case</a></li>
-            <li><a href="#Solution"> Solution</a></li>
-          </ul>
-        </li>
-        <li><a href="#Pattern 3: Creating lists of TWi"> Pattern 3: Creating lists of TWiki usernames</a><ul>
-            <li><a href="#Problem"> Problem</a></li>
-            <li><a href="#Solution 1: Appropriate for Sep"> Solution 1: Appropriate for Sep 2004 TWiki (Cairo)</a></li>
-          </ul>
-        </li>
+        <li><a href="#Pattern 2: List generated from f"> Pattern 2: List generated from form classification</a></li>
+        <li><a href="#Pattern 3: Creating lists of TWi"> Pattern 3: Creating lists of TWiki usernames</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><ul>
-        <li>
-          <ul>
-            <li><a href="#Solution 2: As Solution 1, but w"> Solution 2: As Solution 1, but with possibility for multi-selecting usernames</a></li>
-          </ul>
-        </li>
+        <li><a href="#Pattern 4: Extract the parent of"> Pattern 4: Extract the parent of a given topic</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><ul>
-        <li>
-          <ul>
-            <li><a href="#Solution 3: Appropriate for TWik"> Solution 3: Appropriate for TWiki 4 (Dakar)</a></li>
-          </ul>
-        </li>
-        <li><a href="#Pattern 4: Extract the parent of"> Pattern 4: Extract the parent of a given topic</a><ul>
-            <li><a href="#Problem"> Problem</a></li>
-            <li><a href="#Solution"> Solution</a></li>
-            <li><a href="#Test Case"> Test Case</a></li>
-          </ul>
-        </li>
-        <li><a href="#Pattern 5: Search and display th"> Pattern 5: Search and display the home topics of public webs in a list</a><ul>
-            <li><a href="#Problem"> Problem</a></li>
-            <li><a href="#Solution"> Solution</a></li>
-            <li><a href="#Test case"> Test case</a></li>
-          </ul>
-        </li>
+        <li><a href="#Pattern 5: Show all Children of"> Pattern 5: Show all Children of a given topic</a></li>
+        <li><a href="#Pattern 6: Search and display th"> Pattern 6: Search and display the home topics of public webs in a list</a></li>
       </ul>
     </li>
     <li><a href="#TWiki Installation Error">TWiki Installation Error</a><ul>
-        <li>
-          <ul>
-            <li><a href="#Alternative solution"> Alternative solution</a></li>
-          </ul>
-        </li>
-        <li><a href="#Pattern 6: Extract a value from"> Pattern 6: Extract a value from a bullet list</a><ul>
-            <li><a href="#Problem"> Problem</a></li>
-            <li><a href="#Solution"> Solution</a></li>
-            <li><a href="#Test case"> Test case</a></li>
-          </ul>
-        </li>
+        <li><a href="#Pattern 7: Create a select box w"> Pattern 7: Create a select box with values from a bullet list</a></li>
+        <li><a href="#Pattern 8: Extract a value from"> Pattern 8: Extract a value from a named bullet list item</a></li>
       </ul>
     </li>
     <li><a href="#TWiki Installation Error">TWiki Installation Error</a><ul>
-        <li><a href="#Pattern 7: Search for Form and M"> Pattern 7: Search for Form and Meta data: explained</a><ul>
-            <li><a href="#Problem"> Problem</a></li>
-            <li><a href="#Solution"> Solution</a></li>
-          </ul>
-        </li>
-        <li><a href="#Pattern 8: Search all topics tha"> Pattern 8: Search all topics that have been moved</a><ul>
-            <li><a href="#Problem"> Problem</a></li>
-            <li><a href="#Solution"> Solution</a></li>
-          </ul>
-        </li>
-        <li><a href="#Contributors"> Contributors</a></li>
+        <li><a href="#Pattern 9: Search for Form and M"> Pattern 9: Search for Form and Meta data: explained</a></li>
+        <li><a href="#Pattern 10: Search all topics th"> Pattern 10: Search all topics that have been moved</a></li>
       </ul>
     </li>
   </ul>
 </div>
 
+<a name="SearchTables"></a>
+
 ## <a name="Pattern 1: Extract values from a"></a> Pattern 1: Extract values from a table
 
 ### <a name="Problem definition"></a> Problem definition
@@ -107,7 +61,7 @@ The following search pattern can be employed:
 
     <form>
     <select>
-    %SEARCH{ "^\|[^\|]*\| *option *\|" topic="%TOPIC%" regex="on" multiple="on" nosearch="on" nototal="on" format="<option>$pattern(^\| *(.*?) *\|.*)</option>" }%
+    %SEARCH{ "^\|[^\|]*\| *option *\|" topic="%TOPIC%" type="regex" multiple="on" nosearch="on" nototal="on" format="<option>$pattern(^\| *(.*?) *\|.*)</option>" }%
     </select>
     </form>
 
@@ -115,7 +69,7 @@ which is, in effect:
 
 <form><select><h1><a name="TWiki Installation Error"></a> TWiki Installation Error </h1>Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags) </select></form>
 
-%BR%
+<a name="SearchFormClassification"></a>
 
 ## <a name="Pattern 2: List generated from f"></a> Pattern 2: List generated from form classification
 
@@ -141,7 +95,7 @@ We will:
 ### <a name="Solution"></a> Solution
 
     %SEARCH{"[T]opicClassification.*value\=.*Two;[T]opicStatus.*value\=.*%URLPARAM{type}%"
-    regex="on" casesensitive="on" nosearch="on"
+    type="regex" casesensitive="on" nosearch="on"
     format="   * $topic - <font face=\"arial,helvetica\" size=\"1\">
     _last modified by_ $wikiusername _on_ $date </font> %BR% &nbsp;&nbsp;&nbsp;
     <font face=\"arial,helvetica\" size=\"1\"> $formfield(TopicStatus) </font>"
@@ -153,13 +107,15 @@ The filtering select dialogue is created as in Pattern 1:
     *Filter:* %BR%
     <form name="selectType" action="%SCRIPTURLPATH{"view"}%/%WEB%/" >
     <select name="type" size="1" onchange="document.location=this.value;">
-    %SEARCH{ "^\|[^\|]*\| *option *\|" topic="TopicClassification" web="%WEB%" regex="on"
+    %SEARCH{ "^\|[^\|]*\| *option *\|" topic="TopicClassification" web="%WEB%" type="regex"
     multiple="on" nosearch="on" nototal="on" format="<option value=%INCLUDINGTOPIC%?type=$pattern(^\| *(.*?) *\|.*)>$pattern(^\| *(.*?) *\|.*)</option>" }%
     <option value=%INCLUDINGTOPIC%>All pages</option> </select>
     </form>
     %STOPSIDEBAR%
 
-This will create similar functionality as TWiki:Plugins.TopicClassificationAddOn %BR%
+This will create similar functionality as TWiki:Plugins.TopicClassificationAddOn
+
+<a name="SearchUsernames"></a>
 
 ## <a name="Pattern 3: Creating lists of TWi"></a> Pattern 3: Creating lists of TWiki usernames
 
@@ -204,7 +160,7 @@ When the User information is stored in a [[UserForm]] (as is default in Dakar) t
     <form name="testing" action="%SCRIPTURLPATH{"view"}%/%MAINWEB%" method="get">
     <select name="topic">
     <option>Select user...</option>
-    %SEARCH{"%META:FORM.*[U]serForm" web="%MAINWEB%" regex="on" casesensitive="on" nosearch="on" format="<option>$topic</option>" sort="topic" excludetopic="Test*, TWiki*"}%
+    %SEARCH{"%META:FORM.*[U]serForm" web="%MAINWEB%" type="regex" casesensitive="on" nosearch="on" format="<option>$topic</option>" sort="topic" excludetopic="Test*, TWiki*"}%
     </select>
     <input type="submit" value="Go" />
     </form>
@@ -214,33 +170,76 @@ In the above example:
 - <code>**META:FORM.\*[U]serForm**</code> will search for all topics with a [[UserForm]] attached - change this if you have a different form where userdata is stored. Please note that this search does not actually extract anything from the form - it just uses it to identify the appropriate pages
 - <code>**excludetopic="Test\*, TWiki\*"**</code> allows to skip all topics starting with Test and TWiki, such as TestUser or TWikiAdmin. Use this if you have any special users who you do not want appearing in this list
 
+<a name="SearchTopicParent"></a>
+
 ## <a name="Pattern 4: Extract the parent of"></a> Pattern 4: Extract the parent of a given topic
 
 ### <a name="Problem"></a> Problem
 
 How to get to the parent of the current topic to display on the page?
 
-### <a name="Solution"></a> Solution
+### <a name="Solution 1: Using META"></a> Solution 1: Using META
+
+Since TWiki 4.0 you can now use the META variable:
+
+`%META{ "parent" dontrecurse="on" }%`
+
+### <a name="Solution 2: Using _SpreadSheetPl"></a> Solution 2: Using SpreadSheetPlugin
 
 You might think that the following Search would do the trick:
 
-    %SEARCH{ "^%BASETOPIC%$" scope="topic" nosearch="on" type="regex" nototal="on" format="[[$parent][parent_link]]" }%
+    %SEARCH{ "^%BASETOPIC%$" scope="topic" nosearch="on" type="regex" nonoise="on" format="   * $parent" }%
 
-However, the `[[$parent][parent_link]]` link fails if the topic has no parent set (`$parent` will be empty). You can use some [[SpreadSheetPlugin]] magic to conditionally link to the parent or to `WebHome`: `[[$percntCALC{$IF($EXACT($parent,), %HOMETOPIC%, $parent)}$percnt][parent_link]]`
+However, the `$parent` link fails if the topic has no parent set (`$parent` will be empty). You can use some TWiki:Plugins/SpreadSheetPlugin magic to conditionally link to the parent or to `WebHome`:
+
+    $percntCALC{$IF($EXACT($parent,),<nop>,$NOP(   * $parent))}$percnt
 
 So the total Search query to find a topic's parent topic is:
 
-    %SEARCH{ "^%BASETOPIC%$" scope="topic" nosearch="on" type="regex" nototal="on" format="[<nop>[$percntCALC{$IF($EXACT($parent,), <nop>%HOMETOPIC%, $parent)}$percnt][parent_link]]" }%
+    %SEARCH{ "^%BASETOPIC%$" scope="topic" type="regex" nonoise="on" format="$percntCALC{$IF($EXACT($parent,),<nop>,$NOP(   * $parent))}$percnt" }%
 
-### <a name="Test Case"></a> Test Case
+#### <a name="Test Case"></a> Test Case
 
 The parent topic of this topic is:
 
-# TWiki Installation Error
+# <a name="TWiki Installation Error"></a> TWiki Installation Error
 
 Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags)
 
-## <a name="Pattern 5: Search and display th"></a> Pattern 5: Search and display the home topics of public webs in a list
+### <a name="Solution 3: Using IF statement"></a> Solution 3: Using IF statement
+
+This pattern can be rewritten using `%IF%`, removing the dependency on SpreadSheetPlugin:
+
+    %SEARCH{ "^%BASETOPIC%$" web="%BASEWEB%" scope="topic" type="regex" nonoise="on" format="$percntIF{$quot$parent$quot then=$quot   * $parent$quot else=$quot<nop>$quot}$percnt" }%
+
+#### <a name="Test Case"></a> Test Case
+
+The parent topic of this topic is: %BR%
+
+# <a name="TWiki Installation Error"></a> TWiki Installation Error
+
+Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags)
+
+<a name="SearchTopicChildren"></a>
+
+## <a name="Pattern 5: Show all Children of"></a><a name="Pattern 5: Show all Children of "></a> Pattern 5: Show all Children of a given topic
+
+### <a name="Problem"></a> Problem
+
+How to get to the list of all children of the current topic to display on the page?
+
+### <a name="Solution"></a> Solution
+
+The parent information is stored in the META:TOPICPARENT meta data. Do a SEARCH to find all topic parent meta data pointing to the current topic:
+
+    Children:
+    %SEARCH{ "META\:TOPICPARENT.*\"%TOPIC%\"" type="regex" nonoise="on" format="[[$topic]]" separator=", " }%
+
+**_Note:_** Replace `%TOPIC%` with `%BASETOPIC%` if you put this SEARCH into the skin or a sidebar.
+
+<a name="SearchPublicWebsList"></a>
+
+## <a name="Pattern 6: Search and display th"></a> Pattern 6: Search and display the home topics of public webs in a list
 
 ### <a name="Problem"></a> Problem
 
@@ -275,7 +274,37 @@ This result can also be accomplished with the %WEBLIST% variable.
     <p>
     </p></select> <input type="submit" value="Go" /></form>
 
-## <a name="Pattern 6: Extract a value from"></a><a name="Pattern 6: Extract a value from "></a> Pattern 6: Extract a value from a bullet list
+<a name="SearchBulletList"></a>
+
+## <a name="Pattern 7: Create a select box w"></a> Pattern 7: Create a select box with values from a bullet list
+
+### <a name="Problem"></a> Problem
+
+We have a topic with a bullet list with category names. In another topic we want to offer these values in a select box dropdown.
+
+For example, CategoryList has:
+
+- Clients
+- People
+- Rooms
+- Buildings
+
+### <a name="Solution"></a> Solution
+
+The following search pattern can be employed:
+
+    <select name="type">
+    <option>Select category...</option>
+    %SEARCH{"   *\s*.*?" topic="CategoryList" type="regex" multiple="on" casesensitive="on" nosummary="on" nosearch="on" noheader="on" nototal="on" format="<option>$pattern(.*   \*\s*([^\n]*).*)</option>"}%
+    </select>
+
+To render the bullet list as a comma-separated list, use the `separator` parameter:
+
+    %SEARCH{"   *\s*.*?" topic="CategoryList" type="regex" multiple="on" casesensitive="on" nosummary="on" nosearch="on" noheader="on" nototal="on" separator="," format="$pattern(.*   \*\s*([^\n]*).*)"}%
+
+<a name="SearchNamedBulletList"></a>
+
+## <a name="Pattern 8: Extract a value from"></a><a name="Pattern 8: Extract a value from "></a> Pattern 8: Extract a value from a named bullet list item
 
 ### <a name="Problem"></a> Problem
 
@@ -285,7 +314,7 @@ Display the user name in the user's topic title
 
 Search for the `Name:` entry.
 
-    %SEARCH{"   * [N]ame: " topic="%TOPIC%" regex="on" casesensitive="on" nosummary="on" nosearch="on" noheader="on" nototal="on" format="---+!! $pattern(.*   \* Name: ([^\n]*).*)"}%
+    %SEARCH{"   * [N]ame: " topic="%TOPIC%" type="regex" casesensitive="on" nosummary="on" nosearch="on" noheader="on" nototal="on" format="---+!! $pattern(.*   \* Name: ([^\n]*).*)"}%
 
 ### <a name="Test case"></a> Test case
 
@@ -299,7 +328,9 @@ Search result:
 
 Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags)
 
-## <a name="Pattern 7: Search for Form and M"></a> Pattern 7: Search for Form and Meta data: explained
+<a name="SearchMetaData"></a>
+
+## <a name="Pattern 9: Search for Form and M"></a> Pattern 9: Search for Form and Meta data: explained
 
 ### <a name="Problem"></a> Problem
 
@@ -308,7 +339,7 @@ Below is an example of a search that searches form data. The questions are:
 - why is this searching the metadata, shouldn't it just search the text?
 - what is the meaning of the `td..td` in the search expression?
 
-    %SEARCH{ "[S]tatus.*(td..td|value\=).*[W]aiting" casesensitive="on" regex="on"
+    %SEARCH{ "[S]tatus.*(td..td|value\=).*[W]aiting" casesensitive="on" type="regex"
     nosearch="on" nototal="on" format="| [[$topic]]<br /> ($date - $rev -
     [[%SCRIPTURLPATH{rdiff}%/$web/$topic][Diffs]]) |"}%
 
@@ -322,7 +353,7 @@ An example meta data form field is:
 
 So a search for a form field could look like:
 
-    %SEARCH{ "[O]peratingSystem.*value\=.*[O]sWin" regex="on" ... }%
+    %SEARCH{ "[O]peratingSystem.*value\=.*[O]sWin" type="regex" ... }%
 
 - Using square brackets is a trick to avoid a hit on the topic doing the search.
 - The `.*` indicate that there can be any number of any character between `OperatingSystem` and `value` in the (whole) file
@@ -333,13 +364,15 @@ Now the original file format of the category table (the predecessor of the TWiki
 
 The following search finds topics in the old and new format:
 
-    %SEARCH{ "[O]peratingSystem.*(td..td|value\=).*[O]sWin" regex="on" ... }%
+    %SEARCH{ "[O]peratingSystem.*(td..td|value\=).*[O]sWin" type="regex" ... }%
 
 The `td..td` matches `td<>td`; a simple search on `"[O]peratingSystem.*[O]sWin"` could find a hit in the topic text by coincidence.
 
 A simple `%SEARCH{ "[O]peratingSystem.*value\=.*[O]sWin" ...}%` search is sufficient if you do not have topics in the old format.
 
-## <a name="Pattern 8: Search all topics tha"></a> Pattern 8: Search all topics that have been moved
+<a name="MovedTopics"></a>
+
+## <a name="Pattern 10: Search all topics th"></a> Pattern 10: Search all topics that have been moved
 
 ### <a name="Problem"></a> Problem
 
@@ -349,7 +382,7 @@ How would I go about listing all moved topics ?
 
 Search for the META:TOPICMOVED meta data. Type this:
 
-`Moved topics: %SEARCH{ "%META\:TOPICMOVED" regex="on" format="$topic, " nosearch="on" noheader="on" nosummary="on" }%`
+`Moved topics: %SEARCH{ "%META\:TOPICMOVED" type="regex" format="$topic, " nosearch="on" noheader="on" nosummary="on" }%`
 
 to get this (limited to 10 results):
 
@@ -359,8 +392,6 @@ Moved topics:
 
 Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags)
 
-## <a name="Contributors"></a> Contributors
-
-TWiki:Main.AntonAylward, TWiki:Main.ArthurClemens, TWiki:Main.JosMaccabiani, TWiki:Main.PeterThoeny, TWiki:Main.SueLocke
+**_Related Topics:_** [[UserDocumentationCategory]], [[SearchHelp]], [[TWikiVariables#VarSEARCH]], [[FormattedSearch]], [[RegularExpression]]
 
-**_Related Topics:_** [[UserDocumentationCategory]]
+-- **_Contributors:_** TWiki:Main.AntonAylward, TWiki:Main.ArthurClemens, TWiki:Main.JosMaccabiani, TWiki:Main.PeterThoeny, TWiki:Main.SueLocke
index 8564758..4d96736 100644 (file)
@@ -6,7 +6,6 @@
     <th bgcolor="#99CCCC"><strong> Sitemap </strong></th>
     <th bgcolor="#99CCCC" colspan="2"><strong> VIEW </strong></th>
     <th bgcolor="#99CCCC" colspan="2"><strong> CHANGE </strong></th>
-    <th bgcolor="#99CCCC" colspan="2"><strong> RENAME </strong></th>
   </tr>
   <tr>
     <td> ^ </td>
@@ -15,8 +14,6 @@
     <th bgcolor="#99CCCC"><strong> ALLOW </strong></th>
     <th bgcolor="#99CCCC"><strong> DENY </strong></th>
     <th bgcolor="#99CCCC"><strong> ALLOW </strong></th>
-    <th bgcolor="#99CCCC"><strong> DENY </strong></th>
-    <th bgcolor="#99CCCC"><strong> ALLOW </strong></th>
   </tr>
 </table>
 
index b1fde15..b620477 100644 (file)
@@ -169,11 +169,11 @@ The part between the rulers defines the default format of a slide:
 
 ----
 
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
+<table border="0" cellpadding="5" cellspacing="0" width="100%">
   <tr bgcolor="#003399">
-    <td valign="middle" width="2%"><img alt="TWiki Slide Show" border="0" src="http://www.dementia.org/twiki//view/%WEB%/SlideShowPlugin/logo.gif" /> </td>
+    <td valign="middle" width="2%"><img alt="TWiki Slide Show" border="0" src="http://www.dementia.org/twiki//view/%WEB%/SlideShowPlugin/logo.gif" /></td>
     <td valign="middle"><font color="#FFFFFF" size="+3">%SLIDETITLE%</font></td>
-    <td align="right" valign="middle"> %SLIDENAVNEXT% </td>
+    <td align="right" valign="middle"> %SLIDENAVNEXT%</td>
   </tr>
 </table>
 <table border="0" cellpadding="3" cellspacing="0" width="100%">
@@ -207,11 +207,11 @@ The part between the rulers defines the default format of a slide:
     <td> Plugin topic </td>
   </tr>
   <tr>
-    <td><code><b>data/TWiki/%TOPIC%.txt,v</b></code></td>
-    <td> Plugin topic repository </td>
+    <td><code><b>lib/TWiki/Plugins/%TOPIC%.pm</b></code></td>
+    <td> Plugin Perl module </td>
   </tr>
   <tr>
-    <td><code><b>lib/TWiki/Plugins/%TOPIC%.pm</b></code></td>
+    <td><code><b>lib/TWiki/Plugins/%TOPIC%/SlideShow.pm</b></code></td>
     <td> Plugin Perl module </td>
   </tr>
   <tr>
@@ -219,7 +219,7 @@ The part between the rulers defines the default format of a slide:
     <td> Various button image files </td>
   </tr>
 </table>
-- (Dakar) Visit `configure` in your TWiki installation, and enable the plugin in the \{Plugins\} section.
+- TWiki 4.0 and up: Run the [configure](http://www.dementia.org/twiki//configure) script, and enable the plugin in the \{Plugins\} section.
 - Test above example if the installation was successful.
 
 ## <a name="Plugin Info"></a> Plugin Info
@@ -230,14 +230,26 @@ The part between the rulers defines the default format of a slide:
     <td> TWiki:Main/PeterThoeny </td>
   </tr>
   <tr>
+    <td align="right"> Copyright: </td>
+    <td> © 2006, <a href="http://www.structuredwikis.com/peter/" target="_top">Peter Thoeny</a></td>
+  </tr>
+  <tr>
+    <td align="right"> License: </td>
+    <td> GPL (<a href="http://www.gnu.org/copyleft/gpl.html" target="_top">GNU General Public License</a>) </td>
+  </tr>
+  <tr>
     <td align="right"> Plugin Version: </td>
-    <td> 1.005 </td>
+    <td> 12011 </td>
   </tr>
   <tr>
     <td align="right"> Change History: </td>
     <td>  </td>
   </tr>
   <tr>
+    <td align="right"> 19 Nov 2006: </td>
+    <td> 12011: Preserve URL parameters in slideshow (suggested by TWiki:Main/ThomasWeigert); changed logo in default template to T-logo; fixed warning errors introduced by 1.005 </td>
+  </tr>
+  <tr>
     <td align="right"> 16 Mar 2005: </td>
     <td> 1.005 Crawford Currie prepped for Dakar, and fixed multiple evaluation bug </td>
   </tr>
index 7551f8d..381ab48 100644 (file)
@@ -157,7 +157,7 @@ Here is the list of smilies supported by this plugin. To add others, attach new
 Plugin settings are stored as preferences variables. To reference a plugin setting write <code>**%&lt;plugin&gt;\_&lt;setting&gt;%**</code>, for example, <code>**%INTERWIKIPLUGIN\_SHORTDESCRIPTION%**</code>
 
 - One line description, shown in the [[TextFormattingRules]] topic:
-- Set SHORTDESCRIPTION = Render smilies as icons, like ` :-)` for :-) or ` :cool:` for :cool:
+- Set SHORTDESCRIPTION = Render smilies as icons, like :-) for ` :-)` or :eek: for ` :eek:`
 
 - The name of the topic containig your Smilies. Default: <code>**%WEB%.SmiliesPlugin**</code>
 - #Set TOPIC = [[SmiliesPlugin]]
index 5a75968..9aa09ba 100644 (file)
@@ -13,6 +13,9 @@
     <li><a href="#ObjectData =twiki="> ObjectData twiki</a></li>
     <li><a href="#TWiki::Client::_TemplateLogin"> TWiki::Client::TemplateLogin </a></li>
     <li><a href="#TWiki::Compatibility"> TWiki::Compatibility </a></li>
+    <li><a href="#TWiki::Configure::Load"> TWiki::Configure::Load </a></li>
+    <li><a href="#Purpose"> Purpose</a></li>
+    <li><a href="#"> </a></li>
     <li><a href="#TWiki"> TWiki </a></li>
     <li><a href="#TWiki::Form"> TWiki::Form </a></li>
     <li><a href="#TWiki::Func"> TWiki::Func </a></li>
@@ -46,7 +49,6 @@
     <li><a href="#TWiki::UI::Oops"> TWiki::UI::Oops </a></li>
     <li><a href="#TWiki::UI::RDiff"> TWiki::UI::RDiff </a></li>
     <li><a href="#TWiki::UI::Register"> TWiki::UI::Register </a></li>
-    <li><a href="#TWiki::UI::Rest"> TWiki::UI::Rest </a></li>
     <li><a href="#TWiki::UI::Save"> TWiki::UI::Save </a></li>
     <li><a href="#TWiki::UI::Search"> TWiki::UI::Search </a></li>
     <li><a href="#TWiki::UI::Statistics"> TWiki::UI::Statistics </a></li>
@@ -76,7 +78,7 @@ This package doesn't smell
 
 A singleton object of this class is used to deal with attachments to topics.
 
-This package has smell factor of **2**
+This package has smell factor of **1**
 
 ## <a name="TWiki::Attrs"></a> [[TWiki::Attrs|Main/TWikiAttrsDotPm]]
 
@@ -94,7 +96,7 @@ This package doesn't smell
 
 ## <a name="TWiki::Client::_ApacheLogin"></a> [[TWiki::Client::ApacheLogin|Main/TWikiClientApacheLoginDotPm]]
 
-This is login manager that you can specify in the security setup section of [configure](http://www.dementia.org/twiki//configure). It instructs TWiki to cooperate with your web server (typically Apache) to require authentication information (username &amp; password) from users. It requires that you configure your web server to demand authentication for scripts named "login" and anything ending in "auth". The latter should be symlinks to existing scripts; e.g., `viewauth -> view`, `editauth -> edit`, and so on.
+This is login manager that you can specify in the security setup section of [configure](http://www.dementia.org/twiki/configure). It instructs TWiki to cooperate with your web server (typically Apache) to require authentication information (username &amp; password) from users. It requires that you configure your web server to demand authentication for scripts named "login" and anything ending in "auth". The latter should be symlinks to existing scripts; e.g., `viewauth -> view`, `editauth -> edit`, and so on.
 
 See also [[TWikiUserAuthentication]].
 
@@ -106,12 +108,32 @@ This package doesn't smell
 
 The package is also a Factory for login managers and also the base class for all login managers.
 
-On it's own, an object of this class is used when you specify 'none' in the security setup section of [configure](http://www.dementia.org/twiki//configure). When it is used, logins are not supported. If you want to authenticate users then you should consider [[TemplateLogin]] or [[ApacheLogin]], which are subclasses of this class.
+On it's own, an object of this class is used when you specify 'none' in the security setup section of [configure](http://www.dementia.org/twiki/configure). When it is used, logins are not supported. If you want to authenticate users then you should consider [[TemplateLogin]] or [[ApacheLogin]], which are subclasses of this class.
 
 If you are building a new login manager, then you should write a new subclass of this class, implementing the methods marked as **VIRTUAL**. There are already examples in the `lib/TWiki/Client` directory.
 
 The class has extensive tracing, which is enabled by $TWiki::cfg\{Trace\}\{Client.pm\}. The tracing is done in such a way as to let the perl optimiser optimise out the trace function as a no-op if tracing is disabled.
 
+Here's an overview of how it works:
+
+Early in TWiki::new, the login manager is created. The creation of the login manager does two things:
+
+1. If sessions are in use, it loads CGI::Session but doesn't initialise the session yet.
+2. Creates the login manager object
+
+Slightly later in TWiki::new, loginManager-&gt;loadSession is called.
+
+1. Calls loginManager-&gt;getUser to get the username **before** the session is created
+  - TWiki::Client::ApacheLogin looks at REMOTE\_USER
+  - TWiki::Client::TemplateLogin just returns undef
+2. reads the TWIKISID cookie to get the SID (or the TWIKISID parameters in the CGI query if cookies aren't available, or [[IP2SID]] mapping if that's enabled).
+3. Creates the CGI::Session object, and the session is thereby read.
+4. If the username still isn't known, reads it from the cookie. Thus TWiki::Client::ApacheLogin overrides the cookie using REMOTE\_USER, and TWiki::Client::TemplateLogin **always** uses the session.
+
+Later again in TWiki::new, plugins are given a chance to **override** the username found from the loginManager.
+
+The last step in TWiki::new is to find the user, using whatever user mapping manager is in place.
+
 ## <a name="ObjectData &lt;code&gt;twiki="></a> [[ObjectData]] =twiki
 
 The TWiki object this login manager is attached to.
@@ -120,33 +142,29 @@ This package has smell factor of **3**
 
 ## <a name="TWiki::Client::_TemplateLogin"></a> [[TWiki::Client::TemplateLogin|Main/TWikiClientTemplateLoginDotPm]]
 
-This is a login manager that you can specify in the security setup section of [configure](http://www.dementia.org/twiki//configure). It provides users with a template-based form to enter usernames and passwords, and works with the [[PasswordManager]] that you specify to verify those passwords.
+This is a login manager that you can specify in the security setup section of [configure](http://www.dementia.org/twiki/configure). It provides users with a template-based form to enter usernames and passwords, and works with the [[PasswordManager]] that you specify to verify those passwords.
 
 Subclass of TWiki::Client; see that class for documentation of the methods of this class.
 
-This package has smell factor of **2**
+This package has smell factor of **1**
 
 ## <a name="TWiki::Compatibility"></a> [[TWiki::Compatibility|Main/TWikiCompatibilityDotPm]]
 
 Support for compatibility with old TWiki versions. Packaged separately because 99.999999% of the time this won't be needed.
 
-=end
-
-sub \_upgradeCategoryItem \{ my ( $catitems, $ctext ) = @\_; my $catname = ''; my $scatname = ''; my $catmodifier = ''; my $catvalue = ''; my @cmd = split( /\\|/, $catitems ); my $src = ''; my $len = @cmd; if( $len &lt; '2' ) \{ # FIXME return ( $catname, $catmodifier, $catvalue ) \} my $svalue = '';
-
-my $i; my $itemsPerLine;
+This package has smell factor of **2**
 
-# check for [[CategoryName]]=CategoryValue parameter my $paramCmd = ''; my $cvalue = ''; # was$query-&gt;param( $cmd[1] ); if( $cvalue ) \{ $src = "$cvalue"; \} elsif( $ctext ) \{ foreach( split( /\\r?\\n/, $ctext ) ) \{ if( /$cmd[1]/ ) \{ $src = $\_; last; \} \} \}
+## <a name="TWiki::Configure::Load"></a> [[TWiki::Configure::Load|Main/TWikiConfigureLoadDotPm]]
 
-if( $cmd[0] eq 'select' || $cmd[0] eq 'radio') \{ $catname = $cmd[1]; $scatname = $catname; #$scatname =~ s/[^a-zA-Z0-9]//g; my $size = $cmd[2]; for( $i = 3; $i &lt; $len; $i++ ) \{ my $value = $cmd[$i]; $svalue = $value; if( $src =~ /$value/ ) \{ $catvalue = $svalue; \} \}
+## <a name="Purpose"></a> Purpose
 
-\} elsif( $cmd[0] eq 'checkbox' ) \{ $catname = $cmd[1]; $scatname = $catname; #$scatname =~ s/[^a-zA-Z0-9]//g; if( $cmd[2] eq 'true' || $cmd[2] eq '1' ) \{ $i = $len - 4; $catmodifier = 1; \} $itemsPerLine = $cmd[3]; for( $i = 4; $i &lt; $len; $i++ ) \{ my $value = $cmd[$i]; $svalue = $value; # [[I18N]]: FIXME - need to look at this, but since it's upgrading # old forms that probably didn't use [[I18N]], it's not a high # priority. if( $src =~ /$value[^a-zA-Z0-9\\.]/ ) \{ $catvalue .= ", " if( $catvalue ); $catvalue .= $svalue; \} \}
+This module consists of just a single subroutine `readConfig`. It allows to safely modify configuration variables _for one single run_ without affecting normal TWiki operation.
 
-\} elsif( $cmd[0] eq 'text' ) \{ $catname = $cmd[1]; $scatname = $catname; #$scatname =~ s/[^a-zA-Z0-9]//g; $src =~ /(.\*)/; if( $1 ) \{ $src = $1; \} else \{ $src = ''; \} $catvalue = $src; \}
+This package doesn't smell
 
-return ( $catname, $catmodifier, $catvalue ) \}
+## <> \[[TWikiConfigureUIsEXTENDDotPm]\[]]
 
-This package has smell factor of **2**
+This package has smell factor of **1**
 
 ## <a name="TWiki"></a> [[TWiki|Main/TWikiDotPm]]
 
@@ -154,13 +172,13 @@ TWiki operates by creating a singleton object (known as the Session object) that
 
 Global variables are avoided wherever possible to avoid problems with CGI accelerators such as mod\_perl.
 
-This package has smell factor of **29**
+This package has smell factor of **25**
 
 ## <a name="TWiki::Form"></a> [[TWiki::Form|Main/TWikiFormDotPm]]
 
 Object representing a single form definition.
 
-This package has smell factor of **10**
+This package has smell factor of **9**
 
 ## <a name="TWiki::Func"></a> [[TWiki::Func|Main/TWikiFuncDotPm]]
 
@@ -233,7 +251,7 @@ The module knows nothing about how meta-data is stored. That is entirely the res
 
 Meta-data objects are created by the Store engine when topics are read. They are populated using the `put` method.
 
-This package has smell factor of **6**
+This package has smell factor of **3**
 
 ## <a name="TWiki::Net"></a> [[TWiki::Net|Main/TWikiNetDotPm]]
 
@@ -281,7 +299,7 @@ This Prefs-internal class is used to parse \* Set and \* Local statements from a
 
 This class does no validation or duplicate-checking on the settings; it simply returns the recognized settings in the order it sees them in.
 
-This package has smell factor of **2**
+This package has smell factor of **1**
 
 ## <a name="TWiki::Prefs::_PrefsCache"></a> [[TWiki::Prefs::PrefsCache|Main/TWikiPrefsPrefsCacheDotPm]]
 
@@ -294,13 +312,13 @@ We maintain 2 hashes of values:
 
 As each cache level is built, the values are copied down from the parent cache level. This sounds monstrously inefficient, but in fact perl does this a lot better than doing a multi-level lookup when a value is referenced. This is especially important when many prefs lookups may be done in a session, for example when searching.
 
-This package has smell factor of **1**
+This package doesn't smell
 
 ## <a name="TWiki::Render"></a> [[TWiki::Render|Main/TWikiRenderDotPm]]
 
 This module provides most of the actual HTML rendering code in TWiki.
 
-This package has smell factor of **22**
+This package has smell factor of **19**
 
 ## <a name="TWiki::Sandbox"></a> [[TWiki::Sandbox|Main/TWikiSandboxDotPm]]
 
@@ -312,7 +330,7 @@ This package has smell factor of **3**
 
 This module implements all the search functionality.
 
-This package has smell factor of **22**
+This package has smell factor of **20**
 
 ## <a name="TWiki::Store"></a> [[TWiki::Store|Main/TWikiStoreDotPm]]
 
@@ -419,7 +437,7 @@ This package has smell factor of **2**
 
 Time handling functions.
 
-This package has smell factor of **10**
+This package has smell factor of **7**
 
 ## <a name="TWiki::UI::_ChangeForm"></a> [[TWiki::UI::ChangeForm|Main/TWikiUIChangeFormDotPm]]
 
@@ -449,7 +467,7 @@ This package has smell factor of **5**
 
 UI delegate for oops function
 
-This package has smell factor of **1**
+This package doesn't smell
 
 ## <a name="TWiki::UI::RDiff"></a> [[TWiki::UI::RDiff|Main/TWikiUIRDiffDotPm]]
 
@@ -461,19 +479,13 @@ This package has smell factor of **12**
 
 User registration handling.
 
-This package has smell factor of **20**
-
-## <a name="TWiki::UI::Rest"></a> [[TWiki::UI::Rest|Main/TWikiUIRestDotPm]]
-
-Rest delegate for view function
-
-This package doesn't smell
+This package has smell factor of **19**
 
 ## <a name="TWiki::UI::Save"></a> [[TWiki::UI::Save|Main/TWikiUISaveDotPm]]
 
 UI delegate for save function
 
-This package doesn't smell
+This package has smell factor of **1**
 
 ## <a name="TWiki::UI::Search"></a> [[TWiki::UI::Search|Main/TWikiUISearchDotPm]]
 
@@ -497,7 +509,7 @@ This package has smell factor of **3**
 
 UI delegate for view function
 
-This package has smell factor of **1**
+This package has smell factor of **2**
 
 ## <a name="TWiki::User"></a> [[TWiki::User|Main/TWikiUserDotPm]]
 
@@ -549,4 +561,4 @@ Subclasses should be named 'XxxxUserMapping' so that configure can find them.
 
 This package has smell factor of **3**
 
-There were a total of **220** smells
+There were a total of **201** smells
index d155453..cf175db 100644 (file)
@@ -85,9 +85,12 @@ This Plugin adds spreadsheet capabilities to %WIKITOOLNAME% topics. Formulae lik
         <li><a href="#LISTITEM( index, list ) -- get o"> LISTITEM( index, list ) -- get one element of a list</a></li>
         <li><a href="#LISTJOIN( separator, list ) -- c"> LISTJOIN( separator, list ) -- convert a list into a string</a></li>
         <li><a href="#LISTMAP( formula, list ) -- eval"> LISTMAP( formula, list ) -- evaluate and update each element of a list</a></li>
+        <li><a href="#LISTRAND( list ) -- get one rand"> LISTRAND( list ) -- get one random element of a list</a></li>
         <li><a href="#LISTREVERSE( list ) -- opposite"> LISTREVERSE( list ) -- opposite order of a list</a></li>
         <li><a href="#LISTSIZE( list ) -- number of el"> LISTSIZE( list ) -- number of elements in a list</a></li>
+        <li><a href="#LISTSHUFFLE( list ) -- shuffle e"> LISTSHUFFLE( list ) -- shuffle element of a list in random order</a></li>
         <li><a href="#LISTSORT( list ) -- sort a list"> LISTSORT( list ) -- sort a list</a></li>
+        <li><a href="#LISTTRUNCATE( size, list ) -- tr"> LISTTRUNCATE( size, list ) -- truncate list to size</a></li>
         <li><a href="#LISTUNIQUE( list ) -- remove all"> LISTUNIQUE( list ) -- remove all duplicates from a list</a></li>
         <li><a href="#LOWER( text ) -- lower case stri"> LOWER( text ) -- lower case string of a text</a></li>
         <li><a href="#MAX( list ) - biggest value of a"> MAX( list ) - biggest value of a list or range of cells</a></li>
@@ -104,7 +107,7 @@ This Plugin adds spreadsheet capabilities to %WIKITOOLNAME% topics. Formulae lik
         <li><a href="#PROPER( text ) -- properly capit"> PROPER( text ) -- properly capitalize text</a></li>
         <li><a href="#PROPERSPACE( text ) -- properly"> PROPERSPACE( text ) -- properly space out WikiWords</a></li>
         <li><a href="#RAND( max ) -- random number"> RAND( max ) -- random number</a></li>
-        <li><a href="#REPEAT(text) -- repeat text a nu"> REPEAT(text) -- repeat text a number of times</a></li>
+        <li><a href="#REPEAT( text, num ) -- repeat te"> REPEAT( text, num ) -- repeat text a number of times</a></li>
         <li><a href="#REPLACE( text, start, num, new )"> REPLACE( text, start, num, new ) -- replace part of a text string</a></li>
         <li><a href="#RIGHT( ) -- address range of cel"> RIGHT( ) -- address range of cells to the right of the current cell</a></li>
         <li><a href="#ROUND( formula, digits ) -- roun"> ROUND( formula, digits ) -- round a number</a></li>
@@ -130,6 +133,11 @@ This Plugin adds spreadsheet capabilities to %WIKITOOLNAME% topics. Formulae lik
         <li><a href="#WORKINGDAYS( serial_1, serial_2"> WORKINGDAYS( serial_1, serial_2 ) -- working days between two serialized dates</a></li>
       </ul>
     </li>
+    <li><a href="#FAQ"> FAQ</a><ul>
+        <li><a href="#Can I use CALC in a formatted se"> Can I use CALC in a formatted search?</a></li>
+        <li><a href="#How can I easily repeat a formul"> How can I easily repeat a formula in a table?</a></li>
+      </ul>
+    </li>
     <li><a href="#Bug Tracking Example"> Bug Tracking Example</a></li>
     <li><a href="#Plugin Settings"> Plugin Settings</a></li>
     <li><a href="#Plugin Installation Instructions"> Plugin Installation Instructions</a></li>
@@ -401,7 +409,7 @@ Conventions for Syntax:
 - Convert the content of a range of cells into a flat list, delimited by comma. Cells containing commas are merged into the list
 - Syntax: <code>**$LIST( range )**</code>
 - Example: <code>**%CALC\{"$LIST($LEFT())"\}%**</code> returns <code>**Apples, Lemons, Oranges, Kiwis**</code> assuming the cells to the left contain <code>**| Apples | Lemons, Oranges | Kiwis |**</code>
-- Related: <code>[[$AVERAGE()|Main/WebHome#FuncAVERAGE]]</code>, <code>[[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]]</code>, <code>[[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]]</code>, <code>[[$DEF()|Main/WebHome#FuncDEF]]</code>, <code>[[$LISTIF()|Main/WebHome#FuncLISTIF]]</code>, <code>[[$LISTITEM()|Main/WebHome#FuncLISTITEM]]</code>, <code>[[$LISTJOIN()|Main/WebHome#FuncLISTJOIN]]</code>, <code>[[$LISTMAP()|Main/WebHome#FuncLISTMAP]]</code>, <code>[[$LISTREVERSE()|Main/WebHome#FuncLISTREVERSE]]</code>, <code>[[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]]</code>, <code>[[$LISTSORT()|Main/WebHome#FuncLISTSORT]]</code>, <code>[[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]]</code>, <code>[[$MAX()|Main/WebHome#FuncMAX]]</code>, <code>[[$MEDIAN()|Main/WebHome#FuncMEDIAN]]</code>, <code>[[$MIN()|Main/WebHome#FuncMIN]]</code>, <code>[[$PRODUCT()|Main/WebHome#FuncPRODUCT]]</code>, <code>[[$SUM()|Main/WebHome#FuncSUM]]</code>, <code>[[$SUMDAYS()|Main/WebHome#FuncSUMDAYS]]</code>, <code>[[$SUMPRODUCT()|Main/WebHome#FuncSUMPRODUCT]]</code>
+- Related: <code>[[$AVERAGE()|Main/WebHome#FuncAVERAGE]]</code>, <code>[[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]]</code>, <code>[[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]]</code>, <code>[[$DEF()|Main/WebHome#FuncDEF]]</code>, <code>[[$LISTIF()|Main/WebHome#FuncLISTIF]]</code>, <code>[[$LISTITEM()|Main/WebHome#FuncLISTITEM]]</code>, <code>[[$LISTJOIN()|Main/WebHome#FuncLISTJOIN]]</code>, <code>[[$LISTMAP()|Main/WebHome#FuncLISTMAP]]</code>, <code>[[$LISTRAND()|Main/WebHome#FuncLISTRAND]]</code>, <code>[[$LISTREVERSE()|Main/WebHome#FuncLISTREVERSE]]</code>, <code>[[$LISTSHUFFLE()|Main/WebHome#FuncLISTSHUFFLE]]</code>, <code>[[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]]</code>, <code>[[$LISTSORT()|Main/WebHome#FuncLISTSORT]]</code>, <code>[[$LISTTRUNCATE()|Main/WebHome#FuncLISTTRUNCATE]]</code>, <code>[[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]]</code>, <code>[[$MAX()|Main/WebHome#FuncMAX]]</code>, <code>[[$MEDIAN()|Main/WebHome#FuncMEDIAN]]</code>, <code>[[$MIN()|Main/WebHome#FuncMIN]]</code>, <code>[[$PRODUCT()|Main/WebHome#FuncPRODUCT]]</code>, <code>[[$SUM()|Main/WebHome#FuncSUM]]</code>, <code>[[$SUMDAYS()|Main/WebHome#FuncSUMDAYS]]</code>, <code>[[$SUMPRODUCT()|Main/WebHome#FuncSUMPRODUCT]]</code>
 
 <a name="FuncLISTIF"></a>
 
@@ -422,7 +430,7 @@ Conventions for Syntax:
 - Syntax: <code>**$LISTITEM( index, list )**</code>
 - Example: <code>**%CALC\{"$LISTITEM(2, Apple, Orange, Apple, Kiwi)"\}%**</code> returns <code>**Orange**</code>
 - Example: <code>**%CALC\{"$LISTITEM(-1, Apple, Orange, Apple, Kiwi)"\}%**</code> returns <code>**Kiwi**</code>
-- Related: <code>[[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]]</code>, <code>[[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]]</code>, <code>[[$LIST()|Main/WebHome#FuncLIST]]</code>, <code>[[$LISTIF()|Main/WebHome#FuncLISTIF]]</code>, <code>[[$LISTMAP()|Main/WebHome#FuncLISTMAP]]</code>, <code>[[$LISTREVERSE()|Main/WebHome#FuncLISTREVERSE]]</code>, <code>[[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]]</code>, <code>[[$LISTSORT()|Main/WebHome#FuncLISTSORT]]</code>, <code>[[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]]</code>, <code>[[$SUM()|Main/WebHome#FuncSUM]]</code>
+- Related: <code>[[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]]</code>, <code>[[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]]</code>, <code>[[$LIST()|Main/WebHome#FuncLIST]]</code>, <code>[[$LISTIF()|Main/WebHome#FuncLISTIF]]</code>, <code>[[$LISTMAP()|Main/WebHome#FuncLISTMAP]]</code>, <code>[[$LISTRAND()|Main/WebHome#FuncLISTRAND]]</code>, <code>[[$LISTREVERSE()|Main/WebHome#FuncLISTREVERSE]]</code>, <code>[[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]]</code>, <code>[[$LISTSORT()|Main/WebHome#FuncLISTSORT]]</code>, <code>[[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]]</code>, <code>[[$SUM()|Main/WebHome#FuncSUM]]</code>
 
 <a name="FuncLISTJOIN"></a>
 
@@ -442,6 +450,14 @@ Conventions for Syntax:
 - Example: <code>**%CALC\{"$LISTMAP($index: $EVAL(2 \* $item), 3, 5, 7, 11)"\}%**</code> returns <code>**1: 6, 2: 10, 3: 14, 4: 22**</code>
 - Related: <code>[[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]]</code>, <code>[[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]]</code>, <code>[[$LIST()|Main/WebHome#FuncLIST]]</code>, <code>[[$LISTIF()|Main/WebHome#FuncLISTIF]]</code>, <code>[[$LISTITEM()|Main/WebHome#FuncLISTITEM]]</code>, <code>[[$LISTREVERSE()|Main/WebHome#FuncLISTREVERSE]]</code>, <code>[[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]]</code>, <code>[[$LISTSORT()|Main/WebHome#FuncLISTSORT]]</code>, <code>[[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]]</code>, <code>[[$SUM()|Main/WebHome#FuncSUM]]</code>
 
+<a name="FuncLISTRAND"></a>
+
+### <a name="LISTRAND( list ) -- get one rand"></a> LISTRAND( list ) -- get one random element of a list
+
+- Syntax: <code>**$LISTRAND( list )**</code>
+- Example: <code>**%CALC\{"$LISTRRAND(Apple, Orange, Apple, Kiwi)"\}%**</code> returns one of the four elements
+- Related: <code>[[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]]</code>, <code>[[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]]</code>, <code>[[$LIST()|Main/WebHome#FuncLIST]]</code>, <code>[[$LISTIF()|Main/WebHome#FuncLISTIF]]</code>, <code>[[$LISTITEM()|Main/WebHome#FuncLISTITEM]]</code>, <code>[[$LISTMAP()|Main/WebHome#FuncLISTMAP]]</code>, <code>[[$LISTSHUFFLE()|Main/WebHome#FuncLISTSHUFFLE]]</code>, <code>[[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]]</code>, <code>[[$LISTSORT()|Main/WebHome#FuncLISTSORT]]</code>, <code>[[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]]</code>, <code>[[$RAND()|Main/WebHome#FuncRAND]]</code>, <code>[[$SUM()|Main/WebHome#FuncSUM]]</code>
+
 <a name="FuncLISTREVERSE"></a>
 
 ### <a name="LISTREVERSE( list ) -- opposite"></a><a name="LISTREVERSE( list ) -- opposite "></a> LISTREVERSE( list ) -- opposite order of a list
@@ -456,7 +472,15 @@ Conventions for Syntax:
 
 - Syntax: <code>**$LISTSIZE( list )**</code>
 - Example: <code>**%CALC\{"$LISTSIZE(Apple, Orange, Apple, Kiwi)"\}%**</code> returns <code>**4**</code>
-- Related: <code>[[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]]</code>, <code>[[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]]</code>, <code>[[$LIST()|Main/WebHome#FuncLIST]]</code>, <code>[[$LISTIF()|Main/WebHome#FuncLISTIF]]</code>, <code>[[$LISTITEM()|Main/WebHome#FuncLISTITEM]]</code>, <code>[[$LISTJOIN()|Main/WebHome#FuncLISTJOIN]]</code>, <code>[[$LISTMAP()|Main/WebHome#FuncLISTMAP]]</code>, <code>[[$LISTREVERSE()|Main/WebHome#FuncLISTREVERSE]]</code>, <code>[[$LISTSORT()|Main/WebHome#FuncLISTSORT]]</code>, <code>[[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]]</code>, <code>[[$SUM()|Main/WebHome#FuncSUM]]</code>
+- Related: <code>[[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]]</code>, <code>[[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]]</code>, <code>[[$LIST()|Main/WebHome#FuncLIST]]</code>, <code>[[$LISTIF()|Main/WebHome#FuncLISTIF]]</code>, <code>[[$LISTITEM()|Main/WebHome#FuncLISTITEM]]</code>, <code>[[$LISTJOIN()|Main/WebHome#FuncLISTJOIN]]</code>, <code>[[$LISTMAP()|Main/WebHome#FuncLISTMAP]]</code>, <code>[[$LISTREVERSE()|Main/WebHome#FuncLISTREVERSE]]</code>, <code>[[$LISTSORT()|Main/WebHome#FuncLISTSORT]]</code>, <code>[[$LISTTRUNCATE()|Main/WebHome#FuncLISTTRUNCATE]]</code>, <code>[[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]]</code>, <code>[[$SUM()|Main/WebHome#FuncSUM]]</code>
+
+<a name="FuncLISTSHUFFLE"></a>
+
+### <a name="LISTSHUFFLE( list ) -- shuffle e"></a> LISTSHUFFLE( list ) -- shuffle element of a list in random order
+
+- Syntax: <code>**$LISTSHUFFLE( list )**</code>
+- Example: <code>**%CALC\{"$LISTSHUFFLE(Apple, Orange, Apple, Kiwi)"\}%**</code> returns the four elements in random order
+- Related: <code>[[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]]</code>, <code>[[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]]</code>, <code>[[$LIST()|Main/WebHome#FuncLIST]]</code>, <code>[[$LISTIF()|Main/WebHome#FuncLISTIF]]</code>, <code>[[$LISTITEM()|Main/WebHome#FuncLISTITEM]]</code>, <code>[[$LISTMAP()|Main/WebHome#FuncLISTMAP]]</code>, <code>[[$LISTRAND()|Main/WebHome#FuncLISTRAND]]</code>, <code>[[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]]</code>, <code>[[$LISTSORT()|Main/WebHome#FuncLISTSORT]]</code>, <code>[[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]]</code>, <code>[[$RAND()|Main/WebHome#FuncRAND]]</code>, <code>[[$SUM()|Main/WebHome#FuncSUM]]</code>
 
 <a name="FuncLISTSORT"></a>
 
@@ -465,7 +489,16 @@ Conventions for Syntax:
 - Sorts a list in ASCII order, or numerically if all elements are numeric
 - Syntax: <code>**$LISTSORT( list )**</code>
 - Example: <code>**%CALC\{"$LISTSORT(Apple, Orange, Apple, Kiwi)"\}%**</code> returns <code>**Apple, Apple, Kiwi, Orange**</code>
-- Related: <code>[[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]]</code>, <code>[[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]]</code>, <code>[[$LIST()|Main/WebHome#FuncLIST]]</code>, <code>[[$LISTIF()|Main/WebHome#FuncLISTIF]]</code>, <code>[[$LISTITEM()|Main/WebHome#FuncLISTITEM]]</code>, <code>[[$LISTMAP()|Main/WebHome#FuncLISTMAP]]</code>, <code>[[$LISTREVERSE()|Main/WebHome#FuncLISTREVERSE]]</code>, <code>[[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]]</code>, <code>[[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]]</code>, <code>[[$SUM()|Main/WebHome#FuncSUM]]</code>
+- Related: <code>[[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]]</code>, <code>[[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]]</code>, <code>[[$LIST()|Main/WebHome#FuncLIST]]</code>, <code>[[$LISTIF()|Main/WebHome#FuncLISTIF]]</code>, <code>[[$LISTITEM()|Main/WebHome#FuncLISTITEM]]</code>, <code>[[$LISTMAP()|Main/WebHome#FuncLISTMAP]]</code>, <code>[[$LISTREVERSE()|Main/WebHome#FuncLISTREVERSE]]</code>, <code>[[$LISTSHUFFLE()|Main/WebHome#FuncLISTSHUFFLE]]</code>, <code>[[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]]</code>, <code>[[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]]</code>, <code>[[$SUM()|Main/WebHome#FuncSUM]]</code>
+
+<a name="FuncLISTTRUNCATE"></a>
+
+### <a name="LISTTRUNCATE( size, list ) -- tr"></a> LISTTRUNCATE( size, list ) -- truncate list to size
+
+- Specify the desired size of the list; use a negative number to count from the end of the list
+- Syntax: <code>**$LISTTRUNCATE( size, list )**</code>
+- Example: <code>**%CALC\{"$LISTTRUNCATE(2, Apple, Orange, Kiwi)"\}%**</code> returns <code>**Apple, Orange**</code>
+- Related: <code>[[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]]</code>, <code>[[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]]</code>, <code>[[$LIST()|Main/WebHome#FuncLIST]]</code>, <code>[[$LISTIF()|Main/WebHome#FuncLISTIF]]</code>, <code>[[$LISTITEM()|Main/WebHome#FuncLISTITEM]]</code>, <code>[[$LISTMAP()|Main/WebHome#FuncLISTMAP]]</code>, <code>[[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]]</code>, <code>[[$LISTSORT()|Main/WebHome#FuncLISTSORT]]</code>, <code>[[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]]</code>, <code>[[$SUM()|Main/WebHome#FuncSUM]]</code>
 
 <a name="FuncLISTUNIQUE"></a>
 
@@ -598,13 +631,13 @@ Conventions for Syntax:
 
 - Random number, evenly distributed between 0 and <code>**max**</code>, or 0 and 1 if max is not specified
 - Syntax: <code>**$RAND( max )**</code>
-- Related: <code>[[$EVAL()|Main/WebHome#FuncEVAL]]</code>
+- Related: <code>[[$EVAL()|Main/WebHome#FuncEVAL]]</code>, <code>[[$LISTRAND()|Main/WebHome#FuncLISTRAND]]</code>, <code>[[$LISTSHUFFLE()|Main/WebHome#FuncLISTSHUFFLE]]</code>
 
 <a name="FuncREPEAT"></a>
 
-### <a name="REPEAT(text) -- repeat text a nu"></a> REPEAT(text) -- repeat text a number of times
+### <a name="REPEAT( text, num ) -- repeat te"></a> REPEAT( text, num ) -- repeat text a number of times
 
-- Syntax: <code>**$REPEAT( text )**</code>
+- Syntax: <code>**$REPEAT( text, num )**</code>
 - Example: <code>**%CALC\{"$REPEAT(/\\, 5)"\}%**</code> returns <code>**/\\/\\/\\/\\/\\**</code>
 
 <a name="FuncREPLACE"></a>
@@ -820,6 +853,27 @@ Conventions for Syntax:
 - Example: <code>**%CALC\{"$WORKINGDAYS($TIME(2004/07/15), $TIME(2004/08/03))"\}%**</code> returns <code>**13**</code>
 - Related: <code>[[$SUMDAYS()|Main/WebHome#FuncSUMDAYS]]</code>, <code>[[$TIME()|Main/WebHome#FuncTIME]]</code>, <code>[[$TIMEDIFF()|Main/WebHome#FuncTIMEDIFF]]</code>
 
+## <a name="FAQ"></a> FAQ
+
+### <a name="Can I use CALC in a formatted se"></a> Can I use CALC in a formatted search?
+
+Specifically, how can I output some conditional text in a [[FormattedSearch]]?
+
+You need to escape the CALC so that it executes once per search hit. This can be done by escaping the `%` signs of `%CALC{...}%` with `$percnt`. For example, to execute `$IF($EXACT($formfield(Tested), Yes), %PUBURL%/%TWIKIWEB%/TWikiDocGraphics/choice-yes.gif, %PUBURL%/%TWIKIWEB%/TWikiDocGraphics/choice-no.gif)` in the `format=""` parameter, write this:
+
+`%SEARCH{ .... format="| $topic | $percntCALC{$IF($EXACT($formfield(Tested), Yes), %PUBURL%/%TWIKIWEB%/TWikiDocGraphics/choice-yes.gif, %PUBURL%/%TWIKIWEB%/TWikiDocGraphics/choice-no.gif)}$percnt |" }%`
+
+### <a name="How can I easily repeat a formul"></a> How can I easily repeat a formula in a table?
+
+To repeat the same formula in all cells of a table row define the formula once in a preferences setting and use that in the CALC. The preferences setting can be hidden in HTML comments. Example:
+
+    <!--
+       * Set MYFORMULA = $EVAL($SUBSTITUTE(...etc...))
+    -->
+    | A | 1 | %CALC{%MYFORMULA%}% |
+    | B | 2 | %CALC{%MYFORMULA%}% |
+    | C | 3 | %CALC{%MYFORMULA%}% |
+
 ## <a name="Bug Tracking Example"></a> Bug Tracking Example
 
 <table border="1" cellpadding="0" cellspacing="0">
@@ -881,7 +935,7 @@ Above table is created manually. Another Plugin could build the table dynamicall
 Plugin settings are stored as preferences variables. To reference a plugin setting write <code>**%&lt;plugin&gt;\_&lt;setting&gt;%**</code>, i.e. <code>**%SPREADSHEETPLUGIN\_SHORTDESCRIPTION%**</code>
 
 - One line description, is shown in the [[TextFormattingRules]] topic:
-  - Set SHORTDESCRIPTION = Add spreadsheet calculation like `"$SUM( $ABOVE() )"` to tables located in %WIKITOOLNAME% topics.
+  - Set SHORTDESCRIPTION = Add spreadsheet calculation like `"$SUM( $ABOVE() )"` to TWiki tables and other topic text
 
 - Debug plugin: (See output in `data/debug.txt`)
   - Set DEBUG = 0
@@ -935,13 +989,21 @@ Plugin settings are stored as preferences variables. To reference a plugin setti
   </tr>
   <tr>
     <td align="right"> Plugin Version: </td>
-    <td> 13 May 2006 (10197) </td>
+    <td> 18 Dec 2006 (r12315) </td>
   </tr>
   <tr>
     <td align="right"> Change History: </td>
     <td>  </td>
   </tr>
   <tr>
+    <td align="right"> 18 Dec 2006: </td>
+    <td> Added $LISTRAND(), $LISTSHUFFLE(), $LISTTRUNCATE(); fixed spurious newline at end of topic, contributed by TWiki:Main/MichaelDaum </td>
+  </tr>
+  <tr>
+    <td align="right"> 10 Oct 2006: </td>
+    <td> Enhanced documentation </td>
+  </tr>
+  <tr>
     <td align="right"> 13 May 2006: </td>
     <td> Added $SETIFEMPTY(); fixes in documentation </td>
   </tr>
@@ -1097,4 +1159,4 @@ Plugin settings are stored as preferences variables. To reference a plugin setti
 
 **_Related Topics:_** [[TWikiPreferences]], [[TWikiPlugins]]
 
--- TWiki:Main/PeterThoeny - 13 May 2006
+-- TWiki:Main/PeterThoeny - 18 Dec 2006
index 74e2cb0..664e527 100644 (file)
             <li><a href="#Controlling access to a Web"> Controlling access to a Web</a></li>
             <li><a href="#Controlling access to a Topic"> Controlling access to a Topic</a></li>
             <li><a href="#Controlling access to Attachment"> Controlling access to Attachments</a></li>
+            <li><a href="#Controlling who can create top-l"> Controlling who can create top-level webs</a></li>
+            <li><a href="#How TWiki evaluates ALLOW/DENY s"> How TWiki evaluates ALLOW/DENY settings</a></li>
+          </ul>
+        </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="#Authenticate all Webs and Restri"> Authenticate all Webs and Restrict Selected Webs</a></li>
+            <li><a href="#Authenticate and Restrict Select"> Authenticate and Restrict Selected Webs Only</a></li>
+            <li><a href="#Hide Control Settings"> Hide Control Settings</a></li>
           </ul>
         </li>
       </ul>
@@ -94,7 +103,7 @@ The ALLOWTOPICCHANGE setting defines who is allowed to change the group topic; i
 
 ### <a name="The Super Admin Group"></a> The Super Admin Group
 
-By mistyping a user or group name in the settings, it's possible to lock a topic so that no-one can edit it from a browser. To avoid this, add the [[WikiNames]] of registered administrators to the super admin group topic called <code>**TWikiAdminGroup**</code>. The name of this topic is defined by the \{SuperAdminGroup\} configure setting. Example group setting:
+By mistyping a user or group name in the settings, it's possible to lock a topic so that no-one can edit it from a browser. To avoid this, add the [[WikiNames]] of registered administrators to the super admin group topic called <code>**TWikiAdminGroup**</code>. The name of this topic is defined by the \{SuperAdminGroup\} [configure](http://www.dementia.org/twiki/configure) setting. Example group setting:
 
 - <code>**Set GROUP= Main.ElizabethWindsor, Main.TonyBlair**</code>
 
@@ -104,13 +113,10 @@ You can define who is allowed to read or write to a web or a topic. Note that so
 
 - Restricting VIEW blocks viewing and searching of content.
 - Restricting CHANGE blocks creating new topics, changing topics or attaching files.
-- Restricting RENAME controls who is allowed to rename, move or delete a topic.
-  - To rename, move or delete a topic, the user also also needs VIEW and CHANGE permission. They also need CHANGE access to change references in any referring topics (though the rename can proceed without this access), and CHANGE access to the target topic.
-- Restricting MANAGE controls access to certain management functions, such as 'create web'. It must be set in the TWiki web.
 
 ### <a name="Controlling access to a Web"></a> Controlling access to a Web
 
-You can define restrictions of who is allowed to view a %WIKITOOLNAME% web. You can restrict access to certain webs to selected Users and Groups, by:
+You can define restrictions on who is allowed to view a %WIKITOOLNAME% web. You can restrict access to certain webs to selected Users and Groups, by:
 
 - **authenticating all webs and restricting selected webs:** Topic access in all webs is authenticated, and selected webs have restricted access.
 - **authenticating and restricting selected webs only:** Provide unrestricted viewing access to open webs, with authentication and restriction only on selected webs.
@@ -120,8 +126,6 @@ You can define restrictions of who is allowed to view a %WIKITOOLNAME% web. You
   - <code>**Set ALLOWWEBVIEW = &lt; comma-delimited list of Users and Groups &gt;**</code>
   - <code>**Set DENYWEBCHANGE = &lt; comma-delimited list of Users and Groups &gt;**</code>
   - <code>**Set ALLOWWEBCHANGE = &lt; comma-delimited list of Users and Groups &gt;**</code>
-  - <code>**Set DENYWEBRENAME = &lt; comma-delimited list of Users and Groups &gt;**</code>
-  - <code>**Set ALLOWWEBRENAME = &lt; comma-delimited list of Users and Groups &gt;**</code>
 
 **Be careful** with empty values for any of these. In older versions of TWiki,
 
@@ -135,13 +139,11 @@ now means _do not deny anyone the right to view this web_. See "How TWiki evalua
 
 ### <a name="Controlling access to a Topic"></a> Controlling access to a Topic
 
-- You can define these settings in the [[WebPreferences]] topic, preferable towards the end of the topic:
+- You can define these settings in any topic, preferable towards the end of the topic:
   - <code>**Set DENYTOPICVIEW = &lt; comma-delimited list of Users and Groups &gt;**</code>
   - <code>**Set ALLOWTOPICVIEW = &lt; comma-delimited list of Users and Groups &gt;**</code>
   - <code>**Set DENYTOPICCHANGE = &lt; comma-delimited list of Users and Groups &gt;**</code>
   - <code>**Set ALLOWTOPICCHANGE = &lt; comma-delimited list of Users and Groups &gt;**</code>
-  - <code>**Set DENYTOPICRENAME = &lt; comma-delimited list of Users and Groups &gt;**</code>
-  - <code>**Set ALLOWTOPICRENAME = &lt; comma-delimited list of Users and Groups &gt;**</code>
 
 Remember when opening up access to specific topics within a restricted web that other topics in the web - for example, the [[WebLeftBar]] - may also be accessed when viewing the topics. The message you get when you are denied access should tell you what topic you were not permitted to access.
 
@@ -167,74 +169,89 @@ The easiest way to apply the same access control rules for attachments as apply
         RewriteEngine on
         RewriteCond %{REQUEST_URI} !^/+twiki/+pub/+TWiki/+.+
         RewriteRule ^/+twiki/+pub/+([^/]+)/+((([^/]+)/+)+)(.+) /twiki/bin/viewfile/$1/$4?filename=$5 [L,PT]
-    </verbatim
 
-    That way all the controls that apply to the topic also apply to attachments to the topic. Other types of webserver have similar support.
+That way all the controls that apply to the topic also apply to attachments to the topic. Other types of webserver have similar support.
+
+**_Note:_** Images embedded in topics will load much slower since each image will be delivered by the `viewfile` script.
+
+### <a name="Controlling who can create top-l"></a> Controlling who can create top-level webs
+
+Top level webs are a special case, because they don't have a parent web with a [[WebPreferences]]. So there has to be a special control just for the root level.
+
+- You can define these settings in the Main.%TWIKIPREFSTOPIC% topic, preferable towards the end of the topic:
+  - <code>**Set DENYROOTCHANGE = &lt; comma-delimited list of Users and Groups &gt;**</code>
+  - <code>**Set ALLOWROOTCHANGE = &lt; comma-delimited list of Users and Groups &gt;**</code>
+
+Note that you do **not** require `ROOTCHANGE` access to rename an existing top-level web. You just need `WEBCHANGE` in the web itself.
+
+### <a name="How TWiki evaluates ALLOW/DENY s"></a> How TWiki evaluates ALLOW/DENY settings
 
-    __Note:__ Images embedded in topics will load much slower since each image will be delivered by the =viewfile= script.
+When deciding whether to grant access, TWiki evaluates the following rules in order (read from the top of the list; if the logic arrives at **PERMITTED** or **DENIED** that applies immediately and no more rules are applied). You need to read the rules bearing in mind that VIEW and CHANGE access may be granted/denied separately.
 
-    ---+++ How TWiki evaluates ALLOW/DENY settings
+1. If the user is a [[super-user|Main/WebHome#SuperAdminGroup]]
+  - access is **PERMITTED**.
+2. If DENYTOPIC is set to a list of wikinames
+  - people in the list will be **DENIED**.
+3. If DENYTOPIC is set to _empty_ ( i.e. `Set DENYTOPIC =` )
+  - access is **PERMITTED** _i.e_ no-one is denied access to this topic
+4. If ALLOWTOPIC is set
+  1. people in the list are **PERMITTED**
+  2. everyone else is **DENIED**
+    - Note that this means that setting ALLOWTOPIC to empty _denies access to everyone except admins_ (unless DENYTOPIC is also set to empty, as described above)
+5. If DENYWEB is set to a list of wikiname
+  - people in the list are **DENIED** access
+6. If ALLOWWEB is set to a list of wikinames
+  - people in the list will be **PERMITTED**
+  - everyone else will be **DENIED**
+    - Note that setting ALLOWWEB to empty _denies access to everyone except admins_
+7. If you got this far, access is **PERMITTED**
 
-    When deciding whether to grant access, TWiki evaluates the following rules in order (read from the top of the list; if the logic arrives at *PERMITTED* or *DENIED* that applies immediately and no more rules are applied). You need to read the rules bearing in mind that VIEW, CHANGE and RENAME access may be granted/denied separately.
-       1 If the user is a [[#SuperAdminGroup][super-user]]
-          * access is *PERMITTED*.
-       1 If DENYTOPIC is set to a list of wikinames
-          * people in the list will be *DENIED*.
-       1 If DENYTOPIC is set to _empty_ ( i.e. <tt>Set DENYTOPIC =</tt> )
-          * access is *PERMITTED* _i.e_ no-one is denied access to this topic
-       1 If ALLOWTOPIC is set
-          1 people in the list are *PERMITTED*
-          1 everyone else is *DENIED*
-             * Note that this means that setting ALLOWTOPIC to empty _denies access to everyone except admins_ (unless DENYTOPIC is also set to empty, as described above)
-       1 If DENYWEB is set to a list of wikiname
-          * people in the list are *DENIED* access
-       1 If ALLOWWEB is set to a list of wikinames
-          * people in the list will be *PERMITTED*
-          * everyone else will be *DENIED*
-             * Note that setting ALLOWWEB to empty _denies access to everyone except admins_
-       1 If you got this far, access is *PERMITTED*
+## <a name="Access Control quick recipes"></a> Access Control quick recipes
 
-    ---++ Access Control quick recipes
+### <a name="Obfuscating Webs"></a> Obfuscating Webs
 
-    ---+++ Obfuscating Webs
+Another way of hiding webs is to keep them hidden by not publishing the URL and by preventing the <code>**all webs**</code> search option from accessing obfuscated webs. Do so by enabling the <code>**NOSEARCHALL**</code> variable in [[WebPreferences]]:
 
-    Another way of hiding webs is to keep them hidden by not publishing the URL and by preventing the ==all webs== search option from accessing obfuscated webs. Do so by enabling the ==NOSEARCHALL== variable in %WEBPREFSTOPIC%:
-       * ==Set <nop>NOSEARCHALL = on==
+- <code>**Set NOSEARCHALL = on**</code>
 
-    This setup can be useful to hide a new web until content its ready for deployment, or to hide view access restricted webs.
+This setup can be useful to hide a new web until content its ready for deployment, or to hide view access restricted webs.
 
-    __%X% Note:__ Obfuscating a web without view access control is *very* insecure, as anyone who knows the URL can access the web.
+**_%X% Note:_** Obfuscating a web without view access control is **very** insecure, as anyone who knows the URL can access the web.
 
-    ---+++ Authenticate all Webs and Restrict Selected Webs
+### <a name="Authenticate all Webs and Restri"></a> Authenticate all Webs and Restrict Selected Webs
 
-    Use the following setup to authenticate users for topic viewing in all webs and to restrict access to selected webs. Requires TWikiUserAuthentication to be enabled.
+Use the following setup to authenticate users for topic viewing in all webs and to restrict access to selected webs. Requires [[TWikiUserAuthentication]] to be enabled.
 
-       1. *Restrict* view access to selected Users and Groups. Set one or both of these variables in its %WEBPREFSTOPIC% topic:
-          * ==Set <nop>DENYWEBVIEW = &lt; list of Users and Groups &gt;==
-          * ==Set <nop>ALLOWWEBVIEW = &lt; list of Users and Groups &gt;==
-          * __Note:__ =DENYWEBVIEW= is evaluated before =ALLOWWEBVIEW=. Access is denied if the authenticated person is in the =DENYWEBVIEW= list, or not in the =ALLOWWEBVIEW= list. Access is granted in case =DENYWEBVIEW= and =ALLOWWEBVIEW= is not defined.
+1. **Restrict** view access to selected Users and Groups. Set one or both of these variables in its [[WebPreferences]] topic:
+  - <code>**Set DENYWEBVIEW = &lt; list of Users and Groups &gt;**</code>
+  - <code>**Set ALLOWWEBVIEW = &lt; list of Users and Groups &gt;**</code>
+  - **_Note:_** `DENYWEBVIEW` is evaluated before `ALLOWWEBVIEW`. Access is denied if the authenticated person is in the `DENYWEBVIEW` list, or not in the `ALLOWWEBVIEW` list. Access is granted in case `DENYWEBVIEW` and `ALLOWWEBVIEW` is not defined.
 
-    ---+++ Authenticate and Restrict Selected Webs Only
+### <a name="Authenticate and Restrict Select"></a> Authenticate and Restrict Selected Webs Only
 
-    Use the following setup to provide unrestricted viewing access to open webs, with authentication only on selected webs. Requires TWikiUserAuthentication to be enabled.
+Use the following setup to provide unrestricted viewing access to open webs, with authentication only on selected webs. Requires [[TWikiUserAuthentication]] to be enabled.
 
-       1. *Restrict* view access to selected Users and Groups. Set one or both of these variables in its %WEBPREFSTOPIC% topic:
-          * ==Set <nop>DENYWEBVIEW = &lt; list of Users and Groups &gt;==
-          * ==Set <nop>ALLOWWEBVIEW = &lt; list of Users and Groups &gt;==
-          * __Note:__ =DENYWEBVIEW= is evaluated before =ALLOWWEBVIEW=. Access is denied if the authenticated person is in the =DENYWEBVIEW= list, or not in the =ALLOWWEBVIEW= list. Access is granted in case =DENYWEBVIEW= and =ALLOWWEBVIEW= is not defined.
+1. **Restrict** view access to selected Users and Groups. Set one or both of these variables in its [[WebPreferences]] topic:
+  - <code>**Set DENYWEBVIEW = &lt; list of Users and Groups &gt;**</code>
+  - <code>**Set ALLOWWEBVIEW = &lt; list of Users and Groups &gt;**</code>
+  - **_Note:_** `DENYWEBVIEW` is evaluated before `ALLOWWEBVIEW`. Access is denied if the authenticated person is in the `DENYWEBVIEW` list, or not in the `ALLOWWEBVIEW` list. Access is granted in case `DENYWEBVIEW` and `ALLOWWEBVIEW` is not defined.
 
-    ---+++ Hide Control Settings
+### <a name="Hide Control Settings"></a> Hide Control Settings
 
-    __%T% Tip:__ To hide access control settings from normal browser viewing, place them in HTML comment markers.
+**_%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]].
 
-    <blockquote>
-    ==&lt;!--== <br />
-    ==&nbsp;  * Set <nop>DENYTOPICCHANGE = %MAINWEB%.<nop>SomeGroup== <br />
-    ==--&gt;==
-    </blockquote>
+Alternatively, place them in HTML comment markers, but this exposes the access setting during ordinary editing.
 
-    %STOPINCLUDE%
+> <code>**&lt;!--**</code>
+>
+> <br />
+>
+> <code>**   \* Set DENYTOPICCHANGE = Main.SomeGroup**</code>
+>
+> <br />
+>
+> <code>**--&gt;**</code>
 
-    __Related Topics:__ AdminDocumentationCategory, TWikiUserAuthentication, TWiki:TWiki.TWikiAccessControlSupplement
+**_Related Topics:_** [[AdminDocumentationCategory]], [[TWikiUserAuthentication]], TWiki:TWiki.TWikiAccessControlSupplement
 
-    -- __Contributors:__ TWiki:Main.PeterThoeny, TWiki:Main.MikeMannix, TWiki:Main.CrawfordCurrie
+-- **_Contributors:_** TWiki:Main.PeterThoeny, TWiki:Main.MikeMannix, TWiki:Main.CrawfordCurrie
diff --git a/TWiki/TWikiAddOns.mdwn b/TWiki/TWikiAddOns.mdwn
new file mode 100644 (file)
index 0000000..936106a
--- /dev/null
@@ -0,0 +1,50 @@
+<div>
+  <ul>