cvs: php4 /pear/HTML Form.php
| From: | Stig Bakken | 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> </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> </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> </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();
}
// }}}