WW-5465 Renames tag parameters to attributes

This commit is contained in:
Lukasz Lenart
2024-10-06 18:56:01 +02:00
parent ddc29445ff
commit 00f979e9c2
142 changed files with 1481 additions and 1496 deletions
@@ -21,6 +21,6 @@
<div style="background-color:yellow;">
<p>
Freemarker Custom Template -
parameter 'paramName' - ${parameters.paramName}
parameter 'paramName' - ${attributes.paramName}
</p>
</div>
@@ -22,22 +22,22 @@
Make sure element is always present. To be filled later via JS.
-->
<ul<#rt/>
<#if parameters.id??>
id="${parameters.id}"<#rt/>
</#if>
<#if parameters.cssClass??>
class="${parameters.cssClass}"<#rt/>
<#if attributes.id??>
id="${attributes.id}"<#rt/>
</#if>
<#if attributes.cssClass??>
class="${attributes.cssClass}"<#rt/>
<#else>
class="errorMessage"<#rt/>
</#if>
<#if parameters.cssStyle??>
style="${parameters.cssStyle}"<#rt/>
<#if attributes.cssStyle??>
style="${attributes.cssStyle}"<#rt/>
</#if>
>
<#if (actionErrors?? && actionErrors?size > 0)>
<#list actionErrors as error>
<#if error??>
<li><span><#if parameters.escape>${error!}<#else>${error!}</#if></span><#rt/></li><#rt/>
<li><span><#if attributes.escape>${error!}<#else>${error!}</#if></span><#rt/></li><#rt/>
</#if>
</#list>
</#if>
@@ -18,16 +18,16 @@
* under the License.
*/
-->
${parameters.after!}<#t/>
${attributes.after!}<#t/>
</td><#lt/>
</tr>
<#if (parameters.errorposition!"top") == 'bottom'>
<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors.get(parameters.name)??/>
<#if (attributes.errorposition!"top") == 'bottom'>
<#assign hasFieldErrors = attributes.name?? && fieldErrors?? && fieldErrors.get(attributes.name)??/>
<#if hasFieldErrors>
<tr errorFor="${parameters.id}">
<tr errorFor="${attributes.id}">
<td class="tdErrorMessage" colspan="2"><#rt/>
<#if hasFieldErrors>
<#list fieldErrors.get(parameters.name) as error>
<#list fieldErrors.get(attributes.name) as error>
<div class="errorMessage">${error}</div><#t/>
</#list>
</#if>
@@ -21,22 +21,22 @@
<#--
Always include elements to show errors. They may be filled later via AJAX.
-->
<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors.get(parameters.name)??/>
<#if (parameters.errorposition!"top") == 'top'>
<tr errorFor="${parameters.id}">
<td class="tdErrorMessage" colspan="2" data-error-for-fieldname="${parameters.name}"><#rt/>
<#assign hasFieldErrors = attributes.name?? && fieldErrors?? && fieldErrors.get(attributes.name)??/>
<#if (attributes.errorposition!"top") == 'top'>
<tr errorFor="${attributes.id}">
<td class="tdErrorMessage" colspan="2" data-error-for-fieldname="${attributes.name}"><#rt/>
<#if hasFieldErrors>
<#list fieldErrors.get(parameters.name) as error>
<#list fieldErrors.get(attributes.name) as error>
<div class="errorMessage">${error}</div><#t/>
</#list>
</#if>
</td><#lt/>
</tr>
</#if>
<#if !parameters.labelPosition?? && (parameters.form.labelPosition)??>
<#assign labelPos = parameters.form.labelPosition/>
<#elseif parameters.labelPosition??>
<#assign labelpos = parameters.labelPosition/>
<#if !attributes.labelPosition?? && (attributes.form.labelPosition)??>
<#assign labelPos = attributes.form.labelPosition/>
<#elseif attributes.labelPosition??>
<#assign labelpos = attributes.labelPosition/>
</#if>
<#--
if the label position is top,
@@ -48,10 +48,10 @@
<#else>
<td class="tdLabel"><#rt/>
</#if>
<#if parameters.label??>
<#if attributes.label??>
<label <#t/>
<#if parameters.id??>
for="${parameters.id}" <#t/>
<#if attributes.id??>
for="${attributes.id}" <#t/>
</#if>
<#if hasFieldErrors>
class="errorLabel"<#t/>
@@ -59,15 +59,15 @@
class="label"<#t/>
</#if>
><#t/>
<#if parameters.required!false && parameters.requiredPosition!"right" != 'right'>
<#if attributes.required!false && attributes.requiredPosition!"right" != 'right'>
<span class="required">*</span><#t/>
</#if>
${parameters.label}<#t/>
<#if parameters.required!false && parameters.requiredPosition!"right" == 'right'>
${attributes.label}<#t/>
<#if attributes.required!false && attributes.requiredPosition!"right" == 'right'>
<span class="required">*</span><#t/>
</#if>
${parameters.labelseparator!":"}<#t/>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/tooltip.ftl" />
${attributes.labelseparator!":"}<#t/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/tooltip.ftl" />
</label><#t/>
</#if>
</td><#lt/>
@@ -1,19 +1,19 @@
<!--
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* 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
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* 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
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
@@ -21,68 +21,68 @@
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Struts2 Showcase - UI Tags - Component Tag</title>
<s:head/>
<title>Struts2 Showcase - UI Tags - Component Tag</title>
<s:head/>
</head>
<body>
<div class="page-header">
<h1>UI Tags - Component Tag</h1>
<h1>UI Tags - Component Tag</h1>
</div>
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<p>This example tries to demonstrates the usage of &lt;s:component ... &gt; tag.<p/>
<div class="row">
<div class="col-md-12">
<p>This example tries to demonstrate the usage of &lt;s:component ... &gt; tag.</p>
<p>To have a look at the source of this jsp page click
<s:url var="url" action="showComponentTagExampleCode" namespace="/tags/ui"/>
<s:a href="%{#url}">here</s:a>
<p/>
<p>To have a look at the source of this jsp page click
<s:url var="url" action="showComponentTagExampleCode" namespace="/tags/ui"/>
<s:a href="%{#url}">here</s:a>
</p>
<b>Example 1:</b>
<p>This example load the template from the webapp context path using
the default (ftl) as its template.
<s:component
theme="customTheme"
templateDir="customTemplateDir"
template="ftlCustomTemplate">
<s:param name="paramName" value="%{'paramValue1'}" />
</s:component>
<p/>
<b>Example 1:</b>
<p>This example load the template from the webapp context path using
the default (ftl) as its template.
<s:component
theme="customTheme"
templateDir="customTemplateDir"
template="ftlCustomTemplate">
<s:param name="paramName" value="%{'paramValue1'}"/>
</s:component>
</p>
<b>Example 2:</b>
<p>This example load the template from the webapp context path using
jsp as its template (notice the *.jsp extension to the template).
<s:component
theme="customTheme"
templateDir="customTemplateDir"
template="jspCustomTemplate.jsp">
<s:param name="paramName" value="%{'paramValue2'}" />
</s:component>
<p/>
<b>Example 2:</b>
<p>This example load the template from the webapp context path using
jsp as its template (notice the *.jsp extension to the template).
<s:component
theme="customTheme"
templateDir="customTemplateDir"
template="jspCustomTemplate.jsp">
<s:param name="paramName" value="%{'paramValue2'}"/>
</s:component>
</p>
<b>Example 3</b>
<p>This example load the template from the webapp context path,
using the default template directory and theme (default to
'template' and 'xhtml' respectively)
<s:component template="mytemplate.jsp">
<s:param name="paramName" value="%{'paramValue3'}" />
</s:component>
<p/>
<b>Example 3</b>
<p>This example load the template from the webapp context path,
using the default template directory and theme (default to
'template' and 'xhtml' respectively)
<s:component template="mytemplate.jsp">
<s:param name="paramName" value="%{'paramValue3'}"/>
</s:component>
</p>
<b>Example 4</b>
<p>This example load the template from the webapp classpath using
a custom themplate directory and theme.
<s:component
theme="myTheme"
templateDir="myTemplateDir"
template="myAnotherTemplate">
<s:param name="paramName" value="%{'paramValue4'}" />
</s:component>
<p/>
</div>
</div>
<b>Example 4</b>
<p>This example load the template from the webapp classpath using
a custom themplate directory and theme.
<s:component
theme="myTheme"
templateDir="myTemplateDir"
template="myAnotherTemplate">
<s:param name="paramName" value="%{'paramValue4'}"/>
</s:component>
</p>
</div>
</div>
</div>
</body>
</html>
@@ -21,7 +21,7 @@
<div style="background-color:yellow;">
<p>
Freemarker Custom Template -
parameter 'paramName' - ${parameters.paramName}
parameter 'paramName' - ${attributes.paramName}
</p>
</div>
@@ -22,7 +22,7 @@
<div style="background-color:yellow;">
<p>
JSP Custom Template -
parameter 'paramName' - <s:property value="%{top.parameters.paramName}" />
JSP Custom Template -
parameter 'paramName' - <s:property value="%{attributes.paramName}" />
</p>
</div>
@@ -23,6 +23,6 @@
<div style="background-color:yellow;">
<p>
JSP Custom Template -
parameter 'paramName' - <s:property value="%{parameters.paramName}" />
parameter 'paramName' - <s:property value="%{attributes.paramName}" />
</p>
</div>
@@ -194,10 +194,10 @@ public class ActionComponent extends ContextBean {
}
/**
* Creates parameters map using parameters from the value stack and component parameters. Any non-String array
* values will be converted into a single-value String array.
* Creates {@link HttpParameters} using parameters from the value stack and component attributes.
* Any non-String array values will be converted into a single-value String array.
*
* @return A map of String[] parameters
* @return Instance of {@link HttpParameters}
*/
protected HttpParameters createParametersForContext() {
HttpParameters parentParams = null;
@@ -208,8 +208,8 @@ public class ActionComponent extends ContextBean {
HttpParameters.Builder builder = HttpParameters.create().withParent(parentParams);
if (parameters != null) {
builder = builder.withExtraParams(parameters);
if (attributes != null) {
builder = builder.withExtraParams(attributes);
}
return builder.build();
}
@@ -71,7 +71,7 @@ public class Anchor extends ClosingUIBean {
protected boolean processingTagBody = false;
//these params are passed by the Param tag
protected Map urlParameters = new LinkedHashMap();
protected Map<String, Object> urlParameters = new LinkedHashMap<>();
public Anchor(ValueStack stack, HttpServletRequest request, HttpServletResponse response) {
super(stack, request, response);
@@ -172,16 +172,16 @@ public class Anchor extends ClosingUIBean {
}
@Override
public void addAllParameters(Map params) {
public void addAllAttributes(Map<String, Object> additionalAttributes) {
/*
the parameters added by this method are used in the template. this method is also
called by Param to add params into ancestestor. This tag needs to keep both set of parameters
The attributes added by this method are used in the template. This method is also
called by Param to add attributes into an ancestor. This tag needs to keep both set of parameters
separated (You gotta keep 'em separated!)
*/
if (processingTagBody) {
this.urlParameters.putAll(params);
this.urlParameters.putAll(additionalAttributes);
} else {
super.addAllParameters(params);
super.addAllAttributes(additionalAttributes);
}
}
@@ -52,49 +52,49 @@ import java.util.List;
* <li>Third Entry of the Third ITerator</li>
* </ol>
* <!-- END SNIPPET: javadoc -->
*
* <p>
* <!-- START SNIPPET: params -->
* <ul>
* <li>var (String) - the name of which if supplied will have the resultant
* appended iterator stored under in the stack's context</li>
* </ul>
* <!-- END SNIPPET: params -->
*
*
* <p>
* <p>
* <!-- START SNIPPET: code -->
* public class AppendIteratorTagAction extends ActionSupport {
*
* <p>
* private List myList1;
* private List myList2;
* private List myList3;
*
*
* <p>
* <p>
* public String execute() throws Exception {
*
* <p>
* myList1 = new ArrayList();
* myList1.add("1");
* myList1.add("2");
* myList1.add("3");
*
* <p>
* myList2 = new ArrayList();
* myList2.add("a");
* myList2.add("b");
* myList2.add("c");
*
* <p>
* myList3 = new ArrayList();
* myList3.add("A");
* myList3.add("B");
* myList3.add("C");
*
* <p>
* return "done";
* }
*
* <p>
* public List getMyList1() { return myList1; }
* public List getMyList2() { return myList2; }
* public List getMyList3() { return myList3; }
*}
* }
* <!-- END SNIPPET: code -->
*
* <p>
* <!-- START SNIPPET: example -->
* &lt;s:append var="myAppendIterator"&gt;
* &lt;s:param value="%{myList1}" /&gt;
@@ -106,18 +106,16 @@ import java.util.List;
* &lt;/s:iterator&gt;
* <!-- END SNIPPET: example -->
*
*
* @see org.apache.struts2.util.AppendIteratorFilter
* @see org.apache.struts2.views.jsp.iterator.AppendIteratorTag
*
*/
@StrutsTag(name="append", tldTagClass="org.apache.struts2.views.jsp.iterator.AppendIteratorTag", description="Append the values of a list of iterators to one iterator")
@StrutsTag(name = "append", tldTagClass = "org.apache.struts2.views.jsp.iterator.AppendIteratorTag", description = "Append the values of a list of iterators to one iterator")
public class AppendIterator extends ContextBean implements UnnamedParametric {
private static final Logger LOG = LogManager.getLogger(AppendIterator.class);
private AppendIteratorFilter appendIteratorFilter= null;
private List _parameters;
private AppendIteratorFilter appendIteratorFilter = null;
private List<Object> attributesToAppend;
public AppendIterator(ValueStack stack) {
super(stack);
@@ -125,7 +123,7 @@ public class AppendIterator extends ContextBean implements UnnamedParametric {
@Override
public boolean start(Writer writer) {
_parameters = new ArrayList();
attributesToAppend = new ArrayList<>();
appendIteratorFilter = new AppendIteratorFilter();
return super.start(writer);
@@ -133,9 +131,7 @@ public class AppendIterator extends ContextBean implements UnnamedParametric {
@Override
public boolean end(Writer writer, String body) {
for (Object iteratorEntryObj : _parameters) {
for (Object iteratorEntryObj : attributesToAppend) {
if (!MakeIterator.isIterable(iteratorEntryObj)) {
LOG.warn("param with value resolved as {} cannot be make as iterator, it will be ignored and hence will not appear in the merged iterator", iteratorEntryObj);
continue;
@@ -155,10 +151,10 @@ public class AppendIterator extends ContextBean implements UnnamedParametric {
// UnnamedParametric implementation --------------------------------------
@Override
public void addParameter(Object value) {
_parameters.add(value);
attributesToAppend.add(value);
}
@StrutsTagAttribute(description="The name of which if supplied will have the resultant appended iterator stored under in the stack's context")
@StrutsTagAttribute(description = "The name of which if supplied will have the resultant appended iterator stored under in the stack's context")
@Override
public void setVar(String var) {
super.setVar(var);
@@ -71,7 +71,7 @@ public class Component {
protected boolean devMode = false;
protected boolean escapeHtmlBody = false;
protected ValueStack stack;
protected Map<String, Object> parameters;
protected Map<String, Object> attributes;
protected ActionMapper actionMapper;
protected boolean throwExceptionOnELFailure;
protected boolean performClearTagStateForTagPoolingServers = false;
@@ -86,7 +86,7 @@ public class Component {
*/
public Component(ValueStack stack) {
this.stack = stack;
this.parameters = new LinkedHashMap<>();
this.attributes = new LinkedHashMap<>();
getComponentStack().push(this);
}
@@ -279,7 +279,7 @@ public class Component {
*/
protected StrutsException fieldError(String field, String errorMsg, Exception e) {
String msg = "tag '" + getComponentName() + "', field '" + field +
(parameters != null && parameters.containsKey("name") ? "', name '" + parameters.get("name") : "") +
(attributes != null && attributes.containsKey("name") ? "', name '" + attributes.get("name") : "") +
"': " + errorMsg;
throw new StrutsException(msg, e);
}
@@ -454,20 +454,20 @@ public class Component {
* pushed before the component itself, any key-value pair that can't be assigned to component
* will be set in the parameters Map.
*
* @param params the parameters to copy.
* @param attributesToCopy the attributes to copy.
*/
public void copyParams(Map<String, Object> params) {
stack.push(parameters);
public void copyAttributes(Map<String, Object> attributesToCopy) {
stack.push(attributes);
stack.push(this);
try {
for (Map.Entry<String, Object> entry : params.entrySet()) {
for (Map.Entry<String, Object> entry : attributesToCopy.entrySet()) {
String key = entry.getKey();
if (key.indexOf('-') >= 0) {
// UI component attributes may contain hypens (e.g. data-ajax), but ognl
// can't handle that, and there can't be a component property with a hypen
// so into the parameters map it goes. See WW-4493
parameters.put(key, entry.getValue());
// so into the attributes map it goes. See WW-4493
attributes.put(key, entry.getValue());
} else {
stack.setValue(key, entry.getValue());
}
@@ -493,21 +493,21 @@ public class Component {
}
/**
* Gets the parameters.
* Gets the attributes.
*
* @return the parameters. Is never <tt>null</tt>.
* @return the attributes. It's never <tt>null</tt>.
*/
public Map<String, Object> getParameters() {
return parameters;
public Map<String, Object> getAttributes() {
return attributes;
}
/**
* Adds all the given parameters to this component's own parameters.
* Adds all the given attributes to this component's own attributes.
*
* @param params the parameters to add.
* @param additionalAttributes the attributes to add.
*/
public void addAllParameters(Map<String, Object> params) {
parameters.putAll(params);
public void addAllAttributes(Map<String, Object> additionalAttributes) {
attributes.putAll(additionalAttributes);
}
/**
@@ -522,7 +522,7 @@ public class Component {
*/
public void addParameter(String key, Object value) {
if (key != null) {
Map<String, Object> params = getParameters();
Map<String, Object> params = getAttributes();
if (value == null) {
params.remove(key);
@@ -164,7 +164,7 @@ public abstract class DoubleListUIBean extends ListUIBean {
// ok, let's look it up
Component form = findAncestor(Form.class);
if (form != null) {
addParameter("formName", form.getParameters().get("name"));
addParameter("formName", form.getAttributes().get("name"));
}
}
@@ -188,7 +188,7 @@ public abstract class DoubleListUIBean extends ListUIBean {
if (doubleId != null) {
addParameter("doubleId", findString(doubleId));
} else if (form != null) {
addParameter("doubleId", form.getParameters().get("id") + "_" + escape(doubleName != null ? findString(doubleName) : null));
addParameter("doubleId", form.getAttributes().get("id") + "_" + escape(doubleName != null ? findString(doubleName) : null));
} else {
addParameter("doubleId", escape(doubleName != null ? findString(doubleName) : null));
}
@@ -57,7 +57,7 @@ public class DoubleSelect extends DoubleListUIBean {
public void evaluateExtraParams() {
super.evaluateExtraParams();
StringBuilder onchangeParam = new StringBuilder();
onchangeParam.append(getParameters().get("id")).append("Redirect(this.selectedIndex)");
onchangeParam.append(getAttributes().get("id")).append("Redirect(this.selectedIndex)");
if(StringUtils.isNotEmpty(this.onchange)) {
onchangeParam.append(";").append(this.onchange);
}
@@ -67,13 +67,13 @@ public class File extends UIBean {
Form form = (Form) findAncestor(Form.class);
if (form != null) {
String encType = (String) form.getParameters().get("enctype");
String encType = (String) form.getAttributes().get("enctype");
if (!"multipart/form-data".equals(encType)) {
// uh oh, this isn't good! Let's warn the developer
LOG.warn("Struts has detected a file upload UI tag (s:file) being used without a form set to enctype 'multipart/form-data'. This is probably an error!");
}
String method = (String) form.getParameters().get("method");
String method = (String) form.getAttributes().get("method");
if (!"post".equalsIgnoreCase(method)) {
// uh oh, this isn't good! Let's warn the developer
LOG.warn("Struts has detected a file upload UI tag (s:file) being used without a form set to method 'POST'. This is probably an error!");
@@ -172,7 +172,7 @@ public class Form extends ClosingUIBean {
if (name == null) {
//make the name the same as the id
String id = (String) getParameters().get("id");
String id = (String) getAttributes().get("id");
if (StringUtils.isNotEmpty(id)) {
addParameter("name", id);
}
@@ -204,7 +204,7 @@ public class Form extends ClosingUIBean {
// keep a collection of the tag names for anything special the templates might want to do (such as pure client
// side validation)
if (!parameters.containsKey("tagNames")) {
if (!attributes.containsKey("tagNames")) {
// we have this if check so we don't do this twice (on open and close of the template)
addParameter("tagNames", new ArrayList());
}
@@ -242,7 +242,7 @@ public class Form extends ClosingUIBean {
protected void evaluateClientSideJsEnablement(String actionName, String namespace, String actionMethod) {
// Only evaluate if Client-Side js is to be enable when validate=true
Boolean validate = (Boolean) getParameters().get("validate");
Boolean validate = (Boolean) getAttributes().get("validate");
if (validate != null && validate) {
addParameter("performValidation", Boolean.FALSE);
@@ -269,7 +269,7 @@ public class Form extends ClosingUIBean {
}
public List getValidators(String name) {
Class actionClass = (Class) getParameters().get("actionClass");
Class actionClass = (Class) getAttributes().get("actionClass");
if (actionClass == null) {
return Collections.EMPTY_LIST;
}
@@ -278,7 +278,7 @@ public class Form extends ClosingUIBean {
ActionMapping mapping = actionMapper.getMappingFromActionName(formActionValue);
if (mapping == null) {
mapping = actionMapper.getMappingFromActionName((String) getParameters().get("actionName"));
mapping = actionMapper.getMappingFromActionName((String) getAttributes().get("actionName"));
}
if (mapping == null) {
@@ -55,7 +55,7 @@ public abstract class FormButton extends ClosingUIBean {
addParameter("type", submitType);
if (!BUTTON_TYPE_INPUT.equals(submitType) && (label == null)) {
addParameter("label", getParameters().get("nameValue"));
addParameter("label", getAttributes().get("nameValue"));
}
if (action != null || method != null) {
@@ -98,8 +98,8 @@ public abstract class FormButton extends ClosingUIBean {
// this check is needed for backwards compatibility with 2.1.x
tmpId = findString(id);
} else {
if (form != null && form.getParameters().get("id") != null) {
tmpId = tmpId + form.getParameters().get("id").toString() + "_";
if (form != null && form.getAttributes().get("id") != null) {
tmpId = tmpId + form.getAttributes().get("id").toString() + "_";
}
if (name != null) {
tmpId = tmpId + escape(findString(name));
@@ -34,23 +34,23 @@ import com.opensymphony.xwork2.util.ValueStack;
* </p>
*
* <p><b>Freemarker:</b></p>
* <pre>Objects provided can be retrieve from within the template via $parameters._paramname_.</pre>
* <pre>Objects provided can be retrieve from within the template via $attributes._attrname_.</pre>
*
* <p><b>JSP:</b></p>
* <pre>Objects provided can be retrieve from within the template via &lt;s:property value="%{parameters._paramname_}" /&gt;</pre>
* <pre>Objects provided can be retrieve from within the template via &lt;s:property value="%{attributes._attrname_}" /&gt;</pre>
*
* <p>
* In the bottom JSP and Velocity samples, two parameters are being passed in to the component. From within the
* In the bottom JSP and Velocity samples, two attributes are being passed in to the component. From within the
* component, they can be accessed as:
* </p>
*
* <p><b>Freemarker:</b></p>
* <pre>$parameters.get('key1') and $parameters.get('key2') or $parameters.key1 and $parameters.key2</pre>
* <pre>$attributes.get('key1') and $attributes.get('key2') or $attributes.key1 and $attributes.key2</pre>
*
* <p><b>JSP:</b></p>
* <pre>
* &lt;s:property value="%{parameters.key1}" /&gt; and &lt;s:property value="%{'parameters.key2'}" /&gt; or
* &lt;s:property value="%{parameters.get('key1')}" /&gt; and &lt;s:property value="%{parameters.get('key2')}" /&gt;
* &lt;s:property value="%{attributes.key1}" /&gt; and &lt;s:property value="%{'attributes.key2'}" /&gt; or
* &lt;s:property value="%{attributes.get('key1')}" /&gt; and &lt;s:property value="%{attributes.get('key2')}" /&gt;
* </pre>
*
* <p>
@@ -144,13 +144,13 @@ public class Include extends Component {
urlBuf.append(page);
// Add request parameters
if (!parameters.isEmpty()) {
if (!attributes.isEmpty()) {
urlBuf.append('?');
String concat = "";
// Set parameters
for (Map.Entry<String, Object> entry : parameters.entrySet()) {
for (Map.Entry<String, Object> entry : attributes.entrySet()) {
Object name = entry.getKey();
List values = (List) entry.getValue();
@@ -235,11 +235,11 @@ public class Include extends Component {
// instead, include tag requires that each parameter be a list of objects,
// just like the HTTP servlet interfaces are (String[])
if (value != null) {
List currentValues = (List) parameters.get(key);
List currentValues = (List) attributes.get(key);
if (currentValues == null) {
currentValues = new ArrayList();
parameters.put(key, currentValues);
attributes.put(key, currentValues);
}
currentValues.add(value);
@@ -174,7 +174,7 @@ public class InputTransferSelect extends ListUIBean {
// key -> select tag id, value -> headerKey (if exists)
Map formInputtransferselectIds = (Map) formAncestor.getParameters().get("inputtransferselectIds");
Map formInputtransferselectIds = (Map) formAncestor.getAttributes().get("inputtransferselectIds");
// init lists
if (formInputtransferselectIds == null) {
@@ -182,13 +182,13 @@ public class InputTransferSelect extends ListUIBean {
}
// id
String tmpId = (String) getParameters().get("id");
String tmpHeaderKey = (String) getParameters().get("headerKey");
String tmpId = (String) getAttributes().get("id");
String tmpHeaderKey = (String) getAttributes().get("headerKey");
if (tmpId != null && (! formInputtransferselectIds.containsKey(tmpId))) {
formInputtransferselectIds.put(tmpId, tmpHeaderKey);
}
formAncestor.getParameters().put("inputtransferselectIds", formInputtransferselectIds);
formAncestor.getAttributes().put("inputtransferselectIds", formInputtransferselectIds);
}
else {
@@ -79,7 +79,7 @@ public class Label extends UIBean {
if (value != null) {
addParameter("nameValue", findString(value));
} else if (key != null) {
Object nameValue = parameters.get("nameValue");
Object nameValue = attributes.get("nameValue");
if (nameValue == null || nameValue.toString().isEmpty()) {
// get the label from a TextProvider (default value is the key)
String providedLabel = TextProviderHelper.getText(key, key, stack);
@@ -67,7 +67,7 @@ public abstract class ListUIBean extends UIBean {
Object value;
if (list == null) {
list = parameters.get("list");
list = attributes.get("list");
}
if (list instanceof String) {
@@ -55,56 +55,56 @@ import java.util.List;
* <li>Display third element of the thrid list</li>
* </ol>
* <!-- END SNIPPET: javadoc -->
*
* <p>
* <!-- START SNIPPET: params -->
* <ul>
* <li>var (String) - the name where the resultant merged iterator will be stored in the stack's context</li>
* </ul>
* <!-- END SNIPPET: params -->
*
*
* <p>
* <p>
* <!-- START SNIPPET: javacode -->
* public class MergeIteratorTagAction extends ActionSupport {
*
* <p>
* private List myList1;
* private List myList2;
* private List myList3;
*
* <p>
* public List getMyList1() {
* return myList1;
* }
*
* <p>
* public List getMyList2() {
* return myList2;
* }
*
* <p>
* public List getMyList3() {
* return myList3;
* }
*
*
* <p>
* <p>
* public String execute() throws Exception {
*
* <p>
* myList1 = new ArrayList();
* myList1.add("1");
* myList1.add("2");
* myList1.add("3");
*
* <p>
* myList2 = new ArrayList();
* myList2.add("a");
* myList2.add("b");
* myList2.add("c");
*
* <p>
* myList3 = new ArrayList();
* myList3.add("A");
* myList3.add("B");
* myList3.add("C");
*
* <p>
* return "done";
* }
* }
* <!-- END SNIPPET: javacode -->
*
* <p>
* <!-- START SNIPPET: example -->
* &lt;s:merge var="myMergedIterator1"&gt;
* &lt;s:param value="%{myList1}" /&gt;
@@ -115,23 +115,22 @@ import java.util.List;
* &lt;s:property /&gt;
* &lt;/s:iterator&gt;
* <!-- END SNIPPET: example -->
*
* <p>
* <!-- START SNIPPET: description -->
* This wil generate "1aA2bB3cC".
* <!-- START SNIPPET: description -->
*
* @see org.apache.struts2.util.MergeIteratorFilter
* @see org.apache.struts2.views.jsp.iterator.MergeIteratorTag
*
*/
@StrutsTag(name="merge", tldTagClass="org.apache.struts2.views.jsp.iterator.MergeIteratorTag", description="Merge the values " +
"of a list of iterators into one iterator")
@StrutsTag(name = "merge", tldTagClass = "org.apache.struts2.views.jsp.iterator.MergeIteratorTag",
description = "Merge the values of a list of iterators into one iterator")
public class MergeIterator extends ContextBean implements UnnamedParametric {
private static final Logger LOG = LogManager.getLogger(MergeIterator.class);
private MergeIteratorFilter mergeIteratorFilter = null;
private List _parameters;
private List<Object> attributesToMerge;
public MergeIterator(ValueStack stack) {
super(stack);
@@ -140,15 +139,14 @@ public class MergeIterator extends ContextBean implements UnnamedParametric {
public boolean start(Writer writer) {
mergeIteratorFilter = new MergeIteratorFilter();
_parameters = new ArrayList();
attributesToMerge = new ArrayList<>();
return super.start(writer);
}
public boolean end(Writer writer, String body) {
for (Object iteratorEntryObj : _parameters) {
if (! MakeIterator.isIterable(iteratorEntryObj)) {
for (Object iteratorEntryObj : attributesToMerge) {
if (!MakeIterator.isIterable(iteratorEntryObj)) {
LOG.warn("param with value resolved as {} cannot be make as iterator, it will be ignored and hence will not appear in the merged iterator", iteratorEntryObj);
continue;
}
@@ -165,13 +163,12 @@ public class MergeIterator extends ContextBean implements UnnamedParametric {
return super.end(writer, body);
}
@StrutsTagAttribute(description="The name where the resultant merged iterator will be stored in the stack's context")
@StrutsTagAttribute(description = "The name where the resultant merged iterator will be stored in the stack's context")
public void setVar(String var) {
super.setVar(var);
}
// == UnnamedParametric interface implementation ---------------------
public void addParameter(Object value) {
_parameters.add(value);
attributesToMerge.add(value);
}
}
@@ -104,7 +104,7 @@ public class OptGroup extends Component {
internalUiBean.start(writer);
internalUiBean.end(writer, body);
List listUiBeans = (List) select.getParameters().get(INTERNAL_LIST_UI_BEAN_LIST_PARAMETER_KEY);
List listUiBeans = (List) select.getAttributes().get(INTERNAL_LIST_UI_BEAN_LIST_PARAMETER_KEY);
if (listUiBeans == null) {
listUiBeans = new ArrayList();
}
@@ -287,8 +287,8 @@ public class OptionTransferSelect extends DoubleListUIBean {
// key -> select tag id, value -> headerKey (if exists)
Map formOptiontransferselectIds = (Map) formAncestor.getParameters().get("optiontransferselectIds");
Map formOptiontransferselectDoubleIds = (Map) formAncestor.getParameters().get("optiontransferselectDoubleIds");
Map formOptiontransferselectIds = (Map) formAncestor.getAttributes().get("optiontransferselectIds");
Map formOptiontransferselectDoubleIds = (Map) formAncestor.getAttributes().get("optiontransferselectDoubleIds");
// init lists
if (formOptiontransferselectIds == null) {
@@ -300,21 +300,21 @@ public class OptionTransferSelect extends DoubleListUIBean {
// id
String tmpId = (String) getParameters().get("id");
String tmpHeaderKey = (String) getParameters().get("headerKey");
String tmpId = (String) getAttributes().get("id");
String tmpHeaderKey = (String) getAttributes().get("headerKey");
if (tmpId != null && (! formOptiontransferselectIds.containsKey(tmpId))) {
formOptiontransferselectIds.put(tmpId, tmpHeaderKey);
}
// doubleId
String tmpDoubleId = (String) getParameters().get("doubleId");
String tmpDoubleHeaderKey = (String) getParameters().get("doubleHeaderKey");
String tmpDoubleId = (String) getAttributes().get("doubleId");
String tmpDoubleHeaderKey = (String) getAttributes().get("doubleHeaderKey");
if (tmpDoubleId != null && (! formOptiontransferselectDoubleIds.containsKey(tmpDoubleId))) {
formOptiontransferselectDoubleIds.put(tmpDoubleId, tmpDoubleHeaderKey);
}
formAncestor.getParameters().put("optiontransferselectIds", formOptiontransferselectIds);
formAncestor.getParameters().put("optiontransferselectDoubleIds", formOptiontransferselectDoubleIds);
formAncestor.getAttributes().put("optiontransferselectIds", formOptiontransferselectIds);
formAncestor.getAttributes().put("optiontransferselectDoubleIds", formOptiontransferselectDoubleIds);
}
else {
@@ -175,7 +175,7 @@ public class ServletUrlRenderer implements UrlRenderer {
namespace, actionName);
if (actionConfig != null) {
ActionMapping mapping = new ActionMapping(actionName, namespace, actionMethod, formComponent.parameters);
ActionMapping mapping = new ActionMapping(actionName, namespace, actionMethod, formComponent.attributes);
String result = urlHelper.buildUrl(formComponent.actionMapper.getUriFromActionMapping(mapping),
formComponent.request, formComponent.response, queryStringResult.getQueryParams(), scheme, formComponent.includeContext, true, false, false);
formComponent.addParameter("action", result);
@@ -73,7 +73,7 @@ public class Token extends UIBean {
super.evaluateExtraParams();
String tokenName;
Map parameters = getParameters();
Map parameters = getAttributes();
if (parameters.containsKey("name")) {
tokenName = (String) parameters.get("name");
@@ -590,7 +590,7 @@ public abstract class UIBean extends Component {
LOG.debug("Rendering template {}", template);
final TemplateRenderingContext context = new TemplateRenderingContext(template, writer, getStack(), getParameters(), this);
final TemplateRenderingContext context = new TemplateRenderingContext(template, writer, getStack(), getAttributes(), this);
engine.renderTemplate(context);
}
@@ -796,11 +796,11 @@ public abstract class UIBean extends Component {
populateComponentHtmlId(form);
if (form != null ) {
addParameter("form", form.getParameters());
addParameter("form", form.getAttributes());
if ( translatedName != null ) {
// list should have been created by the form component
List<String> tags = (List<String>) form.getParameters().get("tagNames");
List<String> tags = (List<String>) form.getAttributes().get("tagNames");
tags.add(translatedName);
}
}
@@ -832,19 +832,19 @@ public abstract class UIBean extends Component {
}
//TODO: this is to keep backward compatibility, remove once when tooltipConfig is dropped
String jsTooltipEnabled = (String) getParameters().get("jsTooltipEnabled");
String jsTooltipEnabled = (String) getAttributes().get("jsTooltipEnabled");
if (jsTooltipEnabled != null)
this.javascriptTooltip = jsTooltipEnabled;
//TODO: this is to keep backward compatibility, remove once when tooltipConfig is dropped
String tooltipIcon = (String) getParameters().get("tooltipIcon");
String tooltipIcon = (String) getAttributes().get("tooltipIcon");
if (tooltipIcon != null)
this.addParameter("tooltipIconPath", tooltipIcon);
if (this.tooltipIconPath != null)
this.addParameter("tooltipIconPath", findString(this.tooltipIconPath));
//TODO: this is to keep backward compatibility, remove once when tooltipConfig is dropped
String tooltipDelayParam = (String) getParameters().get("tooltipDelay");
String tooltipDelayParam = (String) getAttributes().get("tooltipDelay");
if (tooltipDelayParam != null)
this.addParameter("tooltipDelay", tooltipDelayParam);
if (this.tooltipDelay != null)
@@ -878,8 +878,8 @@ public abstract class UIBean extends Component {
*/
protected void applyValueParameter(String translatedName) {
// see if the value has been specified as a parameter already
if (parameters.containsKey(ATTR_VALUE)) {
parameters.put(ATTR_NAME_VALUE, parameters.get(ATTR_VALUE));
if (attributes.containsKey(ATTR_VALUE)) {
attributes.put(ATTR_NAME_VALUE, attributes.get(ATTR_VALUE));
} else {
if (evaluateNameValue()) {
final Class<?> valueClazz = getValueClassType();
@@ -965,7 +965,7 @@ public abstract class UIBean extends Component {
}
protected Map<String, String> getTooltipConfig(UIBean component) {
Object tooltipConfigObj = component.getParameters().get("tooltipConfig");
Object tooltipConfigObj = component.getAttributes().get("tooltipConfig");
Map<String, String> result = new LinkedHashMap<>();
if (tooltipConfigObj instanceof Map) {
@@ -1025,7 +1025,7 @@ public abstract class UIBean extends Component {
LOG.debug("Cannot determine id attribute for [{}], consider defining id, name or key attribute!", this);
tryId = null;
} else if (form != null) {
tryId = form.getParameters().get("id") + "_" + generatedId;
tryId = form.getAttributes().get("id") + "_" + generatedId;
} else {
tryId = generatedId;
}
@@ -1283,9 +1283,9 @@ public abstract class UIBean extends Component {
* @see <a href="https://issues.apache.org/jira/browse/WW-4166">WW-4166</a>
*/
@Override
public void copyParams(Map<String, Object> params) {
super.copyParams(params);
for (Map.Entry<String, Object>entry : params.entrySet()) {
public void copyAttributes(Map<String, Object> attributesToCopy) {
super.copyAttributes(attributesToCopy);
for (Map.Entry<String, Object>entry : attributesToCopy.entrySet()) {
String entryKey = entry.getKey();
if (!isValidTagAttribute(entryKey) && !entryKey.equals("dynamicAttributes")) {
dynamicAttributes.put(entryKey, entry.getValue());
@@ -111,7 +111,7 @@ public class URL extends ContextBean {
public URL(ValueStack stack, HttpServletRequest req, HttpServletResponse res) {
super(stack);
urlProvider = new ComponentUrlProvider(this, this.parameters);
urlProvider = new ComponentUrlProvider(this, this.attributes);
urlProvider.setHttpServletRequest(req);
urlProvider.setHttpServletResponse(res);
}
@@ -136,13 +136,13 @@ public class UpDownSelect extends Select {
// inform form ancestor that we are using a custom onSubmit
enableAncestorFormCustomOnsubmit();
Map m = (Map) ancestorForm.getParameters().get("updownselectIds");
Map m = (Map) ancestorForm.getAttributes().get("updownselectIds");
if (m == null) {
// map with key -> id , value -> headerKey
m = new LinkedHashMap();
}
m.put(getParameters().get("id"), getParameters().get("headerKey"));
ancestorForm.getParameters().put("updownselectIds", m);
m.put(getAttributes().get("id"), getAttributes().get("headerKey"));
ancestorForm.getAttributes().put("updownselectIds", m);
}
else {
if (LOG.isWarnEnabled()) {
@@ -30,20 +30,15 @@ import java.util.List;
* @see org.apache.struts2.components.AppendIterator
* @see org.apache.struts2.views.jsp.iterator.AppendIteratorTag
*/
public class AppendIteratorFilter extends IteratorFilterSupport implements Iterator, Action {
public class AppendIteratorFilter extends IteratorFilterSupport implements Iterator<Object>, Action {
List iterators = new ArrayList();
private final List<Object> iterators = new ArrayList<>();
private final List<Object> sources = new ArrayList<>();
// Attributes ----------------------------------------------------
List sources = new ArrayList();
// Public --------------------------------------------------------
public void setSource(Object anIterator) {
sources.add(anIterator);
}
// Action implementation -----------------------------------------
@Override
public String execute() {
// Make source transformations
@@ -54,11 +49,10 @@ public class AppendIteratorFilter extends IteratorFilterSupport implements Itera
return SUCCESS;
}
// Iterator implementation ---------------------------------------
@Override
public boolean hasNext() {
if (!iterators.isEmpty()) {
return (((Iterator) iterators.get(0)).hasNext());
return (((Iterator<?>) iterators.get(0)).hasNext());
} else {
return false;
}
@@ -67,10 +61,10 @@ public class AppendIteratorFilter extends IteratorFilterSupport implements Itera
@Override
public Object next() {
try {
return ((Iterator) iterators.get(0)).next();
return ((Iterator<?>) iterators.get(0)).next();
} finally {
if (!iterators.isEmpty()) {
if (!((Iterator) iterators.get(0)).hasNext()) {
if (!((Iterator<?>) iterators.get(0)).hasNext()) {
iterators.remove(0);
}
}
@@ -59,7 +59,7 @@ public abstract class TagModel implements TemplateTransformModel {
container.inject(bean);
Map unwrappedParameters = unwrapParameters(params);
bean.copyParams(unwrappedParameters);
bean.copyAttributes(unwrappedParameters);
return new CallbackWriter(bean, writer);
}
@@ -25,9 +25,8 @@ import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.jsp.JspException;
import org.apache.struts2.components.Component;
/**
*/
public abstract class ComponentTagSupport extends StrutsBodyTagSupport {
protected Component component;
public abstract Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res);
@@ -57,9 +56,9 @@ public abstract class ComponentTagSupport extends StrutsBodyTagSupport {
}
/**
* Define method to populate component state based on the Tag parameters.
*
* Descendants should override this method for custom behaviour, but should <em>always</em> call the ancestor method when doing so.
* Define method to populate component state based on the Tag attributes.
* Descendants should override this method for custom behaviour,
* but should <em>always</em> call the ancestor method when doing so.
*/
protected void populateParams() {
populatePerformClearTagStateForTagPoolingServersParam();
@@ -67,7 +66,7 @@ public abstract class ComponentTagSupport extends StrutsBodyTagSupport {
/**
* Specialized method to populate the performClearTagStateForTagPoolingServers state of the Component to match the value set in the Tag.
*
* <p>
* Generally only unit tests would call this method directly, to avoid calling the whole populateParams() chain again after doStartTag()
* has been called. Doing that can break tag / component state behaviour, but unit tests still need a way to set the
* performClearTagStateForTagPoolingServers state for the component (which only comes into being after doStartTag() is called).
@@ -84,7 +83,7 @@ public abstract class ComponentTagSupport extends StrutsBodyTagSupport {
@Override
protected void clearTagStateForTagPoolingServers() {
if (!getPerformClearTagStateForTagPoolingServers()) {
if (!getPerformClearTagStateForTagPoolingServers()) {
return; // If flag is false (default setting), do not perform any state clearing.
}
super.clearTagStateForTagPoolingServers();
@@ -23,15 +23,15 @@ NOTE: The 'header' stuff that follows is in this one file for checkbox due to th
that for checkboxes we do not want the label field to show up as checkboxes handle their own
lables
-->
<#assign hasFieldErrors = fieldErrors?? && fieldErrors.get(parameters.name)??/>
<div <#rt/><#if parameters.id??>id="wwgrp_${parameters.id}"<#rt/></#if> class="wwgrp">
<#assign hasFieldErrors = fieldErrors?? && fieldErrors.get(attributes.name)??/>
<div <#rt/><#if attributes.id??>id="wwgrp_${attributes.id}"<#rt/></#if> class="wwgrp">
<#if hasFieldErrors>
<div <#rt/><#if parameters.id??>id="wwerr_${parameters.id}"<#rt/></#if> class="wwerr">
<#list fieldErrors.get(parameters.name) as error>
<div <#rt/><#if attributes.id??>id="wwerr_${attributes.id}"<#rt/></#if> class="wwerr">
<#list fieldErrors.get(attributes.name) as error>
<div<#rt/>
<#if parameters.id??>
errorFor="${parameters.id}"<#rt/>
<#if attributes.id??>
errorFor="${attributes.id}"<#rt/>
</#if>
class="errorMessage">
${error}
@@ -39,24 +39,24 @@ lables
</#list>
</div><#t/>
</#if>
<#if !parameters.labelPosition?? && (parameters.form.labelPosition)??>
<#assign labelPos = parameters.form.labelPosition/>
<#elseif parameters.labelPosition??>
<#assign labelPos = parameters.labelPosition/>
<#if !attributes.labelPosition?? && (attributes.form.labelPosition)??>
<#assign labelPos = attributes.form.labelPosition/>
<#elseif attributes.labelPosition??>
<#assign labelPos = attributes.labelPosition/>
</#if>
<#if (labelPos!"") == 'left'>
<span <#rt/>
<#if parameters.id??>id="wwlbl_${parameters.id}"<#rt/></#if> class="wwlbl">
<#if attributes.id??>id="wwlbl_${attributes.id}"<#rt/></#if> class="wwlbl">
<label<#t/>
<#if parameters.id??>
for="${parameters.id}"<#rt/>
<#if attributes.id??>
for="${attributes.id}"<#rt/>
</#if>
<#if hasFieldErrors>
class="checkboxErrorLabel"<#rt/>
<#else>
class="label"<#rt/>
</#if>
>${parameters.label}</label><#rt/>
>${attributes.label}</label><#rt/>
</span>
</#if>
@@ -65,39 +65,39 @@ lables
<#else>
<span <#rt/>
</#if>
<#if parameters.id??>id="wwctrl_${parameters.id}"<#rt/></#if> class="wwctrl">
<#if attributes.id??>id="wwctrl_${attributes.id}"<#rt/></#if> class="wwctrl">
<#if parameters.required!false>
<#if attributes.required!false>
<span class="required">*</span><#t/>
</#if>
<#include "/${parameters.templateDir}/simple/checkbox.ftl" />
<#include "/${attributes.templateDir}/simple/checkbox.ftl" />
<#if (labelPos!"") != 'left'>
<#if (labelPos!"top") == 'top'>
</div> <#rt/>
<#else>
</span> <#rt/>
</#if>
<#if parameters.label??>
<#if attributes.label??>
<#if (labelPos!"top") == 'top'>
<div <#rt/>
<#else>
<span <#rt/>
</#if>
<#if parameters.id??>id="wwlbl_${parameters.id}"<#rt/></#if> class="wwlbl">
<#if attributes.id??>id="wwlbl_${attributes.id}"<#rt/></#if> class="wwlbl">
<label<#t/>
<#if parameters.id??>
for="${parameters.id}"<#rt/>
<#if attributes.id??>
for="${attributes.id}"<#rt/>
</#if>
<#if hasFieldErrors>
class="checkboxErrorLabel"<#rt/>
<#else>
class="checkboxLabel"<#rt/>
</#if>
>${parameters.label}</label><#rt/>
>${attributes.label}</label><#rt/>
</#if>
</#if>
<#if parameters.label??>
<#if attributes.label??>
<#if (labelPos!"top") == 'top'>
</div> <#rt/>
<#else>
@@ -18,26 +18,26 @@
* under the License.
*/
-->
${parameters.after!}<#t/>
${attributes.after!}<#t/>
<#lt/>
<#if !parameters.labelPosition?? && (parameters.form.labelPosition)??>
<#assign labelPos = parameters.form.labelPosition/>
<#elseif parameters.labelPosition??>
<#assign labelPos = parameters.labelPosition/>
<#if !attributes.labelPosition?? && (attributes.form.labelPosition)??>
<#assign labelPos = attributes.form.labelPosition/>
<#elseif attributes.labelPosition??>
<#assign labelPos = attributes.labelPosition/>
</#if>
<#if (labelPos!"top") == 'top'>
</div> <#rt/>
<#else>
</span> <#rt/>
</#if>
<#if (parameters.errorposition!"top") == 'bottom'>
<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors.get(parameters.name)??/>
<#if (attributes.errorposition!"top") == 'bottom'>
<#assign hasFieldErrors = attributes.name?? && fieldErrors?? && fieldErrors.get(attributes.name)??/>
<#if hasFieldErrors>
<div <#rt/><#if parameters.id??>id="wwerr_${parameters.id}"<#rt/></#if> class="wwerr">
<#list fieldErrors.get(parameters.name) as error>
<div <#rt/><#if attributes.id??>id="wwerr_${attributes.id}"<#rt/></#if> class="wwerr">
<#list fieldErrors.get(attributes.name) as error>
<div<#rt/>
<#if parameters.id??>
errorFor="${parameters.id}"<#rt/>
<#if attributes.id??>
errorFor="${attributes.id}"<#rt/>
</#if>
class="errorMessage">
${error}
@@ -22,16 +22,16 @@
Only show message if errors are available.
This will be done if ActionSupport is used.
-->
<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors.get(parameters.name)??/>
<div <#rt/><#if parameters.id??>id="wwgrp_${parameters.id}"<#rt/></#if> class="wwgrp">
<#assign hasFieldErrors = attributes.name?? && fieldErrors?? && fieldErrors.get(attributes.name)??/>
<div <#rt/><#if attributes.id??>id="wwgrp_${attributes.id}"<#rt/></#if> class="wwgrp">
<#if (parameters.errorposition!"top") == 'top'>
<#if (attributes.errorposition!"top") == 'top'>
<#if hasFieldErrors>
<div <#rt/><#if parameters.id??>id="wwerr_${parameters.id}"<#rt/></#if> class="wwerr">
<#list fieldErrors.get(parameters.name) as error>
<div <#rt/><#if attributes.id??>id="wwerr_${attributes.id}"<#rt/></#if> class="wwerr">
<#list fieldErrors.get(attributes.name) as error>
<div<#rt/>
<#if parameters.id??>
errorFor="${parameters.id}"<#rt/>
<#if attributes.id??>
errorFor="${attributes.id}"<#rt/>
</#if>
class="errorMessage">
${error}
@@ -41,21 +41,21 @@
</#if>
</#if>
<#if !parameters.labelPosition?? && (parameters.form.labelPosition)??>
<#assign labelPos = parameters.form.labelPosition/>
<#elseif parameters.labelPosition??>
<#assign labelPos = parameters.labelPosition/>
<#if !attributes.labelPosition?? && (attributes.form.labelPosition)??>
<#assign labelPos = attributes.form.labelPosition/>
<#elseif attributes.labelPosition??>
<#assign labelPos = attributes.labelPosition/>
</#if>
<#if parameters.label??>
<#if attributes.label??>
<#if (labelPos!"top") == 'top'>
<div <#rt/>
<#else>
<span <#rt/>
</#if>
<#if parameters.id??>id="wwlbl_${parameters.id}"<#rt/></#if> class="wwlbl">
<#if attributes.id??>id="wwlbl_${attributes.id}"<#rt/></#if> class="wwlbl">
<label <#t/>
<#if parameters.id??>
for="${parameters.id}" <#t/>
<#if attributes.id??>
for="${attributes.id}" <#t/>
</#if>
<#if hasFieldErrors>
class="errorLabel"<#t/>
@@ -63,11 +63,11 @@
class="label"<#t/>
</#if>
><#t/>
<#if parameters.required!false>
<#if attributes.required!false>
<span class="required">*</span><#t/>
</#if>
${parameters.label}${parameters.labelseparator!":"}
<#include "/${parameters.templateDir}/xhtml/tooltip.ftl" />
${attributes.label}${attributes.labelseparator!":"}
<#include "/${attributes.templateDir}/xhtml/tooltip.ftl" />
</label><#t/>
<#if (labelPos!"top") == 'top'>
</div> <br /><#rt/>
@@ -18,15 +18,15 @@
* under the License.
*/
-->
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader-core.ftl">
<#if !parameters.labelPosition?? && (parameters.form.labelPosition)??>
<#assign labelPos = parameters.form.labelPosition/>
<#elseif parameters.labelPosition??>
<#assign labelPos = parameters.labelPosition/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlheader-core.ftl">
<#if !attributes.labelPosition?? && (attributes.form.labelPosition)??>
<#assign labelPos = attributes.form.labelPosition/>
<#elseif attributes.labelPosition??>
<#assign labelPos = attributes.labelPosition/>
</#if>
<#if (labelPos!"top") == 'top'>
<div <#rt/>
<#else>
<span <#rt/>
</#if>
<#if parameters.id??>id="wwctrl_${parameters.id}"<#rt/></#if> class="wwctrl">
<#if attributes.id??>id="wwctrl_${attributes.id}"<#rt/></#if> class="wwctrl">
@@ -18,11 +18,11 @@
* under the License.
*/
-->
<#if parameters.validate!false == true>
<@s.script src="${base}${parameters.staticContentPath}/css_xhtml/validation.js"/>
<#if parameters.onsubmit??>
${tag.addParameter('onsubmit', "${parameters.onsubmit}; return validateForm_${parameters.escapedId}();")}
<#if attributes.validate!false == true>
<@s.script src="${base}${attributes.staticContentPath}/css_xhtml/validation.js"/>
<#if attributes.onsubmit??>
${tag.addParameter('onsubmit', "${attributes.onsubmit}; return validateForm_${attributes.escapedId}();")}
<#else>
${tag.addParameter('onsubmit', "return validateForm_${parameters.escapedId}();")}
${tag.addParameter('onsubmit', "return validateForm_${attributes.escapedId}();")}
</#if>
</#if>
@@ -18,5 +18,5 @@
* under the License.
*/
-->
<@s.link rel="stylesheet" href="${base}${parameters.staticContentPath}/css_xhtml/styles.css" type="text/css" />
<#include "/${parameters.templateDir}/simple/head.ftl" />
<@s.link rel="stylesheet" href="${base}${attributes.staticContentPath}/css_xhtml/styles.css" type="text/css" />
<#include "/${attributes.templateDir}/simple/head.ftl" />
@@ -18,4 +18,4 @@
* under the License.
*/
-->
<#include "/${parameters.templateDir}/simple/hidden.ftl" />
<#include "/${attributes.templateDir}/simple/hidden.ftl" />
@@ -18,28 +18,28 @@
* under the License.
*/
-->
<#--include "/${parameters.templateDir}/css_xhtml/controlheader.ftl" /-->
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader.ftl" />
<#--include "/${attributes.templateDir}/css_xhtml/controlheader.ftl" /-->
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlheader.ftl" />
<label<#rt/>
<#if parameters.id??>
id="${parameters.id}"<#rt/>
<#if attributes.id??>
id="${attributes.id}"<#rt/>
</#if>
<#if parameters.cssClass??>
class="${parameters.cssClass}"<#rt/>
<#if attributes.cssClass??>
class="${attributes.cssClass}"<#rt/>
</#if>
<#if parameters.cssStyle??>
style="${parameters.cssStyle}"<#rt/>
<#if attributes.cssStyle??>
style="${attributes.cssStyle}"<#rt/>
</#if>
<#if parameters.cssClass??>
class="${parameters.cssClass}"<#rt/>
<#if attributes.cssClass??>
class="${attributes.cssClass}"<#rt/>
</#if>
<#if parameters.for??>
for="${parameters.for}"<#rt/>
<#if attributes.for??>
for="${attributes.for}"<#rt/>
</#if>
><#rt/>
<#if parameters.nameValue??>
<@s.property value="parameters.nameValue"/><#t/>
<#if attributes.nameValue??>
<@s.property value="attributes.nameValue"/><#t/>
</#if>
&nbsp;
</label>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlfooter.ftl" />
@@ -18,10 +18,10 @@
* under the License.
*/
-->
<#if !parameters.labelPosition?? && (parameters.form.labelPosition)??>
<#assign labelPos = parameters.form.labelPosition/>
<#elseif parameters.labelPosition??>
<#assign labelPos = parameters.labelPosition/>
<#if !attributes.labelPosition?? && (attributes.form.labelPosition)??>
<#assign labelPos = attributes.form.labelPosition/>
<#elseif attributes.labelPosition??>
<#assign labelPos = attributes.labelPosition/>
</#if>
<#if (labelPos!"top") == 'top'>
<div <#rt/>
@@ -29,11 +29,11 @@
<span <#rt/>
</#if>
class="formButton"<#t/>
<#if parameters.id??>
id="wwctrl_${parameters.id}"<#rt/>
<#if attributes.id??>
id="wwctrl_${attributes.id}"<#rt/>
</#if>
><#t/>
<#include "/${parameters.templateDir}/simple/reset.ftl" />
<#include "/${attributes.templateDir}/simple/reset.ftl" />
<#if (labelPos!"top") == 'top'>
</div> <#t/>
<#else>
@@ -18,11 +18,11 @@
* under the License.
*/
-->
<#include "/${parameters.templateDir}/simple/submit-close.ftl" />
<#if !parameters.labelPosition?? && (parameters.form.labelPosition)??>
<#assign labelPos = parameters.form.labelPosition/>
<#elseif parameters.labelPosition??>
<#assign labelPos = parameters.labelPosition/>
<#include "/${attributes.templateDir}/simple/submit-close.ftl" />
<#if !attributes.labelPosition?? && (attributes.form.labelPosition)??>
<#assign labelPos = attributes.form.labelPosition/>
<#elseif attributes.labelPosition??>
<#assign labelPos = attributes.labelPosition/>
</#if>
<#if (labelPos!"top") == 'top'>
</div> <#t/>
@@ -18,10 +18,10 @@
* under the License.
*/
-->
<#if !parameters.labelPosition?? && (parameters.form.labelPosition)??>
<#assign labelPos = parameters.form.labelPosition/>
<#elseif parameters.labelPosition??>
<#assign labelPos = parameters.labelPosition/>
<#if !attributes.labelPosition?? && (attributes.form.labelPosition)??>
<#assign labelPos = attributes.form.labelPosition/>
<#elseif attributes.labelPosition??>
<#assign labelPos = attributes.labelPosition/>
</#if>
<#if (labelPos!"top") == 'top'>
<div <#rt/>
@@ -29,8 +29,8 @@
<span <#rt/>
</#if>
class="formButton"<#t/>
<#if parameters.id??>
id="wwctrl_${parameters.id}"<#rt/>
<#if attributes.id??>
id="wwctrl_${attributes.id}"<#rt/>
</#if>
><#t/>
<#include "/${parameters.templateDir}/simple/submit.ftl" />
<#include "/${attributes.templateDir}/simple/submit.ftl" />
@@ -19,28 +19,28 @@
*/
-->
<a<#rt/>
<#if parameters.id??>
id="${parameters.id}"<#rt/>
<#if attributes.id??>
id="${attributes.id}"<#rt/>
</#if>
<#if parameters.href??>
href="${parameters.href?no_esc}"<#rt/>
<#if attributes.href??>
href="${attributes.href?no_esc}"<#rt/>
</#if>
<#if parameters.disabled!false>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
<#if parameters.tabindex??>
tabindex="${parameters.tabindex}"<#rt/>
<#if attributes.tabindex??>
tabindex="${attributes.tabindex}"<#rt/>
</#if>
<#if parameters.cssClass??>
class="${parameters.cssClass}"<#rt/>
<#if attributes.cssClass??>
class="${attributes.cssClass}"<#rt/>
</#if>
<#if parameters.cssStyle??>
style="${parameters.cssStyle}"<#rt/>
<#if attributes.cssStyle??>
style="${attributes.cssStyle}"<#rt/>
</#if>
<#if parameters.title??>
title="${parameters.title}"<#rt/>
<#if attributes.title??>
title="${attributes.title}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
>${tag.escapeHtmlBody()?then(parameters.body, parameters.body?no_esc)}</a>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/scripting-events.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/common-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" />
>${tag.escapeHtmlBody()?then(attributes.body, attributes.body?no_esc)}</a>
@@ -20,21 +20,21 @@
-->
<#if (actionErrors?? && actionErrors?size > 0)>
<ul<#rt/>
<#if parameters.id??>
id="${parameters.id}"<#rt/>
</#if>
<#if parameters.cssClass??>
class="${parameters.cssClass}"<#rt/>
<#if attributes.id??>
id="${attributes.id}"<#rt/>
</#if>
<#if attributes.cssClass??>
class="${attributes.cssClass}"<#rt/>
<#else>
class="errorMessage"<#rt/>
</#if>
<#if parameters.cssStyle??>
style="${parameters.cssStyle}"<#rt/>
<#if attributes.cssStyle??>
style="${attributes.cssStyle}"<#rt/>
</#if>
>
<#list actionErrors as error>
<#if error??>
<li><span><#if parameters.escape>${error!}<#else>${error!?no_esc}</#if></span><#rt/></li><#rt/>
<li><span><#if attributes.escape>${error!}<#else>${error!?no_esc}</#if></span><#rt/></li><#rt/>
</#if>
</#list>
</ul>
@@ -18,23 +18,23 @@
* under the License.
*/
-->
<#if (actionMessages?? && actionMessages?size > 0 && !parameters.isEmptyList)>
<#if (actionMessages?? && actionMessages?size > 0 && !attributes.isEmptyList)>
<ul<#rt/>
<#if parameters.id??>
id="${parameters.id}"<#rt/>
<#if attributes.id??>
id="${attributes.id}"<#rt/>
</#if>
<#if parameters.cssClass??>
class="${parameters.cssClass}"<#rt/>
<#if attributes.cssClass??>
class="${attributes.cssClass}"<#rt/>
<#else>
class="actionMessage"<#rt/>
</#if>
<#if parameters.cssStyle??>
style="${parameters.cssStyle}"<#rt/>
<#if attributes.cssStyle??>
style="${attributes.cssStyle}"<#rt/>
</#if>
>
<#list actionMessages as message>
<#if message??>
<li><span><#if parameters.escape>${message!}<#else>${message!?no_esc}</#if></span></li>
<li><span><#if attributes.escape>${message!}<#else>${message!?no_esc}</#if></span></li>
</#if>
</#list>
</ul>
@@ -18,30 +18,30 @@
* under the License.
*/
-->
<input type="checkbox" name="${parameters.name}" value="${parameters.fieldValue}"<#rt/>
<#if parameters.nameValue?? && parameters.nameValue>
<input type="checkbox" name="${attributes.name}" value="${attributes.fieldValue}"<#rt/>
<#if attributes.nameValue?? && attributes.nameValue>
checked="checked"<#rt/>
</#if>
<#if parameters.disabled!false>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
<#if parameters.tabindex?has_content>
tabindex="${parameters.tabindex}"<#rt/>
<#if attributes.tabindex?has_content>
tabindex="${attributes.tabindex}"<#rt/>
</#if>
<#if parameters.id?has_content>
id="${parameters.id}"<#rt/>
<#if attributes.id?has_content>
id="${attributes.id}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
<#if parameters.title?has_content>
title="${parameters.title}"<#rt/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/css.ftl" />
<#if attributes.title?has_content>
title="${attributes.title}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/scripting-events.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/common-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" />
/><#rt/>
<#if parameters.submitUnchecked!false>
<input type="hidden" id="__checkbox_${parameters.id}" name="__checkbox_${parameters.name}" value="${parameters.fieldValue}"<#rt/>
<#if parameters.disabled!false>
<#if attributes.submitUnchecked!false>
<input type="hidden" id="__checkbox_${attributes.id}" name="__checkbox_${attributes.name}" value="${attributes.fieldValue}"<#rt/>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
/><#rt/>
@@ -19,98 +19,98 @@
*/
-->
<#assign itemCount = 0/>
<#if parameters.list??>
<@s.iterator value="parameters.list">
<#if attributes.list??>
<@s.iterator value="attributes.list">
<#assign itemCount = itemCount + 1/>
<#if parameters.listKey??>
<#assign itemKey = stack.findValue(parameters.listKey)/>
<#assign itemKeyStr = stack.findString(parameters.listKey)/>
<#if attributes.listKey??>
<#assign itemKey = stack.findValue(attributes.listKey)/>
<#assign itemKeyStr = stack.findString(attributes.listKey)/>
<#else>
<#assign itemKey = stack.findValue('top')/>
<#assign itemKeyStr = stack.findString('top')>
</#if>
<#if parameters.listLabelKey??>
<#if attributes.listLabelKey??>
<#-- checks the valueStack for the 'valueKey.' The valueKey is then looked-up in the locale
file for it's localized value. This is then used as a label -->
<#assign itemValue = struts.getText(stack.findString(parameters.listLabelKey))/>
<#elseif parameters.listValue??>
<#assign itemValue = stack.findString(parameters.listValue)!""/>
<#assign itemValue = struts.getText(stack.findString(attributes.listLabelKey))/>
<#elseif attributes.listValue??>
<#assign itemValue = stack.findString(attributes.listValue)!""/>
<#else>
<#assign itemValue = stack.findString('top')/>
</#if>
<#if parameters.listCssClass??>
<#if stack.findString(parameters.listCssClass)??>
<#assign itemCssClass= stack.findString(parameters.listCssClass)/>
<#if attributes.listCssClass??>
<#if stack.findString(attributes.listCssClass)??>
<#assign itemCssClass= stack.findString(attributes.listCssClass)/>
<#else>
<#assign itemCssClass = ''/>
</#if>
</#if>
<#if parameters.listCssStyle??>
<#if stack.findString(parameters.listCssStyle)??>
<#assign itemCssStyle= stack.findString(parameters.listCssStyle)/>
<#if attributes.listCssStyle??>
<#if stack.findString(attributes.listCssStyle)??>
<#assign itemCssStyle= stack.findString(attributes.listCssStyle)/>
<#else>
<#assign itemCssStyle = ''/>
</#if>
</#if>
<#if parameters.listTitle??>
<#if stack.findString(parameters.listTitle)??>
<#assign itemTitle= stack.findString(parameters.listTitle)/>
<#if attributes.listTitle??>
<#if stack.findString(attributes.listTitle)??>
<#assign itemTitle= stack.findString(attributes.listTitle)/>
<#else>
<#assign itemTitle = ''/>
</#if>
</#if>
<input type="checkbox" name="${parameters.name}" value="${itemKeyStr}"<#rt/>
<#if parameters.id?has_content>
id="${parameters.id}-${itemCount}"<#rt/>
<input type="checkbox" name="${attributes.name}" value="${itemKeyStr}"<#rt/>
<#if attributes.id?has_content>
id="${attributes.id}-${itemCount}"<#rt/>
<#else>
id="${parameters.name}-${itemCount}"<#rt/>
id="${attributes.name}-${itemCount}"<#rt/>
</#if>
<#if tag.contains(parameters.nameValue, itemKey)>
<#if tag.contains(attributes.nameValue, itemKey)>
checked="checked"<#rt/>
</#if>
<#if parameters.disabled!false>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
<#if itemCssClass??>
class="${itemCssClass}"<#rt/>
<#else>
<#if parameters.cssClass?has_content>
class="${parameters.cssClass}"<#rt/>
<#if attributes.cssClass?has_content>
class="${attributes.cssClass}"<#rt/>
</#if>
</#if>
<#if itemCssStyle??>
style="${itemCssStyle}"<#rt/>
<#else>
<#if parameters.cssStyle?has_content>
style="${parameters.cssStyle}"<#rt/>
<#if attributes.cssStyle?has_content>
style="${attributes.cssStyle}"<#rt/>
</#if>
</#if>
<#if itemTitle??>
title="${itemTitle}"<#rt/>
<#else>
<#if parameters.title?has_content>
title="${parameters.title}"<#rt/>
<#if attributes.title?has_content>
title="${attributes.title}"<#rt/>
</#if>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/css.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/scripting-events.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/common-attributes.ftl" />
<#global evaluate_dynamic_attributes = true/>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" />
/>
<label<#rt/>
<#if parameters.id?has_content>
for="${parameters.id}-${itemCount}"<#rt/>
<#if attributes.id?has_content>
for="${attributes.id}-${itemCount}"<#rt/>
<#else>
for="${parameters.name}-${itemCount}"<#rt/>
for="${attributes.name}-${itemCount}"<#rt/>
</#if>
class="checkboxLabel">${itemValue}</label>
</@s.iterator>
<#else>
</#if>
<input type="hidden" id="__multiselect_${parameters.id}" name="__multiselect_${parameters.name}"
<input type="hidden" id="__multiselect_${attributes.id}" name="__multiselect_${attributes.name}"
value=""<#rt/>
<#if parameters.disabled!false>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
/>
@@ -19,69 +19,69 @@
*/
-->
<@s.script>
function autoPopulate_${parameters.escapedId}(targetElement) {
<#if parameters.headerKey?? && parameters.headerValue??>
if (targetElement.options[targetElement.selectedIndex].value == '${parameters.headerKey?js_string}') {
function autoPopulate_${attributes.escapedId}(targetElement) {
<#if attributes.headerKey?? && attributes.headerValue??>
if (targetElement.options[targetElement.selectedIndex].value == '${attributes.headerKey?js_string}') {
return;
}
</#if>
<#if parameters.emptyOption!false>
<#if attributes.emptyOption!false>
if (targetElement.options[targetElement.selectedIndex].value == '') {
return;
}
</#if>
targetElement.form.elements['${parameters.name?js_string}'].value=targetElement.options[targetElement.selectedIndex].value;
targetElement.form.elements['${attributes.name?js_string}'].value=targetElement.options[targetElement.selectedIndex].value;
}
</@s.script>
<#include "/${parameters.templateDir}/simple/text.ftl" />
<#include "/${attributes.templateDir}/simple/text.ftl" />
<br />
<#if parameters.list??>
<select onChange="autoPopulate_${parameters.escapedId}(this);"<#rt/>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
<#if parameters.disabled!false>
<#if attributes.list??>
<select onChange="autoPopulate_${attributes.escapedId}(this);"<#rt/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/css.ftl" />
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
>
<#if (parameters.headerKey?? && parameters.headerValue??)>
<option value="${parameters.headerKey}">${parameters.headerValue}</option>
<#if (attributes.headerKey?? && attributes.headerValue??)>
<option value="${attributes.headerKey}">${attributes.headerValue}</option>
</#if>
<#if parameters.emptyOption!false>
<#if attributes.emptyOption!false>
<option value=""></option>
</#if>
<@s.iterator value="parameters.list">
<#if parameters.listKey??>
<#assign tmpListKey = stack.findString(parameters.listKey) />
<@s.iterator value="attributes.list">
<#if attributes.listKey??>
<#assign tmpListKey = stack.findString(attributes.listKey) />
<#else>
<#assign tmpListKey = stack.findString('top') />
</#if>
<#if parameters.listValue??>
<#assign tmpListValue = stack.findString(parameters.listValue) />
<#if attributes.listValue??>
<#assign tmpListValue = stack.findString(attributes.listValue) />
<#else>
<#assign tmpListValue = stack.findString('top') />
</#if>
<#if parameters.listCssClass??>
<#if stack.findString(parameters.listCssClass)??>
<#assign itemCssClass= stack.findString(parameters.listCssClass)/>
<#if attributes.listCssClass??>
<#if stack.findString(attributes.listCssClass)??>
<#assign itemCssClass= stack.findString(attributes.listCssClass)/>
<#else>
<#assign itemCssClass = ''/>
</#if>
</#if>
<#if parameters.listCssStyle??>
<#if stack.findString(parameters.listCssStyle)??>
<#assign itemCssStyle= stack.findString(parameters.listCssStyle)/>
<#if attributes.listCssStyle??>
<#if stack.findString(attributes.listCssStyle)??>
<#assign itemCssStyle= stack.findString(attributes.listCssStyle)/>
<#else>
<#assign itemCssStyle = ''/>
</#if>
</#if>
<#if parameters.listTitle??>
<#if stack.findString(parameters.listTitle)??>
<#assign itemTitle= stack.findString(parameters.listTitle)/>
<#if attributes.listTitle??>
<#if stack.findString(attributes.listTitle)??>
<#assign itemTitle= stack.findString(attributes.listTitle)/>
<#else>
<#assign itemTitle = ''/>
</#if>
</#if>
<option value="${tmpListKey}"<#rt/>
<#if (parameters.nameValue == tmpListKey)>
<#if (attributes.nameValue == tmpListKey)>
selected="selected"<#rt/>
</#if>
<#if itemCssClass??>
@@ -18,6 +18,6 @@
* under the License.
*/
-->
<#if parameters.accesskey?has_content>
accesskey="${parameters.accesskey}"<#rt/>
<#if attributes.accesskey?has_content>
accesskey="${attributes.accesskey}"<#rt/>
</#if><#rt/>
+11 -11
View File
@@ -18,16 +18,16 @@
* under the License.
*/
-->
<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors.get(parameters.name)??/>
<#if parameters.cssClass?has_content && !(hasFieldErrors && parameters.cssErrorClass??)>
class="${parameters.cssClass}"<#rt/>
<#elseif parameters.cssClass?has_content && (hasFieldErrors && parameters.cssErrorClass??)>
class="${parameters.cssClass} ${parameters.cssErrorClass}"<#rt/>
<#elseif !(parameters.cssClass?has_content) && (hasFieldErrors && parameters.cssErrorClass??)>
class="${parameters.cssErrorClass}"<#rt/>
<#assign hasFieldErrors = attributes.name?? && fieldErrors?? && fieldErrors.get(attributes.name)??/>
<#if attributes.cssClass?has_content && !(hasFieldErrors && attributes.cssErrorClass??)>
class="${attributes.cssClass}"<#rt/>
<#elseif attributes.cssClass?has_content && (hasFieldErrors && attributes.cssErrorClass??)>
class="${attributes.cssClass} ${attributes.cssErrorClass}"<#rt/>
<#elseif !(attributes.cssClass?has_content) && (hasFieldErrors && attributes.cssErrorClass??)>
class="${attributes.cssErrorClass}"<#rt/>
</#if>
<#if parameters.cssStyle?has_content && !(hasFieldErrors && (parameters.cssErrorStyle?? || parameters.cssErrorClass??))>
style="${parameters.cssStyle}"<#rt/>
<#elseif hasFieldErrors && parameters.cssErrorStyle??>
style="${parameters.cssErrorStyle}"<#rt/>
<#if attributes.cssStyle?has_content && !(hasFieldErrors && (attributes.cssErrorStyle?? || attributes.cssErrorClass??))>
style="${attributes.cssStyle}"<#rt/>
<#elseif hasFieldErrors && attributes.cssErrorStyle??>
style="${attributes.cssErrorStyle}"<#rt/>
</#if>
@@ -41,7 +41,7 @@
<br>
<a href="#" id="toggle-button">[Debug]</a>
<div style="display:none" id="<#if parameters.id??>${parameters.id}<#else>debug</#if>">
<div style="display:none" id="<#if attributes.id??>${attributes.id}<#else>debug</#if>">
<h2>Struts ValueStack Debug</h2>
<br>
@@ -50,7 +50,7 @@
<tr><th>Object</th><th>Property Name</th><th>Property Value</th><th>Property Class</th></tr>
<#assign index=1>
<#list parameters.stackValues as stackObject>
<#list attributes.stackValues as stackObject>
<tr>
<td rowspan="${stackObject.value.size()}">${stackObject.key}</td>
@@ -86,7 +86,7 @@
</div>
<@s.script>
document.getElementById('toggle-button').onclick = function() {
toggleDebug('<#if parameters.id??>${parameters.id}<#else>debug</#if>');
toggleDebug('<#if attributes.id??>${attributes.id}<#else>debug</#if>');
return false;
}
</@s.script>
@@ -19,170 +19,170 @@
*/
-->
<#global dynamic_attributes_ignore = "second-"/>
<#include "/${parameters.templateDir}/simple/select.ftl" />
<#include "/${attributes.templateDir}/simple/select.ftl" />
<#assign startCount = 0/><#rt/>
<#if parameters.headerKey?? && parameters.headerValue??>
<#if attributes.headerKey?? && attributes.headerValue??>
<#assign startCount = startCount + 1/><#rt/>
</#if>
<#if parameters.emptyOption??>
<#if attributes.emptyOption??>
<#assign startCount = startCount + 1/><#rt/>
</#if>
<br/>
<select<#rt/>
name="${(parameters.doubleName!"")}"<#rt/>
<#if parameters.disabled!false>
name="${(attributes.doubleName!"")}"<#rt/>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
<#if parameters.doubleTabindex?has_content>
tabindex="${parameters.doubleTabindex}"<#rt/>
<#if attributes.doubleTabindex?has_content>
tabindex="${attributes.doubleTabindex}"<#rt/>
</#if>
<#if parameters.doubleId?has_content>
id="${parameters.doubleId}"<#rt/>
<#if attributes.doubleId?has_content>
id="${attributes.doubleId}"<#rt/>
</#if>
<#if parameters.doubleCss?has_content>
class="${parameters.doubleCss}"<#rt/>
<#if attributes.doubleCss?has_content>
class="${attributes.doubleCss}"<#rt/>
</#if>
<#if parameters.doubleStyle?has_content>
style="${parameters.doubleStyle}"<#rt/>
<#if attributes.doubleStyle?has_content>
style="${attributes.doubleStyle}"<#rt/>
</#if>
<#if parameters.title?has_content>
title="${parameters.title}"<#rt/>
<#if attributes.title?has_content>
title="${attributes.title}"<#rt/>
</#if>
<#if parameters.multiple!false>
<#if attributes.multiple!false>
multiple="multiple"<#rt/>
</#if>
<#if parameters.get("doubleSize")?has_content>
size="${parameters.get("doubleSize")}"<#rt/>
<#if attributes.get("doubleSize")?has_content>
size="${attributes.get("doubleSize")}"<#rt/>
</#if>
<#if parameters.doubleMultiple!false>
<#if attributes.doubleMultiple!false>
multiple="multiple"<#rt/>
</#if>
<#if parameters.doubleDisabled!false>
<#if attributes.doubleDisabled!false>
disabled="disabled"<#rt/>
</#if>
<#if parameters.doubleOnclick??>
onclick="<#outputformat 'JavaScript'>${parameters.doubleOnclick}</#outputformat>"<#rt/>
<#if attributes.doubleOnclick??>
onclick="<#outputformat 'JavaScript'>${attributes.doubleOnclick}</#outputformat>"<#rt/>
</#if>
<#if parameters.doubleOndblclick??>
ondblclick="<#outputformat 'JavaScript'>${parameters.doubleOndblclick}</#outputformat>"<#rt/>
<#if attributes.doubleOndblclick??>
ondblclick="<#outputformat 'JavaScript'>${attributes.doubleOndblclick}</#outputformat>"<#rt/>
</#if>
<#if parameters.doubleOnmousedown??>
onmousedown="<#outputformat 'JavaScript'>${parameters.doubleOnmousedown}</#outputformat>"<#rt/>
<#if attributes.doubleOnmousedown??>
onmousedown="<#outputformat 'JavaScript'>${attributes.doubleOnmousedown}</#outputformat>"<#rt/>
</#if>
<#if parameters.doubleOnmouseup??>
onmouseup="<#outputformat 'JavaScript'>${parameters.doubleOnmouseup}</#outputformat>"<#rt/>
<#if attributes.doubleOnmouseup??>
onmouseup="<#outputformat 'JavaScript'>${attributes.doubleOnmouseup}</#outputformat>"<#rt/>
</#if>
<#if parameters.doubleOnmouseover??>
onmouseover="<#outputformat 'JavaScript'>${parameters.doubleOnmouseover}</#outputformat>"<#rt/>
<#if attributes.doubleOnmouseover??>
onmouseover="<#outputformat 'JavaScript'>${attributes.doubleOnmouseover}</#outputformat>"<#rt/>
</#if>
<#if parameters.doubleOnmousemove??>
onmousemove="<#outputformat 'JavaScript'>${parameters.doubleOnmousemove}</#outputformat>"<#rt/>
<#if attributes.doubleOnmousemove??>
onmousemove="<#outputformat 'JavaScript'>${attributes.doubleOnmousemove}</#outputformat>"<#rt/>
</#if>
<#if parameters.doubleOnmouseout??>
onmouseout="<#outputformat 'JavaScript'>${parameters.doubleOnmouseout}</#outputformat>"<#rt/>
<#if attributes.doubleOnmouseout??>
onmouseout="<#outputformat 'JavaScript'>${attributes.doubleOnmouseout}</#outputformat>"<#rt/>
</#if>
<#if parameters.doubleOnfocus??>
onfocus="<#outputformat 'JavaScript'>${parameters.doubleOnfocus}</#outputformat>"<#rt/>
<#if attributes.doubleOnfocus??>
onfocus="<#outputformat 'JavaScript'>${attributes.doubleOnfocus}</#outputformat>"<#rt/>
</#if>
<#if parameters.doubleOnblur??>
onblur="<#outputformat 'JavaScript'>${parameters.doubleOnblur}</#outputformat>"<#rt/>
<#if attributes.doubleOnblur??>
onblur="<#outputformat 'JavaScript'>${attributes.doubleOnblur}</#outputformat>"<#rt/>
</#if>
<#if parameters.doubleOnkeypress??>
onkeypress="<#outputformat 'JavaScript'>${parameters.doubleOnkeypress}</#outputformat>"<#rt/>
<#if attributes.doubleOnkeypress??>
onkeypress="<#outputformat 'JavaScript'>${attributes.doubleOnkeypress}</#outputformat>"<#rt/>
</#if>
<#if parameters.doubleOnkeydown??>
onkeydown="<#outputformat 'JavaScript'>${parameters.doubleOnkeydown}</#outputformat>"<#rt/>
<#if attributes.doubleOnkeydown??>
onkeydown="<#outputformat 'JavaScript'>${attributes.doubleOnkeydown}</#outputformat>"<#rt/>
</#if>
<#if parameters.doubleOnkeyup??>
onkeyup="<#outputformat 'JavaScript'>${parameters.doubleOnkeyup}</#outputformat>"<#rt/>
<#if attributes.doubleOnkeyup??>
onkeyup="<#outputformat 'JavaScript'>${attributes.doubleOnkeyup}</#outputformat>"<#rt/>
</#if>
<#if parameters.doubleOnselect??>
onselect="<#outputformat 'JavaScript'>${parameters.doubleOnselect}</#outputformat>"<#rt/>
<#if attributes.doubleOnselect??>
onselect="<#outputformat 'JavaScript'>${attributes.doubleOnselect}</#outputformat>"<#rt/>
</#if>
<#if parameters.doubleOnchange??>
onchange="<#outputformat 'JavaScript'>${parameters.doubleOnchange}</#outputformat>"<#rt/>
<#if attributes.doubleOnchange??>
onchange="<#outputformat 'JavaScript'>${attributes.doubleOnchange}</#outputformat>"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/prefixed-dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/prefixed-dynamic-attributes.ftl" />
<@prefixedDynamicAttributes prefix="second-"/>
>
</select>
<#if parameters.doubleMultiple!false>
<input type="hidden" id="__multiselect_${parameters.doubleId}"<#rt/>
name="__multiselect_${(parameters.doubleName!"")}" value=""<#rt/>
<#if parameters.doubleDisabled!false>
<#if attributes.doubleMultiple!false>
<input type="hidden" id="__multiselect_${attributes.doubleId}"<#rt/>
name="__multiselect_${(attributes.doubleName!"")}" value=""<#rt/>
<#if attributes.doubleDisabled!false>
disabled="disabled"<#rt/>
</#if>
/><#rt/>
</#if>
<@s.script>
<#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++) {
${parameters.escapedId}Group[i] = [];
var ${attributes.escapedId}Group = new Array(${attributes.listSize?number?c} + ${startCount});
for (var i = 0; i < (${attributes.listSize?number?c} + ${startCount}); i++) {
${attributes.escapedId}Group[i] = [];
}
<@s.iterator value="parameters.list">
<#if parameters.listKey??>
<#assign itemKey = stack.findValue(parameters.listKey)/>
<@s.iterator value="attributes.list">
<#if attributes.listKey??>
<#assign itemKey = stack.findValue(attributes.listKey)/>
<#else>
<#assign itemKey = stack.findValue('top')/>
</#if>
<#if parameters.listValue??>
<#assign itemValue = stack.findString(parameters.listValue)/>
<#if attributes.listValue??>
<#assign itemValue = stack.findString(attributes.listValue)/>
<#else>
<#assign itemValue = stack.findString('top')/>
</#if>
<#assign doubleItemCount = 0/>
<#if parameters.doubleHeaderKey?? && parameters.doubleHeaderValue??>
${parameters.escapedId}Group[${itemCount}][${doubleItemCount}] = new Option("${parameters.doubleHeaderValue?js_string}", "${parameters.doubleHeaderKey?js_string}");
<#if attributes.doubleHeaderKey?? && attributes.doubleHeaderValue??>
${attributes.escapedId}Group[${itemCount}][${doubleItemCount}] = new Option("${attributes.doubleHeaderValue?js_string}", "${attributes.doubleHeaderKey?js_string}");
<#assign doubleItemCount = doubleItemCount + 1/>
</#if>
<#if parameters.doubleEmptyOption??>
${parameters.escapedId}Group[${itemCount}][${doubleItemCount}] = new Option("", "");
<#if attributes.doubleEmptyOption??>
${attributes.escapedId}Group[${itemCount}][${doubleItemCount}] = new Option("", "");
<#assign doubleItemCount = doubleItemCount + 1/>
</#if>
<@s.iterator value="${parameters.doubleList}">
<#if parameters.doubleListKey??>
<#assign doubleItemKey = stack.findValue(parameters.doubleListKey)/>
<@s.iterator value="${attributes.doubleList}">
<#if attributes.doubleListKey??>
<#assign doubleItemKey = stack.findValue(attributes.doubleListKey)/>
<#else>
<#assign doubleItemKey = stack.findValue('top')/>
</#if>
<#assign doubleItemKeyStr = doubleItemKey.toString() />
<#if parameters.doubleListValue??>
<#assign doubleItemValue = stack.findString(parameters.doubleListValue)/>
<#if attributes.doubleListValue??>
<#assign doubleItemValue = stack.findString(attributes.doubleListValue)/>
<#else>
<#assign doubleItemValue = stack.findString('top')/>
</#if>
<#if parameters.doubleListCssClass??>
<#if stack.findString(parameters.doubleListCssClass)??>
<#assign itemDoubleCssClass= stack.findString(parameters.doubleListCssClass)/>
<#if attributes.doubleListCssClass??>
<#if stack.findString(attributes.doubleListCssClass)??>
<#assign itemDoubleCssClass= stack.findString(attributes.doubleListCssClass)/>
<#else>
<#assign itemDoubleCssClass = ''/>
</#if>
</#if>
<#if parameters.doubleListCssStyle??>
<#if stack.findString(parameters.doubleListCssStyle)??>
<#assign itemDoubleCssStyle= stack.findString(parameters.doubleListCssStyle)/>
<#if attributes.doubleListCssStyle??>
<#if stack.findString(attributes.doubleListCssStyle)??>
<#assign itemDoubleCssStyle= stack.findString(attributes.doubleListCssStyle)/>
<#else>
<#assign itemDoubleCssStyle = ''/>
</#if>
</#if>
<#if parameters.doubleListTitle??>
<#if stack.findString(parameters.doubleListTitle)??>
<#assign itemDoubleTitle= stack.findString(parameters.doubleListTitle)/>
<#if attributes.doubleListTitle??>
<#if stack.findString(attributes.doubleListTitle)??>
<#assign itemDoubleTitle= stack.findString(attributes.doubleListTitle)/>
<#else>
<#assign itemDoubleTitle = ''/>
</#if>
</#if>
${parameters.escapedId}Group[${itemCount}][${doubleItemCount}] = new Option("${doubleItemValue?js_string}", "${doubleItemKeyStr?js_string}");
${attributes.escapedId}Group[${itemCount}][${doubleItemCount}] = new Option("${doubleItemValue?js_string}", "${doubleItemKeyStr?js_string}");
<#if itemDoubleCssClass??>
${parameters.escapedId}Group[${itemCount}][${doubleItemCount}].setAttribute("class","${itemDoubleCssClass}");
${attributes.escapedId}Group[${itemCount}][${doubleItemCount}].setAttribute("class","${itemDoubleCssClass}");
</#if>
<#if itemDoubleCssStyle??>
${parameters.escapedId}Group[${itemCount}][${doubleItemCount}].setAttribute("style","${itemDoubleCssStyle}");
${attributes.escapedId}Group[${itemCount}][${doubleItemCount}].setAttribute("style","${itemDoubleCssStyle}");
</#if>
<#if itemDoubleTitle??>
${parameters.escapedId}Group[${itemCount}][${doubleItemCount}].setAttribute("title","${itemDoubleTitle}");
${attributes.escapedId}Group[${itemCount}][${doubleItemCount}].setAttribute("title","${itemDoubleTitle}");
</#if>
<#assign doubleItemCount = doubleItemCount + 1/>
@@ -190,48 +190,48 @@
<#assign itemCount = itemCount + 1/>
</@s.iterator>
var ${parameters.escapedId}Temp = document.${parameters.formName}.${parameters.doubleId};
var ${attributes.escapedId}Temp = document.${attributes.formName}.${attributes.doubleId};
<#assign itemCount = startCount/>
<#assign redirectTo = 0/>
<@s.iterator value="parameters.list">
<#if parameters.listKey??>
<#assign itemKey = stack.findValue(parameters.listKey)/>
<@s.iterator value="attributes.list">
<#if attributes.listKey??>
<#assign itemKey = stack.findValue(attributes.listKey)/>
<#else>
<#assign itemKey = stack.findValue('top')/>
</#if>
<#if tag.contains(parameters.nameValue, itemKey)>
<#if tag.contains(attributes.nameValue, itemKey)>
<#assign redirectTo = itemCount/>
</#if>
<#assign itemCount = itemCount + 1/>
</@s.iterator>
${parameters.escapedId}Redirect(${redirectTo});
function ${parameters.escapedId}Redirect(x) {
${attributes.escapedId}Redirect(${redirectTo});
function ${attributes.escapedId}Redirect(x) {
var selected = false;
for (var m = ${parameters.escapedId}Temp.options.length - 1; m >= 0; m--) {
${parameters.escapedId}Temp.remove(m);
for (var m = ${attributes.escapedId}Temp.options.length - 1; m >= 0; m--) {
${attributes.escapedId}Temp.remove(m);
}
for (var i = 0; i < ${parameters.escapedId}Group[x].length; i++) {
${parameters.escapedId}Temp.options[i] = new Option(${parameters.escapedId}Group[x][i].text, ${parameters.escapedId}Group[x][i].value);
<#if parameters.doubleNameValue??>
<#if parameters.doubleMultiple??>
for (var j = 0; j < ${parameters.doubleNameValue}.length; j++) {
if (${parameters.escapedId}Temp.options[i].value == ${parameters.doubleNameValue?js_string}[j]) {
${parameters.escapedId}Temp.options[i].selected = true;
for (var i = 0; i < ${attributes.escapedId}Group[x].length; i++) {
${attributes.escapedId}Temp.options[i] = new Option(${attributes.escapedId}Group[x][i].text, ${attributes.escapedId}Group[x][i].value);
<#if attributes.doubleNameValue??>
<#if attributes.doubleMultiple??>
for (var j = 0; j < ${attributes.doubleNameValue}.length; j++) {
if (${attributes.escapedId}Temp.options[i].value == ${attributes.doubleNameValue?js_string}[j]) {
${attributes.escapedId}Temp.options[i].selected = true;
selected = true;
}
}
<#else>
if (${parameters.escapedId}Temp.options[i].value == '${parameters.doubleNameValue?js_string}') {
${parameters.escapedId}Temp.options[i].selected = true;
if (${attributes.escapedId}Temp.options[i].value == '${attributes.doubleNameValue?js_string}') {
${attributes.escapedId}Temp.options[i].selected = true;
selected = true;
}
</#if>
</#if>
}
if ((${parameters.escapedId}Temp.options.length > 0) && (! selected)) {
${parameters.escapedId}Temp.options[0].selected = true;
if ((${attributes.escapedId}Temp.options.length > 0) && (! selected)) {
${attributes.escapedId}Temp.options[0].selected = true;
}
}
</@s.script>
@@ -25,10 +25,10 @@
<#return true>
</#if>
</#function>
<#if (parameters.dynamicAttributes?? && parameters.dynamicAttributes?size > 0)><#rt/>
<#assign aKeys = parameters.dynamicAttributes.keySet()><#rt/>
<#if (attributes.dynamicAttributes?? && attributes.dynamicAttributes?size > 0)><#rt/>
<#assign aKeys = attributes.dynamicAttributes.keySet()><#rt/>
<#list aKeys?filter(acceptKey) as aKey><#rt/>
<#assign keyValue = parameters.dynamicAttributes.get(aKey)/>
<#assign keyValue = attributes.dynamicAttributes.get(aKey)/>
<#if keyValue?is_string>
<#if evaluate_dynamic_attributes!false == true>
<#assign value = struts.translateVariables(keyValue)!keyValue/><#rt/>
@@ -32,22 +32,22 @@
<#assign eValue = fieldErrors.get(fieldErrorFieldName)><#t/>
<#if (haveMatchedErrorField && (!doneStartUlTag))><#t/>
<ul<#rt/>
<#if parameters.id?has_content>
id="${parameters.id}"<#rt/>
<#if attributes.id?has_content>
id="${attributes.id}"<#rt/>
</#if>
<#if parameters.cssClass?has_content>
class="${parameters.cssClass}"<#rt/>
<#if attributes.cssClass?has_content>
class="${attributes.cssClass}"<#rt/>
<#else>
class="errorMessage"<#rt/>
</#if>
<#if parameters.cssStyle?has_content>
style="${parameters.cssStyle}"<#rt/>
<#if attributes.cssStyle?has_content>
style="${attributes.cssStyle}"<#rt/>
</#if>
>
<#assign doneStartUlTag=true><#t/>
</#if><#t/>
<#list eValue as eEachValue><#t/>
<li><span><#if parameters.escape>${eEachValue!}<#else>${eEachValue!?no_esc}</#if></span></li>
<li><span><#if attributes.escape>${eEachValue!}<#else>${eEachValue!?no_esc}</#if></span></li>
</#list><#t/>
</#if><#t/>
</#list><#t/>
@@ -59,19 +59,19 @@
<#else><#t/>
<#if (eKeysSize > 0)><#t/>
<ul<#rt/>
<#if parameters.cssClass?has_content>
class="${parameters.cssClass}"<#rt/>
<#if attributes.cssClass?has_content>
class="${attributes.cssClass}"<#rt/>
<#else>
class="errorMessage"<#rt/>
</#if>
<#if parameters.cssStyle?has_content>
style="${parameters.cssStyle}"<#rt/>
<#if attributes.cssStyle?has_content>
style="${attributes.cssStyle}"<#rt/>
</#if>
>
<#list eKeys as eKey><#t/>
<#assign eValue = fieldErrors.get(eKey)><#t/>
<#list eValue as eEachValue><#t/>
<li><span><#if parameters.escape>${eEachValue!}<#else>${eEachValue!?no_esc}</#if></span></li>
<li><span><#if attributes.escape>${eEachValue!}<#else>${eEachValue!?no_esc}</#if></span></li>
</#list><#t/>
</#list><#t/>
</ul>
@@ -19,27 +19,27 @@
*/
-->
<input type="file"<#rt/>
name="${(parameters.name!"")}"<#rt/>
<#if parameters.get("size")?has_content>
size="${parameters.get("size")}"<#rt/>
name="${(attributes.name!"")}"<#rt/>
<#if attributes.get("size")?has_content>
size="${attributes.get("size")}"<#rt/>
</#if>
<#if parameters.disabled!false>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
<#if parameters.accept?has_content>
accept="${parameters.accept}"<#rt/>
<#if attributes.accept?has_content>
accept="${attributes.accept}"<#rt/>
</#if>
<#if parameters.tabindex?has_content>
tabindex="${parameters.tabindex}"<#rt/>
<#if attributes.tabindex?has_content>
tabindex="${attributes.tabindex}"<#rt/>
</#if>
<#if parameters.id?has_content>
id="${parameters.id}"<#rt/>
<#if attributes.id?has_content>
id="${attributes.id}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
<#if parameters.title?has_content>
title="${parameters.title}"<#rt/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/css.ftl" />
<#if attributes.title?has_content>
title="${attributes.title}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/scripting-events.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/common-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" />
/>
@@ -22,8 +22,8 @@
<#--
Code that will add javascript needed for tooltips
--><#t/>
<#if (parameters.hasTooltip!false)><#t/>
<#if (attributes.hasTooltip!false)><#t/>
<#lt/><!-- javascript that is needed for tooltips -->
<#lt/><@s.script src="${base}${parameters.staticContentPath}/domTT.js" />
<#lt/><@s.link rel="stylesheet" type="text/css" href="${base}${parameters.staticContentPath}/domTT.css" />
<#lt/><@s.script src="${base}${attributes.staticContentPath}/domTT.js" />
<#lt/><@s.link rel="stylesheet" type="text/css" href="${base}${attributes.staticContentPath}/domTT.css" />
</#if><#t/>
@@ -20,21 +20,21 @@
-->
</form>
<#if (parameters.customOnsubmitEnabled??)>
<#if (attributes.customOnsubmitEnabled??)>
<@s.script>
<#--
Enable auto-select of optiontransferselect tag's entries upon containing form's
submission.
-->
<#if (parameters.optiontransferselectIds!?size > 0)>
var containingForm = document.getElementById("${parameters.id?js_string}");
<#assign selectObjIds = parameters.optiontransferselectIds.keySet() />
<#if (attributes.optiontransferselectIds!?size > 0)>
var containingForm = document.getElementById("${attributes.id?js_string}");
<#assign selectObjIds = attributes.optiontransferselectIds.keySet() />
<#list selectObjIds as selectObjectId>
StrutsUtils.addEventListener(containingForm, "submit",
function(evt) {
var selectObj = document.getElementById("${selectObjectId?js_string}");
<#if parameters.optiontransferselectIds.get(selectObjectId)??>
<#assign selectTagHeaderKey = parameters.optiontransferselectIds.get(selectObjectId)/>
<#if attributes.optiontransferselectIds.get(selectObjectId)??>
<#assign selectTagHeaderKey = attributes.optiontransferselectIds.get(selectObjectId)/>
selectAllOptionsExceptSome(selectObj, "key", "${selectTagHeaderKey?js_string}");
<#else>
selectAllOptionsExceptSome(selectObj, "key", "");
@@ -42,15 +42,15 @@
}, true);
</#list>
</#if>
<#if (parameters.inputtransferselectIds!?size > 0)>
var containingForm = document.getElementById("${parameters.id?js_string}");
<#assign selectObjIds = parameters.inputtransferselectIds.keySet() />
<#if (attributes.inputtransferselectIds!?size > 0)>
var containingForm = document.getElementById("${attributes.id?js_string}");
<#assign selectObjIds = attributes.inputtransferselectIds.keySet() />
<#list selectObjIds as selectObjectId>
StrutsUtils.addEventListener(containingForm, "submit",
function(evt) {
var selectObj = document.getElementById("${selectObjectId?js_string}");
<#if parameters.inputtransferselectIds.get(selectObjectId)??>
<#assign selectTagHeaderKey = parameters.inputtransferselectIds.get(selectObjectId)/>
<#if attributes.inputtransferselectIds.get(selectObjectId)??>
<#assign selectTagHeaderKey = attributes.inputtransferselectIds.get(selectObjectId)/>
selectAllOptionsExceptSome(selectObj, "key", "${selectTagHeaderKey?js_string}");
<#else>
selectAllOptionsExceptSome(selectObj, "key", "");
@@ -58,15 +58,15 @@
}, true);
</#list>
</#if>
<#if (parameters.optiontransferselectDoubleIds!?size > 0)>
var containingForm = document.getElementById("${parameters.id?js_string}");
<#assign selectDoubleObjIds = parameters.optiontransferselectDoubleIds.keySet() />
<#if (attributes.optiontransferselectDoubleIds!?size > 0)>
var containingForm = document.getElementById("${attributes.id?js_string}");
<#assign selectDoubleObjIds = attributes.optiontransferselectDoubleIds.keySet() />
<#list selectDoubleObjIds as selectObjId>
StrutsUtils.addEventListener(containingForm, "submit",
function(evt) {
var selectObj = document.getElementById("${selectObjId?js_string}");
<#if parameters.optiontransferselectDoubleIds.get(selectObjId)??>
<#assign selectTagHeaderKey = parameters.optiontransferselectDoubleIds.get(selectObjId)/>
<#if attributes.optiontransferselectDoubleIds.get(selectObjId)??>
<#assign selectTagHeaderKey = attributes.optiontransferselectDoubleIds.get(selectObjId)/>
selectAllOptionsExceptSome(selectObj, "key", "${selectTagHeaderKey?js_string}");
<#else>
selectAllOptionsExceptSome(selectObj, "key", "");
@@ -80,15 +80,15 @@
Enable auto-select of all elements of updownselect tag upon its containing form
submission
-->
<#if (parameters.updownselectIds!?size > 0)>
var containingForm = document.getElementById("${parameters.id?js_string}");
<#assign tmpIds = parameters.updownselectIds.keySet() />
<#if (attributes.updownselectIds!?size > 0)>
var containingForm = document.getElementById("${attributes.id?js_string}");
<#assign tmpIds = attributes.updownselectIds.keySet() />
<#list tmpIds as tmpId>
StrutsUtils.addEventListener(containingForm, "submit",
function(evt) {
var updownselectObj = document.getElementById("${tmpId?js_string}");
<#if parameters.updownselectIds.get(tmpId)??>
<#assign tmpHeaderKey = parameters.updownselectIds.get(tmpId) />
<#if attributes.updownselectIds.get(tmpId)??>
<#assign tmpHeaderKey = attributes.updownselectIds.get(tmpId) />
selectAllOptionsExceptSome(updownselectObj, "key", "${tmpHeaderKey?js_string}");
<#else>
selectAllOptionsExceptSome(updownselectObj, "key", "");
@@ -99,4 +99,4 @@
</@s.script>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/form-close-tooltips.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/form-close-tooltips.ftl" />
@@ -20,48 +20,48 @@
* under the License.
*/
-->
<#if (parameters.validate!false == false)><#rt/>
<#if parameters.onsubmit?has_content><#rt/>
${tag.addParameter('onsubmit', "${parameters.onsubmit}") }
<#if (attributes.validate!false == false)><#rt/>
<#if attributes.onsubmit?has_content><#rt/>
${tag.addParameter('onsubmit', "${attributes.onsubmit}") }
</#if>
</#if>
<form<#rt/>
<#if parameters.id?has_content>
id="${parameters.id}"<#rt/>
<#if attributes.id?has_content>
id="${attributes.id}"<#rt/>
</#if>
<#if parameters.name?has_content>
name="${parameters.name}"<#rt/>
<#if attributes.name?has_content>
name="${attributes.name}"<#rt/>
</#if>
<#if parameters.onsubmit?has_content>
onsubmit="<#outputformat 'JavaScript'>${parameters.onsubmit}</#outputformat>"<#rt/>
<#if attributes.onsubmit?has_content>
onsubmit="<#outputformat 'JavaScript'>${attributes.onsubmit}</#outputformat>"<#rt/>
</#if>
<#if parameters.onreset?has_content>
onreset="<#outputformat 'JavaScript'>${parameters.onreset}</#outputformat>"<#rt/>
<#if attributes.onreset?has_content>
onreset="<#outputformat 'JavaScript'>${attributes.onreset}</#outputformat>"<#rt/>
</#if>
<#if parameters.action?has_content>
action="${parameters.action}"<#rt/>
<#if attributes.action?has_content>
action="${attributes.action}"<#rt/>
</#if>
<#if parameters.target?has_content>
target="${parameters.target}"<#rt/>
<#if attributes.target?has_content>
target="${attributes.target}"<#rt/>
</#if>
<#if parameters.method?has_content>
method="${parameters.method}"<#rt/>
<#if attributes.method?has_content>
method="${attributes.method}"<#rt/>
<#else>
method="post"<#rt/>
</#if>
<#if parameters.enctype?has_content>
enctype="${parameters.enctype}"<#rt/>
<#if attributes.enctype?has_content>
enctype="${attributes.enctype}"<#rt/>
</#if>
<#if parameters.cssClass?has_content>
class="${parameters.cssClass}"<#rt/>
<#if attributes.cssClass?has_content>
class="${attributes.cssClass}"<#rt/>
</#if>
<#if parameters.cssStyle?has_content>
style="${parameters.cssStyle}"<#rt/>
<#if attributes.cssStyle?has_content>
style="${attributes.cssStyle}"<#rt/>
</#if>
<#if parameters.title?has_content>
title="${parameters.title}"<#rt/>
<#if attributes.title?has_content>
title="${attributes.title}"<#rt/>
</#if>
<#if parameters.acceptcharset?has_content>
accept-charset="${parameters.acceptcharset}"<#rt/>
<#if attributes.acceptcharset?has_content>
accept-charset="${attributes.acceptcharset}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" />
@@ -18,8 +18,8 @@
* under the License.
*/
-->
<#include "/${parameters.templateDir}/${parameters.expandTheme}/form-common.ftl" />
<#if parameters.onreset?has_content>
onreset="${parameters.onreset}"<#rt/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/form-common.ftl" />
<#if attributes.onreset?has_content>
onreset="${attributes.onreset}"<#rt/>
</#if>
>
@@ -18,4 +18,4 @@
* under the License.
*/
-->
<@s.script src="${base}${parameters.staticContentPath}/utils.js" />
<@s.script src="${base}${attributes.staticContentPath}/utils.js" />
@@ -19,21 +19,21 @@
*/
-->
<input type="hidden"<#rt/>
name="${(parameters.name!"")}"<#rt/>
<#if parameters.nameValue??>
value="<@s.property value="parameters.nameValue"/>"<#rt/>
name="${(attributes.name!"")}"<#rt/>
<#if attributes.nameValue??>
value="<@s.property value="attributes.nameValue"/>"<#rt/>
</#if>
<#if parameters.id?has_content>
id="${parameters.id}"<#rt/>
<#if attributes.id?has_content>
id="${attributes.id}"<#rt/>
</#if>
<#if parameters.cssClass?has_content>
class="${parameters.cssClass}"<#rt/>
<#if attributes.cssClass?has_content>
class="${attributes.cssClass}"<#rt/>
</#if>
<#if parameters.cssStyle?has_content>
style="${parameters.cssStyle}"<#rt/>
<#if attributes.cssStyle?has_content>
style="${attributes.cssStyle}"<#rt/>
</#if>
<#if parameters.disabled!false>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" />
/>
@@ -19,103 +19,103 @@
*/
-->
<#if !stack.findValue("#inputtransferselect_js_included")??><#t/>
<@s.script src="${base}${parameters.staticContentPath}/inputtransferselect.js"/>
<@s.script src="${base}${attributes.staticContentPath}/inputtransferselect.js"/>
<#assign temporaryVariable = stack.setValue("#inputtransferselect_js_included", "true") /><#t/>
</#if><#t/>
<table>
<tr>
<td>
<#if parameters.leftTitle??><#t/>
<label for="leftTitle">${parameters.leftTitle}</label><br />
<#if attributes.leftTitle??><#t/>
<label for="leftTitle">${attributes.leftTitle}</label><br />
</#if><#t/>
<input type="text"<#rt/>
name="${parameters.name!""}_input"<#rt/>
<#if parameters.disabled!false>
name="${attributes.name!""}_input"<#rt/>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
<#if parameters.readonly!false>
<#if attributes.readonly!false>
readonly="readonly"<#rt/>
</#if>
<#if parameters.tabindex?has_content>
tabindex="${parameters.tabindex}"<#rt/>
<#if attributes.tabindex?has_content>
tabindex="${attributes.tabindex}"<#rt/>
</#if>
<#if parameters.id?has_content>
id="${parameters.id}_input"<#rt/>
<#if attributes.id?has_content>
id="${attributes.id}_input"<#rt/>
</#if>
<#if parameters.cssClass?has_content>
class="${parameters.cssClass}"<#rt/>
<#if attributes.cssClass?has_content>
class="${attributes.cssClass}"<#rt/>
</#if>
<#if parameters.cssStyle?has_content>
style="${parameters.cssStyle}"<#rt/>
<#if attributes.cssStyle?has_content>
style="${attributes.cssStyle}"<#rt/>
</#if>
<#if parameters.title?has_content>
title="${parameters.title}"<#rt/>
<#if attributes.title?has_content>
title="${attributes.title}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/prefixed-dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/scripting-events.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/common-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/prefixed-dynamic-attributes.ftl" />
<@prefixedDynamicAttributes prefix="input-"/>
/>
</td>
<td class="tdTransferSelect">
<#assign addLabel=(parameters.addLabel!"->") /><#t/>
<#assign addLabel=(attributes.addLabel!"->") /><#t/>
<input type="button"
<#if parameters.buttonCssClass?has_content><#t/>
class="${parameters.buttonCssClass}"
<#if attributes.buttonCssClass?has_content><#t/>
class="${attributes.buttonCssClass}"
</#if><#t/>
<#if parameters.buttonCssStyle?has_content>
style="${parameters.buttonCssStyle}"
<#if attributes.buttonCssStyle?has_content>
style="${attributes.buttonCssStyle}"
</#if><#t/>
value="${addLabel}" onclick="addOption(document.getElementById('${parameters.id}_input'), document.getElementById('${parameters.id}'))" /><br /><br />
value="${addLabel}" onclick="addOption(document.getElementById('${attributes.id}_input'), document.getElementById('${attributes.id}'))" /><br /><br />
<#t/>
<#assign removeLabel=(parameters.removeLabel!"<-") /><#t/>
<#assign removeLabel=(attributes.removeLabel!"<-") /><#t/>
<input type="button"
<#if parameters.buttonCssClass?has_content><#t/>
class="${parameters.buttonCssClass}"
<#if attributes.buttonCssClass?has_content><#t/>
class="${attributes.buttonCssClass}"
</#if><#t/>
<#if parameters.buttonCssStyle?has_content>
style="${parameters.buttonCssStyle}"
<#if attributes.buttonCssStyle?has_content>
style="${attributes.buttonCssStyle}"
</#if><#t/>
value="${removeLabel}" onclick="removeOptions(document.getElementById('${parameters.id}'))" /><br /><br />
value="${removeLabel}" onclick="removeOptions(document.getElementById('${attributes.id}'))" /><br /><br />
<#t/>
<#assign removeAllLabel=(parameters.removeAllLabel!"<<--") /><#t/>
<#assign removeAllLabel=(attributes.removeAllLabel!"<<--") /><#t/>
<input type="button"
<#if parameters.buttonCssClass?has_content><#t/>
class="${parameters.buttonCssClass}"
<#if attributes.buttonCssClass?has_content><#t/>
class="${attributes.buttonCssClass}"
</#if><#t/>
<#if parameters.buttonCssStyle?has_content>
style="${parameters.buttonCssStyle}"
<#if attributes.buttonCssStyle?has_content>
style="${attributes.buttonCssStyle}"
</#if><#t/>
value="${removeAllLabel}" onclick="removeAllOptions(document.getElementById('${parameters.id}'))" /><br /><br />
value="${removeAllLabel}" onclick="removeAllOptions(document.getElementById('${attributes.id}'))" /><br /><br />
</td>
<td>
<#if parameters.rightTitle?has_content><#t/>
<label for="rightTitle">${parameters.rightTitle}</label><br />
<#if attributes.rightTitle?has_content><#t/>
<label for="rightTitle">${attributes.rightTitle}</label><br />
</#if><#t/>
<#global dynamic_attributes_ignore = "input-"/>
<#include "/${parameters.templateDir}/simple/select.ftl" />
<#if parameters.allowUpDown!true>
<#include "/${attributes.templateDir}/simple/select.ftl" />
<#if attributes.allowUpDown!true>
<input type="button"
<#if parameters.headerKey?has_content>
onclick="moveOptionDown(document.getElementById('${parameters.id}'), 'key', '${parameters.headerKey}');"
<#if attributes.headerKey?has_content>
onclick="moveOptionDown(document.getElementById('${attributes.id}'), 'key', '${attributes.headerKey}');"
<#else>
onclick="moveOptionDown(document.getElementById('${parameters.id}'), 'key', '');"
onclick="moveOptionDown(document.getElementById('${attributes.id}'), 'key', '');"
</#if>
<#if parameters.downLabel?has_content>
value="${parameters.downLabel}"
<#if attributes.downLabel?has_content>
value="${attributes.downLabel}"
</#if>
/>
<input type="button"
<#if parameters.headerKey?has_content>
onclick="moveOptionUp(document.getElementById('${parameters.id}'), 'key', '${parameters.headerKey}');"
<#if attributes.headerKey?has_content>
onclick="moveOptionUp(document.getElementById('${attributes.id}'), 'key', '${attributes.headerKey}');"
<#else>
onclick="moveOptionUp(document.getElementById('${parameters.id}'), 'key', '');"
onclick="moveOptionUp(document.getElementById('${attributes.id}'), 'key', '');"
</#if>
<#if parameters.upLabel?has_content>
value="${parameters.upLabel}"
<#if attributes.upLabel?has_content>
value="${attributes.upLabel}"
</#if>
/>
</#if>
@@ -19,20 +19,20 @@
*/
-->
<label<#rt/>
<#if parameters.id?has_content>
id="${parameters.id}"<#rt/>
<#if attributes.id?has_content>
id="${attributes.id}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
<#if parameters.title?has_content>
title="${parameters.title}"<#rt/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/css.ftl" />
<#if attributes.title?has_content>
title="${attributes.title}"<#rt/>
</#if>
<#if parameters.for?has_content>
for="${parameters.for}"<#rt/>
<#if attributes.for?has_content>
for="${attributes.for}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/common-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" />
><#rt/>
<#if parameters.nameValue??>
<@s.property value="parameters.nameValue"/><#t/>
<#if attributes.nameValue??>
<@s.property value="attributes.nameValue"/><#t/>
</#if>
</label>
@@ -19,46 +19,46 @@
*/
-->
<link<#rt/>
<#if parameters.rel?has_content>
rel="${parameters.rel}"<#rt/>
<#if attributes.rel?has_content>
rel="${attributes.rel}"<#rt/>
</#if>
<#if parameters.type?has_content>
type="${parameters.type}"<#rt/>
<#if attributes.type?has_content>
type="${attributes.type}"<#rt/>
</#if>
<#if parameters.href?has_content>
href="${parameters.href}"<#rt/>
<#if attributes.href?has_content>
href="${attributes.href}"<#rt/>
</#if>
<#if parameters.hreflang?has_content>
hreflang="${parameters.hreflang}"<#rt/>
<#if attributes.hreflang?has_content>
hreflang="${attributes.hreflang}"<#rt/>
</#if>
<#if parameters.disabled?has_content && parameters.disabled == "true">
<#if attributes.disabled?has_content && attributes.disabled == "true">
disabled<#rt/>
</#if>
<#if parameters.media?has_content>
media="${parameters.media}"<#rt/>
<#if attributes.media?has_content>
media="${attributes.media}"<#rt/>
</#if>
<#if parameters.title?has_content>
title="${parameters.title}"<#rt/>
<#if attributes.title?has_content>
title="${attributes.title}"<#rt/>
</#if>
<#if parameters.as?has_content>
as="${parameters.as}"<#rt/>
<#if attributes.as?has_content>
as="${attributes.as}"<#rt/>
</#if>
<#if parameters.referrerpolicy?has_content>
referrerpolicy="${parameters.referrerpolicy}"<#rt/>
<#if attributes.referrerpolicy?has_content>
referrerpolicy="${attributes.referrerpolicy}"<#rt/>
</#if>
<#if parameters.sizes?has_content>
sizes="${parameters.sizes}"<#rt/>
<#if attributes.sizes?has_content>
sizes="${attributes.sizes}"<#rt/>
</#if>
<#if parameters.crossorigin?has_content>
crossorigin="${parameters.crossorigin}"<#rt/>
<#if attributes.crossorigin?has_content>
crossorigin="${attributes.crossorigin}"<#rt/>
</#if>
<#if parameters.integrity?has_content>
integrity="${parameters.integrity}"<#rt/>
<#if attributes.integrity?has_content>
integrity="${attributes.integrity}"<#rt/>
</#if>
<#if parameters.importance?has_content>
importance="${parameters.importance}"<#rt/>
<#if attributes.importance?has_content>
importance="${attributes.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/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/common-attributes.ftl" /><#rt/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" /><#rt/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/nonce.ftl" /><#rt/>
/>
@@ -18,6 +18,6 @@
* under the License.
*/
-->
<#if parameters.nonce?has_content><#rt/>
nonce="${parameters.nonce}"<#rt/>
<#if attributes.nonce?has_content><#rt/>
nonce="${attributes.nonce}"<#rt/>
</#if><#rt/>
@@ -18,37 +18,37 @@
* under the License.
*/
-->
<#if parameters.optGroupInternalListUiBeanList??>
<#assign optGroupInternalListUiBeans=parameters.optGroupInternalListUiBeanList />
<#if attributes.optGroupInternalListUiBeanList??>
<#assign optGroupInternalListUiBeans=attributes.optGroupInternalListUiBeanList />
<#list optGroupInternalListUiBeans as optGroupInternalListUiBean>
<optgroup<#rt>
<#if optGroupInternalListUiBean.parameters.label?has_content>
label="${optGroupInternalListUiBean.parameters.label}"<#rt>
<#if optGroupInternalListUiBean.attributes.label?has_content>
label="${optGroupInternalListUiBean.attributes.label}"<#rt>
</#if>
<#if optGroupInternalListUiBean.parameters.disabled!false>
<#if optGroupInternalListUiBean.attributes.disabled!false>
disabled="disabled"<#rt>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" />
>
<#list optGroupInternalListUiBean.parameters.list as optGroupBean>
<#list optGroupInternalListUiBean.attributes.list as optGroupBean>
<#assign trash=stack.push(optGroupBean) />
<#assign tmpKey=stack.findValue(optGroupInternalListUiBean.parameters.listKey) />
<#assign tmpValue=stack.findValue(optGroupInternalListUiBean.parameters.listValue) />
<#assign tmpKey=stack.findValue(optGroupInternalListUiBean.attributes.listKey) />
<#assign tmpValue=stack.findValue(optGroupInternalListUiBean.attributes.listValue) />
<#assign tmpKeyStr = tmpKey.toString() />
<#assign optGroupItemCssClass = ''/>
<#if optGroupInternalListUiBean.parameters.listCssClass??>
<#assign optGroupItemCssClass= stack.findString(optGroupInternalListUiBean.parameters.listCssClass)!''/>
<#if optGroupInternalListUiBean.attributes.listCssClass??>
<#assign optGroupItemCssClass= stack.findString(optGroupInternalListUiBean.attributes.listCssClass)!''/>
</#if>
<#assign optGroupItemCssStyle = ''/>
<#if optGroupInternalListUiBean.parameters.listCssStyle??>
<#assign optGroupItemCssStyle= stack.findString(optGroupInternalListUiBean.parameters.listCssStyle)!''/>
<#if optGroupInternalListUiBean.attributes.listCssStyle??>
<#assign optGroupItemCssStyle= stack.findString(optGroupInternalListUiBean.attributes.listCssStyle)!''/>
</#if>
<#assign optGroupItemTitle = ''/>
<#if optGroupInternalListUiBean.parameters.listTitle??>
<#assign optGroupItemTitle= stack.findString(optGroupInternalListUiBean.parameters.listTitle)!''/>
<#if optGroupInternalListUiBean.attributes.listTitle??>
<#assign optGroupItemTitle= stack.findString(optGroupInternalListUiBean.attributes.listTitle)!''/>
</#if>
<option value="${tmpKeyStr}"<#rt>
<#if tag.contains(parameters.nameValue, tmpKey) == true>
<#if tag.contains(attributes.nameValue, tmpKey) == true>
selected="selected"<#rt>
</#if>
<#if optGroupItemCssClass?has_content>
@@ -19,281 +19,281 @@
*/
-->
<#if !stack.findValue("#optiontransferselect_js_included")??><#t/>
<@s.script src="${base}${parameters.staticContentPath}/optiontransferselect.js" />
<@s.script src="${base}${attributes.staticContentPath}/optiontransferselect.js" />
<#assign temporaryVariable = stack.setValue("#optiontransferselect_js_included", "true") /><#t/>
</#if><#t/>
<table>
<tr>
<td>
<#if parameters.leftTitle??><#t/>
<label for="leftTitle">${parameters.leftTitle}</label><br />
<#if attributes.leftTitle??><#t/>
<label for="leftTitle">${attributes.leftTitle}</label><br />
</#if><#t/>
<#global dynamic_attributes_ignore = "right-"/>
<#include "/${parameters.templateDir}/simple/select.ftl" />
<#if parameters.allowUpDownOnLeft!true>
<#include "/${attributes.templateDir}/simple/select.ftl" />
<#if attributes.allowUpDownOnLeft!true>
<input type="button"
onclick="moveOptionDown(document.getElementById('${parameters.id}'), 'key', <#if parameters.headerKey??>'${parameters.headerKey}'<#else>''</#if>);<#if parameters.upDownOnLeftOnclick?has_content><#outputformat 'JavaScript'>${parameters.upDownOnLeftOnclick}</#outputformat>;</#if>"
<#if parameters.leftDownLabel??>
value="${parameters.leftDownLabel}"
onclick="moveOptionDown(document.getElementById('${attributes.id}'), 'key', <#if attributes.headerKey??>'${attributes.headerKey}'<#else>''</#if>);<#if attributes.upDownOnLeftOnclick?has_content><#outputformat 'JavaScript'>${attributes.upDownOnLeftOnclick}</#outputformat>;</#if>"
<#if attributes.leftDownLabel??>
value="${attributes.leftDownLabel}"
</#if>
/>
<input type="button"
onclick="moveOptionUp(document.getElementById('${parameters.id}'), 'key', <#if parameters.headerKey??>'${parameters.headerKey}'<#else>''</#if>);<#if parameters.upDownOnLeftOnclick?has_content><#outputformat 'JavaScript'>${parameters.upDownOnLeftOnclick}</#outputformat>;</#if>"
<#if parameters.leftUpLabel??>
value="${parameters.leftUpLabel}"
onclick="moveOptionUp(document.getElementById('${attributes.id}'), 'key', <#if attributes.headerKey??>'${attributes.headerKey}'<#else>''</#if>);<#if attributes.upDownOnLeftOnclick?has_content><#outputformat 'JavaScript'>${attributes.upDownOnLeftOnclick}</#outputformat>;</#if>"
<#if attributes.leftUpLabel??>
value="${attributes.leftUpLabel}"
</#if>
/>
</#if>
</td>
<td class="tdTransferSelect">
<#if parameters.allowAddToLeft!true><#t/>
<#assign addToLeftLabel = parameters.addToLeftLabel!"<-"/><#t/>
<#if parameters.doubleHeaderKey??><#t/>
<#if attributes.allowAddToLeft!true><#t/>
<#assign addToLeftLabel = attributes.addToLeftLabel!"<-"/><#t/>
<#if attributes.doubleHeaderKey??><#t/>
<input type="button"
<#if parameters.buttonCssClass??><#t/>
class="${parameters.buttonCssClass}"
<#if attributes.buttonCssClass??><#t/>
class="${attributes.buttonCssClass}"
</#if><#t/>
<#if parameters.buttonCssStyle??><#t/>
style="${parameters.buttonCssStyle}"
<#if attributes.buttonCssStyle??><#t/>
style="${attributes.buttonCssStyle}"
</#if><#t/>
value="${addToLeftLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.doubleId}'), document.getElementById('${parameters.id}'), false, '${parameters.doubleHeaderKey}', '');<#if parameters.addToLeftOnclick?has_content><#outputformat 'JavaScript'>${parameters.addToLeftOnclick}</#outputformat>;</#if>" /><br /><br />
value="${addToLeftLabel}" onclick="moveSelectedOptions(document.getElementById('${attributes.doubleId}'), document.getElementById('${attributes.id}'), false, '${attributes.doubleHeaderKey}', '');<#if attributes.addToLeftOnclick?has_content><#outputformat 'JavaScript'>${attributes.addToLeftOnclick}</#outputformat>;</#if>" /><br /><br />
<#else><#t/>
<input type="button"
<#if parameters.buttonCssClass??><#t/>
class="${parameters.buttonCssClass}"
<#if attributes.buttonCssClass??><#t/>
class="${attributes.buttonCssClass}"
</#if><#t/>
<#if parameters.buttonCssStyle??><#t/>
style="${parameters.buttonCssStyle}"
<#if attributes.buttonCssStyle??><#t/>
style="${attributes.buttonCssStyle}"
</#if><#t/>
value="${addToLeftLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.doubleId}'), document.getElementById('${parameters.id}'), false, '');<#if parameters.addToLeftOnclick?has_content><#outputformat 'JavaScript'>${parameters.addToLeftOnclick}</#outputformat>;</#if>" /><br /><br />
value="${addToLeftLabel}" onclick="moveSelectedOptions(document.getElementById('${attributes.doubleId}'), document.getElementById('${attributes.id}'), false, '');<#if attributes.addToLeftOnclick?has_content><#outputformat 'JavaScript'>${attributes.addToLeftOnclick}</#outputformat>;</#if>" /><br /><br />
</#if><#t/>
</#if><#t/>
<#if parameters.allowAddToRight!true><#t/>
<#assign addToRightLabel=parameters.addToRightLabel!"->" /><#t/>
<#if parameters.headerKey??><#t/>
<#if attributes.allowAddToRight!true><#t/>
<#assign addToRightLabel=attributes.addToRightLabel!"->" /><#t/>
<#if attributes.headerKey??><#t/>
<input type="button"
<#if parameters.buttonCssClass??><#t/>
class="${parameters.buttonCssClass}"
<#if attributes.buttonCssClass??><#t/>
class="${attributes.buttonCssClass}"
</#if><#t/>
<#if parameters.buttonCssStyle??><#t/>
style="${parameters.buttonCssStyle}"
<#if attributes.buttonCssStyle??><#t/>
style="${attributes.buttonCssStyle}"
</#if><#t/>
value="${addToRightLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.id}'), document.getElementById('${parameters.doubleId}'), false, '${parameters.headerKey}', '');<#if parameters.addToRightOnclick?has_content><#outputformat 'JavaScript'>${parameters.addToRightOnclick}</#outputformat>;</#if>" /><br /><br />
value="${addToRightLabel}" onclick="moveSelectedOptions(document.getElementById('${attributes.id}'), document.getElementById('${attributes.doubleId}'), false, '${attributes.headerKey}', '');<#if attributes.addToRightOnclick?has_content><#outputformat 'JavaScript'>${attributes.addToRightOnclick}</#outputformat>;</#if>" /><br /><br />
<#else><#t/>
<input type="button"
<#if parameters.buttonCssClass??><#t/>
class="${parameters.buttonCssClass}"
<#if attributes.buttonCssClass??><#t/>
class="${attributes.buttonCssClass}"
</#if><#t/>
<#if parameters.buttonCssStyle??>
style="${parameters.buttonCssStyle}"
<#if attributes.buttonCssStyle??>
style="${attributes.buttonCssStyle}"
</#if><#t/>
value="${addToRightLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.id}'), document.getElementById('${parameters.doubleId}'), false, '');<#if parameters.addToRightOnclick?has_content><#outputformat 'JavaScript'>${parameters.addToRightOnclick}</#outputformat>;</#if>" /><br /><br />
value="${addToRightLabel}" onclick="moveSelectedOptions(document.getElementById('${attributes.id}'), document.getElementById('${attributes.doubleId}'), false, '');<#if attributes.addToRightOnclick?has_content><#outputformat 'JavaScript'>${attributes.addToRightOnclick}</#outputformat>;</#if>" /><br /><br />
</#if><#t/>
</#if><#t/>
<#if parameters.allowAddAllToLeft!true><#t/>
<#assign addAllToLeftLabel=parameters.addAllToLeftLabel!"<<--" /><#t/>
<#if parameters.doubleHeaderKey??><#t/>
<#if attributes.allowAddAllToLeft!true><#t/>
<#assign addAllToLeftLabel=attributes.addAllToLeftLabel!"<<--" /><#t/>
<#if attributes.doubleHeaderKey??><#t/>
<input type="button"
<#if parameters.buttonCssClass??><#t/>
class="${parameters.buttonCssClass}"
<#if attributes.buttonCssClass??><#t/>
class="${attributes.buttonCssClass}"
</#if><#t/>
<#if parameters.buttonCssStyle??><#t/>
style="${parameters.buttonCssStyle}"
<#if attributes.buttonCssStyle??><#t/>
style="${attributes.buttonCssStyle}"
</#if><#t/>
value="${addAllToLeftLabel}" onclick="moveAllOptions(document.getElementById('${parameters.doubleId}'), document.getElementById('${parameters.id}'), false, '${parameters.doubleHeaderKey}', '');<#if parameters.addAllToLeftOnclick?has_content><#outputformat 'JavaScript'>${parameters.addAllToLeftOnclick}</#outputformat>;</#if>" /><br /><br />
value="${addAllToLeftLabel}" onclick="moveAllOptions(document.getElementById('${attributes.doubleId}'), document.getElementById('${attributes.id}'), false, '${attributes.doubleHeaderKey}', '');<#if attributes.addAllToLeftOnclick?has_content><#outputformat 'JavaScript'>${attributes.addAllToLeftOnclick}</#outputformat>;</#if>" /><br /><br />
<#else><#t/>
<input type="button"
<#if parameters.buttonCssClass??><#t/>
class="${parameters.buttonCssClass}"
<#if attributes.buttonCssClass??><#t/>
class="${attributes.buttonCssClass}"
</#if><#t/>
<#if parameters.buttonCssStyle??><#t/>
style="${parameters.buttonCssStyle}"
<#if attributes.buttonCssStyle??><#t/>
style="${attributes.buttonCssStyle}"
</#if><#t/>
value="${addAllToLeftLabel}" onclick="moveAllOptions(document.getElementById('${parameters.doubleId}'), document.getElementById('${parameters.id}'), false, '');<#if parameters.addAllToLeftOnclick?has_content><#outputformat 'JavaScript'>${parameters.addAllToLeftOnclick}</#outputformat>;</#if>" /><br /><br />
value="${addAllToLeftLabel}" onclick="moveAllOptions(document.getElementById('${attributes.doubleId}'), document.getElementById('${attributes.id}'), false, '');<#if attributes.addAllToLeftOnclick?has_content><#outputformat 'JavaScript'>${attributes.addAllToLeftOnclick}</#outputformat>;</#if>" /><br /><br />
</#if><#t/>
</#if><#t/>
<#if parameters.allowAddAllToRight!true><#t/>
<#assign addAllToRightLabel=parameters.addAllToRightLabel!"-->>" /><#t/>
<#if parameters.headerKey??><#t/>
<#if attributes.allowAddAllToRight!true><#t/>
<#assign addAllToRightLabel=attributes.addAllToRightLabel!"-->>" /><#t/>
<#if attributes.headerKey??><#t/>
<input type="button"
<#if parameters.buttonCssClass??><#t/>
class="${parameters.buttonCssClass}"
<#if attributes.buttonCssClass??><#t/>
class="${attributes.buttonCssClass}"
</#if><#t/>
<#if parameters.buttonCssStyle??><#t/>
style="${parameters.buttonCssStyle}"
<#if attributes.buttonCssStyle??><#t/>
style="${attributes.buttonCssStyle}"
</#if><#t/>
value="${addAllToRightLabel}" onclick="moveAllOptions(document.getElementById('${parameters.id}'), document.getElementById('${parameters.doubleId}'), false, '${parameters.headerKey}', '');<#if parameters.addAllToRightOnclick?has_content><#outputformat 'JavaScript'>${parameters.addAllToRightOnclick}</#outputformat>;</#if>" /><br /><br />
value="${addAllToRightLabel}" onclick="moveAllOptions(document.getElementById('${attributes.id}'), document.getElementById('${attributes.doubleId}'), false, '${attributes.headerKey}', '');<#if attributes.addAllToRightOnclick?has_content><#outputformat 'JavaScript'>${attributes.addAllToRightOnclick}</#outputformat>;</#if>" /><br /><br />
<#else><#t/>
<input type="button"
<#if parameters.buttonCssClass??><#t/>
class="${parameters.buttonCssClass}"
<#if attributes.buttonCssClass??><#t/>
class="${attributes.buttonCssClass}"
</#if><#t/>
<#if parameters.buttonCssStyle??><#t/>
style="${parameters.buttonCssStyle}"
<#if attributes.buttonCssStyle??><#t/>
style="${attributes.buttonCssStyle}"
</#if><#t/>
value="${addAllToRightLabel}" onclick="moveAllOptions(document.getElementById('${parameters.id}'), document.getElementById('${parameters.doubleId}'), false, '');<#if parameters.addAllToRightOnclick?has_content><#outputformat 'JavaScript'>${parameters.addAllToRightOnclick}</#outputformat>;</#if>" /><br /><br />
value="${addAllToRightLabel}" onclick="moveAllOptions(document.getElementById('${attributes.id}'), document.getElementById('${attributes.doubleId}'), false, '');<#if attributes.addAllToRightOnclick?has_content><#outputformat 'JavaScript'>${attributes.addAllToRightOnclick}</#outputformat>;</#if>" /><br /><br />
</#if><#t/>
</#if><#t/>
<#if parameters.allowSelectAll!true><#t/>
<#assign selectAllLabel=parameters.selectAllLabel!"<*>" /><#t/>
<#if parameters.headerKey?? && parameters.doubleHeaderKey??><#t/>
<#if attributes.allowSelectAll!true><#t/>
<#assign selectAllLabel=attributes.selectAllLabel!"<*>" /><#t/>
<#if attributes.headerKey?? && attributes.doubleHeaderKey??><#t/>
<input type="button"
<#if parameters.buttonCssClass??><#t/>
class="${parameters.buttonCssClass}"
<#if attributes.buttonCssClass??><#t/>
class="${attributes.buttonCssClass}"
</#if><#t/>
<#if parameters.buttonCssStyle??><#t/>
style="${parameters.buttonCssStyle}"
<#if attributes.buttonCssStyle??><#t/>
style="${attributes.buttonCssStyle}"
</#if><#t/>
value="${selectAllLabel}" onclick="selectAllOptionsExceptSome(document.getElementById('${parameters.id}'), 'key', '${parameters.headerKey}');selectAllOptionsExceptSome(document.getElementById('${parameters.doubleId}'), 'key', '${parameters.doubleHeaderKey}');<#if parameters.selectAllOnclick?has_content><#outputformat 'JavaScript'>${parameters.selectAllOnclick}</#outputformat>;</#if>" /><br /><br />
<#elseif parameters.headerKey??><#t/>
value="${selectAllLabel}" onclick="selectAllOptionsExceptSome(document.getElementById('${attributes.id}'), 'key', '${attributes.headerKey}');selectAllOptionsExceptSome(document.getElementById('${attributes.doubleId}'), 'key', '${attributes.doubleHeaderKey}');<#if attributes.selectAllOnclick?has_content><#outputformat 'JavaScript'>${attributes.selectAllOnclick}</#outputformat>;</#if>" /><br /><br />
<#elseif attributes.headerKey??><#t/>
<input type="button"
<#if parameters.buttonCssClass??><#t/>
class="${parameters.buttonCssClass}"
<#if attributes.buttonCssClass??><#t/>
class="${attributes.buttonCssClass}"
</#if><#t/>
<#if parameters.buttonCssStyle??><#t/>
style="${parameters.buttonCssStyle}"
<#if attributes.buttonCssStyle??><#t/>
style="${attributes.buttonCssStyle}"
</#if><#t/>
value="${selectAllLabel}" onclick="selectAllOptionsExceptSome(document.getElementById('${parameters.id}'), 'key', '${parameters.headerKey}');selectAllOptions(document.getElementById('${parameters.doubleId}'));<#if parameters.selectAllOnclick?has_content><#outputformat 'JavaScript'>${parameters.selectAllOnclick}</#outputformat>;</#if>" /><br /><br />
<#elseif parameters.doubleHeaderKey??><#t/>
value="${selectAllLabel}" onclick="selectAllOptionsExceptSome(document.getElementById('${attributes.id}'), 'key', '${attributes.headerKey}');selectAllOptions(document.getElementById('${attributes.doubleId}'));<#if attributes.selectAllOnclick?has_content><#outputformat 'JavaScript'>${attributes.selectAllOnclick}</#outputformat>;</#if>" /><br /><br />
<#elseif attributes.doubleHeaderKey??><#t/>
<input type="button"
<#if parameters.buttonCssClass??><#t/>
class="${parameters.buttonCssClass}"
<#if attributes.buttonCssClass??><#t/>
class="${attributes.buttonCssClass}"
</#if><#t/>
<#if parameters.buttonCssStyle??><#t/>
style="${parameters.buttonCssStyle}"
<#if attributes.buttonCssStyle??><#t/>
style="${attributes.buttonCssStyle}"
</#if><#t/>
value="${selectAllLabel}" onclick="selectAllOptions(document.getElementById('${parameters.id}'));selectAllOptionsExceptSome(document.getElementById('${parameters.doubleId}'), 'key', '${parameters.doubleHeaderKey}');<#if parameters.selectAllOnclick?has_content><#outputformat 'JavaScript'>${parameters.selectAllOnclick}</#outputformat>;</#if>" /><br /><br />
value="${selectAllLabel}" onclick="selectAllOptions(document.getElementById('${attributes.id}'));selectAllOptionsExceptSome(document.getElementById('${attributes.doubleId}'), 'key', '${attributes.doubleHeaderKey}');<#if attributes.selectAllOnclick?has_content><#outputformat 'JavaScript'>${attributes.selectAllOnclick}</#outputformat>;</#if>" /><br /><br />
<#else><#t/>
<input type="button"
<#if parameters.buttonCssClass??><#t/>
class="${parameters.buttonCssClass}"
<#if attributes.buttonCssClass??><#t/>
class="${attributes.buttonCssClass}"
</#if><#t/>
<#if parameters.buttonCssStyle??><#t/>
style="${parameters.buttonCssStyle}"
<#if attributes.buttonCssStyle??><#t/>
style="${attributes.buttonCssStyle}"
</#if><#t/>
value="${selectAllLabel}" onclick="selectAllOptions(document.getElementById('${parameters.id}'));selectAllOptions(document.getElementById('${parameters.doubleId}'));<#if parameters.selectAllOnclick?has_content><#outputformat 'JavaScript'>${parameters.selectAllOnclick}</#outputformat>;</#if>" /><br /><br />
value="${selectAllLabel}" onclick="selectAllOptions(document.getElementById('${attributes.id}'));selectAllOptions(document.getElementById('${attributes.doubleId}'));<#if attributes.selectAllOnclick?has_content><#outputformat 'JavaScript'>${attributes.selectAllOnclick}</#outputformat>;</#if>" /><br /><br />
</#if><#t/>
</#if><#t/>
</td>
<td>
<#if parameters.rightTitle??><#t/>
<label for="rightTitle">${parameters.rightTitle}</label><br />
<#if attributes.rightTitle??><#t/>
<label for="rightTitle">${attributes.rightTitle}</label><br />
</#if><#t/>
<select
name="${parameters.doubleName!""}"
<#if parameters.get("doubleSize")??><#t/>
size="${parameters.get("doubleSize")}"
name="${attributes.doubleName!""}"
<#if attributes.get("doubleSize")??><#t/>
size="${attributes.get("doubleSize")}"
</#if><#t/>
<#if parameters.doubleDisabled!false><#t/>
<#if attributes.doubleDisabled!false><#t/>
disabled="disabled"
</#if><#t/>
<#if parameters.doubleMultiple!false><#t/>
<#if attributes.doubleMultiple!false><#t/>
multiple="multiple"
</#if><#t/>
<#if parameters.doubleTabindex??><#t/>
tabindex="${parameters.tabindex}"
<#if attributes.doubleTabindex??><#t/>
tabindex="${attributes.tabindex}"
</#if><#t/>
<#if parameters.doubleId??><#t/>
id="${parameters.doubleId}"
<#if attributes.doubleId??><#t/>
id="${attributes.doubleId}"
</#if><#t/>
<#if parameters.doubleCss??><#t/>
class="${parameters.doubleCss}"
<#if attributes.doubleCss??><#t/>
class="${attributes.doubleCss}"
</#if><#t/>
<#if parameters.doubleStyle??><#t/>
style="${parameters.doubleStyle}"
<#if attributes.doubleStyle??><#t/>
style="${attributes.doubleStyle}"
</#if><#t/>
<#if parameters.doubleOnclick??><#t/>
onclick="<#outputformat 'JavaScript'>${parameters.doubleOnclick}</#outputformat>"
<#if attributes.doubleOnclick??><#t/>
onclick="<#outputformat 'JavaScript'>${attributes.doubleOnclick}</#outputformat>"
</#if><#t/>
<#if parameters.doubleOndblclick??><#t/>
ondblclick="<#outputformat 'JavaScript'>${parameters.doubleOndblclick}</#outputformat>"
<#if attributes.doubleOndblclick??><#t/>
ondblclick="<#outputformat 'JavaScript'>${attributes.doubleOndblclick}</#outputformat>"
</#if><#t/>
<#if parameters.doubleOnmousedown??><#t/>
onmousedown="<#outputformat 'JavaScript'>${parameters.doubleOnmousedown}</#outputformat>"
<#if attributes.doubleOnmousedown??><#t/>
onmousedown="<#outputformat 'JavaScript'>${attributes.doubleOnmousedown}</#outputformat>"
</#if><#t/>
<#if parameters.doubleOnmouseup??><#t/>
onmouseup="<#outputformat 'JavaScript'>${parameters.doubleOnmouseup}</#outputformat>"
<#if attributes.doubleOnmouseup??><#t/>
onmouseup="<#outputformat 'JavaScript'>${attributes.doubleOnmouseup}</#outputformat>"
</#if><#t/>
<#if parameters.doubleOnmousemove??><#t/>
onmousemove="<#outputformat 'JavaScript'>${parameters.doubleOnmousemove}</#outputformat>"
<#if attributes.doubleOnmousemove??><#t/>
onmousemove="<#outputformat 'JavaScript'>${attributes.doubleOnmousemove}</#outputformat>"
</#if><#t/>
<#if parameters.doubleOnmouseover??><#t/>
onmouseover="<#outputformat 'JavaScript'>${parameters.doubleOnmouseover}</#outputformat>"
<#if attributes.doubleOnmouseover??><#t/>
onmouseover="<#outputformat 'JavaScript'>${attributes.doubleOnmouseover}</#outputformat>"
</#if><#t/>
<#if parameters.doubleOnmouseout??><#t/>
onmouseout="<#outputformat 'JavaScript'>${parameters.doubleOnmouseout}</#outputformat>"
<#if attributes.doubleOnmouseout??><#t/>
onmouseout="<#outputformat 'JavaScript'>${attributes.doubleOnmouseout}</#outputformat>"
</#if><#t/>
<#if parameters.doubleOnfocus??><#t/>
onfocus="<#outputformat 'JavaScript'>${parameters.doubleOnfocus}</#outputformat>"
<#if attributes.doubleOnfocus??><#t/>
onfocus="<#outputformat 'JavaScript'>${attributes.doubleOnfocus}</#outputformat>"
</#if><#t/>
<#if parameters.doubleOnblur??><#t/>
onblur="<#outputformat 'JavaScript'>${parameters.doubleOnblur}</#outputformat>"
<#if attributes.doubleOnblur??><#t/>
onblur="<#outputformat 'JavaScript'>${attributes.doubleOnblur}</#outputformat>"
</#if><#t/>
<#if parameters.doubleOnkeypress??><#t/>
onkeypress="<#outputformat 'JavaScript'>${parameters.doubleOnkeypress}</#outputformat>"
<#if attributes.doubleOnkeypress??><#t/>
onkeypress="<#outputformat 'JavaScript'>${attributes.doubleOnkeypress}</#outputformat>"
</#if><#t/>
<#if parameters.doubleOnKeydown??><#t/>
onkeydown="<#outputformat 'JavaScript'>${parameters.doubleOnkeydown}</#outputformat>"
<#if attributes.doubleOnKeydown??><#t/>
onkeydown="<#outputformat 'JavaScript'>${attributes.doubleOnkeydown}</#outputformat>"
</#if><#t/>
<#if parameters.doubleOnkeyup??><#t/>
onkeyup="<#outputformat 'JavaScript'>${parameters.doubleOnkeyup}</#outputformat>"
<#if attributes.doubleOnkeyup??><#t/>
onkeyup="<#outputformat 'JavaScript'>${attributes.doubleOnkeyup}</#outputformat>"
</#if><#t/>
<#if parameters.doubleOnselect??><#t/>
onselect="<#outputformat 'JavaScript'>${parameters.doubleOnselect}</#outputformat>"
<#if attributes.doubleOnselect??><#t/>
onselect="<#outputformat 'JavaScript'>${attributes.doubleOnselect}</#outputformat>"
</#if><#t/>
<#if parameters.doubleOnchange??><#t/>
onchange="<#outputformat 'JavaScript'>${parameters.doubleOnchange}</#outputformat>"
<#if attributes.doubleOnchange??><#t/>
onchange="<#outputformat 'JavaScript'>${attributes.doubleOnchange}</#outputformat>"
</#if><#t/>
<#if parameters.doubleAccesskey??><#t/>
accesskey="<#outputformat 'JavaScript'>${parameters.doubleAccesskey}</#outputformat>"
<#if attributes.doubleAccesskey??><#t/>
accesskey="<#outputformat 'JavaScript'>${attributes.doubleAccesskey}</#outputformat>"
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/prefixed-dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/prefixed-dynamic-attributes.ftl" />
<@prefixedDynamicAttributes prefix="right-"/>
>
<#if parameters.doubleHeaderKey?? && parameters.doubleHeaderValue??><#t/>
<option value="${parameters.doubleHeaderKey}">${parameters.doubleHeaderValue}</option>
<#if attributes.doubleHeaderKey?? && attributes.doubleHeaderValue??><#t/>
<option value="${attributes.doubleHeaderKey}">${attributes.doubleHeaderValue}</option>
</#if><#t/>
<#if parameters.doubleEmptyOption!false><#t/>
<#if attributes.doubleEmptyOption!false><#t/>
<option value=""></option>
</#if><#t/>
<@s.iterator value="parameters.doubleList"><#t/>
<#if parameters.doubleListKey??><#t/>
<#assign doubleItemKey = stack.findValue(parameters.doubleListKey) /><#t/>
<@s.iterator value="attributes.doubleList"><#t/>
<#if attributes.doubleListKey??><#t/>
<#assign doubleItemKey = stack.findValue(attributes.doubleListKey) /><#t/>
<#else><#t/>
<#assign doubleItemKey = stack.findValue('top') /><#t/>
</#if><#t/>
<#assign doubleItemKeyStr = doubleItemKey.toString() /><#t/>
<#if parameters.doubleListValue??><#t/>
<#assign doubleItemValue = stack.findString(parameters.doubleListValue)!"" /><#t/>
<#if attributes.doubleListValue??><#t/>
<#assign doubleItemValue = stack.findString(attributes.doubleListValue)!"" /><#t/>
<#else><#t/>
<#assign doubleItemValue = stack.findString('top') /><#t/>
</#if><#t/>
<option value="${doubleItemKeyStr}"<#rt/>
<#if tag.contains(parameters.doubleNameValue, doubleItemKey)><#t/>
<#if tag.contains(attributes.doubleNameValue, doubleItemKey)><#t/>
selected="selected"<#rt/>
</#if><#t/>
>${doubleItemValue}</option><#lt/>
</@s.iterator><#t/>
</select>
<#if parameters.doubleMultiple!false>
<input type="hidden" id="__multiselect_${parameters.doubleId}" name="__multiselect_${parameters.doubleName!""}" value=""<#rt/>
<#if parameters.doubleDisabled!false>
<#if attributes.doubleMultiple!false>
<input type="hidden" id="__multiselect_${attributes.doubleId}" name="__multiselect_${attributes.doubleName!""}" value=""<#rt/>
<#if attributes.doubleDisabled!false>
disabled="disabled"<#rt/>
</#if>
/>
</#if>
<#if parameters.allowUpDownOnRight!true>
<#if attributes.allowUpDownOnRight!true>
<input type="button"
onclick="moveOptionDown(document.getElementById('${parameters.doubleId}'), 'key', <#if parameters.doubleHeaderKey??>'${parameters.doubleHeaderKey}'<#else>''</#if>);<#if parameters.upDownOnRightOnclick?has_content><#outputformat 'JavaScript'>${parameters.upDownOnRightOnclick}</#outputformat>;</#if>"
<#if parameters.rightDownLabel??>
value="${parameters.rightDownLabel}"
onclick="moveOptionDown(document.getElementById('${attributes.doubleId}'), 'key', <#if attributes.doubleHeaderKey??>'${attributes.doubleHeaderKey}'<#else>''</#if>);<#if attributes.upDownOnRightOnclick?has_content><#outputformat 'JavaScript'>${attributes.upDownOnRightOnclick}</#outputformat>;</#if>"
<#if attributes.rightDownLabel??>
value="${attributes.rightDownLabel}"
</#if>
/>
<input type="button"
onclick="moveOptionUp(document.getElementById('${parameters.doubleId}'), 'key', <#if parameters.doubleHeaderKey??>'${parameters.doubleHeaderKey}'<#else>''</#if>);<#if parameters.upDownOnRightOnclick?has_content><#outputformat 'JavaScript'>${parameters.upDownOnRightOnclick}</#outputformat>;</#if>"
<#if parameters.rightUpLabel??>
value="${parameters.rightUpLabel}"
onclick="moveOptionUp(document.getElementById('${attributes.doubleId}'), 'key', <#if attributes.doubleHeaderKey??>'${attributes.doubleHeaderKey}'<#else>''</#if>);<#if attributes.upDownOnRightOnclick?has_content><#outputformat 'JavaScript'>${attributes.upDownOnRightOnclick}</#outputformat>;</#if>"
<#if attributes.rightUpLabel??>
value="${attributes.rightUpLabel}"
</#if>
/>
</#if>
@@ -19,33 +19,33 @@
*/
-->
<input type="password"<#rt/>
name="${(parameters.name!"")}"<#rt/>
<#if parameters.get("size")?has_content>
size="${parameters.get("size")}"<#rt/>
name="${(attributes.name!"")}"<#rt/>
<#if attributes.get("size")?has_content>
size="${attributes.get("size")}"<#rt/>
</#if>
<#if parameters.maxlength?has_content>
maxlength="${parameters.maxlength}"<#rt/>
<#if attributes.maxlength?has_content>
maxlength="${attributes.maxlength}"<#rt/>
</#if>
<#if parameters.nameValue?? && parameters.showPassword!false>
value="<@s.property value="parameters.nameValue"/>"<#rt/>
<#if attributes.nameValue?? && attributes.showPassword!false>
value="<@s.property value="attributes.nameValue"/>"<#rt/>
</#if>
<#if parameters.disabled!false>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
<#if parameters.readonly!false>
<#if attributes.readonly!false>
readonly="readonly"<#rt/>
</#if>
<#if parameters.tabindex?has_content>
tabindex="${parameters.tabindex}"<#rt/>
<#if attributes.tabindex?has_content>
tabindex="${attributes.tabindex}"<#rt/>
</#if>
<#if parameters.id?has_content>
id="${parameters.id}"<#rt/>
<#if attributes.id?has_content>
id="${attributes.id}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
<#if parameters.title?has_content>
title="${parameters.title}"<#rt/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/css.ftl" />
<#if attributes.title?has_content>
title="${attributes.title}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/scripting-events.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/common-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" />
/>
@@ -19,11 +19,11 @@
*/
-->
<#macro prefixedDynamicAttributes prefix>
<#if (parameters.dynamicAttributes?? && parameters.dynamicAttributes?size > 0)><#rt/>
<#assign aKeys = parameters.dynamicAttributes.keySet()><#rt/>
<#if (attributes.dynamicAttributes?? && attributes.dynamicAttributes?size > 0)><#rt/>
<#assign aKeys = attributes.dynamicAttributes.keySet()><#rt/>
<#list aKeys as aKey><#rt/>
<#if aKey?starts_with(prefix)>
<#assign keyValue = parameters.dynamicAttributes.get(aKey)/>
<#assign keyValue = attributes.dynamicAttributes.get(aKey)/>
<#if keyValue?is_string>
<#assign value = struts.translateVariables(keyValue)!keyValue/>
<#else>
@@ -18,65 +18,65 @@
* under the License.
*/
-->
<@s.iterator value="parameters.list">
<#if parameters.listKey??>
<#assign itemKey = stack.findValue(parameters.listKey)/>
<#assign itemKeyStr = stack.findString(parameters.listKey)/>
<@s.iterator value="attributes.list">
<#if attributes.listKey??>
<#assign itemKey = stack.findValue(attributes.listKey)/>
<#assign itemKeyStr = stack.findString(attributes.listKey)/>
<#else>
<#assign itemKey = stack.findValue('top')/>
<#assign itemKeyStr = stack.findString('top')>
</#if>
<#if parameters.listValueKey??>
<#if attributes.listValueKey??>
<#-- checks the valueStack for the 'valueKey.' The valueKey is then looked-up in the locale
file for it's localized value. This is then used as a label -->
<#assign valueKey = stack.findString(parameters.listValueKey)!''/>
<#assign valueKey = stack.findString(attributes.listValueKey)!''/>
<#if valueKey?has_content>
<#assign itemValue = struts.getText(valueKey) />
<#else>
<#assign itemValue = parameters.listValueKey />
<#assign itemValue = attributes.listValueKey />
</#if>
<#elseif parameters.listValue??>
<#assign itemValue = stack.findString(parameters.listValue)/>
<#elseif attributes.listValue??>
<#assign itemValue = stack.findString(attributes.listValue)/>
<#else>
<#assign itemValue = stack.findString('top')/>
</#if>
<#if parameters.listCssClass??>
<#if stack.findString(parameters.listCssClass)??>
<#assign itemCssClass= stack.findString(parameters.listCssClass)/>
<#if attributes.listCssClass??>
<#if stack.findString(attributes.listCssClass)??>
<#assign itemCssClass= stack.findString(attributes.listCssClass)/>
<#else>
<#assign itemCssClass = ''/>
</#if>
</#if>
<#if parameters.listCssStyle??>
<#if stack.findString(parameters.listCssStyle)??>
<#assign itemCssStyle= stack.findString(parameters.listCssStyle)/>
<#if attributes.listCssStyle??>
<#if stack.findString(attributes.listCssStyle)??>
<#assign itemCssStyle= stack.findString(attributes.listCssStyle)/>
<#else>
<#assign itemCssStyle = ''/>
</#if>
</#if>
<#if parameters.listTitle??>
<#if stack.findString(parameters.listTitle)??>
<#assign itemTitle= stack.findString(parameters.listTitle)/>
<#if attributes.listTitle??>
<#if stack.findString(attributes.listTitle)??>
<#assign itemTitle= stack.findString(attributes.listTitle)/>
<#else>
<#assign itemTitle = ''/>
</#if>
</#if>
<input type="radio"<#rt/>
<#if parameters.name?has_content>
name="${parameters.name?no_esc}"<#rt/>
<#if attributes.name?has_content>
name="${attributes.name?no_esc}"<#rt/>
</#if>
id="${parameters.id}${itemKeyStr?replace(".", "_")}"<#rt/>
<#if tag.contains(parameters.nameValue!'', itemKey)>
id="${attributes.id}${itemKeyStr?replace(".", "_")}"<#rt/>
<#if tag.contains(attributes.nameValue!'', itemKey)>
checked="checked"<#rt/>
</#if>
<#if itemKey??>
value="${itemKeyStr}"<#rt/>
</#if>
<#if parameters.disabled!false>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
<#if parameters.tabindex?has_content>
tabindex="${parameters.tabindex}"<#rt/>
<#if attributes.tabindex?has_content>
tabindex="${attributes.tabindex}"<#rt/>
</#if>
<#if itemCssClass?has_content>
class="${itemCssClass}"<#rt/>
@@ -87,17 +87,17 @@
<#if itemTitle?has_content>
title="${itemTitle}"<#rt/>
<#else>
<#if parameters.title?has_content>
title="${parameters.title}"<#rt/>
<#if attributes.title?has_content>
title="${attributes.title}"<#rt/>
</#if>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/css.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/scripting-events.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/common-attributes.ftl" />
<#global evaluate_dynamic_attributes = true/>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" />
/><#rt/>
<label for="${parameters.id}${itemKeyStr?replace(".", "_")}"<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl"/>><#rt/>
<label for="${attributes.id}${itemKeyStr?replace(".", "_")}"<#include "/${attributes.templateDir}/${attributes.expandTheme}/css.ftl"/>><#rt/>
${itemValue}<#t/>
</label>
</@s.iterator>
@@ -18,63 +18,63 @@
* under the License.
*/
-->
<#if parameters.type?? && parameters.type=="button">
<#if attributes.type?? && attributes.type=="button">
<button type="reset"<#rt/>
<#if parameters.name?has_content>
name="${parameters.name}"<#rt/>
<#if attributes.name?has_content>
name="${attributes.name}"<#rt/>
</#if>
<#if parameters.nameValue??>
value="<@s.property value="parameters.nameValue"/>"<#rt/>
<#if attributes.nameValue??>
value="<@s.property value="attributes.nameValue"/>"<#rt/>
</#if>
<#if parameters.cssClass?has_content>
class="${parameters.cssClass}"<#rt/>
<#if attributes.cssClass?has_content>
class="${attributes.cssClass}"<#rt/>
</#if>
<#if parameters.cssStyle?has_content>
style="${parameters.cssStyle}"<#rt/>
<#if attributes.cssStyle?has_content>
style="${attributes.cssStyle}"<#rt/>
</#if>
<#if parameters.disabled!false>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
<#if parameters.tabindex?has_content>
tabindex="${parameters.tabindex}"<#rt/>
<#if attributes.tabindex?has_content>
tabindex="${attributes.tabindex}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl"/>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
><#if parameters.src?has_content>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/scripting-events.ftl"/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/common-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" />
><#if attributes.src?has_content>
<img<#rt/>
<#if parameters.label?has_content>
alt="${parameters.label}"<#rt/>
<#if attributes.label?has_content>
alt="${attributes.label}"<#rt/>
</#if>
<#if parameters.src?has_content>
src="${parameters.src}"<#rt/>
<#if attributes.src?has_content>
src="${attributes.src}"<#rt/>
</#if>
/><#else><#if parameters.label?has_content><@s.property value="parameters.label"/><#rt/></#if></#if></button>
/><#else><#if attributes.label?has_content><@s.property value="attributes.label"/><#rt/></#if></#if></button>
<#else>
<input type="reset"<#rt/>
<#if parameters.name?has_content>
name="${parameters.name}"<#rt/>
<#if attributes.name?has_content>
name="${attributes.name}"<#rt/>
</#if>
<#if parameters.nameValue??>
value="<@s.property value="parameters.nameValue"/>"<#rt/>
<#if attributes.nameValue??>
value="<@s.property value="attributes.nameValue"/>"<#rt/>
</#if>
<#if parameters.cssClass?has_content>
class="${parameters.cssClass}"<#rt/>
<#if attributes.cssClass?has_content>
class="${attributes.cssClass}"<#rt/>
</#if>
<#if parameters.cssStyle?has_content>
style="${parameters.cssStyle}"<#rt/>
<#if attributes.cssStyle?has_content>
style="${attributes.cssStyle}"<#rt/>
</#if>
<#if parameters.title?has_content>
title="${parameters.title}"<#rt/>
<#if attributes.title?has_content>
title="${attributes.title}"<#rt/>
</#if>
<#if parameters.disabled!false>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
<#if parameters.tabindex?has_content>
tabindex="${parameters.tabindex}"<#rt/>
<#if attributes.tabindex?has_content>
tabindex="${attributes.tabindex}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/scripting-events.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/common-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" />
/>
</#if>
@@ -19,33 +19,33 @@
*/
-->
<script<#rt/>
<#if parameters.async?has_content && parameters.async == "true">
<#if attributes.async?has_content && attributes.async == "true">
async<#rt/>
</#if>
<#if parameters.charset?has_content>
charset="${parameters.charset}"<#rt/>
<#if attributes.charset?has_content>
charset="${attributes.charset}"<#rt/>
</#if>
<#if parameters.defer?has_content && parameters.defer=="true">
<#if attributes.defer?has_content && attributes.defer=="true">
defer<#rt/>
</#if>
<#if parameters.type?has_content>
type="${parameters.type}"<#rt/>
<#if attributes.type?has_content>
type="${attributes.type}"<#rt/>
</#if>
<#if parameters.src?has_content>
src="${parameters.src}"<#rt/>
<#if attributes.src?has_content>
src="${attributes.src}"<#rt/>
</#if>
<#if parameters.referrerpolicy?has_content>
referrerpolicy="${parameters.referrerpolicy}"<#rt/>
<#if attributes.referrerpolicy?has_content>
referrerpolicy="${attributes.referrerpolicy}"<#rt/>
</#if>
<#if parameters.nomodule?has_content && parameters.nomodule=="true">
<#if attributes.nomodule?has_content && attributes.nomodule=="true">
nomodule<#rt/>
</#if>
<#if parameters.integrity?has_content>
integrity="${parameters.integrity}"<#rt/>
<#if attributes.integrity?has_content>
integrity="${attributes.integrity}"<#rt/>
</#if>
<#if parameters.crossorigin?has_content>
crossorigin="${parameters.crossorigin}"<#rt/>
<#if attributes.crossorigin?has_content>
crossorigin="${attributes.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" />>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/common-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/nonce.ftl" />>
@@ -18,45 +18,45 @@
* under the License.
*/
-->
<#if parameters.onclick??>
onclick="<#outputformat 'JavaScript'>${parameters.onclick}</#outputformat>"<#rt/>
<#if attributes.onclick??>
onclick="<#outputformat 'JavaScript'>${attributes.onclick}</#outputformat>"<#rt/>
</#if>
<#if parameters.ondblclick??>
ondblclick="<#outputformat 'JavaScript'>${parameters.ondblclick}</#outputformat>"<#rt/>
<#if attributes.ondblclick??>
ondblclick="<#outputformat 'JavaScript'>${attributes.ondblclick}</#outputformat>"<#rt/>
</#if>
<#if parameters.onmousedown??>
onmousedown="<#outputformat 'JavaScript'>${parameters.onmousedown}</#outputformat>"<#rt/>
<#if attributes.onmousedown??>
onmousedown="<#outputformat 'JavaScript'>${attributes.onmousedown}</#outputformat>"<#rt/>
</#if>
<#if parameters.onmouseup??>
onmouseup="<#outputformat 'JavaScript'>${parameters.onmouseup}</#outputformat>"<#rt/>
<#if attributes.onmouseup??>
onmouseup="<#outputformat 'JavaScript'>${attributes.onmouseup}</#outputformat>"<#rt/>
</#if>
<#if parameters.onmouseover??>
onmouseover="<#outputformat 'JavaScript'>${parameters.onmouseover}</#outputformat>"<#rt/>
<#if attributes.onmouseover??>
onmouseover="<#outputformat 'JavaScript'>${attributes.onmouseover}</#outputformat>"<#rt/>
</#if>
<#if parameters.onmousemove??>
onmousemove="<#outputformat 'JavaScript'>${parameters.onmousemove}</#outputformat>"<#rt/>
<#if attributes.onmousemove??>
onmousemove="<#outputformat 'JavaScript'>${attributes.onmousemove}</#outputformat>"<#rt/>
</#if>
<#if parameters.onmouseout??>
onmouseout="<#outputformat 'JavaScript'>${parameters.onmouseout}</#outputformat>"<#rt/>
<#if attributes.onmouseout??>
onmouseout="<#outputformat 'JavaScript'>${attributes.onmouseout}</#outputformat>"<#rt/>
</#if>
<#if parameters.onfocus??>
onfocus="<#outputformat 'JavaScript'>${parameters.onfocus}</#outputformat>"<#rt/>
<#if attributes.onfocus??>
onfocus="<#outputformat 'JavaScript'>${attributes.onfocus}</#outputformat>"<#rt/>
</#if>
<#if parameters.onblur??>
onblur="<#outputformat 'JavaScript'>${parameters.onblur}</#outputformat>"<#rt/>
<#if attributes.onblur??>
onblur="<#outputformat 'JavaScript'>${attributes.onblur}</#outputformat>"<#rt/>
</#if>
<#if parameters.onkeypress??>
onkeypress="<#outputformat 'JavaScript'>${parameters.onkeypress}</#outputformat>"<#rt/>
<#if attributes.onkeypress??>
onkeypress="<#outputformat 'JavaScript'>${attributes.onkeypress}</#outputformat>"<#rt/>
</#if>
<#if parameters.onkeydown??>
onkeydown="<#outputformat 'JavaScript'>${parameters.onkeydown}</#outputformat>"<#rt/>
<#if attributes.onkeydown??>
onkeydown="<#outputformat 'JavaScript'>${attributes.onkeydown}</#outputformat>"<#rt/>
</#if>
<#if parameters.onkeyup??>
onkeyup="<#outputformat 'JavaScript'>${parameters.onkeyup}</#outputformat>"<#rt/>
<#if attributes.onkeyup??>
onkeyup="<#outputformat 'JavaScript'>${attributes.onkeyup}</#outputformat>"<#rt/>
</#if>
<#if parameters.onselect??>
onselect="<#outputformat 'JavaScript'>${parameters.onselect}</#outputformat>"<#rt/>
<#if attributes.onselect??>
onselect="<#outputformat 'JavaScript'>${attributes.onselect}</#outputformat>"<#rt/>
</#if>
<#if parameters.onchange??>
onchange="<#outputformat 'JavaScript'>${parameters.onchange}</#outputformat>"<#rt/>
<#if attributes.onchange??>
onchange="<#outputformat 'JavaScript'>${attributes.onchange}</#outputformat>"<#rt/>
</#if>
@@ -20,45 +20,45 @@
-->
<#setting number_format="#.#####">
<select<#rt/>
name="${(parameters.name!"")}"<#rt/>
<#if parameters.get("size")?has_content>
size="${parameters.get("size")}"<#rt/>
name="${(attributes.name!"")}"<#rt/>
<#if attributes.get("size")?has_content>
size="${attributes.get("size")}"<#rt/>
</#if>
<#if parameters.disabled!false>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
<#if parameters.tabindex?has_content>
tabindex="${parameters.tabindex}"<#rt/>
<#if attributes.tabindex?has_content>
tabindex="${attributes.tabindex}"<#rt/>
</#if>
<#if parameters.id?has_content>
id="${parameters.id}"<#rt/>
<#if attributes.id?has_content>
id="${attributes.id}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
<#if parameters.title?has_content>
title="${parameters.title}"<#rt/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/css.ftl" />
<#if attributes.title?has_content>
title="${attributes.title}"<#rt/>
</#if>
<#if parameters.multiple!false>
<#if attributes.multiple!false>
multiple="multiple"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/scripting-events.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/common-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" />
>
<#if parameters.headerKey?? && parameters.headerValue??>
<option value="${parameters.headerKey}"<#rt/>
<#if tag.contains(parameters.nameValue, parameters.headerKey) == true>
<#if attributes.headerKey?? && attributes.headerValue??>
<option value="${attributes.headerKey}"<#rt/>
<#if tag.contains(attributes.nameValue, attributes.headerKey) == true>
selected="selected"<#rt/>
</#if>
>${parameters.headerValue}</option>
>${attributes.headerValue}</option>
</#if>
<#if parameters.emptyOption!false>
<#if attributes.emptyOption!false>
<option value=""></option>
</#if>
<@s.iterator value="parameters.list">
<#if parameters.listKey??>
<#if stack.findValue(parameters.listKey)??>
<#assign itemKey = stack.findValue(parameters.listKey)/>
<#assign itemKeyStr = stack.findString(parameters.listKey)/>
<@s.iterator value="attributes.list">
<#if attributes.listKey??>
<#if stack.findValue(attributes.listKey)??>
<#assign itemKey = stack.findValue(attributes.listKey)/>
<#assign itemKeyStr = stack.findString(attributes.listKey)/>
<#else>
<#assign itemKey = ''/>
<#assign itemKeyStr = ''/>
@@ -67,47 +67,47 @@
<#assign itemKey = stack.findValue('top')/>
<#assign itemKeyStr = stack.findString('top')>
</#if>
<#if parameters.listValueKey??>
<#if attributes.listValueKey??>
<#-- checks the valueStack for the 'valueKey.' The valueKey is then looked-up in the locale file for it's
localized value. This is then used as a label -->
<#assign valueKey = stack.findString(parameters.listValueKey)!'' />
<#assign valueKey = stack.findString(attributes.listValueKey)!'' />
<#if valueKey?has_content>
<#assign itemValue = struts.getText(valueKey) />
<#else>
<#assign itemValue = parameters.listValueKey />
<#assign itemValue = attributes.listValueKey />
</#if>
<#elseif parameters.listValue??>
<#if stack.findString(parameters.listValue)??>
<#assign itemValue = stack.findString(parameters.listValue)/>
<#elseif attributes.listValue??>
<#if stack.findString(attributes.listValue)??>
<#assign itemValue = stack.findString(attributes.listValue)/>
<#else>
<#assign itemValue = ''/>
</#if>
<#else>
<#assign itemValue = stack.findString('top')/>
</#if>
<#if parameters.listCssClass??>
<#if stack.findString(parameters.listCssClass)??>
<#assign itemCssClass= stack.findString(parameters.listCssClass)/>
<#if attributes.listCssClass??>
<#if stack.findString(attributes.listCssClass)??>
<#assign itemCssClass= stack.findString(attributes.listCssClass)/>
<#else>
<#assign itemCssClass = ''/>
</#if>
</#if>
<#if parameters.listCssStyle??>
<#if stack.findString(parameters.listCssStyle)??>
<#assign itemCssStyle= stack.findString(parameters.listCssStyle)/>
<#if attributes.listCssStyle??>
<#if stack.findString(attributes.listCssStyle)??>
<#assign itemCssStyle= stack.findString(attributes.listCssStyle)/>
<#else>
<#assign itemCssStyle = ''/>
</#if>
</#if>
<#if parameters.listTitle??>
<#if stack.findString(parameters.listTitle)??>
<#assign itemTitle= stack.findString(parameters.listTitle)/>
<#if attributes.listTitle??>
<#if stack.findString(attributes.listTitle)??>
<#assign itemTitle= stack.findString(attributes.listTitle)/>
<#else>
<#assign itemTitle = ''/>
</#if>
</#if>
<option value="${itemKeyStr}"<#rt/>
<#if tag.contains(parameters.nameValue, itemKey) == true>
<#if tag.contains(attributes.nameValue, itemKey) == true>
selected="selected"<#rt/>
</#if>
<#if itemCssClass?has_content>
@@ -121,24 +121,24 @@
</#if>
>${itemValue}</option><#lt/>
</@s.iterator>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/optgroup.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/optgroup.ftl" />
</select>
<#if parameters.multiple!false>
<#if (parameters.id?? && parameters.name??)>
<input type="hidden" id="__multiselect_${parameters.id}" name="__multiselect_${parameters.name}" value=""<#rt/>
<#if attributes.multiple!false>
<#if (attributes.id?? && attributes.name??)>
<input type="hidden" id="__multiselect_${attributes.id}" name="__multiselect_${attributes.name}" value=""<#rt/>
</#if>
<#if (parameters.id?? && !parameters.name??)>
<input type="hidden" id="__multiselect_${parameters.id}" name="__multiselect_${parameters.id}" value=""<#rt/>
<#if (attributes.id?? && !attributes.name??)>
<input type="hidden" id="__multiselect_${attributes.id}" name="__multiselect_${attributes.id}" value=""<#rt/>
</#if>
<#if ( !parameters.id?? && parameters.name??)>
<input type="hidden" id="__multiselect_${parameters.id}" name="__multiselect_${parameters.id}" value=""<#rt/>
<#if ( !attributes.id?? && attributes.name??)>
<input type="hidden" id="__multiselect_${attributes.id}" name="__multiselect_${attributes.id}" value=""<#rt/>
</#if>
<#if ( !parameters.id?? && !parameters.name??)>
<#if ( !attributes.id?? && !attributes.name??)>
<input type="hidden" id="" name="" value="" <#rt/>
</#if>
<#if parameters.disabled!false>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
/>
@@ -18,9 +18,9 @@
* under the License.
*/
-->
<#if parameters.type?? && parameters.type=="button">
<#if parameters.body?length gt 0>${tag.escapeHtmlBody()?then(parameters.body, parameters.body?no_esc)}<#elseif parameters.label??><@s.property value="parameters.label"/><#rt/></#if>
<#if attributes.type?? && attributes.type=="button">
<#if attributes.body?length gt 0>${tag.escapeHtmlBody()?then(attributes.body, attributes.body?no_esc)}<#elseif attributes.label??><@s.property value="attributes.label"/><#rt/></#if>
</button>
<#else>
${tag.escapeHtmlBody()?then(parameters.body, parameters.body?no_esc)}<#rt/>
${tag.escapeHtmlBody()?then(attributes.body, attributes.body?no_esc)}<#rt/>
</#if>
@@ -18,74 +18,74 @@
* under the License.
*/
-->
<#if parameters.type?? && parameters.type=="button">
<#if attributes.type?? && attributes.type=="button">
<button type="submit"<#rt/>
<#if parameters.id?has_content>
id="${parameters.id}"<#rt/>
<#if attributes.id?has_content>
id="${attributes.id}"<#rt/>
</#if>
<#if parameters.name?has_content>
name="${parameters.name}"<#rt/>
<#if attributes.name?has_content>
name="${attributes.name}"<#rt/>
</#if>
<#if parameters.nameValue??>
value="<@s.property value="parameters.nameValue"/>"<#rt/>
<#if attributes.nameValue??>
value="<@s.property value="attributes.nameValue"/>"<#rt/>
</#if>
<#if parameters.disabled!false>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
<#if parameters.cssClass?has_content>
class="${parameters.cssClass}"<#rt/>
<#if attributes.cssClass?has_content>
class="${attributes.cssClass}"<#rt/>
</#if>
<#if parameters.cssStyle?has_content>
style="${parameters.cssStyle}"<#rt/>
<#if attributes.cssStyle?has_content>
style="${attributes.cssStyle}"<#rt/>
</#if>
<#if parameters.title?has_content>
title="${parameters.title}"<#rt/>
<#if attributes.title?has_content>
title="${attributes.title}"<#rt/>
</#if>
<#if parameters.tabindex?has_content>
tabindex="${parameters.tabindex}"<#rt/>
<#if attributes.tabindex?has_content>
tabindex="${attributes.tabindex}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl"/>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/scripting-events.ftl"/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/common-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" />
>
<#else>
<#if parameters.type?? && parameters.type=="image">
<#if attributes.type?? && attributes.type=="image">
<input type="image"<#rt/>
<#if parameters.label?has_content>
alt="${parameters.label}"<#rt/>
<#if attributes.label?has_content>
alt="${attributes.label}"<#rt/>
</#if>
<#if parameters.src?has_content>
src="${parameters.src}"<#rt/>
<#if attributes.src?has_content>
src="${attributes.src}"<#rt/>
</#if>
<#else>
<input type="submit"<#rt/>
<#if parameters.nameValue?has_content>
value="<@s.property value="parameters.nameValue"/>"<#rt/>
<#if attributes.nameValue?has_content>
value="<@s.property value="attributes.nameValue"/>"<#rt/>
</#if>
</#if>
<#if parameters.id?has_content>
id="${parameters.id}"<#rt/>
<#if attributes.id?has_content>
id="${attributes.id}"<#rt/>
</#if>
<#if parameters.name?has_content>
name="${parameters.name}"<#rt/>
<#if attributes.name?has_content>
name="${attributes.name}"<#rt/>
</#if>
<#if parameters.disabled!false>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
<#if parameters.cssClass?has_content>
class="${parameters.cssClass}"<#rt/>
<#if attributes.cssClass?has_content>
class="${attributes.cssClass}"<#rt/>
</#if>
<#if parameters.cssStyle?has_content>
style="${parameters.cssStyle}"<#rt/>
<#if attributes.cssStyle?has_content>
style="${attributes.cssStyle}"<#rt/>
</#if>
<#if parameters.title?has_content>
title="${parameters.title}"<#rt/>
<#if attributes.title?has_content>
title="${attributes.title}"<#rt/>
</#if>
<#if parameters.tabindex?has_content>
tabindex="${parameters.tabindex}"<#rt/>
<#if attributes.tabindex?has_content>
tabindex="${attributes.tabindex}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/scripting-events.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/common-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" />
/>
</#if>
@@ -19,34 +19,34 @@
*/
-->
<input<#rt/>
type="${(parameters.type!"text")}"<#rt/>
name="${(parameters.name!"")}"<#rt/>
<#if parameters.get("size")?has_content>
size="${parameters.get("size")}"<#rt/>
type="${(attributes.type!"text")}"<#rt/>
name="${(attributes.name!"")}"<#rt/>
<#if attributes.get("size")?has_content>
size="${attributes.get("size")}"<#rt/>
</#if>
<#if parameters.maxlength?has_content>
maxlength="${parameters.maxlength}"<#rt/>
<#if attributes.maxlength?has_content>
maxlength="${attributes.maxlength}"<#rt/>
</#if>
<#if parameters.nameValue??>
value="${parameters.nameValue}"<#rt/>
<#if attributes.nameValue??>
value="${attributes.nameValue}"<#rt/>
</#if>
<#if parameters.disabled!false>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
<#if parameters.readonly!false>
<#if attributes.readonly!false>
readonly="readonly"<#rt/>
</#if>
<#if parameters.tabindex?has_content>
tabindex="${parameters.tabindex}"<#rt/>
<#if attributes.tabindex?has_content>
tabindex="${attributes.tabindex}"<#rt/>
</#if>
<#if parameters.id?has_content>
id="${parameters.id}"<#rt/>
<#if attributes.id?has_content>
id="${attributes.id}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
<#if parameters.title?has_content>
title="${parameters.title}"<#rt/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/css.ftl" />
<#if attributes.title?has_content>
title="${attributes.title}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/scripting-events.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/common-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" />
/>
@@ -19,43 +19,43 @@
*/
-->
<textarea<#rt/>
name="${(parameters.name!"")}"<#rt/>
<#if parameters.cols?has_content>
cols="${(parameters.cols!"")}"<#rt/>
name="${(attributes.name!"")}"<#rt/>
<#if attributes.cols?has_content>
cols="${(attributes.cols!"")}"<#rt/>
</#if>
<#if parameters.rows?has_content>
rows="${(parameters.rows!"")}"<#rt/>
<#if attributes.rows?has_content>
rows="${(attributes.rows!"")}"<#rt/>
</#if>
<#if parameters.wrap?has_content>
wrap="${parameters.wrap}"<#rt/>
<#if attributes.wrap?has_content>
wrap="${attributes.wrap}"<#rt/>
</#if>
<#if parameters.disabled!false>
<#if attributes.disabled!false>
disabled="disabled"<#rt/>
</#if>
<#if parameters.readonly!false>
<#if attributes.readonly!false>
readonly="readonly"<#rt/>
</#if>
<#if parameters.tabindex?has_content>
tabindex="${parameters.tabindex}"<#rt/>
<#if attributes.tabindex?has_content>
tabindex="${attributes.tabindex}"<#rt/>
</#if>
<#if parameters.id?has_content>
id="${parameters.id}"<#rt/>
<#if attributes.id?has_content>
id="${attributes.id}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
<#if parameters.title?has_content>
title="${parameters.title}"<#rt/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/css.ftl" />
<#if attributes.title?has_content>
title="${attributes.title}"<#rt/>
</#if>
<#if parameters.maxlength?has_content>
maxlength="${parameters.maxlength}"<#rt/>
<#if attributes.maxlength?has_content>
maxlength="${attributes.maxlength}"<#rt/>
</#if>
<#if parameters.minlength?has_content>
minlength="${parameters.minlength}"<#rt/>
<#if attributes.minlength?has_content>
minlength="${attributes.minlength}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/scripting-events.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/common-attributes.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/dynamic-attributes.ftl" />
><#rt/>
<#if parameters.nameValue??>
<@s.property value="parameters.nameValue"/><#t/>
<#if attributes.nameValue??>
<@s.property value="attributes.nameValue"/><#t/>
</#if>
</textarea>
@@ -18,5 +18,5 @@
* under the License.
*/
-->
<input type="hidden" name="${parameters.tokenNameField!""}" value="${parameters.name!""}" />
<input type="hidden" name="${parameters.name!""}" value="${parameters.token!""}" />
<input type="hidden" name="${attributes.tokenNameField!""}" value="${attributes.name!""}" />
<input type="hidden" name="${attributes.name!""}" value="${attributes.token!""}" />
@@ -19,7 +19,7 @@
*/
-->
<#if !stack.findValue("#optiontransferselect_js_included")??><#t/>
<@s.script src="${base}${parameters.staticContentPath}/optiontransferselect.js" /><#t/>
<@s.script src="${base}${attributes.staticContentPath}/optiontransferselect.js" /><#t/>
<#assign temporaryVariable = stack.setValue("#optiontransferselect_js_included", "true") /><#t/>
</#if><#t/>
<table>
@@ -27,28 +27,28 @@
<#include "/${templateDir}/simple/select.ftl" /><#t/>
</td></tr>
<tr><td>
<#if parameters.allowMoveUp!true><#t/>
<#assign defMoveUpLabel="${parameters.moveUpLabel!'^'}" /><#t/>
<#if parameters.headerKey??><#t/>
&nbsp;<input type="button" value="${defMoveUpLabel}" onclick="moveOptionUp(document.getElementById('${parameters.id}'), 'key', '${parameters.headerKey}');" />&nbsp;
<#if attributes.allowMoveUp!true><#t/>
<#assign defMoveUpLabel="${attributes.moveUpLabel!'^'}" /><#t/>
<#if attributes.headerKey??><#t/>
&nbsp;<input type="button" value="${defMoveUpLabel}" onclick="moveOptionUp(document.getElementById('${attributes.id}'), 'key', '${attributes.headerKey}');" />&nbsp;
<#else><#t/>
&nbsp;<input type="button" value="${defMoveUpLabel}" onclick="moveOptionUp(document.getElementById('${parameters.id}'), 'key', '');" />&nbsp;
&nbsp;<input type="button" value="${defMoveUpLabel}" onclick="moveOptionUp(document.getElementById('${attributes.id}'), 'key', '');" />&nbsp;
</#if><#t/>
</#if><#t/>
<#if parameters.allowMoveDown!true><#t/>
<#assign defMoveDownLabel="${parameters.moveDownLabel!'v'}" /><#t/>
<#if parameters.headerKey??><#t/>
&nbsp;<input type="button" value="${defMoveDownLabel}" onclick="moveOptionDown(document.getElementById('${parameters.id}'), 'key', '${parameters.headerKey}');" />&nbsp;
<#if attributes.allowMoveDown!true><#t/>
<#assign defMoveDownLabel="${attributes.moveDownLabel!'v'}" /><#t/>
<#if attributes.headerKey??><#t/>
&nbsp;<input type="button" value="${defMoveDownLabel}" onclick="moveOptionDown(document.getElementById('${attributes.id}'), 'key', '${attributes.headerKey}');" />&nbsp;
<#else><#t/>
&nbsp;<input type="button" value="${defMoveDownLabel}" onclick="moveOptionDown(document.getElementById('${parameters.id}'), 'key', '');" />&nbsp;
&nbsp;<input type="button" value="${defMoveDownLabel}" onclick="moveOptionDown(document.getElementById('${attributes.id}'), 'key', '');" />&nbsp;
</#if><#t/>
</#if><#t/>
<#if parameters.allowSelectAll!true><#t/>
<#assign defSelectAllLabel="${parameters.selectAllLabel!'*'}" /><#t/>
<#if parameters.headerKey??><#t/>
&nbsp;<input type="button" value="${defSelectAllLabel}" onclick="selectAllOptionsExceptSome(document.getElementById('${parameters.id}'), 'key', '${parameters.headerKey}');" />&nbsp;
<#if attributes.allowSelectAll!true><#t/>
<#assign defSelectAllLabel="${attributes.selectAllLabel!'*'}" /><#t/>
<#if attributes.headerKey??><#t/>
&nbsp;<input type="button" value="${defSelectAllLabel}" onclick="selectAllOptionsExceptSome(document.getElementById('${attributes.id}'), 'key', '${attributes.headerKey}');" />&nbsp;
<#else><#t/>
&nbsp;<input type="button" value="${defSelectAllLabel}" onclick="selectAllOptions(document.getElementById('${parameters.id}'), 'key', '');" />&nbsp;
&nbsp;<input type="button" value="${defSelectAllLabel}" onclick="selectAllOptions(document.getElementById('${attributes.id}'), 'key', '');" />&nbsp;
</#if><#t/>
</#if><#t/>
</td></tr>
@@ -18,12 +18,12 @@
* under the License.
*/
-->
<#assign hasFieldErrors = fieldErrors?? && fieldErrors.get(parameters.name)??/>
<#assign hasFieldErrors = fieldErrors?? && fieldErrors.get(attributes.name)??/>
<#if hasFieldErrors>
<#list fieldErrors.get(parameters.name) as error>
<#list fieldErrors.get(attributes.name) as error>
<tr<#rt/>
<#if parameters.id??>
errorFor="${parameters.id}"<#rt/>
<#if attributes.id??>
errorFor="${attributes.id}"<#rt/>
</#if>
>
<td class="tdCheckboxErrorMessage" colspan="2"><#rt/>
@@ -32,17 +32,17 @@
</tr>
</#list>
</#if>
<#if !parameters.labelPosition?? && (parameters.form.labelPosition)??>
<#assign labelPos = parameters.form.labelPosition/>
<#elseif parameters.labelPosition??>
<#assign labelPos = parameters.labelPosition/>
<#if !attributes.labelPosition?? && (attributes.form.labelPosition)??>
<#assign labelPos = attributes.form.labelPosition/>
<#elseif attributes.labelPosition??>
<#assign labelPos = attributes.labelPosition/>
</#if>
<#if (labelPos!"") == 'top'>
<tr>
<td colspan="2">
<#if parameters.label??> <label<#t/>
<#if parameters.id??>
for="${parameters.id}"<#rt/>
<#if attributes.label??> <label<#t/>
<#if attributes.id??>
for="${attributes.id}"<#rt/>
</#if>
<#if hasFieldErrors>
class="checkboxErrorLabel"<#rt/>
@@ -50,16 +50,16 @@
class="checkboxLabel"<#rt/>
</#if>
>
<#if parameters.required!false && parameters.requiredPosition!"right" != 'right'>
<#if attributes.required!false && attributes.requiredPosition!"right" != 'right'>
<span class="required">*</span><#t/>
</#if>
${parameters.label}<#t/>
<#if parameters.required!false && parameters.requiredPosition!"right" == 'right'>
${attributes.label}<#t/>
<#if attributes.required!false && attributes.requiredPosition!"right" == 'right'>
<span class="required">*</span><#t/>
</#if>
:<#t/>
<#if parameters.tooltip??>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/tooltip.ftl" />
<#if attributes.tooltip??>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/tooltip.ftl" />
</#if>
</label><#t/>
</#if>
@@ -67,14 +67,14 @@ ${parameters.label}<#t/>
</tr>
<tr>
<td colspan="2">
<#include "/${parameters.templateDir}/simple/checkbox.ftl" />
<#include "/${attributes.templateDir}/simple/checkbox.ftl" />
<#else>
<tr>
<td class="tdCheckboxLabel">
<#if (labelPos!"") == 'left'>
<#if parameters.label??> <label<#t/>
<#if parameters.id??>
for="${parameters.id}"<#rt/>
<#if attributes.label??> <label<#t/>
<#if attributes.id??>
for="${attributes.id}"<#rt/>
</#if>
<#if hasFieldErrors>
class="checkboxErrorLabel"<#rt/>
@@ -82,45 +82,45 @@ ${parameters.label}<#t/>
class="checkboxLabel"<#rt/>
</#if>
>
<#if parameters.required!false && parameters.requiredPosition!"right" != 'right'>
<#if attributes.required!false && attributes.requiredPosition!"right" != 'right'>
<span class="required">*</span><#t/>
</#if>
${parameters.label}<#t/>
<#if parameters.required!false && parameters.requiredPosition!"right" == 'right'>
${attributes.label}<#t/>
<#if attributes.required!false && attributes.requiredPosition!"right" == 'right'>
<span class="required">*</span><#t/>
</#if>
:<#t/>
<#if parameters.tooltip??>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/tooltip.ftl" />
<#if attributes.tooltip??>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/tooltip.ftl" />
</#if>
</label><#t/>
</#if>
</#if>
<#if (labelPos!"") == 'right'>
<#if parameters.required!false>
<#if attributes.required!false>
<span class="required">*</span><#t/>
</#if>
<#if parameters.tooltip??>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/tooltip.ftl" />
<#if attributes.tooltip??>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/tooltip.ftl" />
</#if>
</#if>
</td>
<td class="tdCheckboxInput">
<#if (labelPos!"") != 'top'>
<#include "/${parameters.templateDir}/simple/checkbox.ftl" />
<#include "/${attributes.templateDir}/simple/checkbox.ftl" />
</#if>
<#if (labelPos!"") != 'top' && (labelPos!"") != 'left'>
<#if parameters.label??><label<#rt/>
<#if parameters.id??>
for="${parameters.id}"<#rt/>
<#if attributes.label??><label<#rt/>
<#if attributes.id??>
for="${attributes.id}"<#rt/>
</#if>
<#if hasFieldErrors>
class="checkboxErrorLabel"<#rt/>
<#else>
class="checkboxLabel"<#rt/>
</#if>
>${parameters.label}</label><#rt/>
>${attributes.label}</label><#rt/>
</#if>
</#if>
</#if>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" /><#nt/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlfooter.ftl" /><#nt/>
@@ -18,6 +18,6 @@
* under the License.
*/
-->
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader.ftl" />
<#include "/${parameters.templateDir}/simple/checkboxlist.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" /><#nt/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlheader.ftl" />
<#include "/${attributes.templateDir}/simple/checkboxlist.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlfooter.ftl" /><#nt/>
@@ -18,6 +18,6 @@
* under the License.
*/
-->
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader.ftl" />
<#include "/${parameters.templateDir}/simple/combobox.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" /><#nt/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlheader.ftl" />
<#include "/${attributes.templateDir}/simple/combobox.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlfooter.ftl" /><#nt/>
@@ -18,7 +18,7 @@
* under the License.
*/
-->
<table class="${parameters.cssClass!'wwFormTable'}"<#rt/>
<#if parameters.cssStyle??> style="${parameters.cssStyle}"<#rt/>
<table class="${attributes.cssClass!'wwFormTable'}"<#rt/>
<#if attributes.cssStyle??> style="${attributes.cssStyle}"<#rt/>
</#if>
>
@@ -18,14 +18,14 @@
* under the License.
*/
-->
${parameters.after!}<#t/>
${attributes.after!}<#t/>
</td><#lt/>
</tr>
<#if (parameters.errorposition!"top") == 'bottom'>
<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors.get(parameters.name)??/>
<#if (attributes.errorposition!"top") == 'bottom'>
<#assign hasFieldErrors = attributes.name?? && fieldErrors?? && fieldErrors.get(attributes.name)??/>
<#if hasFieldErrors>
<#list fieldErrors.get(parameters.name) as error>
<tr errorFor="${parameters.id}">
<#list fieldErrors.get(attributes.name) as error>
<tr errorFor="${attributes.id}">
<td class="tdErrorMessage" colspan="2"><#rt/>
<span class="errorMessage">${error}</span><#t/>
</td><#lt/>
@@ -22,11 +22,11 @@
Only show message if errors are available.
This will be done if ActionSupport is used.
-->
<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors.get(parameters.name)??/>
<#if (parameters.errorposition!"top") == 'top'>
<#assign hasFieldErrors = attributes.name?? && fieldErrors?? && fieldErrors.get(attributes.name)??/>
<#if (attributes.errorposition!"top") == 'top'>
<#if hasFieldErrors>
<#list fieldErrors.get(parameters.name) as error>
<tr errorFor="${parameters.id}">
<#list fieldErrors.get(attributes.name) as error>
<tr errorFor="${attributes.id}">
<td class="tdErrorMessage" colspan="2"><#rt/>
<span class="errorMessage">${error}</span><#t/>
</td><#lt/>
@@ -34,10 +34,10 @@
</#list>
</#if>
</#if>
<#if !parameters.labelPosition?? && (parameters.form.labelPosition)??>
<#assign labelPos = parameters.form.labelPosition/>
<#elseif parameters.labelPosition??>
<#assign labelPos = parameters.labelPosition/>
<#if !attributes.labelPosition?? && (attributes.form.labelPosition)??>
<#assign labelPos = attributes.form.labelPosition/>
<#elseif attributes.labelPosition??>
<#assign labelPos = attributes.labelPosition/>
</#if>
<#--
if the label position is top,
@@ -49,10 +49,10 @@
<#else>
<td class="tdLabel"><#rt/>
</#if>
<#if parameters.label??>
<#if attributes.label??>
<label <#t/>
<#if parameters.id??>
for="${parameters.id}" <#t/>
<#if attributes.id??>
for="${attributes.id}" <#t/>
</#if>
<#if hasFieldErrors>
class="errorLabel"<#t/>
@@ -60,15 +60,15 @@
class="label"<#t/>
</#if>
><#t/>
<#if (parameters.required!false) && ((parameters.requiredPosition!"right") != 'right')>
<#if (attributes.required!false) && ((attributes.requiredPosition!"right") != 'right')>
<span class="required">*</span><#t/>
</#if>
${parameters.label}<#t/>
<#if (parameters.required!false) && ((parameters.requiredPosition!"right") == 'right')>
${attributes.label}<#t/>
<#if (attributes.required!false) && ((attributes.requiredPosition!"right") == 'right')>
<span class="required">*</span><#t/>
</#if>
${parameters.labelseparator!":"}<#t/>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/tooltip.ftl" />
${attributes.labelseparator!":"}<#t/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/tooltip.ftl" />
</label><#t/>
</#if>
</td><#lt/>
@@ -18,11 +18,11 @@
* under the License.
*/
-->
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader-core.ftl" />
<td
<#if parameters.align?? >
class="align-${parameters.align}"
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlheader-core.ftl" />
<td
<#if attributes.align?? >
class="align-${attributes.align}"
<#else >
class="tdInput"
class="tdInput"
</#if>
><#t/>
@@ -18,6 +18,6 @@
* under the License.
*/
-->
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader.ftl" />
<#include "/${parameters.templateDir}/simple/datetextfield.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlheader.ftl" />
<#include "/${attributes.templateDir}/simple/datetextfield.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlfooter.ftl" />
@@ -18,6 +18,6 @@
* under the License.
*/
-->
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader.ftl" />
<#include "/${parameters.templateDir}/simple/doubleselect.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" /><#nt/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlheader.ftl" />
<#include "/${attributes.templateDir}/simple/doubleselect.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlfooter.ftl" /><#nt/>
@@ -18,6 +18,6 @@
* under the License.
*/
-->
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader.ftl" />
<#include "/${parameters.templateDir}/simple/file.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlheader.ftl" />
<#include "/${attributes.templateDir}/simple/file.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlfooter.ftl" />
@@ -31,9 +31,9 @@ Only the following validators are supported:
* double validator
END SNIPPET: supported-validators
-->
<#if ((parameters.validate!false == true) && (parameters.performValidation!false == true))>
<#if ((attributes.validate!false == true) && (attributes.performValidation!false == true))>
<@s.script>
function validateForm_${parameters.escapedId}() {
function validateForm_${attributes.escapedId}() {
<#--
In case of multiselect fields return only the first value.
-->
@@ -54,13 +54,13 @@ END SNIPPET: supported-validators
}
return field.value;
}
form = document.getElementById("${parameters.id?js_string}");
form = document.getElementById("${attributes.id?js_string}");
clearErrorMessages(form);
clearErrorLabels(form);
var errors = false;
var continueValidation = true;
<#list parameters.tagNames as tagName>
<#list attributes.tagNames as tagName>
<#list tag.getValidators("${tagName}") as aValidator>
// field name: ${aValidator.fieldName?js_string}
// validator name: ${aValidator.validatorType}
@@ -18,13 +18,13 @@
* under the License.
*/
-->
<#include "/${parameters.templateDir}/${parameters.expandTheme}/control-close.ftl" />
<#include "/${parameters.templateDir}/simple/form-close.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/form-close-validate.ftl" />
<#if parameters.focusElement??>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/control-close.ftl" />
<#include "/${attributes.templateDir}/simple/form-close.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/form-close-validate.ftl" />
<#if attributes.focusElement??>
<@s.script>
StrutsUtils.addOnLoad(function() {
var element = document.getElementById("${parameters.focusElement?js_string}");
var element = document.getElementById("${attributes.focusElement?js_string}");
if(element) {
element.focus();
}
@@ -18,11 +18,11 @@
* under the License.
*/
-->
<#if parameters.validate!false == true>
<@s.script src="${base}${parameters.staticContentPath}/xhtml/validation.js" />
<#if parameters.onsubmit??>
${tag.addParameter('onsubmit', "${parameters.onsubmit}; return validateForm_${parameters.escapedId}();")}
<#if attributes.validate!false == true>
<@s.script src="${base}${attributes.staticContentPath}/xhtml/validation.js" />
<#if attributes.onsubmit??>
${tag.addParameter('onsubmit', "${attributes.onsubmit}; return validateForm_${attributes.escapedId}();")}
<#else>
${tag.addParameter('onsubmit', "return validateForm_${parameters.escapedId}();")}
${tag.addParameter('onsubmit', "return validateForm_${attributes.escapedId}();")}
</#if>
</#if>
@@ -18,14 +18,14 @@
* under the License.
*/
-->
<#include "/${parameters.templateDir}/${parameters.expandTheme}/form-validate.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/form-common.ftl" />
<#if (parameters.validate!false)>
onreset="<#outputformat 'JavaScript'>${parameters.onreset!'clearErrorMessages(this);clearErrorLabels(this);'}</#outputformat>"
<#include "/${attributes.templateDir}/${attributes.expandTheme}/form-validate.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/form-common.ftl" />
<#if (attributes.validate!false)>
onreset="<#outputformat 'JavaScript'>${attributes.onreset!'clearErrorMessages(this);clearErrorLabels(this);'}</#outputformat>"
<#else>
<#if parameters.onreset??>
onreset="<#outputformat 'JavaScript'>${parameters.onreset}</#outputformat>"
<#if attributes.onreset??>
onreset="<#outputformat 'JavaScript'>${attributes.onreset}</#outputformat>"
</#if>
</#if>
>
<#include "/${parameters.templateDir}/${parameters.expandTheme}/control.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/control.ftl" />
@@ -18,5 +18,5 @@
* under the License.
*/
-->
<@s.link rel="stylesheet" href="${base}${parameters.staticContentPath}/xhtml/styles.css" type="text/css" />
<#include "/${parameters.templateDir}/simple/head.ftl" />
<@s.link rel="stylesheet" href="${base}${attributes.staticContentPath}/xhtml/styles.css" type="text/css" />
<#include "/${attributes.templateDir}/simple/head.ftl" />
@@ -20,6 +20,6 @@
-->
<tr style="display:none;">
<td colspan="2">
<#include "/${parameters.templateDir}/simple/hidden.ftl" />
<#include "/${attributes.templateDir}/simple/hidden.ftl" />
</td>
</tr>
@@ -18,6 +18,6 @@
* under the License.
*/
-->
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader.ftl" />
<#include "/${parameters.templateDir}/simple/inputtransferselect.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" /><#nt/>
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlheader.ftl" />
<#include "/${attributes.templateDir}/simple/inputtransferselect.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlfooter.ftl" /><#nt/>
@@ -18,6 +18,6 @@
* under the License.
*/
-->
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader.ftl" />
<#include "/${parameters.templateDir}/simple/label.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlheader.ftl" />
<#include "/${attributes.templateDir}/simple/label.ftl" />
<#include "/${attributes.templateDir}/${attributes.expandTheme}/controlfooter.ftl" />

Some files were not shown because too many files have changed in this diff Show More