You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by Dan Elder <de...@novacoast.com> on 2003/06/19 21:09:13 UTC

Iframe with Parameter Passing Code

	Here is the code for the Iframe with Parameter Passing.  It's based off 
the regular Iframe Portlet.  I'm hoping that there is a way to get the 
password a user logged in with other than 
runData.getUser().getPassword() or 
runData.getUserFromSession().getPassword() since they only store the 
crypted password.  If anyone has any suggestions please contact me.
	Thanks,
	Dan Elder

/*
  *  ====================================================================
  *  The Apache Software License, Version 1.1
  *
  *  Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
  *  reserved.
  *
  *  Redistribution and use in source and binary forms, with or without
  *  modification, are permitted provided that the following conditions
  *  are met:
  *
  *  1. Redistributions of source code must retain the above copyright
  *  notice, this list of conditions and the following disclaimer.
  *
  *  2. Redistributions in binary form must reproduce the above copyright
  *  notice, this list of conditions and the following disclaimer in
  *  the documentation and/or other materials provided with the
  *  distribution.
  *
  *  3. The end-user documentation included with the redistribution,
  *  if any, must include the following acknowledgment:
  *  "This product includes software developed by the
  *  Apache Software Foundation (http://www.apache.org/)."
  *  Alternately, this acknowledgment may appear in the software itself,
  *  if and wherever such third-party acknowledgments normally appear.
  *
  *  4. The names "Apache" and "Apache Software Foundation" and
  *  "Apache Jetspeed" must not be used to endorse or promote products
  *  derived from this software without prior written permission. For
  *  written permission, please contact apache@apache.org.
  *
  *  5. Products derived from this software may not be called "Apache" or
  *  "Apache Jetspeed", nor may "Apache" appear in their name, without
  *  prior written permission of the Apache Software Foundation.
  *
  *  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  *  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  *  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  *  DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  *  ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  *  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  *  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  *  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  *  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  *  SUCH DAMAGE.
  *  ====================================================================
  *
  *  This software consists of voluntary contributions made by many
  *  individuals on behalf of the Apache Software Foundation.  For more
  *  information on the Apache Software Foundation, please see
  *  <http://www.apache.org/>.
  */
package org.apache.jetspeed.portal.portlets;

//Element Construction Set
import org.apache.ecs.ConcreteElement;
import org.apache.ecs.StringElement;

//Jetspeed stuff
import org.apache.jetspeed.portal.PortletException;
import org.apache.jetspeed.portal.PortletConfig;

//turbine
import org.apache.turbine.util.RunData;
import org.apache.turbine.util.Log;
import org.apache.turbine.util.ServerData;
import org.apache.turbine.services.servlet.TurbineServlet;
import org.apache.turbine.TurbineConstants;
import org.apache.turbine.util.DynamicURI;

//JDK stuff
import java.util.Hashtable;

/**
  *   A Portlet that displays the contents of a source URL in an IFRAME tag.
  *   portlets.xreg Usage example:
  *     <PRE>
  *           <portlet-entry name="IFrame" hidden="false" 
type="abstract" application="false">
  * <classname>org.apache.jetspeed.portal.portlets.IFramePortlet</classname>
  *           </portlet-entry>
  *     </PRE>
  *
  *  local-portlets.xreg Usage example:
  *     <PRE>
  *           <portlet-entry name="SomeSite" hidden="false" type="ref" 
parent="IFramePortlet" application="false">
  *             &lt;meta-info&gt;
  *                 &lt;title&gt;SomeSite Info&lt;/title&gt;
  *                 <description>Navigate SomeSite within an 
IFRAME</description>
  *             &lt;/meta-info&gt;
  *             <parameter name="source" value="http://somesite" 
hidden="false"/>
  *             <media-type ref="html"/>
  *           </portlet-entry>
  *     </PRE>
  *
  *     <P>The following parameters are accepted: </P>
  *     <UL>
  *         <LI> source - The target of the IFRAME, where it grabs it's 
content from. Can use ${webappRoot}.
  *             Default is "http://127.0.0.1" </LI>
  *         <LI> width - The width of the IFRAME, or null to let the 
browser decide.
  *             Default is null.</LI>
  *         <LI> height - The height of the IFRAME, or null to let the 
browser decide.
  *             Default is null.</LI>
  *         <LI> scrolling - How to display a scrollbar.
  *             Default is "auto", to let the browser decide.</LI>
  *         <LI> frameborder - Whether or not to display a border around 
the IFRAME.
  *             Default is 1 (yes).</LI>
  *         <LI> <code>refresh</code> - value in seconds to auto refresh 
contents of the IFRAME. </LI>
  *         <LI> <code>align</code> - top | bottom | middle | left | 
<i>right</i> - How to align the IFRAME in relation to surrounding 
content.</LI>
  *         <LI> <code>marginwidth</code> - size of the top and bottom 
margin inside the iframe. </LI>
  *         <LI> <code>marginheight</code> - size of the left and right 
margin inside the iframe.</LI>
  *     </UL>
  *
  * @created June 18, 2003
  * @author <a href="mailto:wbarnhil@twcny.rr.com">Bill Barnhill</a>
  * @author <a href="mailto:morciuch@apache.org">Mark Orciuch</a>
  * @author <a href="mailto:delder@novacoast.com">Mark Orciuch</a>
  * @version $Id: ParameterIFramePortlet.java,v 1.5 2003/06/18 16:00:00 
morciuch Exp $
  * @see AbstractPortlet
  */

public class ParameterIframePortlet extends AbstractInstancePortlet
{

     static final String DEFAULT_NOTSUPP_MSG =
         "[Your user agent does not support inline frames or is 
currently" + " configured not to display frames]";

     static final String NO_SOURCE_MSG = "Please customize source for 
this IFrame";

     static final String DEFAULT_SOURCE = "http://127.0.0.1";
     static final String DEFAULT_WIDTH = null;
     static final String DEFAULT_HEIGHT = null;
     static final String DEFAULT_SCROLLING = "auto";
     static final String DEFAULT_FRAMEBORDER = "1";

     static final String PARAM_SOURCE = "source";
     static final String PARAM_WIDTH = "width";
     static final String PARAM_HEIGHT = "height";
     static final String PARAM_SCROLLING = "scrolling";
     static final String PARAM_FRAMEBORDER = "frameborder";
     static final String PARAM_NAME = "name";
     static final String PARAM_STYLE = "style";
     static final String PARAM_MARGINWIDTH = "marginwidth";
     static final String PARAM_MARGINHEIGHT = "marginheight";
     static final String PARAM_REFRESH = "refresh";
     static final String PARAM_ALIGN = "align";
     static final String WEBAPPROOT = "${" + 
TurbineConstants.WEBAPP_ROOT + "}";

     private final String PARAMETER_1 = "parameter1";
     private final String PARAMETER_2 = "parameter2";
     private final String PARAMETER_3 = "parameter3";
     private final String PARAMETER_4 = "parameter4";
     private final String PARAMETER_5 = "parameter5";

     private final String VALUE_1 = "value1";
     private final String VALUE_2 = "value2";
     private final String VALUE_3 = "value3";
     private final String VALUE_4 = "value4";
     private final String VALUE_5 = "value5";

     private String iSource = DEFAULT_SOURCE;
     private String iWidth = DEFAULT_WIDTH;
     private String iHeight = DEFAULT_HEIGHT;
     private String iScrolling = DEFAULT_SCROLLING;
     private String iFrameBorder = DEFAULT_FRAMEBORDER;
     private String iMarginWidth = null;
     private String iMarginHeight = null;
     private String iStyle = null;
     private String iName = null;
     private String iRefresh = null;
     private String iAlign = null;

     private String param1 = "";
     private String value1 = "";
     private String param2 = "";
     private String value2 = "";
     private String param3 = "";
     private String value3 = "";
     private String param4 = "";
     private String value4 = "";
     private String param5 = "";
     private String value5 = "";

     /**
      *  Sets the source attribute of the IFramePortlet object
      *
      * @param  source  The new source value
      * @since
      */
     public void setSource(String source)
     {
         if (source != null)
         {
             // Handle replacement variables
             Hashtable parms = new Hashtable();
             if (source.indexOf("${") >= 0)
             {
                 // Add all portlet parms
                 parms.putAll(this.getPortletConfig().getInitParameters());

                 // Add web app root variable replacement
                 try
                 {
                     ServerData sd =
                         new ServerData(
                             TurbineServlet.getServerName(),
 
Integer.parseInt(TurbineServlet.getServerPort()),
                             TurbineServlet.getServerScheme(),
                             TurbineServlet.getContextPath(),
                             TurbineServlet.getContextPath());
                     DynamicURI uri = new DynamicURI(sd);
                     parms.put(TurbineConstants.WEBAPP_ROOT, 
uri.toString() + "/");
                 } catch (Exception e)
                 {
                     Log.error(e);
                 }
                 // Add portlet name variable replacement
                 parms.put("portlet", this.getName());
             }

             this.iSource = 
org.apache.jetspeed.util.StringUtils.replaceVars(source, parms);
         }

     }

     /**
      *  This methods outputs the content of the portlet for a given 
request.
      *
      * @param  runData  the RunData object for the request
      * @return          the content to be displayed to the user-agent
      */
     public ConcreteElement getContent(RunData runData)
     {

         // Reinitialize if user customized the portlet (this will be useful
         // when portlet preferences include user name and password for 
authentication or
         // when other exposed iframe attributes are changed)
         if 
(org.apache.jetspeed.util.PortletSessionState.getPortletConfigChanged(this, 
runData))
         {
             try
             {
                 this.init();
             } catch (PortletException pe)
             {
                 Log.error(pe);
             }
         }

         StringBuffer text = new StringBuffer();

         if (getSource() == null || getSource().trim().length() == 0)
         {
             text.append(NO_SOURCE_MSG);
             return (new StringElement(text.toString()));
         }

         text.append("<IFRAME ");

         text.append("src = \"" + getSource());

         // Build URL with optional paramaters and values
         if (this.getParam1().length() > 0)
         {
             text.append("?" + this.getParam1() + "=" + 
this.getValue(this.getValue1(), this.getParam1(), runData));

             if (this.getParam2().length() > 0)
             {
                 text.append("&" + this.getParam2() + "=" + 
this.getValue(this.getValue2(), this.getParam2(), runData));

                 if (this.getParam3().length() > 0)
                 {
                     text.append("&" + this.getParam3() + "=" + 
this.getValue(this.getValue3(), this.getParam3(), runData));

                     if (this.getParam4().length() > 0)
                     {
                         text.append("&" + this.getParam4() + "=" + 
this.getValue(this.getValue4(), this.getParam4(), runData));

                         if (this.getParam5().length() > 0)
                         {
                             text.append("&" + this.getParam5() + "=" + 
this.getValue(this.getValue5(), this.getParam5(), runData));
                         }
                     }
                 }
             }

         }

         text.append("\" ");
         if (getWidth() != null)
         {
             text.append("width = \"" + getWidth() + "\" ");
         }

         if (getHeight() != null)
         {
             text.append("height = \"" + getHeight() + "\" ");
         }

         if (getFrameName() != null)
         {
             text.append("name = \"" + getFrameName() + "\" ");
         }

         if (getStyle() != null)
         {
             text.append("style = \"" + getStyle() + "\" ");
         }

         if (getMarginWidth() != null)
         {
             text.append("marginwidth = \"" + getMarginWidth() + "\" ");
         }

         if (getMarginHeight() != null)
         {
             text.append("marginheight = \"" + getMarginHeight() + "\" ");
         }

         if (getAlign() != null)
         {
             text.append("align = \"" + getAlign() + "\" ");
         }

         text.append("scrolling = \"" + getScrolling() + "\" ");
         text.append("frameborder = \"" + getFrameBorder() + "\" ");
         text.append(">");

         text.append("</IFRAME>");
         return (new StringElement(text.toString()));
     }

     /**
      *  Initialize this portlet by setting inst. vars from InitParamaters.
      *
      * @throws  PortletException  Initialization failed
      */
     public void init() throws PortletException
     {
         // first make sure we propagate init
         super.init();

         try
         {
             PortletConfig config = this.getPortletConfig();
             String param = null;

             param = config.getInitParameter(PARAM_SOURCE);
             if (param != null)
                 setSource(param);

             param = config.getInitParameter(PARAM_WIDTH);
             if (param != null)
                 setWidth(param);

             param = config.getInitParameter(PARAM_HEIGHT);
             if (param != null)
                 setHeight(param);

             param = config.getInitParameter(PARAM_SCROLLING);
             if (param != null)
                 setScrolling(param);

             param = config.getInitParameter(PARAM_FRAMEBORDER);
             if (param != null)
                 setFrameBorder(param);

             param = config.getInitParameter(PARAM_STYLE);
             if (param != null)
                 setStyle(param);

             param = config.getInitParameter(PARAM_NAME);
             if (param != null)
                 setFrameName(param);

             param = config.getInitParameter(PARAM_REFRESH);
             if (param != null)
                 setRefresh(param);

             param = config.getInitParameter(PARAM_MARGINWIDTH);
             if (param != null)
                 setMarginWidth(param);

             param = config.getInitParameter(PARAM_MARGINHEIGHT);
             if (param != null)
                 setMarginHeight(param);

             param = config.getInitParameter(PARAM_ALIGN);
             if (param != null)
                 setAlign(param);

             param = config.getInitParameter(PARAMETER_1);
             if (param != null)
                 setParam1(param);

             param = config.getInitParameter(VALUE_1);
             if (param != null)
                 setValue1(param);

             param = config.getInitParameter(PARAMETER_2);
             if (param != null)
                 setParam2(param);

             param = config.getInitParameter(VALUE_2);
             if (param != null)
                 setValue2(param);

             param = config.getInitParameter(PARAMETER_3);
             if (param != null)
                 setParam3(param);

             param = config.getInitParameter(VALUE_3);
             if (param != null)
                 setValue3(param);

             param = config.getInitParameter(PARAMETER_4);
             if (param != null)
                 setParam4(param);

             param = config.getInitParameter(VALUE_4);
             if (param != null)
                 setValue4(param);

             param = config.getInitParameter(PARAMETER_5);
             if (param != null)
                 setParam5(param);

             param = config.getInitParameter(VALUE_5);
             if (param != null)
                 setValue5(param);

         } catch (Exception e)
         {
             Log.error("Exception in init()", e);
             throw new PortletException(e.getMessage());
         }
     }

     /**
      * If the paramater is known (username,password), return it's value
      *
      * @params s    The Parameter to check
      * @return      The value of the parameter if it is known, nothing 
otherwise
      */
     private String getValue(String v, String s, RunData runData)
     {
         if (s.equalsIgnoreCase("$username"))
             return runData.getUser().getUserName();
         else if (s.equalsIgnoreCase("$password"))
             return runData.getUser().getPassword();
	// runData.getUserFromSession().getPassword() also returns the crypted 
password
         else if (s.equalsIgnoreCase("$email"))
             return runData.getUser().getEmail();
         else if (s.equalsIgnoreCase("$firstname"))
             return runData.getUser().getFirstName();
         else if (s.equalsIgnoreCase("$lastname"))
             return runData.getUser().getLastName();
         else if (s.equalsIgnoreCase("$name"))
             return runData.getUser().getName();

         return v;
     }

     /**
      *  Gets the source attribute of the IFramePortlet object
      *
      * @return    The source value
      */
     public String getSource()
     {
         return iSource;
     }

     /**
      *  Gets the scrolling attribute of the IFramePortlet object
      *
      * @return    The scrolling value
      */
     public String getScrolling()
     {
         return iScrolling;
     }

     /**
      *  Gets the width attribute of the IFramePortlet object
      *
      * @return    The width value
      */
     public String getWidth()
     {
         return iWidth;
     }

     /**
      *  Gets the height attribute of the IFramePortlet object
      *
      * @return    The height value
      */
     public String getHeight()
     {
         return iHeight;
     }

     /**
      *  Gets whether to display a border around the IFRAME. "1" == yes.
      *
      * @return    The frameBorder value
      */
     public String getFrameBorder()
     {
         String trueValues = "1,yes,true";
         if (iFrameBorder != null && trueValues.indexOf(iFrameBorder) >= 0)
         {
             return "1";
         }
         return "0";
     }

     /**
      *  Gets the message displayed when IFRAME is not supported
      *  This includes when Frames are turned off.
      *
      * @todo        This should be localized
      * @return    The notSupportedMsg value
      */
     public String getNotSupportedMsg()
     {
         return DEFAULT_NOTSUPP_MSG;
     }

     /**
      *  Gets the aling attribute of the IFramePortlet object
      *
      * @return The marginheight value
      */
     public String getAlign()
     {

         return iAlign;
     }

     /**
      *  Gets iframe style
      *
      * @return The style value
      */
     public String getStyle()
     {

         return iStyle;
     }

     /**
      *  Gets iframe name
      *
      * @return The name value
      */
     public String getFrameName()
     {

         return iName;
     }

     /**
      *  Gets iframe refresh
      *
      * @return The refresh value
      */
     public String getRefresh()
     {

         return iRefresh;
     }

     /**
      *  Gets the marginheight attribute of the IFramePortlet object
      *
      * @return The marginheight value
      */
     public String getMarginHeight()
     {
         return iMarginHeight;
     }

     /**
      *  Gets the marginwidth attribute of the IFramePortlet object
      *
      * @return The marginwidth value
      */
     public String getMarginWidth()
     {

         return iMarginWidth;
     }

     /**
      *  Sets the scrolling attribute of the IFramePortlet object
      *
      * @param  scrolling  The new scrolling value
      * @since
      */
     public void setScrolling(String scrolling)
     {
         iScrolling = scrolling;
     }

     /**
      *  Sets the width attribute of the IFramePortlet object
      *
      * @param  width  The new width value
      * @since
      */
     public void setWidth(String width)
     {
         iWidth = width;
     }

     /**
      *  Sets the height attribute of the IFramePortlet object
      *
      * @param  height  The new height value
      * @since
      */
     public void setHeight(String height)
     {
         iHeight = height;
     }

     /**
      *  Sets the frameBorder attribute of the IFramePortlet object
      *
      * @param  frameBorder  The new frameBorder value
      * @since
      */
     public void setFrameBorder(String frameBorder)
     {
         iFrameBorder = frameBorder;
     }

     /**
      *  Sets the width attribute of the IFramePortlet object
      *
      * @param width  The new width value
      */
     public void setMarginWidth(String width)
     {

         iMarginWidth = width;
     }

     /**
      *  Sets the marginheight attribute of the IFramePortlet object
      *
      * @param height The new height value
      */
     public void setMarginHeight(String height)
     {

         iMarginHeight = height;
     }

     /**
      *  Sets the marginheight attribute of the IFramePortlet object
      *
      * @param height The new height value
      */
     public void setAlign(String value)
     {

         iAlign = value;
     }

     /**
      *  Sets the refresh meta tag
      *
      * @param value in seconds
      */
     public void setRefresh(String value)
     {

         iRefresh = value;
     }

     /**
      * Sets the style of iframe. Some useful style effects:
      * <UL>
      * <LI>border:5px dashed purple
      * <LI>border:5px dotted red
      * <LI>border:5px double red
      * <LI>border:5px inset red
      * </UL>
      *
      * @param value
      */
     public void setStyle(String value)
     {

         iStyle = value;
     }

     /**
      * Sets the name of iframe. This is useful when referencing
      * the iframe as a target from another link.
      *
      * @param value
      */
     public void setFrameName(String value)
     {

         iName = value;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @return
      */
     public String getParam1()
     {
         return param1;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @return
      */
     public String getParam2()
     {
         return param2;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @return
      */
     public String getParam3()
     {
         return param3;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @return
      */
     public String getParam4()
     {
         return param4;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @return
      */
     public String getParam5()
     {
         return param5;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @return
      */
     public String getValue1()
     {
         return value1;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @return
      */
     public String getValue2()
     {
         return value2;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @return
      */
     public String getValue3()
     {
         return value3;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @return
      */
     public String getValue4()
     {
         return value4;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @return
      */
     public String getValue5()
     {
         return value5;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @param string
      */
     public void setParam1(String string)
     {
         param1 = string;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @param string
      */
     public void setParam2(String string)
     {
         param2 = string;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @param string
      */
     public void setParam3(String string)
     {
         param3 = string;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @param string
      */
     public void setParam4(String string)
     {
         param4 = string;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @param string
      */
     public void setParam5(String string)
     {
         param5 = string;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @param string
      */
     public void setValue1(String string)
     {
         value1 = string;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @param string
      */
     public void setValue2(String string)
     {
         value2 = string;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @param string
      */
     public void setValue3(String string)
     {
         value3 = string;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @param string
      */
     public void setValue4(String string)
     {
         value4 = string;
     }

     /**
      * @author Dan Elder (delder@novacoast.com)
      * @param string
      */
     public void setValue5(String string)
     {
         value5 = string;
     }

}



----------------------------------------------------------------
Here is the section I added to my registry.  For reasons beyond me, the 
fields don't load in the order I would like.  I've only just begun to 
look into it though.  If anyone has any suggestions, please contact me.
----------------------------------------------------------------


   <portlet-entry name="ParameterIFramePortlet" hidden="false" 
type="instance" application="false">
         <meta-info>
             <title>IFrame Portlet with Passable 
Parameters/Authentication</title>
             <description>Display URL within IFrame with passed Parameters.
              Currently Recognized paramaters are: $username, $password,
             $email, $firstname, $lastname, $name</description>
         </meta-info>

<classname>org.apache.jetspeed.portal.portlets.ParameterIframePortlet</classname>
         <parameter name="source" value="" hidden="false"
             cachedOnName="true" cachedOnValue="true">
             <meta-info>
                 <title>Source</title>
                 <description>Specify source URL for this 
iframe</description>
             </meta-info>
         </parameter>
         <parameter name="width" value="640" hidden="false"
             cachedOnName="true" cachedOnValue="true">
             <meta-info>
                 <title>Width</title>
                 <description>Specify width for this iframe</description>
             </meta-info>
         </parameter>
         <parameter name="height" value="480" hidden="false"
             cachedOnName="true" cachedOnValue="true">
             <meta-info>
                 <title>Height</title>
                 <description>Specify height for this iframe</description>
             </meta-info>
         </parameter>
         <parameter name="frameborder" value="true" type="boolean"
             hidden="false" cachedOnName="true" cachedOnValue="true">
             <meta-info>
                 <title>Frameborder</title>
                 <description>Specify whether do display border around
                     this iframe</description>
             </meta-info>
         </parameter>
         <parameter name="parameter1" value="" hidden="false"
             cachedOnName="true" cachedOnValue="true">
             <meta-info>
                 <title>First Parameter</title>
                 <description>Specify the parameter to be passed
                     Leave blank for no parameter.</description>
             </meta-info>
         </parameter>
         <parameter name="value1" value="" hidden="false"
             cachedOnName="true" cachedOnValue="true">
             <meta-info>
                 <title>First Value</title>
                 <description>The value of the parameter to be 
passed.</description>
             </meta-info>
         </parameter>
         <parameter name="parameter2" value="" hidden="false"
             cachedOnName="true" cachedOnValue="true">
             <meta-info>
                 <title>Second Parameter</title>
                 <description>Specify the parameter to be passed
                     Leave blank for no parameter.</description>
             </meta-info>
         </parameter>
         <parameter name="value2" value="" hidden="false"
             cachedOnName="true" cachedOnValue="true">
             <meta-info>
                 <title>Second Value</title>
                 <description>The value of the parameter to be 
passed.</description>
             </meta-info>
         </parameter>
         <parameter name="parameter3" value="" hidden="false"
             cachedOnName="true" cachedOnValue="true">
             <meta-info>
                 <title>Third Parameter</title>
                 <description>Specify the parameter to be passed
                     Leave blank for no parameter.</description>
             </meta-info>
         </parameter>
         <parameter name="value3" value="" hidden="false"
             cachedOnName="true" cachedOnValue="true">
             <meta-info>
                 <title>Third Value</title>
                 <description>The value of the parameter to be 
passed.</description>
             </meta-info>
         </parameter>
         <parameter name="parameter4" value="" hidden="false"
             cachedOnName="true" cachedOnValue="true">
             <meta-info>
                 <title>Fourth Parameter</title>
                 <description>Specify the parameter to be passed
                     Leave blank for no parameter.</description>
             </meta-info>
         </parameter>
         <parameter name="value4" value="" hidden="false"
             cachedOnName="true" cachedOnValue="true">
             <meta-info>
                 <title>Fourth Value</title>
                 <description>The value of the parameter to be 
passed.</description>
             </meta-info>
         </parameter>
         <parameter name="parameter5" value="" hidden="false"
             cachedOnName="true" cachedOnValue="true">
             <meta-info>
                 <title>Fifth Parameter</title>
                 <description>Specify the parameter to be passed
                     Leave blank for no parameter.</description>
             </meta-info>
         </parameter>
         <parameter name="value5" value="" hidden="false"
             cachedOnName="true" cachedOnValue="true">
             <meta-info>
                 <title>Fifth Value</title>
                 <description>The value of the parameter to be 
passed.</description>
             </meta-info>
         </parameter>
         <media-type ref="html"/>
         <url cachedOnURL="true"/>
         <category group="Jetspeed">frames</category>
         <category group="Jetspeed">proxy</category>
         <category group="Jetspeed">web</category>
     </portlet-entry>


-- 
----------------------------------------------
Dan Elder, Software Developer, Novacoast, Inc.
Voice: (805) 884-4152
Mobile: (805) 453-6563
E-mail: delder@novacoast.com
----------------------------------------------