This is an alpha version and is still under development. See ConditionalPluginDev? for discussion.
This plugin adds the ability to do simple, not nested, conditional rendering in topics.
It attempts to do this in a relatively secure manner by applying the following security measures:
- restrictive filter for the expression of 'scalar operator scalar'
- where 'operator' must be one of
=,>,<,<
,>=,!=,eq,ne,gt,lt,le,ge,<=>,cmp,=~,!~
- the list of valid operators is hardcoded and cannot be changed by users
- and 'scalar' is a string consisting of alphanumeric characters + underscore with no whitespace (\w)
- evaluation of the expression in a sandbox, created with the Safe module.
- only the opcodes in the :base_core set are allowed (see Opcode)
More sophisticated constructs (like support for range-conditions or nested constructs) may appear in future revisions, if and when the need for them
arises.
Syntax Rules
- %IF{ scalar operator scalar }% text %ELSE% text %ENDIF%
- the '%ELSE% text' clause is optional
- Note: at the moment nested if-else-endif constructs are not supported.
Examples
The following example prints something dependent on the topicname (can be usefull in templates)
Result
* This is NOT the
WebHome topic
A different approach, without the 'else' clause:
* This is %IF{ %TOPIC% ne
WebHome }% NOT %ENDIF% the
WebHome topic
Which of course als results in:
Or:
- %IF{ %GMTIME{"$hour"}% > 18 }% Good evening folks!! %ELSE% Good day folks!! %ENDIF%
Which results in:
ConditionalPlugin Global Settings
Plugin settings are stored as preferences variables. To reference a plugin setting write
%<plugin>_<setting>%
, i.e.
%INTERWIKIPLUGIN_SHORTDESCRIPTION%
- One line description, is shown in the TextFormattingRules? topic:
- Set SHORTDESCRIPTION = Adds conditional rendering (if/then/else)
- Debug plugin: (See output in
data/debug.txt
)
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.
- Download the ZIP file from the Plugin web (see below)
- Unzip
ConditionalPlugin.zip
in your twiki installation directory. Content:
File: | Description: |
data/TWiki/ConditionalPlugin.txt | Plugin topic |
data/TWiki/ConditionalPlugin.txt,v | Plugin topic repository |
lib/TWiki/Plugins/ConditionalPlugin.pm | Plugin Perl module |
- See the examples above to check if the installation was successful.
Plugin Info
Related Topics: TWikiPreferences,
TWikiPlugins
--
JeroenVanDongen? - 10 Aug 2002