Update of
/var/cvs/contributions/CMSContainer/cmsc/richtext/src/java/com/finalist/cmsc/richtext
In directory
james.mmbase.org:/tmp/cvs-serv17953/richtext/src/java/com/finalist/cmsc/richtext
Modified Files:
Tag: b1_6
RichText.java RichTextGetProcessor.java
Log Message:
CMSC-1298 Clone channel feature
See also:
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/richtext/src/java/com/finalist/cmsc/richtext
See also: http://www.mmbase.org/jira/browse/CMSC-1298
Index: RichText.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/richtext/src/java/com/finalist/cmsc/richtext/RichText.java,v
retrieving revision 1.9.2.2
retrieving revision 1.9.2.3
diff -u -b -r1.9.2.2 -r1.9.2.3
--- RichText.java 5 Mar 2009 08:00:54 -0000 1.9.2.2
+++ RichText.java 25 Mar 2009 08:56:43 -0000 1.9.2.3
@@ -15,7 +15,6 @@
*/
package com.finalist.cmsc.richtext;
-import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
@@ -101,7 +100,7 @@
return doc;
}
- public final static Object stripLinkAndImage(Node sourceNode,Field
field,Map<Integer, Integer> copiedNodes) {
+ public final static Object stripLinkAndImage(Node sourceNode,Node
destinationNode,Field field,Map<Integer, Integer> copiedNodes) {
DataType dataType = field.getDataType();
while (StringUtils.isEmpty(dataType.getName())) {
dataType = dataType.getOrigin();
@@ -116,10 +115,12 @@
if (hasRichtextItems(fieldValue)) {
Document doc = getRichTextDocument(fieldValue);
RichTextGetProcessor richTextGetProcessor = new
RichTextGetProcessor();
- richTextGetProcessor.resolve(sourceNode,doc,copiedNodes);
+
richTextGetProcessor.resolve(sourceNode,destinationNode,doc,copiedNodes);
String out = getRichTextString(doc);
out = WordHtmlCleaner.fixEmptyAnchors(out);
+ if(log.isDebugEnabled()) {
log.debug("final richtext text = " + out);
+ }
return out;
}
}
Index: RichTextGetProcessor.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/richtext/src/java/com/finalist/cmsc/richtext/RichTextGetProcessor.java,v
retrieving revision 1.14.2.2
retrieving revision 1.14.2.3
diff -u -b -r1.14.2.2 -r1.14.2.3
--- RichTextGetProcessor.java 5 Mar 2009 08:00:54 -0000 1.14.2.2
+++ RichTextGetProcessor.java 25 Mar 2009 08:56:43 -0000 1.14.2.3
@@ -13,7 +13,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-
+import java.util.ArrayList;
import org.apache.commons.lang.StringUtils;
import org.mmbase.bridge.Cloud;
import org.mmbase.bridge.Field;
@@ -30,7 +30,6 @@
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
-
import com.finalist.cmsc.mmbase.RelationUtil;
import com.finalist.cmsc.mmbase.ResourcesUtil;
@@ -307,9 +306,9 @@
return ResourcesUtil.getServletPathWithAssociation("content",
"/content/*", id, title);
}
- public void resolve(Node node,Document doc,Map<Integer, Integer>
copiedNodes) {
- resolveLinks(doc, node,copiedNodes);
- resolveImages(doc, node,copiedNodes);
+ public void resolve(Node sourceNode,Node destinationNode,Document
doc,Map<Integer, Integer> copiedNodes) {
+ resolveLinks(doc,sourceNode,destinationNode,copiedNodes);
+ resolveImages(doc,sourceNode,destinationNode,copiedNodes);
}
/**
* To resolve the links in Richtext fields
@@ -318,17 +317,20 @@
* @param copiedNodes
* @param channels
*/
- public static void resolveLinks(Document doc, Node sourceNode,Map<Integer,
Integer> copiedNodes) {
+ public static void resolveLinks(Document doc, Node sourceNode,Node
destinationNode,Map<Integer, Integer> copiedNodes) {
if (doc == null) {
return;
}
// collect <A> tags
org.w3c.dom.NodeList nl = doc.getElementsByTagName("a");
- log.debug("number of links: " + nl.getLength());
-
- for (int i = 0, len = nl.getLength(); i < len; i++) {
- Element link = (Element) nl.item(i);
+ List<org.w3c.dom.Node> links = new ArrayList<org.w3c.dom.Node>();
+ int len = nl.getLength();
+ for(int i = 0 ; i < len ; i++) {
+ links.add(nl.item(i));
+ }
+ for (int i = 0; i < len; i++) {
+ Element link = (Element) links.get(i);
if (link.hasAttribute(RichText.DESTINATION_ATTR)
&&
"undefined".equalsIgnoreCase(link.getAttribute(RichText.DESTINATION_ATTR))) {
link.removeAttribute(RichText.DESTINATION_ATTR);
@@ -354,7 +356,10 @@
else {
Integer destination = copiedNodes.get(source);
if (destination != null && destination > 0 &&
sourceNode.getCloud().hasNode(destination)) {
- Relation rel = RelationUtil.createRelation(sourceNode,
sourceNode.getCloud().getNode(destination), "inlinerel");
+ Relation rel =
RelationUtil.getRelation(sourceNode.getCloud().getNodeManager("inlinerel"),
destinationNode.getNumber(), destination);
+ if(rel == null) {
+ rel = RelationUtil.createRelation(destinationNode,
sourceNode.getCloud().getNode(destination), "inlinerel");
+ }
link.setAttribute(RichText.DESTINATION_ATTR,
String.valueOf(destination));
link.setAttribute(RichText.RELATIONID_ATTR,
String.valueOf(rel.getNumber()));
}
@@ -372,14 +377,19 @@
* @param copiedNodes
* @param channels
*/
- public static void resolveImages(Document doc,Node sourceNode,Map<Integer,
Integer> copiedNodes) {
+ public static void resolveImages(Document doc,Node sourceNode,Node
destinationNode,Map<Integer, Integer> copiedNodes) {
if (doc == null) {
return;
}
org.w3c.dom.NodeList nl = doc.getElementsByTagName("img");
log.debug("number of images: " + nl.getLength());
- for (int i = 0, len = nl.getLength(); i < len; i++) {
- Element image = (Element) nl.item(i);
+ List<org.w3c.dom.Node> links = new ArrayList<org.w3c.dom.Node>();
+ int len = nl.getLength();
+ for(int i = 0 ; i < len ; i++) {
+ links.add(nl.item(i));
+ }
+ for (int i = 0; i < len; i++) {
+ Element image = (Element) links.get(i);
if (image.hasAttribute(RichText.DESTINATION_ATTR)
&&
"undefined".equalsIgnoreCase(image.getAttribute(RichText.DESTINATION_ATTR))) {
@@ -406,7 +416,10 @@
else {
Integer destination = copiedNodes.get(source);
if (destination != null && destination > 0 &&
sourceNode.getCloud().hasNode(destination)) {
- Relation rel = RelationUtil.createRelation(sourceNode,
sourceNode.getCloud().getNode(destination), "imageinlinerel");
+ Relation rel =
RelationUtil.getRelation(sourceNode.getCloud().getNodeManager("imageinlinerel"),
destinationNode.getNumber(), destination);
+ if(rel == null) {
+ rel = RelationUtil.createRelation(destinationNode,
sourceNode.getCloud().getNode(destination), "imageinlinerel");
+ }
image.setAttribute(RichText.DESTINATION_ATTR,
String.valueOf(destination));
image.setAttribute(RichText.RELATIONID_ATTR,
String.valueOf(rel.getNumber()));
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs