r1767 - in branches/bxe_2_0: mozile plugins

[email protected] Fri, 26 Oct 2007 10:45:47 +0200 (CEST)
Newsgroups gmane.editors.bitflux.cvs
Message-ID <[email protected]>
Author: chregu
Date: Fri Oct 26 10:45:47 2007
New Revision: 1767

Log:
fix BXEB-47 and BXEB-48
always append stuff from clipboard (except text only)


Modified:
   branches/bxe_2_0/mozile/mozCE.js
   branches/bxe_2_0/plugins/ClipboardPasteDialog.js

Modified: branches/bxe_2_0/mozile/mozCE.js
==============================================================================
--- branches/bxe_2_0/mozile/mozCE.js	(original)
+++ branches/bxe_2_0/mozile/mozCE.js	Fri Oct 26 10:45:47 2007
@@ -758,24 +758,24 @@
 /**
  * POST05: paste more than text
  */
-Selection.prototype.paste = function(paraElementVdom,selNode)
+Selection.prototype.paste = function(paraElementVdom,selNode,alwaysAppend)
 {
 	var clipboard = mozilla.getClipboard();
-	var content = clipboard.getData(MozClipboard.TEXT_FLAVOR);
+	var cntnt = clipboard.getData(MozClipboard.TEXT_FLAVOR);
 
 	
-	if (content.nodeType == 11 && content.firstChild.nodeType == 3 && content.childNodes.length == 1) {
+	if (cntnt.nodeType == 11 && cntnt.firstChild.nodeType == 3 && cntnt.childNodes.length == 1) {
 		
-		content.data = content.firstChild.data;
+		cntnt.data = cntnt.firstChild.data;
 	}
-	for (var i in content.childNodes) {
+	for (var i in cntnt.childNodes) {
 		
-		if (content.childNodes[i].nodeType == 1) {
-			content.childNodes[i].setBxeIds(true);
+		if (cntnt.childNodes[i].nodeType == 1) {
+			cntnt.childNodes[i].setBxeIds(true);
 		}
 	}
 	
-	if (content && content.data) {
+	if (cntnt && cntnt.data) {
 		var elementNameParent = null;
 		var elementNameGrandParent = null;
 		var elementNamespace = null;
@@ -802,39 +802,39 @@
 			elementName = bxe_config.options['autoParaElementName'];
 			elementNamespace = bxe_config.options['autoParaElementNamespace']
 		}
-		content.data = content.data.replace(/\r/g,"\n").replace(/\n+/g,"\n");
-		if (elementName && clipboard._system && content.data.search(/[\n]./) > -1) {
-			content = content.data;
-			content = content.replace(/&/g,"&amp;").replace(/</g,"&lt;");
+		cntnt.data = cntnt.data.replace(/\r/g,"\n").replace(/\n+/g,"\n");
+		if (elementName && clipboard._system && (alwaysAppend || cntnt.data.search(/[\n]./) > -1)) {
+			cntnt = cntnt.data;
+			cntnt = cntnt.replace(/&/g,"&amp;").replace(/</g,"&lt;");
 			var elementName_start = elementName;
 			if (elementNamespace) {
 				elementName_start += " xmlns='"+elementNamespace +"'";
 			}
 			if (elementNameGrandParent) {
-				content = content + "\n";
-				var row = content.match(/(.*[\n$]+)/g);
-				var content = "<" + elementNameGrandParent;
+				cntnt = cntnt + "\n";
+				var row = cntnt.match(/(.*[\n$]+)/g);
+				var cntnt = "<" + elementNameGrandParent;
 				if (elementNamespace) {
-					content2 += " xmlns='"+elementNamespace +"'";
+					cntnt2 += " xmlns='"+elementNamespace +"'";
 				}
-				content += ">";
+				cntnt += ">";
 				var delimiter = eval("'" + clipboard.delimiter + "'");
 				var _starti = 0;
 				if (paraElementVdom.bxeClipboardFirstChild) {
 					if (! paraElementVdom.bxeClipboardEmptyFirstRow ) {
 						_starti = 1;
 					}
-					content += "<"+ paraElementVdom.bxeClipboardFirstChild +">";
+					cntnt += "<"+ paraElementVdom.bxeClipboardFirstChild +">";
 					
 					var cell = row[0].split(delimiter);
 					for (var j = 0; j < cell.length; j++) {
-						content += "<"+paraElementVdom.bxeClipboardFirstGrandChild + ">";
+						cntnt += "<"+paraElementVdom.bxeClipboardFirstGrandChild + ">";
 						if (! paraElementVdom.bxeClipboardEmptyFirstRow  ) {
-							content += cell[j];
+							cntnt += cell[j];
 						}
-						content += "</" + paraElementVdom.bxeClipboardFirstGrandChild + ">\n";
+						cntnt += "</" + paraElementVdom.bxeClipboardFirstGrandChild + ">\n";
 					}
-					content += "</"+ paraElementVdom.bxeClipboardFirstChild +">\n";
+					cntnt += "</"+ paraElementVdom.bxeClipboardFirstChild +">\n";
 					
 				}
 				//find largest row
@@ -848,41 +848,46 @@
 					}
 				}
 				for (var i = _starti; i < row.length; i++) {
-					content += "<"+ elementNameParent +">";
+					cntnt += "<"+ elementNameParent +">";
 					var cell = row[i].split(delimiter);
 					for (var j = 0; j < max; j++) {
-						content += "<"+elementName_start + ">";
+						cntnt += "<"+elementName_start + ">";
 						if (cell[j]) {
-							content += cell[j];
+							cntnt += cell[j];
 						} else {
-							content += "#";
+							cntnt += "#";
 						}
 							
-						content += "</" + elementName + ">\n";
+						cntnt += "</" + elementName + ">\n";
 					}
-					content += "</"+ elementNameParent +">\n";
+					cntnt += "</"+ elementNameParent +">\n";
 				}
-				content += "</" + elementNameGrandParent + ">\n";
+				cntnt += "</" + elementNameGrandParent + ">\n";
 			} else {
-				content = content.replace(/\n+$/,"");
-				content = "<"+elementName_start + ">"+ content.replace(/[\n]+/g,"</"+elementName+"><"+elementName_start+" >")+"</"+elementName+">";
+				cntnt = cntnt.replace(/\n+$/,"");
+				cntnt = "<"+elementName_start + ">"+ cntnt.replace(/[\n]+/g,"</"+elementName+"><"+elementName_start+" >")+"</"+elementName+">";
 				
 				if (elementNameParent) {
-					var content2 = "<" + elementNameParent;
+					var cntnt2 = "<" + elementNameParent;
 					if (elementNamespace) {
-						content2 += " xmlns='"+elementNamespace +"'";
+						cntnt2 += " xmlns='"+elementNamespace +"'";
 					}
-					content = content2 + ">" + content + "</" + elementNameParent + ">";
+					cntnt = cntnt2 + ">" + cntnt + "</" + elementNameParent + ">";
 				}
 			}
-			
-			bxe_insertContent_async(content,BXE_SELECTION,BXE_SPLIT_IF_INLINE,selNode._node);
-			
+			if (alwaysAppend) {
+				var docfrag = cntnt.convertToXML();
+				var e = {'additionalInfo': {'node': docfrag ,'appendToNode': selNode} };
+				
+				bxe_appendNode(e);
+			} else {
+				bxe_insertContent_async(cntnt,BXE_SELECTION,BXE_SPLIT_IF_INLINE,selNode._node);
+			}
 		} else {
-			window.getSelection().insertNode(content);
+			window.getSelection().insertNode(cntnt);
 		}
 	} else {
-		window.getSelection().insertNode(content);
+		window.getSelection().insertNode(cntnt);
 	} 
 	
 	var node = window.getSelection().anchorNode;

Modified: branches/bxe_2_0/plugins/ClipboardPasteDialog.js
==============================================================================
--- branches/bxe_2_0/plugins/ClipboardPasteDialog.js	(original)
+++ branches/bxe_2_0/plugins/ClipboardPasteDialog.js	Fri Oct 26 10:45:47 2007
@@ -49,7 +49,11 @@
 		var content = clipboard.setData(values.clipboard);
 		clipboard._system = true;
 		var mod = mozilla.getWidgetModalBox();
-		window.getSelection().paste(_eles[values['element']],mod.selNode);
+		var _append = true;
+		if (_eles[values['element']] == '__text__') {
+			_append = false;
+		}
+		window.getSelection().paste(_eles[values['element']],mod.selNode,_append);
 	});
 	
 	var ac = selNode.parentNode.allowedChildren;
-- 
Bx-editor-cvs mailing list
[email protected]
http://lists.bitflux.ch/cgi-bin/listinfo/bx-editor-cvs