Window (Objekt): Unterschied zwischen den Versionen

Aus SiteparkWiki
Zur Navigation springen Zur Suche springen
K (Hob den Schutz von „Window (Objekt)“ auf)
 
(10 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 3: Zeile 3:
  
 
==Beschreibung==
 
==Beschreibung==
Das <code>Window</code>-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, aber nur für ein Browserfenster gültig sind.
+
Das <code>Window</code>-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==
 
==Attribute==
Zeile 22: Zeile 22:
 
|-
 
|-
 
| <code>tree([[String]] name, [[ID]] node, [[Boolean]] hide)</code>
 
| <code>tree([[String]] name, [[ID]] node, [[Boolean]] hide)</code>
| [[Collection]]
+
| [[Collection]]&nbsp;<[[RepositoryTreeNode]]>
 
| Liefert eine Liste von <code>RepositoryTreeNode</code>-Objekten, mit denen ein Pool-Baum dargestellt werden kann.
 
| Liefert eine Liste von <code>RepositoryTreeNode</code>-Objekten, mit denen ein Pool-Baum dargestellt werden kann.
 
| 1
 
| 1
 
|-
 
|-
 
| <code>tree([[String]] name, [[ID]] node, [[Boolean]] hide, [[ID]] root)</code>
 
| <code>tree([[String]] name, [[ID]] node, [[Boolean]] hide, [[ID]] root)</code>
| [[Collection]]
+
| [[Collection]]&nbsp;<[[RepositoryTreeNode]]>
 
| Liefert eine Liste von <code>RepositoryTreeNode</code>-Objekten, mit denen ein <code>Pool</code>-Baum dargestellt werden kann, ab einem bestimmten Pool.
 
| Liefert eine Liste von <code>RepositoryTreeNode</code>-Objekten, mit denen ein <code>Pool</code>-Baum dargestellt werden kann, ab einem bestimmten Pool.
 
| 1
 
| 1
 
|-
 
|-
 
| <code>tree([[String]] name, [[ID]] node, [[Boolean]] hide, [[ID]] root, [[ID]] user)</code>
 
| <code>tree([[String]] name, [[ID]] node, [[Boolean]] hide, [[ID]] root, [[ID]] user)</code>
| [[Collection]]
+
| [[Collection]]&nbsp;<[[RepositoryTreeNode]]>
 
| Liefert eine Liste von <code>RepositoryTreeNode</code>-Objekten, mit denen ein <code>Pool</code>-Baum dargestellt werden kann, ab einem bestimmten Pool.
 
| Liefert eine Liste von <code>RepositoryTreeNode</code>-Objekten, mit denen ein <code>Pool</code>-Baum dargestellt werden kann, ab einem bestimmten Pool.
 
| 1
 
| 1
 
|}
 
|}
  
;<code>[[Collection]] 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- un dzugeklappt werden. Der Zustand des Baums wird in der Session für jedes Window einzelnt gespeichert.
+
: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 muß mit folgenden Parametern beginnen, um anzugeben welcher Pool-Baum verwendet werden soll.
+
:::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 Hifle des Nodes wird der Baum automatisch bis zu dem Pool aufgeklappt in dem sich Node befinden. Dabei muß Node kein Pools sein, sondern ganz allgemein ein Element.
+
:::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, dass bestimmte Pools  versteckt werden sollen. Mit diesem Flag wird angegeben, ob dieser Wert ausgewertet werden soll. Mit node gleich false, werden auch die eigentlich zu versteckenden Pools angezeigt.
+
:::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
::;[[Collection]]
+
::;[[Collection]] <[[RepositoryTreeNode]]>
 
:::Liste von RepositoryTreeNode-Objekten, mit denen ein Pool-Baum dargestellt werden kann.
 
:::Liste von RepositoryTreeNode-Objekten, mit denen ein Pool-Baum dargestellt werden kann.
  
;<code>[[Collection]] 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- un dzugeklappt werden. Der Zustand des Baums wird in der Session für jedes Window einzelnt gespeichert.
+
: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 muß mit folgenden Parametern beginnen, um anzugeben welcher Pool-Baum verwendet werden soll.
+
:::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 muß Node kein Pools sein, sondern ganz allgemein ein Element.
+
:::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, dass bestimmte Pools versteckt werden sollen. Mit diesem Flag wird angegeben, ob dieser Wert ausgewertet werden soll. Mit node gleich false, werden auch die eigentlich zu versteckenden Pools angezeigt.
+
:::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.
  
 
:;Rückgabewert
 
:;Rückgabewert
::;[[Collection]]
+
::;[[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.
  
  
;<code>[[Collection]] 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- un dzugeklappt werden. Der Zustand des Baums wird in der Session für jedes Window einzelnt gespeichert. An für Pool des Baums existiert ein permission-Attribute, das die Rechte des aktuellen Nutzers auf dem Pool angibt. Duch die Angabe eines user enthält das permission-Attribute nicht die Rechte des aktuellen Nutzers, sondern die des 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
 
:;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 muß mit folgenden Parametern beginnen, um anzugeben welcher Pool-Baum verwendet werden soll.
+
:::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 muß Node kein Pools sein, sondern ganz allgemein ein Element.
+
:::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, dass bestimmte Pools versteckt werden sollen. Mit diesem Flag wird angegeben, ob dieser Wert ausgewertet werden soll. Mit node gleich false, werden auch die eigentlich zu versteckenden Pools angezeigt.
+
:::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.
  
 
:;Rückgabewert
 
:;Rückgabewert
::;[[Collection]]
+
::;[[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">&ndash;</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_Inhalts_prüfen]]
 
[[Category:Qualität_der_Sprache_prüfen]]
 
 
[[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">&ndash;</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>