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
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to