commit 9bab6e3636f5a07c620f3c6c0ffcf8b0a74df8a8
parent 8951edb9dcdb9948cb66472fa917645fdfe2e822
Author: dankert <devnull@localhost>
Date: Sat, 20 Feb 2010 00:39:35 +0100
Neuer Elementtyp \"linkdate\", Bugfix/Erweiterung von \"linkinfo\".
Diffstat:
4 files changed, 71 insertions(+), 9 deletions(-)
diff --git a/actionClasses/ElementAction.class.php b/actionClasses/ElementAction.class.php
@@ -218,6 +218,7 @@ class ElementAction extends Action
break;
case 'infodate':
+ case 'linkdate':
$subtypes = Array('date_published',
'date_saved',
'date_created' );
diff --git a/objectClasses/Element.class.php b/objectClasses/Element.class.php
@@ -52,6 +52,8 @@ class Element
* <li>link</li>
* <li>date</li>
* <li>insert</li>
+ * <li>linkinfo</li>
+ * <li>linkdate</li>
* <li>code</li>
* <li>info</li>
* <li>infodate</li>
@@ -100,7 +102,7 @@ class Element
*/
var $allLanguages;
- var $readonlyElementNames = array('copy','linkinfo','info','infodate','code','dynamic');
+ var $readonlyElementNames = array('copy','linkinfo','linkdate','info','infodate','code','dynamic');
/**
* Untertyp.
@@ -181,12 +183,6 @@ class Element
' WHERE id={elementid}' );
$sql->setInt( 'elementid',$this->elementid );
}
- else
- {
- $sql = new Sql( 'SELECT * FROM {t_element}'.
- ' WHERE name={name}' );
- $sql->setString( 'name',$this->name );
- }
$this->setDatabaseRow( $db->getRow( $sql ) );
}
@@ -372,6 +368,7 @@ class Element
'insert' =>array('subtype','withIcon','allLanguages','writable','folderObjectId','defaultObjectId'),
'copy' =>array('prefix','name','defaultText'),
'linkinfo'=>array('prefix','subtype','defaultText'),
+ 'linkdate'=>array('prefix','subtype','dateformat'),
'code' =>array('code'),
'dynamic' =>array('subtype','code'),
'info' =>array('subtype'),
@@ -414,6 +411,7 @@ class Element
'insert',
'copy',
'linkinfo',
+ 'linkdate',
'code',
'dynamic',
'info',
@@ -449,6 +447,7 @@ class Element
case 'info':
case 'infodate':
case 'linkinfo':
+ case 'linkdate':
return 'info';
}
}
diff --git a/objectClasses/Value.class.php b/objectClasses/Value.class.php
@@ -788,9 +788,12 @@ SQL
@list( $linkElementName, $name ) = explode('%',$this->element->name);
if ( is_null($name) )
break;
+
+ $template = new Template( $this->page->templateid );
+ $elementId = array_search( $linkElementName, $template->getElementNames() );
+
- $element = new Element();
- $element->name = $linkElementName;
+ $element = new Element($elementId);
$element->load();
$linkValue = new Value();
@@ -926,7 +929,66 @@ SQL
break;
+ case 'linkdate':
+
+ @list( $linkElementName, $name ) = explode('%',$this->element->name);
+ if ( is_null($name) )
+ break;
+ $template = new Template( $this->page->templateid );
+ $elementId = array_search( $linkElementName, $template->getElementNames() );
+
+ $element = new Element($elementId);
+ $element->load();
+
+ $linkValue = new Value();
+ $linkValue->elementid = $element->elementid;
+ $linkValue->element = $element;
+ $linkValue->pageid = $this->pageid;
+ $linkValue->languageid = $this->languageid;
+ $linkValue->load();
+
+ $objectid = $linkValue->linkToObjectId;
+
+ if ( intval($objectid) == 0 )
+ $objectid = $linkValue->element->defaultObjectId;
+
+ if ( !Object::available( $objectid ) )
+ break;
+
+ $linkedObject = new Object( $objectid );
+ $linkedObject->load();
+
+
+ switch( $this->element->subtype )
+ {
+ case 'date_published':
+ // START_TIME wird zu Beginn im Controller gesetzt.
+ // So erh�lt jede Datei das gleiche Ver�ffentlichungsdatum.
+ $date = START_TIME;
+ break;
+
+ case 'date_saved':
+ $date = $linkedObject->lastchangeDate;
+ break;
+
+ case 'date_created':
+ $date = $linkedObject->createDate;
+ break;
+
+ default:
+ Logger::warn('element:'.$this->element->name.', '.
+ 'type:'.$this->element->type.', '.
+ 'unknown subtype:'.$this->element->subtype);
+ $date = START_TIME;
+ }
+
+ if ( strpos($this->element->dateformat,'%')!==FALSE )
+ $inhalt = strftime( $this->element->dateformat,$date );
+ else
+ $inhalt = date ( $this->element->dateformat,$date );
+ break;
+
case 'longtext':
case 'text':
case 'select':
diff --git a/themes/default/images/icon_el_linkdate.png b/themes/default/images/icon_el_linkdate.png
Binary files differ.