Update of
/var/cvs/contributions/CMSContainer/cmsc/richtext/src/java/com/finalist/cmsc/richtext
In directory
james.mmbase.org:/tmp/cvs-serv18004/richtext/src/java/com/finalist/cmsc/richtext
Modified Files:
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.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- RichText.java 5 Mar 2009 08:01:38 -0000 1.11
+++ RichText.java 25 Mar 2009 08:57:36 -0000 1.12
@@ -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();
@@ -115,11 +114,11 @@
try {
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);
- 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.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- RichTextGetProcessor.java 5 Mar 2009 08:01:38 -0000 1.16
+++ RichTextGetProcessor.java 25 Mar 2009 08:57:36 -0000 1.17
@@ -9,6 +9,7 @@
*/
package com.finalist.cmsc.richtext;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -307,9 +308,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 +319,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 +358,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 +379,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 +418,11 @@
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