Author: jkoster
Date: 2009-05-18 14:15:11 +0200 (Mon, 18 May 2009)
New Revision: 35250

Modified:
   
CMSContainer/branches/b1_5/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/ContentUrlTag.java
   
CMSContainer/branches/b1_5/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/portlet/BasicURLTag.java
   CMSContainer/branches/b1_5/CMSContainer/cmsc/taglib/src/tld/cmsc.tld
   
CMSContainer/branches/b1_5/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/util/HttpUtil.java
Log:
CMSC-1403 - Add possibility to create absolute URLs for the BasicURLTag and 
ContentUrlTag

Modified: 
CMSContainer/branches/b1_5/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/ContentUrlTag.java
===================================================================
--- 
CMSContainer/branches/b1_5/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/ContentUrlTag.java
    2009-05-18 12:02:58 UTC (rev 35249)
+++ 
CMSContainer/branches/b1_5/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/ContentUrlTag.java
    2009-05-18 12:15:11 UTC (rev 35250)
@@ -18,6 +18,7 @@
 import org.mmbase.bridge.jsp.taglib.util.Attribute;
 
 import com.finalist.cmsc.mmbase.ResourcesUtil;
+import com.finalist.cmsc.util.HttpUtil;
 
 @SuppressWarnings("serial")
 public class ContentUrlTag extends NodeReferrerTag {
@@ -83,31 +84,11 @@
    }
 
 
-   private String makeAbsolute(String url) {
-      String webapp = getServerDocRoot((HttpServletRequest) 
pageContext.getRequest());
-      if (url.startsWith("/")) {
-         url = webapp + url.substring(1);
-      }
-      else {
-         url = webapp + url;
-      }
-      return url;
+   public String makeAbsolute(String url) {
+      return HttpUtil.makeAbsolute((HttpServletRequest) 
pageContext.getRequest(), url);
    }
 
 
-   public static String getServerDocRoot(HttpServletRequest request) {
-      StringBuffer s = new StringBuffer();
-      
s.append(request.getScheme()).append("://").append(request.getServerName());
-
-      int serverPort = request.getServerPort();
-      if (serverPort != 80 && serverPort != 443) {
-         s.append(':').append(Integer.toString(serverPort));
-      }
-      s.append('/');
-      return s.toString();
-   }
-
-
    private String getContentUrl(Node node) {
       return ResourcesUtil.getServletPathWithAssociation("content", 
"/content/*", node.getStringValue("number"), node
             .getStringValue("title"));

Modified: 
CMSContainer/branches/b1_5/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/portlet/BasicURLTag.java
===================================================================
--- 
CMSContainer/branches/b1_5/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/portlet/BasicURLTag.java
      2009-05-18 12:02:58 UTC (rev 35249)
+++ 
CMSContainer/branches/b1_5/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/portlet/BasicURLTag.java
      2009-05-18 12:15:11 UTC (rev 35250)
@@ -3,6 +3,7 @@
 import java.io.IOException;
 
 import javax.portlet.*;
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.jsp.JspException;
 import javax.servlet.jsp.JspWriter;
 import javax.servlet.jsp.PageContext;
@@ -16,6 +17,7 @@
 import com.finalist.cmsc.beans.om.NavigationItem;
 import com.finalist.cmsc.mmbase.ResourcesUtil;
 import com.finalist.cmsc.services.sitemanagement.SiteManagement;
+import com.finalist.cmsc.util.HttpUtil;
 import com.finalist.cmsc.util.ServerUtil;
 
 /**
@@ -45,6 +47,7 @@
    protected String portletMode;
    protected String secure;
    protected Boolean secureBoolean;
+   protected boolean absolute;
    protected String windowState;
    protected String var;
 
@@ -118,27 +121,28 @@
     */
    @Override
    public int doEndTag() throws JspException {
+      String urlString;
+      if (url == null) {
+         urlString = contenturl;
+      }
+      else {
+         urlString = url.toString();
+      }
+      if (absolute) {
+         urlString = HttpUtil.makeAbsolute((HttpServletRequest) 
pageContext.getRequest(), urlString);
+      }
+      
       if (var == null) {
          try {
             JspWriter writer = pageContext.getOut();
-            if (url == null) {
-               writer.print(contenturl);
-            }
-            else {
-               writer.print(url);
-            }
+            writer.print(urlString);
          }
          catch (IOException ioe) {
             throw new JspException("actionURL/renderURL Tag Exception: cannot 
write to the output writer.", ioe);
          }
       }
       else {
-         if (url == null) {
-            pageContext.setAttribute(var, contenturl, PageContext.PAGE_SCOPE);
-         }
-         else {
-            pageContext.setAttribute(var, url.toString(), 
PageContext.PAGE_SCOPE);
-         }
+         pageContext.setAttribute(var, urlString, PageContext.PAGE_SCOPE);
       }
       page = null;
       window = null;
@@ -319,4 +323,14 @@
    public void setElementId(String elementId) {
       this.elementId = elementId;
    }
+
+
+   public void setAbsolute(boolean absolute) {
+      this.absolute = absolute;
+   }
+
+
+   public boolean isAbsolute() {
+      return absolute;
+   }
 }

Modified: CMSContainer/branches/b1_5/CMSContainer/cmsc/taglib/src/tld/cmsc.tld
===================================================================
--- CMSContainer/branches/b1_5/CMSContainer/cmsc/taglib/src/tld/cmsc.tld        
2009-05-18 12:02:58 UTC (rev 35249)
+++ CMSContainer/branches/b1_5/CMSContainer/cmsc/taglib/src/tld/cmsc.tld        
2009-05-18 12:15:11 UTC (rev 35250)
@@ -679,6 +679,12 @@
             <required>false</required>
             <rtexprvalue>true</rtexprvalue>
         </attribute>
+        <attribute>
+            <description>Defines if the URL should include the scheme, server 
name and port</description>
+            <name>absolute</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
     </tag>
     <tag>
         <name>renderURL</name>
@@ -720,7 +726,13 @@
             <required>false</required>
             <rtexprvalue>true</rtexprvalue>
         </attribute>
-    </tag>
+        <attribute>
+          <description>Defines if the URL should include the scheme, server 
name and port</description>
+          <name>absolute</name>
+          <required>false</required>
+          <rtexprvalue>true</rtexprvalue>
+       </attribute>
+     </tag>
 
     <!-- ############## -->
     <!-- HTML Form Tags -->

Modified: 
CMSContainer/branches/b1_5/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/util/HttpUtil.java
===================================================================
--- 
CMSContainer/branches/b1_5/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/util/HttpUtil.java
        2009-05-18 12:02:58 UTC (rev 35249)
+++ 
CMSContainer/branches/b1_5/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/util/HttpUtil.java
        2009-05-18 12:15:11 UTC (rev 35250)
@@ -549,5 +549,26 @@
         }
         return msg;
     }
+
+   /**
+    * Adds server document root to the URL 
+    * @param request
+    * @param url
+    * @return absolute url
+    */
+   public static String makeAbsolute(HttpServletRequest request, String url) {
+      if (url.indexOf("://") > -1) {
+         return url;
+      }
+      String webapp = getServerDocRoot(request);
+      
+      if (url.startsWith("/")) {
+         url = webapp + url.substring(1);
+      }
+      else {
+         url = webapp + url;
+      }
+      return url;
+   }
     
 }

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to