svn commit: r931174 - /ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentMapFacade.java

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

svn commit: r931174 - /ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentMapFacade.java

lektran
Author: lektran
Date: Tue Apr  6 15:02:32 2010
New Revision: 931174

URL: http://svn.apache.org/viewvc?rev=931174&view=rev
Log:
Added support for generating content links by looking for an appropriate WebSitePathAlias to use, I skipped adding support for finding an alias via mapKey/contentId for now since quite a bit of processing would be required to find an appropriate match

Modified:
    ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentMapFacade.java

Modified: ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentMapFacade.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentMapFacade.java?rev=931174&r1=931173&r2=931174&view=diff
==============================================================================
--- ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentMapFacade.java (original)
+++ ofbiz/trunk/applications/content/src/org/ofbiz/content/content/ContentMapFacade.java Tue Apr  6 15:02:32 2010
@@ -22,9 +22,11 @@ package org.ofbiz.content.content;
 import org.ofbiz.entity.Delegator;
 import org.ofbiz.entity.GenericValue;
 import org.ofbiz.entity.GenericEntityException;
+import org.ofbiz.entity.condition.EntityCondition;
 import org.ofbiz.entity.util.EntityUtil;
 import org.ofbiz.service.LocalDispatcher;
 import org.ofbiz.webapp.control.RequestHandler;
+import org.ofbiz.webapp.website.WebSiteWorker;
 import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.GeneralException;
@@ -238,14 +240,37 @@ public class ContentMapFacade implements
 
         } else if ("link".equalsIgnoreCase(name)) {
             // link to this content
-            // TODO: make more intelligent to use a link alias if exists
 
             RequestHandler rh = (RequestHandler) this.context.get("_REQUEST_HANDLER_");
             HttpServletRequest request = (HttpServletRequest) this.context.get("request");
             HttpServletResponse response = (HttpServletResponse) this.context.get("response");
 
             if (rh != null && request != null && response != null) {
-                String contextLink = rh.makeLink(request, response, this.contentId, true, false, true);
+                String webSiteId = WebSiteWorker.getWebSiteId(request);
+                Delegator delegator = (Delegator) request.getAttribute("delegator");
+                
+                String contentUri = this.contentId;
+                // Try and find a WebSitePathAlias record to use, it isn't very feasible to find an alias by (parent)contentId/mapKey
+                // so we're only looking for a direct alias using contentId
+                if (webSiteId != null && delegator != null) {
+                    EntityCondition condition = EntityCondition.makeCondition(
+                            UtilMisc.toMap(
+                                    "mapKey", null,
+                                    "webSiteId", webSiteId,
+                                    "contentId", this.contentId
+                            )
+                    );
+                    try {
+                        List<GenericValue> webSitePathAliases = delegator.findList("WebSitePathAlias", condition, null, null, null, true);
+                        GenericValue webSitePathAlias = EntityUtil.getFirst(webSitePathAliases);
+                        if (webSitePathAlias != null) {
+                            contentUri = webSitePathAlias.getString("pathAlias");
+                        }
+                    } catch (GenericEntityException e) {
+                        Debug.logError(e, module);
+                    }
+                }
+                String contextLink = rh.makeLink(request, response, contentUri, true, false, true);
                 // Debug.logInfo("Made link to content with ID [" + this.contentId + "]: " + contextLink, module);
                 return contextLink;
             } else {