Warning: Division by zero in /symlink/usr-local/www/usbdmx.com/LightsOn/pmwiki.php on line 1058

Warning: Division by zero in /symlink/usr-local/www/usbdmx.com/LightsOn/pmwiki.php on line 1058

Warning: Division by zero in /symlink/usr-local/www/usbdmx.com/LightsOn/pmwiki.php on line 1058

Warning: Division by zero in /symlink/usr-local/www/usbdmx.com/LightsOn/pmwiki.php on line 1058

Warning: Division by zero in /symlink/usr-local/www/usbdmx.com/LightsOn/pmwiki.php on line 1058

Warning: Division by zero in /symlink/usr-local/www/usbdmx.com/LightsOn/pmwiki.php on line 1058

Warning: Division by zero in /symlink/usr-local/www/usbdmx.com/LightsOn/pmwiki.php on line 1058

Warning: Cannot modify header information - headers already sent by (output started at /symlink/usr-local/www/usbdmx.com/LightsOn/pmwiki.php:1058) in /symlink/usr-local/www/usbdmx.com/LightsOn/pmwiki.php on line 858
usbdmx.com : The bus powered usb dmx interface : LightsOn opensource lighting framework
usbdmx.com Home of the opto isolated, bus powered, DMX512 interface with both in and out universes. Cheap and simple to build. USBDMX logo

authors, admins (advanced)

Using the (:if:) Directive

The (:if:) directive allows portions of a page to be included or excluded from processing. The generic form of the (:if:) directive is

 (:if cond param:) body (:ifend:)

where "cond" names a condition to be tested (described below), and "param" is a parameter or other argument to the condition.

The built-in conditions include:

 

(:if name PAGENAME:)  -  current page is named "PAGENAME"
(:if group GROUPNAME:)  -  current group is named "GROUPNAME"
(:if auth LEVEL:)  -  viewer is authorized at "LEVEL" where LEVEL can be: read, edit, upload, attr or admin
(:if authid:)  -  current viewer is authenticated
(:if true:)  -  always include text
(:if false:)  -  always exclude text (same as a comment)
(:if attachments:)  -  current page has attachments
(:if date DATE:)  -  true if current date is DATE
(:if date DATE..:)  -  true if current date is DATE or later (unlimited)
(:if date DATE1..DATE2:)  -  true if current date is in range DATE1 to DATE2 (inclusive)

dates are in the format yyyy-mm-dd or yyyymmdd

(:if enabled VAR:)  -  true if PHP VAR is true
(:if equal STRING1 STRING2:)  -  true if STRING1 equals STRING2
(:if match REG_EXPRESSION:)  -  true if current page name matches the regular expression
(:if exists PAGENAME:)  -  true if the page pagename exists

Negated forms of conditions also work:

 

(:if !attachments:)  -  this page has no attachments
 
(:if ! name PAGENAME:) current page is NOT named "PAGENAME"
(:if name -PAGENAME :)
(:if name !PAGENAME :)

Any (:if:) automatically terminates the previous one, thus markup can be easily cased (and are not nested):

 (:if auth read:)* You can read
 (:if auth edit:)* You can edit
 (:if auth upload:)* You can upload
 (:ifend:)

Using wildcard placeholders

The character * can be used as a wildcard to represent any character, zero, one or multiple times.
The character ? can be used as a wildcard to represent any character exactly one time.
Wildcard characters (* and ?) can be used in conditional markup, thus:

 

(:if name PmCal.2005* :)  -  current page is in group PmCal and begins with 2005
(:if group PmWiki* :)  -  current page is in group PmWiki or a group beginning with Pmwiki
(:if name Profiles.*,-Profiles.Profiles :)  -  current page is in group Profiles but not Profiles.Profiles

Combining conditions

Conditions (as previously defined) may be combined into more complex conditional expressions (>=2.1.beta33). Following forms are equivalents:

 (:if expr EXPRESSION :)
 (:if [ EXPRESSION ] :)
 (:if ( EXPRESSION ) :)

Conditions are combined into expressions with boolean operators and brackets. In the next table, A and B are either regular conditions or bracketed sub-expressions of regular conditions:

ExpressionOperatorResult
A and BAndTRUE if both A and B are TRUE.
A or BOrTRUE if either A or B is TRUE.
A xor BXorTRUE if either A or B is TRUE, but not both.
! ANotTRUE if A is not TRUE.
A && BAndTRUE if both A and B are TRUE.
A || BOrTRUE if either A or B is TRUE.

Nota:

  • Spaces around operators and brackets are required.
  • No specific feedback is given for syntaxic errors or unbalanced brackets.

Thus, writing:

 (:if expr auth admin || auth attr || auth edit :)
 [[Logout -> {$Name}?action=logout]]
 (:if:)

provides you a logout link only when authentified with rights higher than 'read'.

admins (advanced)

Creating new conditions

See Cookbook:ConditionalMarkupSamples.

<< InterMap | DocumentationIndex | Page lists >>