Hallo an Alle T3ler da draussen,
auf allgemeinen Wunsch hier der Code für ein Gästebuch mit Bildupload. Funktioniert bei mir prima.
------------------------- cut -----------------------------------
Erstmal ab in den Extensionmanager, auf die Guestbook-Extension und "Edit Files".
Da nimmst du dir dann erstmal die ext_tables.sql vor und erweiterst sie um die Zeile:
---------------------------------------------------------
cr_image tinyblob NOT NULL,
---------------------------------------------------------
damit das Bild auch in der DB Platz hat.
Dann die ext_emconf.php
---------------------------------------------------------
'uploadfolder' => 'uploads/tx_ttguest',
---------------------------------------------------------
Damit der mir beim nächsten Update der Extension auch automatisch das Verzeichnis anlegt, wo die ganzen Bilder reinkommen.
Dann gehst du in die ext_typoscript_setup.txt und erweiterst den Abschnitt "allowNew" um:
---------------------------------------------------------
cr_image=1
---------------------------------------------------------
Weiter unten bei "postform.DataArray" fügst du noch
---------------------------------------------------------
45.label = Bild:
45.type = data[tt_guest][NEW][cr_image]=file,25
---------------------------------------------------------
Ein, damit das ganze auch im Frontendformular mit drin ist.
Unter "postform.no_cache=1" dann noch
---------------------------------------------------------
theimage {
file.width=100
imageLinkWrap = 1
imageLinkWrap {
enable = 1
bodyTag (
<body bgcolor="#000000" leftmargin="2" topmargin="2"
marginwidth="2" marginheight="2">
)
wrap = <a href="javascript:close();"> | </a>
width = 640m
height = 640m
JSwindow = 1
JSwindow.newWindow = 1
JSwindow.expand = 4,4
}
}
---------------------------------------------------------
Damit kannst du die Eigenschaften des Thumbnails im Guestbook steuern...bei mir wird das zB bei Mouseklick in nem neuen Fenster geöffnet.
So, jetzt die tca.php. Ich zeig sie mal komplett, weil da recht viele Änderungen sind...hier wird halt festgelegt, wie das ganze im Backend aussieht.
---------------------------------------------------------
<?php
// ******************************************************************
// This is the standard TypoScript guestbook
// ******************************************************************
$TCA['tt_guest'] = Array (
'ctrl' => $TCA['tt_guest']['ctrl'],
'interface' => Array (
'showRecordFieldList' => 'title,cr_name,cr_email,cr_image,note,www,hidden'
),
'columns' => Array (
'title' => Array (
'label' => 'LLL:EXT:lang/locallang_general.php:LGL.title',
'config' => Array (
'type' => 'input',
'size' => '40',
'max' => '256'
)
),
'note' => Array (
'label' => 'LLL:EXT:lang/locallang_general.php:LGL.note',
'config' => Array (
'type' => 'text',
'cols' => '40',
'rows' => '5'
)
),
'cr_name' => Array (
'label' => 'LLL:EXT:tt_guest/locallang_tca.php:tt_guest.cr_name',
'config' => Array (
'type' => 'input',
'size' => '40',
'eval' => 'trim',
'max' => '80'
)
),
'cr_image' => Array (
'label' => 'LLL:EXT:tt_guest/locallang_tca.php::tt_guest.cr_image',
"config" => Array (
"type" => "group",
"internal_type" => "file",
"allowed" => "gif,jpg,jpeg,png", // Allowed extensions
"max_size" => "1000", // Max 1000 kb pr. image
"uploadfolder" => "uploads/tx_ttguest",
"show_thumbs" => "1", // Yes, show thumbnails in backend
"size" => "3", // The image list box is 3 items high
"maxitems" => "6", // Max 6 images pr. record!
"minitems" => "0" // Min 0 images.
)
),
'cr_email' => Array (
'label' => 'LLL:EXT:tt_guest/locallang_tca.php:tt_guest.cr_email',
'config' => Array (
'type' => 'input',
'size' => '40',
'eval' => 'trim',
'max' => '80'
)
),
'www' => Array (
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.php:LGL.www',
'config' => Array (
'type' => 'input',
'eval' => 'trim',
'size' => '20',
'max' => '256'
)
),
'hidden' => Array (
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.php:LGL.hidden',
'config' => Array (
'type' => 'check',
'default' => '1'
)
)
),
'types' => Array (
'0' => Array('showitem' => 'hidden;;;;1-1-1, title;;;;3-3-3, note, cr_name, cr_email, cr_image, www')
)
);
?>
-------------------------------------------------------------
Soooo, in der pi/class.tx_ttguest.php muss die Ausgabe im Frontend folgendermassen verändert werden:
while(list(,$recentPost)=each($recentPosts)) {
// Passing data through stdWrap and into the markerArray
$cObj->start($recentPost); // Set this->data to the current record tt_guest record.
$markerArray=array();
//print_r($recentPost);
$image=$conf["theimage."];
$image["file"]="uploads/tx_ttguest/".$recentPost["cr_image"];
$markerArray["###POST_IMAGE###"] = $cObj->IMAGE($image);
$markerArray["###POST_TITLE###"] = $cObj->stdWrap($this->formatStr($recentPost["title"]), $conf["title_stdWrap."]);
$markerArray["###POST_CONTENT###"] = $cObj->stdWrap($this->formatStr($recentPost["note"]), $conf["note_stdWrap."]);
$markerArray["###POST_AUTHOR###"] = $cObj->stdWrap($this->formatStr($recentPost["cr_name"]), $conf["author_stdWrap."]);
$markerArray["###POST_EMAIL###"] = $cObj->stdWrap($this->formatStr($recentPost["cr_email"]), $conf["email_stdWrap."]);
-------------------------------------------------------------
Jetzt passt du noch das Template an (zb pi/guest_template1.tmpl) und baust da irgendwo den Marker
###POST_IMAGE### ein.
So, bis hierhin sollte alles funktionieren, bis auf das hochladen der Bilder im Frontend. Wenn nicht, hab ich irgendwas falsch beschrieben 😉
Jetzt zum hochladen:
Nach dem Submit im Frontend wird die guest_submit.inc aufgerufen…..die muss natürlich auch geändert werden:
-------------------------------------------------------------
$theFile = $GLOBALS["HTTP_POST_FILES"]["data"]["tmp_name"]["tt_guest"]["NEW"]["cr_image"];
$newimg = time()."_".$GLOBALS["HTTP_POST_FILES"]["data"]["name"]["tt_guest"]["NEW"]["cr_image"];
move_uploaded_file($theFile, "uploads/tx_ttguest/".$newimg);
$this->newData["tt_guest"]["NEW"]["cr_image"]=$newimg;
// print_r($this->newData);
$this->execNEWinsert("tt_guest", $this->newData["tt_guest"]["NEW"]);
-------------------------------------------------------------
So, wenn ich nix vergessen habe sollte es funktionieren. Hier ist jetzt aber noch keine Überprüfung auch Maximale-Uploadgröße drin. Das müsste dann auch in die guest_submit.inc rein, noch vor dem execNEWinsert, aber ich denk
das kriegt ihr schon hin.
Hoffe ich konnte euch weiterhelfen.
Cu
Florian