openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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:
modules/cms-core/action/FolderAction.class.php | 2+-
modules/util/AdministrationTree.class.php | 473+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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