Index: /MediaWiki/trunk/extensions/FCKeditor/plugins/mediawiki/fckplugin.js
===================================================================
--- /MediaWiki/trunk/extensions/FCKeditor/plugins/mediawiki/fckplugin.js	(revision 953)
+++ /MediaWiki/trunk/extensions/FCKeditor/plugins/mediawiki/fckplugin.js	(revision 954)
@@ -384,4 +384,7 @@
 
 								case 'fck_mw_template' :
+									stringBuilder.push( FCKTools.HTMLDecode(htmlNode.innerHTML) ) ;
+									return ;
+								
 								case 'fck_mw_magic' :
 									stringBuilder.push( htmlNode.innerHTML ) ;
@@ -450,23 +453,33 @@
 			// Text Node.
 			case 3 :
-				var textValue = htmlNode.nodeValue.replace( /[\n\t]/g, ' ' ) ;
-
-				textValue = FCKTools.HTMLEncode( textValue ) ;
-
-				textValue = textValue.replace( /\u00A0/g, '&nbsp;' ) ;
-
-				if ( !htmlNode.previousSibling ||
+
+				var parentIsSpecialTag = htmlNode.parentNode.getAttribute( '_fck_mw_customtag' ) ; 
+				var textValue = htmlNode.nodeValue;
+
+				if ( !parentIsSpecialTag ) 
+				{
+					textValue = textValue.replace( /[\n\t]/g, ' ' ) ; 
+					textValue = FCKTools.HTMLEncode( textValue ) ;
+					textValue = textValue.replace( /\u00A0/g, '&nbsp;' ) ;
+
+					if ( !htmlNode.previousSibling ||
 					( stringBuilder.length > 0 && stringBuilder[ stringBuilder.length - 1 ].EndsWith( '\n' ) ) )
-				{
-					textValue = textValue.LTrim() ;
-				}
-
-				if ( !htmlNode.nextSibling )
-					textValue = textValue.RTrim() ;
-
-				textValue = textValue.replace( / {2,}/g, ' ' ) ;
-
-				if ( this._IsInsideCell )
-					textValue = textValue.replace( /\|/g, '&#124;' ) ;
+					{
+						textValue = textValue.LTrim() ;
+					}
+
+					if ( !htmlNode.nextSibling )
+						textValue = textValue.RTrim() ;
+
+					textValue = textValue.replace( / {2,}/g, ' ' ) ;
+
+					if ( this._IsInsideCell )
+						textValue = textValue.replace( /\|/g, '&#124;' ) ;
+	
+				}
+				else 
+				{
+					textValue = FCKTools.HTMLDecode( textValue ) ;
+				}
 
 				stringBuilder.push( textValue ) ;
