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