Author: michiel
Date: 2010-06-28 12:00:36 +0200 (Mon, 28 Jun 2010)
New Revision: 42724

Modified:
   mmbase/trunk/base-webapp/src/main/webapp/mmbase/validation/validation.js.jsp
Log:
made mmValidate events recogonizable as from the server

Modified: 
mmbase/trunk/base-webapp/src/main/webapp/mmbase/validation/validation.js.jsp
===================================================================
--- 
mmbase/trunk/base-webapp/src/main/webapp/mmbase/validation/validation.js.jsp    
    2010-06-28 10:00:26 UTC (rev 42723)
+++ 
mmbase/trunk/base-webapp/src/main/webapp/mmbase/validation/validation.js.jsp    
    2010-06-28 10:00:36 UTC (rev 42724)
@@ -4,7 +4,7 @@
 /**
  * See test.jspx for example usage.
 
- * new MMBaseValidator(el): attaches events to all elements in elwhen ready.
+ * new MMBaseValidator(el): attaches events to all elements in el when ready.
  * new MMBaseValidator():       attaches no events yet. You could replace some 
functions, add hooks, set settings first or so.
  *                              then call validator.setup(el).
  *
@@ -18,6 +18,7 @@
 
     this.uniqueId     = id == null ? new Date().getTime() : id;
 
+
     this.logEnabled   = false;
     this.traceEnabled = false;
 
@@ -43,6 +44,7 @@
     if (MMBaseValidator.validators.length == 1) {
         setTimeout(MMBaseValidator.watcher, 500);
     }
+    this.saveToForm    = null;
 
 
 }
@@ -1022,9 +1024,15 @@
         var self = this;
         var key = this.getDataTypeKey(el);
         var value = this.getValue(el);
+        var params = this.getDataTypeArguments(key);
 
         var validationUrl = '<mm:url page="/mmbase/validation/valid.jspx" />';
-        var params = this.getDataTypeArguments(key);
+
+       if (this.saveToForm != null) {
+           params.form = this.saveToForm;
+       }
+
+
         if (this.lang != null) params.lang = this.lang;
         if (this.sessionName != null) params.sessionname = this.sessionName;
         params.value = value;
@@ -1033,17 +1041,17 @@
         var result;
         $.ajax({async: true, url: validationUrl, type: "GET", dataType: "xml", 
data: params,
                    complete: function(res, status){
-                    var result;
-                    if (status == "success") {
-                        el.serverValidated = true;
-                        result = res.responseXML;
+                       var result;
+                       if (status == "success") {
+                            el.serverValidated = true;
+                            result = res.responseXML;
                         //console.log("" + res);
-                    } else {
-                        el.serverValidated = true;
-                        result = $("<result valid='true' />")[0];
+                       } else {
+                            el.serverValidated = true;
+                            result = $("<result valid='true' />")[0];
+                       }
+                       self.showServerErrors(el, result);
                     }
-                    self.showServerErrors(el, result);
-                }
             });
     } catch (ex) {
         this.log(ex);
@@ -1118,21 +1126,24 @@
 
 
                 for (var  i = 0; i < errors.length; i++) {
-                    var span = document.createElement("span");
-                    span.innerHTML = $(errors[i]).text();
-                    errorDiv.appendChild(span);
+                   if (errors[i].tagName == "error") {
+                       var span = document.createElement("span");
+                       span.innerHTML = $(errors[i]).text();
+                       $(span).addClass($(errors[i]).attr("class"));
+                       errorDiv.appendChild(span);
+                   }
                 }
             }
         } else {
-            console.log("No error div " + "mm_check_" + id.substring(3));
+            this.log("No error div " + "mm_check_" + id.substring(3));
         }
     } else {
-      console.log("No element " + id);
+       this.log("No element " + id);
     }
-    this.updateValidity(element, valid);
+    this.updateValidity(element, valid, true);
 };
 
-MMBaseValidator.prototype.updateValidity = function(element, valid) {
+MMBaseValidator.prototype.updateValidity = function(element, valid, server) {
     if (valid != element.prevValid) {
         if (valid) {
             this.invalidElements--;
@@ -1145,7 +1156,7 @@
     if (this.validateHook) {
         this.validateHook(valid, element);
     }
-    $(element).trigger("mmValidate", [this, valid]);
+    $(element).trigger("mmValidate", [this, valid, server]);
     return valid;
 };
 
@@ -1169,7 +1180,7 @@
         return null; // don't know yet.
     } else {
         valid = this.valid(element);
-        this.updateValidity(element, valid);
+        this.updateValidity(element, valid, false);
         return valid;
     }
 

_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to