Page 1 of 1

Form Builder 0.9 - Kontaktformular Validierung

Posted: Tue Jul 03, 2007 2:54 pm
by konsument
Hallo Leute,

ich benutze cmsms 1.0.8 mit Form Builder 0.3

Nun würde ich gerne bei dem Validierungsvorgang beim Abschicken des Kontaktformulars, die fehlenden Eingaben als js alert Fenster aufpoppen lassen.

schätze mal das ich dafür in der form.class.php ab der Zeile 376

Code: Select all

function Validate()
  {
    $validated = true;
    $message = '';
    $formPageCount=1;
    $valPage = $this->Page - 1;
    for($i=0;$i<count($this->Fields);$i++)
      {
	if ($this->Fields[$i]->GetFieldType() == 'PageBreakField')
	  {
	    $formPageCount++;
	  }
	if ($valPage != $formPageCount)
	  {
	    continue;
	  }
	if (! $this->Fields[$i]->IsDisposition() &&
	    $this->Fields[$i]->IsRequired() &&
	    $this->Fields[$i]->HasValue() == false)
	  {
	    $message .= "<h4>".$this->module_ptr->Lang('please_enter_a_value',$this->Fields[$i]->GetName())."</h4>\n";
	    $validated = false;
	    $this->Fields[$i]->SetOption('is_valid',false);
	  }
	else if ($this->Fields[$i]->GetValue() != $this->module_ptr->Lang('unspecified'))
	  { 
	    $res = $this->Fields[$i]->Validate();
	    if ($res[0] != true)
	      {
		$message .= "<h4>". $res[1]."</h4>\n";
		$validated = false;
		$this->Fields[$i]->SetOption('is_valid',false);
	      }
	    else
	      {
		$this->Fields[$i]->SetOption('is_valid',true);
	      }
	  }
      }
    return array($validated, $message);
  }
bzw. in Zeile 396

Code: Select all

$message .= "<h4>".$this->module_ptr->Lang('please_enter_a_value',$this->Fields[$i]->GetName())."</h4>\n";
entsprechende Angaben machen muß. Nur leider weiß ich nicht wie.

Wäre schön, wenn mir da einer mal helfen könnte.

Viele Grüße

Re: Form Builder 0.9 - Kontaktformular Validierung

Posted: Tue Jul 03, 2007 5:36 pm
by cyberman
Hmm, hast du schon etwas in dieser Art probiert?

Code: Select all

$message .= "<__script__ type='text/javascript'>alert(<h4>"  . $this->module_ptr->Lang('please_enter_a_value',$this->Fields[$i]->GetName()) . "</h4>\n</script>";

Re: Form Builder 0.9 - Kontaktformular Validierung

Posted: Tue Jul 03, 2007 7:39 pm
by konsument
hi cyberman..

das habe ich schon soweit hinbekommen. Problem ist nur, dass er mir jetzt alle Fehler nacheinander als alert Fenster öffnet - d.h. ein alert mit z.B. "Geben Sie einen Vornamen ein" -> ok geklickt .. dann alert "Geben Sie einen Nachnamen ein" ...etc .. leider baut er während dieser Alerts auch mein Template nicht auf, sondern wartet, bis alle alerts durchgelaufen sind.

http://seniorenheim-friedensau.de/cms/i ... ge=kontakt

es muß doch eine Möglichkeit geben, die Fehler auf einmal in einem Alert Fenster auszugeben. Ich finde es irgendwie doof, das die Meldungen direkt ins Template geschrieben werden - das schaut recht unschön aus. Der Form Builder ist doch so ein mächtiges Modul, aber die einfachsten Sachen sind scheinbar nicht möglich.

Glaubst du es wäre zu komplex im code rumzupfuschen, oder sollte ich den Autor direkt mal anschreiben?

viele Grüße

edit:

hab gerade gesehen, dass im html das hier ausgegeben wird..

Code: Select all

<__script__ type='text/javascript'>alert(<h4>Please enter a value for "Anrede"</h4>
)</__script><__script__ type='text/javascript'>alert(<h4>Please enter a value for "Name"</h4>
)</__script><__script__ type='text/javascript'>alert(<h4>Please enter a value for "Vorname"</h4>
)</__script><__script__ type='text/javascript'>alert(<h4>Please enter a value for "Straße"</h4>
)</__script><__script__ type='text/javascript'>alert(<h4>Please enter a value for "PLZ"</h4>
)</__script><__script__ type='text/javascript'>alert(<h4>Please enter a value for "Ort"</h4>
)</__script><__script__ type='text/javascript'>alert(<h4>Please enter a value for "E-Mail"</h4>
)</__script><__script__ type='text/javascript'>alert(<h4>Please enter a value for "Mitteilung"</h4>
)</__script>
ich bin leider ein ganz blutige Anfänger was js und php angeht. Zumindest im selbstschreiben, fertigen code kann ich in grundzügen nachvollziehen.

hoffe ich verlange nicht zuviel.

grüße

Re: Form Builder 0.9 - Kontaktformular Validierung

Posted: Sun Jul 08, 2007 12:25 pm
by cyberman
konsument wrote: das habe ich schon soweit hinbekommen. Problem ist nur, dass er mir jetzt alle Fehler nacheinander als alert Fenster öffnet - d.h. ein alert mit z.B. "Geben Sie einen Vornamen ein" -> ok geklickt .. dann alert "Geben Sie einen Nachnamen ein" ...etc .. leider baut er während dieser Alerts auch mein Template nicht auf, sondern wartet, bis alle alerts durchgelaufen sind.
Hmm ::) logo - mein Fehler. Im Script wird ja auch immer wieder ein neuer Alert aufgerufen ...
ich bin leider ein ganz blutige Anfänger was js und php angeht.
Sehr viel weiter bin ich auch nicht :). Aber versuch mal wie folgt zu ändern

Code: Select all

function Validate()
  {
    $validated = true;
    $message = '';
    $merror = '';
    $formPageCount=1;
    $valPage = $this->Page - 1;
    for($i=0;$i<count($this->Fields);$i++)
      {
	if ($this->Fields[$i]->GetFieldType() == 'PageBreakField')
	  {
	    $formPageCount++;
	  }
	if ($valPage != $formPageCount)
	  {
	    continue;
	  }
	if (! $this->Fields[$i]->IsDisposition() &&
	    $this->Fields[$i]->IsRequired() &&
	    $this->Fields[$i]->HasValue() == false)
	  {
	    $merror .= $this->Fields[$i]->GetName()) . "<br />";
	    $validated = false;
	    $this->Fields[$i]->SetOption('is_valid',false);
	  }
	else if ($this->Fields[$i]->GetValue() != $this->module_ptr->Lang('unspecified'))
	  { 
	    $res = $this->Fields[$i]->Validate();
	    if ($res[0] != true)
	      {
		$message .= "<h4>". $res[1]."</h4>\n";
		$validated = false;
		$this->Fields[$i]->SetOption('is_valid',false);
	      }
	    else
	      {
		$this->Fields[$i]->SetOption('is_valid',true);
	      }
	  }
      }
    if ($validate == false)
       {
          $message = "<__script__ type='text/javascript'>alert(<h4>" . $this->module_ptr->Lang('please_enter_a_value',$merror . "</h4></__script>";
       }
    return array($validated, $message);
  }