| // | Urs Gehrig | // +----------------------------------------------------------------------+ // // $Id: form.inc,v 1.1.1.1 2003/04/18 11:10:05 kybu Exp $ // // HTML form utility functions. // if (!defined('HTML_FORM_TEXT_SIZE')) { define('HTML_FORM_TEXT_SIZE', 20); } class HTML_Form { // {{{ properties /** ACTION attribute of
tag */ var $action; /** METHOD attribute of tag */ var $method; /** NAME attribute of tag */ var $name; /** an array of entries for this form */ var $fields; /** DB_storage object, if tied to one */ var $storageObject; var $onSubmit; /** Encryption type */ var $enctype; // }}} // {{{ constructor function HTML_Form($action, $method = 'GET', $name = '', $enctype = '',$onsubmit=false) { $this->enctype = $enctype; $this->action = $action; $this->method = $method; $this->name = $name; $this->fields = array(); $this->onSubmit = $onsubmit; } // }}} // {{{ addText() function addText($name, $title, $default, $size = HTML_FORM_TEXT_SIZE) { $this->fields[] = array("text", $name, $title, $default, $size); } // }}} // {{{ addPassword() function addFile($name,$title,$accept="image/*,text/plain") { $this->fields[]= array("file",$name,$title,$accept); } function addPassword($name, $title, $default, $size = HTML_FORM_PASSWD_SIZE) { $this->fields[] = array("password", $name, $title, $default, $size); } // }}} // {{{ addCheckbox() function addCheckbox($name, $title, $default) { $this->fields[] = array("checkbox", $name, $title, $default); } // }}} // {{{ addTextarea() function addTextarea($name, $title, $default, $width = HTML_FORM_TEXTAREA_WT, $height = HTML_FORM_TEXTAREA_HT) { $this->fields[] = array("textarea", $name, $title, &$default, $width, $height); } // }}} // {{{ addSubmit function addSubmit($name = "submit", $title = "Submit Changes") { $this->fields[] = array("submit", $name, $title); } // }}} // {{{ addReset() function addReset($title = "Discard Changes") { $this->fields[] = array("reset", $title); } // }}} // {{{ addSelect() function addSelect($name, $title, $entries, $default = '', $size = 1, $blank = '', $multiple = false) { $this->fields[] = array("select", $name, $title, &$entries, $default, $size, $blank, $multiple); } // }}} // {{{ addRadio() function addRadio($name, $title, $value, $default) { $this->fields[] = array("radio", $name, $title, $value, $default); } // }}} // {{{ addImage() function addImage($name, $src) { $this->fields[] = array("image", $name, $src); } // }}} // {{{ addHidden() function addHidden($name, $value) { $this->fields[] = array("hidden", $name, $value); } // }}} // {{{ start() function start() { print "action) . "\" METHOD=\"$this->method\""; if ($this->name) { print " NAME=\"$this->name\""; } if ($this->enctype) { print " ENCTYPE=\"$this->enctype\""; } if($this->onSubmit) { print " onSubmit=\"return validate(this)\""; } print ">"; } // }}} // {{{ end() function end() { $fields = array(); reset($this->fields); while (list($i, $data) = each($this->fields)) { if ($data[0] == 'reset') { continue; } $fields[$data[1]] = true; } $this->displayHidden("_fields", implode(":", array_keys($fields))); print "
"; } // }}} // {{{ displayText() function displayFile($name, $accept) { print ""; } function displayFileRow($name, $title, $accept) { print " \n"; print " $title"; print " "; $this->displayFile($name, $accept); print "\n"; print " \n"; } function displayText($name, $default = '', $size = HTML_FORM_TEXT_SIZE) { print ""; } // }}} // {{{ displayTextRow() function displayTextRow($name, $title, $default = '', $size = HTML_FORM_TEXT_SIZE) { print " \n"; print " $title"; print " "; $this->displayText($name, $default, $size); print "\n"; print " \n"; } // }}} // {{{ displayPassword() function displayPassword($name, $default = '', $size = HTML_FORM_PASSWD_SIZE) { print ""; } // }}} // {{{ displayPasswordRow() function displayPasswordRow($name, $title, $default = '', $size = HTML_FORM_PASSWD_SIZE) { print "\n"; print " $title\n"; print " "; $this->displayPassword($name, $default, $size); print " repeat: "; $this->displayPassword($name."2", $default, $size); print "\n"; print "\n"; } // }}} // {{{ displayCheckbox() function displayCheckbox($name, $default = false) { print ""; } // }}} // {{{ displayCheckboxRow() function displayCheckboxRow($name, $title, $default = false) { print " \n"; print " $title"; print " "; $this->displayCheckbox($name, $default); print "\n"; print " \n"; } // }}} // {{{ displayTextarea() function displayTextarea($name, $default = '', $width = 40, $height = 5) { print ""; } // }}} // {{{ displayTextareaRow() function displayTextareaRow($name, $title, $default = '', $width = 40, $height = 5) { print " \n"; print " $title\n"; print " "; $this->displayTextarea($name, &$default, $width, $height); print "\n"; print " \n"; } // }}} // {{{ displaySubmit() function displaySubmit($title = 'Submit Changes', $name = "submit") { print $this->displaySubmit($title, $name); } // }}} // {{{ displaySubmitRow() function displaySubmitRow($name = "submit", $title = 'Submit Changes') { print $this->returnSubmitRow($name, $title); } // }}} // {{{ displayReset() function displayReset($title = 'Clear contents') { print $this->returnReset($title); } // }}} // {{{ displayResetRow() /* function displayReset($title = 'Clear contents') { print $this->returnReset($title); } */ // }}} // {{{ displaySelect() function displaySelect($name, $entries, $default = '', $size = 1, $blank = '', $multiple = false) { print $this->returnSelect($name, $entries, $default, $size, $blank, $multiple); } // }}} // {{{ displaySelectRow() function displaySelectRow($name, $title, &$entries, $default = '', $size = 1, $blank = '', $multiple = false) { print $this->returnSelectRow($name, $title, $entries, $default, $size, $blank, $multiple); } // }}} // {{{ displayHidden() function displayHidden($name, $value) { print $this->returnHidden($name, $value); } // }}} // XXX missing: displayRadio displayRadioRow // {{{ returnText() function returnText($name, $default = '', $size = HTML_FORM_TEXT_SIZE) { return ""; } // }}} // {{{ returnTextRow() function returnTextRow($name, $title, $default = '', $size = HTML_FORM_TEXT_SIZE) { $str .= " \n"; $str .= " $title"; $str .= " "; $str .= $this->returnText($name, $default, $size); $str .= "\n"; $str .= " \n"; return $str; } // }}} // {{{ returnPassword() function returnPassword($name, $default = '', $size = HTML_FORM_PASSWD_SIZE) { return ""; } // }}} // {{{ returnPasswordRow() function returnPasswordRow($name, $title, $default = '', $size = HTML_FORM_PASSWD_SIZE) { $str .= "\n"; $str .= " $title\n"; $str .= " "; $str .= $this->returnPassword($name, $default, $size); $str .= " repeat: "; $str .= $this->returnPassword($name."2", $default, $size); $str .= "\n"; $str .= "\n"; return $str; } // }}} // {{{ returnCheckbox() function returnCheckbox($name, $default = false) { $str .= "$title\n"; $str .= " "; $str .= $this->returnCheckbox($name, $default); $str .= "\n"; $str .= " \n"; return $str; } // }}} // {{{ returnTextarea() function returnTextarea($name, $default = '', $width = 40, $height = 5) { $str .= ""; return $str; } // }}} // {{{ returnTextareaRow() function returnTextareaRow($name, $title, $default = '', $width = 40, $height = 5) { $str .= " \n"; $str .= " $title\n"; $str .= " "; $str .= $this->returnTextarea($name, &$default, $width, $height); $str .= "\n"; $str .= " \n"; return $str; } // }}} // {{{ returnSubmit() function returnSubmit($title = 'Submit Changes', $name = "submit") { return ""; } // }}} // {{{ returnSubmitRow() function returnSubmitRow($name = "submit", $title = 'Submit Changes') { $str .= " \n"; $str .= "  \n"; $str .= " "; $str .= $this->returnSubmit($title, $name); $str .= "\n"; $str .= " \n"; return $str; } // }}} // {{{ returnReset() function returnReset($title = 'Clear contents') { return ""; } // }}} // {{{ returnResetRow() function returnResetRow($title = 'Clear contents') { $str .= " \n"; $str .= "  \n"; $str .= " "; $str .= $this->returnReset($title); $str .= "\n"; $str .= " \n"; return $str; } // }}} // {{{ returnSelect() function returnSelect($name, $entries, $default = '', $size = 1, $blank = '', $multiple = false) { $str .= " \n"; return $str; } // }}} // {{{ returnSelectRow() function returnSelectRow($name, $title, &$entries, $default = '', $size = 1, $blank = '', $multiple = false) { $str .= " \n"; $str .= " $title:\n"; $str .= " \n"; $str .= $this->returnSelect($name, &$entries, $default, $size, $blank, $multiple); $str .= " \n"; $str .= " \n"; return $str; } // }}} // {{{ returnHidden() function returnHidden($name, $value) { return ""; } // }}} // {{{ returnStart() function returnStart() { $ret = "
action) . "\" METHOD=\"$this->method\""; if ($this->name) { $ret .= " NAME=\"$this->name\""; } $ret .= ">"; return $ret; } // }}} // {{{ returnEnd() function returnEnd() { $fields = array(); reset($this->fields); while (list($i, $data) = each($this->fields)) { if ($data[0] == 'reset') { continue; } $fields[$data[1]] = true; } $ret = $this->returnHidden("_fields", implode(":", array_keys($fields))); $ret .= "
"; return $ret; } // }}} // {{{ display() function display() { $this->start(); print "\n"; reset($this->fields); $hidden = array(); $call_cache = array(); while (list($i, $data) = each($this->fields)) { switch ($data[0]) { case "hidden": $hidden[] = $i; continue 2; case "reset": $params = 1; break; case "submit": case "image": $params = 2; break; case "checkbox": $params = 3; break; case "text": case "password": case "radio": $params = 4; break; case "textarea": $params = 5; break; case "select": $params = 7; break; case "file": $params=8; break; default: // unknown field type continue 2; } $str = $call_cache[$params]; if (!$str) { $str = '$this->display'.ucfirst($data[0])."Row("; for ($i = 1; $i <= $params; $i++) { $str .= '$data['.$i.']'; if ($i < $params) $str .= ', '; } $str .= ');'; $call_cache[$params] = $str; } eval($str); } print "
\n"; for ($i = 0; $i < sizeof($hidden); $i++) { $this->displayHidden($this->fields[$hidden[$i]][1], $this->fields[$hidden[$i]][2]); } $this->end(); } // }}} function showForm($login='',$email='',$web='',$info='',$skinarray) {; $this->addText("login","Prihlasovacie meno:",$login); $this->addPassword("password1","Heslo:","",10); $this->addPassword("password2","Heslo pre overenie:","",10); $this->addText("email:","Emailova adresa",$email); $this->addText("web","Stranka:",$web); $this->addSelect("skin","Skin:",$skinarray); $this->addFile("image","Obrazok:"); $this->addTextarea("info","Dodatocne informacie",$info); $this->addSubmit("submit","Zaregistruj sa!",""); $this->addHidden("sent","ok"); $this->display(); } } ?>