commit 464aa307228aff489290851f7705b5761b4fe520
parent 086a286fcc36ec1222a08dbbbc2b5014d3806d25
Author: dankert <devnull@localhost>
Date: Thu, 14 Oct 2004 00:12:57 +0200
Neue Seitenfunktion zum gleichzeitigen Bearbeiten aller Seiteninhalte
Diffstat:
1 file changed, 179 insertions(+), 3 deletions(-)
diff --git a/actionClasses/PageAction.class.php b/actionClasses/PageAction.class.php
@@ -20,7 +20,10 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// ---------------------------------------------------------------------------
// $Log$
-// Revision 1.10 2004-10-05 10:00:49 dankert
+// Revision 1.11 2004-10-13 22:12:57 dankert
+// Neue Seitenfunktion zum gleichzeitigen Bearbeiten aller Seiteninhalte
+//
+// Revision 1.10 2004/10/05 10:00:49 dankert
// Neue Funktionalit?t: Austauschen einer Vorlage
//
// Revision 1.9 2004/09/07 21:12:08 dankert
@@ -103,6 +106,85 @@ class PageAction extends Action
}
+ /**
+ * Alle Daten aus dem Formular speichern
+ */
+ function saveform()
+ {
+ $this->page->public = true;
+ $this->page->simple = true;
+ $this->page->generate_elements();
+
+ foreach( $this->page->values as $id=>$value )
+ {
+ if ( $value->element->isWritable() && $this->getRequestVar('saveid'.$value->element->elementid)=='1' )
+ {
+ $value = new Value();
+ $value->objectid = $this->page->objectid;
+ $value->pageid = Page::getPageIdFromObjectId( $value->objectid );
+ $value->element = new Element( $id );
+ $value->element->load();
+ $value->publish = false;
+ $value->load();
+
+ $varname = 'id'.$value->element->elementid;
+ $inhalt = $this->getRequestVar($varname);
+
+ switch( $value->element->type )
+ {
+ case 'number':
+ $value->number = $inhalt * pow(10,$value->element->decimals);
+ break;
+
+ case 'date':
+ $value->date = strtotime( $inhalt );
+ break;
+
+ case 'text':
+ case 'longtext':
+ case 'select':
+ $value->text = $inhalt;
+ break;
+
+ case 'link':
+ case 'list':
+ $value->linkToObjectId = intval($inhalt);
+ break;
+ }
+
+ $value->page = &$this->page;
+
+ // Ermitteln, ob Inhalt sofort freigegeben werden kann und soll
+ if ( $this->page->hasRight('release') && $this->getRequestVar('release')!='' )
+ $value->publish = true;
+ else
+ $value->publish = false;
+
+ // Inhalt speichern
+ // Wenn Inhalt in allen Sprachen gleich ist, dann wird der Inhalt
+ // fuer jede Sprache einzeln gespeichert.
+ if ( $value->element->allLanguages )
+ {
+ $p = new Project();
+ foreach( $p->getLanguageIds() as $languageid )
+ {
+ $value->languageid = $languageid;
+ $value->save();
+ }
+ }
+ else
+ {
+ // sonst nur 1x speichern (fuer die aktuelle Sprache)
+ $value->languageid = $this->getSessionVar('languageid');
+ $value->save();
+ }
+ }
+ }
+
+ $this->callSubAction( 'form');
+ }
+
+
function elsave()
{
$value = new Value();
@@ -146,7 +228,7 @@ class PageAction extends Action
// Inhalt speichern
// Wenn Inhalt in allen Sprachen gleich ist, dann wird der Inhalt
- // f?r jede Sprache einzeln gespeichert.
+ // fuer jede Sprache einzeln gespeichert.
if ( $value->element->allLanguages )
{
$p = new Project();
@@ -158,7 +240,7 @@ class PageAction extends Action
}
else
{
- // sonst nur 1x speichern (f?r die aktuelle Sprache)
+ // sonst nur 1x speichern (fuer die aktuelle Sprache)
$value->save();
}
@@ -298,6 +380,100 @@ class PageAction extends Action
}
+ /**
+ * Alle editierbaren Felder in einem Formular bereitstellen
+ */
+ function form()
+ {
+ global $conf_php;
+
+ $this->page->public = false;
+ $this->page->simple = true;
+ $this->page->generate_elements();
+
+ $list = array();
+
+ foreach( $this->page->values as $id=>$value )
+ {
+ if ( $value->element->isWritable() )
+ {
+ $list[$id] = array();
+ $list[$id]['name'] = $value->element->name;
+ $list[$id]['desc'] = $value->element->desc;
+ $list[$id]['type'] = $value->element->type;
+
+ switch( $value->element->type )
+ {
+ case 'text':
+ case 'longtext':
+ $list[$id]['value'] = $value->text;
+ break;
+
+ case 'date':
+ $list[$id]['value'] = date( 'Y-m-d H:i:s',$value->date );
+ break;
+
+ case 'number':
+ $list[$id]['value'] = $value->number / pow(10,$value->element->decimals);
+ break;
+
+ case 'select':
+ $list[$id]['list' ] = $value->element->getSelectItems();
+ $list[$id]['value'] = $value->text;
+ break;
+
+ case 'link':
+ $objects = array();
+
+ foreach( Folder::getAllObjectIds() as $oid )
+ {
+ $o = new Object( $oid );
+ $o->load();
+
+ if ( $o->getType() != 'folder' )
+ {
+ $f = new Folder( $o->parentid );
+ $f->load();
+
+ $objects[ $oid ] = lang( $o->getType() ).': ';
+ $objects[ $oid ] .= implode( ' » ',$f->parentObjectNames(false,true) );
+ $objects[ $oid ] .= ' » '.$o->name;
+ }
+ }
+
+ asort( $objects ); // Sortieren
+
+ $list[$id]['list' ] = $objects;
+ $list[$id]['value'] = $value->linkToObjectId;
+ break;
+
+ case 'list':
+ $objects = array();
+ foreach( Folder::getAllFolders() as $oid )
+ {
+ $f = new Folder( $oid );
+ $f->load();
+
+ $objects[ $oid ] = lang( $f->getType() ).': ';
+ $objects[ $oid ] .= implode( ' » ',$f->parentObjectNames(false,true) );
+ }
+
+ asort( $objects ); // Sortieren
+
+ $this->setTemplateVar('list' ,$objects);
+ $this->setTemplateVar('value',$this->value->linkToObjectId);
+
+ break;
+ break;
+ }
+ }
+ }
+
+ $this->setTemplateVar('el',$list);
+ $this->forward('page_form');
+ }
+
+
function show()
{
// Seite definieren