Merge pull request #629 from apache/WW-5255-script-link

[WW-5255] Fixes <s:script/> and <s:link/> and uses them across tags
This commit is contained in:
Lukasz Lenart
2022-11-05 08:28:57 +01:00
committed by GitHub
41 changed files with 856 additions and 1001 deletions
@@ -64,14 +64,14 @@
<title><decorator:title default="Struts2 Showcase"/></title>
<s:url var="bootstrapCss" value='/styles/bootstrap.css' encode='false' includeParams='none'/>
<s:link href="%{bootstrapCss}" rel="stylesheet" type="text/css" media="all"></s:link>
<s:link href="%{bootstrapCss}" rel="stylesheet" type="text/css" media="all"/>
<s:url var="mainCss" value='/styles/main.css' encode='false' includeParams='none'/>
<s:link href="%{mainCss}" rel="stylesheet" type="text/css" media="all"></s:link>
<s:link href="%{mainCss}" rel="stylesheet" type="text/css" media="all"/>
<s:url var="jqueryJs" value='/js/jquery-2.1.4.min.js' encode='false' includeParams='none'/>
<s:script src="%{jqueryJs}"></s:script>
<s:script src="%{jqueryJs}"/>
<s:url var="bootstrapJs" value='/js/bootstrap.min.js' encode='false' includeParams='none'/>
<s:script src="%{bootstrapJs}"></s:script>
<s:script src="%{bootstrapJs}"/>
<s:script type="text/javascript">
$(function () {
var alerts = $('ul.alert').wrap('<div />');
@@ -82,19 +82,22 @@
<!-- Prettify -->
<s:url var="prettifyCss" value='/styles/prettify.css' encode='false' includeParams='none'/>
<s:link href="%{prettifyCss}" rel="stylesheet"></s:link>
<s:link href="%{prettifyCss}" rel="stylesheet"/>
<s:url var="prettifyJs" value='/js/prettify.js' encode='false' includeParams='none'/>
<s:script src="%{prettifyJs}"></s:script>
<s:script src="%{prettifyJs}"/>
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<s:script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></s:script>
<s:script src="http://html5shim.googlecode.com/svn/trunk/html5.js"/>
<![endif]-->
<s:script>
jQuery(document).ready(function() { prettyPrint(); } );
</s:script>
<decorator:head/>
</head>
<body id="page-home" onload="prettyPrint();">
<body id="page-home">
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container-fluid">
@@ -21,10 +21,10 @@
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> >
var baseUrl = "<@s.url value="/struts" includeParams="none"/>";
window.open(baseUrl+"/webconsole.html", 'OGNL Console','width=500,height=450,status=no,toolbar=no,menubar=no');
</script>
<@s.script type="text/javascript">
var baseUrl = "<@s.url value="/static" includeParams="none"/>";
window.open(baseUrl+"/webconsole.html", 'OGNL Console','width=500,height=450,status=no,toolbar=no,menubar=no');
</@s.script>
</head>
<body>
<pre>
@@ -18,5 +18,5 @@
* under the License.
*/
-->
<link <#include "/${parameters.templateDir}/simple/nonce.ftl" /> rel="stylesheet" href="<@s.url value='${parameters.staticContentPath}/css_xhtml/styles.css' includeParams='none' encode='false' />" type="text/css" />
<@s.link rel="stylesheet" href="${base}${parameters.staticContentPath}/css_xhtml/styles.css" type="text/css" />
<#include "/${parameters.templateDir}/simple/head.ftl" />
@@ -18,21 +18,21 @@
* under the License.
*/
-->
<script type="text/javascript" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> >
<@s.script type="text/javascript">
function autoPopulate_${parameters.escapedId}(targetElement) {
<#if parameters.headerKey?? && parameters.headerValue??>
<#if parameters.headerKey?? && parameters.headerValue??>
if (targetElement.options[targetElement.selectedIndex].value == '${parameters.headerKey?js_string}') {
return;
}
</#if>
<#if parameters.emptyOption?default(false)>
</#if>
<#if parameters.emptyOption!false>
if (targetElement.options[targetElement.selectedIndex].value == '') {
return;
return;
}
</#if>
</#if>
targetElement.form.elements['${parameters.name?js_string}'].value=targetElement.options[targetElement.selectedIndex].value;
}
</script>
</@s.script>
<#include "/${parameters.templateDir}/simple/text.ftl" />
<br />
<#if parameters.list??>
@@ -18,8 +18,7 @@
* under the License.
*/
-->
<script type="text/javascript" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> >
<!--
<@s.script>
function toggleDebug(debugId) {
var debugDiv = document.getElementById(debugId);
if (debugDiv) {
@@ -31,10 +30,9 @@
}
}
}
-->
</script>
</@s.script>
<style type="text/css">
<style>
<!--
table.debugTable {border-collapse:collapse; border-spacing:0; background-color:#DDDDDD;}
table.debugTable th, table.debugTable td {padding:2px;}
@@ -42,7 +40,7 @@
</style>
<br>
<a href="#" onclick="toggleDebug('<#if parameters.id??>${parameters.id}<#else>debug</#if>');return false;">[Debug]</a>
<a href="#" id="toggle-button">[Debug]</a>
<div style="display:none" id="<#if parameters.id??>${parameters.id}<#else>debug</#if>">
<h2>Struts ValueStack Debug</h2>
<br>
@@ -86,3 +84,9 @@
</#list>
</table>
</div>
<@s.script>
document.getElementById('toggle-button').onclick = function() {
toggleDebug('<#if parameters.id??>${parameters.id}<#else>debug</#if>');
return false;
}
</@s.script>
@@ -73,7 +73,7 @@
</#if>
/>
</#if>
<script type="text/javascript" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> >
<@s.script type="text/javascript">
<#assign itemCount = startCount/>
var ${parameters.escapedId}Group = new Array(${parameters.listSize?number?c} + ${startCount});
for (var i = 0; i < (${parameters.listSize?number?c} + ${startCount}); i++) {
@@ -193,4 +193,4 @@
${parameters.escapedId}Temp.options[0].selected = true;
}
}
</script>
</@s.script>
@@ -19,12 +19,11 @@
*/
-->
<#--
<#--
Code that will add javascript needed for tooltips
--><#t/>
<#if (parameters.hasTooltip!false)><#t/>
<#lt/><!-- javascript that is needed for tooltips -->
<#lt/><script type="text/javascript" src='<@s.url value="${parameters.staticContentPath}/domTT.js" includeParams="none" encode="false" />' <#include "/${parameters.templateDir}/simple/nonce.ftl" /> > </script>
<#lt/><link rel="stylesheet" type="text/css" href="<@s.url value="${parameters.staticContentPath}/domTT.css" includeParams="none" encode="false" />" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> />
</#if><#t/>
<#lt/><!-- javascript that is needed for tooltips -->
<#lt/><@s.script type="text/javascript" src="${base}${parameters.staticContentPath}/domTT.js" />
<#lt/><@s.link rel="stylesheet" type="text/css" href="${base}${parameters.staticContentPath}/domTT.css" />
</#if><#t/>
@@ -21,7 +21,7 @@
</form>
<#if (parameters.customOnsubmitEnabled??)>
<script type="text/javascript" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> >
<@s.script type="text/javascript">
<#--
Enable auto-select of optiontransferselect tag's entries upon containing form's
submission.
@@ -96,7 +96,7 @@
}, true);
</#list>
</#if>
</script>
</@s.script>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/form-close-tooltips.ftl" />
@@ -18,4 +18,4 @@
* under the License.
*/
-->
<script src="${base}${parameters.staticContentPath}/utils.js" type="text/javascript" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> ></script>
<@s.script src="${base}${parameters.staticContentPath}/utils.js" type="text/javascript" />
@@ -19,7 +19,7 @@
*/
-->
<#if !stack.findValue("#inputtransferselect_js_included")??><#t/>
<script type="text/javascript" src="<@s.url value="${parameters.staticContentPath}/inputtransferselect.js" encode='false' includeParams='none'/>" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> ></script>
<@s.script type="text/javascript" src="${base}${parameters.staticContentPath}/inputtransferselect.js"/>
<#assign temporaryVariable = stack.setValue("#inputtransferselect_js_included", "true") /><#t/>
</#if><#t/>
<table>
@@ -18,48 +18,47 @@
* under the License.
*/
-->
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
<link <#include "/${parameters.templateDir}/simple/nonce.ftl" />
<#if parameters.href?has_content>
href="${parameters.href}"<#rt/>
</#if>
<#if parameters.hreflang?has_content>
hreflang="${parameters.hreflang}"<#rt/>
</#if>
<link<#rt/>
<#if parameters.rel?has_content>
rel="${parameters.rel}"<#rt/>
</#if>
<#if parameters.disabled?has_content>
<#if parameters.disabled=="true">
disabled<#rt/>
</#if>
</#if>
<#if parameters.media?has_content>
media="${parameters.media}"<#rt/>
rel="${parameters.rel}"<#rt/>
</#if>
<#if parameters.type?has_content>
type="${parameters.type}"<#rt/>
type="${parameters.type}"<#rt/>
</#if>
<#if parameters.href?has_content>
href="${parameters.href}"<#rt/>
</#if>
<#if parameters.hreflang?has_content>
hreflang="${parameters.hreflang}"<#rt/>
</#if>
<#if parameters.disabled?has_content && parameters.disabled == "true">
disabled<#rt/>
</#if>
<#if parameters.media?has_content>
media="${parameters.media}"<#rt/>
</#if>
<#if parameters.title?has_content>
title="${parameters.title}"<#rt/>
title="${parameters.title}"<#rt/>
</#if>
<#if parameters.as?has_content>
as="${parameters.as}"<#rt/>
as="${parameters.as}"<#rt/>
</#if>
<#if parameters.referrerpolicy?has_content>
referrerpolicy="${parameters.referrerpolicy}"<#rt/>
referrerpolicy="${parameters.referrerpolicy}"<#rt/>
</#if>
<#if parameters.sizes?has_content>
sizes="${parameters.sizes}"<#rt/>
sizes="${parameters.sizes}"<#rt/>
</#if>
<#if parameters.crossorigin?has_content>
crossorigin="${parameters.crossorigin}"<#rt/>
crossorigin="${parameters.crossorigin}"<#rt/>
</#if>
<#if parameters.integrity?has_content>
integrity="${parameters.integrity}"<#rt/>
integrity="${parameters.integrity}"<#rt/>
</#if>
<#if parameters.importance?has_content>
importance="${parameters.importance}"<#rt/>
importance="${parameters.importance}"<#rt/>
</#if>
>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" /><#rt/>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" /><#rt/>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/nonce.ftl" /><#rt/>
/>
@@ -18,4 +18,6 @@
* under the License.
*/
-->
<#if parameters.nonce?has_content>nonce="${parameters.nonce}"<#rt/></#if>
<#if parameters.nonce?has_content><#rt/>
nonce="${parameters.nonce}"<#rt/>
</#if><#rt/>
@@ -19,7 +19,7 @@
*/
-->
<#if !stack.findValue("#optiontransferselect_js_included")??><#t/>
<script type="text/javascript" src="<@s.url value="${parameters.staticContentPath}/optiontransferselect.js" encode='false' includeParams='none'/>" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> ></script>
<@s.script type="text/javascript" src="${base}${parameters.staticContentPath}/optiontransferselect.js" />
<#assign temporaryVariable = stack.setValue("#optiontransferselect_js_included", "true") /><#t/>
</#if><#t/>
<table>
@@ -18,36 +18,27 @@
* under the License.
*/
-->
<script <#rt/>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
<#include "/${parameters.templateDir}/simple/nonce.ftl" />
<#if parameters.async?has_content>
<#if parameters.async=="true">
async<#rt/>
</#if>
<script<#rt/>
<#if parameters.async?has_content && parameters.async == "true">
async<#rt/>
</#if>
<#if parameters.charset?has_content>
charset="${parameters.charset}"<#rt/>
</#if>
<#if parameters.defer?has_content>
<#if parameters.defer=="true">
defer<#rt/>
</#if>
</#if>
<#if parameters.src?has_content>
src="${parameters.src}"<#rt/>
<#if parameters.defer?has_content && parameters.defer=="true">
defer<#rt/>
</#if>
<#if parameters.type?has_content>
type="${parameters.type}"<#rt/>
</#if>
<#if parameters.src?has_content>
src="${parameters.src}"<#rt/>
</#if>
<#if parameters.referrerpolicy?has_content>
referrerpolicy="${parameters.referrerpolicy}"<#rt/>
</#if>
<#if parameters.nomodule?has_content>
<#if parameters.nomodule=="true">
nomodule<#rt/>
</#if>
<#if parameters.nomodule?has_content && parameters.nomodule=="true">
nomodule<#rt/>
</#if>
<#if parameters.integrity?has_content>
integrity="${parameters.integrity}"<#rt/>
@@ -55,4 +46,6 @@
<#if parameters.crossorigin?has_content>
crossorigin="${parameters.crossorigin}"<#rt/>
</#if>
>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/nonce.ftl" />>
@@ -19,7 +19,7 @@
*/
-->
<#if !stack.findValue("#optiontransferselect_js_included")??><#t/>
<script type="text/javascript" src="<@s.url value="${parameters.staticContentPath}/optiontransferselect.js" encode='false' includeParams='none'/>" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> ></script>
<@s.script type="text/javascript" src="${base}${parameters.staticContentPath}/optiontransferselect.js" /><#t/>
<#assign temporaryVariable = stack.setValue("#optiontransferselect_js_included", "true") /><#t/>
</#if><#t/>
<table>
@@ -52,4 +52,4 @@
</#if><#t/>
</#if><#t/>
</td></tr>
</table>
</table>
@@ -32,7 +32,7 @@ Only the following validators are supported:
END SNIPPET: supported-validators
-->
<#if ((parameters.validate!false == true) && (parameters.performValidation!false == true))>
<script type="text/javascript" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> >
<@s.script type="text/javascript">
function validateForm_${parameters.escapedId}() {
<#--
In case of multiselect fields return only the first value.
@@ -75,7 +75,7 @@ END SNIPPET: supported-validators
var error = "${validator.getMessage(action)?js_string}";
var fieldValue = getFieldValue(field);
<#if validator.validatorType = "required">
if (fieldValue === "") {
addError(field, error);
@@ -152,5 +152,5 @@ END SNIPPET: supported-validators
return !errors;
}
</script>
</#if>
</@s.script>
</#if>
@@ -22,12 +22,12 @@
<#include "/${parameters.templateDir}/simple/form-close.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/form-close-validate.ftl" />
<#if parameters.focusElement??>
<script type="text/javascript" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> >
<@s.script type="text/javascript">
StrutsUtils.addOnLoad(function() {
var element = document.getElementById("${parameters.focusElement?js_string}");
if(element) {
element.focus();
}
});
</script>
</@s.script>
</#if>
@@ -19,7 +19,7 @@
*/
-->
<#if parameters.validate!false == true>
<script type="text/javascript" src="${base}${parameters.staticContentPath}/xhtml/validation.js" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> ></script>
<@s.script type="text/javascript" src="${base}${parameters.staticContentPath}/xhtml/validation.js" />
<#if parameters.onsubmit??>
${tag.addParameter('onsubmit', "${parameters.onsubmit}; return validateForm_${parameters.escapedId}();")}
<#else>
@@ -18,5 +18,5 @@
* under the License.
*/
-->
<link rel="stylesheet" href="<@s.url value='${parameters.staticContentPath}/xhtml/styles.css' includeParams='none' encode='false'/>" type="text/css" <#include "/${parameters.templateDir}/simple/nonce.ftl" /> />
<@s.link rel="stylesheet" href="${base}${parameters.staticContentPath}/xhtml/styles.css" type="text/css" />
<#include "/${parameters.templateDir}/simple/head.ftl" />
@@ -1,21 +0,0 @@
<#--
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
-->
<#include "/${parameters.templateDir}/simple/link.ftl" />
@@ -1,21 +0,0 @@
<#--
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
-->
<#include "/${parameters.templateDir}/simple/script.ftl" />
@@ -243,7 +243,8 @@ public class FreemarkerResultMockedTest extends StrutsInternalTestCase {
EasyMock.expect(servletContext.getRealPath("/template/~~~xhtml/dynamic-attributes.ftl")).andReturn(file.getAbsolutePath());
file = new File(ClassLoaderUtil.getResource("template/simple/nonce.ftl", getClass()).toURI());
EasyMock.expect(servletContext.getRealPath("/template/simple/nonce.ftl")).andReturn(file.getAbsolutePath());
EasyMock.expect(servletContext.getRealPath("/template/xhtml/nonce.ftl")).andReturn(file.getAbsolutePath());
EasyMock.expect(servletContext.getRealPath("/template/~~~xhtml/nonce.ftl")).andReturn(file.getAbsolutePath());
file = new File(ClassLoaderUtil.getResource("template/simple/script.ftl", getClass()).toURI());
EasyMock.expect(servletContext.getRealPath("/template/simple/script.ftl")).andReturn(file.getAbsolutePath());
@@ -26,7 +26,7 @@ public class LinkTagTest extends AbstractUITagTest {
private static final String NONCE_VAL = "r4andom";
public void testLinkTagAttributes() {
public void testLinkTagAttributes() throws JspException {
LinkTag tag = new LinkTag();
tag.setHref("mysrc.js");
@@ -40,6 +40,7 @@ public class LinkTagTest extends AbstractUITagTest {
tag.setAs("test");
tag.setDisabled("false");
tag.setTitle("test");
tag.setDynamicAttribute(null, "data-id", "id4test");
doLinkTest(tag);
String s = writer.toString();
@@ -55,7 +56,8 @@ public class LinkTagTest extends AbstractUITagTest {
assertTrue("Incorrect as attribute for link tag", s.contains("as=\"test\""));
assertFalse("Non-existent disabled attribute for link tag", s.contains("disabled"));
assertTrue("Incorrect title attribute for link tag", s.contains("title=\"test\""));
assertTrue("Incorrect nonce attribute for link tag", s.contains("nonce=\"" + NONCE_VAL+"\""));
assertTrue("Incorrect nonce attribute for link tag", s.contains("nonce=\"" + NONCE_VAL + "\""));
assertTrue("Incorrect data-id dynamic attribute for link tag", s.contains("data-id=\"id4test\""));
}
private void doLinkTest(LinkTag tag) {
@@ -1,7 +1,5 @@
<#--
/*
* $Id: someFreeMarkerFile.ftl 590812 2007-10-31 20:32:54Z apetrelli $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -20,4 +18,4 @@
* under the License.
*/
-->
before<@s.action namespace="/tutorial" name="test4" executeResult="true" rethrowException="true"/>after
before<@s.action namespace="/tutorial" name="test4" executeResult="true" rethrowException="true"/>after
@@ -1,7 +1,5 @@
<#--
/*
* $Id: someFreeMarkerFile.ftl 590812 2007-10-31 20:32:54Z apetrelli $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -20,4 +18,4 @@
* under the License.
*/
-->
before<@s.action namespace="/tutorial" name="test3" executeResult="true" rethrowException="true"/>after
before<@s.action namespace="/tutorial" name="test3" executeResult="true" rethrowException="true"/>after<#rt/>
@@ -1,7 +1,5 @@
<#--
/*
* $Id: someFreeMarkerFile.ftl 590812 2007-10-31 20:32:54Z apetrelli $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -1,7 +1,5 @@
<#--
/*
* $Id: someFreeMarkerFile.ftl 590812 2007-10-31 20:32:54Z apetrelli $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -1,7 +1,5 @@
<#--
/*
* $Id: someFreeMarkerFile.ftl 590812 2007-10-31 20:32:54Z apetrelli $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -20,4 +18,4 @@
* under the License.
*/
-->
<input type="text" onclick="this.alert('${error}')"/>
<input type="text" onclick="this.alert('${error}')"/><#rt />
@@ -1,7 +1,5 @@
<#--
/*
* $Id: someFreeMarkerFile.ftl 590812 2007-10-31 20:32:54Z apetrelli $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -1,7 +1,5 @@
<#--
/*
* $Id: someFreeMarkerFile.ftl 590812 2007-10-31 20:32:54Z apetrelli $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -20,4 +18,4 @@
* under the License.
*/
-->
nested
nested<#rt/>
@@ -1,7 +1,5 @@
<#--
/*
* $Id: someFreeMarkerFile.ftl 590812 2007-10-31 20:32:54Z apetrelli $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -1,8 +1,6 @@
<#ftl attributes={"content_type": "text/xml"} />
<#--
/*
* $Id: someFreeMarkerFile.ftl 590812 2007-10-31 20:32:54Z apetrelli $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -1,2 +1,2 @@
<link rel="stylesheet" href="/static/xhtml/styles.css" type="text/css" nonce="r4nd0m"/>
<script src="/static/utils.js" type="text/javascript" nonce="r4nd0m"></script>
<link rel="stylesheet" type="text/css" href="/static/xhtml/styles.css" nonce="r4nd0m"/>
<script type="text/javascript" src="/static/utils.js" nonce="r4nd0m"></script>
@@ -15,7 +15,7 @@
</table>
</form>
<!--javascript that is needed for tooltips-->
<script type="text/javascript" src='/static/domTT.js'></script>
<script type="text/javascript" src="/static/domTT.js"></script>
<link rel="stylesheet" type="text/css" href="/static/domTT.css"/>
@@ -15,5 +15,5 @@
</table>
</form>
<!--javascript that is needed for tooltips-->
<script type="text/javascript" src='/static/domTT.js'></script>
<link rel="stylesheet" type="text/css" href="/static/domTT.css"/>
<script type="text/javascript" src="/static/domTT.js"></script>
<link rel="stylesheet" type="text/css" href="/static/domTT.css"/>
@@ -16,6 +16,6 @@
</form>
<!--javascript that is needed for tooltips-->
<script type="text/javascript" src='/static/domTT.js'></script>
<script type="text/javascript" src="/static/domTT.js"></script>
<link rel="stylesheet" type="text/css" href="/static/domTT.css"/>
@@ -1,812 +0,0 @@
<style>
/*
* $Id$
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/* colors, backgrounds, borders, link indication */
body {
background: #fff;
color: #000;
}
.app h3, .app h4, .tabs td, .tabs th, .functnbar {
background-image: url(../images/nw_maj_rond.gif);
background-repeat: no-repeat;
}
.functnbar, .functnbar2 {
background-color: #aaa;
}
.functnbar2, .functnbar3 {
background-color: #aaa;
background-image: url(../images/sw_maj_rond.gif);
background-repeat: no-repeat;
background-position: bottom left;
}
.functnbar3 {
background-color: #ddd;
background-image: url(../images/sw_med_rond.gif);
}
.functnbar, .functnbar2, .functnbar3 {
color: #000;
}
.functnbar a, .functnbar2 a, .functnbar3 a {
color: #000;
text-decoration: underline;
}
#navcolumn .body div, body.docs #toc li li {
background-image: url(../images/strich.gif);
background-repeat: no-repeat;
background-position: .5em .5em;
}
#searchbox .body div, #navcolumn .body .heading {
background-image: none;
}
a:link, #navcolumn a:visited, .app a:visited, .tasknav a:visited {
color: blue;
}
a:link.selfref, a:visited.selfref {
color: #555 !important;
text-decoration: none;
}
a:active, a:hover, #leftcol a:active, #leftcol a:hover {
color: #f30 !important;
}
#leftcol a, #breadcrumbs a {
text-decoration: none;
}
.app h3, .app h4 {
color: #fff;
}
.app h3 {
background-color: #333;
}
.app h3 a:link, .app h3 a:visited, .app h4 a:link, .app h4 a:visited {
color: #fff !important;
text-decoration: underline;
}
.app h4 {
background-color: #888;
}
.a td {
background: #ddd;
}
.b td {
background: #efefef;
}
table, th, td {
border: none;
}
div.colbar {
background: #eee;
border-color: #999 #EEE #EEE #999;
border-width: 1px;
border-style: solid;
}
.toolgroup {
background: #efefef;
}
.toolgroup .label {
border-bottom: 1px solid #666;
border-right: 1px solid #666;
background: #ddd;
color: #555;
}
.toolgroup .body {
border-right: 1px solid #aaa;
border-bottom: 1px solid #aaa;
}
#breadcrumbs {
border-top: 1px solid #fff;
background-color: #ccc;
}
#main {
border-top: 1px solid #999;
}
#rightcol div.www, #rightcol div.help {
border: 1px solid #ddd;
}
body.docs div.docs {
background-color: #fff;
border-left: 1px solid #ddd;
border-top: 1px solid #ddd;
}
#helptext .label {
background-image: url(../images/icon_help_sml.gif);
background-repeat: no-repeat;
background-position: 97%;
}
body.docs {
background: #eee url(../images/help_logo.gif) top right no-repeat !important;
}
.docs h3, .docs h4 {
border-top: solid 1px #000;
}
#apphead h2 em {
color: #777;
}
.app th {
background-color: #bbb;
}
.tabs th {
border-right: 1px solid #333;
background-color: #ddd;
color: #fff;
border-left: 1px solid #fff;
}
.tabs td {
background-color: #999;
border-bottom: 1px solid #fff;
border-right: 1px solid #fff;
border-left: 1px solid #fff;
}
.tabs {
border-bottom: 6px #ddd solid;
}
.tabs th, .tabs th a:link, .tabs th a:visited {
color: #555;
}
.tabs td, .tabs td a:link, .tabs td a:visited {
color: #fff;
}
.tabs a {
text-decoration: none;
}
.axial th {
background-color: #ddd;
color: black;
}
.alert {
background-color: #ff9;
}
.expandedwaste {
background: url(../images/icon_arrowwaste2_sml.gif) no-repeat;
}
.collapsedwaste {
background: url(../images/icon_arrowwaste1_sml.gif) no-repeat;
}
.filebrowse .expanded, .filebrowse-alt .expanded {
background-image: url(../images/icon_arrowfolderopen2_sml.gif);
background-repeat: no-repeat;
}
.filebrowse .collapsed, .filebrowse-alt .collapsed {
background-image: url(../images/icon_arrowfolderclosed1_sml.gif);
background-repeat: no-repeat;
}
.filebrowse .leafnode, .filebrowse-alt .leafnode {
background-image: url(../images/icon_folder_sml.gif);
background-repeat: no-repeat;
}
.filebrowse .leaf, .filebrowse-alt .leaf {
background-image: url(../images/icon_doc_sml.gif);
background-repeat: no-repeat;
}
.sortup {
background: url(../images/icon_sortup.gif) no-repeat;
}
.sortdown {
background: url(../images/icon_sortdown.gif) no-repeat;
}
.collapsedwaste {
background: url(../images/icon_arrowwaste1_sml.gif) no-repeat;
}
body .grid td {
border-top: 1px solid #ccc;
border-left: 1px solid #ccc;
background-color: transparent;
}
.confirm {
color: #090;
}
.info {
color: #069;
}
.errormessage, .warningmessage, .donemessage, .infomessage {
border-top: 5px solid #900;
border-left: 1px solid #900;
background-image: url(../images/icon_error_lrg.gif);
background-repeat: no-repeat;
background-position: 5px 1.33em;
}
.warningmessage {
background-image: url(../images/icon_warning_lrg.gif);
border-color: #c60;
}
.donemessage {
background-image: url(../images/icon_success_lrg.gif);
border-color: #090;
}
.infomessage {
background-image: url(../images/icon_info_lrg.gif);
border-color: #069;
}
.docinfo {
background: url(../images/icon_doc_lrg.gif) no-repeat;
}
.dirinfo {
background: url(../images/icon_folder_lrg.gif) no-repeat;
}
.memberinfo {
background: url(../images/icon_members_lrg.gif) no-repeat;
}
.usergroupinfo {
background: url(../images/icon_usergroups_lrg.gif) no-repeat;
}
.errormark, .warningmark, .donemark, .infomark {
background: url(../images/icon_error_sml.gif) no-repeat;
}
.warningmark {
background-image: url(../images/icon_warning_sml.gif);
}
.donemark {
background-image: url(../images/icon_success_sml.gif);
}
.infomark {
background-image: url(../images/icon_info_sml.gif);
}
.cvsdiff, .cvsblame {
background-color: #ccc;
}
.cvsdiffadd {
background-color: #afa;
}
.cvsdiffremove {
background-color: #faa;
}
.cvsdiffchanges1 {
background-color: #ff7;
}
.cvsdiffchanges2 {
background-color: #ff7;
}
li.selection ul a {
background: #fff;
}
.band1 {
color: #fff;
background-color: #663;
}
.band2 {
color: #fff;
background-color: #66C;
}
.band3 {
background-color: #C99;
}
.band4 {
background-color: #CFF;
}
.band5 {
color: #fff;
background-color: #336;
}
.band6 {
color: #fff;
background-color: #966;
}
.band7 {
background-color: #9CC;
}
.band8 {
background-color: #FFC;
}
.band9 {
color: #fff;
background-color: #633;
}
.band10 {
color: #fff;
background-color: #699;
}
.band11 {
background-color: #CC9;
}
.band12 {
background-color: #CCF;
}
.band13 {
color: #fff;
background-color: #366;
}
.band14 {
color: #fff;
background-color: #996;
}
.band15 {
background-color: #99C;
}
.band16 {
background-color: #FCC;
}
.app .helplink, #helptext .helplink {
cursor: help;
}
.legend th, .bars th {
background-color: #fff;
}
/* font and text properties, exclusive of link indication, alignment, text-indent */
body, th, td, input, select {
font-family: Verdana, Helvetica, Arial, sans-serif;
}
code, pre {
font-family: 'Andale Mono', Courier, monospace;
}
body, .app h3, .app h4, #rightcol h3, pre, code, #apphead h2 small {
font-size: x-small;
voice-family: "\"}\"";
voice-family: inherit;
font-size: small;
}
small, div#footer, div#login, div.tabs th, div.tabs td, input, select, .paginate, .functnbar, .functnbar2, .functnbar3, #breadcrumbs, .courtesylinks, #rightcol div.help, .colbar, .tasknav, body.docs div#toc, #leftcol, .legend, .bars {
font-size: xx-small;
voice-family: "\"}\"";
voice-family: inherit;
font-size: x-small;
}
.tabs td, .tabs th, dt, .tasknav .selfref, #login .username, .selection {
font-weight: bold;
}
li.selection ul {
font-weight: normal;
}
h4, table {
font-size: 1em;
}
#apphead h2 em {
font-style: normal;
}
#banner h1 {
font-size: 1.25em;
}
/* box properties (exclusive of borders), positioning, alignments, list types, text-indent */
#bodycol h2 {
margin-top: .3em;
margin-bottom: .5em;
}
p, ul, ol, dl, .bars table {
margin-top: .67em;
margin-bottom: .67em;
}
h3, h4 {
margin-bottom: 0;
}
form {
margin: 0;
}
#bodycol {
padding-left: 12px;
padding-right: 12px;
width: 100%;
voice-family: "\"}\"";
voice-family: inherit;
width: auto;
}
html>body #bodycol {
width: auto;
}
.docs {
line-height: 1.4;
}
ol ol {
list-style-type: lower-alpha;
}
ol ol ol {
list-style-type: lower-roman;
}
.app h3, .app h4 {
padding: 5px;
margin-right: 2px;
margin-left: 2px;
}
.app td, .app th {
padding: 2px 3px;
}
.h3 p, .h4 p, .h3 dt, .h4 dt {
margin-right: 7px;
margin-left: 7px;
}
.tasknav {
margin-bottom: 1.33em;
}
div.colbar {
padding: 3px;
margin: 2px 2px 0;
}
.tabs {
margin-top: .67em;
margin-right: 2px;
margin-left: 2px;
padding-left: 8px;
}
.tabs td, .tabs th {
padding: 3px 9px;
}
#rightcol div.www, #rightcol div.help {
padding: 0 .5em;
}
body.docs #toc {
position: absolute;
top: 15px;
left: 0px;
width: 120px;
padding: 0 20px 0 0;
}
body.docs #toc ul, #toc ol {
margin-left: 0;
padding-left: 0;
}
body.docs #toc li {
margin-top: 7px;
padding-left: 10px;
list-style-type: none;
}
body.docs div.docs {
margin: 61px 0 0 150px;
padding: 1em 2em 1em 1em !important;
}
.docs p+p {
text-indent: 5%;
margin-top: -.67em;
}
.docs h3, .docs h4 {
margin-bottom: .1em;
padding-top: .3em;
}
.functnbar, .functnbar2, .functnbar3 {
padding: 5px;
margin: .67em 2px;
}
.functnbar3 {
margin-top: 0;
}
body {
padding: 1em;
}
body.composite, body.docs {
margin: 0;
padding: 0;
}
th, td {
text-align: left;
vertical-align: top;
}
.right {
text-align: right !important;
}
.center {
text-align: center !important;
}
.axial th, .axial th .strut {
text-align: right;
}
.app .axial td th {
text-align: left;
}
body .stb {
margin-top: 1em;
text-indent: 0;
}
body .mtb {
margin-top: 2em;
text-indent: 0;
}
.courtesylinks {
margin-top: 1em;
padding-top: 1em;
}
dd {
margin-bottom: .67em;
}
.toolgroup {
margin-bottom: 6px;
}
.toolgroup .body {
padding: 4px 4px 4px 0;
}
.toolgroup .label {
padding: 4px;
}
.toolgroup .body div {
padding-bottom: .3em;
padding-left: 1em;
}
.toolgroup .body div div {
margin-top: .3em;
padding-bottom: 0;
}
.tier1 {
margin-left: 0;
}
.tier2 {
margin-left: 1.5em;
}
.tier3 {
margin-left: 3em;
}
.tier4 {
margin-left: 4.5em;
}
.tier5 {
margin-left: 6em;
}
.tier6 {
margin-left: 7.5em;
}
.tier7 {
margin-left: 9em;
}
.tier8 {
margin-left: 10.5em;
}
.tier9 {
margin-left: 12em;
}
.tier10 {
margin-left: 13.5em;
}
.filebrowse .expanded, .filebrowse .collapsed {
padding-left: 34px;
}
.filebrowse .leafnode, .filebrowse .leaf {
padding-left: 20px;
}
.messagechild {
padding-left: 34px;
}
.filebrowse-alt .expanded, .filebrowse-alt .collapsed, .filebrowse-alt .leaf, .filebrowse-alt .leafnode, .expandedwaste, .collapsedwaste, .sortup, .sortdown {
/* hide from macie5\*/
float: left;
/* resume */
display: inline-block;
height: 15px;
width: 34px;
padding-left: 0 !important;
}
.filebrowse-alt .leaf, .filebrowse-alt .leafnode, .sortup, .sortdown {
width: 20px;
}
.filebrowse ul, .filebrowse-alt ul {
list-style-type: none;
padding-left: 0;
margin-left: 0;
}
.filebrowse ul ul, .filebrowse-alt ul ul {
margin-left: 1.5em;
margin-top: 0;
padding-top: .67em;
}
.filebrowse li, .filebrowse-alt li {
margin-bottom: .67em;
}
td.filebrowse h3 {
margin-top: 0;
}
.errormessage, .warningmessage, .donemessage, .infomessage, .docinfo, .dirinfo, .memberinfo, .usergroupinfo {
margin: .67em 0;
padding: .33em 0 .67em 42px;
min-height: 32px;
}
.errormark, .warningmark, .donemark, .infomark {
padding-left: 20px;
min-height: 15px;
}
.alt {
display: none;
}
#banner h1 {
margin: 0;
}
#leftcol {
width: 14em;
}
.axial th, .axial th .strut, #leftcol .strut {
width: 12em;
}
#breadcrumbs {
padding: 2px 8px;
}
.app h3, .app h4, .bars {
clear: both;
}
.legend {
float: right;
}
.legend th, .bars th {
text-align: right;
padding-left: 1em;
}
.bars table {
table-layout: fixed;
}
.bars th {
width: 12em;
}
#projectdocumentlist td.filebrowse-alt {
padding-right: .75em;
}
</style>
@@ -0,0 +1,710 @@
<#--
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
-->
<style>
/* colors, backgrounds, borders, link indication */
body {
background: #fff;
color: #000;
}
.functnbar, .functnbar2 {
background-color: #aaa;
}
.functnbar2, .functnbar3 {
background-color: #aaa;
background-position: bottom left;
}
.functnbar3 {
background-color: #ddd;
}
.functnbar, .functnbar2, .functnbar3 {
color: #000;
}
.functnbar a, .functnbar2 a, .functnbar3 a {
color: #000;
text-decoration: underline;
}
#searchbox .body div, #navcolumn .body .heading {
background-image: none;
}
a:link, #navcolumn a:visited, .app a:visited, .tasknav a:visited {
color: blue;
}
a:link.selfref, a:visited.selfref {
color: #555 !important;
text-decoration: none;
}
a:active, a:hover, #leftcol a:active, #leftcol a:hover {
color: #f30 !important;
}
#leftcol a, #breadcrumbs a {
text-decoration: none;
}
.app h3, .app h4 {
color: #fff;
}
.app h3 {
background-color: #333;
}
.app h3 a:link, .app h3 a:visited, .app h4 a:link, .app h4 a:visited {
color: #fff !important;
text-decoration: underline;
}
.app h4 {
background-color: #888;
}
.a td {
background: #ddd;
}
.b td {
background: #efefef;
}
table, th, td {
border: none;
}
div.colbar {
background: #eee;
border-color: #999 #EEE #EEE #999;
border-width: 1px;
border-style: solid;
}
.toolgroup {
background: #efefef;
}
.toolgroup .label {
border-bottom: 1px solid #666;
border-right: 1px solid #666;
background: #ddd;
color: #555;
}
.toolgroup .body {
border-right: 1px solid #aaa;
border-bottom: 1px solid #aaa;
}
#breadcrumbs {
border-top: 1px solid #fff;
background-color: #ccc;
}
#main {
border-top: 1px solid #999;
margin-top: 40px;
}
#rightcol div.www, #rightcol div.help {
border: 1px solid #ddd;
}
body.docs div.docs {
background-color: #fff;
border-left: 1px solid #ddd;
border-top: 1px solid #ddd;
}
.docs h3, .docs h4 {
border-top: solid 1px #000;
}
#apphead h2 em {
color: #777;
}
.app th {
background-color: #bbb;
}
.tabs th {
border-right: 1px solid #333;
background-color: #ddd;
color: #fff;
border-left: 1px solid #fff;
}
.tabs td {
background-color: #999;
border-bottom: 1px solid #fff;
border-right: 1px solid #fff;
border-left: 1px solid #fff;
}
.tabs {
border-bottom: 6px #ddd solid;
}
.tabs th, .tabs th a:link, .tabs th a:visited {
color: #555;
}
.tabs td, .tabs td a:link, .tabs td a:visited {
color: #fff;
}
.tabs a {
text-decoration: none;
}
.axial th {
background-color: #ddd;
color: black;
}
.alert {
background-color: #ff9;
}
body .grid td {
border-top: 1px solid #ccc;
border-left: 1px solid #ccc;
background-color: transparent;
}
.confirm {
color: #090;
}
.info {
color: #069;
}
.errormessage, .warningmessage, .donemessage, .infomessage {
border-top: 5px solid #900;
border-left: 1px solid #900;
}
.warningmessage {
border-color: #c60;
}
.donemessage {
border-color: #090;
}
.infomessage {
border-color: #069;
}
.cvsdiff, .cvsblame {
background-color: #ccc;
}
.cvsdiffadd {
background-color: #afa;
}
.cvsdiffremove {
background-color: #faa;
}
.cvsdiffchanges1 {
background-color: #ff7;
}
.cvsdiffchanges2 {
background-color: #ff7;
}
li.selection ul a {
background: #fff;
}
.band1 {
color: #fff;
background-color: #663;
}
.band2 {
color: #fff;
background-color: #66C;
}
.band3 {
background-color: #C99;
}
.band4 {
background-color: #CFF;
}
.band5 {
color: #fff;
background-color: #336;
}
.band6 {
color: #fff;
background-color: #966;
}
.band7 {
background-color: #9CC;
}
.band8 {
background-color: #FFC;
}
.band9 {
color: #fff;
background-color: #633;
}
.band10 {
color: #fff;
background-color: #699;
}
.band11 {
background-color: #CC9;
}
.band12 {
background-color: #CCF;
}
.band13 {
color: #fff;
background-color: #366;
}
.band14 {
color: #fff;
background-color: #996;
}
.band15 {
background-color: #99C;
}
.band16 {
background-color: #FCC;
}
.app .helplink, #helptext .helplink {
cursor: help;
}
.legend th, .bars th {
background-color: #fff;
}
/* font and text properties, exclusive of link indication, alignment, text-indent */
body, th, td, input, select {
font-family: Verdana, Helvetica, Arial, sans-serif;
}
code, pre {
font-family: 'Andale Mono', Courier, monospace;
}
body, .app h3, .app h4, #rightcol h3, pre, code, #apphead h2 small {
font-size: x-small;
voice-family: "\"}\"";
voice-family: inherit;
font-size: small;
}
small, div#footer, div#login, div.tabs th, div.tabs td, input, select, .paginate, .functnbar, .functnbar2, .functnbar3, #breadcrumbs, .courtesylinks, #rightcol div.help, .colbar, .tasknav, body.docs div#toc, #leftcol, .legend, .bars {
font-size: xx-small;
voice-family: "\"}\"";
voice-family: inherit;
font-size: x-small;
}
.tabs td, .tabs th, dt, .tasknav .selfref, #login .username, .selection {
font-weight: bold;
}
li.selection ul {
font-weight: normal;
}
h4, table {
font-size: 1em;
}
#apphead h2 em {
font-style: normal;
}
#banner h1 {
font-size: 1.25em;
}
/* box properties (exclusive of borders), positioning, alignments, list types, text-indent */
#bodycol h2 {
margin-top: .3em;
margin-bottom: .5em;
}
p, ul, ol, dl, .bars table {
margin-top: .67em;
margin-bottom: .67em;
}
h3, h4 {
margin-bottom: 0;
}
form {
margin: 0;
}
#bodycol {
padding-left: 12px;
padding-right: 12px;
width: 100%;
voice-family: "\"}\"";
voice-family: inherit;
width: auto;
}
html > body #bodycol {
width: auto;
}
.docs {
line-height: 1.4;
}
ol ol {
list-style-type: lower-alpha;
}
ol ol ol {
list-style-type: lower-roman;
}
.app h3, .app h4 {
padding: 5px;
margin-right: 2px;
margin-left: 2px;
}
.app td, .app th {
padding: 2px 3px;
}
.h3 p, .h4 p, .h3 dt, .h4 dt {
margin-right: 7px;
margin-left: 7px;
}
.tasknav {
margin-bottom: 1.33em;
}
div.colbar {
padding: 3px;
margin: 2px 2px 0;
}
.tabs {
margin-top: .67em;
margin-right: 2px;
margin-left: 2px;
padding-left: 8px;
}
.tabs td, .tabs th {
padding: 3px 9px;
}
#rightcol div.www, #rightcol div.help {
padding: 0 .5em;
}
body.docs #toc {
position: absolute;
top: 15px;
left: 0px;
width: 120px;
padding: 0 20px 0 0;
}
body.docs #toc ul, #toc ol {
margin-left: 0;
padding-left: 0;
}
body.docs #toc li {
margin-top: 7px;
padding-left: 10px;
list-style-type: none;
}
body.docs div.docs {
margin: 61px 0 0 150px;
padding: 1em 2em 1em 1em !important;
}
.docs p + p {
text-indent: 5%;
margin-top: -.67em;
}
.docs h3, .docs h4 {
margin-bottom: .1em;
padding-top: .3em;
}
.functnbar, .functnbar2, .functnbar3 {
padding: 5px;
margin: .67em 2px;
}
.functnbar3 {
margin-top: 0;
}
body {
padding: 1em;
}
body.composite, body.docs {
margin: 0;
padding: 0;
}
th, td {
text-align: left;
vertical-align: top;
}
.right {
text-align: right !important;
}
.center {
text-align: center !important;
}
.axial th, .axial th .strut {
text-align: right;
}
.app .axial td th {
text-align: left;
}
body .stb {
margin-top: 1em;
text-indent: 0;
}
body .mtb {
margin-top: 2em;
text-indent: 0;
}
.courtesylinks {
margin-top: 1em;
padding-top: 1em;
}
dd {
margin-bottom: .67em;
}
.toolgroup {
margin-bottom: 6px;
}
.toolgroup .body {
padding: 4px 4px 4px 0;
}
.toolgroup .label {
padding: 4px;
}
.toolgroup .body div {
padding-bottom: .3em;
padding-left: 1em;
}
.toolgroup .body div div {
margin-top: .3em;
padding-bottom: 0;
}
.tier1 {
margin-left: 0;
}
.tier2 {
margin-left: 1.5em;
}
.tier3 {
margin-left: 3em;
}
.tier4 {
margin-left: 4.5em;
}
.tier5 {
margin-left: 6em;
}
.tier6 {
margin-left: 7.5em;
}
.tier7 {
margin-left: 9em;
}
.tier8 {
margin-left: 10.5em;
}
.tier9 {
margin-left: 12em;
}
.tier10 {
margin-left: 13.5em;
}
.filebrowse .expanded, .filebrowse .collapsed {
padding-left: 34px;
}
.filebrowse .leafnode, .filebrowse .leaf {
padding-left: 20px;
}
.messagechild {
padding-left: 34px;
}
.filebrowse-alt .expanded, .filebrowse-alt .collapsed, .filebrowse-alt .leaf, .filebrowse-alt .leafnode, .expandedwaste, .collapsedwaste, .sortup, .sortdown {
/* hide from macie5\*/
float: left;
/* resume */
display: inline-block;
height: 15px;
width: 34px;
padding-left: 0 !important;
}
.filebrowse-alt .leaf, .filebrowse-alt .leafnode, .sortup, .sortdown {
width: 20px;
}
.filebrowse ul, .filebrowse-alt ul {
list-style-type: none;
padding-left: 0;
margin-left: 0;
}
.filebrowse ul ul, .filebrowse-alt ul ul {
margin-left: 1.5em;
margin-top: 0;
padding-top: .67em;
}
.filebrowse li, .filebrowse-alt li {
margin-bottom: .67em;
}
td.filebrowse h3 {
margin-top: 0;
}
.errormessage, .warningmessage, .donemessage, .infomessage, .docinfo, .dirinfo, .memberinfo, .usergroupinfo {
margin: .67em 0;
padding: .33em 0 .67em 42px;
min-height: 32px;
}
.errormark, .warningmark, .donemark, .infomark {
padding-left: 20px;
min-height: 15px;
}
.alt {
display: none;
}
#banner h1 {
margin: 0;
}
#leftcol {
width: 14em;
}
.axial th, .axial th .strut, #leftcol .strut {
width: 12em;
}
#breadcrumbs {
padding: 2px 8px;
}
.app h3, .app h4, .bars {
clear: both;
}
.legend {
float: right;
}
.legend th, .bars th {
text-align: right;
padding-left: 1em;
}
.bars table {
table-layout: fixed;
}
.bars th {
width: 12em;
}
#projectdocumentlist td.filebrowse-alt {
padding-right: .75em;
}
</style>
@@ -24,19 +24,19 @@
<head>
<title>${pageTitle}</title>
<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1" />
<#include "/config-browser/config-styles.css" parse="y"></head>
<#include "/config-browser/config-styles.ftl" parse="y"></head>
<body class="composite" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0">
<div id="breadcrumbs">
<table border="0" cellspacing="0" cellpadding="4" width="100%">
<tr>
<td>
<td>
Struts Configuration Browser > ${pageTitle}
</td>
</tr>
</table>
</div>
</div>
<table border="0" cellspacing="0" cellpadding="4" width="100%" id="main">
<tr valign="top">
<#if !hideNav??> <td id="leftcol" width="20%">
@@ -94,4 +94,4 @@
<div id="apphead">
<h2>${pageTitle}</h2>
</div>
<div id="content" class="app">
<div id="content" class="app">
@@ -20,18 +20,28 @@
-->
<!-- Validators -->
<table width="100%">
<tr><th>Field</th><th>Type</th><th>&nbsp;</th></tr>
<tr>
<th>Field</th>
<th>Type</th>
<th>&nbsp;</th>
</tr>
<#assign row = 0>
<#if validators??>
<#foreach i in validators>
<tr <#if i_index%2 gt 0>class="b"<#else>class="a"</#if>>
<td>${i.fieldName!"(see expression)"}</td>
<td>${action.stripPackage(i.class)}</td>
<td>
<a href="#" onClick="window.open('validatorDetails.${extension}?clazz=${clazz}&context=${context}&selected=${row}', 'Validator Details', 'resizable=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,width=640,height=480');">details</a>
</td>
</tr>
<#assign row = row + 1>
<#if validators??>
<#foreach i in validators>
<tr <#if i_index%2 gt 0>class="b" <#else>class="a"</#if>>
<td>${i.fieldName!"(see expression)"}</td>
<td>${action.stripPackage(i.class)}</td>
<td>
<a href="#" id="showValidators_${row}">details</a>
<@s.script>
document.getElementById('showValidators_${row}').onclick = function() {
window.open('validatorDetails.${extension}?clazz=${clazz}&context=${context}&selected=${row}', 'Validator Details', 'resizable=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,width=1280,height=800');
return false;
}
</@s.script>
</td>
</tr>
<#assign row = row + 1>
</#foreach>
</#if>
</#if>
</table>
@@ -21,7 +21,7 @@
<#include "tigris-macros.ftl">
<#assign hideNav = true>
<#call startPage pageTitle="Validator Details"/>
<table>
<table style="margin-top: 40px">
<tr><td>Validated Class:</td><td>${action.stripPackage(clazz)}</td></tr>
<tr><td>Context:</td><td>${context}</td></tr>
<tr><td>Validator Number:</td><td>${selected}</td></tr>
@@ -34,7 +34,11 @@
<td>${prop.name}</td>
<td><#if prop.value??>
<#if prop.value?is_collection>(size = ${prop.value?size})<#foreach v in prop.value>${v.value}, </#foreach>
<#else>${prop.value?string}</#if>
<#elseif prop.value?is_date_like>
${prop.value?datetime}
<#else>
${prop.value?string}
</#if>
<#else> <b>null</b> </#if></td>
<td><#if prop.value?? && prop.value?is_collection>(collection)<#else>${prop.type.name}</#if></td>
</tr>