- Revision
- 736
- Author
- mauro
- Date
- 2008-06-18 16:31:24 -0500 (Wed, 18 Jun 2008)
Log Message
WAFFLE-80: Added function asValues to convert sequence of values obtainable from a value field. Refactored single select to use same contain function of multiple select.
Modified Paths
- trunk/waffle-resources/src/main/resources/ftl/waffle/form.ftl
- trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/FormController.java
- trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/FormMacroTest.java
- trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/select.ftl
- trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/select.txt
Diff
Modified: trunk/waffle-resources/src/main/resources/ftl/waffle/form.ftl (735 => 736)
--- trunk/waffle-resources/src/main/resources/ftl/waffle/form.ftl 2008-06-18 19:55:37 UTC (rev 735) +++ trunk/waffle-resources/src/main/resources/ftl/waffle/form.ftl 2008-06-18 21:31:24 UTC (rev 736) @@ -6,7 +6,7 @@ --> <#-- - * Determines if list contains the item. + * Determines if list contains the item based on the string representation of the items * * @param list the list to search for the item * @param item the item to search for in the list @@ -14,7 +14,7 @@ --> <#function contains list item> <#list list as next> - <#if next == item><#return true></#if> + <#if next?string == item?string><#return true></#if> </#list> <#return false> </#function> @@ -33,7 +33,7 @@ </#function> <#-- - * Converts a sequence to a sequence of nameables hashes with name and value fields + * Converts a sequence of elements to a sequence of nameables hashes with name and value fields * * @param elements the sequence of elements to convert * @param valueField the name of the value field in the input element (defaults to "value") @@ -52,6 +52,22 @@ </#function> <#-- + * Converts a sequence of elements to a sequence of values obtained from the value fields + * + * @param elements the sequence of elements to convert + * @param valueField the name of the value field in the input element (defaults to "value") + * @return A sequence of values + --> +<#function asValues elements valueField="value"> + <#assign result = []> + <#list elements as element> + <#assign value='${element["${valueField}"]!element}'> + <#assign result=result+[value]> + </#list> + <#return result> +</#function> + +<#-- * Shows values as CSV * * @param values the sequence of values @@ -147,11 +163,13 @@ * @param attributes any additional attributes for the element (defaults to "") --> <#macro selectSingle field options selectedValue="" attributes=""> + <#assign selectedValues = [selectedValue]> <select id="${field}" name="${field}" ${attributes}> <#list options as option> <#assign value="${option.value!option}"> <#assign name="${option.name!option}"> - <option value="${value?html}" <#if selectedValue==value>selected="true"</#if>>${name?html}</option> + <#assign selected = contains(selectedValues?default([]), value)> + <option value="${value?html}" <#if selected>selected="true"</#if>>${name?html}</option> </#list> </select> </#macro> @@ -162,7 +180,7 @@ * * @param field the name of the field to bind the element to * @param options a sequence of available options - * @param selectedValues the selected values (defaults to [""]) + * @param selectedValues the selected values (defaults to []) * @param attributes any additional attributes for the element (defaults to "") --> <#macro selectMultiple field options selectedValues attributes=""> @@ -170,30 +188,19 @@ <#list options as option> <#assign value="${option.value!option}"> <#assign name="${option.name!option}"> - <#assign selected = contains(selectedValues?default([""]), value)> + <#assign selected = contains(selectedValues?default([]), value)> <option value="${value?html}" <#if selected>selected="true"</#if>>${name?html}</option> </#list> </select> </#macro> <#-- - * Determines if a value in a sequence is selected, adding the 'selected' attribute if so. - * - * @param currentValue the current value in a sequence - * @param value the value to check ---> -<#macro isSelected currentValue value> - <#if currentValue?is_number && currentValue == value?number>selected="true"</#if> - <#if currentValue?is_string && currentValue == value>selected="true"</#if> -</#macro> - -<#-- * Determines if values in a sequence are selected, adding the 'selected' attribute if so. * * @param currentValue the current value in a sequence * @param values the values to check --> <#macro areSelected currentValue values> - <#assign selected = contains(values?default([""]), currentValue)> + <#assign selected = contains(values?default([]), currentValue)> <#if selected>selected="true"</#if>> </#macro>
Modified: trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/FormController.java (735 => 736)
--- trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/FormController.java 2008-06-18 19:55:37 UTC (rev 735) +++ trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/FormController.java 2008-06-18 21:31:24 UTC (rev 736) @@ -11,8 +11,8 @@ public enum Type { ONE, TWO; - - public String toString(){ + + public String toString() { return name().toUpperCase(); } } @@ -21,6 +21,7 @@ private List<Nameable> nameables = asList(new Nameable("one", "One"), new Nameable("two", "Two")); private List<Displayable> displayables = asList(new Displayable("one", "One"), new Displayable("two", "Two")); private List<String> selectedValues; + private List<Displayable> selectedDisplayables; private Type selectedType; public List<Type> getTypes() { @@ -55,6 +56,14 @@ return displayables; } + public List<Displayable> getSelectedDisplayables() { + return selectedDisplayables; + } + + public void setSelectedDisplayables(List<Displayable> selectedDisplayables) { + this.selectedDisplayables = selectedDisplayables; + } + public static class Nameable { private final String value; private final String name;
Modified: trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/FormMacroTest.java (735 => 736)
--- trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/FormMacroTest.java 2008-06-18 19:55:37 UTC (rev 735) +++ trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/FormMacroTest.java 2008-06-18 21:31:24 UTC (rev 736) @@ -7,6 +7,7 @@ import java.io.IOException; import org.apache.commons.io.IOUtils; +import org.codehaus.waffle.resources.ftl.FormController.Displayable; import org.junit.Test; /** @@ -30,6 +31,7 @@ FormController controller = new FormController(); controller.setSelectedValues(asList("one")); controller.setSelectedType(FormController.Type.ONE); + controller.setSelectedDisplayables(asList(new Displayable("two","Two"))); String expected = readResource("org/codehaus/waffle/resources/ftl/select.txt"); assertEquals(expected, processTemplateView(controller, "org/codehaus/waffle/resources/ftl/select.ftl")); }
Modified: trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/select.ftl (735 => 736)
--- trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/select.ftl 2008-06-18 19:55:37 UTC (rev 735) +++ trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/select.ftl 2008-06-18 21:31:24 UTC (rev 736) @@ -4,4 +4,5 @@ <@w.selectSingle "types" w.asNameables(controller.getTypes(), "name()", "name()") controller.getSelectedType() /> <@w.selectMultiple "values" controller.getValues() controller.getSelectedValues() /> <@w.selectMultiple "nameables" controller.getNameables() controller.getSelectedValues() /> -<@w.selectMultiple "displayables" w.asNameables(controller.getDisplayables(),"id","display") controller.getSelectedValues() /> \ No newline at end of file +<@w.selectMultiple "displayables" w.asNameables(controller.getDisplayables(),"id","display") controller.getSelectedValues() /> +<@w.selectMultiple "displayablesAsValues" w.asNameables(controller.getDisplayables(),"id","display") w.asValues(controller.getSelectedDisplayables(),"id") /> \ No newline at end of file
Modified: trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/select.txt (735 => 736)
--- trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/select.txt 2008-06-18 19:55:37 UTC (rev 735) +++ trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/select.txt 2008-06-18 21:31:24 UTC (rev 736) @@ -22,3 +22,7 @@ <option value="one" selected="true">One</option> <option value="two" >Two</option> </select> + <select multiple="multiple" id="displayablesAsValues" name="displayablesAsValues" > + <option value="one" >One</option> + <option value="two" selected="true">Two</option> + </select>
To unsubscribe from this list please visit:
