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 using one of these three equivalent forms:

 (: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 »

Last edited by hartwork.   Page last modified on March 17, 2006

Legal Information |  Designed and built by Emergency Digital. | Hosted by Steadfast Networks