commit 0a6ea997c2e843ddc5562c1cad5b07f655c320af
parent e8856471935a7cb76946b308c5256a7e04aa2dec
Author: dankert <devnull@localhost>
Date: Tue, 7 Sep 2004 23:12:30 +0200
F?llen des Navigationsbaumes mit neuen Klassen
Diffstat:
1 file changed, 255 insertions(+), 663 deletions(-)
diff --git a/actionClasses/TreeAction.class.php b/actionClasses/TreeAction.class.php
@@ -1,665 +1,257 @@
-<?php
-// ---------------------------------------------------------------------------
-// $Id$
-// ---------------------------------------------------------------------------
-// DaCMS Content Management System
-// Copyright (C) 2002 Jan Dankert, jandankert@jandankert.de
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-// ---------------------------------------------------------------------------
+<?php
+// ---------------------------------------------------------------------------
+// $Id$
+// ---------------------------------------------------------------------------
+// DaCMS Content Management System
+// Copyright (C) 2002 Jan Dankert, jandankert@jandankert.de
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+// ---------------------------------------------------------------------------
// $Log$
-// Revision 1.4 2004-05-02 14:49:37 dankert
-// Einfügen package-name (@package)
-//
-// Revision 1.3 2004/04/25 17:53:37 dankert
-// Neue Methode openall()
-//
-// Revision 1.2 2004/04/25 12:50:11 dankert
-// Korrektur: Projektliste
-//
-// Revision 1.1 2004/04/24 15:14:52 dankert
-// Initiale Version
-//
-// Revision 1.1 2003/09/29 18:19:48 dankert
-// erste Version
-//
-// ---------------------------------------------------------------------------
-
-/**
- * Action-Klasse zum Laden/Anzeigen des Navigations-Baumes
- * @author $Author$
- * @version $Revision$
- * @package openrat.actions
- */
-
-class TreeAction extends Action
-{
- var $defaultSubAction = 'reload';
-
-
- /**
- * Öffnen aller Baumelemente
- */
- function openall()
- {
- global $SESS;
- $projectid = $this->getSessionVar('projectid');
- $SESS['tree_open'][$projectid] = array();
-
- foreach( $SESS['tree'] as $key=>$val )
- {
- array_push($SESS['tree_open'][$projectid],$key);
- }
-
- $this->callSubAction('show');
- }
-
-
- /**
- * Öffnen eines Baumelementes
- */
- function open()
- {
- global $SESS;
- array_push($SESS['tree_open'][$this->getSessionVar('projectid')],$this->getRequestVar('open'));
-
- $this->callSubAction('show');
- }
-
-
- /**
- * Schließen eines Baumelementes
- */
- function close()
- {
- global $SESS;
- $key = array_search( $this->getRequestVar('close'),$SESS['tree_open'][$this->getSessionVar('projectid')] );
- if ( !is_null($key) && $key!==false )
- unset( $SESS['tree_open'][$this->getSessionVar('projectid')][$key] );
-
- $this->callSubAction('show');
- }
-
-
- /**
- * Neues Laden des Baumes
- */
- function reload()
- {
- // Hinzufügen eines Ordners incl. Unterelemente zur Projektstruktur
- function add_folder( $objectid )
- {
- global
- $SESS,
- $projectid;
-
- $f = new Folder( $objectid );
- $t = time();
-
- foreach( $f->getObjectIds() as $id )
- {
- $o = new Object( $id );
-
- // Wenn keine Leseberechtigung
- if ( !$o->hasRight('read') )
- continue;
-
- $o->load();
-
- if ( $o->isFolder )
- {
- $SESS['tree']['o'.$id] = array('text' => Text::maxLaenge( 25,$o->name ),
- 'desc' => lang('FOLDER').' '.$id.' '.$o->desc,
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'folder',
- 'objectid' =>$id )),
- 'icon' => 'folder',
- 'parent' => "o$objectid",
- 'target' => 'cms_main' );
- add_folder( $id );
- }
- if ( $o->isPage )
- {
- $SESS['tree']['o'.$id] = array('text' => Text::maxLaenge( 25,$o->name ),
- 'desc' => lang('PAGE').' '.$id.' '.$o->desc,
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'page',
- 'objectid' =>$id )),
- 'icon' => 'page',
- 'parent' => "o$objectid",
- 'target' => 'cms_main' );
-
- // Nur wenn die Seite beschreibbar ist, werden die
- // Elemente im Baum angezeigt
- if ( $o->hasRight('write') )
- add_page_elements( $id );
- }
- if ( $o->isFile )
- {
- $file = new File( $id );
- $file->load();
- if ( substr($file->mimeType(),0,6) == 'image/' )
- $icon = 'image';
- else $icon = 'file';
-
- $SESS['tree']['o'.$id] = array('text' => Text::maxLaenge( 25,$o->name ),
- 'desc' => lang('FILE').' '.$id.' '.$o->desc,
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'file',
- 'objectid' =>$id )),
- 'icon' => $icon,
- 'parent' => "o$objectid",
- 'target' => 'cms_main' );
- }
- if ( $o->isLink )
- {
- $SESS['tree']['o'.$id] = array('text' => Text::maxLaenge( 25,$o->name ),
- 'desc' => lang('LINK').' '.$id.' '.$o->desc,
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'link',
- 'objectid' =>$id )),
- 'icon' => 'link',
- 'parent' => "o$objectid",
- 'target' => 'cms_main' );
- }
- }
- }
-
-
-
- function add_page_elements( $objectid )
- {
- global $SESS,$conf_php,$t_element;
-
- $page = new Page( $objectid );
- $page->load();
-
- $template = new Template( $page->templateid );
-
- foreach( $template->getElementIds() as $elementid )
- {
- $element = new Element( $elementid );
- $element->load();
-
- if ( $element->isWritable() )
- {
- $SESS['tree']['o'.$objectid.'el'.$elementid ] = array('text' => $element->name,
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'pageelement',
- 'callSubaction' =>'edit',
- 'objectid' =>$objectid,
- 'elementid' =>$elementid )),
- 'icon' => 'el_'.$element->type,
- 'desc' => Text::maxLaenge( 25,$element->desc ),
- 'parent' => "o$objectid",
- 'target' => 'cms_main' );
- }
- }
- }
- global $SESS;
- $projectid = $this->getSessionVar('projectid');
-
- if ( $this->getRequestVar('projectid') != '' )
- {
- // Beim Laden eines neuen Projektes die bisherigen
- // Sprach- und Projektmodelleinstellungen entfernen
- unset( $SESS['modelid'] );
- unset( $SESS['languageid' ] );
- }
-
- if (!isset($SESS['tree_open']))
- $SESS['tree_open'] = array();
-
- if ( !isset($SESS['tree_open'][$projectid]) )
- $SESS['tree_open'][$projectid] = array();
-
-
- // Erzeugen des Menue-Baums
- //
- language_read(); // TODO Beim 1. stable-Release entfernen!
-
- $SESS['tree'] = array();
-
- if ( $projectid == 0 )
- {
- }
- elseif ( $projectid == -1 )
- {
- // Administration wurde ausgewählt!
-
- $SESS['tree']['projects'] = array('text' => lang('PROJECTS'),
- 'url' => Html::url(array('action' =>'main',
- 'callSubaction'=>'listing',
- 'callAction' =>'project',
- 'projectid' =>'0')),
- 'icon' => 'project_list',
- 'desc' => '',
- 'target'=> 'cms_main' );
-
- // Schleife über alle Projekte
- foreach( Project::getAll() as $id=>$name )
- {
- $SESS['tree']['prj'.$id] = array('text' => $name,
- 'parent'=> 'projects',
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'project',
- 'callSubaction'=>'edit',
- 'projectid' =>$id )),
- 'icon' => 'project',
- 'desc' => '',
- 'target'=> 'cms_main' );
- }
-
- $SESS['tree']['usergroups'] = array('text' => lang('USER_AND_GROUPS'),
- 'desc' => '',
- 'icon' => 'group' );
-
- $SESS['tree']['user'] = array('text' => lang('USER'),
- 'parent'=> 'usergroups',
- 'desc' => '',
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'user',
- 'userid' =>'0',
- 'callSubaction'=>'listing' )),
- 'icon' => 'user',
- 'target'=> 'cms_main' );
-
- foreach( User::listAll() as $id=>$name )
- {
- $u = new User( $id );
- $u->load();
- $SESS['tree']['user'.$id] = array('text' => $u->name,
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'user',
- 'callSubaction'=>'edit',
- 'userid' =>$id )),
- 'icon' => 'user',
- 'desc' => $u->fullname,
- 'parent' => "user",
- 'target' => 'cms_main' );
- }
-
- $SESS['tree']['group'] = array('text' => lang('GROUPS'),
- 'parent'=> 'usergroups',
- 'desc' => '',
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'group',
- 'callSubaction'=>'listing',
- 'groupid' =>'0' )),
- 'icon' => 'group',
- 'target'=> 'cms_main' );
-
- foreach( Group::getAll() as $id=>$name )
- {
- $g = new Group( $id );
- $g->load();
- $SESS['tree']['group'.$id] = array('text' => $g->name,
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'group',
- 'groupid' =>$id )),
- 'icon' => 'group',
- 'desc' => lang('GROUP').' '.$g->name,
- 'parent' => "group",
- 'target' => 'cms_main' );
-
- foreach( $g->getUsers() as $id=>$name )
- {
- $u = new User( $id );
- $u->load();
- $SESS['tree']['groupuser'.$id] = array('text' => $u->name,
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'user',
- 'userid' =>$id )),
- 'icon' => 'user',
- 'desc' => $u->fullname,
- 'parent' => 'group'.$g->groupid,
- 'target' => 'cms_main' );
- }
- }
- }
- else
- {
- // Projektstruktur
- // --------------------------------------------------
-
- if ( !isset($SESS['languageid']) || intval($SESS['languageid']) == 0 )
- // Ermitteln Default-Sprache
- $SESS['languageid'] = Language::getDefaultId();
-
- // Ermitteln Default-Projektmodell
- if ( !isset($SESS['modelid']) || intval($SESS['modelid']) == 0 )
- $SESS['modelid'] = Model::getDefaultId();
-
-
- // Den Highlander-Ordner lesen (es kann nur einen geben)
-
-
- $f = new Folder();
- $f->projectid = $projectid;
- $folder = new Folder( $f->getRootObjectId() );
- unset( $f );
- $folder->load();
- if ( $folder->hasRight('read') )
- {
- $SESS['tree']['o'.$folder->objectid ] = array('text' => $folder->name,
- 'desc' => $folder->desc,
- 'icon' => 'folder',
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'folder',
- 'objectid' =>$folder->objectid )),
- 'target' => 'cms_main' );
- // Diesen Ordner immer aufklappen
- if ( !in_array('o'.$folder->objectid,$SESS['tree_open'][$projectid]))
- array_push( $SESS['tree_open'][$projectid],'o'.$folder->objectid);
-
- add_folder( $folder->objectid );
- }
-
-
-
- // Templates anzeigen
- //
- if ( $SESS['user']['is_admin'] == '1' )
- {
- $SESS['tree']['tpl'] = array('text' => lang('TEMPLATES'),
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'template',
- 'callSubaction'=>'listing',
- 'templateid' =>'0' )),
- 'desc' => '',
- 'icon' => 'tpl_list',
- 'target' => 'cms_main' );
- foreach( Template::getAll() as $id=>$name )
- {
- $t = new Template( $id );
- $t->load();
- $SESS['tree']['tpl'.$id ] = array('text' => $t->name,
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'template',
- 'templateid' =>$id )),
- 'parent' => "tpl",
- 'icon' => 'tpl',
- 'desc' => '',
- 'target' => 'cms_main' );
- // Anzeigen der Template-Elemente
- //
- foreach( $t->getElementIds() as $elementid )
- {
- $e = new Element( $elementid );
- $e->load();
- $SESS['tree']['tpl'.$id.'el'.$elementid] = array('text' => $e->name,
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'element',
- 'callSubaction'=>'edit',
- 'templateid'=>$id,
- 'elementid' =>$elementid )),
- 'icon' => 'el_'.$e->type,
- 'desc' => '',
- 'parent' => 'tpl'.$id,
- 'target' => 'cms_main' );
- }
- }
- }
-
-
- // Sprachvarianten
- //
- $l = new Language();
- $l->projectid = $projectid;
- $languages = $l->getAll();
-
- if ( $this->userIsAdmin() || count($languages) > 1 )
- {
- $SESS['tree']['lang'] = array('text' => lang('LANGUAGES'),
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'language',
- 'callSubaction'=>'listing' )),
- 'icon' => 'lang_list',
- 'desc' => '',
- 'target' => 'cms_main' );
-
- if ( $this->userIsAdmin() )
- {
- foreach( $languages as $languageid=>$name )
- {
- $SESS['tree']['lang'.$languageid] = array('text' => $name,
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'language',
- 'callSubaction'=>'edit',
- 'languageid' =>$languageid )),
- 'parent' => 'lang',
- 'icon' => 'lang',
- 'desc' => '',
- 'target' => 'cms_main' );
- }
- }
- }
-
-
- // Projektvarianten
- //
- $m = new Model();
- $m->projectid = $projectid;
-
- $models = $m->getAll();
-
- if ( $this->userIsAdmin() || count($models) > 1 )
- {
- $SESS['tree']['pvar'] = array('text'=> lang('MODELS'),
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'model',
- 'callSubaction'=>'listing')),
- 'icon' => 'model_list',
- 'desc' => '',
- 'target' => 'cms_main' );
-
- if ( $this->userIsAdmin() )
- {
- foreach( $models as $id=>$name )
- {
- $SESS['tree']['pvar'.$id] = array('text' => $name,
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'model',
- 'callSubaction'=>'edit',
- 'modelid' =>$id )),
- 'parent' => "pvar",
- 'icon' => 'model',
- 'desc' => '',
- 'target' => 'cms_main' );
- }
- }
- }
-
- $SESS['tree']['other'] = array('text' => lang('OTHER'),
- 'desc' => '',
- 'icon' => 'other' );
-
- if ( $SESS['user']['is_admin'] )
- {
- $SESS['tree']['transfer'] = array('text' => lang('FILE_TRANSFER'),
- 'parent'=> 'other',
- 'desc' => '',
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'transfer')),
- 'icon' => 'transfer',
- 'target'=> 'cms_main' );
- }
-
- $SESS['tree']['search'] = array('text' => lang('SEARCH'),
- 'parent'=> 'other',
- 'url' => Html::url(array('action' =>'main',
- 'callAction' =>'search' )),
- 'icon' => 'search',
- 'desc' => '',
- 'target' => 'cms_main' );
- }
-
-
- // Zu jedem Baumelement werden die Kinder ermittelt
- // Ziel: Performancesteigerung, schnellere Baumanzeige.
-
- // Wir benötigen eine Kopie von $SESS['tree'], weil innerhalb einer foreach()-Schleife
- // nicht das gleiche Array nochmal mit foreach() durchlaufen werden kann.
- $SESS['tree_kopie'] = $SESS['tree'];
-
- foreach( $SESS['tree'] as $idx=>$inh )
- {
- $SESS['tree'][$idx]['children'] = array();
-
- foreach( $SESS['tree_kopie'] as $name=>$val )
- {
- if ( isset($val['parent']) && $val['parent'] == $idx )
- {
- $SESS['tree'][$idx]['children'][] = $name;
- }
- }
- }
- unset( $SESS['tree_kopie'] );
-
- //print_r( $SESS['tree'] ); // Debug
-
-
-
- // Ausgabe des Templates
- //
- $this->callSubAction('show');
- }
-
-
- function tree_show_element( $name,&$var )
- {
- global $SESS,$tree_tiefe,$tree_last,$PHP_SELF;
-
- $open = $SESS['tree_open'][ $SESS['projectid'] ];
- $zeile = array();
-
- $el = $SESS['tree'][ $name ];
-
- $children = $el['children'];
-
- if ( !isset($tree_last) )
- $tree_last=array();
-
- $zeile['cols'] = array();
-
- for ($i=1; $i<=$tree_tiefe; $i++)
- {
- if ($tree_last[$i-1] == 1 )
- $zeile['cols'][] = 'blank';
- else $zeile['cols'][] = 'line';
- }
-
- if ( count($children) > 0 )
- {
- if ( !in_array($name,$open) )
- {
- if ($tree_last[$i-1] == 1 )
- $zeile['image'] = 'plus_end';
- else $zeile['image'] = 'plus';
- $zeile['image_url'] = Html::url(array('action'=>'tree','subaction'=>'open','open'=>$name));
- }
- else
- {
- if ($tree_last[$i-1] == 1 )
- $zeile['image'] = 'minus_end';
- else $zeile['image'] = 'minus';
- $zeile['image_url'] = Html::url(array('action'=>'tree','subaction'=>'close','close'=>$name));
- }
- }
- else
- {
- if ($tree_last[$i-1] == 1 )
- $zeile['image'] = 'none_end';
- else $zeile['image'] = 'none';
- }
-
-
- if (isset($el['icon'])) $zeile['icon'] = $el['icon'];
-
- $zeile['text'] = $el['text'];
- $zeile['name'] = $name;
- $zeile['desc'] = $el['desc'];
-
- if ( isset($el['url']) )
- {
- $zeile['url'] = $el['url' ];
- //$zeile['add'] = $el['add'];
-
- if ( isset($el['target']) )
- $zeile['target'] = $el['target'];
- else $zeile['target'] = 'cms_main';
-
- }
-
- $var['zeilen'][] = $zeile;
-
- if ( in_array($name,$open) )
- {
- $nr = 0;
- $tree_tiefe++;
- foreach( $children as $id )
- {
- $nr++;
-
- if ( $nr == count( $children ) )
- $tree_last[$tree_tiefe]=1;
- else $tree_last[$tree_tiefe]=0;
-
- $this->tree_show_element( $id,&$var );
- }
- $tree_tiefe--;
- }
- }
-
-
- /**
- * Anzeigen des Baumes
- */
- function show()
- {
- global $tree_tiefe,$SESS,$tree_last,$var;
-
- $tree_tiefe = 0;
-
- // Unterpunkte ermitteln
- $children = array();
- foreach( $SESS['tree'] as $id=>$el )
- {
- if ( !isset($el['parent']) )
- {
- $children[] = $id;
- }
- }
-
- $anz=0;
- $var['zeilen']=array();
-
- foreach( $children as $child )
- {
-
- $anz++;
- if ( $anz == count($children) )
- $tree_last[$tree_tiefe]=1;
- else $tree_last[$tree_tiefe]=0;
-
- $this->tree_show_element( $child,&$var );
- }
-
- $this->setTemplateVars( $var );
- $this->forward('tree');
- }
-}
-
+// Revision 1.5 2004-09-07 21:12:30 dankert
+// F?llen des Navigationsbaumes mit neuen Klassen
+//
+// Revision 1.4 2004/05/02 14:49:37 dankert
+// Einfügen package-name (@package)
+//
+// Revision 1.3 2004/04/25 17:53:37 dankert
+// Neue Methode openall()
+//
+// Revision 1.2 2004/04/25 12:50:11 dankert
+// Korrektur: Projektliste
+//
+// Revision 1.1 2004/04/24 15:14:52 dankert
+// Initiale Version
+//
+// Revision 1.1 2003/09/29 18:19:48 dankert
+// erste Version
+//
+// ---------------------------------------------------------------------------
+
+/**
+ * Action-Klasse zum Laden/Anzeigen des Navigations-Baumes
+ * @author $Author$
+ * @version $Revision$
+ * @package openrat.actions
+ */
+
+class TreeAction extends Action
+{
+ var $defaultSubAction = 'reload';
+
+
+ /**
+ * Öffnen aller Baumelemente
+ */
+ function openall()
+ {
+ }
+
+
+ /**
+ * Öffnen eines Baumelementes
+ */
+ function open()
+ {
+ $tree = $this->getSessionVar('tree');
+
+ $tree->open( $this->getRequestVar('open') );
+ $this->setSessionVar( 'tree',$tree );
+
+ $this->callSubAction('show');
+ }
+
+
+ /**
+ * Schließen eines Baumelementes
+ */
+ function close()
+ {
+ language_read(); // TODO Beim 1. stable-Release entfernen!
+
+ $tree = $this->getSessionVar('tree');
+ $tree->close( $this->getRequestVar('close') );
+ $this->setSessionVar( 'tree',$tree );
+
+ $this->callSubAction('show');
+ }
+
+
+ /**
+ * Neues Laden des Baumes
+ */
+ function reload()
+ {
+ global $SESS;
+ $projectid = $this->getSessionVar('projectid');
+
+ if ( $this->getRequestVar('projectid') != '' )
+ {
+ // Beim Laden eines neuen Projektes die bisherigen
+ // Sprach- und Projektmodelleinstellungen entfernen
+ unset( $SESS['modelid'] );
+ unset( $SESS['languageid' ] );
+ }
+
+ // Erzeugen des Menue-Baums
+ //
+ language_read(); // TODO Beim 1. stable-Release entfernen!
+
+ if ( $projectid == 0 )
+ {
+ $this->forward('blank');
+ }
+ elseif ( $projectid == -1 )
+ {
+ $tree = new AdministrationTree();
+
+ }
+ else
+ {
+ $tree = new ProjectTree();
+ $tree->projectId = $projectid;
+ $SESS['languageid'] = Language::getDefaultId();
+ $SESS['modelid' ] = Model::getDefaultId();
+ }
+
+ $this->setSessionVar( 'tree',$tree );
+
+
+ // Weiter mit show()
+ //
+ $this->callSubAction('show');
+ }
+
+
+ function outputElement( $elId,$tiefe,$isLast )
+ {
+// echo "elid $elId in tiefe $tiefe";
+ global
+ $tree,
+ $SESS,
+ $PHP_SELF;
+
+ $treeElement = $tree->elements[$elId];
+
+ $zeilen = array();
+ $zeile = array();
+
+ if ( !isset($tree_last) )
+ $tree_last=array();
+
+ $zeile['cols'] = array();
+
+ for ( $i=1; $i<=$tiefe-1; $i++ )
+ {
+ if ( $isLast[$i] )
+ $zeile['cols'][] = 'blank';
+ else $zeile['cols'][] = 'line';
+ }
+
+ if ( $tiefe == 0 )
+ {
+ }
+ elseif ( $treeElement->type != "" )
+ {
+ if ( count($treeElement->subElementIds) == 0 )
+ {
+ if ( $isLast[$tiefe] )
+ $zeile['image'] = 'plus_end';
+ else $zeile['image'] = 'plus';
+
+ $zeile['image_url'] = Html::url(array('action'=>'tree','subaction'=>'open','open'=>$elId));
+ }
+ else
+ {
+ if ( $isLast[$tiefe] )
+ $zeile['image'] = 'minus_end';
+ else $zeile['image'] = 'minus';
+
+ $zeile['image_url'] = Html::url(array('action'=>'tree','subaction'=>'close','close'=>$elId));
+ }
+ }
+ else
+ {
+ if ( $isLast[$tiefe] )
+ $zeile['image'] = 'none_end';
+ else $zeile['image'] = 'none';
+ }
+
+
+
+ $zeile['icon'] = $treeElement->icon;
+ $zeile['text'] = $treeElement->text;
+ $zeile['desc'] = $treeElement->description;
+ $zeile['name'] = $elId;
+
+ // Url setzen
+ if ( $treeElement->url != "" )
+ $zeile['url'] = $treeElement->url;
+
+ // HTML-Target setzen
+ if ( $treeElement->target != "" )
+ $zeile['target'] = $treeElement->target;
+ else $zeile['target'] = 'cms_main';
+
+
+ $zeilen[] = $zeile;
+ // Rekursiv alle Unter-Elemente lesen
+ $nr = 0;
+ foreach( $tree->elements[$elId]->subElementIds as $subElementId )
+ {
+ $nr++;
+ if ( $nr == count($tree->elements[$elId]->subElementIds) )
+ $isLast[$tiefe+1] = true;
+ else $isLast[$tiefe+1] = false;
+
+ $zeilen = array_merge( $zeilen,$this->outputElement( $subElementId,$tiefe+1,$isLast ) );
+ }
+
+ return $zeilen;
+ }
+
+
+ /**
+ * Anzeigen des Baumes
+ */
+ function show()
+ {
+ global
+ $tree,
+ $SESS,
+ $tree_last,
+ $var;
+
+ $var['zeilen']=array();
+
+ global $tree;
+ $tree = $this->getSessionVar('tree');
+
+// echo '<pre>';
+// print_r($tree);
+// echo '</pre>';
+
+ $var['zeilen'] = $this->outputElement( 0,0,array() );
+
+// echo '<pre>';
+// print_r($var['zeilen']);
+// echo '</pre>';
+
+ $this->setTemplateVars( $var );
+ $this->forward('tree');
+ }
+}
+
?>
\ No newline at end of file