diff --git a/core/src/main/resources/template/css_xhtml/checkbox.ftl b/core/src/main/resources/template/css_xhtml/checkbox.ftl index a7ffc43d3..004f67471 100644 --- a/core/src/main/resources/template/css_xhtml/checkbox.ftl +++ b/core/src/main/resources/template/css_xhtml/checkbox.ftl @@ -41,7 +41,12 @@ lables <#t/> -<#if parameters.labelposition?default("") == 'left'> +<#if !parameters.labelposition?? && (parameters.form.labelposition)??> +<#assign labelpos = parameters.form.labelposition/> +<#elseif parameters.labelposition??> +<#assign labelpos = parameters.labelposition/> + +<#if labelpos?default("") == 'left'> <#if parameters.id??>id="wwlbl_${parameters.id}"<#rt/> class="wwlbl"> @@ -57,7 +62,7 @@ lables -<#if parameters.labelposition?default("top") == 'top'> +<#if labelpos?default("top") == 'top'>
<#else> @@ -69,14 +74,14 @@ lables <#include "/${parameters.templateDir}/simple/checkbox.ftl" /> -<#if parameters.labelposition?default("") != 'left'> -<#if parameters.labelposition?default("top") == 'top'> +<#if labelpos?default("") != 'left'> +<#if labelpos?default("top") == 'top'>
<#rt/> <#else> <#rt/> <#if parameters.label??> -<#if parameters.labelposition?default("top") == 'top'> +<#if labelpos?default("top") == 'top'>
<#else> @@ -95,7 +100,7 @@ lables <#if parameters.label??> -<#if parameters.labelposition?default("top") == 'top'> +<#if labelpos?default("top") == 'top'>
<#rt/> <#else> <#rt/> diff --git a/core/src/main/resources/template/css_xhtml/controlfooter.ftl b/core/src/main/resources/template/css_xhtml/controlfooter.ftl index 2f4c66271..2783a0ba0 100644 --- a/core/src/main/resources/template/css_xhtml/controlfooter.ftl +++ b/core/src/main/resources/template/css_xhtml/controlfooter.ftl @@ -22,7 +22,12 @@ --> ${parameters.after?if_exists}<#t/> <#lt/> -<#if parameters.labelposition?default("top") == 'top'> +<#if !parameters.labelposition?? && (parameters.form.labelposition)??> +<#assign labelpos = parameters.form.labelposition/> +<#elseif parameters.labelposition??> +<#assign labelpos = parameters.labelposition/> + +<#if labelpos?default("top") == 'top'> <#rt/> <#else> <#rt/> diff --git a/core/src/main/resources/template/css_xhtml/controlheader-core.ftl b/core/src/main/resources/template/css_xhtml/controlheader-core.ftl index 902cda5ac..2a5c98b55 100644 --- a/core/src/main/resources/template/css_xhtml/controlheader-core.ftl +++ b/core/src/main/resources/template/css_xhtml/controlheader-core.ftl @@ -43,8 +43,13 @@ +<#if !parameters.labelposition?? && (parameters.form.labelposition)??> +<#assign labelpos = parameters.form.labelposition/> +<#elseif parameters.labelposition??> +<#assign labelpos = parameters.labelposition/> + <#if parameters.label??> -<#if parameters.labelposition?default("top") == 'top'> +<#if labelpos?default("top") == 'top'>
<#else> @@ -66,7 +71,7 @@ ${parameters.label?html}${parameters.labelseparator!":"?html} <#include "/${parameters.templateDir}/xhtml/tooltip.ftl" /> <#t/> -<#if parameters.labelposition?default("top") == 'top'> +<#if labelpos?default("top") == 'top'>

<#rt/> <#else> <#rt/> diff --git a/core/src/main/resources/template/css_xhtml/controlheader.ftl b/core/src/main/resources/template/css_xhtml/controlheader.ftl index 4099c7a2d..9e4737790 100644 --- a/core/src/main/resources/template/css_xhtml/controlheader.ftl +++ b/core/src/main/resources/template/css_xhtml/controlheader.ftl @@ -21,7 +21,12 @@ */ --> <#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader-core.ftl"> -<#if parameters.labelposition?default("top") == 'top'> +<#if !parameters.labelposition?? && (parameters.form.labelposition)??> +<#assign labelpos = parameters.form.labelposition/> +<#elseif parameters.labelposition??> +<#assign labelpos = parameters.labelposition/> + +<#if labelpos?default("top") == 'top'>
<#else> diff --git a/core/src/main/resources/template/css_xhtml/reset.ftl b/core/src/main/resources/template/css_xhtml/reset.ftl index 790bcfc04..6d7734f99 100644 --- a/core/src/main/resources/template/css_xhtml/reset.ftl +++ b/core/src/main/resources/template/css_xhtml/reset.ftl @@ -20,7 +20,12 @@ * under the License. */ --> -<#if parameters.labelposition?default("top") == 'top'> +<#if !parameters.labelposition?? && (parameters.form.labelposition)??> +<#assign labelpos = parameters.form.labelposition/> +<#elseif parameters.labelposition??> +<#assign labelpos = parameters.labelposition/> + +<#if labelpos?default("top") == 'top'>
<#else> @@ -33,7 +38,7 @@ ><#t/> <#include "/${parameters.templateDir}/simple/reset.ftl" /> -<#if parameters.labelposition?default("top") == 'top'> +<#if labelpos?default("top") == 'top'>
<#t/> <#else>
<#t/> diff --git a/core/src/main/resources/template/css_xhtml/submit-close.ftl b/core/src/main/resources/template/css_xhtml/submit-close.ftl index 423c5d743..15c608af4 100644 --- a/core/src/main/resources/template/css_xhtml/submit-close.ftl +++ b/core/src/main/resources/template/css_xhtml/submit-close.ftl @@ -1,5 +1,10 @@ <#include "/${parameters.templateDir}/simple/submit-close.ftl" /> -<#if parameters.labelposition?default("top") == 'top'> +<#if !parameters.labelposition?? && (parameters.form.labelposition)??> +<#assign labelpos = parameters.form.labelposition/> +<#elseif parameters.labelposition??> +<#assign labelpos = parameters.labelposition/> + +<#if labelpos?default("top") == 'top'>
<#t/> <#else> <#t/> diff --git a/core/src/main/resources/template/css_xhtml/submit.ftl b/core/src/main/resources/template/css_xhtml/submit.ftl index 68b2a9c91..ffb4df99a 100644 --- a/core/src/main/resources/template/css_xhtml/submit.ftl +++ b/core/src/main/resources/template/css_xhtml/submit.ftl @@ -20,7 +20,12 @@ * under the License. */ --> -<#if parameters.labelposition?default("top") == 'top'> +<#if !parameters.labelposition?? && (parameters.form.labelposition)??> +<#assign labelpos = parameters.form.labelposition/> +<#elseif parameters.labelposition??> +<#assign labelpos = parameters.labelposition/> + +<#if labelpos?default("top") == 'top'>
<#else> diff --git a/core/src/main/resources/template/xhtml/checkbox.ftl b/core/src/main/resources/template/xhtml/checkbox.ftl index 878c63236..4504b3f61 100644 --- a/core/src/main/resources/template/xhtml/checkbox.ftl +++ b/core/src/main/resources/template/xhtml/checkbox.ftl @@ -34,7 +34,12 @@ -<#if parameters.labelposition?default("") == 'top'> +<#if !parameters.labelposition?? && (parameters.form.labelposition)??> +<#assign labelpos = parameters.form.labelposition/> +<#elseif parameters.labelposition??> +<#assign labelpos = parameters.labelposition/> + +<#if labelpos?default("") == 'top'> <#if parameters.label??> @@ -68,7 +73,7 @@ ${parameters.label?html}<#t/> <#else> -<#if parameters.labelposition?default("") == 'left'> +<#if labelpos?default("") == 'left'> <#if parameters.label??> <#if parameters.id??> for="${parameters.id?html}"<#rt/> @@ -93,7 +98,7 @@ ${parameters.label?html}<#t/> <#t/> -<#if parameters.labelposition?default("") == 'right'> +<#if labelpos?default("") == 'right'> <#if parameters.required?default(false)> *<#t/> @@ -104,10 +109,10 @@ ${parameters.label?html}<#t/> -<#if parameters.labelposition?default("") != 'top'> +<#if labelpos?default("") != 'top'> <#include "/${parameters.templateDir}/simple/checkbox.ftl" /> -<#if parameters.labelposition?default("") != 'top' && parameters.labelposition?default("") != 'left'> +<#if labelpos?default("") != 'top' && labelpos?default("") != 'left'> <#if parameters.label??> <#if parameters.id??> for="${parameters.id?html}"<#rt/> diff --git a/core/src/main/resources/template/xhtml/controlheader-core.ftl b/core/src/main/resources/template/xhtml/controlheader-core.ftl index f909c89f0..73302705f 100644 --- a/core/src/main/resources/template/xhtml/controlheader-core.ftl +++ b/core/src/main/resources/template/xhtml/controlheader-core.ftl @@ -36,12 +36,17 @@ +<#if !parameters.labelposition?? && (parameters.form.labelposition)??> +<#assign labelpos = parameters.form.labelposition/> +<#elseif parameters.labelposition??> +<#assign labelpos = parameters.labelposition/> + <#-- if the label position is top, then give the label it's own row in the table --> -<#if parameters.labelposition?default("") == 'top'> +<#if labelpos?default("") == 'top'> <#rt/> <#else> <#rt/> @@ -70,7 +75,7 @@ ${parameters.labelseparator?default(":")?html}<#t/> <#lt/> <#-- add the extra row --> -<#if parameters.labelposition?default("") == 'top'> +<#if labelpos?default("") == 'top'> diff --git a/core/src/test/java/org/apache/struts2/views/jsp/ui/FormTagTest.java b/core/src/test/java/org/apache/struts2/views/jsp/ui/FormTagTest.java index 77fac5da3..c9427d1ce 100644 --- a/core/src/test/java/org/apache/struts2/views/jsp/ui/FormTagTest.java +++ b/core/src/test/java/org/apache/struts2/views/jsp/ui/FormTagTest.java @@ -622,6 +622,88 @@ public class FormTagTest extends AbstractUITagTest { } + public void testFormWithTopLabelPosition() throws Exception { + FormTag form = new FormTag(); + form.setTheme("xhtml"); + form.setAction("testAction"); + form.setPageContext(pageContext); + form.setIncludeContext(false); + form.setLabelposition("top"); + + TextFieldTag text = new TextFieldTag(); + text.setPageContext(pageContext); + text.setLabel("label"); + + form.doStartTag(); + text.doStartTag(); + text.doEndTag(); + form.doEndTag(); + + verify(FormTag.class.getResource("Formtag-27.txt")); + } + + public void testFormWithTopLabelPositionWithElementOverride() throws Exception { + FormTag form = new FormTag(); + form.setTheme("xhtml"); + form.setAction("testAction"); + form.setPageContext(pageContext); + form.setIncludeContext(false); + form.setLabelposition("left"); + + TextFieldTag text = new TextFieldTag(); + text.setPageContext(pageContext); + text.setLabel("label"); + text.setLabelposition("top"); + + form.doStartTag(); + text.doStartTag(); + text.doEndTag(); + form.doEndTag(); + + verify(FormTag.class.getResource("Formtag-27.txt")); + } + + public void testFormWithTopLabelPositionCssXhtml() throws Exception { + FormTag form = new FormTag(); + form.setTheme("css_xhtml"); + form.setAction("testAction"); + form.setPageContext(pageContext); + form.setIncludeContext(false); + form.setLabelposition("top"); + + TextFieldTag text = new TextFieldTag(); + text.setPageContext(pageContext); + text.setLabel("label"); + + form.doStartTag(); + text.doStartTag(); + text.doEndTag(); + form.doEndTag(); + + verify(FormTag.class.getResource("Formtag-28.txt")); + } + + public void testFormWithTopLabelPositionWithElementOverrideCssXhtml() throws Exception { + FormTag form = new FormTag(); + form.setTheme("css_xhtml"); + form.setAction("testAction"); + form.setPageContext(pageContext); + form.setIncludeContext(false); + form.setLabelposition("left"); + + TextFieldTag text = new TextFieldTag(); + text.setPageContext(pageContext); + text.setLabel("label"); + text.setLabelposition("top"); + + form.doStartTag(); + text.doStartTag(); + text.doEndTag(); + form.doEndTag(); + + verify(FormTag.class.getResource("Formtag-28.txt")); + } + @Override protected void setUp() throws Exception { super.setUp(); diff --git a/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-27.txt b/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-27.txt new file mode 100644 index 000000000..fab8cf3d3 --- /dev/null +++ b/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-27.txt @@ -0,0 +1,10 @@ +
+ + + + + + + +
+
diff --git a/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-28.txt b/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-28.txt new file mode 100644 index 000000000..70f3e06c5 --- /dev/null +++ b/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-28.txt @@ -0,0 +1,10 @@ +
+
+
+ +

+
+ +
+
+