Objects and properties

Introduction

Reference to objects

Whenever you see ->[object name] in the tables it means that the property is an object "object name" with properties from object object name. You don't need to define the object type. You will often find the according documentation on its own page.

Calculating values (+calc)

Sometimes a data type is set to "something +calc". "+calc" indicates that the value is calculated with "+-/*". Be aware that the operators have no "weight". The calculation is just done from left to right.

Example:

45 + 34 * 2 = 158
(which is the same as this in ordinary arithmetic: (45+34)*2=158)

"... /stdWrap"

When a data type is set to "type /stdWrap" it means that the value is parsed through the stdWrap function with the properties of the value as parameters.

Example:

If the property "pixels" has the data type "integer /stdWrap", the value should be set to an integer and can be parsed through stdWrap.

In a real application we could do like this:

.pixels.field = imagewidth
.pixels.intval = 1

This example imports the value from the field "imagewidth" of the current $cObj->data-array. But we don't trust the result to be an integer so we parse it through the intval()-function.

optionSplit

optionSplit is a very tricky function. It's primarily used in the menu objects where you define properties of a whole bunch of items at once. Here the value of properties would be parsed through this function and depending on your setup you could e.g. let the last menu- item appear with another color than the others.

Syntax

The syntax is like this:

|*| splits the value in parts first, middle and last.

|| splits each of the parts first, middle and last in subparts.

The four rules

The following four rules are used by optionSplit:

  1. The priority is last, first, middle.
  2. If the middle-value is empty (""), the last part of the first- value is repeated.
  3. If the first - and middle value are empty, the first part of the last-value is repeated before the last value.
  4. The middle value is repeated.

Example:

first1 || first2 |*| middle1 || middle2 || middle3 |*| last1 || last2

Examples:

This is very complex and you might think that this has gone too far. But it's actually useful.

Now consider a menu with five items:

Introduction

Who are we?

Business

Contact

Links

... and a configuration like this:

temp.topmenu.1.NO {
  backColor = red
  ....
}

If you look in this reference (see later) at the linkWrap property of the GMENU object, you'll discover that all properties of .NO are parsed through optionSplit. This means that before the individual menu items are generated, the properties are split by this function. Now lets look at some examples:

Subparts ||

Example:

All items take on the same value. Only the first -part is defined and thus it's repeated to all elements

TS:        backColor = red

Introduction (red)

Who are we? (red)

Business (red)

Contact (red)

Links (red)

Example:

Here the first- part is split into subparts. The third subpart is repeated because the menu has five items.

TS:        backColor = red || yellow || green

Introduction (red)first, subpart 1

Who are we? (yellow) first, subpart 2

Business (green) first, subpart 3

Contact (green) first, subpart 3 (repeated)

Links (green) first, subpart 3 (repeated)

Parts |*|

Example:

Now a middle-value is also defined ("white"). This means that after the first two menu-items the middle-value is used.

TS:        backColor = red || yellow |*| white

Introduction (red) first, subpart 1

Who are we? (yellow) first, subpart 2

Business (white) middle

Contact (white) middle

Links (white) middle

Example:

Now a last-value is also defined ("blue || olive"). This means that after the first two menu-items the middle-value is used.

TS:        backColor = red || yellow |*| white |*| blue || olive

Introduction (red) first, subpart 1

Who are we? (yellow) first, subpart 2

Business (white) middle

Contact (blue) last, subpart 1

Links (olive) last, subpart 2

... and if we expand the menu a bit (middle-value is repeated!)

Introduction (red) first, subpart 1

Who are we? (yellow) first, subpart 2

Business (white) middle

.... (white) middle

.... (white) middle

.... (white) middle

.... (white) middle

Contact (blue) last, subpart 1

Links (olive) last, subpart 2

... and if we contract the menu to only four items (the middle -value is discarded as it's priority is the least)

Introduction (red) first, subpart 1

Who are we? (yellow) first, subpart 2

Contact (blue) last, subpart 1

Links (olive) last, subpart 2

... and if we contract the menu to only 3 items (the last subpart of the first-value is discarded as it's priority is less than the last-value)

Introduction (red) first, subpart 1

Contact (blue) last, subpart 1

Links (olive) last, subpart 2

"1: The priority is last, first, middle"

Now the last two examples showed that the last-value has the highest priority, then the first-value and then the middle -value.

"2: If the middle-value is empty, the last part of the first-value is repeated"

Example:

The middle-value is left out now. Then subpart 2 of the first value is repeated. Please observe that no space must exist between the two |*||*|!

TS:        backColor = red || yellow |*||*| blue || olive

Introduction (red) first, subpart 1

Who are we? (yellow) first, subpart 2

Business (yellow) first, subpart 2 (repeated)

Contact (blue) last, subpart 1

Links (olive) last, subpart 2

"3: If the first - and middle value are empty, the first part of the last-value is repeated before the last value"

Example:

The middle-value and first-value are left out now. Then the subpart 1 of the last value is repeated. Please observe that no space must exist between the two |*||*|!

TS:        backColor = |*||*| blue || olive

Introduction (blue) last, subpart 1 (repeated)

Who are we? (blue) last, subpart 1 (repeated)

Business (blue) last, subpart 1 (repeated)

Contact (blue) last, subpart 1

Links (olive) last, subpart 2

"4: The middle value is repeated"

Example:

TS:        backColor = red |*| yellow || green |*|

Introduction (red) first

Who are we? (yellow) middle, subpart 1

Business (green) middle, subpart 2

.... (yellow) middle, subpart 1

.... (green) middle, subpart 2

.... (yellow) middle, subpart 1

.... (green) middle, subpart 2

Contact (yellow) middle, subpart 1

Links (green) middle, subpart 2

Overview with abstract examples

The following table gives you a condensed overview of how the optionSplit rules work together:

optionSplit Resulting items Rule
a a a a a  
a || b || c a b c c c ...  
a || b |*| c a b c c c ...  
a || b |*| c |*| d || e a b c c ... c c d e Rule 1
a || b |*| c |*| d || e a b d e Rule 1
a || b |*| c |*| d || e a d e Rule 1
a || b |*||*| c || d a b ... b c d Rule 2
|*||*| a || b a a ... a b Rule 3
a |*| b || c |*| a b c b c b c ... b c Rule 4