Danke sofern das nicht ironisch war
Also falls auch jemand so etwas benötigt, die Einrichtung ist relativ simpel.
[1] Formular erstellen ohne speichern, ohne EFG, ohne Emailversenden.
[2] Das Feld valumsFileUploader reinsetzen und gleich den Absendebutton.
[3] mein Script in eine bestehende oder eine eigene Extension einfügen.
[4] processFormData Hook einbauen
[5] Unser Formular auf die Seite mit dem Catalog Edit
- fertig
Gehen wir davon aus wir haben eine bestehende oder neue leere Erweiterung die nix macht ausser Formulardaten abfangen.
Ordner
system/modules/unsereerweiterung
system/modules/unsereerweiterung/config
Dateien
system/modules/unsereerweiterung/Extrafunktion.php
system/modules/unsereerweiterung/config/config.php
In die config.php kommt jetzt
PHP-Code:
<?php if (!defined('TL_ROOT')) die('You cannot access this file directly!');
$GLOBALS['TL_HOOKS']['processFormData'][] = array('Extrafunktion', 'formcheck');
?>
In die Extrafunktion.php kommt jetzt
PHP-Code:
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
class Extrafunktion extends Frontend
{
public function formcheck($arrPost, $arrForm, $arrFiles){
$profil_id = $this->Input->get('items');
if ($profil_id != '' && $arrFiles){
$galeriespalte = 'meinegalerie';// konfig:: spaltenname des multi "file" Feldes
$catalogtabelle = 'cat_meincatalog';// konfig:: tabellenname des Katalogs
$bildpfad = 'datenarchiv/fotoarchiv/models/cat_meincatalog/';// konfig:: dateipfad manuell leider (toDo) ^^
$this->import('Database');
$this->import('FrontendUser','user');
$user_id = $this->user->id;// optional:: besitzer des Catalogitems (Member ID)
$objItem = $this->Database->prepare("SELECT * FROM ".$catalogtabelle." WHERE id=?" )->limit(1)->execute($profil_id);
if($objItem->numRows){
if($objItem->$galeriespalte != ''){
$arrGalerie = deserialize($objItem->$galeriespalte);// array mit derzeitigen Bildern
}else{
$arrGalerie = array();// oder neu
}
foreach($arrFiles as $key=>$value){
if($value['name'] != ''){
$dateiname = $value['name'];
$arrGalerie[] = $bildpfad.$dateiname;
}
}
$arrGalerie = serialize($arrGalerie);// array mit neuen Bildern
$this->Database->prepare("UPDATE ".$catalogtabelle." SET ".$galeriespalte."=? WHERE id=?")->execute($arrGalerie,$profil_id);// ohne Besitzer
//$this->Database->prepare("UPDATE ".$catalogtabelle." SET ".$galeriespalte."=? WHERE id=? AND user=?")->execute($arrGalerie,$profil_id,$user_id); // oder mit besitzer
}
}
}
}
Ändern:
- galeriespalte = der Spaltenname des multi file Feldes den ihr im Catalog vergeben habt
- catalogtabelle = tabellenname des Ziel Catalogs (könnte man auch automatisieren)
- bildpfad = relative Pfad zu den Bildern den ihr im Formular "valumsFileUploader " eingestellt habt
Und das wars auch schon.
Lesezeichen