You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by do...@apache.org on 2005/01/17 20:04:34 UTC
svn commit: r125433 - in incubator/beehive/trunk/netui: src/tags-html/org/apache/beehive/netui/tags/tree test/webapps/drt/coreWeb/richTree test/webapps/drt/testRecorder/config test/webapps/drt/testRecorder/tests
Author: dolander
Date: Mon Jan 17 11:04:32 2005
New Revision: 125433
URL: http://svn.apache.org/viewcvs?view=rev&rev=125433
Log:
Add a encodeHtml property to the Tree tag. This will cause the label and content
to be escaped for HTML.
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/PageOne.html
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/PageThree.html
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/PageTwo.html
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/encodeContent.jsp
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/RichTreeEncodeContent.xml
Modified:
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/Controller.jpf
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/index.jsp
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java?view=diff&rev=125433&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java&r1=125432&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java&r2=125433
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java (original)
+++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java Mon Jan 17 11:04:32 2005
@@ -114,7 +114,7 @@
private String _tagId; // tag that should uniquely indentify a tree. Required for multiple tree using auto expand
private String[] _expanded = null;
private boolean _runAtClient = false; // run at client
- private boolean _escapeLabels = false; // esapce the content of labels
+ private boolean _escapeContent = false; // esapce the content of labels
private boolean _outputJavaScript = false; // cause the base javascript support to be output
private InheritableState _iState = new InheritableState();
@@ -385,13 +385,13 @@
/**
* This attribue will cause the content of labels to be escaped when the value if <i>true</i>.
* The default value is <i>false</i>.
- * @param escapeLabels
+ * @param htmlEscape
* @netui:attribute required="false"
* description="When true the content of labels will be escaped for HTML."
*/
- public void setEscapeLabels(boolean escapeLabels)
+ public void setEscapeForHtml(boolean htmlEscape)
{
- _escapeLabels = escapeLabels;
+ _escapeContent = htmlEscape;
}
/**
@@ -1012,6 +1012,12 @@
// Render the label for this node (if any)
String label = node.getLabel();
if (label != null) {
+ if (_escapeContent) {
+ StringBuilder s = new StringBuilder(label.length() + 16);
+ StringBuilderRenderAppender sbAppend = new StringBuilderRenderAppender(sb);
+ HtmlUtils.filter(label, sbAppend);
+ label = s.toString();
+ }
sb.append(label);
sb.append(" ");
}
@@ -1020,6 +1026,12 @@
// if there is content then we should render that here...
String ctnt = node.getContent();
if (ctnt != null) {
+ if (_escapeContent) {
+ StringBuilder s = new StringBuilder(ctnt.length() + 16);
+ StringBuilderRenderAppender sbAppend = new StringBuilderRenderAppender(sb);
+ HtmlUtils.filter(ctnt, sbAppend);
+ ctnt = s.toString();
+ }
sb.append("\n ");
sb.append(ctnt);
}
Modified: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/Controller.jpf
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/Controller.jpf?view=diff&rev=125433&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/Controller.jpf&r1=125432&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/Controller.jpf&r2=125433
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/Controller.jpf (original)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/Controller.jpf Mon Jan 17 11:04:32 2005
@@ -769,6 +769,7 @@
private TreeElement _tree17;
private TreeElement _tree18;
private TreeElement _tree19;
+ private TreeElement _tree20;
private String _expand = " ";
@@ -924,6 +925,14 @@
public void setTree19(TreeElement tn) {
_tree19 = tn;
}
+
+ public TreeElement getTree20() {
+ return _tree20;
+ }
+
+ public void setTree20(TreeElement tn) {
+ _tree20 = tn;
+ }
//************************************************************************
@@ -1154,6 +1163,7 @@
_tree17 = null;
_tree18 = null;
_tree19 = null;
+ _tree20 = null;
buildTrees();
return forward;
@@ -1341,6 +1351,15 @@
@Jpf.Forward(name = "success", path = "href.jsp")
})
protected Forward goHref() {
+ Forward success = new Forward("success");
+ clearExpand();
+ return success;
+ }
+
+ @Jpf.Action(forwards = {
+ @Jpf.Forward(name = "success", path = "encodeContent.jsp")
+})
+ protected Forward goEncodeContent() {
Forward success = new Forward("success");
clearExpand();
return success;
Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/PageOne.html
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/PageOne.html?view=auto&rev=125433
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/PageOne.html Mon Jan 17 11:04:32 2005
@@ -0,0 +1,7 @@
+<html>
+ <head>
+ </head>
+ <body>
+ <h4>Page One</h4>
+ </body>
+</html>
\ No newline at end of file
Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/PageThree.html
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/PageThree.html?view=auto&rev=125433
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/PageThree.html Mon Jan 17 11:04:32 2005
@@ -0,0 +1,7 @@
+<html>
+ <head>
+ </head>
+ <body>
+ <h4>Page Three</h4>
+ </body>
+</html>
\ No newline at end of file
Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/PageTwo.html
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/PageTwo.html?view=auto&rev=125433
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/PageTwo.html Mon Jan 17 11:04:32 2005
@@ -0,0 +1,7 @@
+<html>
+ <head>
+ </head>
+ <body>
+ <h4>Page Two</h4>
+ </body>
+</html>
\ No newline at end of file
Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/encodeContent.jsp
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/encodeContent.jsp?view=auto&rev=125433
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/encodeContent.jsp Mon Jan 17 11:04:32 2005
@@ -0,0 +1,66 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib uri="beehive-netui-tags-html.tld" prefix="netui"%>
+<netui:html>
+ <head>
+ <title>encodeContent.jsp</title>
+ <link href="style.css" rel="stylesheet" type="text/css">
+ <netui:scriptHeader treeSupport='true'/>
+ <style type="text/css">
+ .alien {
+ position: absolute;
+ left: 170pt;
+ }
+ .leaf {
+ font-family: "new century schoolbook", serif ;
+ font-size: 10pt;
+ color: #c90000;
+ }
+ .container {
+ font-family: "new century schoolbook", serif ;
+ font-size: 12pt;
+ color: #990000;
+ }
+ </style>
+ <netui:base/>
+ </head>
+ <netui:body>
+ <h4 class="title"><netui:anchor action="begin" styleClass="homeAnchor">Home</netui:anchor>encodeContent.jsp [goEncodeContent.do] </h4>
+ <!-- Attribute Information -->
+ <div style='float:left;width:300px'>
+ <table cellpadding="2" cellspacing="0" border="1" width="300px">
+ <tr><th>Creation</th><td>Static</td></tr>
+ <tr><th>tree</th><td>{pageFlow.tree20}</td></tr>
+ <tr><th>action</th><td>postback</td></tr>
+ <tr><th>runAtClient</th><td>false</td></tr>
+ </table>
+ </div>
+ <!-- Postback information -->
+ <div style='float:right;width:250px;border:solid 1pt gray;margin:2 4;'>
+ <p style="font-weight:bold;text-align:center;margin: 0;padding:0;">Tree Postback Information</p>
+ <table cellpadding='0' cellspacing='2' width="100%">
+ <tr><th style="text-align:right" width="100pt">Expand:</th><td><netui:content value="${pageFlow.expand}"/></td></tr>
+ <tr><th style="text-align:right" width="100pt">Selection:</th><td><netui:content value="${pageFlow.node}"/></td></tr>
+ </table>
+ </div>
+ Verify that both the content and label may be encoded for HTML during tree
+ processing. In the tree node below both the label and content contains JavaScript
+ which will causes an alert in the browser if not encoded.
+ <hr style="clear:left">
+ <div class="content">
+ <netui:tree dataSource="pageFlow.tree20" selectionAction="postback" tagId="tree" escapeForHtml="true">
+ <netui:treeItem expanded="true">
+ <netui:treeLabel>JavaScript:
+ <script language="JavaScript" type="text/JavaScript">
+ alert("Label Script");
+ </script>
+ </netui:treeLabel>
+ <netui:treeContent>Content with JavaScript:
+ <script language="JavaScript" type="text/JavaScript">
+ alert("Content Script");
+ </script>
+ </netui:treeContent>
+ </netui:treeItem>
+ </netui:tree>
+ </div>
+ </netui:body>
+</netui:html>
Modified: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/index.jsp
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/index.jsp?view=diff&rev=125433&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/index.jsp&r1=125432&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/index.jsp&r2=125433
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/index.jsp (original)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/richTree/index.jsp Mon Jan 17 11:04:32 2005
@@ -23,6 +23,7 @@
<li><netui:anchor action="goOverride">Override tree attributes</netui:anchor> -- [tree17] Override tree attributes</li>
<li><netui:anchor action="goOverrideTwo">Override tree attributes two</netui:anchor> -- [tree18] Override the whole tree actions from the root</li>
<li><netui:anchor action="goHref">Verify Href</netui:anchor> -- [tree19] Verify that HRefs and target work</li>
+ <li><netui:anchor action="goEncodeContent">Encode Content</netui:anchor> -- [tree20] Verify that HRefs and target work</li>
</ul>
<h4>Client Side Support</h4>
<ul>
Modified: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml?view=diff&rev=125433&p1=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml&r1=125432&p2=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml&r2=125433
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml (original)
+++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml Mon Jan 17 11:04:32 2005
@@ -5073,6 +5073,20 @@
</features>
</test>
<test>
+ <name>RichTreeEncodeContent</name>
+ <description>Verification test of escaping for HTML content and label</description>
+ <webapp>coreWeb</webapp>
+ <categories>
+ <category>bvt</category>
+ <category>bvt.struts11</category>
+ <category>trees</category>
+ </categories>
+ <features>
+ <feature>Tree</feature>
+ <feature>escapeForHtml</feature>
+ </features>
+ </test>
+ <test>
<name>RichTreeHref</name>
<description>Test of the Href and Target attributes</description>
<webapp>coreWeb</webapp>
Added: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/RichTreeEncodeContent.xml
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/RichTreeEncodeContent.xml?view=auto&rev=125433
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/RichTreeEncodeContent.xml Mon Jan 17 11:04:32 2005
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+ <ses:sessionName>RichTreeEncodeContent</ses:sessionName>
+ <ses:tester>Daryl</ses:tester>
+ <ses:startDate>17 Jan 2005, 10:40:59.633 AM MST</ses:startDate>
+ <ses:description>Verify that we can escape for HTML labels and content</ses:description>
+ <ses:tests>
+ <ses:test>
+ <ses:testNumber>1</ses:testNumber>
+ <ses:request>
+ <ses:protocol>HTTP</ses:protocol>
+ <ses:protocolVersion>1.1</ses:protocolVersion>
+ <ses:host>localhost</ses:host>
+ <ses:port>8080</ses:port>
+ <ses:uri>/coreWeb/richTree/encodeContent.jsp</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>5421E1B7CC9FAEFF2B0A9A8F469AB805</ses:value>
+ </ses:cookie>
+ </ses:cookies>
+ <ses:headers>
+ <ses:header>
+ <ses:name>accept</ses:name>
+ <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-charset</ses:name>
+ <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-encoding</ses:name>
+ <ses:value>gzip,deflate</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>accept-language</ses:name>
+ <ses:value>en-us,en;q=0.5</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>connection</ses:name>
+ <ses:value>keep-alive</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>cookie</ses:name>
+ <ses:value>JSESSIONID=5421E1B7CC9FAEFF2B0A9A8F469AB805</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>host</ses:name>
+ <ses:value>localhost:8080</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>keep-alive</ses:name>
+ <ses:value>300</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>user-agent</ses:name>
+ <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+ </ses:header>
+ </ses:headers>
+ </ses:request>
+ <ses:response>
+ <ses:statusCode>200</ses:statusCode>
+ <ses:reason/>
+ <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+
+ <head>
+ <title>encodeContent.jsp</title>
+ <link href="style.css" rel="stylesheet" type="text/css">
+
+ <script src="/coreWeb/resources/beehive/version1/javascript/netui-tree.js"></script>
+ <style type="text/css">
+ .alien {
+ position: absolute;
+ left: 170pt;
+ }
+ .leaf {
+ font-family: "new century schoolbook", serif ;
+ font-size: 10pt;
+ color: #c90000;
+ }
+ .container {
+ font-family: "new century schoolbook", serif ;
+ font-size: 12pt;
+ color: #990000;
+ }
+ </style>
+ <base href="http://localhost:8080/coreWeb/richTree/encodeContent.jsp">
+ </head>
+ <body>
+ <h4 class="title"><a href="/coreWeb/richTree/begin.do" class="homeAnchor">Home</a>encodeContent.jsp [goEncodeContent.do] </h4>
+ <!-- Attribute Information -->
+ <div style='float:left;width:300px'>
+ <table cellpadding="2" cellspacing="0" border="1" width="300px">
+ <tr><th>Creation</th><td>Static</td></tr>
+ <tr><th>tree</th><td>{pageFlow.tree20}</td></tr>
+ <tr><th>action</th><td>postback</td></tr>
+ <tr><th>runAtClient</th><td>false</td></tr>
+ </table>
+ </div>
+ <!-- Postback information -->
+ <div style='float:right;width:250px;border:solid 1pt gray;margin:2 4;'>
+ <p style="font-weight:bold;text-align:center;margin: 0;padding:0;">Tree Postback Information</p>
+ <table cellpadding='0' cellspacing='2' width="100%">
+ <tr><th style="text-align:right" width="100pt">Expand:</th><td> </td></tr>
+ <tr><th style="text-align:right" width="100pt">Selection:</th><td> </td></tr>
+ </table>
+ </div>
+ Verify that both the content and label may be encoded for HTML during tree
+ processing. In the tree node below both the label and content contains JavaScript
+ which will causes an alert in the browser if not encoded.
+ <hr style="clear:left">
+ <div class="content">
+ <div>
+ <div>
+ <img src="/coreWeb/resources/images/linelastnode.gif" style="vertical-align:middle;" border="0" alt="">
+ <a href="/coreWeb/richTree/postback.do?netui_treeselected=0&netui_treeid=tree"> <img src="/coreWeb/resources/images/folder_16_pad.gif" style="vertical-align:middle" border="0" alt="Tree Node"> JavaScript:
+ <script language="JavaScript" type="text/JavaScript">
+ alert("Label Script");
+ </script> </a>Content with JavaScript:
+ <script language="JavaScript" type="text/JavaScript">
+ alert("Content Script");
+ </script>
+
+ </div>
+</div>
+
+ </div>
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ </ses:tests>
+ <ses:endDate>17 Jan 2005, 10:41:08.896 AM MST</ses:endDate>
+ <ses:testCount>1</ses:testCount>
+</ses:recorderSession>
\ No newline at end of file