neues formularmodul :: w3concepts.form.v1

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 18. Apr 2005, 17:15

kummer hat geschrieben:und ich dachte, das sei allgemeingut... :wink: so kann man sich täuschen!
nicht wirklich, zumindestens hab ich das in meinem umfeld noch nicht gehört...

was anderes oder was mir aufgefallen ist...

ich spiele mich gerade mit dieser funktion

Code: Alles auswählen

	function formularInterpretation(&$formular) {
		$felder = split('###',$formular);
		for ($i=1;$i<count($felder);$i=$i+2) {
			$attributes = split(';',trim($felder[$i]));
			foreach ($attributes 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;
	}
irgendwie hab ich ein leichtes problem mit der angabe der syntax
zb wenn ich etwas wie &ouml; bei value definiert habe...

jetzt bin ich gerade dabei mir eine etwas andere syntax auszudenken damit ich zb &Ouml;sterreich oder ähnliches ohne probleme angezeigt zu bekommen...

momentan schaut das ganze ja in etwa so aus:

Code: Alles auswählen

###name:land; type:select; valid:integer; size:1; option:bitte auswählen; optionvalue:0; option:Schweiz; optionvalue:1; option:Deutschland; optionvalue:2; option:Oesterreich; optionvalue:3;value:1;minvalue:1###
ich glaub die einfachste möglichkeit wäre als trennzeichen | zu verwenden...

wenn ich mich nicht ganz täusche ist etwas wie
option: ein x-beliebiger text
auch nicht ohne weiteres möglich...
etwas wie

option: 'ein x-beliebiger text'
sollte eventuell auch möglich sein...

das ganze hat natürlich zur folge das ein update ohne anpassung des formular codes nicht mehr möglich wäre...

die generierung der formularfelder find ich ganz nett
nur fehlt mir da die möglichkeit ein style dezitiert oder eine klasse zuordnen zu können...
*** make your own tools (wishlist :: thx)

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mo 18. Apr 2005, 17:25

die umwandlung im htmlenties würde ich separat lösen. das heisst: nicht bereits bei der eingabe, sondern bei der ausgabe.

lücken sollten eigentlich auch kein problem darstellen. ich würde das mal einfach versuchen. soweit ich weiss, stört das überhaupt nicht. semikola stören natürlich ungemein. die darf man tatsächlich nicht verwenden. wenn das wichtig ist (war bei mir mindestens noch nie der fall), dann müsste man natürlich auf ein anderes trennzeichen wechseln. da wäre natürlich ein pipe nicht schlecht.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 18. Apr 2005, 17:37

hmm...

da ist mir noch ne blöde idee gekommen

-> option:&Ouml;sterreich;

-> option:'&Ouml;sterreich'; oder option:"&Ouml;sterreich";

das ganze bliebe somit auch noch kompatibel...
da müsst ich nur ne art container funktion zum sichern der werte innerhalb der ' oder " zeichen bauen....

beim pipe bin ich mir nicht ganz sicher, das wird glaube ich bei den checkboxen in irgendeiner art und weise verwendet...
*** make your own tools (wishlist :: thx)

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 18. Apr 2005, 17:44

noch ne kleine frage (wiedermal so nebenbei)

in function formularFeld verwendest du etwas wie

Code: Alles auswählen

$_POST["{$attribute['name']}"]
ähm wieso ?
steht das nicht in $aufgedroeselt zur verfügung ?
*** make your own tools (wishlist :: thx)

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mo 18. Apr 2005, 17:44

dann machen dann einfach die hochkomma oder die anführungszeichen probleme. du möchtest - wenn ich das richtig verstehe - htmlentities verwenden, weil der rich text editor solche automatisch erstellt, oder?

das vorgehen wäre dann von mir aus gesehen am einfachsten:

(1) beim einlesen des inhaltes alle htmlentities durch unicode ersetzen,

(2) normal ausführen wie bisher

(3) anschliessend alle ausgaben wieder durch htmlentities ersetzen.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mo 18. Apr 2005, 17:48

emergence hat geschrieben:noch ne kleine frage (wiedermal so nebenbei)

in function formularFeld verwendest du etwas wie

Code: Alles auswählen

$_POST["{$attribute['name']}"]
ähm wieso ?
steht das nicht in $aufgedroeselt zur verfügung ?
im einen fall wird geprüft, ob das entsprechende feld übertragen worden ist. das ist erforderlich, damit geprüft werden kann, ob alle felder angegeben worden sind (welche als pflichtfelder bezeichnet worden sind).
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 18. Apr 2005, 18:00

kummer hat geschrieben:dann machen dann einfach die hochkomma oder die anführungszeichen probleme. du möchtest - wenn ich das richtig verstehe - htmlentities verwenden, weil der rich text editor solche automatisch erstellt, oder?
na ja mehr oder weniger werden seitens der benutzer manchmal solche zeichen automatisch eingefügt...
warum auch immer... jedenfalls sind immer irgendwelche entities vorhanden...
für mich würden sich ne menge probleme lösen wenn ich das ganze einfach von '' umschließen kann und der rest kann mir dann mehr oder minder egal sein...

ähm in unicode umwandeln ?
nein mag ich momentan nicht... das fällt für mich in den bereich contenido development... sollte das cms an sich automatisch machen... das lass ich somit mal komplett aussen vor...
*** make your own tools (wishlist :: thx)

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mo 18. Apr 2005, 18:14

das formular wird in folgender methode interpretiert:

Code: Alles auswählen

	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;
	}
als ich das gemacht habe, habe ich nocht so mit regex gearbeitet. aber in diesem speziellen fall würde das hinsichtlich performance wohl auch nicht viel bringen.

die trennung erfolgt an drei stellen:

einerseits bei den ###, dann bei den semikola (;) und drittens bei den doppelpunkten (:). bei der übergabe des formularinhaltes (referenz auf $formular) müsste man nun einfach ein html_entity_decode vornehmen und dann hätte man das problem schon gelöst.

lücken stören in diesem zusammenhang nicht. deshalb werden aus meiner sicht auch weder hochkomma noch anführungszeichen benötigt.

oder sehe ich das falsch?
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Di 19. Apr 2005, 12:17

kummer hat geschrieben: die trennung erfolgt an drei stellen:

einerseits bei den ###, dann bei den semikola (;) und drittens bei den doppelpunkten (:). bei der übergabe des formularinhaltes (referenz auf $formular) müsste man nun einfach ein html_entity_decode vornehmen und dann hätte man das problem schon gelöst.

lücken stören in diesem zusammenhang nicht. deshalb werden aus meiner sicht auch weder hochkomma noch anführungszeichen benötigt.

oder sehe ich das falsch?
na ja ich brauchs trotzdem...
blödes beispiel ich möchte die breite eines input feldes mittels css definieren, (bei einer klasse ist es egal die ich zuweisen möchte -> class:myinputstyle;)

zb:

style:"width:300px; height:300px;";

na wie auch immer ich werd nichts anderes machen wie den ausdruck (".+") durch einen platz halter ersetzen -> zb: ###0###
dann das ganze aufsplitten lassen zuerst -> ; und dann :
und die platzhalter wieder zurück wechseln -> ohne quotes...

das sollte nicht so schierig sein...
scherzhalber könnte man das ganze sogar um javascript onfocus etc erweitern....
*** make your own tools (wishlist :: thx)

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Di 19. Apr 2005, 13:55

ich hab mir das jetzt mal so eingebaut:

Code: Alles auswählen

	function formularInterpretation(&$formular) {

		$felder = split('###',$formular);

		for ($i=1;$i<count($felder);$i=$i+2) {

			$tempField = trim(html_entity_decode($felder[$i]));

			$container = "";
            
			if (preg_match_all('/("[^"]+")/i', $tempField, $matches)) {
				$x = 0;
				foreach ($matches[0] as $match) {
					$x++;
					$tempField = str_replace ($match , "###".$x."###", $tempField) ;
					$container[$x] = str_replace ('"', "", $match);
				}
			}

			$attributes = split(';',$tempField );
			foreach ($attributes as $attribut) {

				if ($attribut != "") {

					$namewert = split(':',trim($attribut));

					if (preg_match('/###(\d)###/i', $namewert[1] , $match)) {
						$namewert[1] = $container[$match[1]];
					}
                                                                
					if ($namewert[0] != 'option' && $namewert[0] != 'optionvalue') {
						$feld["{$felder[$i]}"]["{$namewert[0]}"] = $namewert[1];
					} else {
						$feld["{$felder[$i]}"]["{$namewert[0]}"][] = $namewert[1];
					}
				}
			}
		}

		return $feld;
	}
der zweite teil um style und class zu unterstützen ist ganz simple

Code: Alles auswählen

		if ($sent && !$this->formularFeldKorrekt($attribute)) $style ="style=\"background-color:{$this->form['colorError']};\"";
ersetzen durch

Code: Alles auswählen

		$style = $attribute['style'];
		if ($sent && !$this->formularFeldKorrekt(&$attribute)) $style.=" background-color:{$this->form['colorError']};";

		if ($style != "") $style = 'style="'.$style.'"';

		if (!empty($attribute['class'])) { $style = 'class="'.$attribute['class'].'" '.$style; }
vielleicht kannst du es ja brauchen, ich finds jetzt sehr praktisch...
ließe sich noch schöner coden...

die syntax ändert sich somit an sich nicht wirklich hat nur ein kleines zusätzliches feature... das mit den quotes... alles innerhalb bleibt unberührt...

etwas wie
style:"width:600px; color:blue;";;;;;
geht nun ohne weiteres...
*** make your own tools (wishlist :: thx)

llaron
Beiträge: 133
Registriert: Mi 14. Jul 2004, 12:54
Kontaktdaten:

@ kummer

Beitrag von llaron » Di 19. Apr 2005, 17:11

hoi kummer,

hast du schonmal wegen den styles nachgesehen?
nach wie vor würde ich gerne styles auf die felder anwenden.
mein fehler. ich bin mir nicht sicher, ob klassen schon integriert sind. das muss ich selber noch nachschauen.
bsp:

Code: Alles auswählen

name:Nachricht; type:textarea; class:textfeld; valid:text; rows:6; cols:35
Gruß,
Nicolas

anjin san
Beiträge: 31
Registriert: Do 20. Mai 2004, 03:21
Kontaktdaten:

CSS Klassen im Modul

Beitrag von anjin san » Fr 29. Apr 2005, 03:51

Hallo,
Ich habe das Problem mit den css Klassen derweil so gelöst,
daß ich das einfach direkt in den Moduloutput geschrieben habe.
Und zwar für die Felder Text, Passwort und textarea.
In function formularFeld habe ich bei den entsprechenden
echo Anweisungen in meinem Fall die css Klasse txteingabe
eingefügt.

Code: Alles auswählen

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':
            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\" class=\"txteingabe\" $parameter value=\"$value\" $style>";
            break;
         case 'password':
            echo "<input type=\"password\" class=\"txteingabe\" $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 "\" class=\"txteingabe\" $style>$value</textarea>";
            break;
Ist vielleicht nicht die eleganteste Lösung, aber sie funktioniert.

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Do 5. Mai 2005, 10:40

@llaron & @anjin san

ähm, mit dieser änderung sind styles und classen zuweisungen möglich
-> http://www.contenido.org/forum/viewtopi ... 6196#46196

Code: Alles auswählen

###name:Nachricht; type:textarea; class:textfeld; valid:text; rows:6; cols:35;###
oder

Code: Alles auswählen

###name:Nachricht; type:textarea; class:textfeld; style:"width:600px; color:blue;"; valid:text; rows:6; cols:35;###
funktioniert bei mir ohne probleme...

ein direktes reincoden in das modul um klassen und style zuzuweisen erspart man sich...
*** make your own tools (wishlist :: thx)

meta02
Beiträge: 19
Registriert: Fr 6. Mai 2005, 16:23
Wohnort: Berlin
Kontaktdaten:

Problem mit der Absenderadresse von contenido contactform

Beitrag von meta02 » Fr 6. Mai 2005, 16:29

Hallo OAA,

habe gerade dasselbe Problem, aber keine adäquate Antwort hier in diesem Thread gefunden. Ich meine das mit der unschönen Absenderadresse. Hast Du die Lösung?

Wäre über eine Antwort sehr verbunden

Danke

meta02
OAA hat geschrieben:Das erst Problem habe ich gelöst!

Code: Alles auswählen

valid:email;
Aber jetzt ist folgendes:

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???

kypta
Beiträge: 295
Registriert: Di 8. Jul 2003, 13:25
Kontaktdaten:

Beitrag von kypta » Fr 6. Mai 2005, 16:57

@ meta02: Die Antwort steht in diesem Thread auf der Seite 10 (http://contenido.org/forum/viewtopic.ph ... &start=135). Siehe meine Antwort auf die Frage von david78:

Code: Alles auswählen

$formular->setEmailFrom($_POST['kundenemail'],$_POST['kundenvorname']." ".$_POST['kundenname']);
Gruss Thomas

Gesperrt