Update of 
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms
In directory james.mmbase.org:/tmp/cvs-serv493/forms

Modified Files:
        ChannelDelete.java LinkToChannelAction.java 
Log Message:
CMSC-681  Asset -Deleting  the Assets  when deleting the  channel


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms
See also: http://www.mmbase.org/jira/browse/CMSC-681


Index: ChannelDelete.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms/ChannelDelete.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- ChannelDelete.java  1 Oct 2008 11:04:48 -0000       1.10
+++ ChannelDelete.java  18 Nov 2008 01:52:47 -0000      1.11
@@ -96,6 +96,14 @@
             moveElementToTrash(cloud, channelNode, elementNode);
          }
       }
+      // get relations of content elements to channels other then the 
creationchannel
+      NodeList createdAssetElements = 
RepositoryUtil.getCreatedAssetElements(channelNode);
+
+      for (Iterator<Node> iter = createdAssetElements.iterator(); 
iter.hasNext();) {
+         Node elementNode = iter.next();
+         // get relations
+         moveAssetElementToTrash(cloud, channelNode, elementNode);
+      }
       deleteChannel(channelNode);
    }
 
@@ -106,18 +114,21 @@
          deleteAction(cloud, childChannel);
       }
       
-      NodeList createdElements = 
RepositoryUtil.getCreatedElements(channelNode);
-      for (Iterator<Node> iter = createdElements.iterator(); iter.hasNext();) {
+      NodeList createdContentElements = 
RepositoryUtil.getCreatedElements(channelNode);
+      for (Iterator<Node> iter = createdContentElements.iterator(); 
iter.hasNext();) {
          Node objectNode = iter.next();
          moveElementToTrash(cloud, channelNode, objectNode);
       }
+      NodeList createdAssetElements = 
RepositoryUtil.getCreatedAssetElements(channelNode);
+      for (Iterator<Node> iter = createdAssetElements.iterator(); 
iter.hasNext();) {
+         Node objectNode = iter.next();
+         moveAssetElementToTrash(cloud, channelNode, objectNode);
+      }
       deleteChannel(channelNode);
    }
 
    private void deleteChannel(Node channelNode) {
-      Publish.remove(channelNode);
-      Publish.unpublish(channelNode);
-      Workflow.remove(channelNode);
+      unpublish(channelNode);
       
       channelNode.delete(true);
    }
@@ -128,24 +139,34 @@
       RepositoryUtil.removeCreationRelForContent(elementNode);
       RepositoryUtil.addCreationChannel(elementNode, newChannelNode);
 
-      // unpublish and remove from workflow
-      Publish.remove(elementNode);
-      Publish.unpublish(elementNode);
-      Workflow.remove(elementNode);
+      unpublish(elementNode);
    }
 
    private void moveElementToTrash(Cloud cloud, Node channelNode, Node 
elementNode) {
-      // remove the element
+      // remove the Content element
       RepositoryUtil.removeContentFromChannel(elementNode, channelNode);
       RepositoryUtil.removeCreationRelForContent(elementNode);
 
       RepositoryUtil.removeContentFromAllChannels(elementNode);
       RepositoryUtil.addContentToChannel(elementNode, 
RepositoryUtil.getTrashNode(cloud));
 
+      //remove the Asset Element
+      RepositoryUtil.removeContentFromChannel(elementNode, channelNode);
+      unpublish(elementNode);
+   }
+   private void moveAssetElementToTrash(Cloud cloud, Node channelNode, Node 
elementNode) {
+
+      //remove the Asset Element
+      RepositoryUtil.removeAssetFromChannel(elementNode, channelNode);
+      RepositoryUtil.removeCreationRelForAsset(elementNode);
+      RepositoryUtil.addAssetToChannel(elementNode, 
RepositoryUtil.getTrashNode(cloud));
       // unpublish and remove from workflow
+      unpublish(elementNode);
+   }
+
+   private void unpublish(Node elementNode) {
       Publish.remove(elementNode);
       Publish.unpublish(elementNode);
       Workflow.remove(elementNode);
    }
-    
 }


Index: LinkToChannelAction.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms/LinkToChannelAction.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- LinkToChannelAction.java    27 Jun 2008 01:51:56 -0000      1.12
+++ LinkToChannelAction.java    18 Nov 2008 01:52:47 -0000      1.13
@@ -15,8 +15,10 @@
 
 import org.apache.struts.action.ActionForward;
 import org.apache.struts.action.ActionMapping;
+import org.apache.struts.util.LabelValueBean;
 import org.mmbase.bridge.*;
 
+import com.finalist.cmsc.repository.AssetElementUtil;
 import com.finalist.cmsc.repository.RepositoryUtil;
 import com.finalist.cmsc.struts.MMBaseFormlessAction;
 import com.finalist.cmsc.services.publish.Publish;
@@ -41,10 +43,28 @@
          if (RepositoryUtil.isCreationChannel(objectNode, channelNode)) {
             NodeList contentchannels = 
RepositoryUtil.getContentChannelsForContent(objectNode);
             if (contentchannels.size() <= 1) {
+               List<NodeManager> types = AssetElementUtil.getAssetTypes(cloud);
+               List<String> hiddenTypes = 
AssetElementUtil.getHiddenAssetTypes();
+               boolean isAssetObject = false;
+               for (NodeManager manager : types) {
+                  String name = manager.getName();
+                  if (!hiddenTypes.contains(name)) {
+                     if(name.equals(objectNode.getNodeManager().getName())) {
+                        isAssetObject = true;
+                        break;
+                     }
+                  }
+               }
+               if (isAssetObject) { 
+                  RepositoryUtil.removeAssetFromChannel(objectNode, 
channelNode);
+                  RepositoryUtil.removeCreationRelForAsset(objectNode);
+                  RepositoryUtil.addAssetToChannel(objectNode, 
RepositoryUtil.getTrashNode(cloud));
+               }
+               else {
                RepositoryUtil.removeContentFromChannel(objectNode, 
channelNode);
                RepositoryUtil.removeCreationRelForContent(objectNode);
                RepositoryUtil.addContentToChannel(objectNode, 
RepositoryUtil.getTrash(cloud));
-
+               }
                // unpublish and remove from workflow
                Publish.remove(objectNode);
                Publish.unpublish(objectNode);
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to