| // | Urs Gehrig | // +----------------------------------------------------------------------+ // // $Id: Form.php,v 1.22.2.2 2002/04/09 19:04:19 ssb Exp $ // // HTML form utility functions. // if (!defined('HTML_FORM_TEXT_SIZE')) { define('HTML_FORM_TEXT_SIZE', 20); } if (!defined('HTML_FORM_MAX_FILE_SIZE')) { define('HTML_FORM_MAX_FILE_SIZE', 1048576); // 1 MB } if (!defined('HTML_FORM_PASSWD_SIZE')) { define('HTML_FORM_PASSWD_SIZE', 8); } 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; /** TARGET attribute of tag */ var $target; /** ENCTYPE attribute of tag */ var $enctype; // }}} // {{{ constructor function HTML_Form($action, $method = 'get', $name = '', $target = '', $enctype = '') { $this->action = $action; $this->method = $method; $this->name = $name; $this->fields = array(); $this->target = $target; $this->enctype = $enctype; } // }}} // {{{ addText() function addText($name, $title, $default = '', $size = HTML_FORM_TEXT_SIZE, $maxlength = '') { $this->fields[] = array("text", $name, $title, $default, $size, $maxlength); } // }}} // {{{ addPassword() 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, $maxlength = '') { $this->fields[] = array("textarea", $name, $title, $default, $width, $height, $maxlength); } // }}} // {{{ 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, $attribs = '') { $this->fields[] = array("select", $name, $title, $entries, $default, $size, $blank, $multiple, $attribs); } // }}} // {{{ addRadio() function addRadio($name, $title, $value, $default = false) { $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); } // }}} // {{{ addBlank() function addBlank($i,$title = '') { $this->fields[] = array("blank", $i, $title); } // }}} // {{{ addFile function addFile($name, $title, $maxsize = HTML_FORM_MAX_FILE_SIZE, $size = HTML_FORM_TEXT_SIZE, $accept = '') { $this->enctype = "multipart/form-data"; $this->fields[] = array("file", $name, $title, $maxsize, $size, $accept); } // }}} // {{{ addPlaintext() function addPlaintext($title, $text = ' ') { $this->fields[] = array("plaintext", $title, $text); } // }}} // {{{ start() function start() { print "action) . "\" method=\"$this->method\""; if ($this->name) { print " name=\"$this->name\""; } if ($this->target) { print " target=\"$this->target\""; } if ($this->enctype) { print " enctype=\"$this->enctype\""; } print ">\n"; } // }}} // {{{ 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 displayText($name, $default = '', $size = HTML_FORM_TEXT_SIZE, $maxlength = '') { if (!$maxlength) { print ""; } // }}} // {{{ displayTextRow() function displayTextRow($name, $title, $default = '', $size = HTML_FORM_TEXT_SIZE, $maxlength = '') { print " \n"; print " $title"; print " "; $this->displayText($name, $default, $size, $maxlength); 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", null, $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, $maxlength = '') { if (!$maxlength) { print ""; } // }}} // {{{ displayTextareaRow() function displayTextareaRow($name, $title, $default = '', $width = 40, $height = 5, $maxlength = '') { print " \n"; print " $title\n"; print " "; $this->displayTextarea($name, &$default, $width, $height, $maxlength); print "\n"; print " \n"; } // }}} // {{{ displaySubmit() function displaySubmit($title = 'Submit Changes', $name = "submit") { print $this->returnSubmit($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 displayResetRow($title = 'Clear contents') { print $this->returnResetRow($title); } // }}} // {{{ displaySelect() function displaySelect($name, $entries, $default = '', $size = 1, $blank = '', $multiple = false, $attribs = '') { print $this->returnSelect($name, $entries, $default, $size, $blank, $multiple, $attribs); } // }}} // {{{ displaySelectRow() function displaySelectRow($name, $title, &$entries, $default = '', $size = 1, $blank = '', $multiple = false, $attribs = '') { print $this->returnSelectRow($name, $title, $entries, $default, $size, $blank, $multiple, $attribs); } // }}} // {{{ displayHidden() function displayHidden($name, $value) { print $this->returnHidden($name, $value); } // }}} // assuming that $default is the 'checked' attribut of the radio tag // {{{ displayRadio() function displayRadio($name, $value, $default = false) { if ($default == false) { print ""; } else { print ""; } } // }}} // {{{ displayRadioRow() function displayRadioRow($name, $title, $value, $default = false) { print " \n"; print "$title"; print " "; $this->displayRadio($name, $value, $default); print "\n"; print " \n"; } // }}} // {{{ displayBlank() function displayBlank() { print " "; } // }}} // {{{ displayBlankRow() function displayBlankRow($i, $title= '') { if (!$title) { for ($j = 0;$j < $i;$j++) { print " \n"; print "  "; print " "; $this->displayBlank(); print "\n"; print " \n"; } } else { print " \n"; print " $title"; print " "; $this->displayBlank(); print "\n"; print " \n"; } } // }}} // {{{ displayFile() function displayFile($name, $maxsize = HTML_FORM_MAX_FILE_SIZE, $size = HTML_FORM_TEXT_SIZE, $accept = '') { print ""; } // }}} // {{{ displayFileRow() function displayFileRow($name, $title, $maxsize = HTML_FORM_MAX_FILE_SIZE, $size = HTML_FORM_TEXT_SIZE, $accept = '') { print " \n"; print " $title"; print " "; $this->displayFile($name, $maxsize, $size, $accept); print "\n"; print " \n"; } // }}} // {{{ displayPlaintext() function displayPlaintext($text = ' ') { print $text; } // }}} // {{{ displayPlaintextRow() function displayPlaintextRow($title, $text = ' ') { print " \n"; print " $title"; print " "; $this->displayPlaintext($text); print "\n"; print " \n"; } // }}} // {{{ 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, $attrib = '') { if ($multiple && substr($name, -2) != "[]") { $name .= "[]"; } $str = " \n"; return $str; } // }}} // {{{ returnSelectRow() function returnSelectRow($name, $title, &$entries, $default = '', $size = 1, $blank = '', $multiple = false, $attribs = '') { $str = " \n"; $str .= " $title\n"; $str .= " \n"; $str .= $this->returnSelect($name, $entries, $default, $size, $blank, $multiple, $attribs); $str .= " \n"; $str .= " \n"; return $str; } // }}} // {{{ returnHidden() function returnHidden($name, $value) { return ""; } // }}} // {{{ returnFile() function returnFile($name = 'userfile', $maxsize = HTML_FORM_MAX_FILE_SIZE, $size = HTML_FORM_TEXT_SIZE) { $str = " "; $str .= " "; return $str; } // }}} // {{{ returnMultipleFiles() function returnMultipleFiles($name = 'userfile[]', $maxsize = HTML_FORM_MAX_FILE_SIZE, $files = 3, $size = HTML_FORM_TEXT_SIZE) { $str = " "; for($i=0; $i < $files; $i++) { $str .= "
"; } return $str; } // }}} // {{{ returnStart() function returnStart($multipartformdata = false) { $str = "
action) . "\" method=\"$this->method\""; if ($this->name) { $str .= " name=\"$this->name\""; } if ($multipartformdata) { $str .= " enctype=\"multipart/form-data\""; } $str .= ">"; return $str; } // }}} // {{{ 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; } // }}} // {{{ returnPlaintext() function returnPlaintext($text = ' ') { return $text; } // }}} // {{{ returnPlaintextRow() function returnPlaintextRow($title, $text = ' ') { $str = " \n"; $str .= " $title:"; $str .= " "; $str .= $this->returnPlaintext($text); $str .= "\n"; $str .= " \n"; return $str; } // }}} // {{{ display() function display() { $arrname = 'HTTP_'.strtoupper($this->method).'_VARS'; $arr = &$GLOBALS[$arrname]; $this->start(); print "\n"; reset($this->fields); $hidden = array(); foreach ($this->fields as $i => $data) { switch ($data[0]) { case "hidden": $hidden[] = $i; $defind = 0; continue 2; case "reset": $params = 1; $defind = 0; break; case "submit": case "blank": // new $params = 2; $defind = 0; break; case "image": $params = 2; $defind = 0; break; case "checkbox": $params = 3; $defind = 2; break; case "file": //new case "text": $params = 5; $defind = 3; break; case "password": case "radio": $params = 4; $defind = 3; break; case "textarea": $params = 6; $defind = 3; break; case "select": $params = 8; $defind = 4; break; case "plaintext": $params = 2; $defind = 1; break; default: // unknown field type continue 2; } $str = '$this->display'.ucfirst($data[0])."Row("; for ($i = 1;$i <= $params;$i++) { if ($i == $defind && $data[$defind] === null && isset($arr[$data[1]])) { $str .= "\$arr['$data[1]']"; } else { $str .= '$'."data[$i]"; } if ($i < $params) $str .= ', '; } $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(); } // }}} } /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: */ ?>