Introduced PasswordField.class.php to keep things simple.
[timetracker.git] / WEB-INF / lib / form / Form.class.php
index 7edbf3c..868a3b3 100644 (file)
 class Form {
 
   var $name = '';
-  // TODO: refactoring ongoing down from here.
+  var $elements = array();
 
-       var $mElements     = array();
-       var $mRequest;
-    
-    function __construct($formName) {
-        $this->name = $formName;
-    }
-    
-    function setRequest(&$request) {
-        $this->mRequest = &$request;
-    }
+  function __construct($formName) {
+    $this->name = $formName;
+  }
 
-    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 getName() { return $this->name; }
-    
-    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;
-    }
-       
-       //// 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) {
-               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;
-                           
+  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"]);
@@ -182,9 +147,8 @@ class Form {
                if ($el!=null) {
                        $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"]);
@@ -195,16 +159,16 @@ 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 (isset($GLOBALS["I18N"])) $el->setLocalization($GLOBALS["I18N"]);
-
+                       if (isset($GLOBALS["I18N"])) $el->localize($GLOBALS["I18N"]);
+               
                        $el->setFormName($this->name);
-                       $this->mElements[$el->getName()] = &$el;
+                       $this->elements[$el->name] = &$el;
                }
        }
        
@@ -215,8 +179,8 @@ class Form {
         $html .= ' method="post"';
         
         // Add enctype for file upload forms.
-        foreach ($this->mElements as $elname=>$el) {
-            if (strtolower(get_class($this->mElements[$elname])) == 'uploadfile') {
+        foreach ($this->elements as $elname=>$el) {
+            if (strtolower(get_class($this->elements[$elname])) == 'uploadfile') {
                 $html .= ' enctype="multipart/form-data"';
                 break;
             }
@@ -228,9 +192,9 @@ class Form {
     
     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 .= "</form>";
@@ -242,21 +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);
        }
     }
 }