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