Window (Objekt): Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
K (Hob den Schutz von „Window (Objekt)“ auf) |
|||
(7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 38: | Zeile 38: | ||
;<code>[[Collection]] <[[RepositoryTreeNode]]> tree([[String]] name, [[ID]] node, [[Boolean]] hide)</code> | ;<code>[[Collection]] <[[RepositoryTreeNode]]> tree([[String]] name, [[ID]] node, [[Boolean]] hide)</code> | ||
− | :Liefert eine Liste von RepositoryTreeNode-Objekten, mit denen ein Pool-Baum dargestellt werden kann. Die Pools des Baums können auf- | + | :Liefert eine Liste von RepositoryTreeNode-Objekten, mit denen ein Pool-Baum dargestellt werden kann. Die Pools des Baums können auf- und zugeklappt werden. Der Zustand des Baums wird in der Session für jedes Window einzeln gespeichert. |
:;Parameter | :;Parameter | ||
::;<code>String name</code> | ::;<code>String name</code> | ||
− | :::Name für den Baum. Der Name wird verwendet um den Zustand des Baums (welche Pools sind aufgeklappt) in dem Window-Scope zu speichen. Der Name des Baumes | + | :::Name für den Baum. Der Name wird verwendet um den Zustand des Baums (welche Pools sind aufgeklappt) in dem Window-Scope zu speichen. Der Name des Baumes muss mit folgenden Parametern beginnen, um anzugeben, welcher Pool-Baum verwendet werden soll. |
:::* <code>article.<name></code> | :::* <code>article.<name></code> | ||
:::* <code>user.<name></code> | :::* <code>user.<name></code> | ||
Zeile 48: | Zeile 48: | ||
::;<code>ID node</code> | ::;<code>ID node</code> | ||
− | :::Mit | + | :::Mit Hilfe des Nodes wird der Baum automatisch bis zu dem Pool aufgeklappt, in dem sich der Node befinden. Dabei muss der Node kein Pool sein, sondern ganz allgemein ein Element. |
::;<code>Boolean hide</code> | ::;<code>Boolean hide</code> | ||
− | :::Bei der Rechtevergabe von Nutzern kann angegeben werden, | + | :::Bei der Rechtevergabe von Nutzern kann angegeben werden, ob bestimmte Pools versteckt werden sollen. Mit diesem Flag wird angegeben, ob dieser Wert ausgewertet werden soll. Mit hide gleich <code>false</code>, werden auch die eigentlich zu versteckenden Pools angezeigt. |
:;Rückgabewert | :;Rückgabewert | ||
Zeile 58: | Zeile 58: | ||
;<code>[[Collection]] <[[RepositoryTreeNode]]> tree([[String]] name, [[ID]] node, [[Boolean]] hide)</code> | ;<code>[[Collection]] <[[RepositoryTreeNode]]> tree([[String]] name, [[ID]] node, [[Boolean]] hide)</code> | ||
− | :Liefert eine Liste von RepositoryTreeNode-Objekten, mit denen ein Pool-Baum dargestellt werden kann, ab einem bestimmten Pool. Die Pools des Baums können auf- | + | :Liefert eine Liste von RepositoryTreeNode-Objekten, mit denen ein Pool-Baum dargestellt werden kann, ab einem bestimmten Pool. Die Pools des Baums können auf- und zugeklappt werden. Der Zustand des Baums wird in der Session für jedes Window einzeln gespeichert. |
:;Parameter | :;Parameter | ||
::;<code>String name</code> | ::;<code>String name</code> | ||
− | :::Name für den Baum. Der Name wird verwendet um den Zustand des Baums (welche Pools sind aufgeklappt) in dem Window-Scope zu speichen. Der Name des Baumes | + | :::Name für den Baum. Der Name wird verwendet um den Zustand des Baums (welche Pools sind aufgeklappt) in dem Window-Scope zu speichen. Der Name des Baumes muss mit folgenden Parametern beginnen, um anzugeben welcher Pool-Baum verwendet werden soll. |
:::* <code>article.<name></code> | :::* <code>article.<name></code> | ||
:::* <code>user.<name></code> | :::* <code>user.<name></code> | ||
Zeile 68: | Zeile 68: | ||
::;<code>ID node</code> | ::;<code>ID node</code> | ||
− | :::Mit Hilfe des Nodes wird der Baum automatisch bis zu dem Pool aufgeklappt in dem sich Node befinden. Dabei | + | :::Mit Hilfe des Nodes wird der Baum automatisch bis zu dem Pool aufgeklappt in dem sich der Node befinden. Dabei muss der Node kein Pool sein, sondern ganz allgemein ein Element. |
::;<code>Boolean hide</code> | ::;<code>Boolean hide</code> | ||
− | :::Bei der Rechtevergabe von Nutzern kann angegeben werden, | + | :::Bei der Rechtevergabe von Nutzern kann angegeben werden, ob bestimmte Pools versteckt werden sollen. Mit diesem Flag wird angegeben, ob dieser Wert ausgewertet werden soll. Mit hide gleich <code>false</code>, werden auch die eigentlich zu versteckenden Pools angezeigt. |
::;<code>ID root</code> | ::;<code>ID root</code> | ||
:::Dieser Parameter gibt an, ab welchem Pool der Baum dargestellt werden soll. | :::Dieser Parameter gibt an, ab welchem Pool der Baum dargestellt werden soll. | ||
Zeile 80: | Zeile 80: | ||
;<code>[[Collection]] <[[RepositoryTreeNode]]> tree([[String]] name, [[ID]] node, [[Boolean]] hide, [[ID]] root, [[ID]] user)</code> | ;<code>[[Collection]] <[[RepositoryTreeNode]]> tree([[String]] name, [[ID]] node, [[Boolean]] hide, [[ID]] root, [[ID]] user)</code> | ||
− | :Liefert eine Liste von RepositoryTreeNode-Objekten, mit denen ein Pool-Baum dargestellt werden kann, ab einem bestimmten Pool. Die Pools des Baums können auf- | + | :Liefert eine Liste von RepositoryTreeNode-Objekten, mit denen ein Pool-Baum dargestellt werden kann, ab einem bestimmten Pool. Die Pools des Baums können auf- und zugeklappt werden. Der Zustand des Baums wird in der Session für jedes Window einzeln gespeichert. Für den Pool des Baums existiert ein permission-Attribut, das die Rechte des aktuellen Nutzers auf den Pool angibt. Duch die Angabe eines users enthält das permission-Attribut nicht die Rechte des aktuellen Nutzers, sondern die des user. |
:;Parameter | :;Parameter | ||
::;<code>String name</code> | ::;<code>String name</code> | ||
− | :::Name für den Baum. Der Name wird verwendet um den Zustand des Baums (welche Pools sind aufgeklappt) in dem Window-Scope zu speichen. Der Name des Baumes | + | :::Name für den Baum. Der Name wird verwendet um den Zustand des Baums (welche Pools sind aufgeklappt) in dem Window-Scope zu speichen. Der Name des Baumes muss mit folgenden Parametern beginnen, um anzugeben, welcher Pool-Baum verwendet werden soll. |
:::* <code>article.<name></code> | :::* <code>article.<name></code> | ||
:::* <code>user.<name></code> | :::* <code>user.<name></code> | ||
Zeile 90: | Zeile 90: | ||
::;<code>ID node</code> | ::;<code>ID node</code> | ||
− | :::Mit Hilfe des Nodes wird der Baum automatisch bis zu dem Pool aufgeklappt in dem sich Node befinden. Dabei | + | :::Mit Hilfe des Nodes wird der Baum automatisch bis zu dem Pool aufgeklappt in dem sich der Node befinden. Dabei muss der Node kein Pool sein, sondern ganz allgemein ein Element. |
::;<code>Boolean hide</code> | ::;<code>Boolean hide</code> | ||
− | :::Bei der Rechtevergabe von Nutzern kann angegeben werden, | + | :::Bei der Rechtevergabe von Nutzern kann angegeben werden, ob bestimmte Pools versteckt werden sollen. Mit diesem Flag wird angegeben, ob dieser Wert ausgewertet werden soll. Mit hide gleich <code>false</code>, werden auch die eigentlich zu versteckenden Pools angezeigt. |
::;<code>ID root</code> | ::;<code>ID root</code> | ||
:::Dieser Parameter gibt an, ab welchem Pool der Baum dargestellt werden soll. | :::Dieser Parameter gibt an, ab welchem Pool der Baum dargestellt werden soll. | ||
Zeile 99: | Zeile 99: | ||
::;[[Collection]] <[[RepositoryTreeNode]]> | ::;[[Collection]] <[[RepositoryTreeNode]]> | ||
:::Liste von <code>RepositoryTreeNode</code>-Objekten, mit denen ein Pool-Baum dargestellt werden kann. | :::Liste von <code>RepositoryTreeNode</code>-Objekten, mit denen ein Pool-Baum dargestellt werden kann. | ||
+ | |||
+ | ==Beispiele== | ||
+ | Einfaches Beispiel für die Erzeugung und Verwendung eines Trees: | ||
+ | |||
+ | <source lang="xml"> | ||
+ | Template-Pool-Tree mit dem allen Elementen:<br> | ||
+ | <sp:set name="_tree" object="system.window.tree('template.mytree', ${!{system.root.pool.template}}, true)"/> | ||
+ | <table border="1"> | ||
+ | <tr> | ||
+ | <th>name</th> | ||
+ | <th>level</th> | ||
+ | <th>isFirst</th> | ||
+ | <th>isLast</th> | ||
+ | <th>isOpen</th> | ||
+ | <th>hasChildren</th> | ||
+ | </tr> | ||
+ | <sp:loop collection="_tree" item="line"> | ||
+ | <tr> | ||
+ | <td align="left"><sp:print name="line.reference.name"/></td> | ||
+ | <td align="center"><sp:print name="line.level"/></td> | ||
+ | <td align="center"><sp:print name="line.isFirst"/></td> | ||
+ | <td align="center"><sp:print name="line.isLast"/></td> | ||
+ | <td align="center"><sp:print name="line.isOpen"/></td> | ||
+ | <td align="center"><sp:print name="line.hasChildren"/></td> | ||
+ | </tr> | ||
+ | </sp:loop> | ||
+ | </table> | ||
+ | </source> | ||
+ | |||
+ | Komplexes Beispiel für einen Tree, der interaktiv geöffnet und geschlossen werden kann: | ||
+ | |||
+ | (Bei diesem Beispiel sollten die Code-Zeilen um die Links und Listenelemente inline gesetzt werden) | ||
+ | <source lang="xml"> | ||
+ | <%-- | ||
+ | Übergabe-Parameter: | ||
+ | ${_rootpool}: ID des Pools, ab dem der Baum erzeugt werden soll | ||
+ | ${_element}: ID des Elements, ab dem der Baum aufgeklappt werden soll | ||
+ | |||
+ | ${_pool}: Wird durch den Klick auf einen Pool auf die entsprechende ID gesetzt | ||
+ | --%> | ||
+ | |||
+ | <sp:set name="_rootpool" value="${!{system.root.pool.template}}"/> | ||
+ | |||
+ | <style type="text/css"> | ||
+ | .tree { | ||
+ | width: 98%; | ||
+ | margin : 0; | ||
+ | padding : 0; | ||
+ | float: left; | ||
+ | } | ||
+ | .tree li { | ||
+ | margin : 0; | ||
+ | padding: 1px 0 1px 0; | ||
+ | list-style: none; | ||
+ | background: none; | ||
+ | } | ||
+ | .tree ul { | ||
+ | list-style: none; | ||
+ | margin: 0; | ||
+ | padding: 0; | ||
+ | background: url(/img/tree_line_vert.gif) repeat-y 6px 0; | ||
+ | } | ||
+ | .tree ul.lastItem { | ||
+ | background-image: none; | ||
+ | } | ||
+ | .tree ul li { | ||
+ | clear: both; | ||
+ | padding-left: 14px; | ||
+ | } | ||
+ | .tree li.NoChild { | ||
+ | padding-left: 30px; | ||
+ | background: url(/img/tree_line_t.gif) no-repeat 14px; | ||
+ | } | ||
+ | .tree li.lastItemNoChild { | ||
+ | padding-left: 16px; | ||
+ | } | ||
+ | .tree ul li.lastItemNoChild { | ||
+ | padding-left: 30px; | ||
+ | background: url(/img/tree_line_l.gif) no-repeat 14px; | ||
+ | } | ||
+ | .tree a { | ||
+ | display: block; | ||
+ | padding: 1px 0 1px 0; | ||
+ | margin-left: 16px; | ||
+ | } | ||
+ | .tree a:link, .tree a:visited, .tree a:hover, .tree a:active { | ||
+ | text-decoration: none; | ||
+ | } | ||
+ | .tree li.NoChild a { | ||
+ | margin-left: 0; | ||
+ | } | ||
+ | .tree li.lastItemNoChild a { | ||
+ | margin-left: 0; | ||
+ | } | ||
+ | .tree a.treeChanger { | ||
+ | float: left; | ||
+ | width: 13px; | ||
+ | text-align: center; | ||
+ | margin-left: 0; | ||
+ | } | ||
+ | .tree .selected { | ||
+ | background: #ff9966; | ||
+ | } | ||
+ | .tree .selected_secondary { | ||
+ | background: #aeb1bc; | ||
+ | } | ||
+ | .tree a.active { | ||
+ | background-color: #FF9A5C; | ||
+ | } | ||
+ | |||
+ | </style> | ||
+ | |||
+ | <ul class="tree"> | ||
+ | <sp:set name="_treename" value="article.popup.${_rootpool}"/> | ||
+ | <sp:loop collection="system.window.tree(${_treename}, ${_element}, false, ${_rootpool})" item="line"> | ||
+ | <sp:if name="lastLevel" gt="${line.level}"> | ||
+ | <sp:set name="k" expression="${lastLevel} - ${line.level}"/> | ||
+ | <sp:for index="j" from="1" to="${k}"> | ||
+ | </ul></li> | ||
+ | </sp:for> | ||
+ | </sp:if> | ||
+ | <sp:set name="lastLevel" value="${line.level}"/> | ||
+ | <li class="<sp:if name="line.isLast" eq="true">lastItem</sp:if><sp:if name="line.hasChildren" eq="false">NoChild</sp:if>"> | ||
+ | <sp:if name="line.hasChildren" eq="true"> | ||
+ | <a onClick="reloadPage=1;" href="<sp:url template="${system.template}" handler="com.sitepark.ies.control.jsp.handler.TreeHandler"/>;_rootpool=<sp:print name="_rootpool"/>;_element=<sp:print name="_element"/>;_pool=<sp:print name="line.reference.id"/>;SYS_TREE_action=flip;SYS_TREE_name=<sp:print name="_treename"/>;SYS_TREE_id=<sp:print name="line.reference.id"/>" class="treeChanger"> | ||
+ | <sp:condition><sp:if name="line.isOpen" eq="true">–</sp:if><sp:else>+</sp:else></sp:condition> | ||
+ | </a> | ||
+ | </sp:if> | ||
+ | <a<sp:if name="line.reference.id" eq="${_pool}"> class="selected"</sp:if> onClick="reloadPage=1;" href="<sp:url command="/forward"/>forward=<sp:print name="system.template"/>;_rootpool=<sp:print name="_rootpool"/>;_element=<sp:print name="_element"/>_pool=<sp:print name="line.reference.id"/>"> | ||
+ | <sp:print name="line.reference.name"/> | ||
+ | </a> | ||
+ | <sp:if condition="${line.isOpen} == false || ${line.hasChildren} == false"></li></sp:if> | ||
+ | <sp:if condition="${line.isOpen} == true && ${line.hasChildren} == true"> | ||
+ | <ul<sp:if name="line.isLast" eq="true"> class="lastItem"</sp:if>> | ||
+ | </sp:if> | ||
+ | </sp:loop> | ||
+ | <sp:for index="j" from="0" condition="${lastLevel} > 0 && ${j} < ${lastLevel}"> | ||
+ | </ul></li> | ||
+ | </sp:for> | ||
+ | </ul> | ||
+ | </source> | ||
<noinclude> | <noinclude> | ||
[[Category:Objekte]] | [[Category:Objekte]] | ||
− | |||
[[Category:Qualität_des_Codes_prüfen]] | [[Category:Qualität_des_Codes_prüfen]] | ||
</noinclude> | </noinclude> |
Aktuelle Version vom 24. Februar 2010, 12:56 Uhr
Name
Window - Aktuelles Fenster des Nutzers
Beschreibung
Das Window
-Objekt repränsentiert das aktuelle Fenster des Nutzers. Das Fenster ist ein Unter-Objekt der HTTP-Session und kapselt Objekte die zu einer HTTP-Session gehören, die aber nur für ein Browserfenster gültig sind.
Attribute
Attribut | Type | Beschreibung | ab IES Version |
---|---|---|---|
id | Number | Identifierer für dieses Window-Objekt | 1 |
Methoden
Methode | Rückgabewert | Beschreibung | ab IES Version |
---|---|---|---|
tree(String name, ID node, Boolean hide)
|
Collection <RepositoryTreeNode> | Liefert eine Liste von RepositoryTreeNode -Objekten, mit denen ein Pool-Baum dargestellt werden kann.
|
1 |
tree(String name, ID node, Boolean hide, ID root)
|
Collection <RepositoryTreeNode> | Liefert eine Liste von RepositoryTreeNode -Objekten, mit denen ein Pool -Baum dargestellt werden kann, ab einem bestimmten Pool.
|
1 |
tree(String name, ID node, Boolean hide, ID root, ID user)
|
Collection <RepositoryTreeNode> | Liefert eine Liste von RepositoryTreeNode -Objekten, mit denen ein Pool -Baum dargestellt werden kann, ab einem bestimmten Pool.
|
1 |
Collection <RepositoryTreeNode> tree(String name, ID node, Boolean hide)
- Liefert eine Liste von RepositoryTreeNode-Objekten, mit denen ein Pool-Baum dargestellt werden kann. Die Pools des Baums können auf- und zugeklappt werden. Der Zustand des Baums wird in der Session für jedes Window einzeln gespeichert.
- Parameter
-
String name
- Name für den Baum. Der Name wird verwendet um den Zustand des Baums (welche Pools sind aufgeklappt) in dem Window-Scope zu speichen. Der Name des Baumes muss mit folgenden Parametern beginnen, um anzugeben, welcher Pool-Baum verwendet werden soll.
article.<name>
user.<name>
template.<name>
role.<name>
ID node
- Mit Hilfe des Nodes wird der Baum automatisch bis zu dem Pool aufgeklappt, in dem sich der Node befinden. Dabei muss der Node kein Pool sein, sondern ganz allgemein ein Element.
Boolean hide
- Bei der Rechtevergabe von Nutzern kann angegeben werden, ob bestimmte Pools versteckt werden sollen. Mit diesem Flag wird angegeben, ob dieser Wert ausgewertet werden soll. Mit hide gleich
false
, werden auch die eigentlich zu versteckenden Pools angezeigt.
- Rückgabewert
-
- Collection <RepositoryTreeNode>
- Liste von RepositoryTreeNode-Objekten, mit denen ein Pool-Baum dargestellt werden kann.
Collection <RepositoryTreeNode> tree(String name, ID node, Boolean hide)
- Liefert eine Liste von RepositoryTreeNode-Objekten, mit denen ein Pool-Baum dargestellt werden kann, ab einem bestimmten Pool. Die Pools des Baums können auf- und zugeklappt werden. Der Zustand des Baums wird in der Session für jedes Window einzeln gespeichert.
- Parameter
-
String name
- Name für den Baum. Der Name wird verwendet um den Zustand des Baums (welche Pools sind aufgeklappt) in dem Window-Scope zu speichen. Der Name des Baumes muss mit folgenden Parametern beginnen, um anzugeben welcher Pool-Baum verwendet werden soll.
article.<name>
user.<name>
template.<name>
role.<name>
ID node
- Mit Hilfe des Nodes wird der Baum automatisch bis zu dem Pool aufgeklappt in dem sich der Node befinden. Dabei muss der Node kein Pool sein, sondern ganz allgemein ein Element.
Boolean hide
- Bei der Rechtevergabe von Nutzern kann angegeben werden, ob bestimmte Pools versteckt werden sollen. Mit diesem Flag wird angegeben, ob dieser Wert ausgewertet werden soll. Mit hide gleich
false
, werden auch die eigentlich zu versteckenden Pools angezeigt. ID root
- Dieser Parameter gibt an, ab welchem Pool der Baum dargestellt werden soll.
- Rückgabewert
-
- Collection <RepositoryTreeNode>
- Liste von
RepositoryTreeNode
-Objekten, mit denen ein Pool-Baum dargestellt werden kann.
Collection <RepositoryTreeNode> tree(String name, ID node, Boolean hide, ID root, ID user)
- Liefert eine Liste von RepositoryTreeNode-Objekten, mit denen ein Pool-Baum dargestellt werden kann, ab einem bestimmten Pool. Die Pools des Baums können auf- und zugeklappt werden. Der Zustand des Baums wird in der Session für jedes Window einzeln gespeichert. Für den Pool des Baums existiert ein permission-Attribut, das die Rechte des aktuellen Nutzers auf den Pool angibt. Duch die Angabe eines users enthält das permission-Attribut nicht die Rechte des aktuellen Nutzers, sondern die des user.
- Parameter
-
String name
- Name für den Baum. Der Name wird verwendet um den Zustand des Baums (welche Pools sind aufgeklappt) in dem Window-Scope zu speichen. Der Name des Baumes muss mit folgenden Parametern beginnen, um anzugeben, welcher Pool-Baum verwendet werden soll.
article.<name>
user.<name>
template.<name>
role.<name>
ID node
- Mit Hilfe des Nodes wird der Baum automatisch bis zu dem Pool aufgeklappt in dem sich der Node befinden. Dabei muss der Node kein Pool sein, sondern ganz allgemein ein Element.
Boolean hide
- Bei der Rechtevergabe von Nutzern kann angegeben werden, ob bestimmte Pools versteckt werden sollen. Mit diesem Flag wird angegeben, ob dieser Wert ausgewertet werden soll. Mit hide gleich
false
, werden auch die eigentlich zu versteckenden Pools angezeigt. ID root
- Dieser Parameter gibt an, ab welchem Pool der Baum dargestellt werden soll.
- Rückgabewert
-
- Collection <RepositoryTreeNode>
- Liste von
RepositoryTreeNode
-Objekten, mit denen ein Pool-Baum dargestellt werden kann.
Beispiele
Einfaches Beispiel für die Erzeugung und Verwendung eines Trees:
Template-Pool-Tree mit dem allen Elementen:<br>
<sp:set name="_tree" object="system.window.tree('template.mytree', ${!{system.root.pool.template}}, true)"/>
<table border="1">
<tr>
<th>name</th>
<th>level</th>
<th>isFirst</th>
<th>isLast</th>
<th>isOpen</th>
<th>hasChildren</th>
</tr>
<sp:loop collection="_tree" item="line">
<tr>
<td align="left"><sp:print name="line.reference.name"/></td>
<td align="center"><sp:print name="line.level"/></td>
<td align="center"><sp:print name="line.isFirst"/></td>
<td align="center"><sp:print name="line.isLast"/></td>
<td align="center"><sp:print name="line.isOpen"/></td>
<td align="center"><sp:print name="line.hasChildren"/></td>
</tr>
</sp:loop>
</table>
Komplexes Beispiel für einen Tree, der interaktiv geöffnet und geschlossen werden kann:
(Bei diesem Beispiel sollten die Code-Zeilen um die Links und Listenelemente inline gesetzt werden)
<%--
Übergabe-Parameter:
${_rootpool}: ID des Pools, ab dem der Baum erzeugt werden soll
${_element}: ID des Elements, ab dem der Baum aufgeklappt werden soll
${_pool}: Wird durch den Klick auf einen Pool auf die entsprechende ID gesetzt
--%>
<sp:set name="_rootpool" value="${!{system.root.pool.template}}"/>
<style type="text/css">
.tree {
width: 98%;
margin : 0;
padding : 0;
float: left;
}
.tree li {
margin : 0;
padding: 1px 0 1px 0;
list-style: none;
background: none;
}
.tree ul {
list-style: none;
margin: 0;
padding: 0;
background: url(/img/tree_line_vert.gif) repeat-y 6px 0;
}
.tree ul.lastItem {
background-image: none;
}
.tree ul li {
clear: both;
padding-left: 14px;
}
.tree li.NoChild {
padding-left: 30px;
background: url(/img/tree_line_t.gif) no-repeat 14px;
}
.tree li.lastItemNoChild {
padding-left: 16px;
}
.tree ul li.lastItemNoChild {
padding-left: 30px;
background: url(/img/tree_line_l.gif) no-repeat 14px;
}
.tree a {
display: block;
padding: 1px 0 1px 0;
margin-left: 16px;
}
.tree a:link, .tree a:visited, .tree a:hover, .tree a:active {
text-decoration: none;
}
.tree li.NoChild a {
margin-left: 0;
}
.tree li.lastItemNoChild a {
margin-left: 0;
}
.tree a.treeChanger {
float: left;
width: 13px;
text-align: center;
margin-left: 0;
}
.tree .selected {
background: #ff9966;
}
.tree .selected_secondary {
background: #aeb1bc;
}
.tree a.active {
background-color: #FF9A5C;
}
</style>
<ul class="tree">
<sp:set name="_treename" value="article.popup.${_rootpool}"/>
<sp:loop collection="system.window.tree(${_treename}, ${_element}, false, ${_rootpool})" item="line">
<sp:if name="lastLevel" gt="${line.level}">
<sp:set name="k" expression="${lastLevel} - ${line.level}"/>
<sp:for index="j" from="1" to="${k}">
</ul></li>
</sp:for>
</sp:if>
<sp:set name="lastLevel" value="${line.level}"/>
<li class="<sp:if name="line.isLast" eq="true">lastItem</sp:if><sp:if name="line.hasChildren" eq="false">NoChild</sp:if>">
<sp:if name="line.hasChildren" eq="true">
<a onClick="reloadPage=1;" href="<sp:url template="${system.template}" handler="com.sitepark.ies.control.jsp.handler.TreeHandler"/>;_rootpool=<sp:print name="_rootpool"/>;_element=<sp:print name="_element"/>;_pool=<sp:print name="line.reference.id"/>;SYS_TREE_action=flip;SYS_TREE_name=<sp:print name="_treename"/>;SYS_TREE_id=<sp:print name="line.reference.id"/>" class="treeChanger">
<sp:condition><sp:if name="line.isOpen" eq="true">–</sp:if><sp:else>+</sp:else></sp:condition>
</a>
</sp:if>
<a<sp:if name="line.reference.id" eq="${_pool}"> class="selected"</sp:if> onClick="reloadPage=1;" href="<sp:url command="/forward"/>forward=<sp:print name="system.template"/>;_rootpool=<sp:print name="_rootpool"/>;_element=<sp:print name="_element"/>_pool=<sp:print name="line.reference.id"/>">
<sp:print name="line.reference.name"/>
</a>
<sp:if condition="${line.isOpen} == false || ${line.hasChildren} == false"></li></sp:if>
<sp:if condition="${line.isOpen} == true && ${line.hasChildren} == true">
<ul<sp:if name="line.isLast" eq="true"> class="lastItem"</sp:if>>
</sp:if>
</sp:loop>
<sp:for index="j" from="0" condition="${lastLevel} > 0 && ${j} < ${lastLevel}">
</ul></li>
</sp:for>
</ul>