openrat-cms

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

commit a044e83a033bea9b28f2c7cf70456340a6f195e8
parent a5f01143c3abe0cb802f8109d5280fd41b4f48e6
Author: dankert <devnull@localhost>
Date:   Wed,  7 Jul 2004 22:45:10 +0200

Neuer Elementtyp: select

Diffstat:
actionClasses/ElementAction.class.php | 44++++++++++++++++++++++++++++----------------
actionClasses/PageelementAction.class.php | 667+++++++++++++++++++++++++++++++++++++++++--------------------------------------
objectClasses/Element.class.php | 703++++++++++++++++++++++++++++++++++++++++++-------------------------------------
themes/default/pages/html/element.tpl.php | 14++++++++++++++
themes/default/pages/html/pageelement/edit/select.tpl.php | 46++++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 804 insertions(+), 670 deletions(-)

diff --git a/actionClasses/ElementAction.class.php b/actionClasses/ElementAction.class.php @@ -20,7 +20,10 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // --------------------------------------------------------------------------- // $Log$ -// Revision 1.3 2004-05-02 14:49:37 dankert +// Revision 1.4 2004-07-07 20:43:57 dankert +// Neuer Elementtyp: select +// +// Revision 1.3 2004/05/02 14:49:37 dankert // Einfügen package-name (@package) // // Revision 1.2 2004/04/24 17:41:51 dankert @@ -193,34 +196,43 @@ class ElementAction extends Action // Eigenschaften Text und Text-Absatz case 'defaultText': - if ( $this->element->type == 'longtext') - $this->setTemplateVar('default_longtext',$this->element->defaultText ); - else $this->setTemplateVar('default_text' ,$this->element->defaultText ); + switch( $this->element->type ) + { + case 'longtext': + $this->setTemplateVar('default_longtext',$this->element->defaultText ); + break; + + case 'select': + case 'text': + $this->setTemplateVar('default_text' ,$this->element->defaultText ); + break; + } break; case 'wiki': - $this->setTemplateVar('wiki' ,$this->element->wiki ); + $this->setTemplateVar('wiki',$this->element->wiki ); break; case 'html': - $this->setTemplateVar('html' ,$this->element->html ); + $this->setTemplateVar('html',$this->element->html ); break; // Eigenschaften PHP-Code case 'code': - $this->setTemplateVar('code',$this->element->code); - break; - - - // Eigenschaften Text und Text-Absatz - case 'defaultText': - { - $this->setTemplateVar('default_longtext',$this->element->defaultText); + + switch( $this->element->type ) + { + case 'select': + $this->setTemplateVar('select_items',$this->element->code ); + break; + case 'code': + $this->setTemplateVar('code',$this->element->code); + break; + } break; - } case 'decimals': @@ -295,7 +307,7 @@ class ElementAction extends Action $this->setTemplateVar('act_folderobjectid' ,$this->element->folderObjectId ); break; - + default: $this->message('ERROR','not an element property: '.$propertyName ); } diff --git a/actionClasses/PageelementAction.class.php b/actionClasses/PageelementAction.class.php @@ -1,325 +1,348 @@ -<?php -// --------------------------------------------------------------------------- -// $Id$ -// --------------------------------------------------------------------------- -// OpenRat Content Management System -// Copyright (C) 2002-2004 Jan Dankert, cms@jandankert.de -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// --------------------------------------------------------------------------- +<?php +// --------------------------------------------------------------------------- +// $Id$ +// --------------------------------------------------------------------------- +// OpenRat Content Management System +// Copyright (C) 2002-2004 Jan Dankert, cms@jandankert.de +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// --------------------------------------------------------------------------- // $Log$ -// Revision 1.6 2004-05-30 21:55:21 dankert +// Revision 1.7 2004-07-07 20:43:48 dankert +// Neuer Elementtyp: select +// +// Revision 1.6 2004/05/30 21:55:21 dankert // Korrektur Kasten "Freigabe" -// -// Revision 1.5 2004/05/02 14:49:37 dankert -// Einf?gen package-name (@package) -// -// Revision 1.4 2004/05/02 12:00:26 dankert -// Funktion release() zum freigeben von Inhalten -// -// Revision 1.3 2004/05/02 11:40:00 dankert -// Freigabestatus der Seiteninhalte verarbeiten -// -// Revision 1.2 2004/04/30 20:52:11 dankert -// Schalter $release setzen -// -// Revision 1.1 2004/04/24 15:14:52 dankert -// Initiale Version -// -// --------------------------------------------------------------------------- - - -/** - * Action-Klasse zum Bearbeiten eines Seitenelementes - * @author $Author$ - * @version $Revision$ - * @package openrat.actions - */ -class PageelementAction extends Action -{ - var $defaultSubAction = 'edit'; - - - /** - * Enth?lt das Seitenobjekt - * @type Object - */ - var $page; - - /** - * Enth?lt das Elementobjekt - * @type Object - */ - var $element; - - - /** - * Konstruktor - */ - function PageelementAction() - { - $this->value = new Value(); - } - - - function edit() - { - $this->value->languageid = $this->getSessionVar('languageid'); - $this->value->objectid = $this->getSessionVar('objectid'); - $this->value->pageid = Page::getPageIdFromObjectId( $this->getSessionVar('objectid') ); - $this->value->element = new Element( $this->getSessionVar('elementid') ); - $this->value->element->load(); - $this->value->publish = false; - - if ( intval($this->value->valueid)!=0 ) - $this->value->loadWithId(); - else $this->value->load(); - - $this->setTemplateVar('name',$this->value->element->name); - $this->setTemplateVar('desc',$this->value->element->desc); - - switch( $this->value->element->type ) - { - - case 'link': - - $objects = array(); - - foreach( Folder::getAllObjectIds() as $id ) - { - $o = new Object( $id ); - $o->load(); - - if ( $o->getType() != 'folder' ) - { - $f = new Folder( $o->parentid ); - $f->load(); - - $objects[ $id ] = lang( $o->getType() ).': '; - $objects[ $id ] .= implode( ' &raquo; ',$f->parentObjectNames(false,true) ); - $objects[ $id ] .= ' &raquo; '.$o->name; - } - } - - asort( $objects ); // Sortieren - - $this->setTemplateVar('objects' ,$objects); - $this->setTemplateVar('act_linkobjectid',$this->value->linkToObjectId); - - break; - - case 'list': - - $objects = array(); - foreach( Folder::getAllFolders() as $id ) - { - $f = new Folder( $id ); - $f->load(); - - $objects[ $id ] = lang( $f->getType() ).': '; - $objects[ $id ] .= implode( ' &raquo; ',$f->parentObjectNames(false,true) ); - } - - asort( $objects ); // Sortieren - - $this->setTemplateVar('objects' ,$objects); - $this->setTemplateVar('act_linkobjectid',$this->value->linkToObjectId); - - break; - - - case 'number': - $this->setTemplateVar('number',$this->value->number / pow(10,$this->value->element->decimals) ); - break; - - case 'longtext': - case 'text': - $this->setTemplateVar('text',$this->value->text); - break; - - case 'date': - - $date = $this->value->date; - - // Wenn Datum nicht vorhanden, dann aktuelles Datum verwenden - if ( $date == 0 ) - $date = time(); - - if ( $this->getRequestVar('year') != '' ) - { - $date = mktime( $this->getRequestVar('hour'), - $this->getRequestVar('minute'), - $this->getRequestVar('second'), - $this->getRequestVar('month'), - $this->getRequestVar('day'), - $this->getRequestVar('year') ); - } - $this->setTemplateVar('year' ,date('Y',$date) ); - $this->setTemplateVar('month' ,date('n',$date) ); - $this->setTemplateVar('day' ,date('j',$date) ); - $this->setTemplateVar('hour' ,date('G',$date) ); - $this->setTemplateVar('minute',date('i',$date) ); - $this->setTemplateVar('second',date('s',$date) ); - - $this->setTemplateVar('days' ,date('t',$date) ); - - $this->setTemplateVar('title' ,lang('MONTH'.date('n',$date)).' '.date('Y',$date) ); - - // Wochentag des 1. des Monats ermitteln - $wday1 = date( 'w',$date ); - $wday1 -= date('j',$date)-1; - while( $wday1 < 0 ) $wday1+=7; - $this->setTemplateVar('first_weekday',$wday1); - - $this->setTemplateVar('actdate' ,date( lang('DATE_FORMAT'),$date ) ); - $this->setTemplateVar('todayurl','?year='.date('Y').'&month='.date('m').'&day='.date('d').'&hour='.date('H').'&minute='.date('i').'&second='.date('s') ); - $this->setTemplateVar('ansidate',date( 'Y-m-d H:i:s',$date ) ); - $this->setTemplateVar('date' ,$date); - - $all_years = array(); - $all_months = array(); - $all_days = array(); - $all_hours = array(); - $all_minutes = array(); - for( $i=1850; $i<=2100;$i++ ) $all_years [$i] = $i; - for( $i=1; $i<=12; $i++ ) $all_months [$i] = lang('MONTH'.$i); - for( $i=1; $i<=31; $i++ ) $all_days [$i] = str_pad($i,2,'0',STR_PAD_LEFT); - for( $i=0; $i<=23; $i++ ) $all_hours [$i] = str_pad($i,2,'0',STR_PAD_LEFT); - for( $i=0; $i<=59; $i++ ) $all_minutes[$i] = str_pad($i,2,'0',STR_PAD_LEFT); - - $this->setTemplateVar('all_years' ,$all_years ); - $this->setTemplateVar('all_months' ,$all_months ); - $this->setTemplateVar('all_days' ,$all_days ); - $this->setTemplateVar('all_hours' ,$all_hours ); - $this->setTemplateVar('all_minutes',$all_minutes); - $this->setTemplateVar('all_seconds',$all_minutes); - - break; - - default: - $this->message('ERROR','unknown element type: '.$this->value->element->type ); - } - - if ( $this->getSessionVar('pageaction') != '' ) - $this->setTemplateVar('old_pageaction',$this->getSessionVar('pageaction')); - else $this->setTemplateVar('old_pageaction','show' ); - - $this->value->page = new Page( $this->getSessionVar('objectid') ); - $this->value->page->languageid = $this->value->languageid; - $this->value->page->load(); - - if ( $this->value->page->hasRight('release') ) - $this->setTemplateVar( 'release',true ); - else $this->setTemplateVar( 'release',false ); - - $this->forward('pageelement_edit_'.$this->value->element->type); - } - - - /** - * Benutzen eines alten Inhaltes - */ - function usevalue() - { - $this->value->valueid = $this->getRequestVar('valueid'); - - // Das ausgew?hlte Element f?r die Bearbeitung verwenden - $this->callSubAction('edit'); - } - - - /** - * Freigeben eines Inhaltes - */ - function release() - { - $this->value->languageid = $this->getSessionVar('languageid'); - $this->value->objectid = $this->getSessionVar('objectid'); - $this->value->pageid = Page::getPageIdFromObjectId( $this->getSessionVar('objectid') ); - $this->value->element = new Element( $this->getSessionVar('elementid') ); - - $this->value->valueid = $this->getRequestVar('valueid'); - $this->value->release(); - - // Versionen anzeigen - $this->callSubAction('archive'); - } - - - /** - * Erzeugt eine Liste aller Versionsst?nde zu diesem Inhalt - */ - function archive() - { - $this->value->page = new Page( $this->getSessionVar('objectid') ); - $this->value->page->load(); - $this->value->page->public = true; - $this->value->page->simple = true; - - $this->value->simple = true; - $this->value->languageid = $this->getSessionVar('languageid'); - $this->value->objectid = $this->getSessionVar('objectid' ); - $this->value->pageid = Page::getPageIdFromObjectId( $this->getSessionVar('objectid') ); - $this->value->element = new Element( $this->getSessionVar('elementid') ); - $this->value->element->load(); - - $list = array(); - - foreach( $this->value->getVersionList() as $valueid ) - { - $this->value->valueid = $valueid; - $this->value->loadWithId(); - $this->value->generate(); - - if ( $this->value->lastchangeTimeStamp != 0 ) - $date = date( lang('DATE_FORMAT'),$this->value->lastchangeTimeStamp); - else $date = '&nbsp;'; - - if ( ! $this->value->active ) - $useUrl = Html::url(array('action' =>'pageelement', - 'subaction'=>'usevalue', - 'valueid' =>$valueid )); - else $useUrl = ''; - - if ( ! $this->value->publish && $this->value->active ) - $releaseUrl = Html::url(array('action' =>'pageelement', - 'subaction'=>'release', - 'valueid' =>$valueid )); - else $releaseUrl = ''; - - if ( $this->value->publish ) - $public = true; - else $public = false; - - if ( $this->value->active ) - $active = true; - else $active = false; - - $list[] = array( 'value' => Text::maxLaenge( 50,$this->value->value), - 'date' => $date, - 'user' => User::getUserName($this->value->lastchangeUserId), - 'useUrl' => $useUrl, - 'public' => $public, - 'active' => $active, - 'releaseUrl'=> $releaseUrl ); - } - - $this->setTemplateVar('name',$this->value->element->name); - $this->setTemplateVar('el',$list); - $this->forward('pageelement_archive'); - } -} - +// +// Revision 1.5 2004/05/02 14:49:37 dankert +// Einf?gen package-name (@package) +// +// Revision 1.4 2004/05/02 12:00:26 dankert +// Funktion release() zum freigeben von Inhalten +// +// Revision 1.3 2004/05/02 11:40:00 dankert +// Freigabestatus der Seiteninhalte verarbeiten +// +// Revision 1.2 2004/04/30 20:52:11 dankert +// Schalter $release setzen +// +// Revision 1.1 2004/04/24 15:14:52 dankert +// Initiale Version +// +// --------------------------------------------------------------------------- + + +/** + * Action-Klasse zum Bearbeiten eines Seitenelementes + * @author $Author$ + * @version $Revision$ + * @package openrat.actions + */ +class PageelementAction extends Action +{ + var $defaultSubAction = 'edit'; + + + /** + * Enth?lt das Seitenobjekt + * @type Object + */ + var $page; + + /** + * Enth?lt das Elementobjekt + * @type Object + */ + var $element; + + + /** + * Konstruktor + */ + function PageelementAction() + { + $this->value = new Value(); + } + + + function edit() + { + $this->value->languageid = $this->getSessionVar('languageid'); + $this->value->objectid = $this->getSessionVar('objectid'); + $this->value->pageid = Page::getPageIdFromObjectId( $this->getSessionVar('objectid') ); + $this->value->element = new Element( $this->getSessionVar('elementid') ); + $this->value->element->load(); + $this->value->publish = false; + + if ( intval($this->value->valueid)!=0 ) + $this->value->loadWithId(); + else $this->value->load(); + + $this->setTemplateVar('name',$this->value->element->name); + $this->setTemplateVar('desc',$this->value->element->desc); + + switch( $this->value->element->type ) + { + + case 'link': + + $objects = array(); + + foreach( Folder::getAllObjectIds() as $id ) + { + $o = new Object( $id ); + $o->load(); + + if ( $o->getType() != 'folder' ) + { + $f = new Folder( $o->parentid ); + $f->load(); + + $objects[ $id ] = lang( $o->getType() ).': '; + $objects[ $id ] .= implode( ' &raquo; ',$f->parentObjectNames(false,true) ); + $objects[ $id ] .= ' &raquo; '.$o->name; + } + } + + asort( $objects ); // Sortieren + + $this->setTemplateVar('objects' ,$objects); + $this->setTemplateVar('act_linkobjectid',$this->value->linkToObjectId); + + break; + + case 'list': + + $objects = array(); + foreach( Folder::getAllFolders() as $id ) + { + $f = new Folder( $id ); + $f->load(); + + $objects[ $id ] = lang( $f->getType() ).': '; + $objects[ $id ] .= implode( ' &raquo; ',$f->parentObjectNames(false,true) ); + } + + asort( $objects ); // Sortieren + + $this->setTemplateVar('objects' ,$objects); + $this->setTemplateVar('act_linkobjectid',$this->value->linkToObjectId); + + break; + + + case 'select': + + + $list = explode( "\n",$this->value->element->code ); + $items = array(); + + foreach( $list as $it ) + { + $paar = explode( ":",$it ); + if ( count( $paar ) > 1 ) + $items[ $paar[0] ] = $paar[1]; + else $items[ $it ] = $it; + } + + $this->setTemplateVar('items',$items ); + $this->setTemplateVar('text' ,$this->value->text); + + break; + + + case 'number': + $this->setTemplateVar('number',$this->value->number / pow(10,$this->value->element->decimals) ); + break; + + case 'longtext': + case 'text': + $this->setTemplateVar('text',$this->value->text); + break; + + case 'date': + + $date = $this->value->date; + + // Wenn Datum nicht vorhanden, dann aktuelles Datum verwenden + if ( $date == 0 ) + $date = time(); + + if ( $this->getRequestVar('year') != '' ) + { + $date = mktime( $this->getRequestVar('hour'), + $this->getRequestVar('minute'), + $this->getRequestVar('second'), + $this->getRequestVar('month'), + $this->getRequestVar('day'), + $this->getRequestVar('year') ); + } + $this->setTemplateVar('year' ,date('Y',$date) ); + $this->setTemplateVar('month' ,date('n',$date) ); + $this->setTemplateVar('day' ,date('j',$date) ); + $this->setTemplateVar('hour' ,date('G',$date) ); + $this->setTemplateVar('minute',date('i',$date) ); + $this->setTemplateVar('second',date('s',$date) ); + + $this->setTemplateVar('days' ,date('t',$date) ); + + $this->setTemplateVar('title' ,lang('MONTH'.date('n',$date)).' '.date('Y',$date) ); + + // Wochentag des 1. des Monats ermitteln + $wday1 = date( 'w',$date ); + $wday1 -= date('j',$date)-1; + while( $wday1 < 0 ) $wday1+=7; + $this->setTemplateVar('first_weekday',$wday1); + + $this->setTemplateVar('actdate' ,date( lang('DATE_FORMAT'),$date ) ); + $this->setTemplateVar('todayurl','?year='.date('Y').'&month='.date('m').'&day='.date('d').'&hour='.date('H').'&minute='.date('i').'&second='.date('s') ); + $this->setTemplateVar('ansidate',date( 'Y-m-d H:i:s',$date ) ); + $this->setTemplateVar('date' ,$date); + + $all_years = array(); + $all_months = array(); + $all_days = array(); + $all_hours = array(); + $all_minutes = array(); + for( $i=1850; $i<=2100;$i++ ) $all_years [$i] = $i; + for( $i=1; $i<=12; $i++ ) $all_months [$i] = lang('MONTH'.$i); + for( $i=1; $i<=31; $i++ ) $all_days [$i] = str_pad($i,2,'0',STR_PAD_LEFT); + for( $i=0; $i<=23; $i++ ) $all_hours [$i] = str_pad($i,2,'0',STR_PAD_LEFT); + for( $i=0; $i<=59; $i++ ) $all_minutes[$i] = str_pad($i,2,'0',STR_PAD_LEFT); + + $this->setTemplateVar('all_years' ,$all_years ); + $this->setTemplateVar('all_months' ,$all_months ); + $this->setTemplateVar('all_days' ,$all_days ); + $this->setTemplateVar('all_hours' ,$all_hours ); + $this->setTemplateVar('all_minutes',$all_minutes); + $this->setTemplateVar('all_seconds',$all_minutes); + + break; + + default: + $this->message('ERROR','unknown element type: '.$this->value->element->type ); + } + + if ( $this->getSessionVar('pageaction') != '' ) + $this->setTemplateVar('old_pageaction',$this->getSessionVar('pageaction')); + else $this->setTemplateVar('old_pageaction','show' ); + + $this->value->page = new Page( $this->getSessionVar('objectid') ); + $this->value->page->languageid = $this->value->languageid; + $this->value->page->load(); + + if ( $this->value->page->hasRight('release') ) + $this->setTemplateVar( 'release',true ); + else $this->setTemplateVar( 'release',false ); + + $this->forward('pageelement_edit_'.$this->value->element->type); + } + + + /** + * Benutzen eines alten Inhaltes + */ + function usevalue() + { + $this->value->valueid = $this->getRequestVar('valueid'); + + // Das ausgew?hlte Element f?r die Bearbeitung verwenden + $this->callSubAction('edit'); + } + + + /** + * Freigeben eines Inhaltes + */ + function release() + { + $this->value->languageid = $this->getSessionVar('languageid'); + $this->value->objectid = $this->getSessionVar('objectid'); + $this->value->pageid = Page::getPageIdFromObjectId( $this->getSessionVar('objectid') ); + $this->value->element = new Element( $this->getSessionVar('elementid') ); + + $this->value->valueid = $this->getRequestVar('valueid'); + $this->value->release(); + + // Versionen anzeigen + $this->callSubAction('archive'); + } + + + /** + * Erzeugt eine Liste aller Versionsst?nde zu diesem Inhalt + */ + function archive() + { + $this->value->page = new Page( $this->getSessionVar('objectid') ); + $this->value->page->load(); + $this->value->page->public = true; + $this->value->page->simple = true; + + $this->value->simple = true; + $this->value->languageid = $this->getSessionVar('languageid'); + $this->value->objectid = $this->getSessionVar('objectid' ); + $this->value->pageid = Page::getPageIdFromObjectId( $this->getSessionVar('objectid') ); + $this->value->element = new Element( $this->getSessionVar('elementid') ); + $this->value->element->load(); + + $list = array(); + + foreach( $this->value->getVersionList() as $valueid ) + { + $this->value->valueid = $valueid; + $this->value->loadWithId(); + $this->value->generate(); + + if ( $this->value->lastchangeTimeStamp != 0 ) + $date = date( lang('DATE_FORMAT'),$this->value->lastchangeTimeStamp); + else $date = '&nbsp;'; + + if ( ! $this->value->active ) + $useUrl = Html::url(array('action' =>'pageelement', + 'subaction'=>'usevalue', + 'valueid' =>$valueid )); + else $useUrl = ''; + + if ( ! $this->value->publish && $this->value->active ) + $releaseUrl = Html::url(array('action' =>'pageelement', + 'subaction'=>'release', + 'valueid' =>$valueid )); + else $releaseUrl = ''; + + if ( $this->value->publish ) + $public = true; + else $public = false; + + if ( $this->value->active ) + $active = true; + else $active = false; + + $list[] = array( 'value' => Text::maxLaenge( 50,$this->value->value), + 'date' => $date, + 'user' => User::getUserName($this->value->lastchangeUserId), + 'useUrl' => $useUrl, + 'public' => $public, + 'active' => $active, + 'releaseUrl'=> $releaseUrl ); + } + + $this->setTemplateVar('name',$this->value->element->name); + $this->setTemplateVar('el',$list); + $this->forward('pageelement_archive'); + } +} + ?> \ No newline at end of file diff --git a/objectClasses/Element.class.php b/objectClasses/Element.class.php @@ -1,332 +1,371 @@ -<?php -// --------------------------------------------------------------------------- -// $Id$ -// --------------------------------------------------------------------------- -// OpenRat Content Management System -// Copyright (C) 2002-2004 Jan Dankert, jandankert@jandankert.de -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// --------------------------------------------------------------------------- +<?php +// --------------------------------------------------------------------------- +// $Id$ +// --------------------------------------------------------------------------- +// OpenRat Content Management System +// Copyright (C) 2002-2004 Jan Dankert, jandankert@jandankert.de +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// --------------------------------------------------------------------------- // $Log$ -// Revision 1.2 2004-05-02 14:41:31 dankert -// Einfügen package-name (@package) -// -// Revision 1.2 2004/04/30 20:36:25 dankert -// Neu: Freigabe -// -// Revision 1.1 2004/04/24 15:15:12 dankert -// Initiale Version -// -// --------------------------------------------------------------------------- - -/** - * Darstellen eines Template-Elementes - * - * @package openrat.objects - */ -class Element -{ - /** - * ID dieses Elementes - * @type Integer - */ - var $elementid; - - /** - * Template-ID zu der dieses Elementes gehört - * @type Integer - */ - var $templateid; - - /** - * Sprachen-ID dieses Elementes - * @type Integer - */ - var $languageid; - - /** - * Typ des Elementes - * @type String - */ - var $type; - - /** - * Name dieses Elementes - * @type String - */ - var $name; - - /** - * Beschreibung zu diesem Element - * @type String - */ - var $desc; - - /** - * ID dieses Elementes - * @type String - */ - var $value; - - /** - * Objekt-ID eines Ordners, aus diesem Ordner (samt Unterordner) - * können zu verlinkende Objekte ausgewählt werden - * @type Integer - */ - var $folderobjectid = 0; - - /** - * Schalter ob dieses Element von Redakteuren bearbeiten werden kann - * @type Boolean - */ - var $writable; - - /** - * Schalter ob dieses Element in allen Sprachen den gleichen Inhalt hat - * @type Boolean - */ - var $allLanguages; - - function Element( $elementid=0 ) - { - global $SESS; - - if ( intval($elementid)!=0 ) - $this->elementid = $elementid; - } - - - function add() - { - $db = db_connection(); - - $sql = new Sql('SELECT MAX(id) FROM {t_element}'); - $this->elementid = intval($db->getOne($sql->query))+1; - - $sql = new Sql( 'INSERT INTO {t_element}'. - ' (id,templateid,name,descr,type,writable) '. - " VALUES ( {elementid},{templateid},{name},'',{type},{writable} ) " ); - - $sql->setInt ( 'elementid' ,$this->elementid ); - $sql->setString ( 'name' ,$this->name ); - $sql->setString ( 'type' ,$this->type ); - $sql->setInt ( 'templateid',$this->templateid ); - $sql->setBoolean( 'writable' ,$this->writable ); - - $db->query( $sql->query ); - } - - - -// function path_to_page( $pageid ) -// { -// return $this->page->path_to_object( $pageid ); -// } -// function path_to_object( $pageid ) -// { -// return $this->path_to_page( $pageid ); -// } - - - - function load() - { - $db = db_connection(); - - $sql = new Sql( 'SELECT * FROM {t_element}'. - ' WHERE id={elementid}' ); - $sql->setInt( 'elementid',$this->elementid ); - $prop = $db->getRow( $sql->query ); - - $this->templateid = $prop['templateid']; - $this->name = $prop['name']; - $this->desc = $prop['descr']; - $this->type = $prop['type']; - $this->subtype = $prop['subtype']; - - $this->dateformat = $prop['dateformat']; - $this->wiki = ( $prop['wiki' ] == '1' ); - $this->withIcon = ( $prop['with_icon' ] == '1' ); - $this->html = ( $prop['html' ] == '1' ); - $this->allLanguages = ( $prop['all_languages'] == '1' ); - $this->writable = ( $prop['writable' ] == '1' ); - - if ( !$this->writable) - $this->withIcon = false; - - $this->decimals = $prop['decimals']; - $this->decPoint = $prop['dec_point']; - $this->thousandSep = $prop['thousand_sep']; - $this->code = $prop['code']; - $this->defaultText = $prop['default_text']; - $this->folderObjectId = intval($prop['folderobjectid' ]); - $this->defaultObjectId = intval($prop['default_objectid']); - } - - - - // Element speichern - function save() - { - $db = db_connection(); - - $sql = new Sql( 'UPDATE {t_element}'. - ' SET templateid = {templateid},'. - ' name = {name},'. - ' descr = {desc},'. - ' type = {type},'. - ' subtype = {subtype},'. - ' with_icon = {withIcon},'. - ' dateformat = {dateformat},'. - ' wiki = {wiki},'. - ' html = {html},'. - ' all_languages = {allLanguages},'. - ' writable = {writable},'. - ' decimals = {decimals},'. - ' dec_point = {decPoint},'. - ' thousand_sep = {thousandSep},'. - ' code = {code},'. - ' default_text = {defaultText},'. - ' folderobjectid = {folderObjectId},'. - ' default_objectid= {defaultObjectId}'. - ' WHERE id={elementid}' ); - - $sql->setInt ( 'elementid' ,$this->elementid ); - $sql->setInt ( 'templateid' ,$this->templateid ); - $sql->setString ( 'name' ,$this->name ); - $sql->setString ( 'desc' ,$this->desc ); - $sql->setString ( 'type' ,$this->type ); - $sql->setString ( 'subtype' ,$this->subtype ); - $sql->setBoolean( 'withIcon' ,$this->withIcon ); - $sql->setString ( 'dateformat' ,$this->dateformat ); - $sql->setBoolean( 'wiki' ,$this->wiki ); - $sql->setBoolean( 'html' ,$this->html ); - $sql->setBoolean( 'writable' ,$this->writable ); - $sql->setBoolean( 'allLanguages' ,$this->allLanguages ); - $sql->setInt ( 'decimals' ,$this->decimals ); - $sql->setString ( 'decPoint' ,$this->decPoint ); - $sql->setString ( 'thousandSep' ,$this->thousandSep ); - $sql->setString ( 'code' ,$this->code ); - $sql->setString ( 'defaultText' ,$this->defaultText ); - - if ( intval($this->folderObjectId)==0 ) - $sql->setNull( 'folderObjectId' ); - else $sql->setInt ( 'folderObjectId' ,$this->folderObjectId ); - - if ( intval($this->defaultObjectId)==0 ) - $sql->setNull( 'defaultObjectId' ); - else $sql->setInt ( 'defaultObjectId' ,$this->defaultObjectId ); - - $db->query( $sql->query ); - } - - - - // Element speichern - function setType( $type ) - { - $db = db_connection(); - - $sql = new Sql( 'UPDATE {t_element}'. - ' SET type = {type}'. - ' WHERE id={elementid}' ); - - $sql->setInt ( 'elementid',$this->elementid ); - $sql->setString ( 'type' ,$type ); - - $db->query( $sql->query ); - } - - - /** - * Löschen des Elementes und aller Inhalte - */ - function delete() - { - $db = db_connection(); - - // Inhalte löschen - $this->deleteValues(); - - // Element löschen - $sql = new Sql('DELETE FROM {t_element} '. - ' WHERE id={elementid}' ); - $sql->setInt( 'elementid',$this->elementid ); - - $db->query( $sql->query ); - } - - - /** - * Löschen aller Seiteninhalte mit diesem Element - */ - function deleteValues() - { - $db = db_connection(); - - // Alle Inhalte mit diesem Element löschen - $sql = new Sql('DELETE FROM {t_value} '. - ' WHERE elementid={elementid}' ); - $sql->setInt( 'elementid',$this->elementid ); - $db->query( $sql->query ); - } - - - /** - * Abhängig vom Element-Typ werden die zur Darstellung notwendigen Eigenschaften ermittelt - * @return Array() - */ - function getRelatedProperties() - { - $typeprop = Array('text' =>Array('withIcon','allLanguages','writable','html','wiki','defaultText'), - 'longtext'=>Array('withIcon','allLanguages','writable','html','wiki','defaultText'), - 'number' =>Array('withIcon','allLanguages','writable','decPoint','decimals','thousandSep','defaultText'), - 'link' =>Array('withIcon','allLanguages','writable','folderObjectId','defaultObjectId'), - 'date' =>Array('withIcon','allLanguages','writable','dateformat'), - 'list' =>Array('withIcon','allLanguages','writable','folderObjectId'), - 'code' =>Array('code'), - 'info' =>Array('subtype'), - 'infodate'=>Array('subtype','dateformat') ); - - return $typeprop[ $this->type ]; - } - - - /** - * Ermitteln aller benutzbaren Elementtypen - * @return Array - */ - function getAvailableTypes() - { - return array('text', - 'longtext', - 'number', - 'link', - 'date', - 'list', - 'code', - 'info', - 'infodate'); - } - - - function isWritable() - { - if ( in_array($this->type,Array('info','infodate','code')) ) - return false; - - return $this->writable; - } -}- \ No newline at end of file +// Revision 1.3 2004-07-07 20:45:10 dankert +// Neuer Elementtyp: select +// +// Revision 1.2 2004/05/02 14:41:31 dankert +// Einfügen package-name (@package) +// +// Revision 1.2 2004/04/30 20:36:25 dankert +// Neu: Freigabe +// +// Revision 1.1 2004/04/24 15:15:12 dankert +// Initiale Version +// +// --------------------------------------------------------------------------- + +/** + * Diese Objektklasse stellt ein Element das. + * Ein Element ist ein Platzhalter in einem Template und kann verschiedenen + * Typs sein, z.B. Text oder ein Bild. + * + * @package openrat.objects + */ +class Element +{ + /** + * Eindeutige ID dieses Elementes + * @type Integer + */ + var $elementid; + + /** + * Template-ID zu der dieses Elementes geh?rt + * @type Integer + */ + var $templateid; + + /** + * Typ des Elementes + * Folgende Typen sind moeglich: + * <ul> + * <li>text</li> + * <li>longtext</li> + * <li>select</li> + * <li>number</li> + * <li>link</li> + * <li>date</li> + * <li>list</li> + * <li>code</li> + * <li>info</li> + * <li>infodate</li> + * </ul> + * + * @type String + */ + var $type; + + /** + * Logischer Name dieses Elementes + * @type String + */ + var $name; + + /** + * Beschreibung zu diesem Element + * Zu jedem Element kann eine Beschreibung hinterlegt werden, die dem Redakteur bei der Bearbeitung + * der Inhalte als Bearbeitungshilfe dienen kann. + * @type String + */ + var $desc; + + /** + * Objekt-ID eines Ordners, aus diesem Ordner (samt Unterordner) + * k?nnen zu verlinkende Objekte ausgew?hlt werden + * @type Integer + */ + var $folderobjectid = 0; + + /** + * Schalter ob dieses Element von Redakteuren bearbeiten werden kann + * @type Boolean + */ + var $writable; + + /** + * Schalter, ob dieses Element in allen Sprachen den gleichen Inhalt haben soll + * @type Boolean + */ + var $allLanguages; + + + /** + * Im Konstruktor wird die Element-Id gesetzt + * @param Integer Element-Id + */ + function Element( $elementid=0 ) + { + global $SESS; + + if ( intval($elementid)!=0 ) + $this->elementid = $elementid; + } + + + /** + * Hinzufügen eines Elementes + * Das aktuelle Element wird in die Datenbank geschrieben. + */ + function add() + { + $db = db_connection(); + + $sql = new Sql('SELECT MAX(id) FROM {t_element}'); + $this->elementid = intval($db->getOne($sql->query))+1; + + $sql = new Sql( 'INSERT INTO {t_element}'. + ' (id,templateid,name,descr,type,writable) '. + " VALUES ( {elementid},{templateid},{name},'',{type},{writable} ) " ); + + $sql->setInt ( 'elementid' ,$this->elementid ); + $sql->setString ( 'name' ,$this->name ); + $sql->setString ( 'type' ,$this->type ); + $sql->setInt ( 'templateid',$this->templateid ); + $sql->setBoolean( 'writable' ,$this->writable ); + + $db->query( $sql->query ); + } + + + +// function path_to_page( $pageid ) +// { +// return $this->page->path_to_object( $pageid ); +// } +// function path_to_object( $pageid ) +// { +// return $this->path_to_page( $pageid ); +// } + + + /** + * Lesen des Elementes aus der Datenbank + * Alle Eigenschaften des Elementes werden aus der Datenbank gelesen + */ + function load() + { + $db = db_connection(); + + $sql = new Sql( 'SELECT * FROM {t_element}'. + ' WHERE id={elementid}' ); + $sql->setInt( 'elementid',$this->elementid ); + $prop = $db->getRow( $sql->query ); + + $this->templateid = $prop['templateid']; + $this->name = $prop['name']; + $this->desc = $prop['descr']; + $this->type = $prop['type']; + $this->subtype = $prop['subtype']; + + $this->dateformat = $prop['dateformat']; + $this->wiki = ( $prop['wiki' ] == '1' ); + $this->withIcon = ( $prop['with_icon' ] == '1' ); + $this->html = ( $prop['html' ] == '1' ); + $this->allLanguages = ( $prop['all_languages'] == '1' ); + $this->writable = ( $prop['writable' ] == '1' ); + + if ( !$this->writable) + $this->withIcon = false; + + $this->decimals = intval( $prop['decimals' ] ); + $this->decPoint = strval( $prop['dec_point' ] ); + $this->thousandSep = strval( $prop['thousand_sep' ] ); + $this->code = strval( $prop['code' ] ); + $this->defaultText = strval( $prop['default_text' ] ); + $this->folderObjectId = intval( $prop['folderobjectid' ] ); + $this->defaultObjectId = intval( $prop['default_objectid'] ); + } + + + + /** + * Abspeichern des Elementes + * Das aktuelle Element wird in der Datenbank gespeichert + */ + function save() + { + $db = db_connection(); + + $sql = new Sql( 'UPDATE {t_element}'. + ' SET templateid = {templateid},'. + ' name = {name},'. + ' descr = {desc},'. + ' type = {type},'. + ' subtype = {subtype},'. + ' with_icon = {withIcon},'. + ' dateformat = {dateformat},'. + ' wiki = {wiki},'. + ' html = {html},'. + ' all_languages = {allLanguages},'. + ' writable = {writable},'. + ' decimals = {decimals},'. + ' dec_point = {decPoint},'. + ' thousand_sep = {thousandSep},'. + ' code = {code},'. + ' default_text = {defaultText},'. + ' folderobjectid = {folderObjectId},'. + ' default_objectid= {defaultObjectId}'. + ' WHERE id={elementid}' ); + + $sql->setInt ( 'elementid' ,$this->elementid ); + $sql->setInt ( 'templateid' ,$this->templateid ); + $sql->setString ( 'name' ,$this->name ); + $sql->setString ( 'desc' ,$this->desc ); + $sql->setString ( 'type' ,$this->type ); + $sql->setString ( 'subtype' ,$this->subtype ); + $sql->setBoolean( 'withIcon' ,$this->withIcon ); + $sql->setString ( 'dateformat' ,$this->dateformat ); + $sql->setBoolean( 'wiki' ,$this->wiki ); + $sql->setBoolean( 'html' ,$this->html ); + $sql->setBoolean( 'writable' ,$this->writable ); + $sql->setBoolean( 'allLanguages' ,$this->allLanguages ); + $sql->setInt ( 'decimals' ,$this->decimals ); + $sql->setString ( 'decPoint' ,$this->decPoint ); + $sql->setString ( 'thousandSep' ,$this->thousandSep ); + $sql->setString ( 'code' ,$this->code ); + $sql->setString ( 'defaultText' ,$this->defaultText ); + + if ( intval($this->folderObjectId)==0 ) + $sql->setNull( 'folderObjectId' ); + else $sql->setInt ( 'folderObjectId' ,$this->folderObjectId ); + + if ( intval($this->defaultObjectId)==0 ) + $sql->setNull( 'defaultObjectId' ); + else $sql->setInt ( 'defaultObjectId' ,$this->defaultObjectId ); + + $db->query( $sql->query ); + } + + + + /** + * Setzt den Typ des Elementes + * @param String Der neue Typ, siehe getAvailableTypes() für mögliche Typen + * @see #type + */ + function setType( $type ) + { + $db = db_connection(); + + $sql = new Sql( 'UPDATE {t_element}'. + ' SET type = {type}'. + ' WHERE id={elementid}' ); + + $sql->setInt ( 'elementid',$this->elementid ); + $sql->setString ( 'type' ,$type ); + + $db->query( $sql->query ); + } + + + /** + * Löschen des Elementes und aller Inhalte + */ + function delete() + { + $db = db_connection(); + + // Inhalte l?schen + $this->deleteValues(); + + // Element l?schen + $sql = new Sql('DELETE FROM {t_element} '. + ' WHERE id={elementid}' ); + $sql->setInt( 'elementid',$this->elementid ); + + $db->query( $sql->query ); + } + + + /** + * L?schen aller Seiteninhalte mit diesem Element + * Das Element wird nicht gelöscht. + */ + function deleteValues() + { + $db = db_connection(); + + // Alle Inhalte mit diesem Element l?schen + $sql = new Sql('DELETE FROM {t_value} '. + ' WHERE elementid={elementid}' ); + $sql->setInt( 'elementid',$this->elementid ); + $db->query( $sql->query ); + } + + + /** + * Abh?ngig vom Element-Typ werden die zur Darstellung notwendigen Eigenschaften ermittelt + * @return Array() + */ + function getRelatedProperties() + { + $typeprop = Array('text' =>Array('withIcon','allLanguages','writable','html','wiki','defaultText'), + 'longtext'=>Array('withIcon','allLanguages','writable','html','wiki','defaultText'), + 'select' =>Array('withIcon','allLanguages','writable','defaultText','code'), + 'number' =>Array('withIcon','allLanguages','writable','decPoint','decimals','thousandSep'), + 'link' =>Array('withIcon','allLanguages','writable','folderObjectId','defaultObjectId'), + 'date' =>Array('withIcon','allLanguages','writable','dateformat'), + 'list' =>Array('withIcon','allLanguages','writable','folderObjectId'), + 'code' =>Array('code'), + 'info' =>Array('subtype'), + 'infodate'=>Array('subtype','dateformat') ); + + return $typeprop[ $this->type ]; + } + + + /** + * Ermitteln aller benutzbaren Elementtypen + * @return Array + */ + function getAvailableTypes() + { + return array('text', + 'longtext', + 'select', + 'number', + 'link', + 'date', + 'list', + 'code', + 'info', + 'infodate'); + } + + + /** + * Ermittelt, ob das Element beschreibbar ist. + * Bestimmte Typen (z.B. Info-Felder) sind nie beschreibbar, dann wird immer false zurückgegeben. + * Ansonsten wird ermittelt, ob dieses Element als beschreibbar markiert ist. + */ + function isWritable() + { + // Bei bestimmten Feldern immer false zurueckgeben + if ( in_array($this->type,Array('info','infodate','code')) ) + return false; + + return $this->writable; + } +} + +?>+ \ No newline at end of file diff --git a/themes/default/pages/html/element.tpl.php b/themes/default/pages/html/element.tpl.php @@ -275,6 +275,20 @@ <?php } ?> + <?php if ( isset($select_items) ) + { + $fx = fx($fx); ?> + <tr> + <td class="<?php echo $fx ?>"><?php echo lang('EL_PROP_SELECT_ITEMS') ?></td> + <td class="<?php echo $fx ?>"><textarea name="code" rows="15" cols="40"><?php echo $select_items ?></textarea></td> + </tr> + <tr> + <td></td> + <td class="help"><?php echo lang('EL_PROP_SELECT_ITEMS_DESC') ?></td> + </tr> + <?php } ?> + + <?php if (isset($act_folderobjectid)) { $fx = fx($fx); ?> <tr> diff --git a/themes/default/pages/html/pageelement/edit/select.tpl.php b/themes/default/pages/html/pageelement/edit/select.tpl.php @@ -0,0 +1,45 @@ +<?php include( $tpl_dir.'header.tpl.php') ?> + +<!-- $Id$ --> +<center> + +<form action="<?php echo $self ?>" method="post" target="_self"> +<input type="hidden" name="subaction" value="elsave" /> +<input type="hidden" name="action" value="page" /> +<input type="hidden" name="old_pageaction" value="<?php echo $old_pageaction ?>" /> + +<table class="main" width="90%" cellspacing="0" cellpadding="4"> + +<tr> + <th><?php echo $name ?></th> +</tr> +<tr> + <td class="help"><?php echo $desc ?></th> +</tr> + +<tr> +<td class="f1"><?php echo Html::selectBox( 'text',$items,$text,array('onchange'=>'submit();')) ?></td> +</tr> + +<?php if ( $release ) + { ?> +<tr> +<td class="f2"><?php echo Html::checkBox('release',true,true) ?> <?php echo lang('RELEASE') ?></td> +</tr> +<?php } ?> + +<tr> +<td class="act"><input type="submit" class="submit" value="<?php echo lang('SAVE') ?>"></td> +</tr> + +</table> + +</form> + +</center> + +<script name="JavaScript" type="text/javascript"><!-- +document.forms[0].text.focus(); +//--></script> + +<?php include( $tpl_dir.'footer.tpl.php') ?>+ \ No newline at end of file