cvs: php4 /pear/HTML Form.php

From: Date: Mon, 18 Sep 2000 23:27:07 +0000
Subject: cvs: php4 /pear/HTML Form.php
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-1774@lists.php.net to get a copy of this message
ssb Mon Sep 18 16:27:07 2000 EDT Modified files: /php4/pear/HTML Form.php Log: * added return* methods for all form elements (by Urs Gehrig <urs@cicle.ch>) Index: php4/pear/HTML/Form.php diff -u php4/pear/HTML/Form.php:1.2 php4/pear/HTML/Form.php:1.3 --- php4/pear/HTML/Form.php:1.2 Sun Aug 27 12:46:01 2000 +++ php4/pear/HTML/Form.php Mon Sep 18 16:27:07 2000 @@ -14,14 +14,18 @@ // | license@php.net so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // | Authors: Stig Bakken <ssb@fast.no> | -// | | +// | Urs Gehrig <urs@circle.ch> | // +----------------------------------------------------------------------+ // -// $Id: Form.php,v 1.2 2000/08/27 19:46:01 ssb Exp $ +// $Id: Form.php,v 1.3 2000/09/18 23:27:07 ssb Exp $ // // HTML form utility functions. // +if (!defined('HTML_FORM_TEXT_SIZE')) { + define('HTML_FORM_TEXT_SIZE', 20); +} + class HTML_Form { // {{{ properties @@ -45,10 +49,10 @@ // {{{ constructor function HTML_Form($action, $method = 'GET', $name = '') { - $this->action = $action; - $this->method = $method; - $this->name = $name; - $this->fields = array(); + $this->action = $action; + $this->method = $method; + $this->name = $name; + $this->fields = array(); } // }}} @@ -56,74 +60,74 @@ // {{{ addText() function addText($name, $title, $default, $size = HTML_FORM_TEXT_SIZE) { - $this->fields[] = array("text", $name, $title, $default, $size); + $this->fields[] = array("text", $name, $title, $default, $size); } // }}} // {{{ addPassword() function addPassword($name, $title, $default, $size = HTML_FORM_PASSWD_SIZE) { - $this->fields[] = array("password", $name, $title, $default, $size); + $this->fields[] = array("password", $name, $title, $default, $size); } // }}} // {{{ addCheckbox() function addCheckbox($name, $title, $default) { - $this->fields[] = array("checkbox", $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); + $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); + $this->fields[] = array("submit", $name, $title); } // }}} // {{{ addReset() function addReset($title = "Discard Changes") { - $this->fields[] = array("reset", $title); + $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); + $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); + $this->fields[] = array("radio", $name, $title, $value, $default); } // }}} // {{{ addImage() function addImage($name, $src) { - $this->fields[] = array("image", $name, $src); + $this->fields[] = array("image", $name, $src); } // }}} // {{{ addHidden() function addHidden($name, $value) { - $this->fields[] = array("hidden", $name, $value); + $this->fields[] = array("hidden", $name, $value); } // }}} @@ -131,27 +135,27 @@ // {{{ start() function start() { - print "<FORM ACTION=\"$this->action\" METHOD=\"$this->method\""; - if ($this->name) { - print " NAME=\"$this->name\""; - } - print ">"; + print "<FORM ACTION=\"" . basename ($this->action) . "\" METHOD=\"$this->method\""; + if ($this->name) { + print " NAME=\"$this->name\""; + } + 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 "</FORM>"; + $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 "</FORM>"; } // }}} @@ -159,212 +163,420 @@ // {{{ displayText() function displayText($name, $default = '', $size = HTML_FORM_TEXT_SIZE) { - print "<INPUT NAME=\"$name\" VALUE=\"$default\" SIZE=\"$size\">"; + print "<INPUT NAME=\"$name\" VALUE=\"$default\" SIZE=\"$size\">"; } // }}} // {{{ displayTextRow() function displayTextRow($name, $title, $default = '', $size = HTML_FORM_TEXT_SIZE) { - print " <TR>\n"; - print " <TH ALIGN=\"right\">$title</TH>"; - print " <TD>"; - $this->displayText($name, $default, $size); - print "</TD>\n"; - print " </TR>\n"; + print " <TR>\n"; + print " <TH ALIGN=\"right\">$title</TH>"; + print " <TD>"; + $this->displayText($name, $default, $size); + print "</TD>\n"; + print " </TR>\n"; } // }}} // {{{ displayPassword() function displayPassword($name, $default = '', $size = HTML_FORM_PASSWD_SIZE) { - print "<INPUT NAME=\"$name\" TYPE=\"password\" VALUE=\"$default\" SIZE=\"$size\">"; + print "<INPUT NAME=\"$name\" TYPE=\"password\" VALUE=\"$default\" SIZE=\"$size\">"; } // }}} // {{{ displayPasswordRow() function displayPasswordRow($name, $title, $default = '', $size = HTML_FORM_PASSWD_SIZE) { - print "<TR>\n"; - print " <TH ALIGN=\"right\">$title</TH>\n"; - print " <TD>"; - $this->displayPassword($name, $default, $size); - print " repeat: "; - $this->displayPassword($name."2", $default, $size); - print "</TD>\n"; - print "</TR>\n"; + print "<TR>\n"; + print " <TH ALIGN=\"right\">$title</TH>\n"; + print " <TD>"; + $this->displayPassword($name, $default, $size); + print " repeat: "; + $this->displayPassword($name."2", $default, $size); + print "</TD>\n"; + print "</TR>\n"; } // }}} // {{{ displayCheckbox() function displayCheckbox($name, $default = false) { - print "<INPUT TYPE=\"checkbox\" NAME=\"$name\""; - if ($default && $default != 'off') { - print " CHECKED"; - } - print ">"; + print "<INPUT TYPE=\"checkbox\" NAME=\"$name\""; + if ($default && $default != 'off') { + print " CHECKED"; + } + print ">"; } // }}} // {{{ displayCheckboxRow() function displayCheckboxRow($name, $title, $default = false) { - print " <TR>\n"; - print " <TH ALIGN=\"right\">$title</TH>"; - print " <TD>"; - $this->displayCheckbox($name, $default); - print "</TD>\n"; - print " </TR>\n"; + print " <TR>\n"; + print " <TH ALIGN=\"left\">$title</TH>"; + print " <TD>"; + $this->displayCheckbox($name, $default); + print "</TD>\n"; + print " </TR>\n"; } // }}} // {{{ displayTextarea() function displayTextarea($name, $default = '', $width = 40, $height = 5) { - print "<TEXTAREA NAME=\"$name\" COLS=\"$width\" ROWS=\"$height\">"; - print $default; - print "</TEXTAREA>"; + print "<TEXTAREA NAME=\"$name\" COLS=\"$width\" ROWS=\"$height\">"; + print $default; + print "</TEXTAREA>"; } // }}} // {{{ displayTextareaRow() function displayTextareaRow($name, $title, $default = '', $width = 40, $height = 5) { - print " <TR>\n"; - print " <TH ALIGN=\"right\">$title</TH>\n"; - print " <TD>"; - $this->displayTextarea($name, &$default, $width, $height); - print "</TD>\n"; - print " </TR>\n"; + print " <TR>\n"; + print " <TH ALIGN=\"right\">$title</TH>\n"; + print " <TD>"; + $this->displayTextarea($name, &$default, $width, $height); + print "</TD>\n"; + print " </TR>\n"; } // }}} // {{{ displaySubmit() function displaySubmit($title = 'Submit Changes', $name = "submit") { - print "<INPUT NAME=\"$name\" TYPE=\"submit\" VALUE=\"$title\">"; + print $this->displaySubmit($title, $name); } // }}} // {{{ displaySubmitRow() function displaySubmitRow($name = "submit", $title = 'Submit Changes') { - print " <TR>\n"; - print " <TD>&nbsp</TD>\n"; - print " <TD>"; - $this->displaySubmit($title, $name); - print "</TD>\n"; - print " </TR>\n"; + print $this->returnSubmitRow($name, $title); } // }}} - // {{{ displayHidden() + // {{{ displayReset() - function displayHidden($name, $value) { - print "<INPUT TYPE=\"hidden\" NAME=\"$name\" VALUE=\"$value\">"; + 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 " <SELECT NAME=\"$name\""; - if ($size) { - print " SIZE=\"$size\""; - } - if ($multiple) { - print " MULTIPLE"; - } - print ">\n"; - if ($blank) { - print " <OPTION VALUE=\"\">$blank\n"; - } - while (list($val, $text) = each($entries)) { - print ' <OPTION '; - if ($default && $default == $val) { - print 'SELECTED '; - } - print "VALUE=\"$val\">$text\n"; + $blank = '', $multiple = false) { + print $this->returnSelect($name, $entries, $default, $size, $blank, + $multiple); } - print " </SELECT>\n"; + // }}} + // {{{ displaySelectRow() + + function displaySelectRow($name, $title, &$entries, $default = '', + $size = 1, $blank = '', $multiple = false) + { + print $this->returnSelectRow($name, $title, $entries, $default, $size, + $blank, $multiple); } // }}} - // {{{ displaySelectRow() + // {{{ 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 "<INPUT NAME=\"$name\" VALUE=\"$default\" SIZE=\"$size\">"; + } + + // }}} + // {{{ returnTextRow() + + function returnTextRow($name, $title, $default = '', $size = HTML_FORM_TEXT_SIZE) { + $str .= " <TR>\n"; + $str .= " <TH ALIGN=\"right\">$title</TH>"; + $str .= " <TD>"; + $str .= $this->returnText($name, $default, $size); + $str .= "</TD>\n"; + $str .= " </TR>\n"; + + return $str; + } + + // }}} + // {{{ returnPassword() + + function returnPassword($name, $default = '', $size = HTML_FORM_PASSWD_SIZE) { + return "<INPUT NAME=\"$name\" TYPE=\"password\" VALUE=\"$default\" SIZE=\"$size\">"; + } + + // }}} + // {{{ returnPasswordRow() + + function returnPasswordRow($name, $title, $default = '', $size = HTML_FORM_PASSWD_SIZE) { + $str .= "<TR>\n"; + $str .= " <TH ALIGN=\"right\">$title</TH>\n"; + $str .= " <TD>"; + $str .= $this->returnPassword($name, $default, $size); + $str .= " repeat: "; + $str .= $this->returnPassword($name."2", $default, $size); + $str .= "</TD>\n"; + $str .= "</TR>\n"; + + return $str; + } + + // }}} + // {{{ returnCheckbox() + + function returnCheckbox($name, $default = false) { + $str .= "<INPUT TYPE=\"checkbox\" NAME=\"$name\""; + if ($default && $default != 'off') { + $str .= " CHECKED"; + } + $str .= ">"; + + return $str; + } + + // }}} + // {{{ returnCheckboxRow() + + function returnCheckboxRow($name, $title, $default = false) { + $str .= " <TR>\n"; + $str .= " <TH ALIGN=\"right\">$title</TH>\n"; + $str .= " <TD>"; + $str .= $this->returnCheckbox($name, $default); + $str .= "</TD>\n"; + $str .= " </TR>\n"; + + return $str; + } + + // }}} + // {{{ returnTextarea() + + function returnTextarea($name, $default = '', $width = 40, $height = 5) { + $str .= "<TEXTAREA NAME=\"$name\" COLS=\"$width\" ROWS=\"$height\">"; + $str .= $default; + $str .= "</TEXTAREA>"; + + return $str; + } + + // }}} + // {{{ returnTextareaRow() + + function returnTextareaRow($name, $title, $default = '', $width = 40, $height = 5) { + $str .= " <TR>\n"; + $str .= " <TH ALIGN=\"right\">$title</TH>\n"; + $str .= " <TD>"; + $str .= $this->returnTextarea($name, &$default, $width, $height); + $str .= "</TD>\n"; + $str .= " </TR>\n"; + + return $str; + } + + // }}} + // {{{ returnSubmit() + + function returnSubmit($title = 'Submit Changes', $name = "submit") { + return "<INPUT NAME=\"$name\" TYPE=\"submit\" VALUE=\"$title\">"; + } + + // }}} + // {{{ returnSubmitRow() + + function returnSubmitRow($name = "submit", $title = 'Submit Changes') { + $str .= " <TR>\n"; + $str .= " <TD>&nbsp</TD>\n"; + $str .= " <TD>"; + $str .= $this->returnSubmit($title, $name); + $str .= "</TD>\n"; + $str .= " </TR>\n"; + + return $str; + } + + // }}} + // {{{ returnReset() + + function returnReset($title = 'Clear contents') { + return "<INPUT TYPE=\"reset\" VALUE=\"$title\">"; + } + + // }}} + // {{{ returnResetRow() - function displaySelectRow($name, $title, &$entries, $default = '', $size = 1, - $blank = '', $multiple = false) + function returnResetRow($title = 'Clear contents') { + $str .= " <TR>\n"; + $str .= " <TD>&nbsp</TD>\n"; + $str .= " <TD>"; + $str .= $this->returnReset($title); + $str .= "</TD>\n"; + $str .= " </TR>\n"; + + return $str; + } + + // }}} + // {{{ returnSelect() + + function returnSelect($name, $entries, $default = '', $size = 1, + $blank = '', $multiple = false) { + $str .= " <SELECT NAME=\"$name\""; + if ($size) { + $str .= " SIZE=\"$size\""; + } + if ($multiple) { + $str .= " MULTIPLE"; + } + $str .= ">\n"; + if ($blank) { + $str .= " <OPTION VALUE=\"\">$blank\n"; + } + while (list($val, $text) = each($entries)) { + $str .= ' <OPTION '; + if ($default && $default == $val) { + $str .= 'SELECTED '; + } + $str .= "VALUE=\"$val\">$text\n"; + } + $str .= " </SELECT>\n"; + + return $str; + } + + // }}} + // {{{ returnSelectRow() + + function returnSelectRow($name, $title, &$entries, $default = '', $size = 1, + $blank = '', $multiple = false) { - print " <TR>\n"; - print " <TH ALIGN=\"right\">$title:</TH>\n"; - print " <TD>\n"; - $this->displaySelect($name, &$entries, $default, $size, $blank, $multiple); - print " </TD>\n"; - print " </TR>\n"; + $str .= " <TR>\n"; + $str .= " <TH ALIGN=\"right\">$title:</TH>\n"; + $str .= " <TD>\n"; + $str .= $this->returnSelect($name, &$entries, $default, $size, $blank, $multiple); + $str .= " </TD>\n"; + $str .= " </TR>\n"; + + return $str; } // }}} + // {{{ returnHidden() - // XXX missing: displayRadio displayRadioRow displayReset + function returnHidden($name, $value) { + return "<INPUT TYPE=\"hidden\" NAME=\"$name\" VALUE=\"$value\">"; + } + + // }}} + + // {{{ returnStart() + + function returnStart() { + $ret = "<FORM ACTION=\"" . basename ($this->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 .= "</FORM>"; + return $ret; + } + + // }}} // {{{ display() function display() { - $this->start(); - print "<TABLE>\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; - default: - // unknown field type - continue 2; - } - if (!($str = $call_cache[$data[0]])) { - $str = '$this->display'.ucfirst($data[0])."Row("; - for ($i = 1; $i <= $params; $i++) { - $str .= '$data['.$i.']'; - if ($i < $params) $str .= ', '; - } - $str .= ');'; - $call_cache[$data[0]] = $str; - } - eval($str); - } - print "</TABLE>\n"; - for ($i = 0; $i < sizeof($hidden); $i++) { - $this->displayHidden($this->fields[$hidden[$i]][1], - $this->fields[$hidden[$i]][2]); - } - $this->end(); + $this->start(); + print "<TABLE>\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; + 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 "</TABLE>\n"; + for ($i = 0; $i < sizeof($hidden); $i++) { + $this->displayHidden($this->fields[$hidden[$i]][1], + $this->fields[$hidden[$i]][2]); + } + $this->end(); } // }}}

« previous php.cvs (#1774) next »