usbdmx.com : The bus powered usb dmx interface : LightsOn opensource lighting framework (original) (raw)

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:

Expression Operator Result
A and B And TRUE if both A and B are TRUE.
A or B Or TRUE if either A or B is TRUE.
A xor B Xor TRUE if either A or B is TRUE, but not both.
! A Not TRUE if A is not TRUE.
A && B And TRUE if both A and B are TRUE.
A | B Or

Nota:

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 >>