Author: jruijter
Date: 2010-03-02 17:14:49 +0100 (Tue, 02 Mar 2010)
New Revision: 41236

Modified:
   
CMSContainer/branches/b1_7/CMSContainer/cmsc/portlets/src/java/com/finalist/cmsc/portlets/RelatedContentPortlet.java
Log:
CMSC-1651 Relatedcontentportlet now works with renderurl

Modified: 
CMSContainer/branches/b1_7/CMSContainer/cmsc/portlets/src/java/com/finalist/cmsc/portlets/RelatedContentPortlet.java
===================================================================
--- 
CMSContainer/branches/b1_7/CMSContainer/cmsc/portlets/src/java/com/finalist/cmsc/portlets/RelatedContentPortlet.java
        2010-03-02 16:07:20 UTC (rev 41235)
+++ 
CMSContainer/branches/b1_7/CMSContainer/cmsc/portlets/src/java/com/finalist/cmsc/portlets/RelatedContentPortlet.java
        2010-03-02 16:14:49 UTC (rev 41236)
@@ -32,6 +32,11 @@
     */
    private static final String CONTENTURL_ELEMENTID_PATTERN = 
"/content/([0-9]+)";
 
+   /**
+    * This regex pattern is used to match the elementId from a renderURL.
+    */
+   private static final String RENDERURL_ELEMENTID_PATTERN = "_([0-9]+)";
+
    @Override
    protected void saveParameters(ActionRequest request, String portletId) {
       setPortletParameter(portletId, RELATED_PAGE, 
request.getParameter(RELATED_PAGE));
@@ -71,9 +76,11 @@
     * tries to retrieve the element in the following order:
     *
     * <ol>
-    * <li>From contentelement node parameter of the specified portlet</li>
     * <li>From a given contentURL (assumes that the elementId we want is
     * exactly that elementId)</li>
+    * <li>From a given renderURL (assumes that the elementId we want is
+    * exactly that elementId)</li>
+    * <li>From contentelement node parameter of the specified portlet</li>
     * </ol>
     *
     * The first one to return a non <code>null</code> value will be returned.
@@ -88,14 +95,15 @@
     *         otherwise.
     */
    protected String getRelatedElementId(RenderRequest request, String 
relatedPage, String relatedWindow) {
-      String elementId = null;
-      if (StringUtils.isNotEmpty(relatedPage) && 
StringUtils.isNotEmpty(relatedWindow)) {
-         elementId = getElementIdFromScreen(request, relatedPage, 
relatedWindow);
-         if (StringUtils.isEmpty(elementId)) {
-            elementId = getElementIdFromContentURL(request);
-         }
-      }
-
+      String elementId = getElementIdFromContentURL(request);
+         if (StringUtils.isEmpty(elementId)) {
+                 elementId = getElementIdFromRenderURL(request);
+                 if (StringUtils.isEmpty(elementId)) {
+                         if (StringUtils.isNotEmpty(relatedPage) && 
StringUtils.isNotEmpty(relatedWindow)) {
+                                 elementId = getElementIdFromScreen(request, 
relatedPage, relatedWindow);
+                 }
+             }
+         }
       return elementId;
    }
 
@@ -123,6 +131,16 @@
       return null;
    }
 
+   private String getElementIdFromRenderURL(RenderRequest req) {
+      String requestURL = getServletRequest(req).getRequestURL().toString();
+      Pattern pattern = Pattern.compile(RENDERURL_ELEMENTID_PATTERN);
+      Matcher matcher = pattern.matcher(requestURL);
+      if (matcher.find() && matcher.groupCount() >= 1) {
+         return matcher.group(1);
+      }
+      return null;
+   }
+
    private HttpServletRequest getServletRequest(RenderRequest req) {
       return (HttpServletRequest) ((PortletRequestImpl) req).getRequest();
    }

_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to