Form Builder 0.9 - Kontaktformular Validierung

Hilfe zu Modulen und Tags
Post Reply
konsument
Forum Members
Forum Members
Posts: 137
Joined: Thu Oct 26, 2006 9:20 am

Form Builder 0.9 - Kontaktformular Validierung

Post 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
cyberman

Re: Form Builder 0.9 - Kontaktformular Validierung

Post 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>";
Last edited by cyberman on Tue Jul 03, 2007 6:00 pm, edited 1 time in total.
konsument
Forum Members
Forum Members
Posts: 137
Joined: Thu Oct 26, 2006 9:20 am

Re: Form Builder 0.9 - Kontaktformular Validierung

Post 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
Last edited by konsument on Tue Jul 03, 2007 7:44 pm, edited 1 time in total.
cyberman

Re: Form Builder 0.9 - Kontaktformular Validierung

Post 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);
  }
Last edited by cyberman on Sun Jul 08, 2007 12:30 pm, edited 1 time in total.
Post Reply

Return to “Module und Tags”