Test

PmWiki

pmwiki.org

edit SideBar

PmWiki • ConditionalMarkup

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

July 2014:
Yate 5.4 and YateBTS 4 launched. Added JSON and DNS support in Javascript, Handover support in YateBTS.

March 2014:
YateBTS 2.0 launched. Added authentication and WebGUI. Added USSD support in commercial version.

March 2014:
Yate 5.2 launched. Better JavaScript support and a fixed memory leak.

Jan 2014:
YateBTS 1.0 launched. The first GSM Basestation which works with an IMS/VoLTE core network.

Jan 2014:
Yate 5.1 launched. Better JavaScript support and added libygsm. Elisa chatbot added in RManager

Oct 2013:
OpenHSS is the Yate based HLR/HSS solution for MVNO and LTE carriers.

Oct 2013:
Yate 5 released. Added IPv6 support in SIP for LTE. Improved JavaScript support. Download NOW

Jan 2013:
Yate 4.3 released: Added XML support in Javascript. SCCP - GTT routing between different networks. Stability improvements.
Download NOW

Aug 2012:
Yate 4.2 released: SIP flood protection. Better Jabber/Google Voice support. Usable Javascript. Fixed SIGTRAN links fluctuations.
Download NOW

Apr 2012:
YateClient was accepted in the Mac Store.

Yate 4.1 released: better Gvoice support, iSAC codec, support for new Wanpipe drivers. Fixes T.38 and Mac client issues.

Mar 2012:
SS7Cloud is launched today, 1st March, 2012, by NullTeam, Yate creators. Having all you need to be a US CLEC, it brings SS7 services in a cloud.

Feb 2012:
Yate 4.0 released.
SCCP, TCAP, MAP and CAMEL, TCP and TLS in SIP, Javascript fast prototyping of telephony applications and brand new face for YateClient.

Nov 2011:
Here is a video that, quote "demonstrates the truly awesome power of the YATE engine, as it easily handles 3 simultaneous calls to an audio player application including dtmf (button press) handling "(from PaintedRockComm).

Nov 2011:
Yate will attend ORR - OPENRHEINRUHR (November 12 - 13).

04 May 2011:
sipgate chooses open source project Yate for core infrastructure.

12 Apr 2011:
Yate 3.3.2 released.
Fix for Jingle calls to Google Voice dropping after 5 minutes.
4 Apr 2011:
Yate 3.3 released.
Support for GMail chat conference, fixes for internal microphone in MacOS. Minor fixes in SS7 M2PA and ANSI. Fixes in H.323, SIP and RTP.

9 Mar 2011:
Yate 3.2 released.
Bug fixes in SIGTRAN/MGCP/SS7 and added support for CNAM/LNP lookup by SIP INVITE/3xx.

Feb 2011:
Yate will attend FOSDEM and XMPP summit.

31 Jan 2011:
Yate 3.1 released.
Yate client support for Google Voice. Support for any country tones in tonegen.

20 Dec 2010:
Yate 3.0 released.
SS7 ITU certified. SS7 STP added. Client supports Jabber IM (Google Talk + Facebook).

3 May 2010:
Yate 3.0.0 alpha 3 released. Featuring the new Jabber server and wideband audio.

8 March 2010:
Yate 2.2 released. Mostly bug fixes. Dahdi compatible. Latest 2 release before 3.0.

6-7 February 2010:
Yate booth at FOSDEM 2010. Free CD with Freesentral available.

2 Nov 2009:
Yate 2.1 launched. Can replace a Cisco PGW2200 to control a Cisco AS54xx.

6 Aug 2008:
Yate and OpenSIPS (former OpenSER) join to build IP based clusters.

4 Aug 2008:
Yate 2 launched.


EditHistoryBacklinksRecent ChangesSearch