commit 16d83fbc257b6fc376b98bc0a4e4d88a2bd2febc
parent fb48df3201f7244337ab270986669d21f2b0cb8d
Author: Jan Dankert <devnull@localhost>
Date: Wed, 31 Jan 2018 23:47:56 +0100
Der Administration-Tree enthält nun auch die Informationen zu den Projekten. Ziel ist es, nur noch diese Klasse für einen Gesamtbaum zu verwenden.
Diffstat:
2 files changed, 474 insertions(+), 1 deletion(-)
diff --git a/modules/cms-core/action/FolderAction.class.php b/modules/cms-core/action/FolderAction.class.php
@@ -1315,7 +1315,7 @@ class FolderAction extends ObjectAction
$this->setTemplateVar('object' ,$list );
$this->setTemplateVar('act_objectid',$this->folder->id);
- $rootFolder = new Folder( Folder::getRootFolderId() );
+ $rootFolder = new Folder( $this->folder->getRootFolderId() );
$rootFolder->load();
$this->setTemplateVar('properties' ,$this->folder->getProperties() );
diff --git a/modules/util/AdministrationTree.class.php b/modules/util/AdministrationTree.class.php
@@ -1,8 +1,16 @@
<?php
+
+use cms\model\Element;
+use cms\model\File;
+use cms\model\Link;
+use cms\model\Object;
+use cms\model\Page;
+use cms\model\Template;
use cms\model\User;
use cms\model\Project;
use cms\model\Group;
use cms\model\Folder;
+use cms\model\Value;
// OpenRat Content Management System
// Copyright (C) 2002-2012 Jan Dankert, cms@jandankert.de
@@ -589,6 +597,471 @@ class AdministrationTree extends AbstractTree
$this->addTreeElement( $treeElement );
}
}
+
+
+
+ function page( $id )
+ {
+ $page = new Page( $id );
+ $page->load();
+
+ $template = new Template( $page->templateid );
+
+ foreach( $template->getElementIds() as $elementid )
+ {
+ $element = new Element( $elementid );
+ $element->load();
+
+ if ( $element->isWritable() )
+ {
+ $treeElement = new TreeElement();
+ $treeElement->id = $id.'_'.$elementid;
+ $treeElement->extraId['elementid'] = $elementid;
+ $treeElement->text = $element->name;
+ $treeElement->url = Html::url('pageelement','edit',
+ $id.'_'.$elementid,
+ array('elementid'=>$elementid,
+ REQ_PARAM_TARGETSUBACTION=>'edit',REQ_PARAM_TARGET=>'content'));
+ $treeElement->action = 'pageelement';
+ $treeElement->icon = 'el_'.$element->type;
+
+ $treeElement->description = lang('EL_'.$element->type);
+ if ( $element->desc != '' )
+ $treeElement->description .= ' - '.Text::maxLaenge( 25,$element->desc );
+ else
+ $treeElement->description .= ' - '.lang('GLOBAL_NO_DESCRIPTION_AVAILABLE');
+ $treeElement->target = 'content';
+
+ if ( in_array($element->type,array('link','list','include') ) )
+ {
+ $treeElement->type = 'value';
+ $value = new Value();
+ $value->pageid = $page->pageid;
+ $value->element = $element;
+ $value->load();
+ $treeElement->internalId = $value->valueid;
+ }
+
+ $this->addTreeElement( $treeElement );
+ }
+ }
+ }
+
+
+ function value( $id )
+ {
+ //echo "id: $id";
+ if ( $id != 0 )
+ {
+ $value = new Value();
+ $value->loadWithId( $id );
+
+ $objectid = intval($value->linkToObjectId);
+ if ( $objectid != 0 )
+ {
+ $object = new Object( $objectid );
+ $object->load();
+
+ $treeElement = new TreeElement();
+ $treeElement->id = $id;
+ $treeElement->text = $object->name;
+ if ( in_array($object->getType(),array('page','folder')))
+ {
+ $treeElement->type = $object->getType();
+ $treeElement->internalId = $object->objectid;
+ }
+ $treeElement->url = Html::url($object->getType(),'',$objectid,array(REQ_PARAM_TARGET=>'content'));
+ $treeElement->action = $object->getType();
+ $treeElement->icon = $object->getType();
+
+ $treeElement->description = lang('GLOBAL_'.$object->getType());
+ if ( $object->desc != '' )
+ $treeElement->description .= ' - '.Text::maxLaenge( 25,$object->desc );
+ else
+ $treeElement->description .= ' - '.lang('GLOBAL_NO_DESCRIPTION_AVAILABLE');
+ $treeElement->target = 'content';
+
+ $this->addTreeElement( $treeElement );
+ }
+ }
+ }
+
+
+ function link( $id )
+ {
+ $link = new Link( $id );
+ $link->load();
+
+ if ( $link->isLinkToObject )
+ {
+ $o = new Object( $link->linkedObjectId );
+ $o->load();
+
+ $treeElement = new TreeElement();
+ $treeElement->id = $o->objectid;
+ $treeElement->internalId = $o->objectid;
+ $treeElement->target = 'content';
+ $treeElement->text = $o->name;
+ $treeElement->description= lang( 'GLOBAL_'.$o->getType() ).' '.$id;
+
+ if ( $o->desc != '' )
+ $treeElement->description .= ': '.$o->desc;
+ else
+ $treeElement->description .= ' - '.lang('GLOBAL_NO_DESCRIPTION_AVAILABLE');
+
+ $treeElement->url = Html::url($o->getType(),'',$o->objectid,array(REQ_PARAM_TARGET=>'content') );
+ $treeElement->action = $o->getType();
+ $treeElement->icon = $o->getType();
+
+ // Besonderheiten fuer bestimmte Objekttypen
+
+ if ( $o->isPage )
+ {
+ // Nur wenn die Seite beschreibbar ist, werden die
+ // Elemente im Baum angezeigt
+ if ( $o->hasRight( ACL_WRITE ) )
+ $treeElement->type='pageelements';
+ }
+ $this->addTreeElement( $treeElement );
+ }
+ }
+
+
+ /**
+ * Laedt Elemente zu einem Ordner
+ * @return Array
+ */
+ function folder( $id )
+ {
+ global
+ $SESS,
+ $projectid;
+
+ $f = new Folder( $id );
+ $t = time();
+
+ foreach( $f->getObjects() as $o )
+ {
+ // Wenn keine Leseberechtigung
+ if ( !$o->hasRight( ACL_READ ) )
+ continue;
+
+ $treeElement = new TreeElement();
+ $treeElement->id = $o->objectid;
+ $treeElement->internalId = $o->objectid;
+ $treeElement->target = 'content';
+ $treeElement->text = $o->name;
+ $treeElement->description= lang( 'GLOBAL_'.$o->getType() ).' '.$o->objectid;
+
+ if ( $o->desc != '' )
+ $treeElement->description .= ': '.$o->desc;
+ else
+ $treeElement->description .= ' - '.lang('GLOBAL_NO_DESCRIPTION_AVAILABLE');
+
+ $treeElement->url = Html::url( $o->getType(),'',$o->objectid,array('readit'=>'__OID__'.$o->objectid.'__',REQ_PARAM_TARGET=>'content') );
+ $treeElement->action = $o->getType();
+ $treeElement->icon = $o->getType();
+
+ // Besonderheiten fuer bestimmte Objekttypen
+
+ if ( $o->isLink )
+ {
+ $treeElement->type='link';
+ }
+
+ if ( $o->isPage )
+ {
+ // Nur wenn die Seite beschreibbar ist, werden die
+ // Elemente im Baum angezeigt
+ if ( $o->hasRight( ACL_WRITE ) )
+ $treeElement->type='page';
+ }
+
+ if ( $o->isFile )
+ {
+ $file = new File( $o->objectid );
+ $file->load();
+
+ if ( substr($file->mimeType(),0,6) == 'image/' )
+ $treeElement->icon = 'image';
+ else $treeElement->icon = 'file';
+ }
+
+ if ( $o->isFolder )
+ {
+ $treeElement->type = 'folder';
+ }
+
+
+ $this->addTreeElement( $treeElement );
+ }
+ }
+
+
+ function project_old()
+ {
+ $language = Session::getProjectLanguage();
+ $model = Session::getProjectModel();
+ $user = Session::getUser();
+
+ $project = Session::getProject();
+ $this->projectid = $project->projectid;
+
+ // Hoechster Ordner der Projektstruktur
+ $folder = new Folder( $project->getRootObjectId() );
+ $folder->load();
+
+
+ // Ermitteln, ob der Benutzer Projektadministrator ist
+ // Projektadministratoren haben das Recht, im Root-Ordner die Eigenschaften zu aendern.
+ if ( $folder->hasRight( ACL_PROP ) )
+ $this->userIsProjectAdmin = true;
+
+ if ( $folder->hasRight( ACL_READ ) )
+ {
+ $treeElement = new TreeElement();
+ $treeElement->id = $folder->objectid;
+ // $treeElement->text = $folder->name;
+ $treeElement->text = lang('FOLDER_ROOT');
+ $treeElement->description = lang('FOLDER_ROOT_DESC');
+ $treeElement->icon = 'folder';
+ $treeElement->action = 'folder';
+ $treeElement->url = Html::url( 'folder','',$folder->objectid,array(REQ_PARAM_TARGET=>'content') );
+ $treeElement->target = 'content';
+ $treeElement->type = 'folder';
+ $treeElement->internalId = $folder->objectid;
+ $this->addTreeElement( $treeElement );
+ }
+
+
+ if ( $this->userIsProjectAdmin )
+ {
+ // Templates
+ $treeElement = new TreeElement();
+ $treeElement->id = 0;
+ $treeElement->text = lang('GLOBAL_TEMPLATES');
+ $treeElement->url = Html::url('template','listing',0,array(REQ_PARAM_TARGETSUBACTION=>'listing',REQ_PARAM_TARGET=>'content'));
+ $treeElement->description= lang('GLOBAL_TEMPLATES_DESC');
+ $treeElement->icon = 'templatelist';
+ $treeElement->action = 'templatelist';
+ $treeElement->target = 'content';
+ $treeElement->type = 'templates';
+ $this->addTreeElement( $treeElement );
+ }
+
+
+ // Sprachen
+ $treeElement = new TreeElement();
+ $treeElement->description= '';
+ $treeElement->id = 0;
+ $treeElement->action = 'languagelist';
+ $treeElement->text = lang('GLOBAL_LANGUAGES');
+ $treeElement->url = Html::url('language','listing',0,array(REQ_PARAM_TARGETSUBACTION=>'listing',REQ_PARAM_TARGET=>'content'));
+ $treeElement->icon = 'languagelist';
+ $treeElement->description= lang('GLOBAL_LANGUAGES_DESC');
+ $treeElement->target = 'content';
+
+ // Nur fuer Projekt-Administratoren aufklappbar
+ if ( $this->userIsProjectAdmin )
+ $treeElement->type = 'languages';
+
+ $this->addTreeElement( $treeElement );
+
+
+ // Projektmodelle
+ $treeElement = new TreeElement();
+ $treeElement->description= '';
+
+ // Nur fuer Projekt-Administratoren aufklappbar
+ if ( $this->userIsProjectAdmin )
+ $treeElement->type = 'models';
+
+ $treeElement->id = 0;
+ $treeElement->description= lang('GLOBAL_MODELS_DESC');
+ $treeElement->text = lang('GLOBAL_MODELS');
+ $treeElement->url = Html::url('model','listing',0,array(REQ_PARAM_TARGETSUBACTION=>'listing',REQ_PARAM_TARGET=>'content'));
+ $treeElement->action = 'modellist';
+ $treeElement->icon = 'modellist';
+ $treeElement->target = 'content';
+ $this->addTreeElement( $treeElement );
+
+
+ // Sonstiges
+// $treeElement = new TreeElement();
+// $treeElement->text = lang('GLOBAL_OTHER');
+// $treeElement->description= lang('GLOBAL_OTHER_DESC');
+// $treeElement->icon = 'other';
+// $treeElement->type = 'other';
+// $this->addTreeElement( $treeElement );
+
+ // Suche
+ $treeElement = new TreeElement();
+ $treeElement->id = 0;
+ $treeElement->text = lang('GLOBAL_SEARCH');
+ $treeElement->url = Html::url('search','',0,array(REQ_PARAM_TARGET=>'content'));
+ $treeElement->action = 'search';
+ $treeElement->icon = 'search';
+ $treeElement->description = lang('GLOBAL_SEARCH_DESC');
+ $treeElement->target = 'content';
+ $this->addTreeElement( $treeElement );
+
+ }
+
+
+ function templates()
+ {
+ foreach( Template::getAll() as $id=>$name )
+ {
+ $treeElement = new TreeElement();
+
+ $t = new Template( $id );
+ $t->load();
+ $treeElement->text = $t->name;
+ $treeElement->id = $id;
+ $treeElement->url = Html::url('template','src',$id,array(REQ_PARAM_TARGETSUBACTION=>'src',REQ_PARAM_TARGET=>'content'));
+ $treeElement->icon = 'template';
+ $treeElement->action = 'template';
+ $treeElement->target = 'content';
+ $treeElement->internalId = $id;
+ $treeElement->type = 'template';
+ $treeElement->description = $t->name.' ('.lang('GLOBAL_TEMPLATE').' '.$id.'): '.htmlentities(Text::maxLaenge( 40,$t->src ));
+ $this->addTreeElement( $treeElement );
+ }
+ }
+
+
+ function template( $id )
+ {
+
+ $t = new Template( $id );
+ $t->load();
+
+ // Anzeigen der Template-Elemente
+ //
+ foreach( $t->getElementIds() as $elementid )
+ {
+ $e = new Element( $elementid );
+ $e->load();
+
+ // "Code"-Element nur fuer Administratoren
+ if ( $e->type == 'code' && !$this->userIsAdmin )
+ continue;
+
+ $treeElement = new TreeElement();
+ $treeElement->id = $elementid;
+ $treeElement->text = $e->name;
+ $treeElement->url = Html::url('element','',$elementid,array(REQ_PARAM_TARGET=>'content') );
+ $treeElement->icon = 'el_'.$e->type;
+ $treeElement->action = 'element';
+
+ if ( $e->desc == '' )
+ $desc = lang('GLOBAL_NO_DESCRIPTION_AVAILABLE');
+ else
+ $desc = $e->desc;
+ $treeElement->description = $e->name.' ('.lang('EL_'.$e->type).'): '.Text::maxLaenge( 40,$desc );
+ $treeElement->target = 'content';
+ $this->addTreeElement( $treeElement );
+ }
+ }
+
+
+ /**
+ * Sprachen
+ */
+ function languages()
+ {
+ // Sprachvarianten
+ //
+ $l = Session::getProjectLanguage();
+ $languages = $l->getAll();
+
+ foreach( $languages as $languageid=>$name )
+ {
+ $treeElement = new TreeElement();
+ $treeElement->id = $languageid;
+ $treeElement->text = $name;
+ $treeElement->url = Html::url('language','edit',$languageid,
+ array(REQ_PARAM_TARGETSUBACTION=>'edit',REQ_PARAM_TARGET=>'content') );
+ $treeElement->icon = 'language';
+ $treeElement->action = 'language';
+ $treeElement->description = '';
+ $treeElement->target = 'content';
+ $this->addTreeElement( $treeElement );
+ }
+ }
+
+
+ // Projektvarianten
+ //
+ function models()
+ {
+ $m = Session::getProjectModel();
+ $models = $m->getAll();
+
+ foreach( $models as $id=>$name )
+ {
+ $treeElement = new TreeElement();
+ $treeElement->id = $id;
+ $treeElement->text = $name;
+ $treeElement->url = Html::url('model','edit',$id,
+ array(REQ_PARAM_TARGETSUBACTION=>'edit',REQ_PARAM_TARGET=>'content'));
+ $treeElement->action = 'model';
+ $treeElement->icon = 'model';
+ $treeElement->description = '';
+ $treeElement->target = 'content';
+ $this->addTreeElement( $treeElement );
+ }
+ }
+
+
+ function other()
+ {
+// Deaktiviert, da
+// - Dateien auf den Server laden unverst�ndlich/undurchsichtig erscheint
+// - M�glichkeit zum Entpacken von ZIP/TAR online besteht.
+// if ( $this->userIsProjectAdmin )
+// {
+// $treeElement = new TreeElement();
+// $treeElement->text = lang('GLOBAL_FILE_TRANSFER');
+// $treeElement->description = lang('GLOBAL_FILE_TRANSFER_DESC');
+// $treeElement->url = Html::url('main','transfer');
+// $treeElement->icon = 'transfer';
+// $treeElement->target = 'content';
+// $this->addTreeElement( $treeElement );
+// }
+
+ $treeElement = new TreeElement();
+ $treeElement->id = 0;
+ $treeElement->text = lang('GLOBAL_SEARCH');
+ $treeElement->url = Html::url('search');
+ $treeElement->icon = 'search';
+ $treeElement->action = 'search';
+ $treeElement->description = lang('GLOBAL_SEARCH_DESC');
+ $treeElement->target = 'content';
+ $this->addTreeElement( $treeElement );
+
+
+ $treeElement = new TreeElement();
+ $treeElement->id = 0;
+ $treeElement->text = lang('USER_YOURPROFILE');
+ $treeElement->url = Html::url('profile','edit',0,array(REQ_PARAM_TARGET=>'content'));
+ $treeElement->icon = 'user';
+ $treeElement->action = 'profile';
+ $treeElement->description = lang('USER_PROFILE_DESC');
+ $treeElement->target = 'content';
+ $this->addTreeElement( $treeElement );
+
+
+ $treeElement = new TreeElement();
+ $treeElement->id = 0;
+ $treeElement->text = lang('GLOBAL_PROJECTS');
+ $treeElement->url = Html::url('index','projectmenu',0,array(REQ_PARAM_TARGET=>'content'));
+ $treeElement->icon = 'project';
+ $treeElement->description = lang('GLOBAL_PROJECTS');
+ $treeElement->target = 'content';
+ $this->addTreeElement( $treeElement );
+ }
+
}
?>
\ No newline at end of file