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