Seite 7 von 24
Verfasst: Do 28. Okt 2004, 13:48
von Haue
Sorry für die dumme Frage aber:
Ich habe mir das Beispielformular eingebaut. Wie oder wo ändere ich denn jetzt die Andresse, an die die Mail geschickt wird? Ist das in dem Input-Teil?
Auch die Färbung der nicht ausgefüllten Felder mir ROT (wie im Beispiel) funktioniert bei mir nicht...
PS: Ich kann den Container 7 (Bei mir mit dem Formularmodul belegt) auch in der Konfiguration nicht bearbeiten. Er wird nicht angezeigt!?!
Style CSS
Verfasst: Mo 1. Nov 2004, 20:42
von noway
Hallo erstmal und danke für eine coole Erweiterrung in COntenido !!
Ich habe bisher die Formulare immer über Templates eingebunden.
Kann ich der Anweisung von CSS Klassen machen, über zb style:top1; ?
um daraus dann style="top1" zu bekommen ?
Ich habe im queltext die Variable $style zwar gesehen.
Aber wo wird sie defeniert ?
Gruß Klaus
Verfasst: Mo 1. Nov 2004, 23:20
von cardman
Hallo,
Ich hab leider ein kleines Problem mit dem Modul.
Nachdem ich es komplett wie beschrieben engebunden hatte, wollte ich es anhand des Besispielformulars testen. Leider bekomme ich das Formular nicht angezeigt.
Worann kann das den liegen?
gruß cardman
Habe da auch ein kleines Problem...
Verfasst: Di 2. Nov 2004, 10:33
von saschar
Hallo.
Wäre ja echt ein tolles Modul, bloss funktioniert es bei mir leider nicht.
Ich habe zuerst das aus dem Forum, dann das von w3concepts-Website und
dann die modifizierten Modul-Varinaten probiert und ich bekomme bei der Vorschau oder auch wenn ich den Artikel freischalte nur die Fehlermeldung:
echo "No code available.";
oder auch einfach nur ein weisses Fenster.
Ich verwende Mac OS X und Firefox als Browser.
Hat hier jemand einen Tipp?
Schöne Grüße
Sascha
Verfasst: Mi 3. Nov 2004, 16:06
von Haue
Hi, wie kann ich bei der Sendebestätigung das ausgeben, was der Kunde mir per email geschickt hat?
Also etwa so:
Sie haben folgendes gesendet:
Name: Harry Müller
Email: Harry@mueller.de
usw...
Verfasst: Mi 3. Nov 2004, 17:25
von kummer
die daten werden per post übergeben und sind folglich als superglobale variablen über $_POST ansprechbar. du musst allerdings das ganze direkt im modul lösen; das geht leider nicht einfach über den bestätigungsteil der konfiguration.
Verfasst: Mi 3. Nov 2004, 19:02
von Haue
Wie würde das denn beispielhaft aussehen?
Hier mein output:
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : w3concepts.form.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 20-08-2004
* Modified : 20-08-2004
************************************************/
class w3form {
var $email, $aufgedroeselt, $form, $formularFeld;
function w3form() {
}
// PRIVATE
function sendEmail() {
$this->aufdroeseln($this->suppress('sent'));
$this->generateEmailMessage();
mail($this->email['adresses'],$this->email['subject'],$this->email['message'],"From: {$this->email['from']['name']} <{$this->email['from']['email']}>\nReply-To: {$this->email['from']['email']}\nX-Mailer: PHP/" . phpversion());
}
// PRIVATE
function aufdroeseln($aufzudroeseln,$prefix = '') {
foreach ($aufzudroeseln as $key => $value) {
if (is_array($value)) {
$this->aufdroeseln($value,$key." ");
} else {
$this->aufgedroeselt["{$prefix}{$key}"] = $value;
}
}
}
// PRIVATE
function add2Message($key,$value) {
if (strlen($key) > 25 OR strlen($value) > 54) {
$this->email['message'] .= "$key\n$value\n";
} else {
$this->email['message'] .= $key;
$this->email['message'] .= str_repeat(' ',25-strlen($key));
$this->email['message'] .= "$value\n";
}
}
// PRIVATE
function generateEmailMessage() {
if ($this->aufgedroeselt) foreach ($this->aufgedroeselt as $key => $value) {
$this->add2Message($key,$value);
}
}
// PRIVATE
function suppress() {
$suppress = func_get_args();
foreach ($_POST as $key => $value) {
if (array_search($key,$suppress) === false) $fields[$key] = $value;
}
return $fields;
}
// PUBLIC
function addEmailAdress($email) {
if (empty($this->emailAdresses)) {
$this->email['adresses'] .= "$email";
} else {
$this->email['adresses'] .= ", $email";
}
}
// PUBLIC
function setEmailSubject($subject) {
$this->email['subject'] = $subject;
}
// PUBLIC
function setEmailFrom($email,$name) {
$this->email['from']['email'] = $email;
$this->email['from']['name'] = $name;
}
// PUBLIC
function setForm($form) {
$this->form['form'] = $form;
}
// PUBLIC
function setAnswer($answer) {
$this->form['answer'] = $answer;
}
// PUBLIC
function setBackgroundError($color) {
$this->form['colorError'] = $color;
}
// PRIVATE
function formularInterpretation(&$formular) {
$felder = split('###',$formular);
for ($i=1;$i<count($felder);$i=$i+2) {
$attributte = split(';',trim($felder[$i]));
foreach ($attributte as $attribut) {
$namewert = split(':',trim($attribut));
if ($namewert[0] != 'option' && $namewert[0] != 'optionvalue') {
$feld["{$felder[$i]}"]["{$namewert[0]}"] = $namewert[1];
} else {
$feld["{$felder[$i]}"]["{$namewert[0]}"][] = $namewert[1];
}
}
}
return $feld;
}
// PRIVATE
function formularAusgabe($sent = false) {
echo '<form action="" method="POST">';
echo '<input type="hidden" name="sent" value="true" />';
$formular = $this->form['form'];
$formulardaten = $this->formularInterpretation(&$formular);
$formular = split('###',$formular);
foreach ($formular as $formularteil) {
if (!empty($formulardaten["{$formularteil}"])) {
$this->formularFeld($formulardaten["{$formularteil}"],$sent);
} else {
echo $formularteil;
}
}
echo '</form>';
}
// PRIVATE
function formularFeld($attribute,$sent) {
$parameter = "name=\"{$attribute['name']}\"";
if ($sent && !$this->formularFeldKorrekt(&$attribute)) $style ="style=\"background-color:{$this->form['colorError']};\"";
switch ($attribute['type']) {
case 'select':
case 'password':
case 'text':
if (!empty($attribute['size'])) $parameter .= " size=\"{$attribute['size']}\"";
break;
}
switch ($attribute['type']) {
case 'textarea':
case 'text':
if (!empty($attribute['size'])) $parameter .= " size=\"{$attribute['size']}\"";
if (!empty($attribute['value'])) $value = $attribute['value'];
if (!empty($_POST["{$attribute['name']}"])) $value = $_POST["{$attribute['name']}"];
break;
}
switch ($attribute['type']) {
case 'text':
echo "<input type=\"text\" $parameter value=\"$value\" $style />";
break;
case 'password':
echo "<input type=\"password\" $parameter value=\"$value\" $style />";
break;
case 'textarea':
echo "<textarea name=\"{$attribute['name']}\" cols=\"";
echo (empty($attribute['cols']))?('20'):($attribute['cols']);
echo "\" rows=\"";
echo (empty($attribute['rows']))?('2'):($attribute['rows']);
echo "\" wrap=\"virtual\" $style>$value</textarea>";
break;
case 'select':
echo "<select $parameter $style>";
for ($i=0;$i<count($attribute['option']);$i++) {
if (!empty($attribute['optionvalue'][$i])) {
if (!empty($_POST["{$attribute['name']}"]) && $_POST["{$attribute['name']}"] == $attribute['optionvalue'][$i]) {
echo "<option value=\"{$attribute['optionvalue'][$i]}\" selected=\"selected\">{$attribute['option'][$i]}</option>\n";
} else {
if (empty($_POST["{$attribute['name']}"]) && !empty($attribute['optionvalue'][$i]) && $attribute['optionvalue'][$i] == $attribute['value']) {
echo "<option value=\"{$attribute['optionvalue'][$i]}\" selected=\"selected\">{$attribute['option'][$i]}</option>\n";
} else {
echo "<option value=\"{$attribute['optionvalue'][$i]}\">{$attribute['option'][$i]}</option>\n";
}
}
} else {
if (!empty($_POST["{$attribute['name']}"]) && $_POST["{$attribute['name']}"] == $attribute['option'][$i]) {
echo "<option selected=\"selected\">{$attribute['option'][$i]}</option>\n";
} else {
if (empty($_POST["{$attribute['name']}"]) && $attribute['option'][$i] == $attribute['value']) {
echo "<option selected=\"selected\">{$attribute['option'][$i]}</option>\n";
} else {
echo "<option>{$attribute['option'][$i]}</option>\n";
}
}
}
}
echo "</select>";
break;
case 'checkbox':
$formularbezeichner = preg_split('[\[|\]]',$attribute['name']);
if ($sent) {
if ($_POST["{$formularbezeichner[0]}"]["{$formularbezeichner[1]}"] == $attribute['value']) {
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
} else {
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\"/>";
}
} else {
if (!empty($attribute['selected']) && $attribute['selected'] == 'true') {
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
} else {
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\"/>";
}
}
break;
case 'radio':
if (!empty($_POST["{$attribute['name']}"])) {
if ($_POST["{$attribute['name']}"] == $attribute['value']) {
echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
} else {
echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\" />";
}
} else {
if (!empty($attribute['selected']) && $attribute['selected'] == 'true') {
echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
} else {
echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\"/>";
}
}
break;
}
}
// PRIVATE
function formularVollstaendig() {
$formular = $this->form['form'];
$felder = $this->formularInterpretation(&$formular);
foreach ($felder as $feld) {
if (!$this->formularFeldKorrekt(&$feld)) return false;
}
return true;
}
// PRIVATE
function success() {
$this->sendEmail();
echo $this->form['answer'];
}
// PRIVATE
function formularFeldKorrekt(&$feld) {
// prüfung, ob pflichtfeld vorhanden
if (!empty($feld['mandatory']) && $feld['mandatory'] == 'true' && empty($_POST["{$feld['name']}"])) return false;
// wenn das formularfeld kein pflichtfeld und nicht vorhanden ist, true zurück geben
if (empty($_POST["{$feld['name']}"])) return true;
// regular expression prüfungen
if (!empty($feld['valid']) && $feld['valid'] == 'simpletext' && !eregi("^[öäüéàèâêîça-z-]*$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'text' && !eregi("^[ .,;!?()öäüéàèâêîça-z-]*$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'integer' && !eregi("^[0-9]*$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'float' && !eregi("^[0-9]*[.]{0,1}[0-9]*$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'date' && !eregi("^[0-9]{1,2}.[0-9]{1,2}.[0-9]{2}$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'email' && !eregi("^[öäüéàèâêîç_a-z0-9-]+(\.[öäüéàèâêîç_a-z0-9-]+)*@[öäüéàèâêîça-z0-9-]+(\.[öäüéàèâêîça-z0-9-]+)*$",$_POST["{$feld['name']}"])) return false;
// grössenbereich bei integer und float prüfen
if (!empty($feld['minvalue']) && $_POST["{$feld['name']}"] < $feld['minvalue']) return false;
if (!empty($feld['maxvalue']) && $_POST["{$feld['name']}"] > $feld['maxvalue']) return false;
// längenbereich bei allen typen prüfen
if (!empty($feld['minlength']) && strlen($_POST["{$feld['name']}"]) < $feld['minlength']) return false;
if (!empty($feld['maxlength']) && strlen($_POST["{$feld['name']}"]) > $feld['maxlength']) return false;
return true;
}
//PUBLIC
function process() {
if (!isset($_POST['sent'])) {
$this->formularAusgabe();
} elseif ($this->formularVollstaendig()) {
$this->success();
} else {
$this->formularAusgabe(true);
}
}
}
if ($edit) {
echo "<h1>Formularkonfiguration</h1>";
echo "<p>Hier ist das Formular sowie der Text einzugeben, der zusammen mit dem Formular ausgegeben werden soll:</p>";
echo "CMS_HTML[0]";
echo "<p>Hier ist die Ausgabe einzugeben, die erscheint, wenn das Formular erfolgreich prozessiert worden ist:</p>";
echo "CMS_HTML[1]";
} else {
$formular = new w3form();
$formular->addEmailAdress("CMS_VALUE[0]");
$formular->setEmailSubject("CMS_VALUE[1]");
$formular->setEmailFrom("CMS_VALUE[2]","CMS_VALUE[3]");
$formular->setBackgroundError("CMS_VALUE[4]");
$formular->setForm("CMS_HTML[0]");
$formular->setAnswer("CMS_HTML[1]");
$formular->process();
}
?>
Verfasst: Mi 3. Nov 2004, 19:45
von cardman
Hallo,
Ich würde dieses Modul auch gerne benutzen, allerdings funktioniert es nicht wirklich bei mir. Ich bekomme leider das Fomular, das ich im Editor erstellt habe nicht angezeigt im frontend.
Ich nutze Contenido 4.4.4.
Für eine schnelle antwort bin ich dankbar.
Zusätzlicher Text im Mail mitsenden
Verfasst: Mi 10. Nov 2004, 15:40
von bru
Hi
erst mal danke für dieses Top-Modul!
Ich würde gerne im Mail mit den Formulardaten noch einen "Standardtext mitsenden" welchen ich in der Konfiguration eingeben kann.
Ähnlich dem Betreff, aber der Text soll im Mail selbst erscheinen
Hab schon ein bisschen rumgedocktert, aber leider krieg ich's nicht hin...
Greets
bru
Verfasst: Sa 13. Nov 2004, 02:20
von grossy
folgendes problem besteht noch und ist jetzt auch bei mir aufgetreten:
[quote]
Das Skript läuft auf dem Server der Universität Regensburg.
Als Absendername steht nur eine Email-Adresse da,
und die setzt sich aus dem Kundennamen und dem Servernamen zusammen,
also
kundenname@rss1.rz.uni-regensburg.de
Was kann man da tun???
[/quote]
als kundenname wäre es schön wirklich nur den kundenname zu bekommen nicht noch den anhang "@irgendeinserver.de"...
hat jemand ne idee?[/quote]
Verfasst: Sa 13. Nov 2004, 02:23
von grossy
folgendes problem besteht noch und ist jetzt auch bei mir aufgetreten. hab kundenname und emailadresse jetzt übergeben, sodass man problemlos auf die kundenmail antworten kann (daten stehen jetzt im "from:"). problem ist das der kundename einen unschönen anhang hat...
Das Skript läuft auf dem Server der Universität Regensburg.
Als Absendername steht nur eine Email-Adresse da,
und die setzt sich aus dem Kundennamen und dem Servernamen zusammen,
also
kundenname@rss1.rz.uni-regensburg.de
Was kann man da tun???
als kundenname wäre es schön wirklich nur den kundenname zu bekommen nicht noch den anhang "@irgendeinserver.de"...
hat jemand ne idee?[/quote]
Verfasst: Di 21. Dez 2004, 09:24
von toipan
Komme irgendwie mit dem Formular nicht so ganz klar. Habe jetzt einfach mal versucht das Beispielformular von kummer (danke

) zu übernehmen. Ich setze das Output Script bei Output rein, das Input Script bei Input und das Table Script im Formularartikel. Wenn ich mir nun die Seite anschaue, erhalte ich immer nur Text mit ###......###;###....### aber keine Formularfelder. Aber eigentlich sollten diese doch automatisch erkannt werden? Irgendwie hakt es bei mir da.
Kann mir da vielleicht jemand helfen ?
Nutze Contenido 4.4 bei all-inkl.com, falls das von Bedeutung sein sollte.
Gruß & Dank
Alex
Re: neues formularmodul :: w3concepts.form.v1
Verfasst: Do 6. Jan 2005, 04:23
von Hoax
kummer hat geschrieben:name:feldbezeichnung (pflicht)
type:text (pflicht; zur auswahl stehen: text, textarea, password, select, radio, checkbox)
valid:integer (optional; zur auswahl stehen: simpletext, text, integer, date, email, float)
mandatory:true (optional; zur auswahl stehen: true, false)
value:wert (optional; wert bezeichnet der vorgabewert)
size:12 (optional; breite des feldes)
cols:30 (optional; breite eines textarea-feldes)
rows:5 (optional; höhe eines textarea-feldes)
option:anzeigewert (pflicht bei select; wert, welcher im browser angezeigt wird)
optionvalue:speicherwert (optional; wert welcher bei selects übertragen wird)
minvalue:1 (optional; mindestwert, der einzugeben ist)
maxvalue:100 (optional; maximalwert, der eingegeben werden darf)
minlength:3 (optional; minimale anzahl zeichen, die eingegeben werden müssen)
maxlength:8 (optional; maximale anzahl zeichen, die eingegeben werden dürfen)
Ein Feld für "id" wäre sehr wichtig, da bei barrierefreien Layouts Formulare mit
Code: Alles auswählen
<label for="vorname"></label><input type="text" name="vorname" id="vorname"/>
ausgezeichnet werden müssen.
Verfasst: Do 6. Jan 2005, 08:43
von kummer
und dürfte dabei die id identisch mit den feldnamen sein? oder müsste man dafür eine weitere variable einführen?
Verfasst: Do 6. Jan 2005, 13:24
von i-fekt
Ist im Prinzip egal, das Feld "id" hat nur für den Textbrowser eine Bedeutung und kann im Script selber ignoriert werden.
Das was bei <label for="xx">...</label> steht muss nur hinten bei id="xx" in dem Input Feld stehen.
Man könnte also auch den Feldname nehmen.