openrat-cms

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

commit 3e299c69fe996bf0a4027ff663637405c2f83d33
parent 99228dadd00e519864a9b004615f2a1e28946123
Author: dankert <devnull@localhost>
Date:   Tue, 22 May 2007 23:14:06 +0200

Erweiterung f?r die Erzeugung von SSI-Direktiven.

Diffstat:
actionClasses/ElementAction.class.php | 6++++++
language/de.ini.php | 2++
objectClasses/Value.class.php | 162+++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
3 files changed, 121 insertions(+), 49 deletions(-)

diff --git a/actionClasses/ElementAction.class.php b/actionClasses/ElementAction.class.php @@ -237,6 +237,12 @@ class ElementAction extends Action $convertToLang = true; break; + case 'insert': + $subtypes = Array('inline', + 'ssi' ); + $convertToLang = true; + break; + case 'dynamic': $files = Array(); diff --git a/language/de.ini.php b/language/de.ini.php @@ -154,6 +154,8 @@ EL_INFO_PAGE_NAME = "Seite: Name" EL_INFO_PROJECT_ID = "Projekt: ID" EL_INFO_PROJECT_NAME = "Projekt: Name" EL_INFO_URL = "URL zum Einloggen" +EL_INSERT_INLINE="Internes Einfügen bei Veröffentlichung" +EL_INSERT_SSI="Einfügen per Serverside-Include (SSI)" EL_LINK = "Link (Verknüpfung)" EL_LINK_DESC = "Ein Link ist eine Verknüpfung mit einer Seite oder einer Datei" EL_INSERT = "Einfügen" diff --git a/objectClasses/Value.class.php b/objectClasses/Value.class.php @@ -448,69 +448,133 @@ SQL case 'insert': $objectid = $this->linkToObjectId; - $this->page->up_path(); - + if ( intval($objectid) == 0 ) $objectid = $this->element->defaultObjectId; - - if ( $this->simple ) - { - $f = new Folder( $objectid ); - $f->load(); - $inhalt = $f->name; - unset( $f ); - } - else + + if ( ! Object::available( $objectid) ) + return; + + $object = new Object( $objectid ); + $object->objectLoadRaw(); + + if ( $object->isFolder ) { - if ( $objectid != $this->page->objectid ) // Rekursion vermeiden + $this->page->up_path(); + + + if ( $this->simple ) { $f = new Folder( $objectid ); - foreach( $f->getObjectIds() as $oid ) + $f->load(); + $inhalt = $f->name; + unset( $f ); + } + else + { + if ( $objectid != $this->page->objectid ) // Rekursion vermeiden { - if ( $oid != $this->page->objectid ) // Rekursion vermeiden + $f = new Folder( $objectid ); + foreach( $f->getObjectIds() as $oid ) { - $o = new Object( $oid ); - $o->load(); - switch( $o->getType() ) + if ( $oid != $this->page->objectid ) // Rekursion vermeiden { - case OR_TYPE_PAGE: - $p = new Page( $oid ); - $p->public = $this->page->public; - $p->up_path = $this->page->up_path(); - $p->projectmodelid = $this->page->projectmodelid; - $p->languageid = $this->languageid; - $p->load(); - $p->generate(); - $inhalt .= $p->value; - unset( $p ); - break; - case OR_TYPE_LINK: - $l = new Link( $oid ); - $l->load(); - if ( $l->isLinkToObject ) - { - $op = new Object( $l->linkedObjectId ); - $op->load(); - if ( $op->isPage ) + switch( $this->element->subtype ) + { + case '': + case 'inline': + $o = new Object( $oid ); + $o->load(); + switch( $o->getType() ) { - $p = new Page( $l->linkedObjectId ); - $p->public = $this->page->public; - $p->up_path = $this->page->up_path(); - $p->projectmodelid = $this->page->projectmodelid; - $p->languageid = $this->languageid; - $p->load(); - $p->generate(); - $inhalt .= $p->value; - unset( $p ); + case OR_TYPE_PAGE: + $p = new Page( $oid ); + $p->public = $this->page->public; + $p->up_path = $this->page->up_path(); + $p->projectmodelid = $this->page->projectmodelid; + $p->languageid = $this->languageid; + $p->load(); + $p->generate(); + $inhalt .= $p->value; + unset( $p ); + break; + case OR_TYPE_LINK: + $l = new Link( $oid ); + $l->load(); + if ( $l->isLinkToObject ) + { + $op = new Object( $l->linkedObjectId ); + $op->load(); + if ( $op->isPage ) + { + $p = new Page( $l->linkedObjectId ); + $p->public = $this->page->public; + $p->up_path = $this->page->up_path(); + $p->projectmodelid = $this->page->projectmodelid; + $p->languageid = $this->languageid; + $p->load(); + $p->generate(); + $inhalt .= $p->value; + unset( $p ); + } + } + break; } - } - break; + break; + + case 'ssi': + $inhalt .= '<!--#include virtual="'.$this->page->path_to_object($oid).'" -->'; + break; + + default: + $inhalt = '?'.$this->element->subtype.'?'; + } } + else die('FATAL: recursion detected'); + } + } + else die('FATAL: recursion detected'); + } + } + elseif ( $object->isPage ) + { + if ( $this->simple ) + { + $p = new Page( $objectid ); + $p->load(); + $inhalt = $p->name; + unset( $p ); + } + else + { + if ( $objectid != $this->page->objectid ) // Rekursion vermeiden + { + switch( $this->element->subtype ) + { + case '': + case 'inline': + $p = new Page( $objectid ); + $p->public = $this->page->public; + $p->up_path = $this->page->up_path(); + $p->projectmodelid = $this->page->projectmodelid; + $p->languageid = $this->languageid; + $p->load(); + $p->generate(); + $inhalt = $p->value; + unset( $p ); + break; + + case 'ssi': + $inhalt = '<!--#include virtual="'.$this->page->path_to_object($objectid).'" -->'; + break; + + default: + $inhalt = '?'.$this->element->subtype.'?'; + break; } - else die('FATAL: recursion detected'); } + else die('FATAL: recursion detected'); } - else die('FATAL: recursion detected'); } if ( $this->simple )