This is the supplemental plugin for the NatSkin. Its main purpose is to supply
"skin states" to control different styles and variations to be switched
dynamically while you are online.
The documentation of the NatSkinPlugin only covers the additional tags that have
been implemented. Have a look at the NatSkin topic for more information.
Syntax
CURREV
Syntax: %CURREV%
returns the current topic revision (compatible among all TWiki engines)
see also:
NATMAXREV,
NATREVISIONSPREVREV,
FORMBUTTON
Syntax: %FORMBUTTON{";lt;format>"}%
returns a link on to add or change the form attached to a topic. This
will be shown on the edit screen depending on WEBFORMs being defined or not.
More precisely FORMBUTTON returns
an empty string if there are no WEBFORMS defined
or an "Add form" link if there are but no form is attached yet
or a "Change form" link to change the current form
The optional %lt;format> string may contain the following variables
$url: the url of the link
$action: the link text
$1: the complete anchor including the link and the text
For example %FORMBUTTON{"| $1"}% will generate a pipe and the formbutton
if possible. See the edit.nat.tmpl template file of the NatSkin.
GETSKINSTYLE
Syntax: %GETSKINSTYLE%
get the current skin style; the priority is
Syntax: %IFSKINSTATE{<tests> then="..." else="..."}%
conditionally returns content depending on the current skin state;
<tests> can be
style="<name>": test if the current style is <name>
variation="<name>": test if the style variation is <name>
border="on,off,thin": test if the current border is on, off or "thin"
buttons="on,off": test if the web buttons are currently on or off
sidebar="left,right,off": test if the sidebar is currently on the right, left or off
searchbox="top,pos1,pos2,pos3,off": test if the searchbox is currently on given position or off
release="beijing,cairo,dakar": test if the twiki release this plugin is installed on is Beijing, Cairo or Dakar
action="view,edit,preview,...": test the current topic action
glue="on,off": control wether to eat surrounding whitespaces or not
final="<name>": test if a skin state variable called <name> is set to be changeable or not using the the FINALPREFERENCES setting; known names are are "style", "sidebar", "buttons", "border", "variation" or "searchbox"; "all" tests wether you can vary the skin at all; "switches" tests of you can change at least one of "sidebar", "buttons", "border" or "searchbox"
The tag will render the "then" content if all tests evaluate to true and
the "else" content otherwise. Tested strings can be regular expressions.
This is the multi-line version of IFSKINSTATE that uses the
same tests as above but takes the content from between the sections; thus,
arbitrary TWikiML might be rendered conditionaly. IFSKINSTATETHEN
expressions can be nested safely. Within a single IFSKINSTATETHEN the
ELSIFSKINSTATE parts can be repeated arbitrarily. Before rendering the
<then|elsif|else condition> any $nop string will be removed first.
Thereby nested TWikiML expressions can be prevented from being expanded in
advance.
KNOWNSTYLES
Syntax: %KNOWNSTYLES%
returns a list of all known skin styles.
KNOWNVARIATIONS
Syntax: %KNOWNVARIATIONS%
returns a list of all known styles variations.
NATFORMLIST
Syntax: %NATFORMLIST{...}%
returns a formatted list of forms that can be attached to a topic. typically used
in the changeform skin template.
paramters:
header
format
footer
separator
selected
web
topic
NATLOGINURL
Syntax: =%NATLOGINURL%
returns an url to a login depending on the current scheme. This
will be a link to
natlogon on any legacy twiki releases or in case the LoginManager is set to "none"
login on using dakar's TemplateLogin
viewauth using ApacheLogin
NATLOGOUTURL
Syntax: %NATLOGOUT%
returns an url to a logout depending on the current login scheme. This
will be a link to
natlogon on any legacy twiki releases or in case the LoginManager is set to "none"
view...?logout=1 on using dakar's TemplateLogin
the empty string in case you are using ApacheLogin (you can't logout explicitely)
NATMAXREV
Syntax: %NATMAXREV%
substitute for %MAXREV% which differes all too much on Beijing, Cairo
and Dakar. This version grants to behave the same.
NATREVISIONS
Syntax: %NATREVISIONS%
substitute for the %REVISIONS% tag which only works on
the TWiki:Plugins/PatternSkin.
NATWEBLOGO
Syntax: %NATWEBLOGO%
returns either a textual or a graphical a logo to be used in the header bar
depending on a set of preference variables.
NATWEBLOGO will check for a couple of preference variables in the following order:
return %NATWEBLOGONAME% if defined
return %NATWEBLOGOIMG% if defined
return %WEBLOGOIMG% if defined
return %WIKITOOLNAME% if defined
or return the string 'TWiki' otherwise
The ...IMG% cases will return a full <img src="..." ... /> tag whereas
the ...NAME% cases will return the string only.
So given you want to have the string TWiki in the logo position
when using NatSkin but not so when using a different skin on the same site.
Then add the following to the TWikiPreferences:
* Set NATWEBLOGONAME = %WIKITOOLNAME%
* Set WEBLOGOIMG = /path/to/your/defaultlogo.gif
If you want to have a different logo using NatSkin than using another skin on the same site
then add the following to the TWikiPreferences:
* Set NATWEBLOGOIMG = /path/to/your/natskinlogo.gif
* Set WEBLOGOIMG = /path/to/your/defaultlogo.gif
PREVREV
Syntax: %PREVREV%
returns the previous topic revision taking NumberOfRevisions into account
SETSKINSTATE
Syntax: =%SETSKINSTATE{...}%
set the skin state using TWiki markup. This is different from using topic preference
variables in three respects: (1) you can set the skin state at any place now, i.e.
INCLUDEing another topic where that topic's preference variables are not evaluated.
(2) SETSKINSTATE "may come to late" in the rendering pipeline so that it does
not take effect throughly; topic preferences are fetched before rendering starts.
(3) it is not checked if the resulting skinstate is "valid" when you use SETSKINSTATE;
this is the case if you use preferences values
The following arguments are known and can be used in any combination:
buttons="..."
sidebar="..."
variation="..."
style="..."
searchbox="..."
border="..."
The values to these keys will be commited into the skin state at once. Multiple
invokations will override any former setting.
USERACTIONS
Syntax: %USERACTIONS{"<format>" ...}%
display separate sets of actions for anonymous or authenticated users.
sep="<span> class="natSep">|</span>": separator between actions
guest="$login$sep$register$sep$print": format string of actions for guests
format="$user$sep$logout$sep$print<br />$edit$sep$attach$sep$move$sep$raw$sep$diff$sep$more": format string of actions for authenticated users
The "guest" and "format" format strings can use the following variables
web="<name>": The web to fetch the component from. Default to the current web.
lineprefix="<prefix>": A prefix to be added to each line of the web component topic before inclusion. Typically three space characters.
multiple : If defined WEBCOMPONENT will allow for multiple inclusions of the same web component topic.
display a web component. A web component "MyComponent" is searched looking for
MyComponent in the current web,
TWikiMyComponent in the Main web,
TWikiMyComponent in the TWiki web and
MyComponent in the TWiki web.
The WEBCOMPONENT tag will retrieve the component where it was found
first. Thereby every web can define a component of its own but if it is
not defined locally a predefined component will be returned. Components
can be predefined in the Main and the TWiki where the name
of the component is prefix with "TWiki" to distinguish them from the
local web components that may be present in the Main and the TWiki.
As a last resort the local components of the TWiki are used.
By default the NatSkin comes with predefined components
Optionally, run NatSkinPlugin_installer to automatically check and install other TWiki modules that this module depends on. You can also do this step manually.
Alternatively, manually make sure the dependencies listed in the table below are resolved.
Visit configure in your TWiki installation, and enable the plugin in the {Plugins} section.
Edit TWiki.TWikiPreferences and change the SKIN variable to "nat"; customize the default style adding the variables SKINSTYLE, STYLEBORDER, STYLEBUTTONS and STYLESIDEBAR (see NatSkin)
If you have set up ssl for your server add the following variable to your TWikiPreferences:
* Set HTTPSLOGON = on
This will prevent passwords being sent in clear-text over a possibly insecure net.
To enable ssl as soon as you logged in use the following rewrite rules in bin/.htaccess:
propagating skin state to context to speed up template resolution, prepending style identifier to SKIN variable to be able to switch the markup together with the css, added NATFORMLIST, a more flexible variantion of the standard FORMLIST
02 Oct 2007:
added support for HistoryPlugin, TinyMCEPlugin
21 Sep 2007:
made external link detection optional, fixed mod_perl/speedy issue detecting new themes on the stylepath, recoded natsearch to be a lot simpler
06 Mar 2007:
improved USERACTIONS tag for more flexibility; added NATSEARCHGLOBAL and NATSEARCHCONTENT flags for NatSearch
05 Feb 2007:
new option NATSEARCHIGNORECASE;
13 Oct 2006:
prevent recursive expansion of WEBCOMPONENTs; fixed natsearch not to print to STDOUT but use standard apis
02 Oct 2006:
respect access rights in WEBCOMPONENTs; prevent deep recursion in WEBCOMPONENTs
18 Sep 2006:
fixed natlogon to run on current TWiki4.1-svn
31 Aug 2006:
don't call getSkin during initPlugin - you may switch off albeit you are needed
29 Aug 2006:
cleaned up and removed all spaghetti code distinguishing beijing, cairo and dakar; removed lots of code that got useless now, i.e. NATSCRIPTURL
25 Aug 2006:
first release that drops beijing and cairo support; fixed and cleaned up initialisation sequence to detect commandline context properly; removed unused IFACCESS tag; minor rewrite of the email obfuscator; fixed natsearch to properly support web.topic jumps; moved part of the documentation to NatSkin
21 Aug 2006:
removed TablePlugin hack loading plugin preferences into the session store; instead provide proper css for twikiTables to match the current style now; this needs TablePlugin from TWiki > 4.0.4; alternatively use the attached patch to it; multiple fixes to email obfuscator; simplified support for localization ; fixed unexpanded MAKETEXT in natsearch
15 Aug 2006:
suport for userinterface internationalization
04 Aug 2006:
fixed detection of the cgi action to be more robust on different apache configurations (rewrites, aliases); implemented NATWEBLOGO to circumvent different ways of using WEBLOGO, WIKITOOLNAME; added a wrapper for natsearch and natlogon to be called using dakar's TWiki::UI:run() mechanism; reintroduced the dependency on the FilterPlugin which is still used in one place; load email obfuscator javascript only when needed
28 Jul 2006:
This version drops the dependency on the FilterPlugin and adds three new dependencies (1) FlexWebListPlugin, (2) BreadCrumbsPlugin and (3) GluePlugin; added use strict; and fixed some minor bugs showing up then; removed NATLOGON, NATLOGOUT tags and replaced it with NATLOGINURL, NATLOGOUTURL for more flexibility; fixed check of USEWYSIWYG preference variable
15 Jun 2006:
remove double target attribute from external urls
26 May 2006:
fixed error fetching the number of the last revision
24 May 2006:
fixed detection of style files to prevent 403 errors; added SETSKINSTATE; added more accesskeys to topic actions; added "nop" class to prevent external link detection
05 May 2006:
fixed table bgcolor for Independence style; display default WebLinks for non-public webs
19 Apr 2006:
use <link rel="stylesheet" ... /> instead of @import url() to ease the pain for js wysiwyg editors
11 Apr 2006:
added STYLEPATH feature; added style=off feature to emulate non-css browser; disable email obfuscation javascript if unused
05 Apr 2006:
added support for dakar's TemplateLogin; changed semantics of NATLOGON, added NATLOGOUT; fixed some grave bugs exposed by the PublishContrib
27 Mar 2006:
moved MySideBar tempaltes to NatSkin; added docu for HTTPSLOGON
20 Mar 2006:
multiple errors in natsearch: always first look into the current web, even for a global search; default to local search, was global before, use g: to switch to global search explicitely; GO function searches in all webs; display number of hits; sort hit results in reverse chronological order
13 Mar 2006:
dont remove leading and trailing whitespaces from web components
11 Mar 2006:
removed MYSIDEBAR tag; new web component search path; new sidebar construction logic using WebLinks; docu restructuring; packaging using BuildContrib
22 Feb 2006:
removed GROUPSUMMARY, ALLUSERS and registrationHandle which where only used on the NatsWiki installation, moved into a plugin of its own; fixed initPlugin not to return 0, disable the plugin if not used with the NatSkin on a per handler base
21 Feb 2006:
externalized the IFDEFINED family into a plugin of its own and added a new dependency for it
15 Feb 2006:
properly detect scripted mode on Dakar
14 Feb 2006:
moved FORMATLIST to TWiki:Plugins/FilterPlugin; added dependency on it; fixed uninitialized variables with perl-5.8.8; added escape chars to IFDEFINED; don't switch off using an atom skin
03 Feb 2006:
added escape chars (percnt, dollar) to IFACCESS to make it more useful; fixed detection of a Dakar engine; fixed default REDDOT in the MySideBarTemplate
26 Jan 2006:
docu fixes
23 Jan 2006:
fixed natlogn; fixed FORMATLIST to expandCommonVariables of the format result
09 Jan 2006:
removed local sandbox; added dependency on DakarContrib; added variable expansion to IFDEFINED; added cleanup code if the AliasPlugin is not installed; improved natsearch customization; w3c fixes in the MySideBarTemplate
06 Dec 2005:
switching off the plugin if the skin is not NatSkin
05 Dec 2005:
skin state variables respect FINALPREFERENCES settings; added WEBCOMPONENT
01 Dec 2005:
added tooltips to topic actions
29 Nov 2005:
fixed warning about using the deprecated endRenderingHandler on Dakar
23 Nov 2005:
added $nop to IFSKINSTATETHEN content
22 Nov 2005:
added support for the WysiwygPlugin; added custom templates for the BlackListPlugin's error messages
10 Nov 2005:
added switchvariation urlparam; work arround bug in Dakar (nested calls to getRenderedVersion()); fixed duplicate target/class in external links; improved MySideBarTemplate using Twisties
09 Nov 2005:
fixed wrong call to expandCommonVariables() ... doh
08 Nov 2005:
fixed use of uninitialized variables; https links to the same site are not external once
02 Nov 2005:
added OBFUSCATEEMAIL flag to switch off this feature
28 Oct 2005:
add searchbox and style variations to the skin state; configuring header art is now done using style variations; fixed the NatSkinStyleBrowser to only "stick" to changes; extended IFSKINSTATE to cover the new skin state variables
25 Oct 2005:
customization of natsearch by WebPreferences
20 Oct 2005:
improved external link detection
10 Oct 2005:
added switchstyle feature to cycle thru all installed skin styles
09 Oct 2005:
rewrite of skin state: support switching border, sidebar, webbuttons and style independently; rewrite of the email obfuscator; improved skin style browser
27 Sep 2005:
added conditional content tags IFSKINSTATE and IFDEFINED; added web button support
30 Aug 2005:
added external link detection; fixed IFSKINSTYLE; added style support for the TWiki:Plugins/TablePlugin