diff static/js/tiny_mce/utils/validate.js @ 442:6c182ceb7147

Fixing #217; upgrade TinyMCE to 3.4.2 and enable the paste plugin.
author Brian Neal <bgneal@gmail.com>
date Thu, 26 May 2011 00:43:49 +0000
parents 88b2b9cb8c1f
children
line wrap: on
line diff
--- a/static/js/tiny_mce/utils/validate.js	Wed May 25 02:39:08 2011 +0000
+++ b/static/js/tiny_mce/utils/validate.js	Thu May 26 00:43:49 2011 +0000
@@ -32,7 +32,7 @@
 	},
 
 	isSize : function(s) {
-		return this.test(s, '^[0-9]+(%|in|cm|mm|em|ex|pt|pc|px)?$');
+		return this.test(s, '^[0-9.]+(%|in|cm|mm|em|ex|pt|pc|px)?$');
 	},
 
 	isId : function(s) {
@@ -96,8 +96,10 @@
 		var i, nl, s = this.settings, c = 0;
 
 		nl = this.tags(f, 'label');
-		for (i=0; i<nl.length; i++)
+		for (i=0; i<nl.length; i++) {
 			this.removeClass(nl[i], s.invalid_cls);
+			nl[i].setAttribute('aria-invalid', false);
+		}
 
 		c += this.validateElms(f, 'input');
 		c += this.validateElms(f, 'select');
@@ -109,6 +111,33 @@
 	invalidate : function(n) {
 		this.mark(n.form, n);
 	},
+	
+	getErrorMessages : function(f) {
+		var nl, i, s = this.settings, field, msg, values, messages = [], ed = tinyMCEPopup.editor;
+		nl = this.tags(f, "label");
+		for (i=0; i<nl.length; i++) {
+			if (this.hasClass(nl[i], s.invalid_cls)) {
+				field = document.getElementById(nl[i].getAttribute("for"));
+				values = { field: nl[i].textContent };
+				if (this.hasClass(field, s.min_cls, true)) {
+					message = ed.getLang('invalid_data_min');
+					values.min = this.getNum(field, s.min_cls);
+				} else if (this.hasClass(field, s.number_cls)) {
+					message = ed.getLang('invalid_data_number');
+				} else if (this.hasClass(field, s.size_cls)) {
+					message = ed.getLang('invalid_data_size');
+				} else {
+					message = ed.getLang('invalid_data');
+				}
+				
+				message = message.replace(/{\#([^}]+)\}/g, function(a, b) {
+					return values[b] || '{#' + b + '}';
+				});
+				messages.push(message);
+			}
+		}
+		return messages;
+	},
 
 	reset : function(e) {
 		var t = ['label', 'input', 'select', 'textarea'];
@@ -119,8 +148,10 @@
 
 		for (i=0; i<t.length; i++) {
 			nl = this.tags(e.form ? e.form : e, t[i]);
-			for (j=0; j<nl.length; j++)
+			for (j=0; j<nl.length; j++) {
 				this.removeClass(nl[j], s.invalid_cls);
+				nl[j].setAttribute('aria-invalid', false);
+			}
 		}
 	},
 
@@ -201,6 +232,7 @@
 		var s = this.settings;
 
 		this.addClass(n, s.invalid_cls);
+		n.setAttribute('aria-invalid', 'true');
 		this.markLabels(f, n, s.invalid_cls);
 
 		return false;