From 2eeb128d06ad37dea9bd1765784fb53e47ef527c Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Tue, 15 Nov 2011 11:47:40 -0500
Subject: [PATCH] - Fix washing styles with quoted values e.g. font-family

---
 program/js/tiny_mce/utils/validate.js |   47 ++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 40 insertions(+), 7 deletions(-)

diff --git a/program/js/tiny_mce/utils/validate.js b/program/js/tiny_mce/utils/validate.js
index cde4c97..27cbfab 100644
--- a/program/js/tiny_mce/utils/validate.js
+++ b/program/js/tiny_mce/utils/validate.js
@@ -1,10 +1,11 @@
 /**
- * $Id: validate.js 758 2008-03-30 13:53:29Z spocke $
+ * validate.js
  *
- * Various form validation methods.
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
  *
- * @author Moxiecode
- * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved.
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
  */
 
 /**
@@ -31,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) {
@@ -95,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');
@@ -108,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'];
@@ -118,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);
+			}
 		}
 	},
 
@@ -200,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;

--
Gitblit v1.9.1