Author: kevinshen
Date: 2009-05-14 09:59:25 +0200 (Thu, 14 May 2009)
New Revision: 35158

Added:
   CMSContainer/trunk/CMSContainer/cmsc/contentrepository/config/modules/
   
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/config/modules/contentelement.xml
   
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/ContentElementEventListener.java
   
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/ContentElementModule.java
Modified:
   
CMSContainer/trunk/CMSContainer/cmsc/basicmodel/src/webapp/editors/config/article/load_article.xml
Log:
CMSC-1020 Sorting inter article relations should be independent of source and 
destination

Modified: 
CMSContainer/trunk/CMSContainer/cmsc/basicmodel/src/webapp/editors/config/article/load_article.xml
===================================================================
--- 
CMSContainer/trunk/CMSContainer/cmsc/basicmodel/src/webapp/editors/config/article/load_article.xml
  2009-05-14 07:20:58 UTC (rev 35157)
+++ 
CMSContainer/trunk/CMSContainer/cmsc/basicmodel/src/webapp/editors/config/article/load_article.xml
  2009-05-14 07:59:25 UTC (rev 35158)
@@ -20,7 +20,7 @@
        <field name="body" />
        <field name="archivedate" />
 
-       <relation destination="article" role="posrel" />
+       <relation destination="article" role="posrel" searchdir="destination"/>
        <relation destination="attachments" role="posrel" />
        <relation destination="images" role="imagerel" />
        <relation destination="urls" role="posrel" />

Added: 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/config/modules/contentelement.xml
===================================================================
--- 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/config/modules/contentelement.xml
                            (rev 0)
+++ 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/config/modules/contentelement.xml
    2009-05-14 07:59:25 UTC (rev 35158)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//MMBase//DTD module config 1.0//EN" 
"http://www.mmbase.org/dtd/module_1_0.dtd";>
+<module maintainer="finalist.com" version="1">
+  <status>active</status>
+  <classfile>com.finalist.cmsc.repository.ContentElementModule</classfile>
+  <properties>
+  </properties>
+</module>

Added: 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/ContentElementEventListener.java
===================================================================
--- 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/ContentElementEventListener.java
                               (rev 0)
+++ 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/ContentElementEventListener.java
       2009-05-14 07:59:25 UTC (rev 35158)
@@ -0,0 +1,46 @@
+package com.finalist.cmsc.repository;
+
+import net.sf.mmapps.modules.cloudprovider.CloudProviderFactory;
+
+import org.mmbase.bridge.Cloud;
+import org.mmbase.bridge.Relation;
+import org.mmbase.core.event.Event;
+import org.mmbase.core.event.RelationEvent;
+import org.mmbase.core.event.RelationEventListener;
+import org.mmbase.module.core.MMBase;
+import org.mmbase.util.logging.Logger;
+import org.mmbase.util.logging.Logging;
+
+import com.finalist.cmsc.mmbase.RelationUtil;
+
+public class ContentElementEventListener implements RelationEventListener{
+   
+   protected final static String TYPE_CONTENT_ELEMENT = "contentelement";
+
+   private static final Logger log = 
Logging.getLoggerInstance(ContentElementEventListener.class.getName());
+
+   
+   public ContentElementEventListener() {
+      MMBase.getMMBase().addNodeRelatedEventsListener(TYPE_CONTENT_ELEMENT, 
this);
+      log.info("registered listener for: " + TYPE_CONTENT_ELEMENT);
+   }
+   public void notify(RelationEvent event) {
+      if("article".equalsIgnoreCase(event.getRelationSourceType()) && 
+            "article".equalsIgnoreCase(event.getRelationDestinationType()) && 
+            "posrel".equalsIgnoreCase(event.getNodeEvent().getBuilderName())) {
+         
+         int sourceNumber = event.getRelationSourceNumber();
+         int detinationNumber = event.getRelationDestinationNumber();
+         Cloud cloud = CloudProviderFactory.getCloudProvider().getCloud();
+         Relation  relation = 
RelationUtil.getRelation(cloud.getNodeManager("posrel"), detinationNumber, 
sourceNumber);
+         
+         if(event.getType() ==  Event.TYPE_NEW && relation == null) {
+            RelationUtil.createRelation(cloud.getNode(detinationNumber), 
cloud.getNode(sourceNumber), "posrel");
+         }
+         else if (relation != null && event.getType() == Event.TYPE_DELETE) {
+            relation.delete();
+         }
+      }
+   }
+
+}

Added: 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/ContentElementModule.java
===================================================================
--- 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/ContentElementModule.java
                              (rev 0)
+++ 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/ContentElementModule.java
      2009-05-14 07:59:25 UTC (rev 35158)
@@ -0,0 +1,15 @@
+package com.finalist.cmsc.repository;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.mmbase.module.Module;
+
+
+public class ContentElementModule extends Module {
+   
+   static Log log = LogFactory.getLog(ContentElementModule.class);
+   @Override
+   public void init() {
+       new ContentElementEventListener();
+   }
+}

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to