From 238f982f41255f6c94f02bca2da5abcfbfdbb30a Mon Sep 17 00:00:00 2001 From: TWikiContributor Date: Tue, 16 Jan 2007 04:12:07 +0000 Subject: [PATCH] buildrelease --- TWiki/ATasteOfTWiki.mdwn | 43 +- TWiki/AdminToolsCategory.mdwn | 75 +- TWiki/AnApplicationWithWikiForm.mdwn | 4 +- TWiki/BehaviourContrib.mdwn | 178 ++ TWiki/BulkResetPassword.mdwn | 66 +- TWiki/ChangeEmailAddress.mdwn | 36 +- TWiki/ChangePassword.mdwn | 34 +- TWiki/CommentPlugin.mdwn | 253 ++- TWiki/CommentPluginExamples.mdwn | 222 +++ TWiki/CommentPluginTemplate.mdwn | 202 ++- TWiki/EditTablePlugin.mdwn | 4 +- TWiki/EmptyPlugin.mdwn | 13 - TWiki/FileAttachment.mdwn | 158 +- TWiki/FormattedSearch.mdwn | 61 +- TWiki/GoBox.mdwn | 3 + TWiki/HierarchicalNavigation.mdwn | 73 + TWiki/HierarchicalNavigationChildExample.mdwn | 1 + TWiki/IfStatements.mdwn | 4 +- TWiki/InstalledPlugins.mdwn | 2 +- TWiki/InstantEnhancements.mdwn | 2 +- TWiki/InterWikis.mdwn | 1 + TWiki/InterwikiPlugin.mdwn | 65 +- TWiki/JSCalendarContrib.mdwn | 35 +- TWiki/LoginName.mdwn | 4 +- TWiki/MailerContrib.mdwn | 521 +++++- TWiki/ManagingTopics.mdwn | 2 +- TWiki/ManagingUsers.mdwn | 18 +- TWiki/ManagingWebs.mdwn | 5 +- TWiki/NewUserTemplate.mdwn | 29 +- TWiki/PatternSkin.mdwn | 48 +- TWiki/PatternSkinColorSettings.mdwn | 1063 +++++++++++ TWiki/PatternSkinCss.mdwn | 2 +- TWiki/PatternSkinCssCookbook.mdwn | 18 +- TWiki/PatternSkinCssCookbookNoLeftBar.mdwn | 2 +- TWiki/PatternSkinCustomization.mdwn | 155 +- TWiki/PatternSkinElements.mdwn | 433 +++++ TWiki/PreferencesPlugin.mdwn | 6 +- TWiki/RegistrationApprovals.mdwn | 1 - TWiki/RegularExpression.mdwn | 5 + TWiki/RenderListPlugin.mdwn | 28 +- TWiki/ResetPassword.mdwn | 25 +- TWiki/SearchPatternCookbook.mdwn | 201 ++- TWiki/SitePermissions.mdwn | 3 - TWiki/SlideShowPlugin.mdwn | 28 +- TWiki/SmiliesPlugin.mdwn | 2 +- TWiki/SourceCode.mdwn | 84 +- TWiki/SpreadSheetPlugin.mdwn | 84 +- TWiki/TWikiAccessControl.mdwn | 137 +- TWiki/TWikiAddOns.mdwn | 50 + TWiki/TWikiCompatibilityDotPm.mdwn | 16 - TWiki/TWikiConfigureLoadDotPm.mdwn | 41 + TWiki/TWikiConfigureUIsEXTENDDotPm.mdwn | 14 + TWiki/TWikiContribs.mdwn | 50 + TWiki/TWikiCss.mdwn | 60 +- TWiki/TWikiDocGraphics.mdwn | 1312 ++++++++------ TWiki/TWikiDocumentation.mdwn | 4 + TWiki/TWikiDotPm.mdwn | 111 +- TWiki/TWikiEditingShorthand.mdwn | 3 +- TWiki/TWikiFAQ.mdwn | 4 +- TWiki/TWikiFormDotPm.mdwn | 7 +- TWiki/TWikiForms.mdwn | 269 +-- TWiki/TWikiFuncDotPm.mdwn | 85 +- TWiki/TWikiHistory.mdwn | 106 +- TWiki/TWikiI18NExtractDotPm.mdwn | 14 +- TWiki/TWikiInstallationGuide.mdwn | 4 +- TWiki/TWikiLogos.mdwn | 6 +- TWiki/TWikiMetaData.mdwn | 6 +- TWiki/TWikiMetaDotPm.mdwn | 2 +- TWiki/TWikiNetDotPm.mdwn | 4 +- TWiki/TWikiOopsExceptionDotPm.mdwn | 6 +- TWiki/TWikiPlugins.mdwn | 27 +- TWiki/TWikiPluginsDotPm.mdwn | 257 +-- TWiki/TWikiPreferences.mdwn | 90 +- TWiki/TWikiPrefsDotPm.mdwn | 10 +- TWiki/TWikiReferenceManual.mdwn | 19 +- TWiki/TWikiRegistration.mdwn | 421 ++--- TWiki/TWikiReleaseNotes04x00.mdwn | 2 +- TWiki/TWikiReleaseNotes04x01.mdwn | 1160 ++++++++++++ TWiki/TWikiRenderDotPm.mdwn | 4 +- TWiki/TWikiRenderingShortcut.mdwn | 17 + TWiki/TWikiScripts.mdwn | 82 +- TWiki/TWikiSearchDotPm.mdwn | 4 +- TWiki/TWikiShorthand.mdwn | 1 + TWiki/TWikiSiteTools.mdwn | 16 +- TWiki/TWikiSkins.mdwn | 81 +- TWiki/TWikiStoreDotPm.mdwn | 6 + TWiki/TWikiStoreRcsFileDotPm.mdwn | 5 + TWiki/TWikiSystemRequirements.mdwn | 4 +- TWiki/TWikiTemplates.mdwn | 154 +- TWiki/TWikiTimeDotPm.mdwn | 16 +- TWiki/TWikiTip013.mdwn | 10 +- TWiki/TWikiTutorial.mdwn | 172 +- TWiki/TWikiUIDotPm.mdwn | 6 +- TWiki/TWikiUIViewDotPm.mdwn | 8 +- TWiki/TWikiUpgradeGuide.mdwn | 187 +- TWiki/TWikiUserAuthentication.mdwn | 63 +- TWiki/TWikiUserSetting.mdwn | 18 + TWiki/TWikiUsersDotPm.mdwn | 20 +- TWiki/TWikiVariables.mdwn | 10 +- TWiki/TWikiVariablesQuickStart.mdwn | 2 +- TWiki/TablePlugin.mdwn | 368 ++-- TWiki/TipsContrib.mdwn | 14 +- TWiki/TwistyContrib.mdwn | 214 ++- TWiki/TwistyPlugin.mdwn | 764 ++++++++ TWiki/VarAQUA.mdwn | 9 + TWiki/VarATTACHURL.mdwn | 2 +- TWiki/VarATTACHURLPATH.mdwn | 2 +- TWiki/VarAUTHREALM.mdwn | 2 +- TWiki/VarBB.mdwn | 8 + TWiki/VarBB2.mdwn | 8 + TWiki/VarBB3.mdwn | 8 + TWiki/VarBB4.mdwn | 8 + TWiki/VarBLACK.mdwn | 9 + TWiki/VarBLUE.mdwn | 9 + TWiki/VarBR.mdwn | 7 + TWiki/VarBROWN.mdwn | 9 + TWiki/VarBULLET.mdwn | 7 + TWiki/VarENCODE.mdwn | 18 +- TWiki/VarENDCOLOR.mdwn | 9 + TWiki/VarGMTIME2.mdwn | 12 +- TWiki/VarGRAY.mdwn | 9 + TWiki/VarGREEN.mdwn | 9 + TWiki/VarH.mdwn | 7 + TWiki/VarI.mdwn | 7 + TWiki/VarINCLUDE.mdwn | 38 +- TWiki/VarLIME.mdwn | 9 + TWiki/VarM.mdwn | 7 + TWiki/VarMAKETEXT.mdwn | 2 +- TWiki/VarMAROON.mdwn | 9 + TWiki/VarMETA.mdwn | 8 +- TWiki/VarN.mdwn | 7 + TWiki/VarNAVY.mdwn | 9 + TWiki/VarOLIVE.mdwn | 9 + TWiki/VarORANGE.mdwn | 9 + TWiki/VarP.mdwn | 7 + TWiki/VarPINK.mdwn | 9 + TWiki/VarPUBURL.mdwn | 2 +- TWiki/VarPUBURLPATH.mdwn | 2 +- TWiki/VarPURPLE.mdwn | 9 + TWiki/VarQ.mdwn | 7 + TWiki/VarQUERYPARAMS.mdwn | 46 + TWiki/VarQUERYSTRING.mdwn | 4 +- TWiki/VarRED.mdwn | 9 + TWiki/VarREVINFO2.mdwn | 32 +- TWiki/VarS.mdwn | 7 + TWiki/VarSEARCH.mdwn | 6 +- TWiki/VarSILVER.mdwn | 9 + TWiki/VarT.mdwn | 7 + TWiki/VarTEAL.mdwn | 9 + TWiki/VarTOPICURL.mdwn | 7 + TWiki/VarU.mdwn | 7 + TWiki/VarURLPARAM.mdwn | 8 +- TWiki/VarVBAR.mdwn | 8 + TWiki/VarWEBLIST.mdwn | 4 +- TWiki/VarWHITE.mdwn | 9 + TWiki/VarWIKIHOMEURL.mdwn | 8 +- TWiki/VarX.mdwn | 7 + TWiki/VarY.mdwn | 7 + TWiki/VarYELLOW.mdwn | 9 + TWiki/WebAtomBase.mdwn | 8 +- TWiki/WebChanges.mdwn | 5 +- TWiki/WebLeftBar.mdwn | 8 - TWiki/WebLeftBarLogin.mdwn | 9 +- TWiki/WebPreferences.mdwn | 7 +- TWiki/WebTemplateTopics.mdwn | 9 + TWiki/WebTopicCreator.mdwn | 15 +- TWiki/WebTopicNonWikiTemplate.mdwn | 10 +- TWiki/WebTopicViewTemplate.mdwn | 37 +- TWiki/WhatDoesTWikiStandFor.mdwn | 2 +- TWiki/WikiReferences.mdwn | 2 +- TWiki/WikiSyntax.mdwn | 2 +- TWiki/WikiWord.mdwn | 13 +- TWiki/WysiwygPlugin.mdwn | 2328 +++---------------------- 173 files changed, 9031 insertions(+), 4774 deletions(-) create mode 100644 TWiki/BehaviourContrib.mdwn create mode 100644 TWiki/CommentPluginExamples.mdwn create mode 100644 TWiki/HierarchicalNavigation.mdwn create mode 100644 TWiki/HierarchicalNavigationChildExample.mdwn create mode 100644 TWiki/PatternSkinColorSettings.mdwn create mode 100644 TWiki/PatternSkinElements.mdwn create mode 100644 TWiki/TWikiAddOns.mdwn create mode 100644 TWiki/TWikiConfigureLoadDotPm.mdwn create mode 100644 TWiki/TWikiConfigureUIsEXTENDDotPm.mdwn create mode 100644 TWiki/TWikiContribs.mdwn create mode 100644 TWiki/TWikiReleaseNotes04x01.mdwn create mode 100644 TWiki/TWikiRenderingShortcut.mdwn create mode 100644 TWiki/TWikiUserSetting.mdwn create mode 100644 TWiki/TwistyPlugin.mdwn create mode 100644 TWiki/VarAQUA.mdwn create mode 100644 TWiki/VarBB.mdwn create mode 100644 TWiki/VarBB2.mdwn create mode 100644 TWiki/VarBB3.mdwn create mode 100644 TWiki/VarBB4.mdwn create mode 100644 TWiki/VarBLACK.mdwn create mode 100644 TWiki/VarBLUE.mdwn create mode 100644 TWiki/VarBR.mdwn create mode 100644 TWiki/VarBROWN.mdwn create mode 100644 TWiki/VarBULLET.mdwn create mode 100644 TWiki/VarENDCOLOR.mdwn create mode 100644 TWiki/VarGRAY.mdwn create mode 100644 TWiki/VarGREEN.mdwn create mode 100644 TWiki/VarH.mdwn create mode 100644 TWiki/VarI.mdwn create mode 100644 TWiki/VarLIME.mdwn create mode 100644 TWiki/VarM.mdwn create mode 100644 TWiki/VarMAROON.mdwn create mode 100644 TWiki/VarN.mdwn create mode 100644 TWiki/VarNAVY.mdwn create mode 100644 TWiki/VarOLIVE.mdwn create mode 100644 TWiki/VarORANGE.mdwn create mode 100644 TWiki/VarP.mdwn create mode 100644 TWiki/VarPINK.mdwn create mode 100644 TWiki/VarPURPLE.mdwn create mode 100644 TWiki/VarQ.mdwn create mode 100644 TWiki/VarQUERYPARAMS.mdwn create mode 100644 TWiki/VarRED.mdwn create mode 100644 TWiki/VarS.mdwn create mode 100644 TWiki/VarSILVER.mdwn create mode 100644 TWiki/VarT.mdwn create mode 100644 TWiki/VarTEAL.mdwn create mode 100644 TWiki/VarTOPICURL.mdwn create mode 100644 TWiki/VarU.mdwn create mode 100644 TWiki/VarVBAR.mdwn create mode 100644 TWiki/VarWHITE.mdwn create mode 100644 TWiki/VarX.mdwn create mode 100644 TWiki/VarY.mdwn create mode 100644 TWiki/VarYELLOW.mdwn create mode 100644 TWiki/WebTemplateTopics.mdwn diff --git a/TWiki/ATasteOfTWiki.mdwn b/TWiki/ATasteOfTWiki.mdwn index 20fdd6f..ac9bb7a 100644 --- a/TWiki/ATasteOfTWiki.mdwn +++ b/TWiki/ATasteOfTWiki.mdwn @@ -4,36 +4,21 @@ This is a short introductory training course for TWiki beginners. ## Slide 1: A Taste of TWiki - - - - - -
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, via Ward Cunningham
  • -
  • In Ward's words, Wiki is "the simplest online database that could possibly work"
  • -
  • A Wiki is basically a shared, online, persistent whiteboard
  • -
-
+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 ## Slide 2: TWiki Wiki - - - - - -
WhiteboardTWiki implements the basic Wiki idea of a shared whiteboard

-

-
    -
  • Anyone can add content
    ... or change what is written
    ... or change the organisation of the content
  • -
  • Whatever what you write is
    ... nicely presented
    ... remembered... and never forgotten
  • -
-
+Whiteboard TWiki implements the basic Wiki idea of a shared whiteboard + +- Anyone can add content
... or change what is written
... or change the organisation of the content +- Whatever what you write is
... nicely presented
... 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:

+- Examples:

## 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...` diff --git a/TWiki/AdminToolsCategory.mdwn b/TWiki/AdminToolsCategory.mdwn index 664a0ad..421a785 100644 --- a/TWiki/AdminToolsCategory.mdwn +++ b/TWiki/AdminToolsCategory.mdwn @@ -1,44 +1,43 @@ # 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:** - -> -> -> -> -> -> -> -> -> -> -> -> ->
WebToolsUse to...
->

TWiki Installation Error

Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags)
This table is updated automatically based on WebPreferences settings of the individual webs.
-> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ->
Legend:  Home of web WebHome Search web WebSearch Recent changes in the web WebChanges Get notified of changes to the web WebNotify
   Preferences of web WebPreferences Statistics of web WebStatistics Bullet list of all topics WebTopicList Index of all topics WebIndex
+- help Documentation: [[TWiki Reference Manual|Main/TWikiReferenceManual]] +- wrench [[Site Tools|Main/TWikiSiteTools]]: [Configure](http://www.dementia.org/twiki/configure), [[TWikiPreferences]], [[InterWikis]], [[Variables|Main/TWikiVariables]], [[Doc Graphics|Main/TWikiDocGraphics]] +- persons Manage [[Users|Main/TWikiUsers]]: [[Register|Main/TWikiRegistration]], [[NewUserTemplate]], [[UserForm]], [[ResetPassword]], [[ChangePassword]] +- indexlist Manage Content: [[Topics|Main/ManagingTopics]], [[Webs|Main/ManagingWebs]], [[YouAreHere]] +- folder Webs: + + + + + + + + + + + +
WebToolsUse to...
+

TWiki Installation Error

Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags)
This table is updated automatically based on WebPreferences settings of the individual webs.
+ + + + + + + + + + + + + + + + + +
Legend:  Home of web WebHome Search web WebSearch Recent changes in the web WebChanges Get notified of changes to the web WebNotify
   Preferences of web WebPreferences Statistics of web WebStatistics Bullet list of all topics WebTopicList Index of all topics WebIndex
## All Admin Tools Category topics diff --git a/TWiki/AnApplicationWithWikiForm.mdwn b/TWiki/AnApplicationWithWikiForm.mdwn index 4344d96..8ac2bec 100644 --- a/TWiki/AnApplicationWithWikiForm.mdwn +++ b/TWiki/AnApplicationWithWikiForm.mdwn @@ -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
+-- **_Contributors:_** TWiki:Main.MiyokoTakushima - 18 Oct 2004 diff --git a/TWiki/BehaviourContrib.mdwn b/TWiki/BehaviourContrib.mdwn new file mode 100644 index 0000000..1c674ba --- /dev/null +++ b/TWiki/BehaviourContrib.mdwn @@ -0,0 +1,178 @@ +# Behaviour Javascript framework Contrib + +This contrib packages the third-party `Behaviour` Javascript event library, available from . + +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/). + + + +## 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: +> +>
  • +> +> Click me to delete me +> +>
  • +> +> You can use: +> +> +> +> 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); + +## Usage + +Include the javascript file: + +> + +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); + +## 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. + +> [[%TWIKIWEB%.%HOMETOPIC%][TWiki Web Home]] +> +> +> +> The class name `link%TWIKIWEB%%HOMETOPIC%` will get expanded to `linkTWikiWebHome` + +Creates: + +[[TWiki Web Home|TWiki/WebHome]] + +## 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 + +## License + +Behaviour is freely distributable under the terms of an BSD license. For details, see the Behaviour website. + +## Links + +- [Behaviour website](http://bennolan.com/behaviour/) +- [Behaviour Google Group](http://groups.google.com/group/behaviour) + +## Contrib Info + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Author: TWiki:Main.ArthurClemens
    Copyright: version 1.1 - Copyright (c) Ben Nolan and Simon Willison
    License: BSD
    Dependencies: None
    4 June 2006 1.000 First Version. Included Behaviour version: 1.1
    Home: http://TWiki.org/cgi-bin/view/Plugins/%TOPIC%
    Feedback: http://TWiki.org/cgi-bin/view/Plugins/%TOPIC%Dev
    Appraisal: http://TWiki.org/cgi-bin/view/Plugins/%TOPIC%Appraisal
    + +**_Related Topics:_** [[TWikiPreferences]] diff --git a/TWiki/BulkResetPassword.mdwn b/TWiki/BulkResetPassword.mdwn index 40e11a4..c832631 100644 --- a/TWiki/BulkResetPassword.mdwn +++ b/TWiki/BulkResetPassword.mdwn @@ -1,47 +1,37 @@ # 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). - -
    -
    - - - - - - - - - - - - - - - - - - - - - - -
    This text will be sent to users in their "reset" e-mail:
    - -
    -

    Click the checkboxes below for the users whose passwords you want to reset:

    -
    WikiNameCreatedChangedReset
    -

    TWiki Installation Error

    Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags)
    -
    -
    - -**_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. + +
    + + + +%BR% %BR% ---- -**_Related Topics:_** [[AdminToolsCategory]] +%BR% **_Related Topics:_** [[AdminToolsCategory]] - - Set ALLOWTOPICVIEW = [[TWikiAdminGroup]] - Set ALLOWTOPICCHANGE = [[TWikiAdminGroup]] diff --git a/TWiki/ChangeEmailAddress.mdwn b/TWiki/ChangeEmailAddress.mdwn index ff1903f..2d38664 100644 --- a/TWiki/ChangeEmailAddress.mdwn +++ b/TWiki/ChangeEmailAddress.mdwn @@ -1,6 +1,6 @@ # 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. -
    +
    After submitting this form your e-mail will be changed, and you will be returned to this form.
    +
    Registered e-mail addresses for currently logged in user (admin):
    - +
    - - + + - - + + - - + + - - + +
    Your [[TWiki/LoginName]]: **   Fields marked ** are required
    Password: ** Your [[TWiki/LoginName]]: **
    New e-mails (space-separated list): ** Password: **
         (Fields marked ** are required) New e-mails (space-separated list): **
    +
    -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. +
    +
      +
    • info If you have any questions, please contact 0.
    • +
    • info [[Main/TWikiUsers]] has a list of other TWiki users.
    • +
    +
    **_Related topics:_** [[ChangePassword]], [[ResetPassword]], [[UserToolsCategory]], [[AdminToolsCategory]] diff --git a/TWiki/ChangePassword.mdwn b/TWiki/ChangePassword.mdwn index 905ea1e..e160179 100644 --- a/TWiki/ChangePassword.mdwn +++ b/TWiki/ChangePassword.mdwn @@ -2,40 +2,42 @@ **_Forgotten your password?_** Use [[ResetPassword]] instead. -[[TWikiUsers]] has a list of other TWiki users. -
    +
    After submitting this form your password will be changed.
    - +
    - - + - - + + - - + + - - + + - - + +
    Your [[TWiki/LoginName]]: ** Fields marked ** are required
    Current password: ** Your [[TWiki/LoginName]]: **
    New password: ** Current password: **
    Retype new password: ** New password: **
         (Fields marked ** are required) Retype new password: **
    +
    -After submitting this form your password will be changed. - -If you have any questions, please contact 0. +
    +
      +
    • info If you have any questions, please contact 0.
    • +
    • info [[Main/TWikiUsers]] has a list of other TWiki users.
    • +
    +
    **_Related topics:_** [[ResetPassword]], [[ChangeEmailAddress]], [[UserToolsCategory]], [[AdminToolsCategory]] diff --git a/TWiki/CommentPlugin.mdwn b/TWiki/CommentPlugin.mdwn index c6d6d4c..2340553 100644 --- a/TWiki/CommentPlugin.mdwn +++ b/TWiki/CommentPlugin.mdwn @@ -1,8 +1,8 @@ # 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)** +
    WARNING: TWiki-4 only. If you want to use this plugin with an earlier version of TWiki, please use revision 31 of the zip.
      @@ -18,7 +18,13 @@ This plugin allows users to quickly post comments to a page without an edit/prev
  • Customisation
  • @@ -28,7 +34,7 @@ This plugin allows users to quickly post comments to a page without an edit/prev
    -# Features +## 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. -# Syntax Rules +## 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. - The following attributes are [[recognised|Main/WebHome#MoreAttrs]] + The following attributes are recognized (see also [[additional attributes|Main/WebHome#MoreAttrs]]): @@ -53,6 +59,10 @@ Write the command `%COMMENT{` _attributes_ `}%` anywhere in a TWiki topic. %COMM + + + + @@ -70,15 +80,27 @@ Write the command `%COMMENT{` _attributes_ `}%` anywhere in a TWiki topic. %COMM - + + + + + + + + + + + + +
    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'.
    default Default text to put into the textarea of the prompt.
    target Name of the topic to add the comment to. Defaults to the current topic.
    noform Set to "on" to disable the automatic form that encloses your comment block - remember to insert <FORM> tags yourself! Set to "on" to disable the automatic form that encloses your comment block - remember to insert <form> tags yourself! See [[Main/CommentPluginExamples#noform]] for an example.
    nopost Set to "on" to disable insertion of the posted text into the topic.
    remove Set to "on" to remove the comment prompt after the first time it is clicked.
    button Button label text; by default Add comment.
    -## Positioning the comment +### 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. -### Location relative to `%COMMENT` tag +#### 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. -### Location relative to a TWiki anchor +#### 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. -### Location relative to an arbitrary text string +#### 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. -## Default templates +### 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 -# Customisation +## 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. + +### 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<Skin>Template (where <Skin> 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<Skin>Template (where <Skin> 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. -## The `PROMPT` template +### 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"}% + +### 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 `>:/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 `
    ` and `
    ` 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! + + + +#### Providing attribute values - 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: - - %TMPL:END% + %TMPL:DEF{promptbox}%
     
    %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% ----- +hand See rendered template [[Default|Main/CommentPluginExamples#Default]] -## User templates +### User templates -### top +#### 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% ----- +hand See rendered template [[top|Main/CommentPluginExamples#top]] -### bottom +#### 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% ----- +hand See rendered template [[bottom|Main/CommentPluginExamples#bottom]] -### above +#### 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% + +hand See rendered template [[above|Main/CommentPluginExamples#above]] + +#### 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}% %TMPL:END% + + %TMPL:DEF{OUTPUT:bulletabove}% * %URLPARAM{"bullet_above_item"}%%POS:BEFORE% %TMPL:END% ----- +hand See rendered template [[bulletabove|Main/CommentPluginExamples#bulletabove]] -### threadmode +#### threadmode Wiki thread mode comment, signed and dated @@ -96,9 +110,24 @@ Wiki thread mode comment, signed and dated -- %WIKIUSERNAME% - %DATE% %TMPL:END% ----- +hand See rendered template [[threadmode|Main/CommentPluginExamples#threadmode]] + +#### 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% + +hand See rendered template [[belowthreadmode|Main/CommentPluginExamples#belowthreadmode]] -### below +#### 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% ----- +hand See rendered template [[below|Main/CommentPluginExamples#below]] -### tableprepend +#### 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="
    "}% %WIKIUSERNAME% %SERVERTIME% | + %TMPL:DEF{OUTPUT:tableprepend}%%POS:AFTER%| %URLPARAM{"comment" newline="
    "}% | %WIKIUSERNAME% | %SERVERTIME% | %TMPL:END% ----- +hand See rendered template [[tableprepend|Main/CommentPluginExamples#tableprepend]] -### tableappend +#### 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="
    "}% | %WIKIUSERNAME% | %SERVERTIME% | %TMPL:END% ----- +hand See rendered template [[tableappend|Main/CommentPluginExamples#tableappend]] -### after: Add before the comment box, after the last comment +#### 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% ----- +hand See rendered template [[after|Main/CommentPluginExamples#after]] -### action +#### 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}% - - - - - - - - - - - - - - - -
    Action for (%TWIKIWEB%.WikiName):
    Due date: - -
    - -
    - %TMPL:END% - - %TMPL:DEF{OUTPUT:action}%%POS:BEFORE%%AC%NOP%TION{who="%URLPARAM{"who"}%" due="%URLPARAM{"due"}%"}% %URLPARAM{"comment" newline="
    "}%
    - Created by %WIKIUSERNAME%, %SERVERTIME% - %TMPL:END% - ----- - -### table + + %TABLE{databg="#ffffff" tableborder="0" cellborder="0"}% + | | | + | | | + | | | + || | + %TMPL:END% + + %TMPL:DEF{OUTPUT:action}%%POS:BEFORE%%AC%NOP%TION{who="%URLPARAM{"action_who"}%" due="%URLPARAM{"action_due"}%"}% %URLPARAM{"action_comment" newline="
    "}%
    - Created by %WIKIUSERNAME%, %SERVERTIME% + %TMPL:END% + +hand See rendered template [[action|Main/CommentPluginExamples#action]] + +#### table Tablerows adding on end - TWiki:Main/FranzJosefSilli %TMPL:DEF{PROMPT:table}% -
    Date:
    City: entry
    + %TABLE{databg="#ffffff" tableborder="0" cellborder="0"}% + | | | + | | | + || | %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% ----- +hand See rendered template [[table|Main/CommentPluginExamples#table]] -### toctalk +#### toctalk Talk using TOC adding on end - TWiki:Main/FranzJosefSilli %TMPL:DEF{PROMPT:toctalk}% -
    Summary:


    + %TABLE{databg="#ffffff" tableborder="0" cellborder="0"}% + | | | + | | | + || | %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% ----- +hand See rendered template [[toctalk|Main/CommentPluginExamples#toctalk]] -### bookmark +#### bookmark Talk using TOC adding on end - TWiki:Main/FranzJosefSilli %TMPL:DEF{PROMPT:bookmark}% -
    URL:
    Link:
    Text: bookmark
    + %TABLE{databg="#ffffff" tableborder="0" cellborder="0"}% + | | | + | | | + | | | + || | %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% -# Include UserCommentsTemplate +hand See rendered template [[bookmark|Main/CommentPluginExamples#bookmark]] + +#### 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}% + + %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% + +hand See rendered template [[return|Main/CommentPluginExamples#return]] + +## Include UserComments -Including [[UserCommentsTemplate]]: +Including [[UserComments]]: %TMPL:INCLUDE\{"UserComments"\}% diff --git a/TWiki/EditTablePlugin.mdwn b/TWiki/EditTablePlugin.mdwn index 7eecafb..775ad2f 100644 --- a/TWiki/EditTablePlugin.mdwn +++ b/TWiki/EditTablePlugin.mdwn @@ -37,7 +37,7 @@ Add a `%EDITTABLE{...}%` variable just before an existing table to make it edita format - 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%   | text, <size>, <initial value> | %BR% • Textarea input field:%BR%   | textarea, <rows>x<columns>, <initial value> | %BR% • Drop down box: %BR%   | select, <size>, <option 1>, <option 2>, etc | %BR% • Radio buttons: %BR%   | radio, <size*>, <option 1>, <option 2>, etc | %BR%   * size indicates the number of buttons per line in edit mode %BR% • Checkboxes: %BR%   | checkbox, <size*>, <option 1>, <option 2>, etc | %BR%   * size indicates the number of checkboxes per line in edit mode %BR% • Fixed label: %BR%   | label, 0, <label text> | %BR% • Row number: %BR%   | row, <offset> | %BR% • Date: %BR%   | date, <size>, <initial value>, <DHTML date format> | %BR%   * see Mishoo documentation for more infos about the DHTML date format + 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%   | text, <size>, <initial value> | %BR% • Textarea input field:%BR%   | textarea, <rows>x<columns>, <initial value> | %BR% • Drop down box: %BR%   | select, <size>, <option 1>, <option 2>, etc* | %BR%   * only one item can be selected %BR% • Radio buttons: %BR%   | radio, <size*>, <option 1>, <option 2>, etc | %BR%   * size indicates the number of buttons per line in edit mode %BR% • Checkboxes: %BR%   | checkbox, <size*>, <option 1>, <option 2>, etc | %BR%   * size indicates the number of checkboxes per line in edit mode %BR% • Fixed label: %BR%   | label, 0, <label text> | %BR% • Row number: %BR%   | row, <offset> | %BR% • Date: %BR%   | date, <size>, <initial value>, <DHTML date format> | %BR%   * see Mishoo documentation for more infos about the DHTML date format "text, 16" %BR% for all cells @@ -318,7 +318,7 @@ Plugin settings are stored as preferences variables. To reference a plugin setti Plugin Version: - 11706 + 12327 Change History: diff --git a/TWiki/EmptyPlugin.mdwn b/TWiki/EmptyPlugin.mdwn index 080cd22..e004d24 100644 --- a/TWiki/EmptyPlugin.mdwn +++ b/TWiki/EmptyPlugin.mdwn @@ -12,19 +12,6 @@ To create your own Plugin: (none) -## Plugin Settings - -Plugin settings are stored as preferences variables. To reference a plugin setting write **%<plugin>\_<setting>%**, i.e. **%EMPTYPLUGIN\_SHORTDESCRIPTION%** - -- 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 - ## Plugin Installation Instructions - This plugin is preinstalled, you do not need to install it. diff --git a/TWiki/FileAttachment.mdwn b/TWiki/FileAttachment.mdwn index dd65552..b593369 100644 --- a/TWiki/FileAttachment.mdwn +++ b/TWiki/FileAttachment.mdwn @@ -13,7 +13,12 @@
  • Deleting Attachments
  • Linking to Attached Files
  • File Attachment Contents Table
  • -
  • File Attachment Controls
  • +
  • File Attachment Controls +
  • Known Issues
  • @@ -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**. -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ->
    IAttachmentActionSizeDateWhoComment
    txtSample.txtmanage 0.1 K 22 Jul 2000 - 19:37 UploadingUser Just a sample
    bmpSmile.gifmanage 0.1 K 22 Jul 2000 - 19:38 UploadingUser Smiley face
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Topic attachments
    IAttachmentActionSizeDateWhoComment
    txttxtSample.txtmanage 0.1 K 22 Jul 2000 - 19:37 TWikiContributor Just a sample
    gifgifSmile.gifmanage 0.1 K 22 Jul 2000 - 19:38 TWikiContributor Smiley face
    +
    ## File Attachment Controls Clicking on a **Manage** link takes you to a new page that looks a bit like this (depending on what [[skin|Main/TWikiSkins]] is selected): ->
    -> -> -> -> ->
    ->

    Update attachment Sample.txt

    ->
    -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ->
    VersionActionDateWhoComment
    1 view 22 Jul 2000 - 19:37 UploadingUser Just a sample
    ->
    ->

    ->

    ->
    -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ->
    Previous uploadSample.txt (TWikiContributor)Select a new local file to update this attachment.
    Local file Upload up to 10000 KB.
    Comment ->
    Link -> Images will be displayed, for other attachments a link will be created.
    Hide file -> Attachments will not be shown in topic view page.
    ->
    ->
    ->
    ->
    +
    +
    +

    Attach new file

    +

    Select a new local file to update attachment Sample.txt (UploadingUser)
    Upload up to 10000 KB.

    +

    +

    +
    +

    Comment

    +

    Describe the file so other people know what it is.

    +

    +

    +
    +

    Properties

    +

    +

    Images will be displayed, for other attachments a link will be created.

    +

    Attachments will not be shown in topic view page.
    +
    +
    + + + +
    +
    or Cancel
    +
    - 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. diff --git a/TWiki/FormattedSearch.mdwn b/TWiki/FormattedSearch.mdwn index 8e67893..81fb00c 100644 --- a/TWiki/FormattedSearch.mdwn +++ b/TWiki/FormattedSearch.mdwn @@ -1,7 +1,11 @@
    • TWiki Formatted Search
        -
      • Syntax
      • +
      • Syntax +
      • Examples @@ -63,11 +67,44 @@ The default output format of a [[%SEARCH{...}%|Main/VarSEARCH]] is Two parameters can be used to specify a customized search result: -1. `header="..."` parameter +### 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.
        Example: `header="| *Topic:* | *Summary:* |"` -2. `format="..."` parameter +Variables that can be used in the header string: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Name: Expands To:
        $web Name of the web
        $n or $n() New line. Use $n() if followed by alphanumeric character, e.g. write Foo$n()Bar instead of Foo$nBar
        $nop or $nop() Is a "no operation". This variable gets removed; useful for nested search
        $quot Double quote ("). Alternatively write \" to escape it
        $percnt Percent sign (%)
        $dollar Dollar sign ($)
        + +### 2. `format="..."` parameter Use the format parameter to specify the format of one search hit.
        Example: `format="| $topic | $summary |"` @@ -116,11 +153,11 @@ Variables that can be used in the format string: $date - Time stamp of last topic update, e.g. 29 Jun 2010 - 15:58 + Time stamp of last topic update, e.g. 29 Jun 2010 - 16:02 $isodate - Time stamp of last topic update, e.g. 2010-06-29T15:58Z + Time stamp of last topic update, e.g. 2010-06-29T16:02Z $rev @@ -230,6 +267,8 @@ Variables that can be used in the format string: ## 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. + ### 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:* |`
        `%SEARCH{ "[T]opicClassification.*?value=\"[P]ublicFAQ\"" scope="text" regex="on" nosearch="on" nototal="on" format="| [[$topic]] | $formfield(OperatingSystem) | $formfield(OsVersion) |" }%` +`| *Topic:* | *OperatingSystem:* | *OsVersion:* |`
        `%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), , | [[$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), , | [[$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 diff --git a/TWiki/GoBox.mdwn b/TWiki/GoBox.mdwn index b40514c..eedae2c 100644 --- a/TWiki/GoBox.mdwn +++ b/TWiki/GoBox.mdwn @@ -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 index 0000000..71b9f9b --- /dev/null +++ b/TWiki/HierarchicalNavigation.mdwn @@ -0,0 +1,73 @@ +# 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._ + + + +## Usage + +Two sections are defined: + +- `all` +- `children` + +### Displaying the Parent - Current - Children block + +> %INCLUDE{"%TWIKIWEB%.HierarchicalNavigation" section="all"}% + +generates: + +When included in [[WebLeftBar]] (using default Pattern skin) this is styled to: + +
        +

        +

        +
        + +### Displaying child topics + +> *Child topics:* +> %INCLUDE{"%TWIKIWEB%.HierarchicalNavigation" section="children"}% + +generates: + +**Child topics:** + +
        +
        +
        +

        TWiki Installation Error

        Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags)
        +
        +
          +
        • WebHome
        • +
        +
        +
        +

        TWiki Installation Error

        Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags)
        +
        +

        +

        +
        +
        +

        TWiki Installation Error

        Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags)
        +
        +

        +

        +
        diff --git a/TWiki/HierarchicalNavigationChildExample.mdwn b/TWiki/HierarchicalNavigationChildExample.mdwn new file mode 100644 index 0000000..89e038d --- /dev/null +++ b/TWiki/HierarchicalNavigationChildExample.mdwn @@ -0,0 +1 @@ +Example child topic for [[HierarchicalNavigation]]. diff --git a/TWiki/IfStatements.mdwn b/TWiki/IfStatements.mdwn index c7b524c..fe82665 100644 --- a/TWiki/IfStatements.mdwn +++ b/TWiki/IfStatements.mdwn @@ -1,3 +1,5 @@ +# `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: diff --git a/TWiki/InstalledPlugins.mdwn b/TWiki/InstalledPlugins.mdwn index 795bbd3..ef7f6b0 100644 --- a/TWiki/InstalledPlugins.mdwn +++ b/TWiki/InstalledPlugins.mdwn @@ -1,6 +1,6 @@ # 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: diff --git a/TWiki/InstantEnhancements.mdwn b/TWiki/InstantEnhancements.mdwn index 6e1c526..b6d91ff 100644 --- a/TWiki/InstantEnhancements.mdwn +++ b/TWiki/InstantEnhancements.mdwn @@ -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. - %SEARCH{ "\.*" scope="topic" regex="on" nosearch="on" nototal="on" order="modified" reverse="on" format="" limit="15" }% + %SEARCH{ "\.*" scope="topic" type="regex" nosearch="on" nototal="on" order="modified" reverse="on" format="" limit="15" }%
        [[$topic][$topic]] $wikiusername $date
        [[$topic][$topic]] $wikiusername $date
        ---- diff --git a/TWiki/InterWikis.mdwn b/TWiki/InterWikis.mdwn index b3cd8d2..a605ce0 100644 --- a/TWiki/InterWikis.mdwn +++ b/TWiki/InterWikis.mdwn @@ -8,6 +8,7 @@ Whenever you write **ExternalSite:Page** it will be linked automati - Inter-Site links are defined in the tables below. - Each entry must be of format:
        **| External site alias | URL | Tooltip help text |**. +- The Alias must start with an upper case letter and may contain alphanumeric letters. - The URL and Tooltip Text may contain optional **$page** variables; the variable gets expanded to the page name. - **_Note:_** The Tooltip Text must not contain any HTML tags (including **<nop>** escape code), no internal [[WikiWord]] links, and no external links. Hint: Escape **'WikiWords'** and **'$page'**. diff --git a/TWiki/InterwikiPlugin.mdwn b/TWiki/InterwikiPlugin.mdwn index 3b9fe3f..1e74aae 100644 --- a/TWiki/InterwikiPlugin.mdwn +++ b/TWiki/InterwikiPlugin.mdwn @@ -14,8 +14,12 @@ The %TOPIC% links **ExternalSite:Page** text to external sites base ## Syntax Rules - Enter **ExternalSite:Page** to create a link that points to the **Page** on the **ExternalSite** server. +- Enter **\[[ExternalSite:Page]\[any label]]** to specify a custom label. - All **ExternalSite** aliases are defined in the [[InterWikis]] topic. - Add and edit aliases in [[InterWikis]]. +- Each entry must be of format:
        **| External site alias | URL | Tooltip help text |**. +- Site aliases must start with an upper case letter and may contain alphanumeric letters. +- The URL and Tooltip Text may contain optional **$page** variables; the variable gets expanded to the page name. - %H% For TWiki sites, both the **web** and the **topic** have to be specified: **TWikisite:Webname/SomePage** - 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: (**** or **1**, default is ****) - - Set SUPPRESSTOOLTIP = 0 +- Inter-link format, with variables: + + + + + + + + + + + + + + + + + + + + +
        $site Site alias
        $page Page (part after colon)
        $url Site URL (might contain $page)
        $label Equal to $site:$page
        $tooltip Tooltip message
        + - Set INTERLINKFORMAT = [$label]($url $tooltip) ## Plugin Installation Instructions @@ -65,14 +90,30 @@ Plugin settings are stored as Preferences variables. To reference a plugin setti TWiki:Main.AndreaSterbini, TWiki:Main.PeterThoeny + Copyright: + © 2006, TWiki:Main.AndreaSterbini, Peter Thoeny + + + License: + GPL (GNU General Public License) + + Plugin Version: - 1.008 + 11935 Change History:   + 08 Nov 2006: + 11935 - Added css (TWiki:Main.PeterThoeny) + + + 07 Nov 2006: + 11924 - Added INTERLINKFORMAT; removed redundant SUPPRESSTOOLTIP; allow @ signs in page part of interwiki link; support single digit page part (TWiki:Main.PeterThoeny) + + 26 Feb 2005: 1.008 TWiki:Main.CrawfordCurrie cleaned up code and made Dakar-ready @@ -86,7 +127,7 @@ Plugin settings are stored as Preferences variables. To reference a plugin setti 16 Feb 2004: - Support [[Site:Page][label]] Interwiki links (PTh); use TWiki::Func interface for [[Main/I18N]] regular expressions (Walter Mundt) + Support [[Site:Page][label]] Interwiki links (PTh); use TWiki::Func interface for I18N regular expressions (Walter Mundt) 18 Jan 2003: @@ -137,13 +178,23 @@ Plugin settings are stored as Preferences variables. To reference a plugin setti 5.0 + [[TWiki:Plugins/Benchmark]]: + [[TWiki/GoodStyle]] 100%, [[TWiki/FormattedSearch]] 98%, %TOPIC% 98% + + Plugin Home: - TWiki:Plugins/%TOPIC% (TWiki:Plugins/%TOPIC%) + http://TWiki.org/cgi-bin/view/Plugins/%TOPIC% Feedback: - TWiki:Plugins/%TOPIC%Dev (TWiki:Plugins/%TOPIC%Dev) + http://TWiki.org/cgi-bin/view/Plugins/%TOPIC%Dev + + + Appraisal: + http://TWiki.org/cgi-bin/view/Plugins/%TOPIC%Appraisal -**_Related Topics:_** [[InterWikis]], [[TWikiPreferences]], [[TWikiPlugins]] +**_Related Topics:_** [[TWikiPlugins]], [[DeveloperDocumentationCategory]], [[AdminDocumentationCategory]], [[TWikiPreferences]], [[InterWikis]] + +-- TWiki:Main.PeterThoeny - 08 Nov 2006 diff --git a/TWiki/JSCalendarContrib.mdwn b/TWiki/JSCalendarContrib.mdwn index 58514f0..a534b61 100644 --- a/TWiki/JSCalendarContrib.mdwn +++ b/TWiki/JSCalendarContrib.mdwn @@ -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 - 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` + + + + + + + + + + + + + + + + +
        Setting Default
        $TWiki::cfg{JSCalendarContrib}{style}'blue'
        $TWiki::cfg{JSCalendarContrib}{lang}'en'
        $TWiki::cfg{JSCalendarContrib}{format}'%e %b %Y'
        ### Contrib Info @@ -455,7 +475,7 @@ Note that the header will only be added once, regardless of the number of times Version: - 10613 of the Mishoo calendar + 11704 of the Mishoo calendar Copyright ©: @@ -465,11 +485,6 @@ Note that the header will only be added once, regardless of the number of times License: GPL (GNU General Public License) - - -| - - @@ -479,6 +494,14 @@ Note that the header will only be added once, regardless of the number of times + + + + + + + + diff --git a/TWiki/LoginName.mdwn b/TWiki/LoginName.mdwn index 2fdbcff..55d5de8 100644 --- a/TWiki/LoginName.mdwn +++ b/TWiki/LoginName.mdwn @@ -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. -## How to find yours +## 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]] diff --git a/TWiki/MailerContrib.mdwn b/TWiki/MailerContrib.mdwn index d572e36..bb0cbaf 100644 --- a/TWiki/MailerContrib.mdwn +++ b/TWiki/MailerContrib.mdwn @@ -1,49 +1,130 @@ # %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)**
        -## Summary of Contents +# `tools/mailnotify` -### `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_
        _three spaces_ \* [ _webName_ . ] _wikiName_
        _three spaces_ \* _SMTP mail address_
        _three spaces_ \* _SMTP mail address_ : _topics_
        _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. + +# `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. + +# package TWiki::Contrib::MailerContrib::WebNotify + +Object that represents the contents of a [[WebNotify]] topic in a TWiki web + +## [[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. + +## [[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. + +## [[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. + +## [[ObjectMethod]] getSubscribers() + +Get a list of all subscriber names (unsorted) + +## [[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. + +## [[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. + +## [[ObjectMethod]] stringify() -> string + +Return a string representation of this object, in [[WebNotify]] format. + +## [[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. + +## [[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 + +## [[ObjectMethod]] isEmpty() -> boolean + +Return true if there are no subscribers + +# 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. + +## [[ClassMethod]] new($name) + +- `$name` - Wikiname, with no web, or email address, of user targeted for notification + +Create a new user. + +## [[ObjectMethod]] getEmailAddresses() -> list + +Get a list of email addresses for the user(s) represented by this subscription + +## [[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. + +## [[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. + +## [[ObjectMethod]] isSubscribedTo($topic) -> $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. -### `TWiki/Contrib/MailerContrib` code library +## [[ObjectMethod]] isUnsubscribedFrom($topic) -> $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 -## 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. +## [[ObjectMethod]] stringify() -> string + +Return a string representation of this object, in WebNotify format. + +# 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. + +## [[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. + +## [[ObjectMethod]] stringify() -> string + +Return a string representation of this object, in WebNotify format. + +## [[ObjectMethod]] matches($topic, $db, $depth) -> 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. + +## [[ObjectMethod]] getMode() -> $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. + +---- + +# package TWiki::Contrib::MailerContrib::Change + +Object that represents a change to a topic. + +## [[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. + +## [[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. + +## [[ObjectMethod]] expandHTML($html) -> 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. + +## [[ObjectMethod]] expandPlain() -> string + +Generate a plaintext version of this change. + +# package TWiki::Contrib::MailerContrib::UpData + +Object that lazy-scans topics to extract parent relationships. + +## [[ClassMethod]] new($web) + +- `$web` - Web we are building parent relationships for + +Constructor for a web; initially empty, will lazy-load as topics are referenced. + +## [[ObjectMethod]] getParent($topic) -> string + +Get the name of the parent topic of the given topic + +# 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. + +## [[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. + +# 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->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 **%TOPIC%.zip** 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. -## Setting up your cron job +## 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`. -Usage: perl -I <bin> mailnotify [-q] [ _web1 web2 ... webN_ ] <bin> is the path to the TWiki bin directory (usually `../bin`), so that the script can find the rest of TWiki. +Usage: perl -I <bin> mailnotify [-q] [-news] [ _web1 web2 ... webN_ ] <bin> is the path to the TWiki bin directory, so that the script can find the rest of TWiki.
        Dependencies: None  
        11594 Allow format to be configured.
        11415 Add a renderFormFieldForEditHandler so other plugins can forward to this handler to add the date field to the [[Main/TWikiForms]]. (TWiki:Main.ThomasWeigert)
        10247 Item2054 put the calendar at z-index 2000, way above pattern skin divs.
        @@ -78,17 +387,63 @@ You need to set up a `cron` (or equivalent) job to run `mailnotify`. + + + +
        Don't print progress information
        -news Run in news mode (process NewsNotify instead of WebNotify)
        web1 web2 ... webN List of webs to process, separated by spaces or commas. Default is to process all legal TWiki webs. Wildcards (*) are supported.
        -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. + +# Developer Notes + +The changes mails sent to users are based on a TWiki template called `mailnotify`. This template must contain the following definitions. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        HTML:before Section of a HTML mail before the changes
        HTML:middle Repeated in a HTML mail for each change
        HTML:after Section of a HTML mail after the changes
        PLAIN:before Section of a plain text mail before the changes
        PLAIN:middle Repeated in a plain text mail for each changes
        PLAIN:after Section of a plain text mail after the changes
        MailNotifyBody All the above are embedded in this. %HTML_TEXT% expands to the HTML obtained by expanding the HTML:* templates, and %PLAIN_TEXT% from the PLAIN:* templates.
        -## 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. ## Contrib Info @@ -99,110 +454,122 @@ For example, `perl -I /usr/local/twiki/bin mailnotify -q Public Private` will ge Copyright ©: - 2004, Wind River Systems + 2004, Wind River Systems; 2006, http://WikiRing.com License: GPL - Change History: + Change History:   - 8808 - Item1654 mailnotify must enter the command_line context + 12496 + Item3415 mailnotify did not send notifications to intranet users because of wrong call to findUser. + + + 11672 + Added newsletter support, after much harassment from TWiki:Main.LynnwoodBrown + + + 11534 + Item2153 Clarified docs. Item2698 Improved error reporting. + + + 8808 + Item1654 mailnotify must enter the command_line context - 8625 - Item1508 Making the dashes in the separatator clearer + 8625 + Item1508 Making the dashes in the separatator clearer - 8606 - Item1508 [[Main/MailerContrib]]: Brushing up HTML mailnotify template + 8606 + Item1508 [[Main/MailerContrib]]: Brushing up HTML mailnotify template - 8602 - Item1508 [[Main/MailerContrib]]: Cleaning up plaintext e-mail template, removing TEXTAREA + 8602 + Item1508 [[Main/MailerContrib]]: Cleaning up plaintext e-mail template, removing TEXTAREA - 8522 - Item1511 arguments to getScriptUrl in wrong order :-( + 8522 + Item1511 arguments to getScriptUrl in wrong order :-( - 8434 - Item1465 Fix 'TWiki.' to '%TWIKIEB%.' + 8434 + Item1465 Fix 'TWiki.' to '%TWIKIEB%.' - 8398 - Item1460 polished up the comment a bit + 8398 + Item1460 polished up the comment a bit - 8308 - Item1362 moving mailnotify cron script + 8308 + Item1362 moving mailnotify cron script - 7848 - Item1167 forced all mail operations to generate absolute URLs + 7848 + Item1167 forced all mail operations to generate absolute URLs - 7568 - Item910 use SCRIPTURL{view} instead of complex url expr + 7568 + Item910 use SCRIPTURL{view} instead of complex url expr - 6864 - Item624 mailer templates moved the the right places + 6864 + Item624 mailer templates moved the the right places - 6861 - Item624 Added proper templates support for plain text mails + 6861 + Item624 Added proper templates support for plain text mails - 6809 - Item623 don't print anything if verbosity is switched off. + 6809 + Item623 don't print anything if verbosity is switched off. - 6659 - Item528 Updated [[Main/MailerContrib]]. it's working and the sendmail parameter is used. + 6659 + Item528 Updated [[Main/MailerContrib]]. it's working and the sendmail parameter is used. - 6474 - Item420 removed spurious remove_obsolete_locks from [[Main/MailerContrib]] + 6474 + Item420 removed spurious remove_obsolete_locks from [[Main/MailerContrib]] - 5924 - Item153 fix mail URL-fixing scheme + 5924 + Item153 fix mail URL-fixing scheme - 5269 + 5269 Minor doc fixes - 5266 + 5266 Doc tidy-ups, added filtering of _ webs, added obsolete lock script - 5264 + 5264 Changed default to add web name to user name (I hope) - 5263 + 5263 Minor doc tidyups - 5261 + 5261 Documentation changes, and fixed to scan all webs. - 5253 + 5253 runnable as CGI script, minor bugfixes, removed dependency on [[Main/DBCacheContrib]] - 5234 + 5234 Minor doc changes - 5231 + 5231 Made a change an object, added unit tests to CVS, lots of testing. diff --git a/TWiki/ManagingTopics.mdwn b/TWiki/ManagingTopics.mdwn index 0f1b0c0..c0fafb3 100644 --- a/TWiki/ManagingTopics.mdwn +++ b/TWiki/ManagingTopics.mdwn @@ -70,7 +70,7 @@ Changed references are kept are as short as possible, ex: `topic` is used in pre ### Effect of User Access Settings -User permissions affect the Rename function in various ways. To rename a topic, you need both **ALLOWTOPICCHANGE** and **ALLOWTOPICRENAME** 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 **ALLOWTOPICVIEW** and **ALLOWTOPICCHANGE** permission for that topic. To alter referring topics, you need change permission. See [[TWikiAccessControl]] for information on setting up access permissions. ## Special Considerations diff --git a/TWiki/ManagingUsers.mdwn b/TWiki/ManagingUsers.mdwn index f67cd68..4116fb1 100644 --- a/TWiki/ManagingUsers.mdwn +++ b/TWiki/ManagingUsers.mdwn @@ -4,6 +4,7 @@
      • Authentication and Access Control
      • Register User
      • Change, Reset and Install Passwords
      • +
      • Changing User Account Names
      • Removing User Accounts
    • @@ -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 +## 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` + ## 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.. diff --git a/TWiki/ManagingWebs.mdwn b/TWiki/ManagingWebs.mdwn index 377b6ac..3695683 100644 --- a/TWiki/ManagingWebs.mdwn +++ b/TWiki/ManagingWebs.mdwn @@ -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. ## 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. diff --git a/TWiki/NewUserTemplate.mdwn b/TWiki/NewUserTemplate.mdwn index 814194e..ab65712 100644 --- a/TWiki/NewUserTemplate.mdwn +++ b/TWiki/NewUserTemplate.mdwn @@ -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 ## 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 ## Related Topics diff --git a/TWiki/PatternSkin.mdwn b/TWiki/PatternSkin.mdwn index e3683fa..ea91e05 100644 --- a/TWiki/PatternSkin.mdwn +++ b/TWiki/PatternSkin.mdwn @@ -1,15 +1,19 @@ # 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. -## Screen Shot +## Screenshot [Click for full screen image](http://www.dementia.org/twiki//view/patternskin_screenshot_full.png) ## 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. +### 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. +### 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 ## 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 - + @@ -108,19 +114,35 @@ For further troubleshooting and feedback, go to TWiki:Plugins/PatternSkinDev. Re - + + + + + + + + + + + + + + + + + - + - + diff --git a/TWiki/PatternSkinColorSettings.mdwn b/TWiki/PatternSkinColorSettings.mdwn new file mode 100644 index 0000000..f27abf5 --- /dev/null +++ b/TWiki/PatternSkinColorSettings.mdwn @@ -0,0 +1,1063 @@ +# 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. + +## Usage + +### 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 + +### Step 2 + +Edit this topic, and change the color variables as you like. + +## Color variables + +
      + +
      + +## Logical groupings + +### Text on background + +#### MAIN\_TEXT\_COLOR Main text color + +- Set MAIN\_TEXT\_COLOR = #000 + +#### MAIN\_BACKGROUND\_COLOR Main background color + +- Set MAIN\_BACKGROUND\_COLOR = #fff + +#### LIGHT\_ON\_DARK\_TEXT\_COLOR Light on dark text color + +- Set LIGHT\_ON\_DARK\_TEXT\_COLOR = #fff + +### Links + +#### LINK\_TEXT\_NORMAL Link normal text + +- Set LINK\_TEXT\_NORMAL = #06c + +#### LINK\_BACKGROUND\_NORMAL Link normal background + +- Set LINK\_BACKGROUND\_NORMAL = + +#### LINK\_TEXT\_ACTION\_BUTTON Link text red (same as LINK\_BACKGROUND\_HOVER) + +- Set LINK\_TEXT\_ACTION\_BUTTON = #D6000F + +#### LINK\_TEXT\_HOVER Link hover text + +- Set LINK\_TEXT\_HOVER = #FBF7E8 + +#### LINK\_BACKGROUND\_HOVER Link background hover + +- Set LINK\_BACKGROUND\_HOVER = #D6000F + +#### SIDE\_BAR\_LINK\_TEXT Side bar link text + +- Set SIDE\_BAR\_LINK\_TEXT = #666 + +#### LINK\_TEXT\_NORMAL\_TABLE\_HEADER Table header link text + +- Set LINK\_TEXT\_NORMAL\_TABLE\_HEADER = #fff + +#### LINK\_TEXT\_NORMAL\_BORDER\_TABLE\_HEADER Table header link border + +- Set LINK\_TEXT\_NORMAL\_BORDER\_TABLE\_HEADER = #bbb + +#### LINK\_TEXT\_SORTED\_TABLE\_HEADER Sorted table header link text + +- Set LINK\_TEXT\_SORTED\_TABLE\_HEADER = #fff + +#### LINK\_TEXT\_HOVER\_TABLE\_HEADER Table header link hover text + +- Set LINK\_TEXT\_HOVER\_TABLE\_HEADER = #fff + +#### LINK\_BORDER\_TABLE\_SELECTED\_COLUMN\_HEADER Link border in selected column header + +- Set LINK\_BORDER\_TABLE\_SELECTED\_COLUMN\_HEADER = #999 + +### Disabled + +#### DISABLED\_BORDER Disabled border + +- Set DISABLED\_BORDER = #e0e0e0 + +#### DISABLED\_TEXT Disabled text + +- Set DISABLED\_TEXT = #ccc + +#### DISABLED\_BACKGROUND Disabled background + +- Set DISABLED\_BACKGROUND = #f5f5f5 + +### 'New' + +#### NEW\_TEXT New text (green) + +- Set NEW\_TEXT = #049804 + +#### NEW\_BACKGROUND New background (light green) + +- Set NEW\_BACKGROUND = #ECFADC + +### Alert + +#### ALERT\_TEXT Alert text (red) + +- Set ALERT\_TEXT = #f00 + +#### ALERT\_TEXT\_MUTED Muted alert text (dark red) + +- Set ALERT\_TEXT\_MUTED = #900 + +#### ALERT\_BORDER Alert border + +- Set ALERT\_BORDER = #f00 + +### Buttons + +#### BUTTON\_TEXT Button text color (dark gray) + +- Set BUTTON\_TEXT = #333 + +#### BUTTON\_BORDERS Button borders + +- Set BUTTON\_BORDERS = #ddd #aaa #aaa #ddd + +#### BUTTON\_BORDERS\_ACTIVE Button borders (active) + +- Set BUTTON\_BORDERS\_ACTIVE = #999 #ccc #ccc #999 + +#### SUBMIT\_BUTTON\_BACKGROUND Submit button background (dark yellow) + +- Set SUBMIT\_BUTTON\_BACKGROUND = #FED764 + +#### SUBMIT\_BUTTON\_BORDER Submit button border (blue) + +- Set SUBMIT\_BUTTON\_BORDER = #88B6CF + +### Forms + +#### INPUT\_FIELD\_BORDERS Input field borders + +- Set INPUT\_FIELD\_BORDERS = #aaa #ddd #ddd #aaa + +#### FORM\_INPUT\_BORDER Textarea, input and select (darker gray) + +- Set FORM\_INPUT\_BORDER = #aaa + +#### FORM\_BORDER Form (same as twikiTable border) + +- Set FORM\_BORDER = #ccc + +#### ACTIVE\_FORM\_BACKGROUND Edit form, form steps + +- Set ACTIVE\_FORM\_BACKGROUND = #f8fbfc + +#### FORMFIELD\_ACTIVE Active form field (not implemented yet) + +- Set FORMFIELD\_ACTIVE = #ffc + +## Color groupings + +### Text colors + +#### GENERAL\_TEXT General text (if not set in MAIN\_BACKGROUND\_COLOR) (black) + +- Set GENERAL\_TEXT = #000 + +#### HEADER\_TEXT Header text + +- Set HEADER\_TEXT = #a00 + +#### CODE\_TEXT Code text, left bar text and links + +- Set CODE\_TEXT = #7A4707 + +#### MUTED\_TEXT Muted text (dark gray) + +- Set MUTED\_TEXT = #666 + +#### GRAYED\_OUT\_TEXT Grayed out text + +- Set GRAYED\_OUT\_TEXT = #8E9195 + +#### STRONG\_TEXT Dark text, header (dark gray) + +- Set STRONG\_TEXT = #333 + +#### SEPARATOR Seperator in topic action bar + +- Set SEPARATOR = #aaa + +### Background colors + +#### GENERAL\_BACKGROUND General background color (if not set in MAIN\_BACKGROUND\_COLOR) (white) + +- Set GENERAL\_BACKGROUND = #fff + +#### SIDE\_BAR\_BACKGROUND Side bar background + +- Set SIDE\_BAR\_BACKGROUND = #f7fafc + +#### SIDE\_BAR\_PERSONAL\_BACKGROUND Side bar personal background + +- Set SIDE\_BAR\_PERSONAL\_BACKGROUND = #e6eff5; + +#### INFO\_BACKGROUND Info (very light blue) (placeholder for background image) + +- Set INFO\_BACKGROUND = #f8fbfc + +#### TOPIC\_ACTION\_BACKGROUND Topic action row (light yellow) + +- Set TOPIC\_ACTION\_BACKGROUND = #FCF8EC + +#### HEADER\_BACKGROUND H1, H2, etc header (light yellow) + +- Set HEADER\_BACKGROUND = #FDFAF3 + +#### ATTACHMENT\_AND\_FORM\_BACKGROUND Attachment, form (light yellow) + +- Set ATTACHMENT\_AND\_FORM\_BACKGROUND = #FEFCF6 + +#### DIFF\_HEADER\_BACKGROUND Diff header (dark gray) (same as GRAYED\_OUT\_TEXT) + +- Set DIFF\_HEADER\_BACKGROUND = #ccc + +#### Table colors + +##### TABLE\_DATA\_BACKGROUND Table data background + +- Set TABLE\_DATA\_BACKGROUND = #f0f6f9 + +##### TABLE\_HEADER\_BACKGROUND Table header background + +- Set TABLE\_HEADER\_BACKGROUND = #6b7f93 + +##### TABLE\_SELECTED\_COLUMN\_HEADER\_BACKGROUND Sorted table column accent background + +- Set TABLE\_SELECTED\_COLUMN\_HEADER\_BACKGROUND = #345 + +##### TABLE\_DATA\_ODD\_BACKGROUND Table data background (odd row) + +- Set TABLE\_DATA\_ODD\_BACKGROUND = #edf4f9 + +##### TABLE\_DATA\_EVEN\_BACKGROUND Table data background (even row) + +- Set TABLE\_DATA\_EVEN\_BACKGROUND = #ffffff + +##### TABLE\_DATA\_ODD\_SELECTED\_BACKGROUND Table data background (odd row, selected column) + +- Set TABLE\_DATA\_ODD\_SELECTED\_BACKGROUND = #dce7ee + +##### TABLE\_DATA\_EVEN\_SELECTED\_BACKGROUND Table data background (even row, selected column) + +- Set TABLE\_DATA\_EVEN\_SELECTED\_BACKGROUND = #f5f5f5 + +##### TABLE\_DATA\_MIX\_BACKGROUND Table data background (mix between even and odd) + +- Set TABLE\_DATA\_MIX\_BACKGROUND = #f7fafc + +### Border colors + +#### INFO\_BORDER Info (light blue) + +- Set INFO\_BORDER = #D5E6F3 + +#### SEPARATOR\_BORDER HR line, bottom of h2, attachment table, form (brown) + +- Set SEPARATOR\_BORDER = #E2DCC8 + +#### MINOR\_SEPARATOR\_BORDER Header H3..H6 bottom (75% of SEPARATOR\_BORDER) + +- Set MINOR\_SEPARATOR\_BORDER = #E9E4D2 + +#### LAYOUT\_ELEMENT\_BORDER Main layout elements (neutral tone) + +- Set LAYOUT\_ELEMENT\_BORDER = #ccc + +#### TABLE\_BORDER Table border, sup (light neutral tone) + +- Set TABLE\_BORDER = #ccc + +#### 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% diff --git a/TWiki/PatternSkinCss.mdwn b/TWiki/PatternSkinCss.mdwn index 82822fd..3cec1f4 100644 --- a/TWiki/PatternSkinCss.mdwn +++ b/TWiki/PatternSkinCss.mdwn @@ -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": ``. 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 ``. +- 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 ``. ### Page type classes diff --git a/TWiki/PatternSkinCssCookbook.mdwn b/TWiki/PatternSkinCssCookbook.mdwn index 01d313f..fe1c496 100644 --- a/TWiki/PatternSkinCssCookbook.mdwn +++ b/TWiki/PatternSkinCssCookbook.mdwn @@ -4,9 +4,10 @@ -## Introduction +## 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. +### Changing the color scheme + +Have a look at [[PatternSkinColorSettings]]. + ### 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 -### When you need small adjustments: Adding to existing CSS +### 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.
      Overriding default CSS is done with 3 variables: `USERLAYOUTURL`, `USERSTYLEURL`, `USERCOLORSURL`. @@ -93,3 +99,7 @@ See example at: [[PatternSkinCssCookbookCenterPageBorder]] ### Setting EditTablePlugin styles See example at: [[PatternSkinCssCookbookEditTableStyle]] + +## Style sheet documentation + +See [[PatternSkinCss]] for documentation of PatternSkin CSS classes diff --git a/TWiki/PatternSkinCssCookbookNoLeftBar.mdwn b/TWiki/PatternSkinCssCookbookNoLeftBar.mdwn index 27ffb15..1ebd678 100644 --- a/TWiki/PatternSkinCssCookbookNoLeftBar.mdwn +++ b/TWiki/PatternSkinCssCookbookNoLeftBar.mdwn @@ -2,4 +2,4 @@
      This line loads the extra style definition:
          * Set USERSTYLEURL = %ATTACHURL%/hideleftbar.css
      -
      You can write this line in [[TWiki/TWikiPreferences]], in [[Main/WebPreferences]], in your user topic or on a single page.
      + You can write this line in [[TWiki/TWikiPreferences]], in [[Main/WebPreferences]], in your user topic, or on a single page. diff --git a/TWiki/PatternSkinCustomization.mdwn b/TWiki/PatternSkinCustomization.mdwn index 941f121..ed3aa7f 100644 --- a/TWiki/PatternSkinCustomization.mdwn +++ b/TWiki/PatternSkinCustomization.mdwn @@ -4,32 +4,55 @@ -## Logo questions +## 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 + +## Logo ### 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. ### 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% ### 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. ### 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. -## Top bar questions +## Top bar ### 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% ### 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]]. > > . -## Left bar questions +## Left bar ### 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. + +### 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% + +> %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"\}% %TMPL:P\{"revisions"\}%%TMPL:P\{"sep"\}% %TMPL:P\{"activatable\_more"\}%%TMPL:END% + +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. + +### 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 index 0000000..99cd7e5 --- /dev/null +++ b/TWiki/PatternSkinElements.mdwn @@ -0,0 +1,433 @@ +
      NOTE: 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.
      + +# 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. + + + +## 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. + +## 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. + +### 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. + +#### 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. + +##### 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. + +###### 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. + +## Text sizes + +Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal text. Normal Smallish text. Smallish text. Smallish text. Smallish text. Smallish text. Smallish text. Smallish text. Smallish text. Smallish text. Small text. Small text. Small text. Small text. Small text. Small text. Small text. Small text. Small text. + +## Text colors + +Grayed out text. + +Alert text. + +## Rule + +---- + +## 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 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. + +## 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. + +## Table + +
      Description: TWiki's default skin; CSS based, flexible and [[Main/W3C]]-compliant TWiki's default skin; CSS based, flexible and W3C-compliant
      Screenshot:
      Skin Version: 31 Jan 2006 (v2.0.0) 15 Jan 2006 (v2.0.6)
      History:  
      15 Jan 2006: v.2.0.6 - TWiki 4.1.0 (Edinburgh) RELEASE VERSION
      26 Sep 2006: v.2.0.5 - Fixed form background colors
      22 Jul 2006: v.2.0.4 - Refactored info in colors.css; fixed textarea color
      26 Jun 2006: v.2.0.3 - TWiki 4.0.3 (Dakar) RELEASE VERSION
      31 Jan 2006: v.2.0.0 - DAKAR RELEASE VERSION v.2.0.0 - TWiki 4.0.0 (Dakar) RELEASE VERSION
      28 Aug 2004: v.1.0.9 - CAIRO RELEASE VERSION v.1.0.9 - TWiki 3.0 (Cairo) RELEASE VERSION
      08 Aug 2004:
      + + + + + + + + + + + + + + + + +
      Numbers Texts
      456 uvw
      123 xyz
      789 rst
      + +## 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 + +## 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 + +## Attachment table + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Topic attachments
      IAttachmentActionSizeDateWhoComment
      txttxtSample.txtmanage 0.1 K 22 Jul 2000 - 19:37 TWikiContributor Just a sample
      gifgifSmile.gifmanage 0.1 K 22 Jul 2000 - 19:38 TWikiContributor Smiley face
      +
      + +## TWiki form + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Main.UserForm
      Title +
      FirstName Arthur
      LastName Clemens
      OrganisationName +
      OrganisationURL +
      Profession +
      Country Netherlands
      State +
      Address +
      Location +
      Telephone +
      VoIP +
      InstantMessaging (IM) +
      HomePage +
      Comment +
      +
      + +## Search results and search form + +# Web Search + +Searched: **caching** + +#### **Results from TWiki web** retrieved at 00:46 (GMT)
      + +
      + +
      +
      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 ...
      +
      +
      +
      + +
      +
      TWikiAjaxContrib TWikiAjaxContrib provides a convenience wrapper class around Yahoo's Connection Manager (AJAX). Goals are: To make it possible for plugins ...
      +
      +
      +
      + +
      +
      !TWikiAjaxContrib Examples Code examples and demos for TWikiAjaxContrib. Default loading indicator Because TWiki files are served along dynamic urls we cannot use ...
      +
      +
      +
      Number of topics: 3
      + + + +
      +
      + + + + + + + + +
        Advanced search | Help
      TIP: to search for all topics that contain "SOAP", "WSDL", a literal "web service", but not "shampoo", write: soap wsdl "web service" -shampoo
      +
      Search where:       +
      (otherwise search TWiki Web only)
      +
      +
      + +## Upload Form + +
      +
      +

      Attach new file

      +

      Select a new local file to update attachment Sample.txt (UploadingUser)
      Upload up to 10000 KB.

      +

      +

      +
      +

      Comment

      +

      Describe the file so other people know what it is.

      +

      +

      +
      +

      Properties

      +

      +

      Images will be displayed, for other attachments a link will be created.

      +

      Attachments will not be shown in topic view page.
      +
      +
      + + + +
      +
      or Cancel
      +
      + +## Login form + +
      +
      +

      +

      +
      +
      +

      Username

      +

      person

      +

      +
      +
      +

      Password

      +

      key

      +
      +
      + +## Comment form/table + +(rendered html) + + + + + + + + + + + + + + + + + + +
      + +
      + +
      + +
      +
      + + + +
      +
      + +## Comment + +
      + +## Links + +[[WebHome]] [[DoesNotExist]] + +## Form elements + + + + + + + + + +## Help text + +
      +
        +
      • Help: Please see FileAttachment for more information about attaching files.
      • +
      • Bug: 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.
      • +
      +
      diff --git a/TWiki/PreferencesPlugin.mdwn b/TWiki/PreferencesPlugin.mdwn index b12f39c..250892d 100644 --- a/TWiki/PreferencesPlugin.mdwn +++ b/TWiki/PreferencesPlugin.mdwn @@ -95,13 +95,17 @@ Plugin Version: - 08 May 2005 + 15 Apr 2006 Change History:   + 15 Apr 2006: + 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). + + 26 May 2005: Crawford Currie recoded to use code from Form.pm to render form fields. diff --git a/TWiki/RegistrationApprovals.mdwn b/TWiki/RegistrationApprovals.mdwn index f18027a..9b85231 100644 --- a/TWiki/RegistrationApprovals.mdwn +++ b/TWiki/RegistrationApprovals.mdwn @@ -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]] diff --git a/TWiki/RegularExpression.mdwn b/TWiki/RegularExpression.mdwn index 1467e5e..79bb7e6 100644 --- a/TWiki/RegularExpression.mdwn +++ b/TWiki/RegularExpression.mdwn @@ -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:_** + +- - Regular expressions tutorial +- - Perl regular expressions + **_Related Topics:_** [[UserDocumentationCategory]] diff --git a/TWiki/RenderListPlugin.mdwn b/TWiki/RenderListPlugin.mdwn index 93a0630..df25753 100644 --- a/TWiki/RenderListPlugin.mdwn +++ b/TWiki/RenderListPlugin.mdwn @@ -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` ## Examples @@ -443,7 +445,7 @@ Plugin settings are stored as preferences variables. To reference a plugin setti ## 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 **%TOPIC%.zip** in your twiki installation directory. Content: @@ -468,8 +470,8 @@ Plugin settings are stored as preferences variables. To reference a plugin setti
      Image files for themes
      -- 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 ## Plugin Info @@ -479,14 +481,26 @@ Plugin settings are stored as preferences variables. To reference a plugin setti TWiki:Main/PeterThoeny + Copyright: + © 2006, Peter Thoeny + + + License: + GPL (GNU General Public License) + + Plugin Version: - 25 Apr 2006 (V1.033) + 23 Sep 2006 (V1.034) Change History:   + 23 Sep 2006: + Support for img tag and image URL after icon: (suggested by TWiki:Main.JanFilipsky); support for [[TWiki/TWikiDocGraphics]] icons, such as %ICON{folder}% instead of icon:folder; added files.gif and folders.gif (contributed by TWiki:Main.SteveHobbs) + + 25 Apr 2006: SVN sync, Cairo + Dakar compatibility @@ -556,6 +570,6 @@ Plugin settings are stored as preferences variables. To reference a plugin setti -**_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 diff --git a/TWiki/ResetPassword.mdwn b/TWiki/ResetPassword.mdwn index 8884933..f462f97 100644 --- a/TWiki/ResetPassword.mdwn +++ b/TWiki/ResetPassword.mdwn @@ -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. -
      +
      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.

      %X% 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.

      +
      - +
      - - + - - + +
      Your [[TWiki/LoginName]]: ** Fields marked ** are required
           (Fields marked ** are required) Your [[TWiki/LoginName]]: **
      +
      -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. +
      +
        +
      • info [[Main/TWikiUsers]] has a list of other TWiki users.
      • +
      • info If you have any questions, please contact 0.
      • +
      +
      **_Related topics:_** [[ChangePassword]], [[ChangeEmailAddress]], [[UserToolsCategory]], [[AdminToolsCategory]] diff --git a/TWiki/SearchPatternCookbook.mdwn b/TWiki/SearchPatternCookbook.mdwn index 822f4f6..bed7ff6 100644 --- a/TWiki/SearchPatternCookbook.mdwn +++ b/TWiki/SearchPatternCookbook.mdwn @@ -8,86 +8,40 @@ Most people not familiar (enough) with Regular Expressions mostly cut and paste
    + + ## Pattern 1: Extract values from a table ### Problem definition @@ -107,7 +61,7 @@ The following search pattern can be employed:
    @@ -115,7 +69,7 @@ which is, in effect:
    -%BR% + ## Pattern 2: List generated from form classification @@ -141,7 +95,7 @@ We will: ### 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 - _last modified by_ $wikiusername _on_ $date %BR%     $formfield(TopicStatus) " @@ -153,13 +107,15 @@ The filtering select dialogue is created as in Pattern 1: *Filter:* %BR%
    %STOPSIDEBAR% -This will create similar functionality as TWiki:Plugins.TopicClassificationAddOn %BR% +This will create similar functionality as TWiki:Plugins.TopicClassificationAddOn + + ## 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
    @@ -214,33 +170,76 @@ In the above example: - **META:FORM.\*[U]serForm** 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 - **excludetopic="Test\*, TWiki\*"** 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 + + ## Pattern 4: Extract the parent of a given topic ### Problem How to get to the parent of the current topic to display on the page? -### Solution +### Solution 1: Using META + +Since TWiki 4.0 you can now use the META variable: + +`%META{ "parent" dontrecurse="on" }%` + +### 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( * $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="[[$percntCALC{$IF($EXACT($parent,), %HOMETOPIC%, $parent)}$percnt][parent_link]]" }% + %SEARCH{ "^%BASETOPIC%$" scope="topic" type="regex" nonoise="on" format="$percntCALC{$IF($EXACT($parent,),,$NOP( * $parent))}$percnt" }% -### Test Case +#### Test Case The parent topic of this topic is: -# TWiki Installation Error +# TWiki Installation Error Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags) -## Pattern 5: Search and display the home topics of public webs in a list +### 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$quot}$percnt" }% + +#### Test Case + +The parent topic of this topic is: %BR% + +# TWiki Installation Error + +Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags) + + + +## Pattern 5: Show all Children of a given topic + +### Problem + +How to get to the list of all children of the current topic to display on the page? + +### 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. + + + +## Pattern 6: Search and display the home topics of public webs in a list ### Problem @@ -275,7 +274,37 @@ This result can also be accomplished with the %WEBLIST% variable.

    -## Pattern 6: Extract a value from a bullet list + + +## Pattern 7: Create a select box with values from a bullet list + +### 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 + +### Solution + +The following search pattern can be employed: + + + +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]*).*)"}% + + + +## Pattern 8: Extract a value from a named bullet list item ### 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]*).*)"}% ### Test case @@ -299,7 +328,9 @@ Search result: Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags) -## Pattern 7: Search for Form and Meta data: explained + + +## Pattern 9: Search for Form and Meta data: explained ### 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]]
    ($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. -## Pattern 8: Search all topics that have been moved + + +## Pattern 10: Search all topics that have been moved ### 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) -## 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 diff --git a/TWiki/SitePermissions.mdwn b/TWiki/SitePermissions.mdwn index 8564758..4d96736 100644 --- a/TWiki/SitePermissions.mdwn +++ b/TWiki/SitePermissions.mdwn @@ -6,7 +6,6 @@ Sitemap VIEW CHANGE - RENAME ^ @@ -15,8 +14,6 @@ ALLOW DENY ALLOW - DENY - ALLOW diff --git a/TWiki/SlideShowPlugin.mdwn b/TWiki/SlideShowPlugin.mdwn index b1fde15..b620477 100644 --- a/TWiki/SlideShowPlugin.mdwn +++ b/TWiki/SlideShowPlugin.mdwn @@ -169,11 +169,11 @@ The part between the rulers defines the default format of a slide: ---- - +
    - + - +
    TWiki Slide Show TWiki Slide Show %SLIDETITLE% %SLIDENAVNEXT%  %SLIDENAVNEXT%
    @@ -207,11 +207,11 @@ The part between the rulers defines the default format of a slide: - - + + - + @@ -219,7 +219,7 @@ The part between the rulers defines the default format of a slide:
    Plugin topic
    data/TWiki/%TOPIC%.txt,v Plugin topic repository lib/TWiki/Plugins/%TOPIC%.pm Plugin Perl module
    lib/TWiki/Plugins/%TOPIC%.pmlib/TWiki/Plugins/%TOPIC%/SlideShow.pm Plugin Perl module
    Various button image files
    -- (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. ## Plugin Info @@ -230,14 +230,26 @@ The part between the rulers defines the default format of a slide: TWiki:Main/PeterThoeny + Copyright: + © 2006, Peter Thoeny + + + License: + GPL (GNU General Public License) + + Plugin Version: - 1.005 + 12011 Change History:   + 19 Nov 2006: + 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 + + 16 Mar 2005: 1.005 Crawford Currie prepped for Dakar, and fixed multiple evaluation bug diff --git a/TWiki/SmiliesPlugin.mdwn b/TWiki/SmiliesPlugin.mdwn index 7551f8d..381ab48 100644 --- a/TWiki/SmiliesPlugin.mdwn +++ b/TWiki/SmiliesPlugin.mdwn @@ -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 **%<plugin>\_<setting>%**, for example, **%INTERWIKIPLUGIN\_SHORTDESCRIPTION%** - 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: **%WEB%.SmiliesPlugin** - #Set TOPIC = [[SmiliesPlugin]] diff --git a/TWiki/SourceCode.mdwn b/TWiki/SourceCode.mdwn index 5a75968..9aa09ba 100644 --- a/TWiki/SourceCode.mdwn +++ b/TWiki/SourceCode.mdwn @@ -13,6 +13,9 @@
  • ObjectData twiki
  • TWiki::Client::TemplateLogin
  • TWiki::Compatibility
  • +
  • TWiki::Configure::Load
  • +
  • Purpose
  • +
  • TWiki
  • TWiki::Form
  • TWiki::Func
  • @@ -46,7 +49,6 @@
  • TWiki::UI::Oops
  • TWiki::UI::RDiff
  • TWiki::UI::Register
  • -
  • TWiki::UI::Rest
  • TWiki::UI::Save
  • TWiki::UI::Search
  • TWiki::UI::Statistics
  • @@ -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** ## [[TWiki::Attrs|Main/TWikiAttrsDotPm]] @@ -94,7 +96,7 @@ This package doesn't smell ## [[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 & 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 & 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->loadSession is called. + +1. Calls loginManager->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. + ## [[ObjectData]] =twiki The TWiki object this login manager is attached to. @@ -120,33 +142,29 @@ This package has smell factor of **3** ## [[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** ## [[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 < '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->param( $cmd[1] ); if( $cvalue ) \{ $src = "$cvalue"; \} elsif( $ctext ) \{ foreach( split( /\\r?\\n/, $ctext ) ) \{ if( /$cmd[1]/ ) \{ $src = $\_; last; \} \} \} +## [[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 < $len; $i++ ) \{ my $value = $cmd[$i]; $svalue = $value; if( $src =~ /$value/ ) \{ $catvalue = $svalue; \} \} +## 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 < $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** ## [[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** ## [[TWiki::Form|Main/TWikiFormDotPm]] Object representing a single form definition. -This package has smell factor of **10** +This package has smell factor of **9** ## [[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** ## [[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** ## [[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 ## [[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** ## [[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** ## [[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** ## [[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 ## [[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** - -## [[TWiki::UI::Rest|Main/TWikiUIRestDotPm]] - -Rest delegate for view function - -This package doesn't smell +This package has smell factor of **19** ## [[TWiki::UI::Save|Main/TWikiUISaveDotPm]] UI delegate for save function -This package doesn't smell +This package has smell factor of **1** ## [[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** ## [[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 diff --git a/TWiki/SpreadSheetPlugin.mdwn b/TWiki/SpreadSheetPlugin.mdwn index d155453..cf175db 100644 --- a/TWiki/SpreadSheetPlugin.mdwn +++ b/TWiki/SpreadSheetPlugin.mdwn @@ -85,9 +85,12 @@ This Plugin adds spreadsheet capabilities to %WIKITOOLNAME% topics. Formulae lik
  • LISTITEM( index, list ) -- get one element of a list
  • LISTJOIN( separator, list ) -- convert a list into a string
  • LISTMAP( formula, list ) -- evaluate and update each element of a list
  • +
  • LISTRAND( list ) -- get one random element of a list
  • LISTREVERSE( list ) -- opposite order of a list
  • LISTSIZE( list ) -- number of elements in a list
  • +
  • LISTSHUFFLE( list ) -- shuffle element of a list in random order
  • LISTSORT( list ) -- sort a list
  • +
  • LISTTRUNCATE( size, list ) -- truncate list to size
  • LISTUNIQUE( list ) -- remove all duplicates from a list
  • LOWER( text ) -- lower case string of a text
  • MAX( list ) - biggest value of a list or range of cells
  • @@ -104,7 +107,7 @@ This Plugin adds spreadsheet capabilities to %WIKITOOLNAME% topics. Formulae lik
  • PROPER( text ) -- properly capitalize text
  • PROPERSPACE( text ) -- properly space out WikiWords
  • RAND( max ) -- random number
  • -
  • REPEAT(text) -- repeat text a number of times
  • +
  • REPEAT( text, num ) -- repeat text a number of times
  • REPLACE( text, start, num, new ) -- replace part of a text string
  • RIGHT( ) -- address range of cells to the right of the current cell
  • ROUND( formula, digits ) -- round a number
  • @@ -130,6 +133,11 @@ This Plugin adds spreadsheet capabilities to %WIKITOOLNAME% topics. Formulae lik
  • WORKINGDAYS( serial_1, serial_2 ) -- working days between two serialized dates
  • +
  • FAQ +
  • Bug Tracking Example
  • Plugin Settings
  • Plugin Installation Instructions
  • @@ -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: **$LIST( range )** - Example: **%CALC\{"$LIST($LEFT())"\}%** returns **Apples, Lemons, Oranges, Kiwis** assuming the cells to the left contain **| Apples | Lemons, Oranges | Kiwis |** -- Related: [[$AVERAGE()|Main/WebHome#FuncAVERAGE]], [[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]], [[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]], [[$DEF()|Main/WebHome#FuncDEF]], [[$LISTIF()|Main/WebHome#FuncLISTIF]], [[$LISTITEM()|Main/WebHome#FuncLISTITEM]], [[$LISTJOIN()|Main/WebHome#FuncLISTJOIN]], [[$LISTMAP()|Main/WebHome#FuncLISTMAP]], [[$LISTREVERSE()|Main/WebHome#FuncLISTREVERSE]], [[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]], [[$LISTSORT()|Main/WebHome#FuncLISTSORT]], [[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]], [[$MAX()|Main/WebHome#FuncMAX]], [[$MEDIAN()|Main/WebHome#FuncMEDIAN]], [[$MIN()|Main/WebHome#FuncMIN]], [[$PRODUCT()|Main/WebHome#FuncPRODUCT]], [[$SUM()|Main/WebHome#FuncSUM]], [[$SUMDAYS()|Main/WebHome#FuncSUMDAYS]], [[$SUMPRODUCT()|Main/WebHome#FuncSUMPRODUCT]] +- Related: [[$AVERAGE()|Main/WebHome#FuncAVERAGE]], [[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]], [[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]], [[$DEF()|Main/WebHome#FuncDEF]], [[$LISTIF()|Main/WebHome#FuncLISTIF]], [[$LISTITEM()|Main/WebHome#FuncLISTITEM]], [[$LISTJOIN()|Main/WebHome#FuncLISTJOIN]], [[$LISTMAP()|Main/WebHome#FuncLISTMAP]], [[$LISTRAND()|Main/WebHome#FuncLISTRAND]], [[$LISTREVERSE()|Main/WebHome#FuncLISTREVERSE]], [[$LISTSHUFFLE()|Main/WebHome#FuncLISTSHUFFLE]], [[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]], [[$LISTSORT()|Main/WebHome#FuncLISTSORT]], [[$LISTTRUNCATE()|Main/WebHome#FuncLISTTRUNCATE]], [[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]], [[$MAX()|Main/WebHome#FuncMAX]], [[$MEDIAN()|Main/WebHome#FuncMEDIAN]], [[$MIN()|Main/WebHome#FuncMIN]], [[$PRODUCT()|Main/WebHome#FuncPRODUCT]], [[$SUM()|Main/WebHome#FuncSUM]], [[$SUMDAYS()|Main/WebHome#FuncSUMDAYS]], [[$SUMPRODUCT()|Main/WebHome#FuncSUMPRODUCT]] @@ -422,7 +430,7 @@ Conventions for Syntax: - Syntax: **$LISTITEM( index, list )** - Example: **%CALC\{"$LISTITEM(2, Apple, Orange, Apple, Kiwi)"\}%** returns **Orange** - Example: **%CALC\{"$LISTITEM(-1, Apple, Orange, Apple, Kiwi)"\}%** returns **Kiwi** -- Related: [[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]], [[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]], [[$LIST()|Main/WebHome#FuncLIST]], [[$LISTIF()|Main/WebHome#FuncLISTIF]], [[$LISTMAP()|Main/WebHome#FuncLISTMAP]], [[$LISTREVERSE()|Main/WebHome#FuncLISTREVERSE]], [[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]], [[$LISTSORT()|Main/WebHome#FuncLISTSORT]], [[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]], [[$SUM()|Main/WebHome#FuncSUM]] +- Related: [[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]], [[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]], [[$LIST()|Main/WebHome#FuncLIST]], [[$LISTIF()|Main/WebHome#FuncLISTIF]], [[$LISTMAP()|Main/WebHome#FuncLISTMAP]], [[$LISTRAND()|Main/WebHome#FuncLISTRAND]], [[$LISTREVERSE()|Main/WebHome#FuncLISTREVERSE]], [[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]], [[$LISTSORT()|Main/WebHome#FuncLISTSORT]], [[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]], [[$SUM()|Main/WebHome#FuncSUM]] @@ -442,6 +450,14 @@ Conventions for Syntax: - Example: **%CALC\{"$LISTMAP($index: $EVAL(2 \* $item), 3, 5, 7, 11)"\}%** returns **1: 6, 2: 10, 3: 14, 4: 22** - Related: [[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]], [[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]], [[$LIST()|Main/WebHome#FuncLIST]], [[$LISTIF()|Main/WebHome#FuncLISTIF]], [[$LISTITEM()|Main/WebHome#FuncLISTITEM]], [[$LISTREVERSE()|Main/WebHome#FuncLISTREVERSE]], [[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]], [[$LISTSORT()|Main/WebHome#FuncLISTSORT]], [[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]], [[$SUM()|Main/WebHome#FuncSUM]] + + +### LISTRAND( list ) -- get one random element of a list + +- Syntax: **$LISTRAND( list )** +- Example: **%CALC\{"$LISTRRAND(Apple, Orange, Apple, Kiwi)"\}%** returns one of the four elements +- Related: [[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]], [[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]], [[$LIST()|Main/WebHome#FuncLIST]], [[$LISTIF()|Main/WebHome#FuncLISTIF]], [[$LISTITEM()|Main/WebHome#FuncLISTITEM]], [[$LISTMAP()|Main/WebHome#FuncLISTMAP]], [[$LISTSHUFFLE()|Main/WebHome#FuncLISTSHUFFLE]], [[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]], [[$LISTSORT()|Main/WebHome#FuncLISTSORT]], [[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]], [[$RAND()|Main/WebHome#FuncRAND]], [[$SUM()|Main/WebHome#FuncSUM]] + ### LISTREVERSE( list ) -- opposite order of a list @@ -456,7 +472,15 @@ Conventions for Syntax: - Syntax: **$LISTSIZE( list )** - Example: **%CALC\{"$LISTSIZE(Apple, Orange, Apple, Kiwi)"\}%** returns **4** -- Related: [[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]], [[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]], [[$LIST()|Main/WebHome#FuncLIST]], [[$LISTIF()|Main/WebHome#FuncLISTIF]], [[$LISTITEM()|Main/WebHome#FuncLISTITEM]], [[$LISTJOIN()|Main/WebHome#FuncLISTJOIN]], [[$LISTMAP()|Main/WebHome#FuncLISTMAP]], [[$LISTREVERSE()|Main/WebHome#FuncLISTREVERSE]], [[$LISTSORT()|Main/WebHome#FuncLISTSORT]], [[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]], [[$SUM()|Main/WebHome#FuncSUM]] +- Related: [[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]], [[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]], [[$LIST()|Main/WebHome#FuncLIST]], [[$LISTIF()|Main/WebHome#FuncLISTIF]], [[$LISTITEM()|Main/WebHome#FuncLISTITEM]], [[$LISTJOIN()|Main/WebHome#FuncLISTJOIN]], [[$LISTMAP()|Main/WebHome#FuncLISTMAP]], [[$LISTREVERSE()|Main/WebHome#FuncLISTREVERSE]], [[$LISTSORT()|Main/WebHome#FuncLISTSORT]], [[$LISTTRUNCATE()|Main/WebHome#FuncLISTTRUNCATE]], [[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]], [[$SUM()|Main/WebHome#FuncSUM]] + + + +### LISTSHUFFLE( list ) -- shuffle element of a list in random order + +- Syntax: **$LISTSHUFFLE( list )** +- Example: **%CALC\{"$LISTSHUFFLE(Apple, Orange, Apple, Kiwi)"\}%** returns the four elements in random order +- Related: [[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]], [[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]], [[$LIST()|Main/WebHome#FuncLIST]], [[$LISTIF()|Main/WebHome#FuncLISTIF]], [[$LISTITEM()|Main/WebHome#FuncLISTITEM]], [[$LISTMAP()|Main/WebHome#FuncLISTMAP]], [[$LISTRAND()|Main/WebHome#FuncLISTRAND]], [[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]], [[$LISTSORT()|Main/WebHome#FuncLISTSORT]], [[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]], [[$RAND()|Main/WebHome#FuncRAND]], [[$SUM()|Main/WebHome#FuncSUM]] @@ -465,7 +489,16 @@ Conventions for Syntax: - Sorts a list in ASCII order, or numerically if all elements are numeric - Syntax: **$LISTSORT( list )** - Example: **%CALC\{"$LISTSORT(Apple, Orange, Apple, Kiwi)"\}%** returns **Apple, Apple, Kiwi, Orange** -- Related: [[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]], [[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]], [[$LIST()|Main/WebHome#FuncLIST]], [[$LISTIF()|Main/WebHome#FuncLISTIF]], [[$LISTITEM()|Main/WebHome#FuncLISTITEM]], [[$LISTMAP()|Main/WebHome#FuncLISTMAP]], [[$LISTREVERSE()|Main/WebHome#FuncLISTREVERSE]], [[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]], [[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]], [[$SUM()|Main/WebHome#FuncSUM]] +- Related: [[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]], [[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]], [[$LIST()|Main/WebHome#FuncLIST]], [[$LISTIF()|Main/WebHome#FuncLISTIF]], [[$LISTITEM()|Main/WebHome#FuncLISTITEM]], [[$LISTMAP()|Main/WebHome#FuncLISTMAP]], [[$LISTREVERSE()|Main/WebHome#FuncLISTREVERSE]], [[$LISTSHUFFLE()|Main/WebHome#FuncLISTSHUFFLE]], [[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]], [[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]], [[$SUM()|Main/WebHome#FuncSUM]] + + + +### 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: **$LISTTRUNCATE( size, list )** +- Example: **%CALC\{"$LISTTRUNCATE(2, Apple, Orange, Kiwi)"\}%** returns **Apple, Orange** +- Related: [[$COUNTITEMS()|Main/WebHome#FuncCOUNTITEMS]], [[$COUNTSTR()|Main/WebHome#FuncCOUNTSTR]], [[$LIST()|Main/WebHome#FuncLIST]], [[$LISTIF()|Main/WebHome#FuncLISTIF]], [[$LISTITEM()|Main/WebHome#FuncLISTITEM]], [[$LISTMAP()|Main/WebHome#FuncLISTMAP]], [[$LISTSIZE()|Main/WebHome#FuncLISTSIZE]], [[$LISTSORT()|Main/WebHome#FuncLISTSORT]], [[$LISTUNIQUE()|Main/WebHome#FuncLISTUNIQUE]], [[$SUM()|Main/WebHome#FuncSUM]] @@ -598,13 +631,13 @@ Conventions for Syntax: - Random number, evenly distributed between 0 and **max**, or 0 and 1 if max is not specified - Syntax: **$RAND( max )** -- Related: [[$EVAL()|Main/WebHome#FuncEVAL]] +- Related: [[$EVAL()|Main/WebHome#FuncEVAL]], [[$LISTRAND()|Main/WebHome#FuncLISTRAND]], [[$LISTSHUFFLE()|Main/WebHome#FuncLISTSHUFFLE]] -### REPEAT(text) -- repeat text a number of times +### REPEAT( text, num ) -- repeat text a number of times -- Syntax: **$REPEAT( text )** +- Syntax: **$REPEAT( text, num )** - Example: **%CALC\{"$REPEAT(/\\, 5)"\}%** returns **/\\/\\/\\/\\/\\** @@ -820,6 +853,27 @@ Conventions for Syntax: - Example: **%CALC\{"$WORKINGDAYS($TIME(2004/07/15), $TIME(2004/08/03))"\}%** returns **13** - Related: [[$SUMDAYS()|Main/WebHome#FuncSUMDAYS]], [[$TIME()|Main/WebHome#FuncTIME]], [[$TIMEDIFF()|Main/WebHome#FuncTIMEDIFF]] +## FAQ + +### 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 |" }%` + +### 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: + + + | A | 1 | %CALC{%MYFORMULA%}% | + | B | 2 | %CALC{%MYFORMULA%}% | + | C | 3 | %CALC{%MYFORMULA%}% | + ## Bug Tracking Example @@ -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 **%<plugin>\_<setting>%**, i.e. **%SPREADSHEETPLUGIN\_SHORTDESCRIPTION%** - 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 - + + + + + + + + + @@ -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 diff --git a/TWiki/TWikiAccessControl.mdwn b/TWiki/TWikiAccessControl.mdwn index 74e2cb0..664e527 100644 --- a/TWiki/TWikiAccessControl.mdwn +++ b/TWiki/TWikiAccessControl.mdwn @@ -14,6 +14,15 @@
  • Controlling access to a Web
  • Controlling access to a Topic
  • Controlling access to Attachments
  • +
  • Controlling who can create top-level webs
  • +
  • How TWiki evaluates ALLOW/DENY settings
  • + + +
  • Access Control quick recipes
  • @@ -94,7 +103,7 @@ The ALLOWTOPICCHANGE setting defines who is allowed to change the group topic; i ### 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 **TWikiAdminGroup**. 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 **TWikiAdminGroup**. The name of this topic is defined by the \{SuperAdminGroup\} [configure](http://www.dementia.org/twiki/configure) setting. Example group setting: - **Set GROUP= Main.ElizabethWindsor, Main.TonyBlair** @@ -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. ### 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 - **Set ALLOWWEBVIEW = < comma-delimited list of Users and Groups >** - **Set DENYWEBCHANGE = < comma-delimited list of Users and Groups >** - **Set ALLOWWEBCHANGE = < comma-delimited list of Users and Groups >** - - **Set DENYWEBRENAME = < comma-delimited list of Users and Groups >** - - **Set ALLOWWEBRENAME = < comma-delimited list of Users and Groups >** **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 ### 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: - **Set DENYTOPICVIEW = < comma-delimited list of Users and Groups >** - **Set ALLOWTOPICVIEW = < comma-delimited list of Users and Groups >** - **Set DENYTOPICCHANGE = < comma-delimited list of Users and Groups >** - **Set ALLOWTOPICCHANGE = < comma-delimited list of Users and Groups >** - - **Set DENYTOPICRENAME = < comma-delimited list of Users and Groups >** - - **Set ALLOWTOPICRENAME = < comma-delimited list of Users and Groups >** 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] - 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: + - **Set DENYROOTCHANGE = < comma-delimited list of Users and Groups >** + - **Set ALLOWROOTCHANGE = < comma-delimited list of Users and Groups >** + +Note that you do **not** require `ROOTCHANGE` access to rename an existing top-level web. You just need `WEBCHANGE` in the web itself. + +### 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. Set DENYTOPIC = ) - * 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* +## Access Control quick recipes - ---++ Access Control quick recipes +### Obfuscating Webs - ---+++ Obfuscating Webs +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 [[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 NOSEARCHALL = on== +- **Set NOSEARCHALL = on** - 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 +### 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 DENYWEBVIEW = < list of Users and Groups >== - * ==Set ALLOWWEBVIEW = < list of Users and Groups >== - * __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: + - **Set DENYWEBVIEW = < list of Users and Groups >** + - **Set ALLOWWEBVIEW = < list of Users and Groups >** + - **_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 +### 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 DENYWEBVIEW = < list of Users and Groups >== - * ==Set ALLOWWEBVIEW = < list of Users and Groups >== - * __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: + - **Set DENYWEBVIEW = < list of Users and Groups >** + - **Set ALLOWWEBVIEW = < list of Users and Groups >** + - **_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 +### 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]]. -
    - ==<!--==
    - ==  * Set DENYTOPICCHANGE = %MAINWEB%.SomeGroup==
    - ==-->== -
    +Alternatively, place them in HTML comment markers, but this exposes the access setting during ordinary editing. - %STOPINCLUDE% +> **<!--** +> +>
    +> +> **   \* Set DENYTOPICCHANGE = Main.SomeGroup** +> +>
    +> +> **-->** - __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 index 0000000..936106a --- /dev/null +++ b/TWiki/TWikiAddOns.mdwn @@ -0,0 +1,50 @@ + + +# TWiki Add-Ons + +_Add functionality to TWiki with extensions not based on the TWiki scripts._ + +## Overview + +An add-on runs separately from the TWiki scripts, e.g. for data import, export to static HTML, etc. Add-Ons normally do not call any TWiki code directly, though may invoke TWiki scripts. There are different types on add-ons, they may be stand alone scripts, browser plugins, office tool extensions, or even a set of TWiki topics that form a TWiki application. + +**_Relevant links on TWiki.org:_** + +- TWiki:Plugins.AddOnPackage - list of all contributed add-on scripts +- TWiki:Plugins.AddOnDevelopment - discussion and feedback on contributed add-on scripts +- TWiki:Plugins.AddOnBrainstorming - open forum for new add-on script ideas +- TWiki:Plugins.AddOnPackageHowTo - instructions and template to create a new add-on topic + +**_See other types of extensions:_** [[TWikiContribs]], [[TWikiPlugins]], [[TWikiSkins]] + +## Add-Ons Installed on this TWiki + +# TWiki Installation Error + +Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags) + +## Installing Add-Ons + +- Download an add-on from TWiki:Plugins.AddOnPackage. +- Follow the installation instructions in the add-on topic. + +## Creating new Add-Ons + +- Visit TWiki:Plugins.AddOnPackageHowTo and follow the instructions. + +**_Related Topics:_** [[DeveloperDocumentationCategory]], [[AdminDocumentationCategory]], TWiki:TWiki.TWikiPluginsSupplement + +-- **_Contributors:_** TWiki:Main.PeterThoeny diff --git a/TWiki/TWikiCompatibilityDotPm.mdwn b/TWiki/TWikiCompatibilityDotPm.mdwn index 4f49533..39faa54 100644 --- a/TWiki/TWikiCompatibilityDotPm.mdwn +++ b/TWiki/TWikiCompatibilityDotPm.mdwn @@ -2,22 +2,6 @@ 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 < '2' ) \{ # FIXME return ( $catname, $catmodifier, $catvalue ) \} my $svalue = ''; - -my $i; my $itemsPerLine; - -# check for [[CategoryName]]=CategoryValue parameter my $paramCmd = ''; my $cvalue = ''; # was$query->param( $cmd[1] ); if( $cvalue ) \{ $src = "$cvalue"; \} elsif( $ctext ) \{ foreach( split( /\\r?\\n/, $ctext ) ) \{ if( /$cmd[1]/ ) \{ $src = $\_; last; \} \} \} - -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 < $len; $i++ ) \{ my $value = $cmd[$i]; $svalue = $value; if( $src =~ /$value/ ) \{ $catvalue = $svalue; \} \} - -\} 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 < $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; \} \} - -\} 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; \} - -return ( $catname, $catmodifier, $catvalue ) \} -
    • Package TWiki::Compatibility
        diff --git a/TWiki/TWikiConfigureLoadDotPm.mdwn b/TWiki/TWikiConfigureLoadDotPm.mdwn new file mode 100644 index 0000000..d3cb0bf --- /dev/null +++ b/TWiki/TWikiConfigureLoadDotPm.mdwn @@ -0,0 +1,41 @@ +# Package =TWiki::Configure::Load + +## Purpose + +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. + + + +## [[StaticMethod]] **readConfig** `()` + +In normal TWiki operations as a web server this routine is called by the `BEGIN` block of `TWiki.pm`. However, when benchmarking/debugging it can be replaced by custom code which sets the configuration hash. To prevent us from overriding the custom code again, we use an "unconfigurable" key `$cfg{ConfigurationFinished}` as an indicator. + +Note that this method is called by TWiki and configure, and **only** reads TWiki.spec= to get defaults. Other spec files (those for extensions) are **not** read. + +The assumption is that `configure` will be run when an extension is installed, and that will add the config values to [[LocalSite]].cfg, so no defaults are needed. TWiki.spec is still read because so much of the core code doesn't provide defaults, and it would be silly to have them in two places anyway. + +## [[StaticMethod]] **expandValue** `($string) -> $boolean` + +Expands references to TWiki configuration items which occur in the value of other configuration items. Use expand($hashref) if the item is not a plain scalar. + +Happens to return true if something has been expanded, though I don't know whether you would want that. The replacement is done in-place, + +## [[StaticMethod]] **readDefaults** `() -> \@errors` + +This is only called by `configure` to initialise the TWiki config hash with default values from the .spec files. + +Normally all configuration values come from [[LocalSite]].cfg. However when `configure` runs it has to get default values for config vars that have not yet been saved to `LocalSite.cfg`. + +Returns a reference to a list of the errors it saw. + +SEE ALSO: TWiki::Configure::TWikiCfg::load diff --git a/TWiki/TWikiConfigureUIsEXTENDDotPm.mdwn b/TWiki/TWikiConfigureUIsEXTENDDotPm.mdwn new file mode 100644 index 0000000..0ce9d51 --- /dev/null +++ b/TWiki/TWikiConfigureUIsEXTENDDotPm.mdwn @@ -0,0 +1,14 @@ +# Package = + + + +## [[StaticMethod]] **\_unpackArchive** `($archive[,$dir])` + +Unpack an archive. The unpacking method is determined from the file extension e.g. .zip, .tgz. .tar, etc. If $dir is not given, unpack to a temporary directory, the name of which is returned. diff --git a/TWiki/TWikiContribs.mdwn b/TWiki/TWikiContribs.mdwn new file mode 100644 index 0000000..d239768 --- /dev/null +++ b/TWiki/TWikiContribs.mdwn @@ -0,0 +1,50 @@ + + +# TWiki Contribs + +_Reusable code that may be used over several plugins and add-ons._ + +## Overview + +TWiki contribs extend the functionality of TWiki, typically used by plugins and add-ons. They may also provide alternative implementations for sections of the TWiki core e.g. user management, or when an extension just can't be implemented as a plugin because it requires very close access to TWiki internals. + +**_Relevant links on TWiki.org:_** + +- TWiki:Plugins.ContribPackage - list of all contributed contrib packages +- TWiki:Plugins.ContribDevelopment - discussion and feedback on contributed packages +- TWiki:Plugins.ContribBrainstorming - open forum for new contrib ideas +- TWiki:Plugins.ContribPackageHowTo - instructions and template to create a new contrib package + +**_See other types of extensions:_** [[TWikiAddOns]], [[TWikiPlugins]], [[TWikiSkins]] + +## TWiki Contribs Installed on this TWiki + +# TWiki Installation Error + +Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags) + +## Installing Contribs + +- Download an add-on from TWiki:Plugins.ContribPackage. +- Follow the installation instructions in the contrib topic. + +## Creating new Contribs + +- Visit TWiki:Plugins.ContribPackageHowTo and follow the instructions. + +**_Related Topics:_** [[DeveloperDocumentationCategory]], [[AdminDocumentationCategory]], TWiki:TWiki.TWikiPluginsSupplement + +-- **_Contributors:_** TWiki:Main.PeterThoeny diff --git a/TWiki/TWikiCss.mdwn b/TWiki/TWikiCss.mdwn index 7d464ff..57da8a3 100644 --- a/TWiki/TWikiCss.mdwn +++ b/TWiki/TWikiCss.mdwn @@ -6,7 +6,9 @@
      • TWiki styles in core code
      • TWiki Styles in Plugins
      • TWiki Styles in Templates
      • +
      • TWiki Styles used in configure
      • TWiki Styles in topics
      • +
      • TWiki Styles in Skins
    • Tips
    • @@ -26,8 +28,7 @@ Most html elements generated by TWiki core code now have Cascading Style Sheet ( ## Naming conventions 1. All TWiki class names have the prefix `twiki`. So: twikiAlert, twikiToc, etcetera. Remember that CSS class names are case sensitive - TWiki CSS uses lowercase `tw`. -2. TWiki uses class names only (.twikiDiffTable) and no id names (#twikiDiffTable), to allow multiple class names. Class names are written using the dot prefix. -3. If you define your own CSS classes, it is preferable that you do not use the `twiki` prefix to prevent undesired overriding effects. +2. If you define your own CSS classes, it is preferable that you do not use the `twiki` prefix to prevent undesired overriding effects. A wide range of standard styles are used in the TWiki core code and topics, and more are used in plugins. The following is an exhaustive list of all styles defined by the Pattern skin. For the most part, the names are the only documentation of the purpose of the style. For more information on how these styles are used, read the code (sorry!) @@ -83,6 +84,14 @@ A wide range of standard styles are used in the TWiki core code and topics, and
    + + + + + + + + @@ -94,6 +103,10 @@ A wide range of standard styles are used in the TWiki core code and topics, and
    Plugin Version: 13 May 2006 (10197) 18 Dec 2006 (r12315)
    Change History:  
    18 Dec 2006: Added $LISTRAND(), $LISTSHUFFLE(), $LISTTRUNCATE(); fixed spurious newline at end of topic, contributed by TWiki:Main/MichaelDaum
    10 Oct 2006: Enhanced documentation
    13 May 2006: Added $SETIFEMPTY(); fixes in documentation
    Render.pm
    .twikiCurrentWebHomeLink Render.pm
    .twikiCurrentTopicLink Render.pm
    .twikiEmulatedLink Preview.pm
    + + + + @@ -208,6 +221,14 @@ A wide range of standard styles are used in the TWiki core code and topics, and + + + + + + + +
    .twikiEditFormDateField Form.pm
    .twikiEditFormTextField Form.pm
    .twikiFirstCol [[Main/TablePlugin]]
    .twikiTableEven [[Main/TablePlugin]]
    .twikiTableOdd [[Main/TablePlugin]]
    ### TWiki Styles in Templates @@ -226,6 +247,10 @@ A wide range of standard styles are used in the TWiki core code and topics, and formtables.tmpl + .twikiFormTableFooter + formtables.tmpl + + .twikiAttachments attachtables.tmpl @@ -311,6 +336,23 @@ A wide range of standard styles are used in the TWiki core code and topics, and +### TWiki Styles used in =configure + + + + + + + + + + + + + + +
    #twikiLogin CSS.pm
    .twikiFormSteps CSS.pm
    .twikiFormStep CSS.pm
    + ### TWiki Styles in topics @@ -318,6 +360,20 @@ A wide range of standard styles are used in the TWiki core code and topics, and + + + + +
    .twikiBroadcastMessage [[TWiki/TWikiPreferences]]
    #twikiSearchTable [[TWiki/WebSearch]], [[TWiki/WebSearchAdvanced]]
    + +### TWiki Styles in Skins + + + + + + +
    #twikiLogin login.pattern.tmpl  
    ## Tips diff --git a/TWiki/TWikiDocGraphics.mdwn b/TWiki/TWikiDocGraphics.mdwn index ce4d463..329e6bb 100644 --- a/TWiki/TWikiDocGraphics.mdwn +++ b/TWiki/TWikiDocGraphics.mdwn @@ -9,35 +9,31 @@ This is the TWiki icon library. The graphics can be used in topics and by web ap
  • viewtopic Topic, attachfile file, folder folder icons
  • person Person, group group, lock access icons
  • changes Changes, notify notification icons
  • -
  • choice-yes Status, flag flag, led-box-red LED icons
  • +
  • choice-yes Status, flag flag, led-box-red LED, tag-yellow tag icons
  • home Navigation icons
  • toggleclose Interface icons
  • +
  • twiki TWiki icons
  • line_ur Block graphics
  • gif Filetype icons
  • -
  • twiki TWiki icons
  • +
  • Usage (extended)
  • ## Usage -There are several ways to put an image in a topic. - -- **Shorthand notation:** `%ICON{help}%` results in: help - - Note that `ICON{}` assumes an image of 16 x 16 pixels -- **Really shorthand notation:** in [[TWikiPreferences]] set a variable to an ICON, for example:%BR% `   * Set H = %ICON{help}%` %BR% Now you can use the icon by writing `%H%`. -- There are other approaches as well: - - In any topic, write `%PUBURL%/%TWIKIWEB%/TWikiDocGraphics/help.gif` to show the ![help.gif](http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/help.gif) icon. %BR% - - You are not restricted to use the TWikiDocGraphics topic - in a similar way you can show attached images by replacing `TWikiDocGraphics` with the topic name. - - The TWiki:Plugins.SmiliesPlugin, using a different short hand than `%VARIABLES%`, may be worth checking out for extended use -- To create an image with a link, write: `[[WebHome][%ICON{home}%]]` to get: [[Main/WebHome]] -- To get the full URL of the icon, use [[ICONURL|Main/VarICONURL]]: `%ICONURL{"toggleopen"}%` gets you: `http://www.dementia.org/twiki//view/Main/WebHome/toggleopen.gif` (if you paste that in a topic you will get: ![toggleopen.gif](http://www.dementia.org/twiki//view/Main/WebHome/toggleopen.gif)) -- **_Note:_** Most images have 16x16 pixels. For those images you can use the `%ICON{}%` syntax. Use an HTML img tag with `%ICONURL{}%` for image with other sizes. +Default notation: -**_Related Topics:_** [[TWikiSkins]], [[DeveloperDocumentationCategory]], [[AdminDocumentationCategory]] +> `%ICON{help}%` +> +> results in: +> +> help +> +> Note that `ICON{}` assumes a GIF image of 16 x 16 pixels. Use a HTML `img` tag with `%ICONURL{}%` for image with other sizes. See the tables below for copy-paste examples. -**_Contributors:_** The icons on this page were originally designed by TWiki:Main.PeterThoeny. All except led-color icons, dot graph and line graph images were then recreated by TWiki:Main.ArthurClemens. +Other usage: [[see below|Main/TOPIC#Usage_extended]]. ## Graphics @@ -45,172 +41,190 @@ There are several ways to put an image in a topic. - - - - + + + + + + + + + + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + + + + + + + - + + + + + + + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - + - - - - + + + + - + - - - - + + + +
     File NameDescriptionWrite... File NameDescriptionWrite...
    Bookbook.gif Book %ICON{book}%
    Speech bubble bubble.gif Speech bubble %ICON{bubble}%Speech bubblebubble.gif Speech bubble %ICON{bubble}%
    Days / Calendar Days / Calendar days.gif Days, Calendar %ICON{days}%
    Download download.gif Download %ICON{download}%Downloaddownload.gif Download %ICON{download}%
    Filter Filter filter.gif Filter %ICON{filter}%
    Gear gear.gif Gear %ICON{gear}%Geargear.gif Gear %ICON{gear}%
    Globe Globe globe.gif Globe %ICON{globe}%
    Pointing hand hand.gif Pointing hand %ICON{hand}%Pointing handhand.gif Pointing hand %ICON{hand}%
    Help Help help.gif Help %H%, %ICON{help}%
    Information info.gif Info %ICON{info}%Informationinfo.gif Info %ICON{info}%
    Hour glass (clock) Hour glass (clock) hourglass.gif Hour glass (clock) %ICON{hourglass}%
    Read more more.gif Read more %ICON{more}%Read moremore.gif Read more %ICON{more}%
    Read more Read more more-small.gif Read more, 13x13 <img src="%ICONURL{more-small}%" width="13" height="13" alt="Read more" border="0" />
    Move move.gif Move %ICON{move}%Movemove.gif Move %ICON{move}%
    Note Note note.gif Note %ICON{note}%
    Parked parked.gif Parked %ICON{parked}%Parkedparked.gif Parked %ICON{parked}%
    Pencil / Refactor / Edit Pencil / Refactor / Edit pencil.gif Pencil / Refactor / Edit %P%, %ICON{pencil}%
    Request for comments rfc.gif Request for comments %ICON{rfc}%Puzzlepuzzle.gif Puzzle %ICON{puzzle}%
    Questionquestion.gif Question %ICON{question}%
    Sort Request for commentsrfc.gif Request for comments %ICON{rfc}%
    Sort sort.gif Sort %ICON{sort}%
    Gold star, favorites stargold.gif Gold star, favorites %ICON{stargold}%Gold star, favoritesstargold.gif Gold star, favorites %ICON{stargold}%
    Red star, highlight Red star, highlight starred.gif Red star, highlight %S%, %ICON{starred}%
    Stop stop.gif Stop %ICON{stop}%Stopstop.gif Stop %ICON{stop}%
    Target Target target.gif Target %ICON{target}%
    Tip, idea tip.gif Tip, idea %T%, %ICON{tip}%Tip, ideatip.gif Tip, idea %T%, %ICON{tip}%
    Warning, important Warning, important warning.gif Warning, important %W%, %ICON{warning}%%X%, %ICON{warning}%
    Watch watch.gif Watch %ICON{watch}%Watchwatch.gif Watch %ICON{watch}%
    Work in progress, under construction Work in progress, under construction wip.gif Work in progress, under construction %ICON{wip}%
    Wrench, tools wrench.gif Wrench, tools %ICON{wrench}%Wrench, toolswrench.gif Wrench, tools %ICON{wrench}%
    @@ -218,115 +232,115 @@ There are several ways to put an image in a topic. - - - - + + + + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + @@ -337,79 +351,79 @@ There are several ways to put an image in a topic.
     File NameDescriptionWrite... File NameDescriptionWrite...
    View topic viewtopic.gif View topic %ICON{viewtopic}%View topicviewtopic.gif View topic %ICON{viewtopic}%
    Print topic Print topic printtopic.gif Print topic %ICON{printtopic}%
    Refresh topic refreshtopic.gif Refresh topic %ICON{refreshtopic}%Refresh topicrefreshtopic.gif Refresh topic %ICON{refreshtopic}%
    New topic New topic newtopic.gif New topic %ICON{newtopic}%
    Edit topic edittopic.gif Edit topic %ICON{edittopic}%Edit topicedittopic.gif Edit topic %ICON{edittopic}%
    Save Save save.gif Save %ICON{save}%
    Attach file attachfile.gif Attach file %ICON{attachfile}%Attach fileattachfile.gif Attach file %ICON{attachfile}%
    Download Download download.gif Download %ICON{download}%
    Trash trash.gif Trash %ICON{trash}%Trashtrash.gif Trash %ICON{trash}%
    Search topic Search topic searchtopic.gif Search topic %ICON{searchtopic}%
    Search search-small.gif Small search button, 13x13 <img src="%ICONURL{search-small}%" width="13" height="13" alt="Search" border="0" />Searchsearch-small.gif Small search button, 13x13 <img src="%ICONURL{search-small}%" width="13" height="13" alt="Search" border="0" />
    Topic back-links Topic back-links topicbacklinks.gif Topic back-links %ICON{topicbacklinks}%
    Topic difference topicdiffs.gif Topic difference %ICON{topicdiffs}%Topic differencetopicdiffs.gif Topic difference %ICON{topicdiffs}%
    Statistics Statistics statistics.gif Statistics %ICON{statistics}%
    Index index.gif Index %ICON{index}%Indexindex.gif Index %ICON{index}%
    Index list Index list indexlist.gif Index list %ICON{indexlist}%
    Cache topic cachetopic.gif Cache topic %ICON{cachetopic}%Cache topiccachetopic.gif Cache topic %ICON{cachetopic}%
    Folder Folder folder.gif Folder %ICON{folder}%
    - - - - + + + + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + @@ -420,261 +434,315 @@ There are several ways to put an image in a topic.
     File NameDescriptionWrite... File NameDescriptionWrite...
    Person person.gif Person %ICON{person}%Personperson.gif Person %ICON{person}%
    Persons Persons persons.gif Persons %ICON{persons}%
    Group group.gif Group %ICON{group}%Groupgroup.gif Group %ICON{group}%
    Building Building building.gif Building %ICON{building}%
    Buildings buildings.gif Buildings %ICON{buildings}%Buildingsbuildings.gif Buildings %ICON{buildings}%
    Log out Log out logout.gif Log out %ICON{logout}%
    Key key.gif Key %ICON{key}%Keykey.gif Key %ICON{key}%
    Lock Lock lock.gif Lock %ICON{lock}%
    Locked topic locktopic.gif Locked topic %ICON{locktopic}%Locked topiclocktopic.gif Locked topic %ICON{locktopic}%
    Locked topic, gray Locked topic, gray locktopicgray.gif Locked topic, gray %ICON{locktopicgray}%
    Locked folder lockfolder.gif Locked folder %ICON{lockfolder}%Locked folderlockfolder.gif Locked folder %ICON{lockfolder}%
    Locked folder, gray Locked folder, gray lockfoldergray.gif Locked folder, gray %ICON{lockfoldergray}%
    - - - - + + + + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + +
     File NameDescriptionWrite... File NameDescriptionWrite...
    Changes changes.gif Changes %ICON{changes}%Changeschanges.gif Changes %ICON{changes}%
    Changes Changes changes-small.gif Changes (small), 13x13 <img src="%ICONURL{changes-small}%" width="13" height="13" alt="Changes" border="0" />
    Recent changes recentchanges.gif Recent changes %ICON{recentchanges}%Recent changesrecentchanges.gif Recent changes %ICON{recentchanges}%
    Mail Mail mail.gif Mail %ICON{mail}%
    Notify notify.gif Notify %ICON{notify}%Notifynotify.gif Notify %ICON{notify}%
    RSS feed RSS feed rss-feed.gif RSS feed, 36x14 <img src="%ICONURL{rss-feed}%" width="36" height="14" alt="RSS feed" border="0" />
    RSS feed rss-small.gif RSS feed %ICON{rss-small}%RSS feedrss-small.gif RSS feed %ICON{rss-small}%
    XML feed XML feed xml-feed.gif XML feed, 36x14 <img src="%ICONURL{xml-feed}%" width="36" height="13" alt="XML feed" border="0" />
    XML feed xml-small.gif XML feed %ICON{xml-small}%XML feedxml-small.gif XML feed %ICON{xml-small}%
    -### choice-yes Status, flag flag, led-box-red LED icons +### choice-yes Status, flag flag, led-box-red LED, tag-yellow tag icons - - - - + + + + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     File NameDescriptionWrite... File NameDescriptionWrite...
    NEW new.gif NEW, 30x16 %N%, <img src="%ICONURL{new}%" width="30" height="16" alt="New" border="0" />NEWnew.gif NEW, 30x16 %N%, <img src="%ICONURL{new}%" width="30" height="16" alt="New" border="0" />
    TODO TODO todo.gif TODO, 37x16 <img src="%ICONURL{todo}%" width="37" height="16" alt="TODO" border="0" />
    UPDATED updated.gif UPDATED, 55x16 %U%, <img src="%ICONURL{updated}%" width="55" height="16" alt="UPDATED" border="0" />UPDATEDupdated.gif UPDATED, 55x16 %U%, <img src="%ICONURL{updated}%" width="55" height="16" alt="UPDATED" border="0" />
    DONE DONE done.gif DONE, 37x16 <img src="%ICONURL{done}%" width="37" height="16" alt="Done" border="0" />
    CLOSED closed.gif CLOSED, 48x16 <img src="%ICONURL{closed}%" width="48" height="16" alt="Closed" border="0" />CLOSEDclosed.gif CLOSED, 48x16 <img src="%ICONURL{closed}%" width="48" height="16" alt="Closed" border="0" />
    Minus Minus minus.gif Minus %ICON{minus}%
    Plus plus.gif Plus %ICON{plus}%Plusplus.gif Plus %ICON{plus}%
    Cancel Cancel choice-cancel.gif Cancel %ICON{choice-cancel}%
    No choice-no.gif No %ICON{choice-no}%Nochoice-no.gif No %ICON{choice-no}%
    Yes / Done Yes / Done choice-yes.gif Yes / Done %Y%, %ICON{choice-yes}%
    Unchecked checkbox unchecked.gif Unchecked checkbox %ICON{unchecked}%Unchecked checkboxunchecked.gif Unchecked checkbox %ICON{unchecked}%
    Checked checkbox Checked checkbox checked.gif Checked checkbox %ICON{checked}%
    Flag flag.gif Flag %ICON{flag}%Flagflag.gif Flag %ICON{flag}%
    Flag Flag flag-gray.gif Gray flag %ICON{flag-gray}%
    Flag flag-gray-small.gif Small gray flag, 13x13 <img src="%ICONURL{flag-gray-small}%" width="13" height="13" alt="Flag" border="0" />Flagflag-gray-small.gif Small gray flag, 13x13 <img src="%ICONURL{flag-gray-small}%" width="13" height="13" alt="Flag" border="0" />
    Aqua led Aqua led led-aqua.gif Aqua led %ICON{led-aqua}%
    Blue led led-blue.gif Blue led %ICON{led-blue}%Blue ledled-blue.gif Blue led %ICON{led-blue}%
    Gray led Gray led led-gray.gif Gray led %ICON{led-gray}%
    Green led led-green.gif Green led %ICON{led-green}%Green ledled-green.gif Green led %ICON{led-green}%
    Orange led Orange led led-orange.gif Orange led %ICON{led-orange}%
    Purple led led-purple.gif Purple led %ICON{led-purple}%Purple ledled-purple.gif Purple led %ICON{led-purple}%
    Red led Red led led-red.gif Red led %ICON{led-red}%
    Yellow led led-yellow.gif Yellow led %ICON{led-yellow}%Yellow ledled-yellow.gif Yellow led %ICON{led-yellow}%
    Aqua led Aqua led led-box-aqua.gif Aqua led %ICON{led-box-aqua}%
    Blue led led-box-blue.gif Blue led %ICON{led-box-blue}%Blue ledled-box-blue.gif Blue led %ICON{led-box-blue}%
    Gray led Gray led led-box-gray.gif Gray led %ICON{led-box-gray}%
    Green led led-box-green.gif Green led %ICON{led-box-green}%Green ledled-box-green.gif Green led %ICON{led-box-green}%
    Orange led Orange led led-box-orange.gif Orange led %ICON{led-box-orange}%
    Purple led led-box-purple.gif Purple led %ICON{led-box-purple}%Purple ledled-box-purple.gif Purple led %ICON{led-box-purple}%
    Red led Red led led-box-red.gif Red led %ICON{led-box-red}%
    Yellow led led-box-yellow.gif Yellow led %ICON{led-box-yellow}%Yellow ledled-box-yellow.gif Yellow led %ICON{led-box-yellow}%
    Tagtag.gif Tag %ICON{tag}%
    Blue tagtag-blue.gif Blue tag %ICON{tag-blue}%
    Brown tagtag-brown.gif Brown tag %ICON{tag-brown}%
    Green tagtag-green.gif Green tag %ICON{tag-green}%
    Magenta tagtag-magenta.gif Magenta tag %ICON{tag-magenta}%
    Orange tagtag-orange.gif Orange tag %ICON{tag-orange}%
    Purple tagtag-purple.gif Purple tag %ICON{tag-purple}%
    Red tagtag-red.gif Red tag %ICON{tag-red}%
    Yellow tagtag-yellow.gif Yellow tag %ICON{tag-yellow}%
    @@ -682,136 +750,136 @@ There are several ways to put an image in a topic. - - - - + + + + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + +
     File NameDescriptionWrite... File NameDescriptionWrite...
    Home home.gif Home %ICON{home}%Homehome.gif Home %ICON{home}%
    External site External site external.gif External site %ICON{external}%
    Meet here (arrows to red dot) arrowdot.gif Meet here (arrows to red dot) %ICON{arrowdot}%Meet here (arrows to red dot)arrowdot.gif Meet here (arrows to red dot) %ICON{arrowdot}%
    Left Left left.gif Left %ICON{left}%
    Right right.gif Right %ICON{right}%Rightright.gif Right %ICON{right}%
    Up Up up.gif Up %ICON{up}%
    Down down.gif Down %ICON{down}%Downdown.gif Down %ICON{down}%
    Arrow blue left Arrow blue left arrowbleft.gif Arrow blue left %ICON{arrowbleft}%
    Arrow blue right arrowbright.gif Arrow blue right %ICON{arrowbright}%Arrow blue rightarrowbright.gif Arrow blue right %ICON{arrowbright}%
    Arrow blue up Arrow blue up arrowbup.gif Arrow blue up %ICON{arrowbup}%
    Arrow blue down arrowbdown.gif Arrow blue down %ICON{arrowbdown}%Arrow blue downarrowbdown.gif Arrow blue down %ICON{arrowbdown}%
    Arrow left Arrow left arrowleft.gif Arrow left %ICON{arrowleft}%
    Arrow right arrowright.gif Arrow right %M%, %ICON{arrowright}%Arrow rightarrowright.gif Arrow right %M%, %ICON{arrowright}%
    Arrow up Arrow up arrowup.gif Arrow up %ICON{arrowup}%
    Arrow down arrowdown.gif Arrow down %ICON{arrowdown}%Arrow downarrowdown.gif Arrow down %ICON{arrowdown}%
    Go to start Go to start go_start.gif Go to start %ICON{go_start}%
    Go fast back go_fb.gif Go fast back %ICON{go_fb}%Go fast backgo_fb.gif Go fast back %ICON{go_fb}%
    Go back Go back go_back.gif Go back %ICON{go_back}%
    Go forward go_forward.gif Go forward %ICON{go_forward}%Go forwardgo_forward.gif Go forward %ICON{go_forward}%
    Go fast forward Go fast forward go_ff.gif Go fast forward %ICON{go_ff}%
    Go to end go_end.gif Go to end %ICON{go_end}%Go to endgo_end.gif Go to end %ICON{go_end}%
    @@ -819,225 +887,320 @@ There are several ways to put an image in a topic. - - - - + + + + + + + + + + - + - - - - + + + + - + + + + + + + + + + + + + + + + + + + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - +
    Monospace monospace.gif Monospace %ICON{monospace}% File NameDescriptionWrite...
    Monospacemonospace.gif Monospace %ICON{monospace}%
    Proportional Proportional proportional.gif Proportional %ICON{proportional}%
    Open toggle, Twisty open toggle toggleopen.gif Open toggle, Twisty open toggle %ICON{toggleopen}%Sort tabletablesortdiamond.gif Sort table %ICON{tablesortdiamond}%
    Close toggle, Twisty close toggle Sort table descendingtablesortdown.gif Sort table descending %ICON{tablesortdown}%
    Sort table ascendingtablesortup.gif Sort table ascending %ICON{tablesortup}%
    Open toggle, Twisty open toggletoggleopen.gif Open toggle, Twisty open toggle %ICON{toggleopen}%
    Close toggle, Twisty close toggle toggleclose.gif Close toggle, Twisty close toggle %ICON{toggleclose}%
    Open toggle, Twisty open toggle toggleopen-small.gif Open toggle, Twisty open toggle %ICON{toggleopen-small}%Open toggle, Twisty open toggletoggleopen-small.gif Open toggle, Twisty open toggle %ICON{toggleopen-small}%
    Close toggle, Twisty close toggle Close toggle, Twisty close toggle toggleclose-small.gif Close toggle, Twisty close toggle %ICON{toggleclose-small}%
    Open toggle, Twisty open toggle toggleopen-mini.gif Open toggle, Twisty open toggle <img src="%ICONURL{toggleopen-mini}%" width="7" height="9" alt="Open" border="0" />Open toggle, Twisty open toggletoggleopen-mini.gif Open toggle, Twisty open toggle <img src="%ICONURL{toggleopen-mini}%" width="7" height="9" alt="Open" border="0" />
    Close toggle, Twisty close toggle Close toggle, Twisty close toggle toggleclose-mini.gif Close toggle, Twisty close toggle <img src="%ICONURL{toggleclose-mini}%" width="7" height="9" alt="Close" border="0" />
    Open toggle, Twisty open toggle toggleopenleft.gif Open toggle, Twisty open toggle %ICON{toggleopenleft}%Open toggle, Twisty open toggletoggleopenleft.gif Open toggle, Twisty open toggle %ICON{toggleopenleft}%
    Open toggle, Twisty open toggle Open toggle, Twisty open toggle toggleopenleft-small.gif Open toggle, Twisty open toggle %ICON{toggleopenleft-small}%
    Web web-bg.gif Web background, used in [[TWiki/WebLeftBarWebsList]]%ICON{web-bg}%Webweb-bg.gif Web background, used in [[TWiki/WebLeftBarWebsList]]%ICON{web-bg}%
    Web Web web-bg-small.gif Web background, 13x13 <img src="%ICONURL{web-bg-small}%" width="13" height="13" alt="Web" border="0" />
    +### twiki TWiki icons + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     File NameDescriptionWrite...
    Add-onaddon.gif Add-on %ICON{addon}%
    Applicationapplication.gif Application %ICON{application}%
    Codecode.gif Code %ICON{code}%
    Packagepackage.gif Package %ICON{package}%
    Pluginplugin.gif Plugin %ICON{plugin}%
    Tagtag.gif Tag %ICON{tag}%
    Search packagesearchpackage.gif Search package %ICON{searchpackage}%
    Search tagsearchtag.gif Search tag %ICON{searchtag}%
    Skinskin.gif Skin %ICON{skin}%
    TWikitwiki.gif TWiki logo %ICON{twiki}%
    + ### line_ur Block graphics - - - - + + + + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + +
     File NameDescriptionWrite... File NameDescriptionWrite...
    line_ld.gif Line graph left-down %ICON{line_ld}%line_ld.gif Line graph left-down %ICON{line_ld}%
    line_lr.gif Line graph left-right %ICON{line_lr}%
    line_lrd.gif Line graph left-right-down %ICON{line_lrd}%line_lrd.gif Line graph left-right-down %ICON{line_lrd}%
    line_rd.gif Line graph right-down %ICON{line_rd}%
    line_ud.gif Line graph up-down %ICON{line_ud}%line_ud.gif Line graph up-down %ICON{line_ud}%
    line_udl.gif Line graph up-down-left %ICON{line_udl}%
    line_udlr.gif Line graph up-down-left-right %ICON{line_udlr}%line_udlr.gif Line graph up-down-left-right %ICON{line_udlr}%
    line_udr.gif Line graph up-down-right %ICON{line_udr}%
    line_ul.gif Line graph up-left %ICON{line_ul}%line_ul.gif Line graph up-left %ICON{line_ul}%
    line_ulr.gif Line graph up-left-right %ICON{line_ulr}%
    line_ur.gif Line graph up-right %ICON{line_ur}%line_ur.gif Line graph up-right %ICON{line_ur}%
    dot_ld.gif Dot graph left-down %ICON{dot_ld}%
    dot_lr.gif Dot graph left-right %ICON{dot_lr}%dot_lr.gif Dot graph left-right %ICON{dot_lr}%
    dot_lrd.gif Dot graph left-right-down %ICON{dot_lrd}%
    dot_rd.gif Dot graph right-down %ICON{dot_rd}%dot_rd.gif Dot graph right-down %ICON{dot_rd}%
    dot_ud.gif Dot graph up-down %ICON{dot_ud}%
    dot_udl.gif Dot graph up-down-left %ICON{dot_udl}%dot_udl.gif Dot graph up-down-left %ICON{dot_udl}%
    dot_udlr.gif Dot graph up-down-left-right %ICON{dot_udlr}%
    dot_udr.gif Dot graph up-down-right %ICON{dot_udr}%dot_udr.gif Dot graph up-down-right %ICON{dot_udr}%
    dot_ul.gif Dot graph up-left %ICON{dot_ul}%
    dot_ulr.gif Dot graph up-left-right %ICON{dot_ulr}%dot_ulr.gif Dot graph up-left-right %ICON{dot_ulr}%
    dot_ur.gif Dot graph up-right %ICON{dot_ur}%
    empty.gif Empty transparent 16x16 spacer %ICON{empty}%empty.gif Empty transparent 16x16 spacer %ICON{empty}%
    @@ -1047,266 +1210,305 @@ Filetype icons are used by the attachment table and are seldom used in topics. W - - - - + + + + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - +
     File NameNameWrite... File NameNameWrite...
    as as.gif ActionScript %ICON{as}%asas.gif ActionScript %ICON{as}%
    bat bat bat.gif MS-DOS batch file %ICON{bat}%
    bmp bmp.gif Bitmap %ICON{bmp}%bmpbmp.gif Bitmap %ICON{bmp}%
    c c c.gif C source code file %ICON{c}%
    dll dll.gif Dynamic Linked Library; Microsoft application file %ICON{dll}%dlldll.gif Dynamic Linked Library; Microsoft application file %ICON{dll}%
    doc doc doc.gif Microsoft Word file %ICON{doc}%
    else else.gif Unknown file format %ICON{else}%elseelse.gif Unknown file format %ICON{else}%
    eml eml eml.gif Microsoft Outlook e-mail file %ICON{eml}%
    exe exe.gif Microsoft Executable file %ICON{exe}%exeexe.gif Microsoft Executable file %ICON{exe}%
    fla fla fla.gif Macromedia Flash Movie %ICON{fla}%
    fon fon.gif Windows bitmapped font file %ICON{fon}%fonfon.gif Windows bitmapped font file %ICON{fon}%
    gif gif gif.gif GIF %ICON{gif}%
    h h.gif Header file %ICON{h}%hh.gif Header file %ICON{h}%
    hlp hlp hlp.gif Standard help file %ICON{hlp}%
    html html.gif HTML %ICON{html}%htmlhtml.gif HTML %ICON{html}%
    java java java.gif Java source code file %ICON{java}%
    jpg jpg.gif JPEG %ICON{jpg}%jpgjpg.gif JPEG %ICON{jpg}%
    js js js.gif JavaScript %ICON{js}%
    mdb mdb.gif Microsoft Access database File %ICON{mdb}%mdbmdb.gif Microsoft Access database File %ICON{mdb}%
    mov mov mov.gif Quicktime movie %ICON{mov}%
    mp3 mp3.gif MP3 %ICON{mp3}%mp3mp3.gif MP3 %ICON{mp3}%
    pdf pdf pdf.gif PDF %ICON{pdf}%
    pl pl.gif Perl source code file %ICON{pl}%plpl.gif Perl source code file %ICON{pl}%
    png png png.gif PNG %ICON{png}%
    ppt ppt.gif PowerPoint %ICON{ppt}%pptppt.gif PowerPoint %ICON{ppt}%
    ps ps ps.gif Postscript %ICON{ps}%
    py py.gif Python source code file %ICON{py}%pypy.gif Python source code file %ICON{py}%
    ram ram ram.gif RealAudio %ICON{ram}%
    reg reg.gif Registry file %ICON{reg}%regreg.gif Registry file %ICON{reg}%
    sh sh sh.gif Unix shell script %ICON{sh}%
    sniff sniff.gif sniff %ICON{sniff}%sniffsniff.gif sniff %ICON{sniff}%
    swf swf swf.gif SWF (Shockwave Flash) %ICON{swf}%
    ttf ttf.gif True Type font %ICON{ttf}%ttfttf.gif True Type font %ICON{ttf}%
    txt txt txt.gif Text %ICON{txt}%
    wav wav.gif Waveform sound file %ICON{wav}%wavwav.gif Waveform sound file %ICON{wav}%
    wri wri wri.gif Windows Write %ICON{wri}%
    xls xls.gif Microsoft Excel Spreadsheet %ICON{xls}%xlsxls.gif Microsoft Excel Spreadsheet %ICON{xls}%
    xml xml xml.gif XML %ICON{xml}%
    xsl xsl.gif XSL (XML style sheet) %ICON{xsl}%xslxsl.gif XSL (XML style sheet) %ICON{xsl}%
    zip zip zip.gif Compressed Zip archive %ICON{zip}%
    -### twiki TWiki icons +## Usage (extended) - - - - - - - - - - - - - -
     File NameDescriptionWrite...
    TWiki twiki.gif TWiki logo %ICON{twiki}%
    +There are several other ways to put an image in a topic. + +Shorthand notation: + +> In +> +> [[Main.TWikiPreferences|Main/TWikiPreferences]] +> +> set a variable to an ICON, for example: +> +> `   * Set H = %ICON{help}%` +> +> Now you can use the icon by writing `%H%` +> +> For extended use, check out TWiki:Plugins.SmiliesPlugin that uses a different short hand than `%VARIABLES%`. + +Full path: + +> In any topic, write +> +> `%PUBURL%/%TWIKIWEB%/TWikiDocGraphics/help.gif` +> +> to show +> +> ![help.gif](http://www.dementia.org/twiki//view/TWiki/TWikiDocGraphics/help.gif) +> +> You are not restricted to use the TWikiDocGraphics topic - in a similar way you can show attached images by replacing `TWikiDocGraphics` with the topic name. + +To create an image with a link, write: + +> `[[WebHome][%ICON{home}% Home]]` +> +> to get: +> +> [[ Home|Main/WebHome]] +> +> To get rid of the underline under the space, write: %BR% `[[WebHome][%ICON{home}%]] [[WebHome][Home]]` to get: [[Main/WebHome]] [[Home|Main/WebHome]] + +To get the full URL of the icon, use [[ICONURL|Main/VarICONURL]]: + +> `%ICONURL{"toggleopen"}%` +> +> gets you the image path: +> +> `http://www.dementia.org/twiki//view/Main/WebHome/toggleopen.gif` +> +> %BR% and that will get rendered as: +> +> ![toggleopen.gif](http://www.dementia.org/twiki//view/Main/WebHome/toggleopen.gif) + +**_Related Topics:_** [[TWikiSkins]], [[DeveloperDocumentationCategory]], [[AdminDocumentationCategory]] + +**_Contributors:_** Most icons on this page were originally designed by TWiki:Main.PeterThoeny. All icons were recreated by TWiki:Main.ArthurClemens, except for led-color icons, dot graph and line graph images. diff --git a/TWiki/TWikiDocumentation.mdwn b/TWiki/TWikiDocumentation.mdwn index 12d8651..b53ee9f 100644 --- a/TWiki/TWikiDocumentation.mdwn +++ b/TWiki/TWikiDocumentation.mdwn @@ -49,3 +49,7 @@ This page contains all documentation topics as one long, complete reference shee ---- ---- + +---- + +---- diff --git a/TWiki/TWikiDotPm.mdwn b/TWiki/TWikiDotPm.mdwn index 3cae135..6ce9337 100644 --- a/TWiki/TWikiDotPm.mdwn +++ b/TWiki/TWikiDotPm.mdwn @@ -11,7 +11,8 @@ Global variables are avoided wherever possible to avoid problems with CGI accele
  • ObjectMethod UTF82SiteCharSet ($utf8) -> $ascii
  • ObjectMethod writeCompletePage ($text,$pageType,$contentType)
  • ObjectMethod writePageHeader ($query,$pageType,$contentType,$contentLength)
  • -
  • ObjectMethod redirect ($url,...)
  • +
  • ObjectMethod redirect ($url,$passthrough)
  • +
  • ObjectMethod cacheQuery () -> $queryString
  • StaticMethod isValidWikiWord ($name) -> $boolean
  • StaticMethod isValidTopicName ($name) -> $boolean
  • StaticMethod isValidAbbrev ($name) -> $boolean
  • @@ -24,13 +25,14 @@ Global variables are avoided wherever possible to avoid problems with CGI accele
  • ObjectMethod mapToIconFileName ($fileName,$default) -> $fileName
  • ObjectMethod getOopsUrl ($template,@options) -> $absoluteOopsURL
  • ObjectMethod normalizeWebTopicName ($theWeb,$theTopic) -> ($theWeb,$theTopic)
  • -
  • ClassMethod new ($remoteUser,$query)
  • +
  • ClassMethod new ($loginName,$query,\%initialContext)
  • ObjectMethod finish
  • ObjectMethod writeLog ($action,$webTopic,$extra,$user)
  • ObjectMethod writeWarning ($text)
  • ObjectMethod writeDebug ($text)
  • StaticMethod applyPatternToIncludedText ($text,$pattern) -> $text
  • ObjectMethod inlineAlert ($template,$def,...) -> $string
  • +
  • StaticMethod parseSections ($text) -> ($string,$sectionlistref)
  • ObjectMethod expandVariablesOnTopicCreation ($text,$user) -> $text
  • StaticMethod entityEncode ($text,$extras) -> $encodedText
  • StaticMethod entityDecode ($encodedText) -> $text
  • @@ -41,15 +43,14 @@ Global variables are avoided wherever possible to avoid problems with CGI accele
  • ObjectMethod enterContext ($id,$val)
  • ObjectMethod leaveContext ($id)
  • ObjectMethod inContext ($id)
  • -
  • StaticMethod registerTagHandler ($tag,$fnref) -
  • +
  • StaticMethod registerTagHandler ($tag,$fnref)
  • +
  • StaticMethod registerRESTHandler ($subject,$verb,\&fn)
  • +
  • StaticMethod restDispatch ($subject,$verb)=>\&fn
  • ObjectMethod handleCommonTags ($text,$web,$topic) -> $text
  • ObjectMethod addToHEAD ($id,$html)
  • StaticMethod initialize ($pathInfo,$remoteUser,$topic,$url,$query) -> ($topicName,$webName,$scriptUrlPath,$userName,$dataDir)
  • StaticMethod readFile ($filename) -> $text
  • +
  • StaticMethod expandStandardEscapes ($str) -> $unescapedStr
  • @@ -67,9 +68,13 @@ Auto-detect UTF-8 vs. site charset in string, and convert UTF-8 into site charse ## [[ObjectMethod]] \*writeCompletePage `($text,$pageType,$contentType)` -Write a complete HTML page with basic header to the browser. $text is the HTML of the page body (<html> to </html>) +Write a complete HTML page with basic header to the browser. -This method removes noautolink and nop tags before outputting the page. +- `$text` is the text of the page body (<html> to </html> if it's HTML) +- `$pageType` - May be "edit", which will cause headers to be generated that force caching for 24 hours, to prevent [[BackFromPreviewLosesText]] bug, which caused data loss with IE5 and IE6. +- `$contentType` - page content type | text/html + +This method removes noautolink and nop tags before outputting the page unless $contentType is text/plain. ## [[ObjectMethod]] **writePageHeader** `($query,$pageType,$contentType,$contentLength)` @@ -82,13 +87,25 @@ All parameters are optional. Implements the post-Dec2001 release plugin API, which requires the writeHeaderHandler in plugin to return a string of HTTP headers, CR/LF delimited. Filters any illegal headers. Plugin headers will override core settings. -## [[ObjectMethod]] **redirect** `($url,...)` +## [[ObjectMethod]] **redirect** `($url,$passthrough)` + +Redirects the request to `$url`, **unless** + +1. It is overridden by a plugin declaring a `redirectCgiQueryHandler`. +2. `$session->{cgiQuery}` is `undef` or +3. $query->param('noredirect') is set to a true value. + +Thus a redirect is only generated when in a CGI context. + +Normally this method will ignore parameters to the current query. If $passthrough is set, then it will pass all parameters that were passed to the current query on to the redirect target. If the request\_method was GET, then all parameters can be passed in the URL. If the request\_method was POST then it caches the form data and passes over a cache reference in the redirect GET. + +Passthrough is only meaningful if the redirect target is on the same server. -Generate a CGI redirect to $url unless (1) $session->\{cgiQuery\} is undef or (2) $query->param('noredirect') is set to a true value. Thus a redirect is only generated when in a CGI context. +## [[ObjectMethod]] **cacheQuery** `() -> $queryString` -The ... parameters are concatenated to the message written when printing to STDOUT, and are ignored for a redirect. +Caches the current query in the params cache, and returns a rewritten query string for the cache to be picked up again on the other side of a redirect. -Redirects the request to $url, via the CGI module object $query unless overridden by a plugin declaring a `redirectCgiQueryHandler`. +We can't encode post params into a redirect, because they may exceed the size of the GET request. So we cache the params, and reload them when the redirect target is reached. ## [[StaticMethod]] **isValidWikiWord** `($name) -> $boolean` @@ -127,7 +144,7 @@ Get the currently requested skin path Returns the URL to a TWiki script, providing the web and topic as "path info" parameters. The result looks something like this: "http://host/twiki/bin/$script/$web/$topic". -- `...` - an arbitrary number of name,value parameter pairs that will be url-encoded and added to the url. The special parameter name '#' is reserved for specifying an anchor. e.g. `getScriptUrl('x','y','view','#'=>'XXX',a=>1,b=>2)` will give `.../view/x/y#XXX?a=1&b=2` +- `...` - an arbitrary number of name,value parameter pairs that will be url-encoded and added to the url. The special parameter name '#' is reserved for specifying an anchor. e.g. `getScriptUrl('x','y','view','#'=>'XXX',a=>1,b=>2)` will give `.../view/x/y?a=1&b=2#XXX` If $absolute is set, generates an absolute URL. $absolute is advisory only; TWiki can decide to generate absolute URLs (for example when run from the command-line) even when relative URLs have been requested. @@ -164,30 +181,23 @@ Alternatively you can pass a reference to an [[OopsException]] in place of the t The returned URL ends up looking something like this: "http://host/twiki/bin/oops/$web/$topic?template=$template&param1=$scriptParams[0]..." +Note: if \{keep\} is true in the params, then they will also be pushed into the current query. + ## [[ObjectMethod]] \*normalizeWebTopicName `($theWeb,$theTopic) -> ($theWeb,$theTopic)` Normalize a Web.TopicName - Input: Return: - ( 'Web', 'Topic' ) ( 'Web', 'Topic' ) - ( '', 'Topic' ) ( 'Main', 'Topic' ) - ( '', '' ) ( 'Main', 'WebHome' ) - ( '', 'Web/Topic' ) ( 'Web', 'Topic' ) - ( '', 'Web.Topic' ) ( 'Web', 'Topic' ) - ( 'Web1', 'Web2.Topic' ) ( 'Web2', 'Topic' ) - ( 'Main', 'Web2.Topic' ) ( 'Main', 'Topic' ) - ( 'TWiki', 'Web2.Topic' ) ( 'TWiki', 'Topic' ) - -Note: Function renamed from getWebTopic +See [[TWikiFuncDotPm]] for a full specification of the expansion (not duplicated here) -SMELL: WARNING: this function defaults the web and topic names. Be very careful where you use it! +**WARNING** if there is no web specification (in the web or topic parameters) the web defaults to $TWiki::cfg\{UsersWebName\}. If there is no topic specification, or the topic is '0', the topic defaults to the web home topic name. -## [[ClassMethod]] **new** `($remoteUser,$query)` +## [[ClassMethod]] **new** `($loginName,$query,\%initialContext)` Constructs a new TWiki object. Parameters are taken from the query object. -- `$remoteUser` the logged-in user (login name) -- `$query` the query +- `$loginName` is the username of the user you want to be logged-in if none is available from a session or browser. Used mainly for side scripts and debugging. +- `$query` the CGI query (may be undef, in which case an empty query is used) +- `\%initialContext` - reference to a hash containing context name=value pairs to be pre-installed in the context hash ## [[ObjectMethod]] **finish** `` @@ -221,6 +231,14 @@ Apply a pattern on included text to extract a subset Format an error for inline inclusion in rendered output. The message string is obtained from the template 'oops'.$template, and the DEF $def is selected. The parameters (...) are used to populate %PARAM1%..%PARAMn% +## [[StaticMethod]] **parseSections** `($text) -> ($string,$sectionlistref)` + +Generic parser for sections within a topic. Sections are delimited by STARTSECTION and ENDSECTION, which may be nested, overlapped or otherwise abused. The parser builds an array of sections, which is ordered by the order of the STARTSECTION within the topic. It also removes all the SECTION tags from the text, and returns the text and the array of sections. + +Each section is a `TWiki::Attrs` object, which contains the attributes \{type, name, start, end\} where start and end are character offsets in the string **after all section tags have been removed**. All sections are required to be uniquely named; if a section is unnamed, it will be given a generated name. Sections may overlap or nest. + +See test/unit/Fn\_SECTION.pm for detailed testcases that round out the spec. + ## [[ObjectMethod]] \*expandVariablesOnTopicCreation `($text,$user) -> $text` - `$text` - text to expand @@ -302,7 +320,7 @@ STATIC Add a tag handler to the function tag handlers. - `$tag` name of the tag e.g. MYTAG - `$fnref` Function to execute. Will be passed ($session, \\%params, $web, $topic ) -### registerRESTHandler( $subject, $verb, \\&fn ) +## [[StaticMethod]] \*registerRESTHandler `($subject,$verb,\&fn)` Adds a function to the dispatch table of the REST interface for a given subject. See [[TWikiScripts#rest]] for more info. @@ -322,7 +340,7 @@ where: **Since:** TWiki::Plugins::VERSION 1.1 -### restDispatch( $subject, $verb) => \\&fn +## [[StaticMethod]] **restDispatch** `($subject,$verb)=>\&fn` Returns the handler function associated to the given $subject and $werb, or undef if none is found. @@ -357,3 +375,34 @@ Note that $theUrl, if specified, must be identical to $query->url() Returns the entire contents of the given file, which can be specified in any format acceptable to the Perl open() function. Fast, but inherently unsafe. WARNING: Never, ever use this for accessing topics or attachments! Use the Store API for that. This is for global control files only, and should be used **only** if there is **absolutely no alternative**. + +## [[StaticMethod]] \*expandStandardEscapes `($str) -> $unescapedStr` + +Expands standard escapes used in parameter values to block evaluation. The following escapes are handled: + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Escape: Expands To:
    $n or $n() New line. Use $n() if followed by alphanumeric character, e.g. write Foo$n()Bar instead of Foo$nBar
    $nop or $nop() Is a "no operation".
    $quot Double quote (")
    $percnt Percent sign (%)
    $dollar Dollar sign ($)
    diff --git a/TWiki/TWikiEditingShorthand.mdwn b/TWiki/TWikiEditingShorthand.mdwn index 6ccd2fc..9319e14 100644 --- a/TWiki/TWikiEditingShorthand.mdwn +++ b/TWiki/TWikiEditingShorthand.mdwn @@ -1,4 +1,4 @@ -## TWiki Editing Shorthand' +## TWiki Editing Shorthand @@ -221,6 +221,7 @@ class CatAnimal {
  • |^| cell with caret indicating follow-up row of multi-span rows
  • You can split rows over multiple lines by putting a backslash '\' at the end of each line
  • Contents of table cells wrap automatically as determined by the browser
  • +
  • Use &#124; or %VBAR% to add | characters in tables.
  • %T% The [[TWiki/TablePlugin]] provides the |^| multiple-span row functionality and additional rendering features >
     | *L* | *C* | *R* |
    diff --git a/TWiki/TWikiFAQ.mdwn b/TWiki/TWikiFAQ.mdwn
    index af605b9..2005828 100644
    --- a/TWiki/TWikiFAQ.mdwn
    +++ b/TWiki/TWikiFAQ.mdwn
    @@ -1,6 +1,6 @@
     #  Frequently Asked Questions About TWiki
     
    -This is a real FAQ, and also a demo of an easily implemented knowledge-base solution. To see how it's done, [view the source of this topic](http://www.dementia.org/twiki//view/%WEB%/%TOPIC%?raw=on).
    +This is a real FAQ, and also a demo of an easily implemented knowledge-base solution. To see how it's done, [[view the source of this topic|%WEB%/%TOPIC%?raw=on]].
     
     #  TWiki Installation Error
     
    @@ -12,7 +12,7 @@ Incorrect format of searchformat template (missing sections? There should be 4 %
     
     %X% **_NOTE:_** These topics are for frequently asked questions **_including_** answers; please ask support questions in the TWiki:Support web. New FAQ topics are based on the [[TWikiFaqTemplate]].
     
    -
    New FAQ topic:   (Use a name in [[Main/WikiNotation]])
    +
    New FAQ topic:   (Use a name in [[Main/WikiNotation]])
    ## More sources... diff --git a/TWiki/TWikiFormDotPm.mdwn b/TWiki/TWikiFormDotPm.mdwn index b511724..b7d3a66 100644 --- a/TWiki/TWikiFormDotPm.mdwn +++ b/TWiki/TWikiFormDotPm.mdwn @@ -5,7 +5,7 @@ Object representing a single form definition. -## [[ClassMethod]] **new** `($session,$web,$form)` +## [[ClassMethod]] **new** `($session,$web,$form,$def)` - $web - default web to recover form from, if $form doesn't specify a web - `$form` - topic name to read form definition from +- `$def` - optional. a reference to a list of field definitions. if present, these definitions will be used, rather than those in `$form`. May throw TWiki::OopsException @@ -44,7 +45,7 @@ Render the form fields for entry during an edit session, using data values from Render a single form field for entry during an edit session, using data values from $meta. Plugins can provide a handler that extends the set of supported types -SMELL: this should be a method on a field class SMELL: [[JSCalendarContrib]] ought to provide a 'date' handler. +SMELL: this should be a method on a field class ## [[ObjectMethod]] **renderHidden** `($meta) -> $html` diff --git a/TWiki/TWikiForms.mdwn b/TWiki/TWikiForms.mdwn index 712ed36..70afb06 100644 --- a/TWiki/TWikiForms.mdwn +++ b/TWiki/TWikiForms.mdwn @@ -2,19 +2,21 @@ @@ -36,77 +38,16 @@ Typical steps to build an application based on TWiki forms: 4. Build an HTML form to create new topics based on that template topic 5. Build a [[FormattedSearch]] to list topics that share the same form -## Defining a Form Template - -A Form Template specifies the fields in a form. A Form Template is simply a page containing a TWiki table, where each row of the table is one form field. - -### Form Template Elements - -- **form template** - a set of fields defining a form - - A web can use one or more form templates -- **form** - additional meta data (besides the freeform TEXTAREA) attached to a topic - - Within a form-enabled web, individual topics can have a form or no form -- **form field** - a named item in a form (also known as a _key_) -- **field type** - selects the field type: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Input type Type field Size field Value field
    One or more checkboxes checkbox number of items per line comma list of item labels
    One or more checkboxes, plus Set and Clear buttons checkbox+buttons (same) (same)
    One or more radio buttons (radio buttons are mutually exclusive; only one can be selected) radio (same) (same)
    Read-only label text labelignored text
    Drop-down menu or scrollable box select1 for drop down, 2 and up for scrollable box comma-separated list of options
    A one-line text field text text box width in number of characters initial text, if a new topic is created with a form template
    A text box textarea columns x rows, e.g. 80x6; default size is 40x5 initial text, if a new topic is created with a form template
    -- **field value** - one or more values from a fixed set (select, checkbox, radio type) or free-form (label, text, text area). - -### Defining a Form +## Defining a Form + +A Form Template specifies the fields in a form. A Form Template is simply a page containing a TWiki table, where each row of the table specifies one form field. 1. Create a new topic with your form name: **YourForm**, **ExpenseReportForm**, **InfoCategoryForm**, **RecordReviewForm**, whatever you need. -2. Create a TWiki table, with each column head representing one element of an entry field: **Name**, **Type**, **Size**, **Values**, **Tooltip message**, and **Attributes** _(see sample below)_. +2. Create a TWiki table, with each column representing one element of an entry field: **Name**, **Type**, **Size**, **Values**, **Tooltip message**, and **Attributes** _(see sample below)_. 3. For each field, fill in a new line; for the type of field, select from the list. 4. Save the topic _(you can later choose to [[enable/disable|Main/WebHome#EnablingForms]] individual forms)_. -> **Example: WebForm** +> **Example:** > > %BR% > @@ -159,9 +100,11 @@ A Form Template specifies the fields in a form. A Form Template is simply a page >
    -You can also retrieve possible values for select, checkbox or radio types from other topics: +See [[structure of a form|Main/WebHome#FormStructure]] for full details of what types are available and what all the columns mean. + +You can also retrieve possible values for `select`, `checkbox` or `radio` types from other topics: -> **Example: WebForm** +> **Example:** > > - In the WebForm topic, define the form:
    > @@ -199,49 +142,26 @@ You can also retrieve possible values for select, checkbox or radio types from o >
    >
    %X% Leave the **Values** field **blank**. > -> - Then in the TopicClassification topic, define the possible values:
    +> - Then in the TopicClassification topic, define the possible values:
    `| *Name*            |` %BR% `| NoDisclosure      |` %BR% `| Public Supported  |` %BR% `| Public FAQ        |` %BR%
    > > -> -> > > > -> -> > > > -> -> > > > -> -> > >
    Name Type Tooltip message
    NoDisclosure option blah blah...
    Public Supported option blah blah...
    Public FAQ option blah blah...
    Field values can also be obtained as the result of a [[FormattedSearch]]. For example, -> `%SEARCH{"Office$" scope="topic" web="%MAINWEB%" nototal="on" nosummary="on" nosearch="on" regex="on" format="$web.$topic" separator=", " }%` - -when used in the value field of the form definition, will take the set of field values to be all topic names in the Main web which end in "Office". +> `%SEARCH{"Office$" scope="topic" web="%MAINWEB%" nonoise="on" type="regex" format="$web.$topic" separator=", " }%` -**Notes:** - -- A very few field names are reserved. If you try to use one of these names, TWiki will automatically append an underscore to the name when the form is used. -- The field value will be used to initialize a field when a form is created, unless specific values are given by the topic template or query parameters. The first item in the list for a select or radio type is the default item. For `label`, `text`, and `textarea` fields the value may also contain commas. `checkbox` fields cannot be initialized through the form template. -- If a `label` field has no name (blank first column in the form definition) it will **not** be shown when the form is **viewed**, only when it is **edited**. -- The topic definition is not read when a topic is viewed. -- Field names can include any text, but you should stick to alphanumeric characters. If you want to use a non-wikiname for a `select`, `checkbox` or `radio` field, and want to get the values from another topic, you can use **\[[...]]** links. This notation can also be used when referencing another topic to obtain field values, but a name other than the topic name is required as the name of the field. -- Field names have to be unique. If the same name is necessary (as when the field values for several fields are obtained from the same topic), an alternative name must be assigned using the **\[[...]]** notation. -- The topic defining field values can also be generated through a [[FormattedSearch]], which must yield a suitable table as the result. -- Form definition topics can be protected in the usual manner, using [[TWikiAccessControl]], to limit who can change the form template and/or individual value lists. Note that view access is required to be able to edit topics that use the form definition, though view access to the form definition is _not_ required to view a topic where the form has been used. -- The **Tooltip message** column is used as a tooltip for the field name (only if field name is a [[WikiName]]) - you only see the tooltip in edit view. -- The **Attributes** column is used to define special behavior for that form field (multiple attributes can be entered, with or without separators): - - An attribute `H` indicates that this field should not be shown in view mode. However, the field is available for editing and storing information. - - An attribute `M` indicates that this field is mandatory. The topic cannot be saved unless a value is provided for this field. If the field is found empty during topic save, an error is raised and the user is redirected to an `oops` page. Mandatory fields are indicated by an asterisks next to the field name. +when used in the value field of the form definition, this will find all topic names in the Main web which end in "Office" and use them as the legal field values. @@ -254,10 +174,11 @@ Forms have to be enabled for each individual web. The **WEBFORMS** > - Set WEBFORMS = BugForm, FeatureForm, Books.BookLoanForm - With **WEBFORMS** enabled, an extra button is added to the edit view. If the topic doesn't have a Form, an **Add Form** button appears at the end of the topic. If a Form is present, a **Change** button appears in the top row of the Form. The buttons open a screen that enables selection of a form specified in `WEBFORMS`, or the **No form** option. +- You have to list the available form topics explicitly. You cannot use a `SEARCH` to define `WEBFORMS`. -## Add a form to a topic +## Adding a form to a topic -- Edit a topic and follow the "Add form" button to add a Form to the topic. This is typically done to a [[template topic|Main/TWikiTemplates#TemplateTopic]], either to the `WebTopicEditTemplate` topic in a web, or a new topic that serves as an application specific template topic. Initial Form values can be set there. +- Edit the topic and follow the "Add form" button to add a Form. This is typically done to a [[template topic|Main/TWikiTemplates#TemplateTopic]], either to the `WebTopicEditTemplate` topic in a web, or a new topic that serves as an application specific template topic. Initial Form values can be set there. - Additionally a new topic can be given a Form using the `formtemplate` parameter in the (edit or save) URL. Initial values can then be provided in the URLs or as form values: - other than checkboxes: **name**, ex: **?BugPriority=1** @@ -266,16 +187,12 @@ Forms have to be enabled for each individual web. The **WEBFORMS**
    New topic name - +
    - **_%T% Tip:_** For TWiki applications you can [[automatically generate unique topicnames|Main/TWikiTemplates#AutomaticallyGeneratedTopicname]]. - **_%X% Note:_** Initial values will not be submitted to the form of a new topic if you only use the formtemplate parameter. -## Build an HTML form to create new Form-based topics - -- New topics with a form are created by simple HTML forms asking for a topic name. For example, you can have a `SubmitExpenseReport` topic where you can create new expense reports, a `SubmitVacationRequest` topic, and so on. These can specify the required template topic with its associated form. [[Template topics|Main/TWikiTemplates#TemplateTopics]] has more. - ## Changing a form - You can change a form definition, and TWiki will try to make sure you don't lose any data from the topics that use that form. @@ -286,47 +203,131 @@ Forms have to be enabled for each individual web. The **WEBFORMS** - If you delete a field from the form, or change a field name, then the data will not be visible when you edit the topic (the changed form definition will be used). **If you save the topic, the old data will be lost** (though thanks to revision control, you can always see it in older versions of the topic) - +- If two people edit the same topic containing a form at exactly the same time, and both change fields in the form, TWiki will try to merge the changes so that no data is lost. -## Searching for Form Data + -TWiki Forms accept user-input data, stored as [[TWikiMetaData]]. Meta data also contains program-generated info about changes, attachments, etc. To find, format and display form and other meta data, see [[TWikiMetaData]], **FORMFIELD**, **SEARCH** and **METASEARCH** variables in [[TWikiVariables]], and [[TWiki Formatted Search|Main/FormattedSearch]]. +## Structure of a Form Template -> **Example** -> -> %BR% TWiki users often want to have an overview of topics they contributed to. With the -> -> **$formfield** -> -> parameter it is easy to display the value of a classification field next to the topic link: -> -> | *Topic* | *Classification* | -> %SEARCH{"%MAINWEB%.UserName" scope="text" regex="off" nosearch="on" nototal="on" order="modified" reverse="on" -> format="|[[$web.$topic][$topic]] |$formfield(TopicClassification) |" web="Sandbox"}% +A Form Template specifies the fields in a form. A Form Template is simply a page containing a TWiki table, where each row of the table specifies one form field. + +Each **column** of the table is one element of an entry field: **Name**, **Type**, **Size**, **Values**, **Tooltip message**, and **Attributes**. + +The `Name`, `Type` and `Size` columns are required. Other columns are optional. The form **must** have a header row (e.g. `| *Name* | *Type* | *Size* |`). + +**Name** is the name of the form field. + +The **Type**, **Size** and **Value** fields describe the legal values for this field, and how to display them. + +- **Type** `checkbox` specifies one or more checkboxes. The `Size` field specifies how many checkboxes will be displayed on each line. The `Value` field should be a comma-separated list of item labels. + - **Type** `checkbox+buttons` will add **Set** and **Clear** buttons to the basic `checkbox` type. +- **Type** `radio` is like `checkbox` except that radio buttons are mutually exclusive; only one can be selected. +- **Type** `label` specifies read-only label text, The `Value` field should contian the text of the label. +- **Type** `select` specifies a select box. The `Value` field should contain a comma-separated list of options for the box. The `Size` field can specify a fixed size for the box (e.g. `1`, or a range e.g. `3..10`. If you specify a range, then the box will never be smaller than 3 items, never larger than 10, and will be 5 high if there are only 5 options. + - There are two modifiers that can be applied to the `select` type: + - `select+multi` turns multiselect on for the select, to allow Shift+Click and Ctrl+Click to select (or deselect) multiple items. + - `select+values` allows the definition of values that are different to the displayed text. For example: | Field 9 | select+values | 5 | One, Two=2, Three=III, Four | Various values formats | shows + but the values or options `Two` and `Three` are `2` and `III` respectively.
    You can combine these modifiers e.g. `select+multi+values` +- **Type** `text` specifies a one-line text field. `Size` specifies the text box width in number of characters. `Value` is the initial (default) content when a new topic is created with this form template. +- **Type** `textarea` specifies a multi-line text box. The `Size` field should specify columns x rows, e.g. `80x6`; default size is 40x5. As for `text`, the `Value` field specifies the initial text +- **Type** `date` specifies a single-line text box and a button next to it; clicking on the button will bring up a calendar from which the user can select a date. The date can also be typed into the text box. `Size` specifies the text box width in characters. As for `text`, the `Value` field specifies the initial text + +**Tooltip message** is a message that will be displayed when the cursor is hovered over the field in `edit` view. + +**Attributes** specifies special attributes for the field. Multiple attributes can be entered, separated by spaces. + +- An attribute `H` indicates that this field should not be shown in view mode. However, the field is available for editing and storing information. +- An attribute `M` indicates that this field is mandatory. The topic cannot be saved unless a value is provided for this field. If the field is found empty during topic save, an error is raised and the user is redirected to an `oops` page. Mandatory fields are indicated by an asterisks next to the field name. + +For example, a simple form just supporting entry of a name and a date would look as follows: + + | *Name* | *Type* | *Size* | + | Name | text | 80 | + | Date | date | 30 | + +**Field Name Notes:** + +- Field names have to be unique. +- A very few field names are reserved. If you try to use one of these names, TWiki will automatically append an underscore to the name when the form is used. +- You can space out the title of the field, and it will still find the topic e.g. `Aeroplane Manufacturers` is equivalent to `AeroplaneManufacturers`. +- If a `label` field has no name, it will **not** be shown when the form is **viewed**, only when it is **edited**. +- Field names can in theory include any text, but you should stick to alphanumeric characters. If you want to use a non-wikiname for a `select`, `checkbox` or `radio` field, and want to get the values from another topic, you can use **\[[...]]** links. This notation can also be used when referencing another topic to obtain field values, but a name other than the topic name is required as the name of the field. +- Leading and trailing spaces are _not_ significant. + +**Field Value Notes:** + +- The field value will be used to initialize a field when a form is created, unless specific values are given by the topic template or query parameters. The first item in the list for a select or radio type is the default item. For `label`, `text`, and `textarea` fields the value may also contain commas. `checkbox` fields cannot be initialized through the form template. +- Leading and trailing spaces are _not_ significant. +- Field values can also be generated through a [[FormattedSearch]], which must yield a suitable table as the result. +- Variables in the initial values of a form definition get expanded when form values are initialized from the form definition. The escape words `$quot` ("), `$percnt` (%), `$dollar` ($), `$n` (newline), and `$nop` can be used to prevent expansion. + +**General Notes:** + +- The topic definition is not read when a topic is viewed. +- Form definition topics can be protected in the usual manner, using [[TWikiAccessControl]], to limit who can change the form template and/or individual value lists. Note that view access is required to be able to edit topics that use the form definition, though view access to the form definition is _not_ required to view a topic where the form has been used. + +### Values in Other Topics + +As described above, you can also retrieve possible values for select, checkbox or radio types from other topics. For example, if you have a rows defined like this: + + | *Name* | *Type* | *Size* | + | AeroplaneManufacturers | select | | + +the TWiki will look for the topic AeroplaneManufacturers to get the possible values for the `select`. + +The AeroplaneManufacturers topic must contain a table, where each row of the table describes a possible value. The table only requires one column, **Name**. Other columns may be present, but are ignored. + +For example: + + | *Name* | + | Routan | + | Focke-Wulf | + | De Havilland | + +**Notes:** + +- The **Values** column **must be empty** in the referring form definition. ## Extending the range of form data types -Several Plugins allow you to extend the range of data types accepted by forms. For example, the TWiki:Plugins.DateFieldPlugin lets you add a 'date' type to the available data types. All data types are single-valued (can only have one value) with the following exceptions: +You can extend the range of data types accepted by forms by using [[TWikiPlugins]]. All such extended data types are single-valued (can only have one value) with the following exceptions: - any type name starting with `checkbox` - any type name with `+multi` anywhere in the name Types with names like this can both take multiple values. -## Gotcha! +## Hints and Tips -- Some browsers may strip linefeeds from `text` fields when a topic is saved. If you need linefeeds in a field, make sure it is a `textarea`. +### Build an HTML form to create new Form-based topics - +- New topics with a form are created by simple HTML forms asking for a topic name. For example, you can have a `SubmitExpenseReport` topic where you can create new expense reports, a `SubmitVacationRequest` topic, and so on. These can specify the required template topic with its associated form. [[Template topics|Main/TWikiTemplates#TemplateTopics]] has more. + +A Form Template specifies the fields in a form. A Form Template is simply a page containing a TWiki table, where each row of the table specifies one form field. -## Importing Category Table Data +### Searching for Form Data -Very, very old TWiki releases used a system called the "TWikiCategoryTable". Later releases support automatic import of this data. +TWiki Forms accept user-input data, stored as [[TWikiMetaData]]. Meta data also contains program-generated info about changes, attachments, etc. To find, format and display form and other meta data, see [[TWikiMetaData]], **FORMFIELD**, **SEARCH** and **METASEARCH** variables in [[TWikiVariables]], and [[TWiki Formatted Search|Main/FormattedSearch]]. + +> **Example** +> +> %BR% TWiki users often want to have an overview of topics they contributed to. With the +> +> **$formfield** +> +> parameter it is easy to display the value of a classification field next to the topic link: +> +> | *Topic* | *Classification* | +> %SEARCH{"%MAINWEB%.UserName" scope="text" nosearch="on" nototal="on" order="modified" reverse="on" +> format="|[[$web.$topic][$topic]] |$formfield(TopicClassification) |" web="Sandbox"}% -On upgrading from the previous TWiki, a Form Template topic has to be built for each web that used a Category Table, recreating the fields and values from the old **twikicatitems.tmpl**. The replacement Form Template must be set as the first item in the [[WebPreferences]] variable `WEBFORMS`. If missing, pages will display, but attempting to edit results in an error message. +Searching forms this way is obviously pretty inefficient, but it's easy to do. If you want better performance, take a look at some of the structured wiki extensions that support higher performance searching e.g. TWiki:Plugins.DBCachePlugin. -The new Form Template system should work with old Category Table data with no special conversion. Data is assigned to Meta variables the first time an imported topic is edited and saved in the new system. +### Gotcha! -%T% If things aren't working correctly, there may be useful entries in `data/warning.txt`. +- Some browsers may strip linefeeds from `text` fields when a topic is saved. If you need linefeeds in a field, make sure it is a `textarea`. **_Related Topics:_** [[UserDocumentationCategory]], [[TWikiTemplates]] diff --git a/TWiki/TWikiFuncDotPm.mdwn b/TWiki/TWikiFuncDotPm.mdwn index 1310d2b..912bdff 100644 --- a/TWiki/TWikiFuncDotPm.mdwn +++ b/TWiki/TWikiFuncDotPm.mdwn @@ -72,7 +72,7 @@ will work happily.
  • moveWeb( $oldName, $newName )
  • getTopicList( $web ) -> @topics
  • topicExists( $web, $topic ) -> $boolean
  • -
  • checkTopicEditLock( $web, $topic ) -> ( $oopsUrl, $loginName, $unlockTime )
  • +
  • checkTopicEditLock( $web, $topic, $script ) -> ( $oopsUrl, $loginName, $unlockTime )
  • setTopicEditLock( $web, $topic, $lock )
  • saveTopic( $web, $topic, $meta, $text, $options ) -> $error
  • saveTopicText( $web, $topic, $text, $ignorePermissions, $dontNotify ) -> $oopsUrl
  • @@ -92,7 +92,7 @@ will work happily.
  • loadTemplate ( $name, $skin, $web ) -> $text
  • expandTemplate( $def ) -> $string
  • writeHeader( $query, $contentLength )
  • -
  • redirectCgiQuery( $query, $url )
  • +
  • redirectCgiQuery( $query, $url, $passthru )
  • addToHEAD( $id, $header )
  • expandCommonVariables( $text, $topic, $web ) -> $text
  • renderText( $text, $web ) -> $text
  • @@ -173,6 +173,7 @@ Compose fully qualified URL - `$web` - Web name, e.g. `'Main'` - `$topic` - Topic name, e.g. `'WebNotify'` - `$script` - Script name, e.g. `'view'` +- `...` - an arbitrary number of name,value parameter pairs that will be url-encoded and added to the url. The special parameter name '#' is reserved for specifying an anchor. e.g. `getScriptUrl('x','y','view','#'=>'XXX',a=>1,b=>2)` will give `.../view/x/y?a=1&b=2#XXX` Return: `$url` URL, e.g. `"http://example.com:80/cgi-bin/view.pl/Main/WebNotify"` @@ -244,7 +245,7 @@ Return: `$value` Value associated with key; empty string if not set ### setSessionValue( $key, $value ) -> $boolean -Set a session value via the client session module +Set a session value. - `$key` - Session key - `$value` - Value associated with key @@ -255,11 +256,11 @@ Return: true if function succeeded ### clearSessionValue( $key ) -> $boolean -Clear a session value via the client session module +Clear a session value that was set using `setSessionValue`. -- `$key` - Session key +- `$key` - name of value stored in session to be cleared. Note that you **cannot** clear `AUTHUSER`. -Return: true if function succeeded +Return: true if the session value was cleared **Since:** TWiki::Plugins::VERSION 1.1 @@ -319,6 +320,8 @@ Return: `$value` Preferences value; empty string if not set - [[WebPreferences]] topic has: `* Set WEBBGCOLOR = #FFFFC0` - `my $webColor = TWiki::Func::getPreferencesValue( 'WEBBGCOLOR', 'Sandbox' );` +**NOTE:** As of TWiki4.1, if `$NO_PREFS_IN_TOPIC` is enabled in the plugin, then preferences set in the plugin topic will be ignored. + ### getPluginPreferencesValue( $key ) -> $value Get a preferences value from your Plugin @@ -331,6 +334,8 @@ Return: `$value` Preferences value; empty string if not set **Since:** TWiki::Plugins::VERSION 1.021 (27 Mar 2004) +**NOTE:** As of TWiki4.1, if `$NO_PREFS_IN_TOPIC` is enabled in the plugin, then preferences set in the plugin topic will be ignored. + ### getPreferencesFlag( $key, $web ) -> $value Get a preferences flag from TWiki or from a Plugin @@ -347,6 +352,8 @@ Return: `$value` Preferences flag `'1'` (if set), or `"0"` (for preferences valu - Use `"MYPLUGIN_SHOWHELP"` for `$key` - `my $showHelp = TWiki::Func::getPreferencesFlag( "MYPLUGIN_SHOWHELP" );` +**NOTE:** As of TWiki4.1, if `$NO_PREFS_IN_TOPIC` is enabled in the plugin, then preferences set in the plugin topic will be ignored. + ### getPluginPreferencesFlag( $key ) -> $boolean Get a preferences flag from your Plugin @@ -359,6 +366,8 @@ Return: false for preferences values `"off"`, `"no"` and `"0"`, or values not se **Since:** TWiki::Plugins::VERSION 1.021 (27 Mar 2004) +**NOTE:** As of TWiki4.1, if `$NO_PREFS_IN_TOPIC` is enabled in the plugin, then preferences set in the plugin topic will be ignored. + ### getWikiToolName( ) -> $name Get toolname as defined in TWiki.cfg @@ -556,7 +565,7 @@ $web and $topic are parsed as described in the documentation for `normalizeWebTo **Since:** TWiki::Plugins::VERSION 1.000 (14 Jul 2001) -### checkTopicEditLock( $web, $topic ) -> ( $oopsUrl, $loginName, $unlockTime ) +### checkTopicEditLock( $web, $topic, $script ) -> ( $oopsUrl, $loginName, $unlockTime ) Check if a lease has been taken by some other user. @@ -565,6 +574,8 @@ Check if a lease has been taken by some other user. Return: `( $oopsUrl, $loginName, $unlockTime )` - The `$oopsUrl` for calling redirectCgiQuery(), user's `$loginName`, and estimated `$unlockTime` in minutes, or ( '', '', 0 ) if no lease exists. +- `$script` The script to invoke when continuing with the edit + **Since:** TWiki::Plugins::VERSION 1.010 (31 Dec 2002) ### setTopicEditLock( $web, $topic, $lock ) @@ -927,14 +938,28 @@ Return: none **Since:** TWiki::Plugins::VERSION 1.000 (7 Dec 2002) -### redirectCgiQuery( $query, $url ) +### redirectCgiQuery( $query, $url, $passthru ) Redirect to URL - `$query` - CGI query object. Ignored, only there for compatibility. The session CGI query object is used instead. - `$url` - URL to redirect to +- `$passthru` - enable passthrough. + +Return: none + +Print output to STDOUT that will cause a 302 redirect to a new URL. Nothing more should be printed to STDOUT after this method has been called. + +The `$passthru` parameter allows you to pass the parameters that were passed to the current query on to the target URL, as long as it is another URL on the same TWiki installation. If `$passthru` is set to a true value, then TWiki will save the current URL parameters, and then try to restore them on the other side of the redirect. Parameters are stored on the server in a cache file (see `{PassthroughDir} in =configure`). + +Note that if `$passthru` is set, then any parameters in `$url` will be lost when the old parameters are restored. if you want to change any parameter values, you will need to do that in the current CGI query before redirecting e.g. -Return: none, never returns + my $query = TWiki::Func::getCgiQuery(); + $query->param(-name => 'text', -value => 'Different text'); + TWiki::Func::redirectCgiQuery( + undef, TWiki::Func::getScriptUrl($web, $topic, 'edit'), 1); + +`$passthru` does nothing if `$url` does not point to a script in the current TWiki installation. **Since:** TWiki::Plugins::VERSION 1.000 (7 Dec 2002) @@ -1108,6 +1133,13 @@ for example, to execute an arbitrary command on the server, you might do this: would let you do this: `%EXEC{"ps -Af" silent="on"}%` +Registered tags differ from tags implemented using the old TWiki approach (text substitution in `commonTagsHandler`) in the following ways: + +- registered tags are evaluated at the same time as system tags, such as %SERVERTIME. `commonTagsHandler` is only called later, when all system tags have already been expanded (though they are expanded _again_ after `commonTagsHandler` returns). +- registered tag names can only contain alphanumerics and \_ (underscore) +- registering a tag `FRED` defines both `%FRED{...}%` **and also** `%FRED%`. +- registered tag handlers **cannot** return another tag as their only result (e.g. `return '%SERVERTIME%';`). It won't work. + ### registerRESTHandler( $alias, \\&fn, ) Should only be called from initPlugin. @@ -1318,7 +1350,7 @@ Parse a web and topic name, supplying defaults as appropriate. - `$web` - Web name, identifying variable, or empty string - `$topic` - Topic name, may be a web.topic string, required. -Return: the parsed Web/Topic pai +Return: the parsed Web/Topic pair **Since:** TWiki::Plugins::VERSION 1.1 @@ -1344,25 +1376,46 @@ Return: the parsed Web/Topic pai ( 'Web', 'Topic' ) + ( '', 'Web/Subweb/Topic' ) + ( 'Web/Subweb', 'Topic' ) + + ( '', 'Web.Topic' ) ( 'Web', 'Topic' ) + ( '', 'Web.Subweb.Topic' ) + ( 'Web/Subweb', 'Topic' ) + + ( 'Web1', 'Web2.Topic' ) ( 'Web2', 'Topic' ) + + +Note that hierarchical web names ([[SubWeb]]) are only available if hierarchical webs are enabled in `configure`. + +The symbols %USERSWEB%, %SYSTEMWEB%, %DOCWEB%, %MAINWEB% and %TWIKIWEB% can be used in the input to represent the web names set in $cfg\{UsersWebName\} and $cfg\{SystemWebName\}. For example: + + + + + + - + - + + + + +
    Input Return
    ( 'Main', 'Topic' )( '%USERSWEB%', 'Topic' ) ( 'Main', 'Topic' )
    ( 'TWiki', 'Topic' )( '%SYSTEMWEB%', 'Topic' )( 'TWiki', 'Topic' )
    ( '', '%DOCWEB%.Topic' ) ( 'TWiki', 'Topic' )
    -where `Main` and `TWiki` are the web names set in $cfg\{UsersWebName\} and $cfg\{SystemWebName\} respectively. - ### writeWarning( $text ) Log Warning that may require admin intervention to data/warning.txt @@ -1496,7 +1549,7 @@ Return: `$text` Formatted time string ### getDataDir( ) -> $dir -**DEPRECATED** since 1.1 - use the [[content handling functions|Main/WebHome#Functions_Content_Handling]] to manipulate topics instead +**DEPRECATED** since 1.1 - use the "Webs, Topics and Attachments" functions to manipulate topics instead Get data directory (topic file root) @@ -1508,7 +1561,7 @@ This function violates store encapsulation and is therefore **deprecated**. ### getPubDir( ) -> $dir -**DEPRECATED** since 1.1 - use the [[content handling functions|Main/WebHome#Functions_Content_Handling]] to manipulateattachments instead +**DEPRECATED** since 1.1 - use the "Webs, Topics and Attachments" functions to manipulateattachments instead Get pub directory (file attachment root). Attachments are in `$dir/Web/TopicName` diff --git a/TWiki/TWikiHistory.mdwn b/TWiki/TWikiHistory.mdwn index b388989..2293f2a 100644 --- a/TWiki/TWikiHistory.mdwn +++ b/TWiki/TWikiHistory.mdwn @@ -1,6 +1,7 @@
    • Appendix A: TWiki Development Timeline
        +
      • TWiki Release 4.1 (Edinburgh), 17 Jan 2007
      • TWiki Release 4.0.0 (Dakar), 01 Feb 2006
      • 01-Sep-2004 Release (Cairo)
      • 01-Feb-2003 Release (Beijing)
      • @@ -19,6 +20,103 @@ # Appendix A: TWiki Development Timeline + + +## TWiki Release 4.1 (Edinburgh), 17 Jan 2007 + +**_New Features and Enhancements of TWiki Release 4.1_** + +- **Easier Installation and Upgrade** + - Plugins can now be installed from the configure script. + - The loading of plugin preferences settings has been moved earlier in the preferences evaluation order so that plugin settings can be redefined in [[Main.TWikiPreferences|Main/TWikiPreferences]], WebPreferences and in topics. To make TWiki upgrades easier, it is recommended to set the plugin settings in Main.TWikiPreferences, and not to customize the settings in the plugin topic. For example, to change the TEMPLATES setting of the [[CommentPlugin]], create a new COMMENTPLUGIN\_TEMPLATES setting in Main.TWikiPreferences. + - Plugin settings can now be defined in configure instead of in the plugin topic (requires that the individual plugin has implemented this). TWiki performs slightly better by not looking for preferences settings in plugin topics. + - Configure no longer shows many unnecessary errors when run first time. + - The webmaster email address is now defined in configure instead of TWikiPreferences. + - Default file access rights in the distribution package have been changed to be more universally defined and in line with the default access rights for new topics. + +- **Usability Enhancements** + - Redesigned result page when typing incomplete topic name into the Jump box, so that it is possible to quickly navigate to a topic, also in a very large TWiki installation. For example, "I know there is a topic about Ajax somewhere in the Eng web. OK, let my type `Eng.ajax` into the Jump box... Here we go, the third link is the AjaxCookbook I was looking for." + - Many user documentation improvements. + - URL parameters maintained in Table of Contents links so you can stay in a temporary skin (e.g. print) and keep URLPARAM values when you click the TOC links + - Attachment tables now sorted alphabetically. + - Better printing of tables and verbatim text in [[PatternSkin]]. + +- **Application Platform Enhancements** + - Auto-incremented topic name on save with AUTOINC<n> in topic name; used by TWiki applications to create topic based database records. + - The edit and save scripts support a `redirectto` parameter to redirect to a topic or a URL; for security, redirect to URL needs to be enabled with a `{AllowRedirectUrl}` configure flag. + - [[CommentPlugin]] supports the `redirectto` parameter to redirect to a URL or link to TWiki topic after submitting comment. + - The `topic` URL parameter also respects the `{AllowRedirectUrl}` configure flag so redirects to URLs can be disabled which could be abused for phishing attacks. + - The view script supports a `section` URL parameter to view just a named section within a topic. Useful for simple AJAX type applications. + - New plugin handler for content move. + - Enhancements for Ajax based applications with TWiki:Plugins/YahooUserInterfaceContrib and TWiki:Plugins.TWikiAjaxContrib (available at twiki.org). + +- **Search Enhancements** + - METASEARCH handles a format parameter like SEARCH. + - Topic not found / [[WebTopicViewTemplate]] search now case insensitive. + - [[FormattedSearch]] header supporting `$nop`, `$quot`, `$percnt`, `$dollar`. + - Add search by createdate option to SEARCH. + - New newline option for SEARCH to protect e.g. formfields from being altered during rendering in SEARCH. + +- **Skins and Templates Enhancements** + - Support for templates to have text rendering affecting aspect outside of textarea. + - Pattern skin dependence on [[TwistyPlugin]] instead of [[TwistyContrib]] (performance improvement.) + - Don't strip newlines from the front of TMPL:DEFs. + +- **Miscellaneous Feature Enhancements** + - Change in [[WikiWord]] definition: Numbers are treated as lower case letters, e.g. Y2K is now a WikiWord. + - Configurable template load path. Advanced feature for those that work with customized templates. + - Added %VBAR% to [[TWikiPreferences]] for vertical bar symbol. + - On topic creation, force initial letter of topic name to be upper case. + - Allow date format in form fields. + - Enhance REVINFO\{\} variable with same date qualifiers as GMTIME\{\}. + - [[WebTopicCreator]] - adding ability to select a template from any topic name ending in ...Template + - Functionality of DateFieldPlugin merged into core + +- **Enhancements of Pre-installed Plugins** + - [[CommentPlugin]]: Supports removal of comment prompt after a comment is made. + - [[EditTablePlugin]]: Default date format based on [[JSCalendarContrib]] instead of plugin topic. + - [[InterwikiPlugin]]: Supports custom link formats. + - [[SlideShowPlugin]]: Preserves URL parameters in slideshow + - [[SpreadSheetPlugin]]: New functions `$LISTRAND()`, `$LISTSHUFFLE()`, `$LISTTRUNCATE()`. + - [[TablePlugin]]: New attribute `cellborder`. + - [[TablePlugin]]: Highlight the sorted column with custom colors; includes also a general cosmetic update of default colors. + - [[TablePlugin]]: Support for initsort on more than one table. A table with the initsort option is initsorted UNLESS it is sorted by clicking on a column header. If you click on a header of another table all other tables goes back to the default sort defined by initsort or not sorted if no initsort, and the new table is sorted based on the user clicking on a table header. + +- **Bugfixes** + - More than 200 bugs fixed since 4.0.5 + +**_Hall of Fame of TWiki Release 4.1_** + +Although many more people have been involved in creating TWiki-4.1, special thanks go to the most active contributors in the following areas: + +- **Sponsor and facilitator:** TWiki:Main.PeterThoeny +- **Process improvement:** TWiki:Main.KennethLavrsen, TWiki:Main.PeterThoeny, TWiki:Main.SteffenPoulsen, TWiki:Main.CrawfordCurrie +- **Release management:** TWiki:Main.KennethLavrsen +- **Spec, code, testing:** TWiki:Main.CrawfordCurrie, TWiki:Main.ArthurClemens, TWiki:Main.SteffenPoulsen, TWiki:Main.PeterThoeny, TWiki:Main.ThomasWeigert, TWiki:Main.KennethLavrsen, TWiki:Main.SvenDowideit, TWiki:Main.HaraldJoerg, TWiki:Main.MichaelDaum, TWiki:Main.MeredithLesly, TWiki:Main.WillNorris, TWiki:Main.RafaelAlvarez, TWiki:Main.AntonioTerceiro +- **Templates and skins:** TWiki:Main.ArthurClemens, TWiki:Main.MichaelDaum, TWiki:Main.SvenDowideit +- **Documentation:** TWiki:Main.PeterThoeny, TWiki:Main.CrawfordCurrie, TWiki:Main.ArthurClemens, TWiki:Main.SteffenPoulsen, TWiki:Main.KennethLavrsen +- **Translations:** Coordinated by TWiki:Main.AntonioTerceiro + - Chinese: TWiki:Main.CheDong + - Czech: TWiki:Main.IvanKuncl + - Danish: TWiki:Main.SteffenPoulsen + - Dutch: TWiki:Main.ArthurClemens + - French: TWiki:Main.BenVoui + - German: TWiki:Main.AndreUlrich + - Italian: TWiki:Main.MassimoMancini + - Polish: TWiki:Main.ZbigniewKulesza + - Portuguese: TWiki:Main.AntonioTerceiro, TWiki:Main.CarlinhosCecconi + - Russian: TWiki:Main.AndreyTkachenko, TWiki:Main.SergejZnamenskij, TWiki:Main.SergeyJSinx, TWiki:Main.AlexTananaev + - Spanish: TWiki:Main.WillNorris, TWiki:Main.MiguelABayona + - Swedish: TWiki:Main.ErikAman +- **Public relations:** TWiki:Main.PeterThoeny, TWiki:Main.TomTansy +- **TWiki.org wiki champions:** TWiki:Main.PeterThoeny, TWiki:Main.CrawfordCurrie, TWiki:Main.KennethLavrsen, TWiki:Main.SteffenPoulsen, TWiki:Main.ArthurClemens, TWiki:Main.ThomasWeigert, TWiki:Main.MichaelDaum +- **Customer support:** TWiki:Main.PeterThoeny, TWiki:Main.CrawfordCurrie, TWiki:Main.ArthurClemens, TWiki:Main.SteffenPoulsen, TWiki:Main.SteveStark, TWiki:Main.MichaelDaum +- **System administration:** TWiki:Main.SvenDowideit, TWiki:Main.PeterThoeny, TWiki:Main.CrawfordCurrie + +If you find an omission please fix it at TWiki:TWiki.TWikiHistory. For the full list of contributors see [[TWikiContributor]]. + +See more details on the TWiki 4.1 release at [[TWikiReleaseNotes04x01]]. + ## TWiki Release 4.0.0 (Dakar), 01 Feb 2006 @@ -1105,7 +1203,7 @@ See more details at [[TWikiReleaseNotes04x00]] - **07 Jul 2000** - TWiki:Main.PeterThoeny - Added an "Release edit lock" checkbox in preview to let other people edit the topic immediately without the one hour lock. - **07 Jul 2000** - TWiki:Main.PeterThoeny - - Fixed problem of losing carriage returns when editing topics with KDE KFM browser or [[W3M]] browser. + - Fixed problem of losing carriage returns when editing topics with KDE KFM browser or W3M browser. - **21 Jun 2000** - TWiki:Main.PeterThoeny - Fixed problem that a page redirect on some server environments is not working (host name is needed in URL). - **21 Jun 2000** - TWiki:Main.CrisBailiff, TWiki:Main.PeterThoeny @@ -1150,12 +1248,12 @@ See more details at [[TWikiReleaseNotes04x00]] - **10 Jan 2000** - TWiki:Main.PeterThoeny - No more escaping for '%' percent characters. (Number of consecutive '%' entered and displayed is identical.) - **03 Oct 1999** - TWiki:Main.PeterThoeny - - Limit the number of revisions shown at the bottom of the topic. Example %BR% Topic %TOPIC% . \{ ..... [Diffs](http://www.dementia.org/twiki//rdiff/%WEB%/%TOPIC%) r1.10 [>](http://www.dementia.org/twiki//rdiff/%WEB%/%TOPIC%?rev1=1.10&rev2=1.9) [r1.9](http://www.dementia.org/twiki//view/%WEB%/%TOPIC%?rev=1.9) [>](http://www.dementia.org/twiki//rdiff/%WEB%/%TOPIC%?rev1=1.9&rev2=1.8) [r1.8](http://www.dementia.org/twiki//view/%WEB%/%TOPIC%?rev=1.8) [>](http://www.dementia.org/twiki//rdiff/%WEB%/%TOPIC%?rev1=1.8&rev2=1.7) [r1.7](http://www.dementia.org/twiki//view/%WEB%/%TOPIC%?rev=1.7) [>...](http://www.dementia.org/twiki//oops/%WEB%/%TOPIC%?template=oopsrev¶m1=1.10) \} %BR% Additional revisions can be selected by pressing the `>...` link. + - Limit the number of revisions shown at the bottom of the topic. Example %BR% Topic %TOPIC% . \{ ..... [Diffs](http://www.dementia.org/twiki/rdiff/%WEB%/%TOPIC%) r1.10 [>](http://www.dementia.org/twiki/rdiff/%WEB%/%TOPIC%?rev1=1.10&rev2=1.9) [[r1.9|%WEB%/%TOPIC%?rev=1.9]] [>](http://www.dementia.org/twiki/rdiff/%WEB%/%TOPIC%?rev1=1.9&rev2=1.8) [[r1.8|%WEB%/%TOPIC%?rev=1.8]] [>](http://www.dementia.org/twiki/rdiff/%WEB%/%TOPIC%?rev1=1.8&rev2=1.7) [[r1.7|%WEB%/%TOPIC%?rev=1.7]] [>...](http://www.dementia.org/twiki/oops/%WEB%/%TOPIC%?template=oopsrev¶m1=1.10) \} %BR% Additional revisions can be selected by pressing the `>...` link. ## 01-Sep-1999 Release - **31 Aug 1999** - TWiki:Main.PeterThoeny - - Fixed [[Y2K]] bug. (Date in year 2000 had wrong format.) + - Fixed Y2K bug. (Date in year 2000 had wrong format.) - **08 Aug 1999** - TWiki:Main.PeterThoeny - New text formatting rule for creating tables. Text gets rendered as a table if enclosed in " " vertical bars. Example line as it is written and how it shows up - **03 Aug 1999** - TWiki:Main.PeterThoeny @@ -1219,7 +1317,7 @@ See more details at [[TWikiReleaseNotes04x00]] - **24 Sep 1998** - TWiki:Main.PeterThoeny - Corrected templates for automatic e-mail notification so that MS Outlook can display attachment as an HTML file. - **13 Aug 1998** - TWiki:Main.PeterThoeny - - [[WikiNotation]] allows also numbers after the `AaA` sequence, e.g. `AaA1` is a valid [[WikiTopic]] name, but not `Aa1`. + - [[WikiNotation]] allows also numbers after the `AaA` sequence, e.g. `AaA1` is a valid [[TWikiTopics]] name, but not `Aa1`. - **07 Aug 1998** - TWiki:Main.PeterThoeny - Automatic e-mail notification when something has changed in a TWiki web. Each web has a topic [[WebNotify]] where one can subscribe and unsubscribe. - **06 Aug 1998** - TWiki:Main.PeterThoeny diff --git a/TWiki/TWikiI18NExtractDotPm.mdwn b/TWiki/TWikiI18NExtractDotPm.mdwn index 1bfa216..72f413b 100644 --- a/TWiki/TWikiI18NExtractDotPm.mdwn +++ b/TWiki/TWikiI18NExtractDotPm.mdwn @@ -6,7 +6,7 @@ Support translatable strings extraction from TWiki topics and templates. Depends @@ -16,14 +16,8 @@ Support translatable strings extraction from TWiki topics and templates. Depends Constructor. Creates a fresh new Extract object. A $session object, instance of the TWiki class, is optional: if it's available, it'll be used for printing warnings. -## [[ObjectMethod]] **extract** `($msgid) -> $formated` +## [[ObjectMethod]] **extract** `($file,$text)` -This method overrides the one with same name in `Locale::Maketext::Extract`, as a workaround for [a bug](http://rt.cpan.org/Public/Bug/Display.html?id=14629) in the `Locale::Maketext::Lexicon` Perl package, and was not fixed up to the 0.53 release. +Extract the strings from `$text`,m using `$file` as the name of the current file being read (for comments in PO file, for example). Overrides the base class method but calls it so the base behavior is preserved. -What it does is to call an alternative version of the \_format function, which avoids [double-escaping](http://develop.twiki.org/~develop/cgi-bin/view/Bugs/Item1500) the extracted strings. - -This method was tested only under the circumstances of TWiki's needs, i.e., extracting strings from source and topics and generating a brand new POT file. Merging with previous PO files is done with GNU gettext tools, so maybe if it's used for merging it can - -Once that bug is fixed, in future TWiki versions this method may be removed. - -!!!extract!!! +As in base class, extracted strings are just stored in the =$self='s internal table for further use (e.g. creating/updating a PO file). Nothing is returned. diff --git a/TWiki/TWikiInstallationGuide.mdwn b/TWiki/TWikiInstallationGuide.mdwn index 6020772..5f7d300 100644 --- a/TWiki/TWikiInstallationGuide.mdwn +++ b/TWiki/TWikiInstallationGuide.mdwn @@ -29,10 +29,10 @@ TWiki should be fine with any web server and OS that meet the [[system requireme - During installation and configuration, the CGI user needs to be able to read and write _everything_ in the distribution, - Once installation and configuration is complete, the CGI user needs write access to everything under the `data` and `pub` directories and to `lib/LocalSite.cfg`. _Everything else_ should be read-only. - Everybody else should be denied access to everything, always. -4. **Make sure** Perl 5 and the Perl CGI library are installed on your system. %BR% The default location of Perl is `/usr/bin/perl`. **If it's somewhere else**, change the path to Perl in the first line of each script in the `twiki/bin` directory. %BR% %H% Some systems require a special extension on perl scripts (e.g. `.cgi` or `.pl`). If necessary, rename all files in `twiki/bin` (i.e. rename `view` to `view.pl` etc). If you do this, make sure you set the `ScriptSuffix` option in `configure` (Step 6). +4. **Make sure** Perl 5 and the Perl CGI library are installed on your system. %BR% The default location of Perl is `/usr/bin/perl`. **If it's somewhere else**, change the path to Perl in the first line of each script in the `twiki/bin` directory. %BR% %H% Some systems require a special extension on perl scripts (e.g. `.cgi` or `.pl`). If necessary, rename all files in `twiki/bin` (i.e. rename `view` to `view.pl` etc). If you do this, make sure you set the `ScriptSuffix` option in [configure](http://www.dementia.org/twiki/configure) (Step 6). 5. **Create the file** `/twiki/bin/LocalLib.cfg`. %BR% There is a template for this file in `/twiki/bin/LocalLib.cfg.txt`. %BR% The file must contain a setting for `$twikiLibPath`, which must point to the absolute file path of your `twiki/lib` e.g. `/home/httpd/twiki/lib`. %BR% %H% If you need to install additional CPAN modules, but can't update the main Perl installation files on the server, you can set `$CPANBASE` to point to your personal CPAN install. Don't forget that the webserver user has to be able to read those files as well. 6. **Configure the webserver** so you can execute the `bin/configure` script from your browser. - - Explicit instructions for doing this are beyond the scope of this document, though there is a lot of advice on TWiki.org covering different configurations of webserver. To help you out, there's an example Apache `httpd.conf` file in `twiki_httpd_conf.txt` at the root of the package. This file also contains advice on securing your installation. There's also a script called `tools/rewriteshebang.pl` to help you in fixing up the shebang lines in your CGI scripts. + - Explicit instructions for doing this are beyond the scope of this document, though there is a lot of advice on TWiki.org covering different configurations of webserver. To help you out, there's an example Apache `httpd.conf` file in `twiki_httpd_conf.txt` at the root of the package. This file also contains advice on securing your installation. Additionally, see TWiki:TWiki.ApacheConfigGenerator. There's also a script called `tools/rewriteshebang.pl` to help you in fixing up the shebang lines in your CGI scripts. 7. Run the `configure` script from your browser, and resolve any errors or warnings it tells you about. You now have a basic, unauthenticated installation running. At this point you can just point your Web browser at `http://yourdomain.com/twiki/bin/view` and start TWiki-ing away! diff --git a/TWiki/TWikiLogos.mdwn b/TWiki/TWikiLogos.mdwn index 2083aa7..143e658 100644 --- a/TWiki/TWikiLogos.mdwn +++ b/TWiki/TWikiLogos.mdwn @@ -42,7 +42,11 @@ TWiki is shipped with the official TWiki logo in the banner. Site owners may rep If you use the official TWiki.org artwork on your own site you can link back to TWiki.org. Use this HTML (with any logo file on this page): -`This site is powered by the TWiki collaboration platform` +`This site is powered by the TWiki collaboration platform` + +If you create your own TWiki skin you are encouraged to add the small 80x31 pixel TWiki logo at the bottom of your skin: + +`This site is powered by the TWiki collaboration platform` ## Right to use Trademarked Artwork diff --git a/TWiki/TWikiMetaData.mdwn b/TWiki/TWikiMetaData.mdwn index ba79b8e..0b448c6 100644 --- a/TWiki/TWikiMetaData.mdwn +++ b/TWiki/TWikiMetaData.mdwn @@ -127,7 +127,7 @@ Notes: name - The topic from which this was created, [[Main/WebHome]] if done from Go, othewise topic where ? or form used. Normally just topic, but is full web.topic format if parent is in a different Web. Renaming a Web will then only break a few of these references or they can be scanned and fixed. + The topic from which this was created, typically when clicking on a ? questionmark link, or by filling out a form. Normally just TopicName, but it can be a full Web.TopicName format if the parent is in a different Web. @@ -291,8 +291,12 @@ Current support covers: +**_Note:_** SEARCH can also be used to render meta data, see examples in [[FormattedSearch]] and [[SearchPatternCookbook]]. + ## Known Issues At present, there is no Meta Data support for Plugins. However, the format is readily extendable and the `Meta.pm` code that supports the format needs only minor alteration. **_Related Topics:_** [[DeveloperDocumentationCategory]], [[UserDocumentationCategory]] + +-- **_Contributors:_** TWiki:Main.JohnTalintyre, TWiki:Main.MikeMannix, TWiki:Main.PeterThoeny, TWiki:Main.CrawfordCurrie diff --git a/TWiki/TWikiMetaDotPm.mdwn b/TWiki/TWikiMetaDotPm.mdwn index 7436da1..7065634 100644 --- a/TWiki/TWikiMetaDotPm.mdwn +++ b/TWiki/TWikiMetaDotPm.mdwn @@ -106,7 +106,7 @@ If $type is undef, will copy ALL TYPES. If $nameFilter is defined (an RE), it will copy only data where \{name\} matches $nameFilter. -SMELL: That spec absolutely _STINKS_ !! SMELL: this is a shallow copy +SMELL: This is a shallow copy ## [[ObjectMethod]] **count** `($type) -> $integer` diff --git a/TWiki/TWikiNetDotPm.mdwn b/TWiki/TWikiNetDotPm.mdwn index 609faee..bac816a 100644 --- a/TWiki/TWikiNetDotPm.mdwn +++ b/TWiki/TWikiNetDotPm.mdwn @@ -5,7 +5,7 @@ Object that brokers access to network resources. -## [[ObjectMethod]] **getUrl** `($host,$port,$url,$user,$pass,$header) -> $text` +## [[ObjectMethod]] **getUrl** `($protocol,$host,$port,$url,$user,$pass) -> $text` Get the text at the other end of a URL diff --git a/TWiki/TWikiOopsExceptionDotPm.mdwn b/TWiki/TWikiOopsExceptionDotPm.mdwn index a813736..0ed07b5 100644 --- a/TWiki/TWikiOopsExceptionDotPm.mdwn +++ b/TWiki/TWikiOopsExceptionDotPm.mdwn @@ -8,7 +8,7 @@ Exception used to raise a request to redirect to an Oops URL. An [[OopsException @@ -26,6 +26,6 @@ The remaining parameters are interpreted as key-value pairs. The following keys - `keep` - if set, the exception handler should try it's damndest to retain parameter values from the query. - `params` is a reference to an array of parameters. These will be substituted for %PARAM1%, %PARAM2% ... %PARAMn% in the template. -## [[ObjectMethod]] **stringify** `() -> $string` +## [[ObjectMethod]] **stringify** `([$session]) -> $string` -Generates a string representation for the object, mainly for debugging. +Generates a string representation for the object. if a session is passed in, and the excpetion specifies a def, then that def is expanded. This is to allow internal expansion of oops exceptions for example when performing bulk operations. diff --git a/TWiki/TWikiPlugins.mdwn b/TWiki/TWikiPlugins.mdwn index 46e6c98..2579c65 100644 --- a/TWiki/TWikiPlugins.mdwn +++ b/TWiki/TWikiPlugins.mdwn @@ -68,7 +68,15 @@ Everything to do with TWiki Plugins - demos, new releases, downloads, developmen TWiki Plugins are developed and contributed by interested members of the community. Plugins are provided on an 'as is' basis; they are not a part of TWiki, but are independently developed and maintained. -**_%T% Tip:_** TWiki:TWiki.TWikiPluginsSupplement on TWiki.org has supplemental documentation on TWiki Plugins. +**_Relevant links on TWiki.org:_** + +- TWiki:TWiki.TWikiPluginsSupplement - **_%T% tip:_** supplemental documentation on TWiki plugins +- TWiki:Plugins.PluginPackage - list of all contributed plugin packages +- TWiki:Plugins.PluginDevelopment - discussion and feedback on contributed plugins +- TWiki:Plugins.PluginBrainstorming - open forum for new plugin ideas +- TWiki:Plugins.PluginPackageHowTo - template to create a new plugin package + +**_See other types of extensions:_** [[TWikiAddOns]], [[TWikiContribs]], [[TWikiSkins]] @@ -92,7 +100,11 @@ The recommended approach to testing new Plugins before making them public is to The performance of the system depends to some extent on the number of Plugins installed and on the Plugin implementation. Some Plugins impose no measurable performance decrease, some do. For example, a Plugin might use many Perl libraries that need to be initialized with each page view (unless you run mod\_perl). You can only really tell the performance impact by installing the Plugin and by measuring the performance with and without the new Plugin. Use the TWiki:Plugins.PluginBenchmarkAddOn, or test manually with the Apache `ab` utility. Example on Unix:%BR% `time wget -qO /dev/null http://www.dementia.org/twiki/view/TWiki/AbcPlugin` -%T% If you need to install an "expensive" Plugin, and you need its functionality only in one web, you can place the Plugin topic into that web. TWiki will initialize the Plugin only if the Plugin topic is found (which won't be the case for other webs.) +%T% If you need to install an "expensive" Plugin, but you only need its functionality only in a subset of your data, you can disable it elsewhere by defining the %DISABLEDPLUGINS% TWiki variable. + +Define `DISABLEDPLUGINS` to be a comma-separated list of names of plugins to disable. Define it in Main.TWikiPreferences to disable those plugins everywhere, in the WebPreferences topic to disable them in an individual web, or in a topic to disable them in that topic. For example, + + * Set DISABLEDPLUGINS = SpreadSheetPlugin, EditTablePlugin @@ -110,14 +122,11 @@ By default, TWiki executes Plugins in alphabetical order on Plugin name. It is p ### Plugin-Specific Settings -Plugin-specific settings are done in individual Plugin topics. Two settings are standard for each Plugin: +Plugins are usually configured by variables accessible though the [configure](http://www.dementia.org/twiki/configure) interface, but in some cases (usually older plugins) TWiki preferences are used. If a TWiki variable is defined in a Plugin topic e.g: -1. One line description, used to form the bullets describing the Plugins in the [[TextFormattingRules]] topic: - - `Set SHORTDESCRIPTION = Create dynamic foo bar reports` -2. Debug Plugin, output can be seen in `data/debug.txt`. Set to 0=off or 1=on: - - `Set DEBUG = 0` +- Set SETTING = Create dynamic foo bar reports -- The settings can be retrieved as Preferences variables like `%_%`. For example, `%DEFAULTPLUGIN_SHORTDESCRIPTION%` shows the description of the DefaultPlugin. +Then these settings can be retrieved as preferences variables like `%_%`. For example, `%RUBBERPLUGIN_SETTING%` shows the value of SETTING in the RubberPlugin topic. ### Listing Active Plugins @@ -404,7 +413,7 @@ You can create a Plugin "work area" using the `TWiki::Func::getWorkArea()` funct ### Web Accessible Data -**_Topic-specific data_** such as generated images can be stored in the topics attachment area, which is web accessible. Use the `TWiki::Func::saveAttachment()` function to store the data. +**_Topic-specific data_** such as generated images can be stored in the topic's attachment area, which is web accessible. Use the `TWiki::Func::saveAttachment()` function to store the data. Recommendation for file name: diff --git a/TWiki/TWikiPluginsDotPm.mdwn b/TWiki/TWikiPluginsDotPm.mdwn index 411f232..ff40fb5 100644 --- a/TWiki/TWikiPluginsDotPm.mdwn +++ b/TWiki/TWikiPluginsDotPm.mdwn @@ -11,6 +11,7 @@ This class uses Chain of Responsibility (GOF) pattern to dispatch handler calls
      • PUBLIC $SESSION
      • ClassMethod new ($session)
      • ObjectMethod load ($allDisabled) -> $loginName
      • +
      • ObjectMethod settings ()
      • ObjectMethod enable ()
      • ObjectMethod getPluginVersion () -> $number
      • ObjectMethod addListener ($command,$handler)
      • @@ -19,35 +20,53 @@ This class uses Chain of Responsibility (GOF) pattern to dispatch handler calls
      • ObjectMethod beforeCommonTagsHandler ()
      • ObjectMethod commonTagsHandler ()
      • ObjectMethod afterCommonTagsHandler ()
      • -
      • ObjectMethd preRenderingHandler( $text, \%map )
      • +
      • ObjectMethod preRenderingHandler ($text,\%map)
      • +
      • ObjectMethod postRenderingHandler (\$text)
      • +
      • ObjectMethod startRenderingHandler ()
      • +
      • ObjectMethod outsidePREHandler ()
      • +
      • ObjectMethod insidePREHandler ()
      • +
      • ObjectMethod endRenderingHandler ()
      • +
      • ObjectMethod beforeEditHandler ()
      • +
      • ObjectMethod afterEditHandler ()
      • +
      • ObjectMethod beforeSaveHandler ()
      • +
      • ObjectMethod afterSaveHandler ()
      • +
      • ObjectMethod afterRenameHandler ($oldWeb,$oldTopic,$oldAttachment,$newWeb,$newTopic,$newAttachment)
      • +
      • ObjectMethod mergeHandler ()
      • +
      • ObjectMethod beforeAttachmentSaveHandler ($attrHashRef,$topic,$web)
      • +
      • ObjectMethod afterAttachmentSaveHandler ($attachmentAttrHash,$topic,$web,$error)
      • +
      • ObjectMethod writeHeaderHandler () -> $headers
      • +
      • ObjectMethod modifyHeaderHandler (\@headers,$query)
      • +
      • ObjectMethod redirectCgiQueryHandler () -> $result
      • +
      • ObjectMethod renderFormFieldForEditHandler ($name,$type,$size,$value,$attributes,$possibleValues) -> $html
      • +
      • ObjectMethod renderWikiWordHandler () -> $result
    -Note that as of version 1.026 of this module, TWiki internal methods are _no longer available_ to plugins. Any calls to TWiki internal methods must be replaced by calls via the $SESSION object in this package, or via the Func package. For example, the call: +Note that as of version 1.026 of this module, TWiki internal methods are _no longer available_ to plugins. Any calls to TWiki internal methods must be replaced by calls via the `$SESSION` object in this package, or via the Func package. For example, the call: -my $pref = TWiki::getPreferencesValue('URGH'); +`my $pref = TWiki::getPreferencesValue('URGH');` should be replaced with -my $pref = TWiki::Func::getPreferencesValue('URGH'); +`my $pref = TWiki::Func::getPreferencesValue('URGH');` and the call -my $t = TWiki::writeWarning($message); +`my $t = TWiki::writeWarning($message);` should be replaced with -my $pref = $TWiki::Plugins::SESSION->writeWarning($message); +`my $pref = $TWiki::Plugins::SESSION->writeWarning($message);` Methods in other modules such as Store must be accessed through the relevant TWiki sub-object, for example -TWiki::Store::saveTopic(...) +`TWiki::Store::saveTopic(...)` should be replaced with -$TWiki::Plugins::SESSION->\{store\}->saveTopic(...) +`$TWiki::Plugins::SESSION->{store}->saveTopic(...)` Note that calling TWiki internal methods is very very bad practice, and should be avoided wherever practical. @@ -75,6 +94,10 @@ Returns the user returned by the last `initializeUserHandler` to be called. If allDisabled is set, no plugin handlers will be called. +## [[ObjectMethod]] **settings** `()` + +Push plugin settings onto preference stack + ## [[ObjectMethod]] **enable** `()` Initialisation that is done after the user is known. @@ -112,7 +135,7 @@ Called after %INCLUDE:"..."% Called at the end (for cache Plugins only) -## [[ObjectMethd]] preRenderingHandler( $text, \\%map ) +## [[ObjectMethod]] \*preRenderingHandler `($text,\%map)` - `$text` - the text, with the head, verbatim and pre blocks replaced with placeholders - `\%removed` - reference to a hash that maps the placeholders to the removed blocks. @@ -130,148 +153,174 @@ Each removed block is represented by the block text and the parameters passed to $removed->{'pre1'}{params}: class="slobadob" - Iterating over blocks for a single tag is easy. For example, to prepend a line number to every line of a pre block you might use this code: +Iterating over blocks for a single tag is easy. For example, to prepend a line number to every line of a pre block you might use this code: - foreach my $placeholder ( keys %$map ) { - if( $placeholder =~ /^pre/i ) { - my $n = 1; - $map->{$placeholder}{text} =~ s/^/$n++/gem; - } - } +foreach my $placeholder ( keys %$map ) \{ if( $placeholder =~ /^pre/i ) \{ my $n = 1; $map->\{$placeholder\}\{text\} =~ s/^/$n++/gem; \} \} - ---++ ObjectMethod *postRenderingHandler* (\$text) +## [[ObjectMethod]] \*postRenderingHandler `(\$text)` - * =\$text= - a reference to the HTML, with the head, verbatim and pre blocks replaced with placeholders +- `\$text` - a reference to the HTML, with the head, verbatim and pre blocks replaced with placeholders - ---++ ObjectMethod *startRenderingHandler* () +## [[ObjectMethod]] \*startRenderingHandler `()` - Called just before the line loop +Called just before the line loop - *DEPRECATED* Use preRenderingHandler instead. This handler correctly - handles verbatim and other TWiki ML block types, and exposes them to - the plugin. +**DEPRECATED** Use preRenderingHandler instead. This handler correctly handles verbatim and other TWiki ML block types, and exposes them to the plugin. - ---++ ObjectMethod *outsidePREHandler* () +## [[ObjectMethod]] \*outsidePREHandler `()` - Called in line loop outside of <PRE> tag +Called in line loop outside of <PRE> tag - *DEPRECATED* Use preRenderingHandler instead. - This handler correctly handles pre and other - TWiki ML block types, and is called only once - instead of line-by-line. +**DEPRECATED** Use preRenderingHandler instead. This handler correctly handles pre and other TWiki ML block types, and is called only once instead of line-by-line. - ---++ ObjectMethod *insidePREHandler* () +## [[ObjectMethod]] **insidePREHandler** `()` - Called in line loop inside of <PRE> tag +Called in line loop inside of <PRE> tag - *DEPRECATED* Use preRenderingHandler instead. - This handler correctly handles pre and other - TWiki ML block types, and is called only once - instead of line-by-line. +**DEPRECATED** Use preRenderingHandler instead. This handler correctly handles pre and other TWiki ML block types, and is called only once instead of line-by-line. - ---++ ObjectMethod *endRenderingHandler* () +## [[ObjectMethod]] \*endRenderingHandler `()` - Called just after the line loop +Called just after the line loop - *DEPRECATED* Use postRenderingHandler instead. +**DEPRECATED** Use postRenderingHandler instead. - ---++ ObjectMethod *beforeEditHandler* () +## [[ObjectMethod]] \*beforeEditHandler `()` - Called by edit +Called by edit - ---++ ObjectMethod *afterEditHandler* () +## [[ObjectMethod]] \*afterEditHandler `()` - Called by edit +Called by edit - ---++ ObjectMethod *beforeSaveHandler* () +## [[ObjectMethod]] \*beforeSaveHandler `()` - Called just before the save action +Called just before the save action - ---++ ObjectMethod *afterSaveHandler* () +## [[ObjectMethod]] \*afterSaveHandler `()` - Called just after the save action +Called just after the save action - ---++ ObjectMethod *mergeHandler* () +## [[ObjectMethod]] \*afterRenameHandler `($oldWeb,$oldTopic,$oldAttachment,$newWeb,$newTopic,$newAttachment)` - Called to handle text merge. +Called just after the rename/move/delete action of a web, topic or attachment. - ---++ ObjectMethod *beforeAttachmentSaveHandler* ($attrHashRef,$topic,$web) +- `$oldWeb` - name of old web +- `$oldTopic` - name of old topic (empty string if web rename) +- `$oldAttachment` - name of old attachment (empty string if web or topic rename) +- `$newWeb` - name of new web +- `$newTopic` - name of new topic (empty string if web rename) +- `$newAttachment` - name of new attachment (empty string if web or topic rename) - This code provides Plugins with the opportunity to alter an uploaded attachment between the upload and save-to-store processes. It is invoked as per other Plugins. - * =$attrHashRef= - Hash reference of attachment attributes (keys are indicated below) - * =$topic= - | Topic name - * =$web= - | Web name +## [[ObjectMethod]] **mergeHandler** `()` - Keys in $attrHashRef: - | *Key* | *Value* | - | attachment | Name of the attachment | - | tmpFilename | Name of the local file that stores the upload | - | comment | Comment to be associated with the upload | - | user | Login name of the person submitting the attachment, e.g. 'jsmith' | +Called to handle text merge. - Note: All keys should be used read-only, except for comment which can be modified. +## [[ObjectMethod]] \*beforeAttachmentSaveHandler `($attrHashRef,$topic,$web)` - Example usage: +This code provides Plugins with the opportunity to alter an uploaded attachment between the upload and save-to-store processes. It is invoked as per other Plugins. + +- `$attrHashRef` - Hash reference of attachment attributes (keys are indicated below) +- `$topic` - | Topic name +- `$web` - | Web name + +Keys in $attrHashRef: + + + + + + + + + + + + + + + + + + + + + + +
    Key Value
    attachment Name of the attachment
    tmpFilename Name of the local file that stores the upload
    comment Comment to be associated with the upload
    user Login name of the person submitting the attachment, e.g. 'jsmith'
    + +Note: All keys should be used read-only, except for comment which can be modified. + +Example usage: -
            my( $attrHashRef, $topic, $web ) = @_;
            $$attrHashRef{'comment'} .= " (NOTE: Extracted from blah.tar.gz)";
    -    
    - ---++ ObjectMethod *afterAttachmentSaveHandler* ($attachmentAttrHash,$topic,$web,$error) +## [[ObjectMethod]] \*afterAttachmentSaveHandler `($attachmentAttrHash,$topic,$web,$error)` + +deal with an uploaded attachment between the upload and save-to-store processes. It is invoked as per other plugins. + +- `$attrHashRef` - Hash reference of attachment attributes (keys are indicated below) +- `$topic` - | Topic name +- `$web` - | Web name +- `$error` - | Error string of save action, empty if OK + +Keys in $attrHashRef: - deal with an uploaded attachment between the upload and save-to-store processes. It is invoked as per other plugins. + + + + + + + + + + + + + + + + + + + + + +
    Key Value
    attachment Name of the attachment
    tmpFilename Name of the local file that stores the upload
    comment Comment to be associated with the upload
    user Login name of the person submitting the attachment, e.g. 'jsmith'
    - * =$attrHashRef= - Hash reference of attachment attributes (keys are indicated below) - * =$topic= - | Topic name - * =$web= - | Web name - * =$error= - | Error string of save action, empty if OK +Note: The hash is **read-only** - Keys in $attrHashRef: - | *Key* | *Value* | - | attachment | Name of the attachment | - | tmpFilename | Name of the local file that stores the upload | - | comment | Comment to be associated with the upload | - | user | Login name of the person submitting the attachment, e.g. 'jsmith' | +## [[ObjectMethod]] \*writeHeaderHandler `() -> $headers` - Note: The hash is *read-only* +Called by TWiki::writePageHeader. **DEPRECATED** do not use! - ---++ ObjectMethod *writeHeaderHandler* () -> $headers +**DEPRECATED** Use modifyHeaderHandler instead. it is a lot more flexible, and allows you to modify existing headers as well as add new ones. It also works correctly when multiple plugins want to modify headers. - Called by TWiki::writePageHeader. *DEPRECATED* do not use! +## [[ObjectMethod]] \*modifyHeaderHandler `(\@headers,$query)` - *DEPRECATED* Use modifyHeaderHandler instead. it is a lot - more flexible, and allows you to modify existing headers - as well as add new ones. It also works correctly when - multiple plugins want to modify headers. +## [[ObjectMethod]] \*redirectCgiQueryHandler `() -> $result` - ---++ ObjectMethod *modifyHeaderHandler* (\@headers,$query) +Called by TWiki::redirect - ---++ ObjectMethod *redirectCgiQueryHandler* () -> $result +## [[ObjectMethod]] \*renderFormFieldForEditHandler `($name,$type,$size,$value,$attributes,$possibleValues) -> $html` - Called by TWiki::redirect +This handler is called before built-in types are considered. It generates the HTML text rendering this form field, or false, if the rendering should be done by the built-in type handlers. - ---++ ObjectMethod *renderFormFieldForEditHandler* ($name,$type,$size,$value,$attributes,$possibleValues) -> $html +- `$name` - name of form field +- `$type` - type of form field +- `$size` - size of form field +- `$value` - value held in the form field +- `$attributes` - attributes of form field +- `$possibleValues` - the values defined as options for form field, if any. May be a scalar (one legal value) or an array (several legal values) - This handler is called before built-in types are considered. It generates the HTML text rendering this form field, or false, if the rendering should be done by the built-in type handlers. - * =$name= - name of form field - * =$type= - type of form field - * =$size= - size of form field - * =$value= - value held in the form field - * =$attributes= - attributes of form field - * =$possibleValues= - the values defined as options for form field, if any. May be a scalar (one legal value) or an array (several legal values) - Return HTML text that renders this field. If false, form rendering continues by considering the built-in types. +Return HTML text that renders this field. If false, form rendering continues by considering the built-in types. - Note that a common application would be to generate formatting of the - field involving generation of javascript. Such usually also requires - the insertion of some common javascript into the page header. Unfortunately, - there is currently no mechanism to pass that script to where the header of - the page is visible. Consequentially, the common javascript may have to - be emitted as part of the field formatting and might be duplicated many - times throughout the page. +Note that a common application would be to generate formatting of the field involving generation of javascript. Such usually also requires the insertion of some common javascript into the page header. Unfortunately, there is currently no mechanism to pass that script to where the header of the page is visible. Consequentially, the common javascript may have to be emitted as part of the field formatting and might be duplicated many times throughout the page. - ---++ ObjectMethod *renderWikiWordHandler* () -> $result +## [[ObjectMethod]] \*renderWikiWordHandler `() -> $result` - Change how a WikiWord is rendered +Change how a [[WikiWord]] is rendered - Originated from the TWiki:Plugins.SpacedWikiWordPlugin hack +Originated from the TWiki:Plugins.SpacedWikiWordPlugin hack diff --git a/TWiki/TWikiPreferences.mdwn b/TWiki/TWikiPreferences.mdwn index 533c7ea..1be1b23 100644 --- a/TWiki/TWikiPreferences.mdwn +++ b/TWiki/TWikiPreferences.mdwn @@ -4,7 +4,7 @@

    %WIKITOOLNAME% Site-Level Preferences

    This topic defines site-level settings that apply to all users and webs on this [[Main/TWikiSite]].

    %X% Note: This topic should be regarded as read-only, so that upgrades can safely overwrite it without risk to your customizations.

    -

    Preference settings local to your site should be set in [[Main/TWikiPreferences]] (this topic is pointed to by {LocalSitePreferences}, which is set by the admin in the configure interface). Settings in [[Main/TWikiPreferences]] will override settings in this topic, and should be used for defining custom settings and variables.

    +

    Preference settings local to your site should be set in [[Main/TWikiPreferences]] (this topic is pointed to by {LocalSitePreferences}, which is set by the admin in the configure interface). Settings in [[Main/TWikiPreferences]] will override settings in this topic, and should be used for defining custom settings and variables.

    [[Main/TWikiVariables#PreferencesVariables]] on how to set Preferences Variables.

    (Click for form-based editing of existing preferences.)
    @@ -134,6 +134,10 @@
    • Some skins have two editors available; the default editor, and a second editor which is usually a WYSIWYG editor (the second editor is used by hitting the WYSIWYG link in pattern or classic skins). If COMPOSER is not set, the second editor will work the same as the default editor. If the WysiwygPlugin is installed and it is set to 'kupu' (the default), then the Kupu WYSIWYG editor will be enabled. You can change the setting to use any editor that is enabled by setting the cover parameter on the edit URL.
      • Set COMPOSER = kupu
      • +
      • Enable content checks before editing
      • +
      • Set WYSWIYGPLUGIN_WYSIWYGSKIN = kupu
      • +
      • Disable WYSIWYG on pages that contain complex TML. On pages that have complex TML, WYSIWYG will fall back to the default text editor.
      • +
      • Set WYSIWYG_EXCLUDE = calls
    @@ -199,11 +203,11 @@
    • Format of images when the link check box is checked: (can be overwritten by user preferences)
      • %H% NOTE: Keyword $name gets expanded to filename; $comment to comment; $size to width="..." height="..." attribute of img tag; \t to tab and \n to linefeed (3 spaces for bullets).
      • -
      • Set ATTACHEDIMAGEFORMAT = \n * $comment:
        \n $name
    • -
    -

    +

    +      * Set ATTACHEDIMAGEFORMAT = \n   * $comment: <br />\n     <img src="%ATTACHURLPATH%/$name" alt="$name" $size />
    +

    TWiki Platform Settings

    @@ -303,22 +307,6 @@

    -

    -

    -
      -
    • TWiki administrator name (first name and last name, e.g. Fred Smith):
        -
      • Set WIKIWEBMASTERNAME = TWiki Administrator
      • -
      -
    • -
    -

    -

    -
    • 'Mail this topic' mailto: link - can be included in topics, templates or skins @@ -399,19 +387,24 @@ ### Legacy support - Support for legacy "EDITTOPIC", used to be hard-coded, now replaced by TMPL:P conditional instantiation - - Set EDITURL = + - Set EDITURL = - Set EDITTOPIC = [Edit](%EDITURL% Edit Topic - deprecated usage - please see release notes) ## Plugins Settings - You can enable/disable Plugins using the [configure](http://www.dementia.org/twiki/configure) interface. +- You can also disable installed plugins in individual webs/topics by defining the %DISABLEDPLUGINS% TWiki variable to be a list of plugins to disable e.g. + - Set DISABLEDPLUGINS = [[SpreadSheetPlugin]],EditTablePlugin + - Currently, %DISABLEDPLUGINS% is set to "%DISABLEDPLUGINS%" - Currently activated Plugins: [[SpreadSheetPlugin]], [[CommentPlugin]], [[EditTablePlugin]], [[InterwikiPlugin]], [[PreferencesPlugin]], [[SlideShowPlugin]], [[SmiliesPlugin]], [[TablePlugin]], [[TwistyPlugin]] + - %T% **NOTE:** You can enable/disable Plugins by passing a comma-separated list of Plugin names in the `debugenableplugins` url parameter; for example, [[http://www.dementia.org/twiki/view/%WEB%/%TOPIC%?debugenableplugins=SmiliesPlugin|%WEB%/%TOPIC%?debugenableplugins=SmiliesPlugin]] will display this topic with all Plugins disabled except the [[SmiliesPlugin]]. - Detailed diagnostics can be found in [[InstalledPlugins]] - Legacy settings: - - Set DISABLEDPLUGINS = The DISABLEDPLUGINS variable is no longer supported - Set INSTALLEDPLUGINS = The INSTALLEDPLUGINS variable is no longer supported. You can set the Plugins execution order using the [configure](http://www.dementia.org/twiki/configure) interface. + + ## Rendering Shortcuts Settings - Line break: @@ -420,12 +413,32 @@ - Bullet sign: - Set BULLET = • +- Vertical bar / pipe symbol: + - Set VBAR = | + - Line break and bullet with different levels of indentation: - Set BB =
      • - Set BB2 =
        • - Set BB3 =
          • - Set BB4 =
            • +- **_Hint:_** Above shortcuts are useful in TWiki tables where you cannot use newlines + + + +- Graphics used in TWiki documentation - view all images in %ICONTOPIC%. _(There are various ways to set up common icons as text variables. This is simply one quick approach.)_: + - Set H = HELP + - Set I = IDEA! + - Set M = MOVED TO... + - Set N = NEW + - Set P = REFACTOR + - Set Q = QUESTION? + - Set S = PICK + - Set T = TIP + - Set U = UPDATED + - Set X = ALERT! + - Set Y = DONE + - Colored text: (see more [[StandardColors]]) @@ -477,37 +490,28 @@ * Set WHITE = * Set ENDCOLOR = - - -- Graphics used in TWiki documentation - view all images in %ICONTOPIC%. _(There are various ways to set up common icons as text variables. This is simply one quick approach.)_: - - Set H = HELP - - Set I = IDEA! - - Set M = MOVED TO... - - Set N = NEW - - Set P = REFACTOR - - Set Q = QUESTION? - - Set S = PICK - - Set T = TIP - - Set U = UPDATED - - Set X = ALERT! - - Set Y = DONE - ## Miscellaneous Settings -- Background color of non existing topic: ( default `cornsilk` or `#FFFFCE` ) - - Set NEWTOPICBGCOLOR = #FFFFCE - -- Font color of non existing topic: ( default `#0000FF` ) - - Set NEWTOPICFONTCOLOR = #0000FF +- Format of a [[NewWikiWord]] link: %BR% + - default setting: + - Set NEWLINKFORMAT = $text[?](http://www.dementia.org/twiki/edit/$web/$topic?topicparent=%WEB%.%TOPIC% Create this topic) + - alternative setting: + - #Set NEWLINKFORMAT = [$text](http://www.dementia.org/twiki/edit/$web/$topic?topicparent=%WEB%.%TOPIC% Create this topic) - [[PreviewBackground]] image: - Set PREVIEWBGIMAGE = ![preview2bg.gif](http://www.dementia.org/twiki//view/TWiki/PreviewBackground/preview2bg.gif) +- User-friendly synonyms for MAINWEB and TWIKIWEB + - Set USERSWEB = Main + - Set SYSTEMWEB = TWiki + - Set DOCWEB = TWiki + ## Access Control Settings - Users or groups allowed to change or rename this %TOPIC% topic: - Set ALLOWTOPICCHANGE = [[TWikiAdminGroup]] - - Set ALLOWTOPICRENAME = [[TWikiAdminGroup]] +- By default, only admins can create webs in the root + - Set ALLOWROOTCHANGE = [[TWikiAdminGroup]] ## Creating New Preference Variables diff --git a/TWiki/TWikiPrefsDotPm.mdwn b/TWiki/TWikiPrefsDotPm.mdwn index 872d5a5..b7fd12c 100644 --- a/TWiki/TWikiPrefsDotPm.mdwn +++ b/TWiki/TWikiPrefsDotPm.mdwn @@ -11,9 +11,9 @@ The module also maintains a separate of the preferences found in every topic and
    • Package TWiki::Prefs
      • ClassMethod new ($session[,$cache])
      • ObjectMethod finish
      • -
      • ObjectMethod pushGlobalPreferences ()
      • ObjectMethod pushPreferences ($web,$topic,$type)
      • ObjectMethod pushWebPreferences ($web)
      • +
      • ObjectMethod pushGlobalPreferences ()
      • ObjectMethod pushPreferencesValues ($type,\%values)
      • ObjectMethod mark ()
      • ObjectMethod resetTo ($mark)
      • @@ -38,10 +38,6 @@ Complete processing after the client's HTTP request has been responded to. 1. breaking circular references to allow garbage collection in persistent environments -## [[ObjectMethod]] \*pushGlobalPreferences `()` - -Add global preferences to this preferences stack. - ## [[ObjectMethod]] **pushPreferences** `($web,$topic,$type)` - `$web` - web to read from @@ -55,6 +51,10 @@ Reads preferences from the given topic, and pushes them onto the preferences sta Pushes web preferences. Web preferences for a particular web depend on the preferences of all containing webs. +## [[ObjectMethod]] \*pushGlobalPreferences `()` + +Add global preferences to this preferences stack. + ## [[ObjectMethod]] \*pushPreferencesValues `($type,\%values)` Push a new preference level using type and values given diff --git a/TWiki/TWikiReferenceManual.mdwn b/TWiki/TWikiReferenceManual.mdwn index 07918e6..7b83165 100644 --- a/TWiki/TWikiReferenceManual.mdwn +++ b/TWiki/TWikiReferenceManual.mdwn @@ -4,7 +4,7 @@ _Documentation for webmasters, system administrators, project managers, team lea All manual sections in one big page: -- [[TWiki Documentation|Main/TWikiDocumentation]] (960k) +- [[TWiki Documentation|Main/TWikiDocumentation]] (1MB size, 175 printed pages) Manual sections in separate pages: @@ -21,13 +21,15 @@ Manual sections in separate pages: 11. [[TWiki Templates|Main/TWikiTemplates]] 12. [[TWiki Skins (visual layout)|Main/TWikiSkins]] 13. [[TWiki MetaData|Main/TWikiMetaData]] -14. [[TWiki Plugins|Main/TWikiPlugins]] -15. [[TWiki::Func Module|Main/TWikiFuncDotPm]] -16. [[TWiki CGI and Command Line Scripts|Main/TWikiScripts]] -17. [[TWiki Site Tools|Main/TWikiSiteTools]] -18. [[Managing Topics|Main/ManagingTopics]] -19. [[Managing Webs|Main/ManagingWebs]] -20. [[Managing Users|Main/ManagingUsers]] +14. [[TWiki Add-Ons|Main/TWikiAddOns]] +15. [[TWiki Contribs|Main/TWikiContribs]] +16. [[TWiki Plugins|Main/TWikiPlugins]] +17. [[TWiki::Func Module|Main/TWikiFuncDotPm]] +18. [[TWiki CGI and Command Line Scripts|Main/TWikiScripts]] +19. [[TWiki Site Tools|Main/TWikiSiteTools]] +20. [[Managing Topics|Main/ManagingTopics]] +21. [[Managing Webs|Main/ManagingWebs]] +22. [[Managing Users|Main/ManagingUsers]] - **Appendices** - [[A: TWiki Development Timeline|Main/TWikiHistory]] @@ -39,5 +41,6 @@ Manual sections in separate pages: - TWiki:TWiki.TWikiAdminCookBook: Some tips that can be applied **before installation** - [[InstantEnhancements]]: Simple tips (using just browser, no install needed) and quick (max couple of minutes). - [[AdminToolsCategory]]: Topics an admin typically needs, all in one page +- [[TWikiDocGraphics]]: Collection of useful icons for TWiki applications **_Related Topics:_** [[UserDocumentationCategory]], [[AdminDocumentationCategory]], [[DeveloperDocumentationCategory]] diff --git a/TWiki/TWikiRegistration.mdwn b/TWiki/TWikiRegistration.mdwn index 8394afc..7cb66bd 100644 --- a/TWiki/TWikiRegistration.mdwn +++ b/TWiki/TWikiRegistration.mdwn @@ -1,223 +1,224 @@ # Registration -To edit pages on this [[TWikiSite]], you must have a registered user name and password. +**To edit pages on this [[TWikiSite]], you must have a registered user name and password.** %H% **Note:** Registered users can [[change|TWiki/ChangePassword]] and [[reset|TWiki/ResetPassword]] their passwords. -To register as a new user, simply fill out this form: - **Important:** the information provided in this form will be stored in a database on the TWiki server. This database is accessible to anyone who can access the server through the web (though passwords will be encrypted, and e-mail addresses will be obfusticated to help prevent spamming). Your country, or the country where the server is hosted, may have Data Protection laws governing the maintenance of such databases. If you are in doubt, you should contact [](mailto:?subject=Data%20Protection%20Policy) for details of the Data Protection Policy of this TWiki server before registering. +
        +
        +
        To register as a new user, simply fill out this form:
        +
        +
    • You type:
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Fields marked ** are required
      First Name: **
      Last Name: **
      (identifies you to others) [[Main/WikiName]]: **
      +

      +

      +
      E-mail address: **
      %BESPOKE_PASSWORD%
      Organisation name:
      Organisation URL:
      Country: **
      Comments:
      (optional)
      + +
      +
    +
    When %WIKITOOLNAME% receives the form, it will mail an account activation code to the e-mail address you gave above. Enter that activation code in the following screen, or follow the link in the e-mail, to activate your account. Once your account is activated, %WIKITOOLNAME% will:
      +
    • Finish creating an account for you, so that you can start editing pages using your [[Main/WikiName]].
    • +
    • Create your personal %WIKITOOLNAME% topic using your [[Main/WikiName]] as topic name, and add the data you submitted to the topic.
    • +
    • Add your name to the list of users in the [[Main/TWikiUsers]] topic in the Main web.
    • +
    • Send you a confirmation of your registration by e-mail.
    • +
    Once registered you can login using your %LOGIN_METHOD_IN_THIS_SITE% and password.
    +
    + + +
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    First Name: **
    Last Name: **
    (identifies you to others) [[Main/WikiName]]: **
    -

    -

    -
    E-mail address: **
    %BESPOKE_PASSWORD%
    Organisation name:
    Organisation URL:
    Country: **
    Comments:
    (optional)
    - -
    - Fields marked ** are required
     
    -
    +
      +
    • info If you have any questions about registration, send an e-mail to .
    • +
    -When %WIKITOOLNAME% receives the form, it will mail an account activation code to the e-mail address you gave above. Enter that activation code in the following screen, or follow the link in the e-mail, to activate your account. Once your account is activated, %WIKITOOLNAME% will: - -- Finish creating an account for you, so that you can start editing pages using your [[WikiName]]. -- Create your personal %WIKITOOLNAME% topic using your [[WikiName]] as topic name, and add the data you submitted to the topic. -- Add your name to the list of users in the [[TWikiUsers]] topic in the Main web. -- Send you a confirmation of your registration by e-mail. - -Once registered you can login using your %LOGIN\_METHOD\_IN\_THIS\_SITE% and password. - -If you have any questions about registration, send an e-mail to [](mailto:?subject=%TOPIC% Question). - diff --git a/TWiki/TWikiReleaseNotes04x00.mdwn b/TWiki/TWikiReleaseNotes04x00.mdwn index 7dd0cc1..adbdb10 100644 --- a/TWiki/TWikiReleaseNotes04x00.mdwn +++ b/TWiki/TWikiReleaseNotes04x00.mdwn @@ -516,7 +516,7 @@ The new user registration process has been extensively reworked to improve usabi E-mail addresses for new users are no longer stored in home topics. Instead, the password manager API has been extended to support storing e-mails. -The default password manager stores e-mails in the `.htpasswd` file - you can safely edit this file with a text editor to modify the info field that contains the e-mail addresses (the format of each line in this file is username>::, and TWiki expects the info field to be a ;-separated list of e-mail addresses). Password managers for other systems e.g. LDAP can esily be extended to support the new API. If the password manager does not have an e-mail address for a user, then TWiki will still look in the users' personal topic. +The default password manager stores e-mails in the `.htpasswd` file - you can safely edit this file with a text editor to modify the info field that contains the e-mail addresses (the format of each line in this file is `::`, and TWiki expects the info field to be a ;-separated list of e-mail addresses). Password managers for other systems e.g. LDAP can esily be extended to support the new API. If the password manager does not have an e-mail address for a user, then TWiki will still look in the users' personal topic. The script `tools/upgrade_emails.pl` can be used to extract e-mail addresses for existing TWiki users from personal topics, and add them to the password manager. diff --git a/TWiki/TWikiReleaseNotes04x01.mdwn b/TWiki/TWikiReleaseNotes04x01.mdwn new file mode 100644 index 0000000..ea30b26 --- /dev/null +++ b/TWiki/TWikiReleaseNotes04x01.mdwn @@ -0,0 +1,1160 @@ +# TWiki Release 4.1 (Edinburgh), 17 Jan 2007 + + + +## Introduction + +TWiki Release 4.1 is a minor release. TWiki releases are either major (major new features and changes in architecture), minor (enhancements and bug fixes), or patch releases (bug fixes only) which can be installed as upgrades on production installations. + +TWiki Release 4.1 introduces some good enhancements and quite many bug fixes since 4.0.5. It requires some manual work to upgrade from TWiki 4.0.5 to 4.1.0. Depending on the tailoring you have made it may take between 10 minutes to two hours to do an upgrade. If you have not made any changes to the skins the upgrade is for sure an effort that takes less than 30 minutes. + +The development team has done everything to maintain full compatibility with topics generated in TWiki-4.0 and there are no changes to the topic format. + +## New Features Highlights + +- **Easier Installation and Upgrade** + - Plugins can now be installed from the configure script. + - The loading of plugin preferences settings has been moved earlier in the preferences evaluation order so that plugin settings can be redefined in [[Main.TWikiPreferences|Main/TWikiPreferences]], WebPreferences and in topics. To make TWiki upgrades easier, it is recommended to set the plugin settings in Main.TWikiPreferences, and not to customize the settings in the plugin topic. For example, to change the TEMPLATES setting of the [[CommentPlugin]], create a new COMMENTPLUGIN\_TEMPLATES setting in Main.TWikiPreferences. + - Plugin settings can now be defined in configure instead of in the plugin topic (requires that the individual plugin has implemented this). TWiki performs slightly better by not looking for preferences settings in plugin topics. + - Configure no longer shows many unnecessary errors when run first time. + - The webmaster email address is now defined in configure instead of TWikiPreferences. + - Default file access rights in the distribution package have been changed to be more universally defined and in line with the default access rights for new topics. + +- **Usability Enhancements** + - Redesigned result page when typing incomplete topic name into the Jump box, so that it is possible to quickly navigate to a topic, also in a very large TWiki installation. For example, "I know there is a topic about Ajax somewhere in the Eng web. OK, let my type `Eng.ajax` into the Jump box... Here we go, the third link is the AjaxCookbook I was looking for." + - Many user documentation improvements. + - URL parameters maintained in Table of Contents links so you can stay in a temporary skin (e.g. print) and keep URLPARAM values when you click the TOC links + - Attachment tables now sorted alphabetically. + - Better printing of tables and verbatim text in [[PatternSkin]]. + +- **Application Platform Enhancements** + - Auto-incremented topic name on save with AUTOINC<n> in topic name; used by TWiki applications to create topic based database records. + - The edit and save scripts support a `redirectto` parameter to redirect to a topic or a URL; for security, redirect to URL needs to be enabled with a `{AllowRedirectUrl}` configure flag. + - [[CommentPlugin]] supports the `redirectto` parameter to redirect to a URL or link to TWiki topic after submitting comment. + - The `topic` URL parameter also respects the `{AllowRedirectUrl}` configure flag so redirects to URLs can be disabled which could be abused for phishing attacks. + - The view script supports a `section` URL parameter to view just a named section within a topic. Useful for simple AJAX type applications. + - New plugin handler for content move. + - Enhancements for Ajax based applications with TWiki:Plugins/YahooUserInterfaceContrib and TWiki:Plugins.TWikiAjaxContrib (available at twiki.org). + +- **Search Enhancements** + - METASEARCH handles a format parameter like SEARCH. + - Topic not found / [[WebTopicViewTemplate]] search now case insensitive. + - [[FormattedSearch]] header supporting `$nop`, `$quot`, `$percnt`, `$dollar`. + - Add search by createdate option to SEARCH. + - New newline option for SEARCH to protect e.g. formfields from being altered during rendering in SEARCH. + +- **Skins and Templates Enhancements** + - Support for templates to have text rendering affecting aspect outside of textarea. + - Pattern skin dependence on [[TwistyPlugin]] instead of [[TwistyContrib]] (performance improvement.) + - Don't strip newlines from the front of TMPL:DEFs. + +- **Miscellaneous Feature Enhancements** + - Change in [[WikiWord]] definition: Numbers are treated as lower case letters, e.g. Y2K is now a WikiWord. + - Configurable template load path. Advanced feature for those that work with customized templates. + - Added %VBAR% to [[TWikiPreferences]] for vertical bar symbol. + - On topic creation, force initial letter of topic name to be upper case. + - Allow date format in form fields. + - Enhance REVINFO\{\} variable with same date qualifiers as GMTIME\{\}. + - [[WebTopicCreator]] - adding ability to select a template from any topic name ending in ...Template + - Functionality of DateFieldPlugin merged into core + +- **Enhancements of Pre-installed Plugins** + - [[CommentPlugin]]: Supports removal of comment prompt after a comment is made. + - [[EditTablePlugin]]: Default date format based on [[JSCalendarContrib]] instead of plugin topic. + - [[InterwikiPlugin]]: Supports custom link formats. + - [[SlideShowPlugin]]: Preserves URL parameters in slideshow + - [[SpreadSheetPlugin]]: New functions `$LISTRAND()`, `$LISTSHUFFLE()`, `$LISTTRUNCATE()`. + - [[TablePlugin]]: New attribute `cellborder`. + - [[TablePlugin]]: Highlight the sorted column with custom colors; includes also a general cosmetic update of default colors. + - [[TablePlugin]]: Support for initsort on more than one table. A table with the initsort option is initsorted UNLESS it is sorted by clicking on a column header. If you click on a header of another table all other tables goes back to the default sort defined by initsort or not sorted if no initsort, and the new table is sorted based on the user clicking on a table header. + +## Deprecation Notice + +- Usage of [[TWikiForms]] for setting preferences has been deprecated in favor of TWiki:Plugins.PreferencesPlugin. PreferencesPlugin has been included since TWiki 4.0.0 to allow more convenient editing of preferences. This plugin provides input controls, such as menus, radio buttons, and checkboxes to select preference settings. + +## Bug Fix Highlights + +- **User Topics** + - Unused settings on users home topic removed. (no need to update existing user topics - they are still compatible with all features.) + - An attribute column has been added to the UserForm used on users home topic. If you tailored this form just continue using your existing form. + +- **Security** + - The `topic=""` parameter to the view script now respects the `{AllowRedirectUrl}` configure flag so you can disable redirecting to URLs which could be abused for phishing attacks. + - More robust authentication denial when redirected after failed authentication (follow up from TWiki:Codev.SecurityAlert-CVE-2006-6071.) + - More robust [[TablePlugin]], guarding against a sort with very high non-existing column numbers, which may result in a high server load. + +- **User Interface** + - Left Bar should not show logout when using ApacheLogin because you cannot in reality log out. + - Can't de-select all options in a checkbox. + - Duplicate values in checkbox and select when creating a new topic. + - Form initialization with defaults not working. + - Multiselect for forms does not work. + - Size of attachment should only be shown for the most recent version. + - [[JSCalendarContrib]] only works with IE in [[PatternSkin]]. + +- **API, Skins and Templates** + - The print view handled is updated to allow custom templates that can be printed. Note that the viewprint template is subject to additional changes in next releases. + - The Kupu WYSIWYG editor has been split out of [[WysiwygPlugin]] into [[KupuContrib]] to allow other editors to be integrated with TWiki. + +- **Printing** + - Verbatim Text not completly printing with IE6.0. + - Printable loses URL parameters. + - Printing in Firefox truncates tables. + +- **Miscellaneous Bug Fixes** + - Don't include anything when trying to include a non existing section. + - Turn off `{AutoAttachPubFiles}` in default distribution. + - The edit url parameters are not properly passed through change form screen and checkpoint save. + - Formfield not correctly rendered when type is textarea. + - IF cannot check for existence of INCLUDE parameter. + - Firefox downloads attachments as the topic name and not the real file name. + - Edit and [[FormattedSearch]] expands `$nop`, `$quot`, `$percnt`, `$dollar` in `$formfield()` + - Scripts hang in `TWiki::UI:run` at drain STDIN logic (this is now configurable - whether you need it depends on OS and webserver.) + - Non-graceful error handling on mail issue during registration. + - Include of external doc set wrong url in relative links. + - In INCLUDE, warn parameter does not work when including a URL. + - `WEBMANAGE` permission no longer required (removed.) + - Context not authenticated despite Apache Require valid-user Login. + - INCLUDE of URL on subdomain returns wrong pages. + +The full list of bug fixes can be seen below + +## TWiki 4.1.0 Minor Release - Details + +The 4.1.0 release was built from SVN revision 12567. + +### TWiki 4.1.0 Fixes + +
    Note to administrator: The form fields can be customized to the needs of your organization. See also [[Main/TWikiUserAuthentication]]. In case you are registering users through other means, replace this topic with a note describing how to get registered in TWiki. In any case, remove this note.
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    [[BUGS/Item3442]] PatternSkin: Make file upload input field larger
    [[BUGS/Item3430]] Email addresses not always padded and encoded.
    [[BUGS/Item3422]] Bulk registation data fails validation
    [[BUGS/Item3418]] Make it more obvious how to enable ASSERTS
    [[BUGS/Item3416]] Bad pod =end causes TWiki::Compatibility to fail hard
    [[BUGS/Item3415]] mailnotify does not send notifications to intranet users
    [[BUGS/Item3412]] Default and classic skins have oops template errors
    [[BUGS/Item3409]] Do not refer to non-default plugins in the documentation
    [[BUGS/Item3408]] Sidebar weblist needs wordwrap turned off
    [[BUGS/Item3407]] Usability: Remove PLEASENOSPAM spam padding in registration confirmation screen
    [[BUGS/Item3405]] Minor stylistic improvement in TWiki.TWikiTemplates
    [[BUGS/Item3402]] Form select/checkbox/radio values containing "Name" not displayed
    [[BUGS/Item3401]] Base tag refers to topic view, irrespective of what the current base url actually is
    [[BUGS/Item3399]] Template system recursion prevention too agressive, prevents skin specialisation, or mixins
    [[BUGS/Item3397]] Enhance documentation of impact of including text on plugin handlers
    [[BUGS/Item3395]] Typo in TWiki.TWikiEditingShorthand
    [[BUGS/Item3394]] Remove UpgradeTwiki script, or put prominent warning on issues
    [[BUGS/Item3392]] TipsContrib: Performance improvement
    [[BUGS/Item3384]] Search with zeroresults="on" does not search all webs
    [[BUGS/Item3383]] Quotes in FormattedSearch not escaped
    [[BUGS/Item3381]] For admins, a SEARCH all webs does not ignore the NOSEARCHALL flag
    [[BUGS/Item3378]] Default templates cause invalid HTML
    [[BUGS/Item3364]] Force-update of Main web statistics updates all webs
    [[BUGS/Item3359]] Adding .ico to mime.types file
    [[BUGS/Item3357]] Remove obsolete user settings from TWiki.NewUserTemplate
    [[BUGS/Item3356]] Incorrect color sequence in list of similar topics
    [[BUGS/Item3353]] PatternSkin: updating attachment properties produces an "undefined value in split" warning in TWiki::mapToIconFileName
    [[BUGS/Item3320]] UserForm does not have Attribute column
    [[BUGS/Item3318]] SpreadSheetPlugin: Remove spurious newline appended to result
    [[BUGS/Item3315]] Security: Make topic="" parameter aware of {AllowRedirectUrl} configure flag
    [[BUGS/Item3312]] Attachment table cannot be overridden in view template
    [[BUGS/Item3310]] Support web.topics in redirectto parameter
    [[BUGS/Item3309]] CommentPlugin: Crash when invoked with an empty comment_index when used with TemplateLogin
    [[BUGS/Item3308]] CommentPlugin: Updating with redirectto using web.topic instead of URL
    [[BUGS/Item3307]] Make display of current TWiki version in configure more prominent
    [[BUGS/Item3304]] EditTablePlugin doc fixes for 4.1
    [[BUGS/Item3302]] PatternSkin: Search result count "Number of topics:" only shows results from last listed web
    [[BUGS/Item3300]] CommentPlugin: Resolve uninitialized values
    [[BUGS/Item3296]] TWikiTip013 has reference to outdated user preferences variables
    [[BUGS/Item3293]] PatternSkin: Double space in pattern breadcrumb
    [[BUGS/Item3290]] The topic creator in Sandbox.WebHome allows to "create" existing topics
    [[BUGS/Item3280]] File permissions should be more universally applicable.
    [[BUGS/Item3278]] WebTopicCreator missing in Main web
    [[BUGS/Item3275]] More robust authentication denial when redirected after failed authentication
    [[BUGS/Item3274]] PatternSkin: Left Bar should not show logout when using ApacheLogin
    [[BUGS/Item3272]] Template view.*.classic.tmpl not used
    [[BUGS/Item3269]] PatternSkin: Formtable headers not clickable
    [[BUGS/Item3268]] TablePlugin: Sorting non-existing column numbers causes major problems
    [[BUGS/Item3266]] Configure installer should be aware of proxy settings
    [[BUGS/Item3264]] PatternSkin: Fixes to view topic action links
    [[BUGS/Item3263]] PatternSkin: oopsleaseconflict.pattern.tmpl out of sync with oopsleaseconflict.tmpl
    [[BUGS/Item3261]] Literal search on all webs does not work
    [[BUGS/Item3260]] PatternSkin: Javascript bug with quote in translation text
    [[BUGS/Item3259]] Logging of saving a topic within the same revision timeout is confusing
    [[BUGS/Item3258]] Add note to TWiki.TWikiSkins that the viewprint template is subject to change in next release
    [[BUGS/Item3240]] Documentation change from "statii" to "statuses"
    [[BUGS/Item3237]] WebTopicCreator Javascript bugs
    [[BUGS/Item3224]] Split Kupu editor out of WysiwygPlugin
    [[BUGS/Item3214]] space in WikiName in UnprocessedRegistrations results in bad .htpasswd entry
    [[BUGS/Item3210]] mp4 filetype erroneously linked to sound ICON
    [[BUGS/Item3207]] SEARCH on META:TOPICPARENT not documented
    [[BUGS/Item3201]] Remove exclamation mark from welcoming "Hello XXX!"
    [[BUGS/Item3200]] TablePlugin: Support for initsort of multiple tables in same topic
    [[BUGS/Item3199]] TipsContrib: Maintenance for TWiki 4.1
    [[BUGS/Item3193]] TablePlugin: Table colors shifted by one
    [[BUGS/Item3192]] Document limitations on registered tags
    [[BUGS/Item3187]] Document how to get plugin settings into and from configure
    [[BUGS/Item3167]] TWiki.TWikiSkins documentation and templates don't match with respect to printing
    [[BUGS/Item3165]] PatternSkin: Using incorrect template names in include
    [[BUGS/Item3163]] I18N: Strip uploaded filenames for 8-bit characters (Allow only US-ASCII)
    [[BUGS/Item3161]] Usability: Attachment table default sort order
    [[BUGS/Item3158]] Don't include anything when trying to include a non existing section
    [[BUGS/Item3153]] INSTALL.html need to document new configure features
    [[BUGS/Item3146]] Turn off {AutoAttachPubFiles} in default distribution
    [[BUGS/Item3145]] Rename topic does not find links for a word in all caps
    [[BUGS/Item3143]] MailerContrib: Syntax error in mailnotify template
    [[BUGS/Item3142]] Documentation in code for TWiki::Func::getScriptUrl incorrect
    [[BUGS/Item3140]] Cannot turn on or off plugins on a per-web basis
    [[BUGS/Item3130]] edit url parameters not properly passed through change form screen and checkpoint
    [[BUGS/Item3129]] Documentation of pattern parameter to %INCLUDE% incomprehensible
    [[BUGS/Item3123]] New litteral option for %INCLUDE% (was: including external web page creates unwanted list items)
    [[BUGS/Item3122]] RcsLite error when saving revision from text
    [[BUGS/Item3119]] Remove edit.iejs.tmpl
    [[BUGS/Item3093]] Spurious ?-xism: in LocalSite.cfg
    [[BUGS/Item3091]] Attachment changes create bad log entries
    [[BUGS/Item3089]] Statistics creates lots of "bad log line... " errors
    [[BUGS/Item3075]] Document deprecation of settings in forms
    [[BUGS/Item3073]] Document local settings in TWiki.TWikiAccessControl
    [[BUGS/Item3072]] Time::parseInterval passes local TZ to Time::parseTime, which expects GMT
    [[BUGS/Item3071]] Typo in Time::parseInterval affects creation of "$now"
    [[BUGS/Item3070]] Formfield not correctly rendered when type is textarea
    [[BUGS/Item3066]] Missing parameter in TWiki::Func::redirectCgiQuery
    [[BUGS/Item3063]] External square bracket type links break if there's another anchor in the link text
    [[BUGS/Item3062]] Css based solution to prevent links to oneself
    [[BUGS/Item3061]] duplicate values in checkbox and select when creating a new topic
    [[BUGS/Item3060]] oopsleaseconflict does not work right
    [[BUGS/Item3059]] tick_twiki.pl script does not correctly remove leases
    [[BUGS/Item3054]] PatternSkin: Make attachment template more flexible
    [[BUGS/Item3053]] ChangePassword mistakenly says you need to close the browser
    [[BUGS/Item3052]] ResetPassword and ChangePassword should pass login name
    [[BUGS/Item3049]] form elements not fully classified
    [[BUGS/Item3046]] Merge DateFieldPlugin functionality into TWiki core
    [[BUGS/Item3042]] Improvements to visual design for configure
    [[BUGS/Item3040]] cookie prefs are web-specific
    [[BUGS/Item3039]] Better printing of tables and verbatim text in PatternSkin
    [[BUGS/Item3036]] TablePlugin does not render code text when datacolor is defined
    [[BUGS/Item3033]] TablePlugin does not add the CSS class "twikiFirstCol" when the table is sorted on the first col
    [[BUGS/Item3027]] ClassicSkin: Attachment tables in classic skin broken
    [[BUGS/Item3026]] Improve error handling in login screen
    [[BUGS/Item3023]] Configure shows unnecessary errors when run first time
    [[BUGS/Item3018]] PatternSkin: Improvements of table cosmetics
    [[BUGS/Item3014]] Unified colors and buttons
    [[BUGS/Item3013]] Uniform style for blockquotes
    [[BUGS/Item3008]] Need clear documentation of the impact of spaces in form definitions
    [[BUGS/Item2998]] can't create a topic of the same name as an already existing subweb
    [[BUGS/Item2985]] SEARCH summary eats escaped [[...]] links
    [[BUGS/Item2981]] Sandbox aggressively filters all but single-character strings
    [[BUGS/Item2979]] PatternSkin: Verbatim Text not completly printing with IE6.0
    [[BUGS/Item2967]] %SEARCH does not work with + in topic="" parameter
    [[BUGS/Item2965]] Performance: Eliminate $&, $`, and $' from TWiki sources
    [[BUGS/Item2963]] UTF-8 conversion fails with IE when both webname and topicname contains international characters
    [[BUGS/Item2958]] TWikiUpgradeGuide is missing configure instructions
    [[BUGS/Item2957]] RcsLite deep recursion on subroutine errors
    [[BUGS/Item2951]] MailerContrib: Doc Updates
    [[BUGS/Item2948]] Nested anchor tag in TOC with Interwiki link
    [[BUGS/Item2947]] EDIT_TEMPLATE topic preference can't be overriden using url params
    [[BUGS/Item2938]] TwistyPlugin needs to be enabled per default (PatternSkin dependency)
    [[BUGS/Item2930]] PatternSkin: Printing in Firefox truncates tables
    [[BUGS/Item2926]] TWikiUpgradeGuide documentation fix for rcs parameters
    [[BUGS/Item2923]] includeWarnings broken
    [[BUGS/Item2922]] missleading topic_not_found warning
    [[BUGS/Item2918]] Default text colors for user black backgrounds fixed
    [[BUGS/Item2917]] Main/UserList error in Organization
    [[BUGS/Item2905]] Form initialization with defaults not working.
    [[BUGS/Item2900]] Refactor TWiki::UI::Edit::edit
    [[BUGS/Item2896]] More flexible Form creator
    [[BUGS/Item2890]] TwistyPlugin and TwistyContrib: Merge enhancements from DEVELOP to TWIKI4
    [[BUGS/Item2886]] twiki cgi: the name of the config option 'Schedule' is a bit off
    [[BUGS/Item2885]] bin/twiki fails badly if the Scheduler is not configured
    [[BUGS/Item2880]] IF cannot check for existence of INCLUDE parameter
    [[BUGS/Item2879]] Firefox downloads attachments as the topic name and not the real file name
    [[BUGS/Item2873]] VIEW_TEMPLATEs can't be defined in subwebs
    [[BUGS/Item2841]] Squabs don't find local topic before web
    [[BUGS/Item2837]] Edit and FormattedSearch expands $nop, $quot, $percnt, $dollar in $formfield()
    [[BUGS/Item2820]] InterwikiPlugin does not link when $page is a single character
    [[BUGS/Item2811]] The viewfile script should use oopsattention instead of oopsaccessdenied
    [[BUGS/Item2788]] Provide generic oopsgeneric.tmpl template for skins
    [[BUGS/Item2781]] $cfg{RCS}{ciDateCmd} statement ends in comma instead of semicolon
    [[BUGS/Item2776]] ICON variable shows eml.gif icon instead of mail.gif
    [[BUGS/Item2774]] MailerContrib: Notification fails if there is whitespace before topic name list
    [[BUGS/Item2771]] PatternSkin: Print view changed in backwards incompatible way
    [[BUGS/Item2759]] Multiselect for forms does not work
    [[BUGS/Item2757]] Precedence of preferences does not allow site, webs or topics to redefine plugin preferences
    [[BUGS/Item2753]] Scripts hang in TWiki::UI:run at drain STDIN logic
    [[BUGS/Item2750]] "oops" pages/messages must not rely on NOAUTOLINK
    [[BUGS/Item2745]] Non-graceful error handling on mail issue during registration
    [[BUGS/Item2724]] Include of external doc set wrong url in relative links
    [[BUGS/Item2720]] Old url construction mechanism (SCRIPTSUFFIX etc) still used
    [[BUGS/Item2713]] Documentation for format in META{"parent" format=...} improved
    [[BUGS/Item2712]] In INCLUDE, warn parameter does not work when including a URL
    [[BUGS/Item2698]] MailerContrib: Mail sending errors are ignored and cause misleading output
    [[BUGS/Item2692]] In FormattedSearch, nonoise="on" header="fred" counter-intuitively suppresses the header
    [[BUGS/Item2671]] Don't need to set ALLOWTOPICHANGE in Main.TWikiPreferences and TWiki.TWikiPreferences because it's already done
    [[BUGS/Item2660]] Added %VBAR% to TWikiPreferences for vertical bar symbol
    [[BUGS/Item2659]] Extra CPAN dir needed in setlib.cfg @localPerlLibpath
    [[BUGS/Item2656]] Configure script still corrupts {NameFilter} with (?-xism:
    [[BUGS/Item2655]] Better documentation for TWikiRegistrationAgent
    [[BUGS/Item2650]] TWikiForms checkbox values not stored in proper order
    [[BUGS/Item2639]] SpreadSheetPlugin: Fix in SHORTDESCRIPTION
    [[BUGS/Item2628]] USERINFO incorrectly creates nonexistent user
    [[BUGS/Item2624]] InterwikiPlugin: Doc enhancements
    [[BUGS/Item2620]] Doc fix: Change %W% to %X% in TWikiDocGraphics
    [[BUGS/Item2614]] checkTopicEditLock does not work for anything but Edit the main screen
    [[BUGS/Item2613]] Spec for normalizeWebTopicName is inconsistent
    [[BUGS/Item2605]]WEBMANAGE permission no longer required (removed)
    [[BUGS/Item2601]] EmptyPlugin: Debug flag init is missing
    [[BUGS/Item2596]] Context not authenticated despite Apache Require valid-user Login
    [[BUGS/Item2592]] misc. typos in HTML source pages
    [[BUGS/Item2588]] Typo in 'UpgradeTwiki': esiting - existing
    [[BUGS/Item2584]] PatternSkin: Remove blockquotes from templates
    [[BUGS/Item2575]] Need the ability to protect formfields from being altered during rendering in SEARCH (added NL definition option)
    [[BUGS/Item2572]] Printable looses URL parameters
    [[BUGS/Item2571]] If you press CANCEL the .lease file under data/ won't be deleted
    [[BUGS/Item2544]] %INCLUDE of URL on subdomain returns wrong pages
    [[BUGS/Item2543]] configure shows none twice in the pulldown of Password Manager field
    [[BUGS/Item2537]] Putting in minimal support for separating webs
    [[BUGS/Item252]] topic preferences not inheritted from topic template
    [[BUGS/Item2511]] Size of attachment should only be shown for the most recent version.
    [[BUGS/Item2496]] FormattedSearch $summary has newlines
    [[BUGS/Item2495]] rdiff expands REVINFO incorrectly
    [[BUGS/Item2490]] oops link broken if scripts reside in top-level directory
    [[BUGS/Item2477]] Move attachment log entry has HASH in extra info
    [[BUGS/Item2460]] REST handler does not set context before initPlugin
    [[BUGS/Item2458]] REST handlers have bad security implications
    [[BUGS/Item2453]] TOC does not work correctly when page is generated using url parameters
    [[BUGS/Item2410]] Can't de-select all options in a checkbox
    [[BUGS/Item2396]] Need to distinguish between follow-up save and admin repRev
    [[BUGS/Item2363]] perl accelerators closing STDERR will inhibit any further error log
    [[BUGS/Item2295]] TemplateLogin login screen eats POST parameters
    [[BUGS/Item2168]] I18N: Allow international characters in form field names
    [[BUGS/Item2156]] PatternSkin: SCRIPTURL{"script"} and SCRIPTURLPATH{"script"} are not implemented everywhere
    [[BUGS/Item2153]] MailerContrib: Mailnotify not running from tools directory & docs need updating
    [[BUGS/Item2054]] JSCalendarContrib only works with IE in PatternSkin
    [[BUGS/Item1992]] MailerContrib: Mailnotify generates bogus links with {IDsInURLs} configure option
    [[BUGS/Item1705]] PatternSkin: Topic action buttons have hard coded access keys
    + +### TWiki 4.1.0 Enhancements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    [[BUGS/Item3428]] TablePlugin: taking out before parsing date fields
    [[BUGS/Item3380]] Support Javascript variables for content
    [[BUGS/Item3331]] SpreadSheetPlugin: Add new functions $LISTRAND(), $LISTSHUFFLE(), $LISTTRUNCATE()
    [[BUGS/Item3316]] Support redirectto parameter in edit
    [[BUGS/Item3291]] PatternSkin: Overview documentation of pattern skin elements
    [[BUGS/Item3270]] Prevent creation of all lowercase topic names.
    [[BUGS/Item3239]] Putting links to configure
    [[BUGS/Item3230]] Topic not found / WebTopicViewTemplate search does not search case insensitive
    [[BUGS/Item3228]] CSS classes documentation
    [[BUGS/Item3191]] HierarchicalNavigation
    [[BUGS/Item3189]] TablePlugin: New attribute cellborder
    [[BUGS/Item3171]] SlideShowPlugin: Preserve URL parameters in slideshow, use T-logo
    [[BUGS/Item3170]] Don't show anything when trying to display a non existing section with section param
    [[BUGS/Item3157]] New plugin handler for content move
    [[BUGS/Item3144]] Make test/unit/InitFormTests more resilient to HTML changes
    [[BUGS/Item3141]] Need to enable plugins on a per-topic basis
    [[BUGS/Item3115]] InterwikiPlugin with link format
    [[BUGS/Item3096]] Enable selecting to view named section given by URL when viewing topic.
    [[BUGS/Item3092]] Views of WebRss & WebAtom should be ignored by Statistics
    [[BUGS/Item3064]] Development of twikiLib.js as part of a major Java Script refactoring
    [[BUGS/Item3058]] TwistyPlugin and TwistyContrib: Enhancements version 1.2
    [[BUGS/Item3037]] Customizable style of new WikiWord links
    [[BUGS/Item3034]] TablePlugin: give all TDs in sorted column a "sorted" CSS class
    [[BUGS/Item3017]] Improve Jump Box speed in large webs
    [[BUGS/Item3016]] Make "jump to similar topic" more obvious
    [[BUGS/Item2984]] EditTablePlugin Date Format using JSCalendarContrib defined format instead of hard coded.
    [[BUGS/Item2936]] Auto-incremented topic name on save with AUTOINC
    [[BUGS/Item2915]] Allow date format in form fields
    [[BUGS/Item2914]] Support templates to have text rendering affecting aspect outside of textarea
    [[BUGS/Item2908]] Allow Plugin config variables to be set in bin/configure
    [[BUGS/Item2907]] Configurable template load path
    [[BUGS/Item2902]] RenderListPlugin: Support for image URL and TWiki.TWikiDocGraphics icons (version 22 Sep 2006 - V1.034)
    [[BUGS/Item2897]] Enhance REVINFO{} with same date qualifiers as GMTIME{}
    [[BUGS/Item2836]] FormattedSearch header supporting $nop, $quot, $percnt, $dollar
    [[BUGS/Item2805]] CommentPlugin: Support removal of comment prompt after a comment is made
    [[BUGS/Item2802]] Allow plugin prefs to be defined in configure and save time not looking for prefs in plugin topic.
    [[BUGS/Item2770]] TablePlugin: Add css support for even/odd row distinction
    [[BUGS/Item2629]] Add search query javascript
    [[BUGS/Item2604]] It's too easy to edit EXPERT options in configure
    [[BUGS/Item2590]] Configure option to replace WIKIWEBMASTER for user registration
    [[BUGS/Item2582]] Add VarXXX topics for TWiki preferences
    [[BUGS/Item2556]] TWiki's definition of a wikiword now see numbers as lower case letters
    [[BUGS/Item2508]] WebTopicCreator - adding ability to select a template from any topic matching .*Template
    [[BUGS/Item2362]] REST always tries to return text/html
    [[BUGS/Item2063]] METASEARCH to take a format parameter like SEARCH
    [[BUGS/Item2000]] Add search by createdate option to SEARCH
    [[BUGS/Item1704]] PatternSkin: Dependence on TwistyPlugin instead of TwistyContrib (performance improvement)
    [[BUGS/Item1640]] Don't strip newlines from the front of TMPL:DEFs
    + +**_Related Topic:_** [[TWikiHistory]] diff --git a/TWiki/TWikiRenderDotPm.mdwn b/TWiki/TWikiRenderDotPm.mdwn index 7accb84..e471bb0 100644 --- a/TWiki/TWikiRenderDotPm.mdwn +++ b/TWiki/TWikiRenderDotPm.mdwn @@ -61,7 +61,7 @@ Build a valid HTML anchor name Generate a link. -SMELL: why can topic be spaced out? is this to support auto squishing of [[Spaced Topic Naming|Main/SpacedTopicNaming]]? and [[lowercase Spaced Topic Naming|Main/LowercaseSpacedTopicNaming]] +Note: Topic names may be spaced out. Spaced out names are converted to WikWords, for example, "spaced topic name" points to "SpacedTopicName". - `$theWeb` - the web containing the topic - `$theTopic` - the topic to be lunk @@ -164,4 +164,4 @@ Cool, eh what? Jolly good show. And if you set $newtag to '', we replace the taken out block with the valuse itself -- which i'm using to stop the rendering process, but then at the end put in the html directly (for tag. ---++ ObjectMethod \*renderRevisionInfo\* `($web,$topic,$meta,$rev,$format) -> $string` Obtain and render revision info for a topic. \* =$web= - the web of the topic \* =$topic= - the topic \* =$meta= if specified, get rev info from here. If not specified, or meta contains rev info for a different version than the one requested, will reload the topic \* =$rev= - the rev number, defaults to latest rev \* =$format= - the render format, defaults to =$rev - $time - $wikiusername= =$format= can contain the following keys for expansion: | =$web= | the web name | | =$topic= | the topic name | | =$rev= | the rev number | | =$date= | the date of the rev (no time) | | =$time= | the full date and time of the rev | | =$comment= | the comment | | =$username= | the login of the saving user | | =$wikiname= | the wikiname of the saving user | | =$wikiusername= | the web.wikiname of the saving user | ---++ ObjectMethod \*summariseChanges\* `($user,$web,$topic,$orev,$nrev,$tml) -> $text` \* =$user= - user (null to ignore permissions) \* =$web= - web \* =$topic= - topic \* =$orev= - older rev \* =$nrev= - later rev \* =$tml= - if true will generate renderable TML (i.e. HTML with NOPs. if false will generate a summary suitable for use in plain text (mail, for example) Generate a (max 3 line) summary of the differences between the revs. If there is only one rev, a topic summary will be returned. If =$tml= is not set, all HTML will be removed. In non-tml, lines are truncated to 70 characters. Differences are shown using + and - to indicate added and removed text. ---++ ObjectMethod \*forEachLine\* `($text,\&fn,\%options) -> $newText` Iterate over each line, calling =\\&fn= on each. \\%options may contain: \* =pre= => true, will call fn for each line in pre blocks \* =verbatim= => true, will call fn for each line in verbatim blocks \* =noautolink= => true, will call fn for each line in =noautolink= blocks The spec of \\&fn is sub fn( \\$line, \\%options ) -> $newLine; the %options hash passed into this function is passed down to the sub, and the keys =in\_pre=, =in\_verbatim= and =in\_noautolink= are set boolean TRUE if the line is from one (or more) of those block types. The return result replaces $line in $newText. ---++ StaticMethod \*replaceTopicReferences\* `($text,\%options) -> $text` Callback designed for use with forEachLine, to replace topic references. \\%options contains: \* =oldWeb= => Web of reference to replace \* =oldTopic= => Topic of reference to replace \* =spacedTopic= => RE matching spaced out oldTopic \* =newWeb= => Web of new reference \* =newTopic= => Topic of new reference \* =inWeb= => the web which the text we are presently processing resides in \* =fullPaths= => optional, if set forces all links to full web.topic form For a usage example see TWiki::UI::Manage.pm ---++ StaticMethod \*replaceWebReferences\* `($text,\%options) -> $text` Callback designed for use with forEachLine, to replace web references. \\%options contains: \* =oldWeb= => Web of reference to replace \* =newWeb= => Web of new reference For a usage example see TWiki::UI::Manage.pm ---++ ObjectMethod \*replaceWebInternalReferences\* `(\$text,\%meta,$oldWeb,$oldTopic)` Change within-web wikiwords in $$text and $meta to full web.topic syntax. \\%options must include topics => list of topics that must have references to them changed to include the web specifier. ---++ StaticMethod \*renderFormFieldArg\* `($meta,$args) -> $text` Parse the arguments to a $formfield specification and extract the relevant formfield from the given meta data. ---++ StaticMethod \*breakName\* `($text,$args) -> $text` \* =$text= - text to "break" \* =$args= - string of format (\\d+)([,\\s\*]\\.\\.\\.)?) Hyphenates $text every $1 characters, or if $2 is "..." then shortens to $1 characters and appends "..." (making the final string $1+3 characters long) \_Moved from Search.pm because it was obviously unhappy there, as it is a rendering function\_ +- which i'm using to stop the rendering process, but then at the end put in the html directly (for tag. ---++ ObjectMethod \*renderRevisionInfo\* `($web,$topic,$meta,$rev,$format) -> $string` Obtain and render revision info for a topic. \* =$web= - the web of the topic \* =$topic= - the topic \* =$meta= if specified, get rev info from here. If not specified, or meta contains rev info for a different version than the one requested, will reload the topic \* =$rev= - the rev number, defaults to latest rev \* =$format= - the render format, defaults to =$rev - $time - $wikiusername= =$format= can contain the following keys for expansion: | =$web= | the web name | | =$topic= | the topic name | | =$rev= | the rev number | | =$comment= | the comment | | =$username= | the login of the saving user | | =$wikiname= | the wikiname of the saving user | | =$wikiusername= | the web.wikiname of the saving user | | =$date= | the date of the rev (no time) | | =$time= | the time of the rev | | =$min=, =$sec=, etc. | Same date format qualifiers as GMTIME | ---++ ObjectMethod \*summariseChanges\* `($user,$web,$topic,$orev,$nrev,$tml) -> $text` \* =$user= - user (null to ignore permissions) \* =$web= - web \* =$topic= - topic \* =$orev= - older rev \* =$nrev= - later rev \* =$tml= - if true will generate renderable TML (i.e. HTML with NOPs. if false will generate a summary suitable for use in plain text (mail, for example) Generate a (max 3 line) summary of the differences between the revs. If there is only one rev, a topic summary will be returned. If =$tml= is not set, all HTML will be removed. In non-tml, lines are truncated to 70 characters. Differences are shown using + and - to indicate added and removed text. ---++ ObjectMethod \*forEachLine\* `($text,\&fn,\%options) -> $newText` Iterate over each line, calling =\\&fn= on each. \\%options may contain: \* =pre= => true, will call fn for each line in pre blocks \* =verbatim= => true, will call fn for each line in verbatim blocks \* =noautolink= => true, will call fn for each line in =noautolink= blocks The spec of \\&fn is sub fn( \\$line, \\%options ) -> $newLine; the %options hash passed into this function is passed down to the sub, and the keys =in\_pre=, =in\_verbatim= and =in\_noautolink= are set boolean TRUE if the line is from one (or more) of those block types. The return result replaces $line in $newText. ---++ StaticMethod \*replaceTopicReferences\* `($text,\%options) -> $text` Callback designed for use with forEachLine, to replace topic references. \\%options contains: \* =oldWeb= => Web of reference to replace \* =oldTopic= => Topic of reference to replace \* =spacedTopic= => RE matching spaced out oldTopic \* =newWeb= => Web of new reference \* =newTopic= => Topic of new reference \* =inWeb= => the web which the text we are presently processing resides in \* =fullPaths= => optional, if set forces all links to full web.topic form For a usage example see TWiki::UI::Manage.pm ---++ StaticMethod \*replaceWebReferences\* `($text,\%options) -> $text` Callback designed for use with forEachLine, to replace web references. \\%options contains: \* =oldWeb= => Web of reference to replace \* =newWeb= => Web of new reference For a usage example see TWiki::UI::Manage.pm ---++ ObjectMethod \*replaceWebInternalReferences\* `(\$text,\%meta,$oldWeb,$oldTopic)` Change within-web wikiwords in $$text and $meta to full web.topic syntax. \\%options must include topics => list of topics that must have references to them changed to include the web specifier. ---++ StaticMethod \*renderFormFieldArg\* `($meta,$args) -> $text` Parse the arguments to a $formfield specification and extract the relevant formfield from the given meta data. ---++ StaticMethod \*breakName\* `($text,$args) -> $text` \* =$text= - text to "break" \* =$args= - string of format (\\d+)([,\\s\*]\\.\\.\\.)?) Hyphenates $text every $1 characters, or if $2 is "..." then shortens to $1 characters and appends "..." (making the final string $1+3 characters long) \_Moved from Search.pm because it was obviously unhappy there, as it is a rendering function\_ diff --git a/TWiki/TWikiRenderingShortcut.mdwn b/TWiki/TWikiRenderingShortcut.mdwn new file mode 100644 index 0000000..845d56d --- /dev/null +++ b/TWiki/TWikiRenderingShortcut.mdwn @@ -0,0 +1,17 @@ +# Rendering Shortcuts + +_Easy ways to save some typing_ + +Some TWiki preferences variables are just shortcuts for convenience, to either save typing or to easily allow line breaks in format strings and the like. These variables are not intended to be customized, though it is not forbidden to do so. + +**The following variables are classified as rendering shortcuts:** + +# TWiki Installation Error + +Incorrect format of searchformat template (missing sections? There should be 4 %SPLIT% tags) + +**_See also:_** + +- [[TWikiVariables]] - an alphabetical list of all variables +- [[TWikiPreferences#RenderingShortcuts]] - where rendering shortcuts are defined +- [[TWikiShorthand]] - summary of the TWiki markup language diff --git a/TWiki/TWikiScripts.mdwn b/TWiki/TWikiScripts.mdwn index b663fff..a443dd9 100644 --- a/TWiki/TWikiScripts.mdwn +++ b/TWiki/TWikiScripts.mdwn @@ -74,14 +74,14 @@ In the CGI environment parameters are passed to the scripts via the URL and URL #### Command-line -You **must** be cd'd to the `twiki/bin` directory to run the scripts from the command line. To avoid issues with file permissions, run the scripts as the web server user such as `nobody` or `www`. +You **must** be have the `twiki/bin` directory on the perl path to run the scripts from the command line. To avoid issues with file permissions, run the scripts as the web server user such as `nobody` or `www`. Parameters are passed on the command line using '-name' - for example, $ cd /usr/local/twiki/bin $ save -topic MyWeb.MyTopic -user admin -action save -text "New text of the topic" -All parameters require a value. +All parameters require a value, even if that is the empty string. #### Common parameters @@ -157,7 +157,7 @@ The main difference between invoking this script and using [[WebChanges]] is tha ### `configure` -`configure` is the browser script used for inspection and configuration of the TWiki configuration. None of the parameters to this script are useable for any purpose except `configure`. +`configure` is the browser script used for inspection and configuration of the TWiki configuration. None of the parameters to this script are useable for any purpose except `configure`. See [configure](http://www.dementia.org/twiki/configure). ### `edit` @@ -219,6 +219,11 @@ The `edit` scipt understands the following parameters, typically supplied by HTM If set, any lease conflicts will be ignored, and the edit will proceed even if someone is already editing the topic.   + + redirectto + If the user continues from edit to save, and if the save process is successful, save will redirect to this topic or URL. The parameter value can be a TopicName, a Web.TopicName, or a URL.%BR% Note: Redirect to a URL only works if it is enabled in configure (Miscellaneous {AllowRedirectUrl}). +   + Form field values are passed in parameters named 'field' - for example, if I have a field `Status` the parameter name is `Status`. @@ -608,18 +613,32 @@ This is used by [[BulkResetPassword]] and [[ResetPassword]]. Only users belongin ### `rest` -This REST ([Representational State Transfer](http://en.wikipedia.org/wiki/REST)) script can be invoked via http in a similar way as the view script (see **Invocation Examples**, below) to execute a function that is associated to a "subject" and a "verb" (see below). It'll print the result directly to the stream unless the `endPoint` parameter is specified, in which case the control is redirected to the given topic. +This REST ([Representational State Transfer](http://en.wikipedia.org/wiki/REST)) script can be invoked via http in the same way as the other TWiki scripts (see **Invocation Examples**, below) to execute a function that is associated to a "subject" and a "verb" (see below). These functions are usually registered by plugins using the `TWiki::Func::registerRESTHandler` method. The `rest` script will print the result directly to the browser unless the `endPoint` parameter is specified, in which case it will output a redirect to the given topic. -The `rest` script itself uses one parameter: +The `rest` script supports the following parameters: + + + + + + + + + + + +
    username If TemplateLogin, or a similar login manager not embedded in the web server, is used, then you need to pass a username and password to the server. The username and password parameters are used for this purpose.
    password See username
    topic If defined as the full name (including web) of a topic, then when the script starts up plugins will be passed this as the "current" topic. If not defined, then %USERWEB%.WebHome will be passed to plugins.
    endPoint Where to redirect the response once the request is served, in the form "Web.Topic"
    -Any additional parameters are passed directly to the function (i.e: The function can get any other parameter using the CGI $query object) +The function is free to use any other query parameters for its own purposes. + +%X% The `rest` script should **always** require authentication in any TWiki that has logins. Otherwise there is a risk of opening up major security holes. So make sure you add it to the list of authenticated scripts if you are using `ApacheLogin`. #### Invocation Examples @@ -627,9 +646,7 @@ The `rest` script assumes that it will be called with URL in the form: `http://my.host/bin/rest//` -where `` must be the [[WikiWord]] name of one of the installed [[TWikiPlugins]], and the `` is the alias for the function registered using the `registerRESTHandler`. The `` and `` are then used to lookup and call the registered function. - -Functions outside the Plugins also can be registered, but please consider the security implications of allowing URL access, as functions can sidestep TWiki Authentication & Authorisation settings. +where `` must be the [[WikiWord]] name of one of the installed [[TWikiPlugins]], and the `` is the alias for the function registered using the `TWiki::Func::registerRESTHandler` method. The `` and `` are then used to lookup and call the registered function. `` and `` are checked for illegal characters exactly in the same way as the web and topic names. @@ -637,11 +654,7 @@ As an example, the [[EmptyPlugin]] has registered a function to be used with the [Call the Plugin](http://www.dementia.org/twiki/rest/EmptyPlugin/example?debugenableplugin=EmptyPlugin) -You can also call the function from the command line, but this will be run as the [[TWikiAdminGroup]] (as it is assumed that shell access is secure) - eg: - - ./rest EmptyPlugin.example - -Note that for calls to Plugins, they must be enabled in `configure`. +Note that for Plugins to register REST handlers, they must be enabled in `configure`. ### `save` @@ -655,17 +668,17 @@ The `save` script performs a range of save-related functions, as selected by the action_save=1 - default; save, return to view, dontnotify is OFF + default; save, return to view, dontnotify is off   action_quietsave=1 - save, and return to view, dontnotify is ON + save, and return to view, dontnotify is on   action_checkpoint - save and redirect to the edit script, dontnotify is ON + save and redirect to the edit script, dontnotify is on   @@ -748,6 +761,21 @@ The `save` script performs a range of save-related functions, as selected by the Revision on which the edit started.   + + edit + The script to use to edit the topic when action is checkpoint + edit + + + editparams + The parameter string to use to edit the topic +   + + + redirectto + The save process will redirect to this topic or URL if it is successful. (Typically this would be the URL that was being viewed when edit was invoked). The parameter value can be a TopicName, a Web.TopicName, or a URL.%BR% Note: Redirect to a URL only works if it is enabled in configure (Miscellaneous {AllowRedirectUrl}). + view topic being edited + Any errors will cause a redirect to an `oops` page. @@ -931,6 +959,17 @@ Refresh the [[WebStatistics]] topics in range of webs. +for example: + +1. from browser updates _all user webs_ +2. from browser updates _TWiki,Main,Sandbox_ +3. from browser updates %WEB% +4. from command line twiki/bin/statistics updates _all user webs_ +5. from command line twiki/bin/statistics -webs=TWiki,Main,Sandbox updates _TWiki,Main,Sandbox_ +6. from command line twiki/bin/statistics %WEB%.WebHome updates %WEB% + +see [[TWikiSiteTools#WebStatistics_site_statistics]] for updating statistics using cron. + ### `twiki` Single-script interface to the functionality of all the other scripts. Experimental, not for production use. Read the code if you want to know more. @@ -1009,6 +1048,11 @@ Used for viewing topics.   + section + Allows to view only a part of the topic delimited by a named section (see [[TWiki/VarSTARTSECTION]]). If the given section is not present, no topic content is displayed. +   + + contenttype Allows you to specify a different Content-Type: (e.g. contenttype=text/plain)   @@ -1057,8 +1101,8 @@ Details on command line scripts located in the `twiki/tools` directory. This is a very simple script to get the content of a web site. It is marked as _deprecated_ and might be removed (or enhanced) in a future TWiki release. Its functions are covered by the standard `wget` and `curl` commands. -- Usage: `geturl [ [
    ]]` -- Example: `geturl some.domain /some/dir/file.html 80` +- Usage: `geturl.pl [ [
    ]]` +- Example: `geturl.pl some.domain /some/dir/file.html 80` - Will get: `http://some.domain:80/some/dir/file.html` ### `rewriteshebang.pl` diff --git a/TWiki/TWikiSearchDotPm.mdwn b/TWiki/TWikiSearchDotPm.mdwn index 5e5ee6d..0876bd3 100644 --- a/TWiki/TWikiSearchDotPm.mdwn +++ b/TWiki/TWikiSearchDotPm.mdwn @@ -31,9 +31,9 @@ If `_callback` is set, the result is always undef. Otherwise the result is a str If `inline` is set, then the results are **not** decorated with the search template head and tail blocks. -SMELL: If `format` is set, `template` will be ignored. +Note: If `format` is set, `template` will be ignored. -SMELL: If `regex` is defined, it will force type='regex' +Note: For legacy, if `regex` is defined, it will force type='regex' SMELL: If `template` is defined `bookview` will not work diff --git a/TWiki/TWikiShorthand.mdwn b/TWiki/TWikiShorthand.mdwn index e69de29..2571807 100644 --- a/TWiki/TWikiShorthand.mdwn +++ b/TWiki/TWikiShorthand.mdwn @@ -0,0 +1 @@ +# TWiki Shorthand diff --git a/TWiki/TWikiSiteTools.mdwn b/TWiki/TWikiSiteTools.mdwn index 3aaa590..ba7336d 100644 --- a/TWiki/TWikiSiteTools.mdwn +++ b/TWiki/TWikiSiteTools.mdwn @@ -60,7 +60,8 @@ To check for the most recently edited topics while on-site, use the [[WebChanges This is simply a preset `SEARCH`. The number of topics listed by the `limit` parameter.: -> %SEARCH{ ".*" web="%INCLUDINGWEB%" regex="on" nosearch="on" order="modified"%BR% reverse="on" limit="50" }% +> %SEARCH{ ".*" web="%INCLUDINGWEB%" type="regex" nosearch="on" order="modified"%BR% reverse="on" +> limit="50" }% @@ -68,7 +69,7 @@ This is simply a preset `SEARCH`. The number of topics listed by the `limit` par [[WebIndex]] lists all web topics in alphabetical order, with the first couple of lines of text. This is simply a preset `SEARCH`: -> %SEARCH{ "\.*" scope="topic" regex="on" nosearch="on" }% +> %SEARCH{ "\.*" scope="topic" type="regex" nosearch="on" }% @@ -85,7 +86,7 @@ You can generate a listing manually, or on an automated schedule, of visits to i - The [[WebStatistics]] topic must be present in all webs where you want to have statistics. You can use the topic in the Main web as a template. - Call the `twiki/bin/statistics` script from a cron job, once a day is recommended. This will update the [[WebStatistics]] topics in all webs. - **_Attention:_** The script must run as the same user as the CGI scripts are running, which is user `nobody` on many systems. Example crontab entry: %BR% `0 0 * * * (cd /path/to/twiki/bin; ./statistics >/dev/null 2>&1)` - - There is a workaround in case you can't run the script as user `nobody` : Run the utility `twiki/bin/geturl` in your cron job and specify the URL of the `twiki/bin/statistics` script as a parameter. Example: %BR% `0 0 * * * (cd /path/to/twiki/bin; ./geturl mydomain.com /urlpath/to/twiki/bin/statistics >/dev/null 2>&1)` + - There is a workaround in case you can't run the script as user `nobody` : Run the utility `twiki/tools/geturl.pl` in your cron job and specify the URL of the `twiki/bin/statistics` script as a parameter. Example: %BR% `0 0 * * * (cd /path/to/twiki/tools; ./geturl.pl mydomain.com /urlpath/to/twiki/bin/statistics >/dev/null 2>&1)` When running from the command line or a cron job, you can pass parameters to the script like this: @@ -109,7 +110,7 @@ TWiki generates monthly log files which are used by the statistics script - The file name is `log.txt` - Example path name: `twiki/logs/log201006.txt` - Each access gets logged as: %BR% `|