r1498 - in branches/bxe_2_0: mozile plugins relaxng

[email protected] Mon, 5 Jun 2006 11:15:43 +0200 (CEST)
Newsgroups gmane.editors.bitflux.cvs
Message-ID <[email protected]>
Author: chregu
Date: Mon Jun  5 11:15:41 2006
New Revision: 1498

Modified:
   branches/bxe_2_0/mozile/mozCE.js
   branches/bxe_2_0/plugins/ClipboardPasteDialog.js
   branches/bxe_2_0/relaxng/RelaxNG.js
Log:
make clipboard chooser work


Modified: branches/bxe_2_0/mozile/mozCE.js
==============================================================================
--- branches/bxe_2_0/mozile/mozCE.js	(original)
+++ branches/bxe_2_0/mozile/mozCE.js	Mon Jun  5 11:15:41 2006
@@ -709,7 +709,7 @@
 /**
  * POST05: paste more than text
  */
-Selection.prototype.paste = function()
+Selection.prototype.paste = function(paraElementVdom)
 {
 	var clipboard = mozilla.getClipboard();
 	var content = clipboard.getData(MozClipboard.TEXT_FLAVOR);
@@ -727,16 +727,34 @@
 	}
 	
 	if (content && content.data) {
-		var elementName = bxe_config.options['autoParaElementName'];
+		var elementNameParent = null;
+		var elementNamespace = null;
+			
+		if (paraElementVdom) {
+			if (paraElementVdom.bxeClipboardChild) {
+				var elementName = paraElementVdom.bxeClipboardChild;
+				elementNameParent = paraElementVdom.nodeName;
+			} else {
+				var elementName = paraElementVdom.nodeName;
+			}
+		} else {
+			var elementName = bxe_config.options['autoParaElementName'];
+			elementNamespace = bxe_config.options['autoParaElementNamespace']
+			
+		}
+		
 		if (elementName && clipboard._system && content.data.search(/[\n\r]./) > -1) {
 			content = content.data;
 			content = content.replace(/&/g,"&amp;").replace(/</g,"&lt;");
-			var elementNamespace = bxe_config.options['autoParaElementNamespace']
 			var elementName_start = elementName;
 			if (elementNamespace) {
 				elementName_start += " xmlns='"+elementNamespace +"'";
 			}
 			content = "<"+elementName_start + ">"+ content.replace(/[\n\r]+/g,"</"+elementName+"><"+elementName_start+" >")+"</"+elementName+">";
+			
+			if (elementNameParent) {
+				content = "<" + elementNameParent + ">" + content + "</" + elementNameParent + ">";
+			}
 			bxe_insertContent_async(content,BXE_SELECTION,BXE_SPLIT_IF_INLINE);
 		} else {
 			window.getSelection().insertNode(content);

Modified: branches/bxe_2_0/plugins/ClipboardPasteDialog.js
==============================================================================
--- branches/bxe_2_0/plugins/ClipboardPasteDialog.js	(original)
+++ branches/bxe_2_0/plugins/ClipboardPasteDialog.js	Mon Jun  5 11:15:41 2006
@@ -1,7 +1,7 @@
 function BxeClipboardPasteDialog() {
 	
 	this.init = function (options) {
-		
+		 
 	}
 	
 	this.start = function() {
@@ -27,16 +27,33 @@
 		return false;
 	}
 	
+	var cssr = sel.getEditableRange();
+	var selNode = cssr.startContainer.XMLNode;
+	if (selNode.nodeType != 1) {
+		var selNode = selNode.parentNode;
+	}
+
 	var mod = mozilla.getWidgetModalBox("Paste here", function(values) {
 		
 		var clipboard = mozilla.getClipboard();
 		var content = clipboard.setData(values.clipboard);
 		clipboard._system = true;
-		window.getSelection().paste();
+		window.getSelection().paste(_eles[values['element']]);
 	});
 	
+	var ac = selNode.parentNode.allowedChildren;
+	var _chooser = new Array();
+	var _eles = new Array();
+	for (i = 0; i < ac.length; i++) {
+		if (ac[i].nodeType != 3 && ac[i].vdom.bxeClipboard ) {
+			_chooser.push(ac[i].vdom.bxeName);
+			_eles[ac[i].vdom.bxeName] = ac[i].vdom;
+		}
+	}
+	
 	
 	mod.addItem("clipboard", "", "textarea");
+	mod.addItem("element", "", "select",null,_chooser,false);
 	mod.show(100,50,"fixed");
 	
 }

Modified: branches/bxe_2_0/relaxng/RelaxNG.js
==============================================================================
--- branches/bxe_2_0/relaxng/RelaxNG.js	(original)
+++ branches/bxe_2_0/relaxng/RelaxNG.js	Mon Jun  5 11:15:41 2006
@@ -462,6 +462,15 @@
 				case "tabletype":
 					this.bxeTabletype = childNodes[i].firstChild.data;
 					break;
+				case "clipboard":
+					this.bxeClipboard = childNodes[i].firstChild.data;
+					if (childNodes[i].hasAttribute("child")) {
+						this.bxeClipboardChild = childNodes[i].getAttribute("child")
+					} else {
+						this.bxeClipboardChild  = false;
+					}
+						
+					break;
 			}
 		}
 		
-- 
Bx-editor-cvs mailing list
[email protected]
http://lists.bitflux.ch/cgi-bin/listinfo/bx-editor-cvs