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">
* <meta-info>
* <title>SomeSite Info</title>
* <description>Navigate SomeSite within an
IFRAME</description>
* </meta-info>
* <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
----------------------------------------------