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