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:
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 )