openrat-cms

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

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:
actionClasses/ElementAction.class.php | 1+
objectClasses/Element.class.php | 13++++++-------
objectClasses/Value.class.php | 66++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
themes/default/images/icon_el_linkdate.png | 0
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.