From: uw
Date: Sun May 20 16:05:38 2001
Modified files:
      php-lib/pages/form/example_form.inc
      php-lib/pages/form/xml/tests/form_text.xml
      php-lib/php/form/form.inc
      php-lib/php/form/form_commonobject.inc
      php-lib/php/form/form_xmlfactory.inc
      php-lib/php/form/elements/form_element.inc
      php-lib/php/form/elements/form_element_date.inc
      php-lib/php/form/elements/form_element_radio.inc
      php-lib/php/form/elements/form_element_select.inc
      php-lib/php/form/js/form_js_complex.js
      php-lib/php/form/js/form_js_simple.js

Log message:
- fixed several javascript bugs - looks good now :)


Index: php-lib/pages/form/example_form.inc
diff -u php-lib/pages/form/example_form.inc:1.8 php-lib/pages/form/example_form.inc:1.9
--- php-lib/pages/form/example_form.inc:1.8     Mon Jan  8 02:01:29 2001
+++ php-lib/pages/form/example_form.inc Sun May 20 16:05:29 2001
@@ -34,7 +34,7 @@
                                                                                       
                                                 "frozen"                              
  => false,
                                                                                       
                                                 "multiple"                      => 
false,
                                                                                       
                                                 
-                                                                                      
                                                 "validator"                     => 
"DependencieValidator",
+                                  "validator"         => "DependencieValidator",
                                                                                       
                                                 "js_validator"  => 'function 
DependencieValidator(formobj) {
 
        var i, v;
Index: php-lib/pages/form/xml/tests/form_text.xml
diff -u php-lib/pages/form/xml/tests/form_text.xml:1.2 
php-lib/pages/form/xml/tests/form_text.xml:1.3
--- php-lib/pages/form/xml/tests/form_text.xml:1.2      Sat May 19 22:50:45 2001
+++ php-lib/pages/form/xml/tests/form_text.xml  Sun May 20 16:05:30 2001
@@ -26,10 +26,16 @@
       <css class="css class" id="id">style</css>
       <html accesskey="" tabindex="">additional html</html>   
       <validation>
-                       <length min="1" max="3">length_e</length>
+                       <length min="1" max="4">length_e</length>
                        <regexp reg="[a-z]" icase="true">valid_e</regexp>
         <phpfunction callback="true">callback</phpfunction>
-        <jsfunction></jsfunction>
+        <jsfunction>
+          // must have the name of the (phpfunction)
+          function callback(form) {
+            // switch off length validaton 
+            form.val_off("name_text", "l");
+          }
+        </jsfunction>
                </validation>
        </text>
     
Index: php-lib/php/form/form.inc
diff -u php-lib/php/form/form.inc:1.32 php-lib/php/form/form.inc:1.33
--- php-lib/php/form/form.inc:1.32      Sat May 19 22:50:46 2001
+++ php-lib/php/form/form.inc   Sun May 20 16:05:31 2001
@@ -28,7 +28,7 @@
 * - tree (select box with options show as a tree)
 *
 * @author              Ulf Wendel <[EMAIL PROTECTED]>
-* @version  $Id: form.inc,v 1.32 2001/05/19 20:50:46 uw Exp $
+* @version  $Id: form.inc,v 1.33 2001/05/20 14:05:31 uw Exp $
 * @access              public
 * @package     Form
 */
@@ -719,10 +719,10 @@
 
                foreach ($this->getCustomValidators($vallist) as $k => $validator) {
     
-      $func = $validator["php"];
-      if ($validator["callback"])
+      $func = $validator["name"];
+      if ($validator["callback"] && function_exists($func))
         ${func}(&$this);
-      else
+      else if (method_exists($this, $func))
         $this->${func}();
         
     }
@@ -788,9 +788,9 @@
                                $validator = $this->elements[$name]->getValidator();
                                if ("" != $validator[0])
                                        $validators[] = array(
-                                "php"       => $validator[0], 
+                                "name"      => $validator[0], 
                                 "callback"  => $validator[1],
-                                "js"        => $validator[2]
+                                "jscode"    => $validator[2]
                                 );
                        }       
                        
@@ -883,8 +883,8 @@
 
                $validators = array();
     foreach ($this->getCustomValidators() as $k => $validator)
-      if ("" != $validator["js"])
-        $validators[] = $validator["js"];
+      if ("" != $validator["jscode"])
+        $validators[] = $validator["name"];
     
     if (0 != count($validators)) {
       $complex = true;
@@ -907,6 +907,7 @@
                $js = ""; 
                $custom = "";
                $get_value = "";
+    
                // list of already send get_value functions
                $send_func = array();
                $send_gv_el = array();
@@ -930,7 +931,8 @@
                        if ($js_validator)
                                $custom .= $js_validator . "\n";
                        
-                       $js .= $eldata;
+      // remove the element name prefix
+                       $js .= str_replace($el->getName(), 
+str_replace($this->element_prefix, "", $el->getName()), $eldata);
 
                        if ($getvalue_fname) {
                                
@@ -972,6 +974,7 @@
                // customize the error message
                $base_code = str_replace("{ERROR_MSG_PREFIX}", $this->js_error_prefix, 
$base_code);
                $base_code = str_replace("{ERROR_MSG_POSTFIX}", 
$this->js_error_postfix, $base_code);
+    $base_code = str_replace("{NAMEPREFIX}", $this->element_prefix, $base_code);
                
                $js = sprintf('<script language="JavaScript1.2"><!--//
 %s
Index: php-lib/php/form/form_commonobject.inc
diff -u php-lib/php/form/form_commonobject.inc:1.5 
php-lib/php/form/form_commonobject.inc:1.6
--- php-lib/php/form/form_commonobject.inc:1.5  Sat May 19 20:56:45 2001
+++ php-lib/php/form/form_commonobject.inc      Sun May 20 16:05:31 2001
@@ -15,7 +15,7 @@
        * @var  string  $CR_HTML        Default is "\n"
        * @see  CR_JS
        */
-       var $CR_HTML = "\n";
+       var $CR_HTML = "";
        
        /**
        * Line break sign used whenever JavaScript code is generated
Index: php-lib/php/form/form_xmlfactory.inc
diff -u php-lib/php/form/form_xmlfactory.inc:1.8 
php-lib/php/form/form_xmlfactory.inc:1.9
--- php-lib/php/form/form_xmlfactory.inc:1.8    Sat May 19 22:50:46 2001
+++ php-lib/php/form/form_xmlfactory.inc        Sun May 20 16:05:31 2001
@@ -527,13 +527,8 @@
   */
   function cdata($parser, $cdata) {
 
-    // WARNING
-    if ("" == trim($cdata))
-      return;
+    $data = trim($cdata);
     
-    // Hmm, do you know a better way?
-    $cdata = trim($cdata);             
-    
     switch ($this->current_tag) {
     
       case "calendar":
@@ -551,16 +546,45 @@
       case "text":
       case "textarea":
       case "textedit":
-        $this->attributes["value"] = (string)$cdata;
+        if ($data)
+          $this->attributes["value"] .= $data;
         break;
         
       case "image":
-        $this->attributes["src"] = (string)$cdata;
-        break;    
-            
+        if ($data)
+          $this->attributes["src"] .= $data;
+        break;
+    
+      case "additionalhtml":
+      case "css":      
+      case "day":
+      case "elements":
+      case "form":      
+      case "html":
+      case "intro":
+      case "intros":      
+      case "javascript":
+      case "length":
+      case "mode":
+      case "month":      
+      case "nameprefix":
+      case "option":
+      case "options":            
+      case "phpfunction":
+      case "preselect":
+      case "regexp":
+      case "validation":
+      case "year":
+        $this->cdata .= $data;
+        break;
+
+      case "jsfunction":        
+      default:
+        $this->cdata .= $cdata;
+        break;
+                
     }
     
-    $this->cdata = $cdata;
   } // end func cdata
   
   
Index: php-lib/php/form/elements/form_element.inc
diff -u php-lib/php/form/elements/form_element.inc:1.6 
php-lib/php/form/elements/form_element.inc:1.7
--- php-lib/php/form/elements/form_element.inc:1.6      Sat May 19 22:50:47 2001
+++ php-lib/php/form/elements/form_element.inc  Sun May 20 16:05:32 2001
@@ -5,21 +5,23 @@
 * Superclass of all form elements. 
 * 
 * @author              Ulf Wendel <[EMAIL PROTECTED]>
-* @version     $Id: form_element.inc,v 1.6 2001/05/19 20:50:47 uw Exp $
+* @version     $Id: form_element.inc,v 1.7 2001/05/20 14:05:32 uw Exp $
 * @access      public
 * @package     Form
 * @abstract
 */
 class form_element extends form_commonobject {
        
-       /**
+       
+  /**
        * @var          boolean $flag_config_ok 
        * @access       public
        * @see          checkConfiguration()
        */
        var $flag_config_ok = true;
 
-       /**
+       
+  /**
        * Alias name of the element.
        * 
        * Every element can have two names. One "name" used 
@@ -33,7 +35,8 @@
        */
        var $elname = "";
        
-       /**
+       
+  /**
        * HTML name attribute of the element.
        * 
        * Make sure that the name of select multiple 
@@ -43,14 +46,16 @@
        */
        var $name = "";
 
-       /**
+       
+  /**
        * Value of the element.
        *
        * @var  mixed   $value
        */      
        var $value = "";
 
-       /**
+       
+  /**
        * Additional HTML attributes.
        *
        * The string will be added to the generated HTML without any validation.
@@ -59,34 +64,39 @@
        */      
        var $additional_html = "";
        
-       /**
+       
+  /**
        * Is the element frozen?
        *
        * @var  boolean $frozen
        */
        var $frozen = false;
        
-       /**
+       
+  /**
        * HTML/CSS class attribute.
        *
        * @var  string  $class  The default of an empty string means: don't print that 
attribute.
        */
        var $class = "";
        
-       /**
+       
+  /**
        * HTML/CSS id attribute.
        *
        * @var  string  $id                     The default of an empty string means: 
don't print that attribute.
        */
        var $id = "";
        
-       /**
+  
+  /**
        * HTML/CSS style attribute
        *
        * @var  string  $style  The default of an empty string means: don't print that 
attribute.
        */
        var     $style = "";
        
+
        /**
        * List of required fields every element needs and their type.
        *
@@ -101,6 +111,7 @@
                                                                                       
                                                                         "name"  => 
"string"
                                                                                       
                                                         );
 
+                                    
        /**
        * List of required fields provided by a derived class.
        *
@@ -109,6 +120,7 @@
        */                                                                             
                                                 
        var $required_fields = array();                                                
                                                                         
 
+  
        /**
        * List of optional fields and their type.
        *
@@ -123,9 +135,9 @@
                                                                                       
                                                                         "elname"      
                                  => "string",
                                                                                       
                                                                         
"additional_html"       => "string",
                                                                                       
                                                                         
-                                                                                      
                                                                         "validator"   
                          => "string",
-                                        "validator_callback" => "boolean",  
-                                                                                      
                                                                         
"js_validator"          => "string",
+                                                                                      
+                                                                         "validator"  
+                               => "string",
+                                        "validator_callback"  => "boolean",  
+                                                                                      
+                                                                         
+"js_validator"              => "string",
                                                                                       
                                                                         
                                                                                       
                                                                         "frozen"      
                                  => "boolean",
                                                                                       
                                                                         
@@ -134,6 +146,7 @@
                                                                                       
                                                                         "style"       
                                  => "string"                                          
                                   
                                                                                       
                                         );                                            
                  
 
+                                
        /**
        * List of optional fields provided by a derived class.
        *
@@ -142,12 +155,14 @@
        */                                                                             
                                                         
        var $optional_fields = array();                                                
                                                                                       
                                                  
        
+  
        /**
        * Method (POST|GET) used in the form.
        *
        * @var  string
        */
        var $method = "";
+  
        
        /**
        * Check for ... errors.
@@ -160,6 +175,7 @@
                                                                                       
         "intro"                         => true
                                                                                       
 );
 
+                      
        /**
        * JavaScript validation mode.
        * 
@@ -169,6 +185,7 @@
        */
        var $js_mode = "";
        
+  
        /**
        * Name of the form that contains the element.
        * 
@@ -202,6 +219,7 @@
        */
        var $js_validator = "";
        
+  
        /**
        * Creates a new form element.
        *
@@ -235,10 +253,10 @@
                
                if ("" != $js_mode)
                        $js_mode = ("weak" == strtolower($js_mode)) ? "weak" : 
"strong";
-               $this->js_mode = $js_mode;
-               $this->form_name = $form_name;
-               
-               $this->method = strtoupper($method);
+      
+               $this->js_mode    = $js_mode;
+               $this->form_name  = $form_name;
+    $this->method     = strtoupper($method);
 
                $this->setup();                 
                
@@ -517,10 +535,10 @@
        function validateLength($value = "") {
        
                $value = ($value) ? $value : $this->value;                      
+
                if ($this->doValidation("length") && (strlen($value) < 
$this->minlength || ($this->maxlength >= 0 && strlen($value) > $this->maxlength)))
                        return $this->length_e . " ";
                return "";
-               
        } // end func validateLength
        
        /**
@@ -538,7 +556,6 @@
                if ($this->doValidation("valid") && !preg_match($reg, ($value) ? 
$value : $this->value))
                        return $this->valid_e . " ";
                return "";
-               
        } // end func validateRegEx
        
        /**
@@ -804,7 +821,7 @@
        * @return       array   [JavaScript function code, JavaScript function name]
        */
        function getJSvalue() {
-               return array("", "");
+               return array('["", ""]', "");
        } // end func getJSvalue
        
        /**
Index: php-lib/php/form/elements/form_element_date.inc
diff -u php-lib/php/form/elements/form_element_date.inc:1.4 
php-lib/php/form/elements/form_element_date.inc:1.5
--- php-lib/php/form/elements/form_element_date.inc:1.4 Sat May 19 20:07:10 2001
+++ php-lib/php/form/elements/form_element_date.inc     Sun May 20 16:05:32 2001
@@ -7,7 +7,7 @@
 * Use this meta element to make sure that the user enters a valid date.
 *
 * @author        Ulf Wendel <[EMAIL PROTECTED]>
-* @version  $Id: form_element_date.inc,v 1.4 2001/05/19 18:07:10 uw Exp $
+* @version  $Id: form_element_date.inc,v 1.5 2001/05/20 14:05:32 uw Exp $
 * @package     Form
 */
 class form_element_date extends form_element {
@@ -424,22 +424,24 @@
        } // end func getJSonActivation
        */
                
-       function getJSvalue() {
+function getJSvalue() {
        
                $js = 'function form_date(f, e) {
-       var v = n = "";
+       var v = s = n = "";
        var i = j = 0;
        with (document.forms[f])
                for ( ; i < length; i++) {
                        n = elements[i].name;
                        if (-1 != n.search(new RegExp(e + "_[aAdDFhHgGijlmnMswYyz]"))) 
{
+                               if (!s)
+                                       s = n;
                                with (elements[i])
                                        for (j = 0; j < options.length; j++)
                                                if (options[j].selected)
                                                        v += options[j].value;
                        }
                }
-       return v;
+       return [v, s];
 }';
 
                return array($js, "form_date");
Index: php-lib/php/form/elements/form_element_radio.inc
diff -u php-lib/php/form/elements/form_element_radio.inc:1.5 
php-lib/php/form/elements/form_element_radio.inc:1.6
--- php-lib/php/form/elements/form_element_radio.inc:1.5        Sat May 19 20:15:02 
2001
+++ php-lib/php/form/elements/form_element_radio.inc    Sun May 20 16:05:33 2001
@@ -5,7 +5,7 @@
 * Generation of radio elements, [input type="radio" value=""].
 *
 * @author              Ulf Wendel      <[EMAIL PROTECTED]>
-* @version  $Id: form_element_radio.inc,v 1.5 2001/05/19 18:15:02 uw Exp $
+* @version  $Id: form_element_radio.inc,v 1.6 2001/05/20 14:05:33 uw Exp $
 * @access              public
 * @package     Form
 */
@@ -62,8 +62,8 @@
        with (document.forms[f]) 
                for (var i = t = 0, t = elements[e]; i < t.length; i++)
                        if (t[i].checked)
-                               return t[i].value;
-       return "";
+                               return [t[i].value, ""];
+       return ["", ""];
 }', "form_radio");
 
        } // end func getJSValue
Index: php-lib/php/form/elements/form_element_select.inc
diff -u php-lib/php/form/elements/form_element_select.inc:1.5 
php-lib/php/form/elements/form_element_select.inc:1.6
--- php-lib/php/form/elements/form_element_select.inc:1.5       Sat May 19 20:07:12 
2001
+++ php-lib/php/form/elements/form_element_select.inc   Sun May 20 16:05:34 2001
@@ -6,7 +6,7 @@
 *
 * @author              Ulf Wendel      <[EMAIL PROTECTED]>
 * @package     Form
-* @version     $Id: form_element_select.inc,v 1.5 2001/05/19 18:07:12 uw Exp $
+* @version     $Id: form_element_select.inc,v 1.6 2001/05/20 14:05:34 uw Exp $
 */
 class form_element_select extends form_element_selectobject {
 
@@ -64,8 +64,8 @@
        with (document.forms[f].elements[e])
                for (var i = o = 0, o = options; i < o.length; i++)
                        if (o[i].selected)      
-                               return o[i].value;
-       return "";
+                               return [o[i].value, ""];
+       return ["", ""];
 }', "form_select");
 
        } // end func getJSvalue
Index: php-lib/php/form/js/form_js_complex.js
diff -u php-lib/php/form/js/form_js_complex.js:1.1 
php-lib/php/form/js/form_js_complex.js:1.2
--- php-lib/php/form/js/form_js_complex.js:1.1  Thu May 10 18:16:26 2001
+++ php-lib/php/form/js/form_js_complex.js      Sun May 20 16:05:35 2001
@@ -4,6 +4,7 @@
        this.gv = gv;
        this.val = val;
        this.err = [];
+  this.p = "{NAMEPREFIX}";
 };
 new form;
 
@@ -22,7 +23,8 @@
        d = this.els;
        for (i = 0; i < d.length; i += 3) {
                el = this.els[i];
-               if (a.length && a[0].name != el)
+
+               if (a.length && a[0] != this.p + el)
                        continue;
 
                vd = d[i + 1];
@@ -37,7 +39,7 @@
                        c = vd[j];
                        l = vl.length;
                        j += 4;
-
+      
                        if ("l" == c && this.val_ev(el, "l") && (l < vd[j - 3] || (-1 
!= vd[j - 2] && l > vd[j - 2])))
                                this.err[i] += vd[j - 1] + "\n";
 
@@ -56,7 +58,7 @@
 
        if (m) {
                alert("{ERROR_MSG_PREFIX}" + m + "{ERROR_MSG_POSTFIX}");
-               document.forms[n].elements[f].focus();
+               document.forms[n].elements[this.p + f].focus();
                return false;
        }
        return true;
@@ -67,8 +69,8 @@
        g = f.gv;
        for (i = 0; i < g.length; i+= 2)
                if (g[i] == el)
-                       return eval(g[i +1] + "('" + f.name + "', '" + el + "');");
-       return [document.forms[f.name].elements[el].value, ""];
+                       return eval(g[i +1] + "('" + f.name + "', '" + this.p + el + 
+"');");
+       return [document.forms[f.name].elements[this.p + el].value, ""];
 };
 
 form.prototype.val_on = function (el, events) {
Index: php-lib/php/form/js/form_js_simple.js
diff -u php-lib/php/form/js/form_js_simple.js:1.3 
php-lib/php/form/js/form_js_simple.js:1.4
--- php-lib/php/form/js/form_js_simple.js:1.3   Sat May 19 20:15:02 2001
+++ php-lib/php/form/js/form_js_simple.js       Sun May 20 16:05:35 2001
@@ -1,18 +1,19 @@
 function form(n, els) {
        this.name = n;
-       this.els = els
+       this.els = els;
+  this.p = "{NAMEPREFIX}";
 };
 new form;
 
 form.prototype.validate = function () {
 
-       var e = f = "";
+       var e = f = s = "";
        var i, el, vd, j, vl, c, l, a, d, n;
        n = this.name;
        d = this.els;
 
        for (i = 0; i < d.length; i += 2) {
-               el = d[i];
+               el = this.p + d[i];
 
                a = arguments;
                if (a.length && a[0] != el)
@@ -27,8 +28,11 @@
                        c = vd[j];
                        j += 4;
 
-                       if ("v" == c)
+                       if ("v" == c) {
                                eval("vl = " + vd[j - 3] + "('" + n + "', '" + el + 
"'); j -= 2;");
+        s = vl[1];
+        vl = vl[0];
+      }
 
                        l = vl.length;
                        if ("l" == c && (l < vd[j - 3] || (vd[j -2] >= 0 && l > vd[j - 
2])))
@@ -43,7 +47,7 @@
                }
 
                if (!f && e)
-                       f = el;
+                       f = (s) ? s : el;
        }
 
        if (e) {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to