Seite 20 von 24

Verfasst: Mo 5. Mär 2007, 19:49
von erikawiese
Und das soll etwas mit dem Modul zu tun haben?!? [/quote]
Ich kann es mir nicht anders erklären. Die anderen (richtig funktionierende) Kategorien verwenden dasselbe Template, bis auf ein Modul - das Formularmodul.

Verfasst: Mo 5. Mär 2007, 19:54
von Dodger77
erikawiese hat geschrieben:Die anderen (richtig funktionierende) Kategorien verwenden dasselbe Template, bis auf ein Modul - das Formularmodul.
Ich habe auch nichts zum Template geschrieben, sondern zur Konfiguration. Schau dir die Konfiguration der Kategorie/des Artikels, wo sich das Formular befindet, noch mal an.

Verfasst: Mo 5. Mär 2007, 20:00
von erikawiese
...du hattest recht *peinlich* danke.
Nun aber zu einem Problem, das wirklich das Modul betrifft:
BESTÄTIGUNGSTEXT WIRD FALSCH AUSGEGEBEN
Wenn ich in das Feld:
"Hier ist die Ausgabe einzugeben, die erscheint..."
einen Text eingebe, erscheint dieser bei der Eingabe. Und eben nicht, nachdem die Daten erfolgreich übermittelt wurden.

Und noch ein paar Hinweisse:
Der Text wird auf der Bestätigungsseite doppelt ausgegeben!
Ich verwende die überarbeitete und erweiterte Version von Enigma, Seite 12
Mit Contenido 4.6.15

Verfasst: Mo 5. Mär 2007, 22:59
von Louis
erikawiese hat geschrieben:...du hattest recht *peinlich* danke.
Nun aber zu einem Problem, das wirklich das Modul betrifft:
BESTÄTIGUNGSTEXT WIRD FALSCH AUSGEGEBEN
Wenn ich in das Feld:
"Hier ist die Ausgabe einzugeben, die erscheint..."
einen Text eingebe, erscheint dieser bei der Eingabe. Und eben nicht, nachdem die Daten erfolgreich übermittelt wurden.

Und noch ein paar Hinweisse:
Der Text wird auf der Bestätigungsseite doppelt ausgegeben!
Ich verwende die überarbeitete und erweiterte Version von Enigma, Seite 12
Mit Contenido 4.6.15
Aus dem Bauch raus: Hast du im Template noch andere Text-Container?

Mach dir mal eine Sicherungskopie von deinem Formular und ersetze im Modul-Output ganz am Ende

Code: Alles auswählen

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();
}

?>
durch

Code: Alles auswählen

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[50]";
	echo "<p>Hier ist die Ausgabe einzugeben, die erscheint, wenn das Formular erfolgreich prozessiert worden ist:</p>";
	echo "CMS_HTML[51]";
} 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[50]");
	$formular->setAnswer("CMS_HTML[51]");
	$formular->process();
}

?>
Im Original werden die Container CMS_HTML[0] und [1] verwendet - nur leider tendiert man dazu, diesen Nummernbereich auch gerne mal für seine eigenen Container zu verwenden...

Bei mir läufts auch mit 4.6.15 problemlos

Verfasst: Mo 5. Mär 2007, 23:20
von erikawiese
Aus dem Bauch raus: Hast du im Template noch andere Text-Container?


Im Original werden die Container CMS_HTML[0] und [1] verwendet - nur leider tendiert man dazu, diesen Nummernbereich auch gerne mal für seine eigenen Container zu verwenden...

Bei mir läufts auch mit 4.6.15 problemlos
Richtig! Container 1 hatte ich schon vergeben. Mit der von dir geposteten Änderung läufts, danke.

Verfasst: Mo 5. Mär 2007, 23:21
von wosch
Louis hat geschrieben:Aus dem Bauch raus: Hast du im Template noch andere Text-Container?
Nix mit Bauch, so wird es sein, so war es bei mir auch :wink:
Das Modul verwendet den gleichen Conainer wie der TEXT-Modul (1).
Ich bin mir nicht mehr sicher weil ich später das Konzept geändert habe,
aber mit dem TEXT-Modul (2) geht es glaube ich, da beißt sich nix.

Bei mir läufts auch mit 4.6.15 problemlos
yeah, so ist es.

Und nur für den Fall das erikawiese später auf die Idee kommt das in der Mail das Feld "Abschicken" stört - da gibt es hier in dem Beitrag eine Lösung - also hier suchen und finden.

Verfasst: Mo 5. Mär 2007, 23:26
von erikawiese
Und nur für den Fall das erikawiese später auf die Idee kommt das in der Mail das Feld "Abschicken" stört - da gibt es hier in dem Beitrag eine Lösung - also hier suchen und finden.
Danke, Abschicken schon erfolgreich eingebaut (sonst hätte ich das mit der doppelten Ausgabe doch gar nicht bemerkt ;-)

Verfasst: Di 6. Mär 2007, 13:46
von erikawiese
Bestätigungsseite zeigt nicht die übermittelten Daten an.

Ich verwende das erweiterte Modul (Seite 12). In den Einstellungen sage ich,
"Übermittelte Daten auf Bestätigungsseite anzeigen: Ja".
Und das funzt nicht! Ich habe auch in den ganzen 20 Seiten hier keinen Hinweiss darauf gefunden.

Verfasst: Di 6. Mär 2007, 22:10
von Louis
wosch hat geschrieben:Das Modul verwendet den gleichen Conainer wie der TEXT-Modul (1).
Ich bin mir nicht mehr sicher weil ich später das Konzept geändert habe,
aber mit dem TEXT-Modul (2) geht es glaube ich, da beißt sich nix.
Wie schon gesagt, das Modul verwendet die Text-Module 0 und 1 - deswegen habe ich diese Nummern auf 50 und 51 willkürlich geändert (s. Code oben).

ABER: wenn die Formularseite irgendwo in einer Artikelliste (oder Newsliste) gelistet werden soll müssen diese zwei Nummern auf 1 und 2 geändert werden (weil die Listen üblicherweise für den Teaser-Text das Textmodul(1) auslesen)


Bei der Bestätigungsseite bin ich raus - da ich dem Absender eine Kopie der Mail schicke war mir das nicht so wichtig, meine Absender bekommen nur einen Standardtext zu sehen.

... mit Anhängen (TESTVERSION)

Verfasst: Do 8. Mär 2007, 00:28
von jcf
Hallo Zusammen,

da es das noch nicht gab, hier mal eine Erweiterung zum Versand von beliebig vielen Anhängen (Einfach "###type:file;###" so oft ihr wollt.).

Der Input ist identisch zur normalen Version.

Da ich bei mir einen SMTP verwende, habe ich auch hier Anpassungen vornehmen müssen (den entsprechenden Code kann man aus der Ursprungsdatei nehmen, falls sendmail gewünscht ist).

Sicherlich kann man das Ganze auch eleganter lösen. Bin aber nicht so der PHP-Freak. Habe mir quasi alles per Trial and Error zusammen gewurschtelt - aber es funktioniert. ;-)

Über Verbesseerungsvorschläge würde ich mich sehr freuen. Verwendung auf eigene Gefahr! Support werde ich hierfür keinen übernehmen. An einer Weiterentwicklung bin ich dennoch interessiert und arbeite daran gerne mit!

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
************************************************/

cInclude("classes", "class.phpmailer.php");

class w3form {

	var $email, $aufgedroeselt, $form, $formularFeld, $attachments;



	function w3form() {
	}

	// PRIVATE
	function sendEmail() {
		global $attachments;
		$this->aufdroeseln($this->suppress('sent','anhang[]'));
		$this->generateEmailMessage();
		$mail = new phpmailer;
		$mail->IsSMTP();
		$mail->Host = "localhost";
		$mail->From = $this->email['from']['email'];
		$mail->FromName = $this->email['from']['name'];
		$mail->AddAddress($this->email['adresses']);
		foreach($attachments as $key3 => $value3) { //loop the Attachments to be added …
			$mail->AddAttachment("upload/".$value3);
		}
		$mail->Subject = $this->email['subject'];
		$mail->Body = $this->email['message'];
		$mail->WordWrap = 1000;
		$mail->Send();
		foreach($attachments as $key => $value) {//remove the uploaded files ..
			unlink("upload/".$value);
		}
	}

	// 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);
		}
		$this->uploadFile();
	}

function uploadFile() {
	global $attachments;
	$attachments = array();
	while(list($key2,$value2) = each($_FILES[anhang]['name']))
	{
		if(!empty($value2))
		{
			$filename = $value2;
			//the Array will be used later to attach the files and then remove them from server ! 
			$attachments[] = $filename;
			$dir = 'upload/'.$filename;
			$success = copy($_FILES[anhang]['tmp_name'][$key2], $dir);


		}
	}

	if ($success) {
		echo "<p>Die Daten wurden erfolgreich hochgeladen.</p>";
	} else {
		echo "<p>Es wurden keine Daten hochgeladen.</p>";
	}

}



	// 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" enctype="multipart/form-data">';
		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) {
$anhaenge = array();
		$parameter = "name=\"{$attribute['name']}\"";
		if ($sent && !$this->formularFeldKorrekt(&$attribute)) $style ="style=\"background-color:{$this->form['colorError']};\"";
		switch ($attribute['type']) {
			case 'select':
			case 'password':
			case 'file':
			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 'file':
				echo "<input type=\"file\" name=\"anhang[]\" $style />";
				$anhaenge[] = $attribute['name'];
				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();
}

?>

Haken setzten - Chekbox bestätigen

Verfasst: Di 24. Apr 2007, 12:33
von derSteffen
Hallo Community,

ich habe gelesen, dass diese Frage hier schon mal gestellt wurde, jedoch keiner eine Antwort parat hatte. Deswegen erneut die Frage.

Ich möchte gerne ein Checkbox anbieten, die noch nicht markiert ist, die man aber "anklicken" muss und den Haken setzen muss, damit das Formular verarbeitet wird.

Wenn ich mandority:true auf die Checkbox setze, wird zwar darauf hingewiesen, dass der Haken gesetzt werden muss, dass geschieht leider auch automatisch, aber wenn ich den Haken setzte, geschieht das selbe und das Formular wird nicht versendet!

Hat jemand von Euch das schon mal gelöst?

Vielen Dank

MfG Steffen

Verfasst: Fr 11. Mai 2007, 13:06
von so2
Hallo

Ich benutze die Änderungen von Enigma von Seite 12 und -in einem anderen Modul- die Version von Seite 1 mit der Möglichkeit, die Daten in eine csv Datei zu schreiben.

Hat jemand vielleicht diese beiden Möglichkeiten kombiniert, also Version von Enigma ergänzt um die Funktion, in eine Datei zu schreiben? Wenn ja, wäre ich sehr dankbar, wenn der Code hier gepostet werden könnte.

Grüsse!

Verfasst: Di 25. Sep 2007, 20:07
von stefkey
Hallo,

tolles Modul! Ich habe es schon länger im Einsatz. Nun habe ich einen 2. und 3. Mandanten angelegt und dort wird keine Mail versendet! Das Formular funktioniert scheinbar einwandfrei: "Ihre Mail wurde erfolgreich versendet...." aber es kommt nie eine Mail beim Empfänger an. Hat jemand einen Tip?


Beste Grüße
stefkey

Verfasst: Mi 26. Sep 2007, 18:08
von stefkey
Hallo nochmal,

das Formular sendet nichts mehr, bei keinem Mandanten-nicht so wie ich im vorigen Thread sagte nur beim 1. Mandanten.

Vor ein paar Wochen ging es noch! Was könnte sich geändert haben?

Bin bei goneo.de.

Das Kontaktformular des Beispielmandanten sendet einwandfrei (mit sendmail)!


Grüße und danke!
stefkey

Verfasst: Mi 14. Nov 2007, 19:22
von rw72
Hallo,

gibt es eine Möglichkeit das derjenige wo das Formular ausfüllt eine Kopie erhält?

Danke