svn commit: r499256 - in /ofbiz/trunk/applications/content: script/org/ofbiz/content/blog/ servicedef/ src/org/ofbiz/content/ src/org/ofbiz/content/blog/ src/org/ofbiz/content/content/

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r499256 - in /ofbiz/trunk/applications/content: script/org/ofbiz/content/blog/ servicedef/ src/org/ofbiz/content/ src/org/ofbiz/content/blog/ src/org/ofbiz/content/content/

byersa-3
Author: byersa
Date: Tue Jan 23 20:49:50 2007
New Revision: 499256

URL: http://svn.apache.org/viewvc?view=rev&rev=499256
Log:
Changes to ContentManagementServices.persistContentAndAssoc to comply with change of subcontent "direction".
Some changes to that service def. Since there were service defs in there for BlogServices.java/xml, those were included too.

Added:
    ofbiz/trunk/applications/content/script/org/ofbiz/content/blog/
    ofbiz/trunk/applications/content/script/org/ofbiz/content/blog/BlogServices.xml
    ofbiz/trunk/applications/content/src/org/ofbiz/content/blog/
    ofbiz/trunk/applications/content/src/org/ofbiz/content/blog/BlogServices.java
Modified:
    ofbiz/trunk/applications/content/servicedef/services.xml
    ofbiz/trunk/applications/content/src/org/ofbiz/content/ContentManagementServices.java
    ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentWorker.java

Added: ofbiz/trunk/applications/content/script/org/ofbiz/content/blog/BlogServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/script/org/ofbiz/content/blog/BlogServices.xml?view=auto&rev=499256
==============================================================================
--- ofbiz/trunk/applications/content/script/org/ofbiz/content/blog/BlogServices.xml (added)
+++ ofbiz/trunk/applications/content/script/org/ofbiz/content/blog/BlogServices.xml Tue Jan 23 20:49:50 2007
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright 2001-2006 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not
+use this file except in compliance with the License. You may obtain a copy of
+the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+License for the specific language governing permissions and limitations
+under the License.
+-->
+<simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/simple-methods.xsd">
+    <simple-method method-name="getOwnedOrPublishedBlogEntries" short-description="Get blog entries that the user owns or are published">
+        <log level="info" message="parameters: ${parameters}"/>
+        <entity-condition entity-name="ContentAssocViewTo" use-cache="false"  list-name="unfilteredList" >
+            <condition-list combine="and">
+                <condition-expr field-name="contentIdStart" operator="equals" env-name="parameters.contentId" />
+                <condition-expr field-name="caContentAssocTypeId" operator="equals" value="PUBLISH_LINK" />
+                <condition-expr field-name="caThruDate" operator="equals" value=""/>
+            </condition-list>
+            <order-by field-name="caFromDate DESC"/>
+        </entity-condition>
+        <log level="info" message="unfilteredList: ${unfilteredList}"/>
+        <set field="mapIn.targetOperationList[]" value="CONTENT_VIEW"/>
+        <set field="mapIn.targetOperationList[]" value="CONTENT_UPDATE"/>
+        <set field="blogList[]"/>
+     <iterate entry-name="view" list-name="unfilteredList">
+        <make-value entity-name="Content" value-name="content"/>
+        <set-nonpk-fields value-name="content" map-name="view"/>
+        <set-pk-fields value-name="content" map-name="view"/>
+         <set field="mapIn.currentContent" from-field="content"/>
+        <log level="info" message="mapIn: ${mapIn}"/>
+     <call-service service-name="checkContentPermission" in-map-name="mapIn">
+     <result-to-field result-name="permissionStatus" field-name="permissionStatus"/>
+     </call-service>
+        <log level="info" message="permissionStatus: ${permissionStatus}"/>
+     <if-compare operator="equals" field-name="permissionStatus" value="granted">
+     <set field="blogList[]" from-field="view" />
+     </if-compare>
+     </iterate>
+        <log level="info" message="blogList: ${blogList}"/>
+     <field-to-result field-name="blogList" result-name="blogList"/>
+    </simple-method>
+</simple-methods>

Modified: ofbiz/trunk/applications/content/servicedef/services.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/servicedef/services.xml?view=diff&rev=499256&r1=499255&r2=499256
==============================================================================
--- ofbiz/trunk/applications/content/servicedef/services.xml (original)
+++ ofbiz/trunk/applications/content/servicedef/services.xml Tue Jan 23 20:49:50 2007
@@ -863,18 +863,14 @@
             <exclude field-name="contentAssocTypeId"/>
             <exclude field-name="sequenceNum"/>
         </auto-attributes>
-        <auto-attributes entity-name="ContentAssocDataResourceViewFrom" include="all" mode="IN" optional="true">
+        <auto-attributes entity-name="ContentAssocDataResourceViewTo" include="all" mode="IN" optional="true">
         </auto-attributes>
         <attribute mode="INOUT" entity-name="Content" name="contentId" optional="true" type="String"/>
         <attribute mode="INOUT" entity-name="DataResource" name="dataResourceId" optional="true" type="String"/>
-        <attribute mode="INOUT" entity-name="ContentAssoc" name="contentIdTo" optional="true" type="String"/>
-        <attribute mode="INOUT" entity-name="ContentAssoc" name="contentIdFrom" optional="true" type="String"/>
-        <attribute mode="INOUT" entity-name="ContentAssoc" name="contentAssocTypeId" optional="true" type="String"/>
-        <attribute mode="INOUT" entity-name="ContentAssoc" name="fromDate" optional="true" type="Timestamp"/>
-        <attribute mode="INOUT" entity-name="ContentAssoc" name="sequenceNum" optional="true" type="Long"/>
 
         <attribute mode="INOUT" entity-name="DataResource" name="drDataResourceId" optional="true" type="String"/>
         <attribute mode="INOUT" name="caContentIdTo" optional="true" type="String"/>
+        <attribute mode="INOUT" name="caContentId" optional="true" type="String"/>
         <attribute mode="INOUT" name="caContentAssocTypeId" optional="true" type="String"/>
         <attribute mode="INOUT" name="caFromDate" optional="true" type="Timestamp"/>
         <attribute mode="INOUT" name="caSequenceNum" optional="true" type="Long"/>
@@ -1487,5 +1483,25 @@
         <attribute name="rootDir" type="String" mode="IN" optional="true"/>
         <attribute name="locale" type="java.util.Locale" mode="IN" optional="true"/>
         <attribute name="outByteWrapper" type="org.ofbiz.entity.util.ByteWrapper" mode="OUT" optional="false"/>
+    </service>
+    <!-- blog services -->
+    <service name="persistBlogAll" engine="java" location="org.ofbiz.content.blog.BlogServices" invoke="persistBlogAll"
+         auth="true"  transaction-timeout="72000">
+        <implements service="persistContentAndAssoc"/>
+        <attribute type="String" mode="IN" name="summaryData" optional="true"/>
+        <attribute type="String" mode="IN" name="mainData" optional="true"/>
+        <attribute type="String" mode="IN" name="drMimeTypeId_TEXT" optional="true"/>
+        <attribute type="String" mode="IN" name="drMimeTypeId_IMAGE" optional="true"/>
+        <attribute type="String" mode="IN" name="templateId" optional="true"/>
+        <attribute type="String" mode="INOUT" name="textContentId" optional="true"/>
+        <attribute type="String" mode="INOUT" name="imageContentId" optional="true"/>
+        <attribute type="String" mode="INOUT" name="textDataResourceId" optional="true"/>
+        <attribute type="String" mode="INOUT" name="imageDataResourceId" optional="true"/>
+    </service>
+    <service name="getOwnedOrPublishedBlogEntries" engine="simple" location="org/ofbiz/content/blog/BlogServices.xml" invoke="getOwnedOrPublishedBlogEntries"
+         auth="true"  transaction-timeout="72000">
+        <attribute type="String" mode="IN" name="contentId" optional="false"/>
+        <attribute mode="IN" name="userLogin" optional="false" type="GenericValue"/>
+        <attribute mode="OUT" name="blogList" optional="true" type="List"/>
     </service>
 </services>

Modified: ofbiz/trunk/applications/content/src/org/ofbiz/content/ContentManagementServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/src/org/ofbiz/content/ContentManagementServices.java?view=diff&rev=499256&r1=499255&r2=499256
==============================================================================
--- ofbiz/trunk/applications/content/src/org/ofbiz/content/ContentManagementServices.java (original)
+++ ofbiz/trunk/applications/content/src/org/ofbiz/content/ContentManagementServices.java Tue Jan 23 20:49:50 2007
@@ -156,6 +156,8 @@
      * This service tries to handle DataResource and ContentAssoc fields with and
      * without "dr" and "ca" prefixes.
      * Assumes binary data is always in field, "imageData".
+     *
+     * This service does not accept straight ContentAssoc parameters. They must be prefaced with "ca" + cap first letter
      */
     public static Map persistContentAndAssoc(DispatchContext dctx, Map context) throws GenericServiceException {
         GenericDelegator delegator = dctx.getDelegator();
@@ -170,7 +172,8 @@
         
         // If "deactivateExisting" is set, other Contents that are tied to the same
         // contentIdTo will be deactivated (thruDate set to now)
-        boolean deactivateExisting = UtilValidate.isNotEmpty((String) context.get("deactivateExisting"));
+        String deactivateString = (String) context.get("deactivateExisting");
+        boolean deactivateExisting = "true".equalsIgnoreCase(deactivateString);
 
         if (Debug.infoOn()) Debug.logInfo("in persist... mapKey(0):" + mapKey, null);
 
@@ -210,8 +213,6 @@
         if (Debug.infoOn()) Debug.logInfo("in persist... dataResourceId(0):" + dataResourceId, null);
 
         GenericValue contentAssoc = delegator.makeValue("ContentAssoc", null);
-        contentAssoc.setPKFields(context);
-        contentAssoc.setNonPKFields(context);
         contentAssoc.setAllFields(context, false, "ca", null);
         context.putAll(contentAssoc);
 
@@ -223,11 +224,11 @@
         Map results = ServiceUtil.returnSuccess();
         results.put("contentId", content.get("contentId"));
         results.put("dataResourceId", dataResource.get("dataResourceId"));
-        results.put("contentIdTo", contentAssoc.get("contentIdTo"));
-        results.put("fromDate", contentAssoc.get("fromDate"));
-        results.put("contentAssocTypeId", contentAssoc.get("contentAssocTypeId"));
+        results.put("drDataResourceId", dataResource.get("dataResourceId"));
+        results.put("caContentAssocTypeId", contentAssoc.get("contentAssocTypeId"));
         results.put("drDataResourceId", dataResource.get("dataResourceId"));
         results.put("caContentIdTo", contentAssoc.get("contentIdTo"));
+        results.put("caContentId", contentAssoc.get("contentId"));
         results.put("caFromDate", contentAssoc.get("fromDate"));
         results.put("caContentAssocTypeId", contentAssoc.get("contentAssocTypeId"));
         
@@ -324,15 +325,17 @@
             }
             results.put("contentId", contentId);
             context.put("contentId", contentId);
-            context.put("caContentId", contentId);
-            contentAssoc.put("contentId", contentId);
+            context.put("caContentIdTo", contentId);
+            contentAssoc.put("contentIdTo", contentId);
 
             // Add ContentPurposes if this is a create operation
             if (contentId != null && !contentExists) {
                 try {
                     if (contentPurposeList != null) {
-                        for (int i=0; i < contentPurposeList.size(); i++) {
-                            String contentPurposeTypeId = (String)contentPurposeList.get(i);
+                        HashSet contentPurposeSet = new HashSet(contentPurposeList);
+                        Iterator iter = contentPurposeSet.iterator();
+                        while (iter.hasNext()) {
+                            String contentPurposeTypeId = (String)iter.next();
                             GenericValue contentPurpose = delegator.makeValue("ContentPurpose",
                                    UtilMisc.toMap("contentId", contentId,
                                                   "contentPurposeTypeId", contentPurposeTypeId) );
@@ -384,20 +387,21 @@
                     if (ServiceUtil.isError(thisResult) || ServiceUtil.isFailure(thisResult) || UtilValidate.isNotEmpty(errMsg)) {
                         return ServiceUtil.returnError(errMsg);
                     }
-                    results.put("contentIdTo", thisResult.get("contentIdTo"));
-                    results.put("contentIdFrom", thisResult.get("contentIdFrom"));
-                    //results.put("contentId", thisResult.get("contentIdFrom"));
-                    results.put("contentAssocTypeId", thisResult.get("contentAssocTypeId"));
-                    results.put("fromDate", thisResult.get("fromDate"));
-                    results.put("sequenceNum", thisResult.get("sequenceNum"));
+//                    results.put("contentIdTo", thisResult.get("contentIdTo"));
+//                    results.put("contentIdFrom", thisResult.get("contentIdFrom"));
+//                    //results.put("contentId", thisResult.get("contentIdFrom"));
+//                    results.put("contentAssocTypeId", thisResult.get("contentAssocTypeId"));
+//                    results.put("fromDate", thisResult.get("fromDate"));
+//                    results.put("sequenceNum", thisResult.get("sequenceNum"));
                     
                     results.put("caContentIdTo", thisResult.get("contentIdTo"));
+                    results.put("caContentId", thisResult.get("contentIdFrom"));
                     results.put("caContentAssocTypeId", thisResult.get("contentAssocTypeId"));
                     results.put("caFromDate", thisResult.get("fromDate"));
                     results.put("caSequenceNum", thisResult.get("sequenceNum"));
                 } else {
                     if (deactivateExisting) {
-                     contentAssoc.put("thruDate",UtilDateTime.nowTimestamp());
+                        contentAssoc.put("thruDate",UtilDateTime.nowTimestamp());
                     }
                     ModelService contentAssocModel = dispatcher.getDispatchContext().getModelService("updateContentAssoc");
                     Map ctx = contentAssocModel.makeValid(contentAssoc, "IN");
@@ -546,7 +550,7 @@
               result = persistDataResourceAndDataMethod(dctx, context);
           }
           else {
-         return ServiceUtil.returnError("no access to upload image");  
+            return ServiceUtil.returnError("no access to upload image");  
           }
       } catch (GenericServiceException e) {
           return ServiceUtil.returnError(e.getMessage());
@@ -1695,7 +1699,7 @@
       }
       if (UtilValidate.isNotEmpty(oldDataResourceId)) {
           try {
-          dataResource = delegator.findByPrimaryKey("DataResource", UtilMisc.toMap("dataResourceId", oldDataResourceId));
+              dataResource = delegator.findByPrimaryKey("DataResource", UtilMisc.toMap("dataResourceId", oldDataResourceId));
           } catch(GenericEntityException e) {
               Debug.logError(e.getMessage(), module);
               return ServiceUtil.returnError(e.getMessage());
@@ -1703,26 +1707,26 @@
       }
       
       try {
-      ModelService persistContentAndAssocModel = dispatcher.getDispatchContext().getModelService("persistContentAndAssoc");
-      Map ctx = persistContentAndAssocModel.makeValid(context, "IN");
-      if (dataResource != null) {
-      ctx.remove("dataResourceId");
-      ctx.remove("drDataResourceId");
-      }
+          ModelService persistContentAndAssocModel = dispatcher.getDispatchContext().getModelService("persistContentAndAssoc");
+          Map ctx = persistContentAndAssocModel.makeValid(context, "IN");
+          if (dataResource != null) {
+              ctx.remove("dataResourceId");
+              ctx.remove("drDataResourceId");
+          }
           result = dispatcher.runSync("persistContentAndAssoc", ctx);
           String errorMsg = ServiceUtil.getErrorMessage(result);
           if (UtilValidate.isNotEmpty(errorMsg)) {
-          return ServiceUtil.returnError(errorMsg);
+              return ServiceUtil.returnError(errorMsg);
           }
           String contentId = (String)result.get("contentId");
           List parentList = new ArrayList();
           if (UtilValidate.isEmpty(masterRevisionContentId)) {
-          Map traversMap = new HashMap();
-          traversMap.put("contentId", contentId);
-          traversMap.put("direction", "To");
-          traversMap.put("contentAssocTypeId", "COMPDOC_PART");
-          Map traversResult = dispatcher.runSync("traverseContent", traversMap);
-          parentList = (List)traversResult.get("parentList");
+              Map traversMap = new HashMap();
+              traversMap.put("contentId", contentId);
+              traversMap.put("direction", "To");
+              traversMap.put("contentAssocTypeId", "COMPDOC_PART");
+              Map traversResult = dispatcher.runSync("traverseContent", traversMap);
+              parentList = (List)traversResult.get("parentList");
           } else {
               parentList.add(masterRevisionContentId);
           }
@@ -1739,7 +1743,7 @@
               result = dispatcher.runSync("persistContentRevisionAndItem", contentRevisionMap);
               errorMsg = ServiceUtil.getErrorMessage(result);
               if (UtilValidate.isNotEmpty(errorMsg)) {
-              return ServiceUtil.returnError(errorMsg);
+                  return ServiceUtil.returnError(errorMsg);
               }
           }
           

Added: ofbiz/trunk/applications/content/src/org/ofbiz/content/blog/BlogServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/src/org/ofbiz/content/blog/BlogServices.java?view=auto&rev=499256
==============================================================================
--- ofbiz/trunk/applications/content/src/org/ofbiz/content/blog/BlogServices.java (added)
+++ ofbiz/trunk/applications/content/src/org/ofbiz/content/blog/BlogServices.java Tue Jan 23 20:49:50 2007
@@ -0,0 +1,232 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *******************************************************************************/
+package org.ofbiz.content.blog;
+
+/*
+ * Created on Jan 28, 2005
+ *
+ * This service persists a blog article.
+ * It can persist text only, image only or a combination of content types.
+ * If text or image only, that content is attached directly to the main
+ * content as an ElectronicText or ImageDataResource entity.
+ * If a combination is desired, the two content pieces (image and text) are associated
+ * through a predefined screen widget template (ie. drDataTemplateTypeId="SCREEN_COMBINED").
+ */
+    
+import java.util.HashMap;
+import java.util.Map;
+
+import org.ofbiz.base.util.UtilMisc;
+import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.entity.GenericDelegator;
+import org.ofbiz.entity.GenericValue;
+import org.ofbiz.service.DispatchContext;
+import org.ofbiz.service.GenericServiceException;
+import org.ofbiz.service.LocalDispatcher;
+import org.ofbiz.service.ModelService;
+import org.ofbiz.service.ServiceUtil;
+
+public class BlogServices {
+
+    public static Map persistBlogAll(DispatchContext dctx, Map context) throws GenericServiceException {
+
+        Map result = new HashMap();
+        GenericDelegator delegator = dctx.getDelegator();
+        LocalDispatcher dispatcher = dctx.getDispatcher();
+        GenericValue userLogin = (GenericValue)context.get("userLogin");
+        ModelService modelPersistContent = dispatcher.getDispatchContext().getModelService("persistContentAndAssoc");
+        Map ctx = modelPersistContent.makeValid(context, "IN");
+        ctx.put("userLogin", userLogin);
+        ctx.put("textData", context.get("mainData"));
+        ctx.put("deactivateExisting", "false");
+        String drMimeTypeId_TEXT = (String)context.get("drMimeTypeId_TEXT");
+        boolean bTextMimeType = "Y".equals(drMimeTypeId_TEXT);
+        String drMimeTypeId_IMAGE = (String)context.get("drMimeTypeId_IMAGE");
+        boolean bImageMimeType = "Y".equals(drMimeTypeId_IMAGE);
+        String mainData = (String)context.get("mainData");
+        String imageMimeTypeId =  (String)context.get("_imageData_contentType");
+        if (UtilValidate.isEmpty(imageMimeTypeId)) imageMimeTypeId = "image/jpeg";
+        String contentId = (String)context.get("contentId");
+        if (UtilValidate.isEmpty(contentId)) ctx.put("contentId", context.get("contentIdTo"));
+        
+        // if the content already exists, these will identify it.
+        // They are stored in the form
+        String textContentId = (String)context.get("textContentId");
+        String imageContentId = (String)context.get("imageContentId");
+        String textDataResourceId = (String)context.get("textDataResourceId");
+        String imageDataResourceId = (String)context.get("imageDataResourceId");
+        
+        String drDataResourceId = (String)context.get("drDataResourceId");
+        String drDataTemplateTypeId = (String)context.get("drDataTemplateTypeId");
+        
+        String templateId = (String)context.get("templateId");
+        
+        if ("SCREEN_COMBINED".equals(drDataTemplateTypeId) && !bImageMimeType) {
+            if (bTextMimeType) {
+                ctx.put("dataResourceId", textDataResourceId);                
+                ctx.put("drDataResourceId", textDataResourceId);                
+                ctx.put("drDataResourceTypeId", "ELECTRONIC_TEXT");
+                ctx.put("drDataTemplateTypeId", "NONE");
+                ctx.put("drMimeTypeId", "text/html");
+            }
+        } else if ("SCREEN_COMBINED".equals(drDataTemplateTypeId) && !bTextMimeType) {
+            if (bImageMimeType) {
+                ctx.put("dataResourceId", imageDataResourceId);                
+                ctx.put("drDataResourceId", imageDataResourceId);                
+                ctx.put("drDataResourceTypeId", "IMAGE_OBJECT");
+                ctx.put("drDataTemplateTypeId", "NONE");
+                ctx.put("drMimeTypeId", imageMimeTypeId);
+                ctx.put("drIsPublic", "Y");
+            }
+        } else if (!"SCREEN_COMBINED".equals(drDataTemplateTypeId) ) {
+        
+            // Store the main record
+            // either text or image or both
+            if (bTextMimeType && !bImageMimeType) {
+                ctx.put("dataResourceId", drDataResourceId);                
+                ctx.put("drDataResourceId", drDataResourceId);                
+                ctx.put("drDataResourceTypeId", "ELECTRONIC_TEXT");
+                ctx.put("drDataTemplateTypeId", "NONE");
+                ctx.put("drMimeTypeId", "text/html");
+            } else if (!bTextMimeType && bImageMimeType) {
+                ctx.put("dataResourceId", drDataResourceId);                
+                ctx.put("drDataResourceId", drDataResourceId);                
+                ctx.put("drDataResourceTypeId", "IMAGE_OBJECT");
+                ctx.put("drDataTemplateTypeId", "NONE");
+                ctx.put("drMimeTypeId", imageMimeTypeId);
+                ctx.put("drIsPublic", "Y");
+            } else if (bTextMimeType && bImageMimeType) {
+                // if both then set up for and choose a template
+                ctx.put("drDataResourceTypeId", null);
+                ctx.put("dataResourceTypeId", null);
+                ctx.put("textData", null);
+                ctx.put("dataResourceId", templateId);                
+                ctx.put("drDataResourceId", templateId);                
+                ctx.put("drIsPublic", "Y");
+            }
+        } else if ("SCREEN_COMBINED".equals(drDataTemplateTypeId) ) {
+            if (bTextMimeType && bImageMimeType) {
+                // if both then set up for and choose a template
+                ctx.put("drDataResourceTypeId", "ELECTRONIC_TEXT");
+                ctx.put("drDataTemplateTypeId", "SCREEN_COMBINED");
+                ctx.put("drMimeTypeId", "text/html");
+                ctx.put("textData", null);
+                ctx.put("dataResourceId", templateId);                
+                ctx.put("drDataResourceId", templateId);                
+                ctx.put("drIsPublic", "Y");
+            }
+        }
+        // store the main content entity
+        result = dispatcher.runSync("persistContentAndAssoc", ctx);
+        if (ServiceUtil.isError(result)) {
+            return ServiceUtil.returnError(ServiceUtil.getErrorMessage(result));  
+        }
+        String mainContentId = (String)result.get("contentId");
+        
+        // If both, then that content needs to be persisted
+        if (bTextMimeType && bImageMimeType) {
+        
+            ctx = modelPersistContent.makeValid(context, "IN");
+            // first store the text
+            ctx.put("caContentId", mainContentId);
+            ctx.put("contentId", textContentId);
+            ctx.put("dataResourceId", textDataResourceId);
+            ctx.put("drDataResourceId", textDataResourceId);
+            ctx.put("caContentId", mainContentId);
+            ctx.put("drDataTemplateTypeId", "NONE");
+            ctx.put("caContentAssocTypeId", "SUB_CONTENT");
+            ctx.put("drDataResourceTypeId", "ELECTRONIC_TEXT");
+            ctx.put("drMimeTypeId", "text/html");
+            ctx.put("caMapKey", "MAIN");
+            ctx.put("textData", mainData);
+            Map textResult = dispatcher.runSync("persistContentAndAssoc", ctx);
+            if (ServiceUtil.isError(textResult)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(textResult));  
+            }
+            textContentId = (String)textResult.get("contentId");
+            textDataResourceId = (String)textResult.get("drDataResourceId");
+            
+            
+            // persist the image
+            String imageData_fileName = (String)context.get("_imageData_fileName");
+            // In the update mode, if no upload file is given, do not upload
+            if (UtilValidate.isNotEmpty(imageData_fileName)) {
+                ctx = modelPersistContent.makeValid(context, "IN");
+                ctx.put("caContentId", mainContentId);
+                ctx.put("contentId", imageContentId);
+                ctx.put("dataResourceId", imageDataResourceId);
+                ctx.put("drDataResourceId", imageDataResourceId);
+                ctx.put("drDataTemplateTypeId", "NONE");
+                ctx.put("drDataResourceTypeId", "IMAGE_OBJECT");
+                ctx.put("caContentAssocTypeId", "SUB_CONTENT");
+                ctx.put("drMimeTypeId", imageMimeTypeId);
+                ctx.put("caMapKey", "IMAGE");
+                ctx.put("textData", null);
+                ctx.put("drIsPublic", "Y");
+                Map imageResult = dispatcher.runSync("persistContentAndAssoc", ctx);
+                if (ServiceUtil.isError(imageResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(imageResult));  
+                }
+                imageContentId = (String)imageResult.get("contentId");
+                imageDataResourceId = (String)imageResult.get("drDataResourceId");
+            }
+        }
+        
+        // persist the summary info.
+        String summaryData = (String)context.get("summaryData");
+        String summaryParentContentId = mainContentId;
+        if (UtilValidate.isNotEmpty(summaryData) && UtilValidate.isNotEmpty(summaryParentContentId) ) {
+            Map subContentIn = new HashMap();
+            subContentIn.put("contentId", summaryParentContentId);
+            subContentIn.put("mapKey", "SUMMARY");
+            Map thisResult = dispatcher.runSync("getSubContent", subContentIn);
+            GenericValue view = (GenericValue)thisResult.get("view");
+            Map summaryContext = null;
+            if (view != null) {
+                summaryContext = modelPersistContent.makeValid(view, "IN");
+                summaryContext.put("textData", summaryData);
+                summaryContext.put("contentTypeId", null);
+                summaryContext.put("caContentAssocTypeId", null);
+            } else {
+                summaryContext = modelPersistContent.makeValid(result, "IN");
+                summaryContext.put("textData", summaryData);
+                summaryContext.put("caContentId", summaryParentContentId);
+                summaryContext.put("caMapKey", "SUMMARY");
+                summaryContext.put("caContentAssocTypeId", "SUB_CONTENT");
+                summaryContext.put("contentTypeId", "DOCUMENT");
+                summaryContext.put("dataResourceTypeId", "ELECTRONIC_TEXT");
+                summaryContext.put("contentId", null);
+                summaryContext.put("caFromDate", null);
+                summaryContext.put("drDataResourceId", null);
+                summaryContext.put("dataResourceId", null);
+                summaryContext.put("statusId", context.get("statusId"));
+                summaryContext.put("ownerContentId", context.get("ownerContentId"));
+                summaryContext.put("contentPurposeString", "ARTICLE");
+            }
+            summaryContext.put("userLogin", userLogin);
+            Map summaryResult = dispatcher.runSync("persistContentAndAssoc", summaryContext);
+            if (ServiceUtil.isError(summaryResult)) {
+                String errMsg =  ServiceUtil.getErrorMessage(summaryResult);
+                return ServiceUtil.returnError(errMsg);
+            }
+        }
+        
+        return result;
+    }
+}

Modified: ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentWorker.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentWorker.java?view=diff&rev=499256&r1=499255&r2=499256
==============================================================================
--- ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentWorker.java (original)
+++ ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentWorker.java Tue Jan 23 20:49:50 2007
@@ -863,7 +863,7 @@
                     throw new GenericEntityException("contentId and subContentId are null.");
                 }
                 Map results = null;
-                results = ContentServicesComplex.getAssocAndContentAndDataResourceMethod(delegator, contentId, mapKey, "From", fromDate, null, null, null, assocTypes, null);
+                results = ContentServicesComplex.getAssocAndContentAndDataResourceMethod(delegator, contentId, mapKey, "To", fromDate, null, null, null, assocTypes, null);
                 List entityList = (List) results.get("entityList");
                 if (entityList == null || entityList.size() == 0) {
                     //throw new IOException("No subcontent found.");