5.2.2.10 treeselect="...", treefold="..." and treeellipsis="..." attributes

The treeselect, treefold, and treeellipsis attributes respectively select, open/close, or expand the ellipsis of an <al-tree> node via a LazyTreeIterator (5.3.10.8) or EllipsisTreeIterator (5.3.10.9) iterator.

These attributes are ignored if any of the following attributes are present; prevpage, or nextpage (5.2.2.9).

An attribute value must be supplied that specifies the name of the LazyTreeIterator iterator.

The name (5.2.2.5) attribute is generated as follows:

>>> import albatross
>>> ctx = albatross.SimpleContext('.')
>>> class Node:
...     def __init__(self, ino):
...         self.ino = ino
...     def albatross_alias(self):
...         return 'ino%d' % self.ino
...
>>> ctx.locals.tree = Node(81489)
>>> albatross.Template(ctx, '<magic>', '''
... <al-tree expr="tree" iter="n">
... <al-input type="image" treeselect="n" srcicons/face.gif" border="0" whitespace>
... </al-tree>
... ''').to_html(ctx)
>>> ctx.flush_content()
<input type="image" srcicons/face.gif" border="0" name="treeselect,n,ino81489">

When merging the browser request the NamespaceMixin.set_value() (7.6) method looks for field names that contain commas. These names are split into operation, iterator, and optional value then the set_backdoor() method of the identified iterator is invoked.

During request merging the above example will execute code equivalent to the following.

ctx.locals.n.set_backdoor('treeselect', 'ino81489', 'treeselect,n,ino81489')

The ``ino81489'' string is generated by calling the albatross_alias() method for the tree node.

If the node(5.2.2.7) attribute is not specified, the node referenced by the current value of the iterator will be used to determine the alias.