// | https://www.anuko.com/time_tracker/credits.htm
// +----------------------------------------------------------------------+
-// +----------------------------------------------------------------------+
-// |
-// | Class generates elements of specification HTML 4.01
-// | http://www.w3.org/TR/1999/REC-html401-19991224
-// |
-// +----------------------------------------------------------------------+
-
+// Form class is a container for HTML forms we use in the application.
+// It contains an array of $elements - which are individual input controls
+// belonging to a form.
class Form {
-
var $name = ''; // Form name.
var $elements = array(); // An array of input controls in form.
if (isset($params['format'])) $el->setFormat($params['format']);
break;
+ case 'textarea':
+ import('form.TextArea');
+ $el = new TextArea($params['name']);
+ if (isset($params['maxlength'])) $el->setMaxLength($params['maxlength']);
+ break;
+
+ case 'checkbox':
+ import('form.Checkbox');
+ $el = new Checkbox($params['name']);
+ break;
+
+ case 'hidden':
+ import('form.Hidden');
+ $el = new Hidden($params['name']);
+ break;
+
+ case 'submit':
+ import('form.Submit');
+ $el = new Submit($params['name']);
+ break;
+
// TODO: refactoring ongoing down from here.
- case "textarea":
- import('form.TextArea');
- $el = new TextArea($params["name"]);
- $el->setColumns(@$params["cols"]);
- $el->setRows(@$params["rows"]);
- if (isset($params["maxlength"])) $el->setMaxLength($params["maxlength"]);
- break;
-
- case "checkbox":
- import('form.Checkbox');
- $el = new Checkbox($params["name"]);
- if (@$params["checked"]) $el->setChecked(true);
- $el->setData(@$params["data"]);
- break;
-
case "checkboxgroup":
import('form.CheckboxGroup');
$el = new CheckboxGroup($params["name"]);
$el = new Combobox($params["name"]);
$el->setData(@$params["data"]);
$el->setDataDefault(@$params["empty"]);
+ if (isset($params["multiple"])) {
+ $el->setMultiple($params["multiple"]);
+ $el->name .= '[]'; // Add brackets to the end of name to get back an array on POST.
+ }
if (isset($params["datakeys"])) $el->setDataKeys($params["datakeys"]);
break;
-
- case "hidden":
- import('form.Hidden');
- $el = new Hidden($params["name"]);
- break;
-
- case "submit":
- import('form.Submit');
- $el = new Submit($params["name"]);
- break;
-
+
case "calendar":
import('form.Calendar');
$el = new Calendar($params["name"]);
if ($el!=null) {
$el->setFormName($this->name);
if (isset($params["id"])) $el->setId($params["id"]);
- if (isset($GLOBALS["I18N"])) $el->localize($GLOBALS["I18N"]);
+ $el->localize();
if (isset($params["enable"])) $el->setEnabled($params["enable"]);
if (isset($params["style"])) $el->setStyle($params["style"]);
function addInputElement(&$el) {
if ($el && is_object($el)) {
- if (isset($GLOBALS["I18N"])) $el->localize($GLOBALS["I18N"]);
+ $el->localize();
$el->setFormName($this->name);
$this->elements[$el->name] = &$el;