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
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs