openrat-cms

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

commit f6e130645ef3e5d00b60c17c3244502b45e5eccc
parent 85493833e1ac27693d87ae163363cec8907e0a25
Author: dankert <devnull@localhost>
Date:   Wed,  2 May 2007 22:58:45 +0200

Ausw?hlen von Einstellungen f?r Elemente "linkinfo" und "copy".

Diffstat:
actionClasses/ElementAction.class.php | 124+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
objectClasses/Element.class.php | 89+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------
themes/default/templates/element/properties.tpl.src.php | 27+++++++++++++++++----------
3 files changed, 202 insertions(+), 38 deletions(-)

diff --git a/actionClasses/ElementAction.class.php b/actionClasses/ElementAction.class.php @@ -207,6 +207,36 @@ class ElementAction extends Action $convertToLang = true; break; + case 'link': + $subtypes = Array('file,page,link', + 'file', + 'page', + 'link' ); + $convertToLang = true; + break; + + case 'linkinfo': + $subtypes = Array('width', + 'height', + 'id', + 'name', + 'description', + 'mime-type', + 'lastch_user_username', + 'lastch_user_fullname', + 'lastch_user_mail', + 'lastch_user_desc', + 'lastch_user_tel', + 'create_user_username', + 'create_user_fullname', + 'create_user_mail', + 'create_user_desc', + 'create_user_tel', + 'filename', + 'full_filename' ); + $convertToLang = true; + break; + case 'dynamic': $files = Array(); @@ -222,20 +252,17 @@ class ElementAction extends Action $subtypes = $files; break; - case 'copy': - $subtypes = array(); - break; - default: $subtypes = array(); break; } - if ( $convertToLang == true ) + if ( $convertToLang ) { - foreach( $subtypes as $t ) + foreach( $subtypes as $t=>$v ) { - $subtypes[$t] = lang('EL_'.$this->element->type.'_'.$t); + unset($subtypes[$t]); + $subtypes[$v] = lang('EL_'.$this->element->type.'_'.$v); } } @@ -285,25 +312,83 @@ class ElementAction extends Action break; - case 'wiki': - $this->setTemplateVar('wiki',$this->element->wiki ); + case 'htmlwiki': + if ( !$this->element->wiki && !$this->element->html ) + $format = 'none'; + elseif ( $this->element->wiki && !$this->element->html ) + $format = 'wiki'; + elseif ( !$this->element->wiki && $this->element->html ) + $format = 'html'; + elseif ( $this->element->wiki && $this->element->html ) + $format = 'wiki,html'; + + $this->setTemplateVar('format', $format ); + $formatlist = array('none'=>'raw','html'=>'html','wiki'=>'wiki','wiki,html'=>'wikihtml'); + + foreach( $formatlist as $t=>$v ) + $formatlist[$t] = lang('EL_PROP_'.$v); + + $this->setTemplateVar('formatlist', $formatlist ); //Html::debug($this->templateVars); break; + case 'linktype': + $this->setTemplateVar('linktype', $this->element->wiki ); + $this->setTemplateVar('linktypelist', array('page','file','link') ); + //Html::debug($this->templateVars); + break; - case 'html': - $this->setTemplateVar('html',$this->element->html ); + case 'prefix': + $t = new Template( $this->element->templateid ); + + foreach( $t->getElements() as $element ) + { + if ( $element->type == 'link' ) + $elements[$element->name] = $element->name; + } + unset($t); + + $this->setTemplateVar('linkelements',$elements ); + + @list($linkElementName,$targetElementName) = explode('%',$this->element->name); + $this->setTemplateVar('linkelement',$linkElementName ); + break; - - + + case 'name': + + $names = array(); + + foreach( Template::getAll() as $tid=>$name ) + { + $t = new Template( $tid ); + $t->load(); + + foreach( $t->getElements() as $element ) + { + if ( !in_array($element->type,array('copy','linkinfo','link')) ) + $names[$element->name] = $t->name.' - '.$element->name.' ('.lang('EL_'.$element->type).')'; + } + unset($t); + } + + + $this->setTemplateVar('names',$names ); + + list($linkElementName,$targetElementName) = explode('%',$this->element->name); + $this->setTemplateVar('name',$targetElementName ); + break; + // Eigenschaften PHP-Code case 'code': switch( $this->element->type ) { + case 'select': $this->setTemplateVar('select_items',$this->element->code ); break; + case 'dynamic': $className = $this->element->subtype; @@ -470,8 +555,8 @@ class ElementAction extends Action $this->element->defaultText = $this->getRequestVar('default_longtext'); else $this->element->defaultText = $this->getRequestVar('default_text'); - $this->element->wiki = $this->getRequestVar('wiki') != ''; - $this->element->html = $this->getRequestVar('html') != ''; + $this->element->wiki = in_array('wiki',explode(',',$this->getRequestVar('format'))); + $this->element->html = in_array('html',explode(',',$this->getRequestVar('format'))); $this->element->withIcon = $this->getRequestVar('with_icon') != ''; $this->element->allLanguages = $this->getRequestVar('all_languages') != ''; $this->element->writable = $this->getRequestVar('writable') != ''; @@ -482,6 +567,15 @@ class ElementAction extends Action $this->element->defaultObjectId = $this->getRequestVar('default_objectid'); $this->element->code = $this->getRequestVar('code' ); + if ( $this->hasRequestVar('name') ) + $this->element->name = $this->getRequestVar('name'); + + if ( $this->hasRequestVar('linkelement') ) + $this->element->setPrefix( $this->getRequestVar('linkelement') ); + +// if ( $this->hasRequestVar('elementid')) +// $this->element->code = $this->getRequestVar('elementid'); + $this->addNotice('element',$this->element->name,'SAVED'); $this->element->save(); diff --git a/objectClasses/Element.class.php b/objectClasses/Element.class.php @@ -20,7 +20,10 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // --------------------------------------------------------------------------- // $Log$ -// Revision 1.16 2006-07-05 19:15:34 dankert +// Revision 1.17 2007-05-02 20:58:45 dankert +// Ausw?hlen von Einstellungen f?r Elemente "linkinfo" und "copy". +// +// Revision 1.16 2006/07/05 19:15:34 dankert // Bugfix getRelatedProperties() // // Revision 1.15 2006/07/04 20:48:14 dankert @@ -203,10 +206,19 @@ class Element function load() { $db = db_connection(); - - $sql = new Sql( 'SELECT * FROM {t_element}'. - ' WHERE id={elementid}' ); - $sql->setInt( 'elementid',$this->elementid ); + + if ( intval($this->elementid) != 0 ) + { + $sql = new Sql( 'SELECT * FROM {t_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->query ) ); } @@ -214,6 +226,7 @@ class Element function setDatabaseRow( $prop ) { + $this->elementid = $prop['id' ]; $this->templateid = $prop['templateid']; $this->name = $prop['name' ]; $this->desc = $prop['descr' ]; @@ -301,7 +314,8 @@ class Element /** - * Setzt den Typ des Elementes + * Setzt den Typ des Elementes und schreibt diesen sofort in die Datenbank. + * * @param String Der neue Typ, siehe getAvailableTypes() f?r m?gliche Typen * @see #type */ @@ -322,7 +336,22 @@ class Element /** - * L?schen des Elementes und aller Inhalte + * Setzt ein Prefix vor den Elementnamen. + * @param String Prefix + */ + function setPrefix( $prefix ) + { + @list( $oldprefix,$name ) = explode('%',$this->name); + + if ( is_null($name) ) + $name = $oldprefix; + + $this->name = $prefix.'%'.$name; + } + + + /** + * Loeschen des Elementes und aller Inhalte */ function delete() { @@ -362,14 +391,15 @@ class Element */ function getRelatedProperties() { - $prp = array('text' =>array('withIcon','allLanguages','writable','html','wiki','defaultText'), - 'longtext'=>array('withIcon','allLanguages','writable','html','wiki','defaultText'), + $prp = array('text' =>array('withIcon','allLanguages','writable','htmlwiki','defaultText'), + 'longtext'=>array('withIcon','allLanguages','writable','htmlwiki','defaultText'), 'select' =>array('withIcon','allLanguages','writable','defaultText','code'), 'number' =>array('withIcon','allLanguages','writable','decPoint','decimals','thousandSep'), - 'link' =>array('withIcon','allLanguages','writable','folderObjectId','defaultObjectId'), + 'link' =>array('subtype','withIcon','allLanguages','writable','linktype','folderObjectId','defaultObjectId'), 'date' =>array('withIcon','allLanguages','writable','dateformat','defaultText'), - 'list' =>array('withIcon','allLanguages','writable','folderObjectId','defaultObjectId'), - 'copy' =>array('defaultText'), + 'list' =>array('subtype','withIcon','allLanguages','writable','folderObjectId','defaultObjectId'), + 'copy' =>array('prefix','name','defaultText'), + 'linkinfo'=>array('prefix','subtype','defaultText'), 'code' =>array('code'), 'dynamic' =>array('subtype','code'), 'info' =>array('subtype'), @@ -411,6 +441,7 @@ class Element 'date', 'list', 'copy', + 'linkinfo', 'code', 'dynamic', 'info', @@ -418,6 +449,38 @@ class Element } + /** + * Ermittelt die Klasse des Element-Typs.<br> + * Entweder "info", "text" oder "dynamic". + * + * @return Array + */ + function getTypeClass() + { + switch( $this->type ) + { + case 'text': + case 'longtext': + case 'select': + case 'number': + case 'link': + case 'date': + case 'list': + return 'text'; + + case 'code': + case 'dynamic': + return 'dynamic'; + + case 'copy': + case 'info': + case 'infodate': + case 'linkinfo': + return 'info'; + } + } + + function getSelectItems() { $parameters = explode( "\n",$this->code ); @@ -476,7 +539,7 @@ class Element function isWritable() { // Bei bestimmten Feldern immer false zurueckgeben - if ( in_array($this->type,Array('copy','info','infodate','code','dynamic')) ) + if ( in_array($this->type,Array('copy','linkinfo','info','infodate','code','dynamic')) ) return false; return $this->writable; diff --git a/themes/default/templates/element/properties.tpl.src.php b/themes/default/templates/element/properties.tpl.src.php @@ -57,19 +57,12 @@ page cell class:fx selectbox name:dateformat list:dateformats - if present:wiki + if present:format row cell class:fx - text text:EL_PROP_wiki + text text:EL_PROP_FORMAT cell class:fx - checkbox name:wiki - - if present:html - row - cell class:fx - text text:EL_PROP_html - cell class:fx - checkbox name:html + radiobox name:format list:formatlist if present:decimals row @@ -130,6 +123,20 @@ page cell class:fx inputarea rows:15 cols:40 name:select_items + if present:linkelement + row + cell class:fx + text text:EL_LINK + cell class:fx + selectbox name:linkelement list:linkelements + + if present:name + row + cell class:fx + text text:ELEMENT_NAME + cell class:fx + selectbox name:name list:names + if present:folderobjectid row cell class:fx