Update of /var/cvs/html/mmbase/validation
In directory james.mmbase.org:/tmp/cvs-serv11517

Modified Files:
        validation.js.jsp 
Log Message:
ported from 1.8


See also: http://cvs.mmbase.org/viewcvs/html/mmbase/validation


Index: validation.js.jsp
===================================================================
RCS file: /var/cvs/html/mmbase/validation/validation.js.jsp,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -b -r1.57 -r1.58
--- validation.js.jsp   7 Jan 2009 18:30:06 -0000       1.57
+++ validation.js.jsp   9 Feb 2009 11:42:13 -0000       1.58
@@ -9,7 +9,7 @@
  *                              then call validator.setup(el).
  *
  * @author Michiel Meeuwissen
- * @version $Id: validation.js.jsp,v 1.57 2009/01/07 18:30:06 michiel Exp $
+ * @version $Id: validation.js.jsp,v 1.58 2009/02/09 11:42:13 michiel Exp $
  */
 
 
@@ -18,13 +18,16 @@
 
     this.logEnabled   = false;
     this.traceEnabled = false;
+
+
+    this.dataTypeCache   = new Object();
     this.invalidElements = 0;
     //this.changedElements  = 0;
     this.elements        = [];
     this.validateHook;
     this.root = root;
     this.setup();
-    this.lang          = "client";
+    this.lang          = null;
     this.sessionName   = null;
     this.id = MMBaseValidator.validators.push(this);
     if (MMBaseValidator.validators.length == 1) {
@@ -36,10 +39,6 @@
 
 }
 
-
-MMBaseValidator.dataTypeCache            = new Object();
-MMBaseValidator.prefetchedNodemanagers   = new Object();
-
 MMBaseValidator.validators = [];
 
 
@@ -93,9 +92,11 @@
             errorTextArea.value = "LOG: " + msg + "\n" + errorTextArea.value;
         } else {
             // firebug console
+           if (typeof(console) != "undefined") {
             console.log(msg);
         }
     }
+    }
 }
 
 MMBaseValidator.prototype.trace = function (msg) {
@@ -105,9 +106,11 @@
             errorTextArea.value = "TRACE: " + msg + "\n" + errorTextArea.value;
         } else {
             // firebug console
+           if (typeof(console) != "undefined") {
             console.log(msg);
         }
     }
+    }
 }
 
 /**
@@ -177,8 +180,8 @@
 MMBaseValidator.prototype.isRequired = function(el) {
     if (el.mm_isrequired != null) return el.mm_isrequired;
     var re = this.find(this.getDataTypeXml(el), 'datatype required')[0];
-    el.mm_isrequired = "true" == "" + re.getAttribute("value");
-    el.mm_isrequired_enforce = re.getAttribute("enforce");
+    el.mm_isrequired = re != null && ("true" == "" + re.getAttribute("value"));
+    el.mm_isrequired_enforce = re != null && re.getAttribute("enforce");
     return el.mm_isrequired;
 }
 
@@ -273,6 +276,7 @@
     var pattern = new RegExp(javaClass);
     var xml = this.getDataTypeXml(el);
     var javaClassElement = this.find(xml, 'datatype class')[0];
+    if (! javaClassElement) return false;
     var name = javaClassElement.getAttribute("name");
     if (pattern.test(name)) {
         return true;
@@ -324,34 +328,15 @@
     return el.isbinary;
 }
 
-MMBaseValidator.prototype.INTEGER = /^[+-]?\d+$/;
-
-MMBaseValidator.prototype.getDecimalSeparator = function () {
-    if (this.DECIMAL == null) {
-         var url = '<mm:url page="/mmbase/validation/numberInfo.jspx" />';
-         var params = {lang: this.lang };
-         var result;
-         $.ajax({async: false, url: url, type: "GET", dataType: "xml", data: 
params,
-                  complete: function(res, status){
-                      if (status == "success") {
-                           result = res.responseXML;
-                      } else {
-                           result = $("<numberInfo />");
-                      }
-                  }
-                });
-         var decimal = this.find(result, 'numberInfo 
decimalSeparator')[0].childNodes[0].nodeValue;
-         this.DECIMAL = decimal  == "." ? "\\." : "[\\.\\" + decimal + "]";
-    }
-    return this.DECIMAL;
+MMBaseValidator.prototype.isXml = function(el) {
+    if (el.mm_isxml != null) return el.mm_isxml;
+    el.mm_isxml= this.hasJavaClass(el, "org\.mmbase\.datatypes\.XmlDataType");
+    return el.mm_isxml;
 }
-MMBaseValidator.prototype.floatRegExp = function() {
-    if (this.FLOAT == null) {
-         this.FLOAT = new RegExp("^[+-]?(\\d+|\\d+" + 
this.getDecimalSeparator() + "\\d*|\\d*" + this.getDecimalSeparator() + 
"\\d+)(e[+-]?\\d+|)$");
-    }
-    return this.FLOAT;
 
-}
+MMBaseValidator.prototype.INTEGER = /^[+-]?\d+$/;
+
+MMBaseValidator.prototype.FLOAT   = 
/^[+-]?(\d+|\d+\.\d*|\d*\.\d+)(e[+-]?\d+|)$/i;
 
 MMBaseValidator.prototype.typeValid = function(el) {
     if (el.value == "") return true;
@@ -360,7 +345,7 @@
         if (! this.INTEGER.test(el.value)) return false;
     }
     if (this.isFloat(el)) {
-        if (! this.floatRegExp().test(el.value)) return false;
+        if (! this.FLOAT.test(el.value)) return false;
     }
     return true;
 
@@ -465,16 +450,18 @@
     if (el.mm_key == null) {
         el.mm_key = key.string();
     }
-    var dataType = MMBaseValidator.dataTypeCache[el.mm_key];
+    var dataType = this.dataTypeCache[el.mm_key];
     if (dataType == null) {
+
         var url = '<mm:url page="/mmbase/validation/datatype.jspx" />';
         var params = this.getDataTypeArguments(key);
         var self = this;
-        $.ajax({async: false, url: url, type: "GET", dataType: "xml", data: 
params,
+           $.ajax({async: false, url: url, type: "GET",
+                dataType: "xml", data: params,
                 complete: function(res, status){
                     if (status == "success") {
                         dataType = res.responseXML;
-                        MMBaseValidator.dataTypeCache[el.mm_key] = dataType;
+                                   self.dataTypeCache[el.mm_key] = dataType;
                     }
                 }
                });
@@ -536,17 +523,11 @@
  * be done for every field.
  *
  */
-MMBaseValidator.prototype.prefetchNodeManager = function(n) {
+MMBaseValidator.prototype.prefetchNodeManager = function(nodemanager) {
 
-    var nodemanagers = n.split(",");
-    for (var i in nodemanagers) {
-        var nodemanager = nodemanagers[i];
-        if (! MMBaseValidator.prefetchedNodemanagers[nodemanager]) {
             var url = '<mm:url page="/mmbase/validation/datatypes.jspx" />';
             var params = {nodemanager: nodemanager };
             var self = this;
-            MMBaseValidator.prefetchedNodemanagers[nodemanager] = true;
-
             $.ajax({async: false, url: url, type: "GET", dataType: "xml", 
data: params,
                     complete: function(res, status){
                         if (status == "success") {
@@ -557,15 +538,13 @@
                                 var key = new Key();
                                 key.nodeManager = nodemanager;
                                 key.field = fields[i].getAttribute("name");
-                                MMBaseValidator.dataTypeCache[key.string()] = 
fields[i];
+                       self.dataTypeCache[key.string()] = fields[i];
                             }
                             //console.log("" + res);
                         }
                     }
                    });
 
-        }
-    }
 }
 
 
@@ -806,7 +785,6 @@
     if (this.validateHook) {
         this.validateHook(valid, element);
     }
-    $(this).trigger("mmValidate", [valid, element]);
 }
 
 /**
@@ -881,6 +859,7 @@
         case "select-multiple":
         default:
             this.log("Adding eventhandler to " + entry);
+            this.log(entry);
             $(entry).bind("change", function(ev) { self.validate(ev); });
             $(entry).bind("blur",   function(ev) { self.serverValidate(ev); });
         }
@@ -896,14 +875,12 @@
         if (this.validateHook) {
             this.validateHook(valid, entry);
         }
-        $(this).trigger("mmValidate", [valid, entry]);
 
     }
     if (els.length == 0) {
         if (this.validateHook) {
             this.validateHook(this.invalidElements == 0);
         }
-        $(this).trigger("mmValidate", [this.invalidElements == 0]);
     }
     el = null;
 }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to