Update of /var/cvs/applications/richtext/src/org/mmbase/richtext/processors/xml
In directory james.mmbase.org:/tmp/cvs-serv10090
Modified Files:
Kupu.java
Log Message:
support for flash. MMB-1720
See also:
http://cvs.mmbase.org/viewcvs/applications/richtext/src/org/mmbase/richtext/processors/xml
See also: http://www.mmbase.org/jira/browse/MMB-1720
Index: Kupu.java
===================================================================
RCS file:
/var/cvs/applications/richtext/src/org/mmbase/richtext/processors/xml/Kupu.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- Kupu.java 25 Mar 2008 18:00:14 -0000 1.2
+++ Kupu.java 19 Sep 2008 16:03:21 -0000 1.3
@@ -31,7 +31,7 @@
/**
* This implements 'Kupu' Mode of [EMAIL PROTECTED] MmxfSetString}.
* @author Michiel Meeuwissen
- * @version $Id: Kupu.java,v 1.2 2008/03/25 18:00:14 michiel Exp $
+ * @version $Id: Kupu.java,v 1.3 2008/09/19 16:03:21 michiel Exp $
*/
class Kupu {
@@ -409,6 +409,48 @@
return true;
}
+ private boolean handleFlash(String href, Element a, List<Map.Entry<String,
Node>> usedFlash,
+ NodeList relatedFlash, Node editedNode) {
+ Cloud cloud = editedNode.getCloud();
+ HttpServletRequest request = (HttpServletRequest)
cloud.getProperty("request");
+ NodeManager flashobjects = cloud.getNodeManager("flashobjects");
+ String flashIntro = request.getContextPath() +
"/mmbase/kupu/mmbase/icons/flash.png?o=";
+ if (! href.startsWith(flashIntro)) {
+ log.info("href " + href + " does not start with " + flashIntro +
"hence this is not a flash object");
+ return false;
+ }
+ log.info("Found flash " + href);
+ String nodeNumber = href.substring(flashIntro.length());
+ Node flash = cloud.getNode(nodeNumber);
+ String klass = a.getAttribute("class");
+ String id = a.getAttribute("id");
+ usedFlash.add(new Entry(id, flash));
+ NodeList linkedFlash = Util.get(cloud, relatedFlash, "idrel.id",
a.getAttribute("id"));
+ if (! linkedFlash.isEmpty()) {
+ // ok, already related!
+ log.service("" + flash + " image already correctly related,
nothing needs to be done");
+ Node idrel = linkedFlash.getNode(0).getNodeValue("idrel");
+ if (!idrel.getStringValue("class").equals(klass)) {
+ idrel.setStringValue("class", klass);
+ idrel.commit();
+ }
+
+ } else {
+ log.service(" to" + flash + ", creating new relation");
+ RelationManager rm =
cloud.getRelationManager(editedNode.getNodeManager(), flashobjects, "idrel");
+ Relation newIdRel = rm.createRelation(editedNode, flash);
+ newIdRel.setStringValue("id", id);
+ newIdRel.setStringValue("class", klass);
+ newIdRel.commit();
+ }
+ a.removeAttribute("src");
+ a.removeAttribute("height");
+ a.removeAttribute("width");
+ a.removeAttribute("class");
+ a.removeAttribute("alt");
+ return true;
+ }
+
private boolean handleAttachment(Matcher matcher, Element a,
List<Map.Entry<String, Node>> usedAttachments, NodeList relatedAttachments,
Node editedNode) {
if (! matcher.matches()) return false;
if (! matcher.group(1).equals("attachments")) return false;
@@ -579,6 +621,7 @@
} else {
Cloud cloud = editedNode.getCloud();
NodeManager images = cloud.getNodeManager("images");
+ NodeManager flashobjects = cloud.getNodeManager("flashobjects");
NodeManager attachments = cloud.getNodeManager("attachments");
NodeManager urls = cloud.getNodeManager("urls");
NodeManager blocks = cloud.getNodeManager("blocks");
@@ -588,16 +631,19 @@
NodeList relatedImages = Util.getRelatedNodes(editedNode,
images);
- List<Map.Entry<String, Node>> usedImages = new ArrayList();
+ List<Map.Entry<String, Node>> usedImages = new
ArrayList<Map.Entry<String, Node>>();
+
+ NodeList relatedFlash = Util.getRelatedNodes(editedNode,
flashobjects);
+ List<Map.Entry<String, Node>> usedFlash = new
ArrayList<Map.Entry<String, Node>>();
NodeList relatedAttachments = Util.getRelatedNodes(editedNode,
attachments);
- List<Map.Entry<String, Node>> usedAttachments = new ArrayList();
+ List<Map.Entry<String, Node>> usedAttachments = new
ArrayList<Map.Entry<String, Node>>();
NodeList relatedBlocks = Util.getRelatedNodes(editedNode,
blocks);
- List<Map.Entry<String, Node>> usedBlocks = new ArrayList();
+ List<Map.Entry<String, Node>> usedBlocks = new
ArrayList<Map.Entry<String, Node>>();
NodeList relatedUrls = Util.getRelatedNodes(editedNode,
urls);
- List<Map.Entry<String, Node>> usedUrls = new ArrayList();
+ List<Map.Entry<String, Node>> usedUrls = new
ArrayList<Map.Entry<String, Node>>();
NodeList relatedTexts;
List<Map.Entry<String, Node>> usedTexts;
@@ -628,6 +674,8 @@
Matcher mmbaseMatcher = mmbaseUrl.matcher(href);
if (handleImage(href, a, usedImages, relatedImages,
editedNode)) { // found an image!
continue;
+ } else if (handleFlash(href, a, usedFlash, relatedFlash,
editedNode)) { // found an image!
+ continue;
} else if (handleAttachment(mmbaseMatcher, a,
usedAttachments, relatedAttachments, editedNode)) {
continue;
} else if (handleText(mmbaseMatcher, a, usedTexts,
relatedTexts, editedNode)) {
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs