X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=WEB-INF%2Flib%2Fform%2FForm.class.php;h=868a3b3c92d4737c204d33b58ae1cc7b6f360884;hb=60d2288b7fca6caf0f5d9d3eee972f040eb24fb0;hp=340637d0e4fbaf437348d5420e622702a7fa1ca3;hpb=9a23a8c0a51b7ec38a96f525484134f3cb85dc7e;p=timetracker.git diff --git a/WEB-INF/lib/form/Form.class.php b/WEB-INF/lib/form/Form.class.php index 340637d0..868a3b3c 100644 --- a/WEB-INF/lib/form/Form.class.php +++ b/WEB-INF/lib/form/Form.class.php @@ -34,120 +34,43 @@ // +----------------------------------------------------------------------+ class Form { - var $formName = ""; - var $mAction = ""; - var $mMethod = "post"; - var $mEnctype = ""; - var $mId = ""; - var $error; - var $debugFunction; - var $mElements = array(); - var $mRequest; -// var $mFormBean; - - function Form($formid) { - $this->formName = $formid; - } - - function setRequest(&$request) { - $this->mRequest = &$request; - } - -/* function setFormBean(&$bean) { - $this->mFormBean = &$bean; - } -*/ - function &getElement($name) { - return $this->mElements[$name]; - } - - function &getElements() { - return $this->mElements; - } - - //// FORM element - // action - // method - GET, POST - // enctype - enctype="multipart/form-data" - // name - // onsubmit - // onreset - function setName($value) { $this->formName = $value; } - function getName() { return $this->formName; } - - function setId($value) { $this->mId = $value; } - function getId() { return $this->mId; } - - function setAction($value) { $this->mAction = $value; } - function getAction() { return $this->mAction; } - - function setMethod($value) { $this->mMethod = $value; } - function getMethod() { return $this->mMethod; } - - function setEnctype($value) { $this->mEnctype = $value; } - function getEnctype() { return $this->mEnctype; } - - function isSubmit() { - if (!isset($this->mRequest)) return false; - $result = false; - foreach ($this->mElements as $el) { - if (strtolower(get_class($el))=="submit") { - $name = $el->getName(); - $value = $this->mRequest->getAttribute($name); - if($value) { - $result = true; - } - } - } - return $result; - } - - function OutputError($error,$scope="") - { - $this->error=(strcmp($scope,"") ? $scope.": ".$error : $error); - if(strcmp($function=$this->debugFunction,"") - && strcmp($this->error,"")) - $function($this->error); - return($this->error); - } - - //// INPUT element - // type = TEXT | PASSWORD | CHECKBOX | RADIO | SUBMIT | RESET | FILE | HIDDEN | IMAGE | BUTTON - // name - // value - // checked - for type radio and checkbox - // size - width pixels or chars - // maxlength - // src - for type image - // tabindex - support A, AREA, BUTTON, INPUT, OBJECT, SELECT, and TEXTAREA - // accesskey - support A, AREA, BUTTON, INPUT, LABEL, and LEGEND, and TEXTAREA - // onfocus - // onblur - // onselect - INPUT and TEXTAREA - // onchange - function addInput($arguments) { - if(strcmp(gettype($arguments),"array")) - $this->OutputError("arguments must be array","AddInput"); - - if(!isset($arguments["type"]) || !strcmp($arguments["type"],"")) - return($this->OutputError("Type not defined","AddInput")); - - if(!isset($arguments["name"]) || !strcmp($arguments["name"],"")) - return($this->OutputError("Name of element not defined","AddInput")); - - if (isset($this->mElements[$arguments["name"]])) - return($this->OutputError("it was specified '".$arguments["name"]."' name of an already defined input","AddInput")); - - switch($arguments["type"]) { - - case "textfield": - case "text": - import('form.TextField'); - $el = new TextField($arguments["name"]); - $el->setMaxLength(@$arguments["maxlength"]); - if (isset($arguments["aspassword"])) $el->setAsPassword($arguments["aspassword"]); - break; - + + var $name = ''; + var $elements = array(); + + function __construct($formName) { + $this->name = $formName; + } + + function getElement($name) { + return $this->elements[$name]; + } + + function getElements() { + return $this->elements; + } + + function getName() { return $this->name; } + + // addInput - adds an input object to the form. + function addInput($arguments) { + switch($arguments['type']) { + case 'text': + import('form.TextField'); + $el = new TextField($arguments['name']); + $el->setMaxLength(@$arguments['maxlength']); + if (isset($arguments['aspassword'])) $el->setAsPassword($arguments['aspassword']); + break; + + case 'password': + import('form.PasswordField'); + $el = new PasswordField($arguments['name']); + $el->setMaxLength(@$arguments['maxlength']); + break; + +// TODO: refactoring ongoing down from here. +// aspassword - change this name to something better? Perhaps. +// Change $arguments to something better too (maybe). $args or $params? case "datefield": import('form.DateField'); $el = new DateField($arguments["name"]); @@ -220,16 +143,12 @@ class Form { $el = new UploadFile($arguments["name"]); if (isset($arguments["maxsize"])) $el->setMaxSize($arguments["maxsize"]); break; - - default: - return($this->OutputError("Type not found for input element","AddInput")); } if ($el!=null) { - $el->setFormName($this->formName); + $el->setFormName($this->name); if (isset($arguments["id"])) $el->setId($arguments["id"]); - if (isset($GLOBALS["I18N"])) $el->setLocalization($GLOBALS["I18N"]); - if (isset($arguments["render"])) $el->setRenderable($arguments["render"]); - if (isset($arguments["enable"])) $el->setEnable($arguments["enable"]); + if (isset($GLOBALS["I18N"])) $el->localize($GLOBALS["I18N"]); + if (isset($arguments["enable"])) $el->setEnabled($arguments["enable"]); if (isset($arguments["style"])) $el->setStyle($arguments["style"]); if (isset($arguments["size"])) $el->setSize($arguments["size"]); @@ -240,54 +159,42 @@ class Form { if (isset($arguments["onchange"])) $el->setOnChange($arguments["onchange"]); if (isset($arguments["onclick"])) $el->setOnClick($arguments["onclick"]); - $this->mElements[$arguments["name"]] = &$el; + $this->elements[$arguments["name"]] = &$el; } } function addInputElement(&$el) { if ($el && is_object($el)) { - if (!$el->getName()) - return($this->OutputError("no name in element","addInputElement")); - - if (isset($GLOBALS["I18N"])) $el->setLocalization($GLOBALS["I18N"]); + if (isset($GLOBALS["I18N"])) $el->localize($GLOBALS["I18N"]); - $el->setFormName($this->formName); - $this->mElements[$el->getName()] = &$el; + $el->setFormName($this->name); + $this->elements[$el->name] = &$el; } } function toStringOpenTag() { - $html = "
formName\""; - - if ($this->mId!="") - $html .= " id=\"$this->mId\""; - - if ($this->mAction!="") - $html .= " action=\"$this->mAction\""; + $html = "name\""; - if ($this->mMethod!="") - $html .= " method=\"$this->mMethod\""; + $html .= ' method="post"'; - // for upload forms - foreach ($this->mElements as $elname=>$el) { - if (strtolower(get_class($this->mElements[$elname]))=="uploadfile") { - $this->mEnctype = "multipart/form-data"; + // Add enctype for file upload forms. + foreach ($this->elements as $elname=>$el) { + if (strtolower(get_class($this->elements[$elname])) == 'uploadfile') { + $html .= ' enctype="multipart/form-data"'; + break; } } - - if ($this->mEnctype!="") - $html .= " enctype=\"$this->mEnctype\""; - + $html .= ">"; return $html; } function toStringCloseTag() { $html = "\n"; - foreach ($this->mElements as $elname=>$el) { - if (strtolower(get_class($this->mElements[$elname]))=="hidden") { - $html .= $this->mElements[$elname]->toStringControl()."\n"; + foreach ($this->elements as $elname=>$el) { + if (strtolower(get_class($this->elements[$elname]))=="hidden") { + $html .= $this->elements[$elname]->getHtml()."\n"; } } $html .= "
"; @@ -299,23 +206,21 @@ class Form { $vars['open'] = $this->toStringOpenTag(); $vars['close'] = $this->toStringCloseTag(); - foreach ($this->mElements as $elname=>$el) { - if (is_object($this->mElements[$elname])) - $vars[$elname] = $this->mElements[$elname]->toArray(); + foreach ($this->elements as $elname=>$el) { + if (is_object($this->elements[$elname])) + $vars[$elname] = $this->elements[$elname]->toArray(); } //print_r($vars); return $vars; } function getValueByElement($elname) { - return $this->mElements[$elname]->getValue(); + return $this->elements[$elname]->getValue(); } function setValueByElement($elname, $value) { - if (isset($this->mElements[$elname])) { - $this->mElements[$elname]->setValue($value); + if (isset($this->elements[$elname])) { + $this->elements[$elname]->setValue($value); } } } - -?> \ No newline at end of file