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/plugins/xhtmlxtras/js/element_common.js |   52 ++++++++++++++++++++++++++++++----------------------
 1 files changed, 30 insertions(+), 22 deletions(-)

diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/js/element_common.js b/program/js/tiny_mce/plugins/xhtmlxtras/js/element_common.js
index 724d9d1..4e5d9c3 100644
--- a/program/js/tiny_mce/plugins/xhtmlxtras/js/element_common.js
+++ b/program/js/tiny_mce/plugins/xhtmlxtras/js/element_common.js
@@ -1,8 +1,11 @@
- /**
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
+/**
+ * element_common.js
  *
- * @author Moxiecode - based on work by Andrew Tetlaw
- * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved.
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
  */
 
 tinyMCEPopup.requireLangPack();
@@ -136,7 +139,7 @@
 
 	element_name = element_name.toLowerCase();
 	var elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase());
-	if (elm != null && elm.nodeName == element_name.toUpperCase()) {
+	if (elm != null && elm.nodeName.toUpperCase() == element_name.toUpperCase()) {
 		SXE.currentAction = "update";
 	}
 
@@ -151,28 +154,24 @@
 SXE.insertElement = function(element_name) {
 	var elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase()), h, tagName;
 
-	tinyMCEPopup.execCommand('mceBeginUndoLevel');
 	if (elm == null) {
 		var s = SXE.inst.selection.getContent();
 		if(s.length > 0) {
 			tagName = element_name;
 
-			if (tinymce.isIE && element_name.indexOf('html:') == 0)
-				element_name = element_name.substring(5).toLowerCase();
-
-			h = '<' + tagName + ' id="#sxe_temp_' + element_name + '#">' + s + '</' + tagName + '>';
-
-			tinyMCEPopup.execCommand('mceInsertContent', false, h);
-
-			var elementArray = tinymce.grep(SXE.inst.dom.select(element_name), function(n) {return n.id == '#sxe_temp_' + element_name + '#';});
+			insertInlineElement(element_name);
+			var elementArray = tinymce.grep(SXE.inst.dom.select(element_name));
 			for (var i=0; i<elementArray.length; i++) {
 				var elm = elementArray[i];
 
-				elm.id = '';
-				elm.setAttribute('id', '');
-				elm.removeAttribute('id');
+				if (SXE.inst.dom.getAttrib(elm, 'data-mce-new')) {
+					elm.id = '';
+					elm.setAttribute('id', '');
+					elm.removeAttribute('id');
+					elm.removeAttribute('data-mce-new');
 
-				setAllCommonAttribs(elm);
+					setAllCommonAttribs(elm);
+				}
 			}
 		}
 	} else {
@@ -185,8 +184,7 @@
 SXE.removeElement = function(element_name){
 	element_name = element_name.toLowerCase();
 	elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase());
-	if(elm && elm.nodeName == element_name.toUpperCase()){
-		tinyMCEPopup.execCommand('mceBeginUndoLevel');
+	if(elm && elm.nodeName.toUpperCase() == element_name.toUpperCase()){
 		tinyMCE.execCommand('mceRemoveNode', false, elm);
 		SXE.inst.nodeChanged();
 		tinyMCEPopup.execCommand('mceEndUndoLevel');
@@ -194,7 +192,7 @@
 }
 
 SXE.showRemoveButton = function() {
-		document.getElementById("remove").style.display = 'block';
+		document.getElementById("remove").style.display = '';
 }
 
 SXE.containsClass = function(elm,cl) {
@@ -218,4 +216,14 @@
 SXE.addClass = function(elm,cl) {
 	if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl;
 	return true;
-}
\ No newline at end of file
+}
+
+function insertInlineElement(en) {
+	var ed = tinyMCEPopup.editor, dom = ed.dom;
+
+	ed.getDoc().execCommand('FontName', false, 'mceinline');
+	tinymce.each(dom.select('span,font'), function(n) {
+		if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline')
+			dom.replace(dom.create(en, {'data-mce-new' : 1}), n, 1);
+	});
+}

--
Gitblit v1.9.1