Update of /var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/pageflow
In directory james.mmbase.org:/tmp/cvs-serv6927/pageflow

Modified Files:
        UrlTag.java 
Log Message:
Made it possible for ParamHandler tags, to accept params from inside a 
sub-request (like a mm:include or a tagfile). At the moment supported by only 
mm:link/mm:url, so that you can more easily make your own 'link' tags using 
tag-files


See also: 
http://cvs.mmbase.org/viewcvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/pageflow


Index: UrlTag.java
===================================================================
RCS file: 
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/pageflow/UrlTag.java,v
retrieving revision 1.116
retrieving revision 1.117
diff -u -b -r1.116 -r1.117
--- UrlTag.java 11 Apr 2008 14:06:53 -0000      1.116
+++ UrlTag.java 29 Aug 2008 12:40:29 -0000      1.117
@@ -30,7 +30,7 @@
  * A Tag to produce an URL with parameters. It can use 'context' parameters 
easily.
  *
  * @author Michiel Meeuwissen
- * @version $Id: UrlTag.java,v 1.116 2008/04/11 14:06:53 michiel Exp $
+ * @version $Id: UrlTag.java,v 1.117 2008/08/29 12:40:29 michiel Exp $
  */
 
 public class UrlTag extends CloudReferrerTag  implements  ParamHandler, 
FrameworkParamHandler {
@@ -47,6 +47,7 @@
     protected Attribute  escapeAmps           = Attribute.NULL;
     protected Attribute  absolute             = Attribute.NULL;
     private   Attribute  encode               = Attribute.NULL;
+    private   Attribute  internal             = Attribute.NULL;
     protected Url        url;
 
     public void setReferids(String r) throws JspTagException {
@@ -82,6 +83,14 @@
         return absolute.getString(this);
     }
 
+
+    /**
+     * @since MMBase-1.9
+     */
+    public void setInternal(String i) throws JspTagException {
+        internal = getAttribute(i);
+    }
+
     /**
      * @since MMBase-1.9
      */
@@ -153,10 +162,20 @@
 
     }
 
+    private Object prevParamHandler;
 
     public int doStartTag() throws JspTagException {
         helper.initTag();
-        initTag(false);
+        boolean i = internal.getBoolean(this, false);
+        log.debug("internal : " +i);
+        initTag(i);
+        prevParamHandler = pageContext.getAttribute(ParamHandler.KEY, 
ParamHandler.SCOPE);
+        pageContext.setAttribute(ParamHandler.KEY, new ParamHandler() {
+                // putting an object to only wrapp addParameter on the request.
+                public void addParameter(String k, Object v)  throws 
JspTagException {
+                    UrlTag.this.addParameter(k, v);
+                }
+            }, ParamHandler.SCOPE);
         return EVAL_BODY_BUFFERED;
     }
 
@@ -205,7 +224,7 @@
      */
     protected boolean doMakeRelative() {
         if (makeRelative == null) {
-            String setting = 
pageContext.getServletContext().getInitParameter("mmbase.taglib.url.makerelative");
+            String setting = 
pageContext.getServletContext().getInitParameter("mmbase.taglib.url.makereltive");
             makeRelative = "true".equals(setting) ? Boolean.TRUE : 
Boolean.FALSE;
         }
         return makeRelative.booleanValue();
@@ -256,6 +275,8 @@
         if (getId() != null) {
             parameters.getWrapped(true); // dereference, and calculate
         }
+        pageContext.setAttribute(ParamHandler.KEY, prevParamHandler, 
ParamHandler.SCOPE);
+        prevParamHandler = null;
         initDoEndTag();
         doAfterBodySetValue();
         helper.doEndTag();
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to