Author: musachy Date: Tue Mar 10 19:07:20 2009 New Revision: 752217 URL: http://svn.apache.org/viewvc?rev=752217&view=rev Log: add dynamic options
Modified: struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/components/JQueryDatepicker.java struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/views/jsp/ui/JQueryDatepickerTag.java struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/template/jquery-simple/datepicker.ftl struts/sandbox/trunk/struts2-jquery-plugin/src/site/docs/datepicker.html Modified: struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/components/JQueryDatepicker.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/components/JQueryDatepicker.java?rev=752217&r1=752216&r2=752217&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/components/JQueryDatepicker.java (original) +++ struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/components/JQueryDatepicker.java Tue Mar 10 19:07:20 2009 @@ -22,6 +22,7 @@ import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.ValueStack; +import com.opensymphony.xwork2.util.TextUtils; import com.opensymphony.xwork2.util.logging.Logger; import com.opensymphony.xwork2.util.logging.LoggerFactory; import org.apache.struts2.jquery.JQueryPluginConstants; @@ -37,6 +38,7 @@ import java.util.Calendar; import java.util.Date; import java.util.List; +import java.util.Map; @StrutsTag( name = "datepicker", @@ -54,6 +56,7 @@ private String displayFormat; private String imageUrl; private String imageTooltip; + private String options; public JQueryDatepicker(ValueStack stack, HttpServletRequest request, HttpServletResponse response) { super(stack, request, response); @@ -76,6 +79,12 @@ else addParameter("imageTooltip", "Pick a date"); + if (this.options != null) { + String ops = findString(this.options); + if (TextUtils.stringSet(ops)) + addParameter("options", TextUtils.escapeJavaScript(ops)); + } + Object currentValue = null; if (parameters.containsKey("nameValue")) { currentValue = parameters.get("nameValue"); @@ -93,12 +102,19 @@ addParameter("year", calendar.get(Calendar.YEAR)); addParameter("day", calendar.get(Calendar.DAY_OF_MONTH)); addParameter("month", calendar.get(Calendar.MONTH)); + } else { + //the value could not be parsed into a Date, display as is + addParameter("displayValue", currentValue.toString()); } } } + @Override + protected Class getValueClassType() { + return Object.class; + } + private Date getDate(Object obj) { - SimpleDateFormat simpleDisplayFormat = new SimpleDateFormat(displayFormat); if (obj == null) return null; @@ -113,8 +129,6 @@ return new Date(); } - - Date date = null; //formats used to parse the date List<DateFormat> formats = new ArrayList<DateFormat>(); formats.add(new SimpleDateFormat(RFC3339_FORMAT)); @@ -134,7 +148,7 @@ for (DateFormat format : formats) { try { - date = format.parse(dateStr); + Date date = format.parse(dateStr); if (date != null) return date; } catch (Exception e) { @@ -149,6 +163,9 @@ } } + public static void main(String[] s) { + System.out.print(SimpleDateFormat.getDateInstance(DateFormat.SHORT).format(new Date())); + } protected String getDefaultTemplate() { return TEMPLATE; } @@ -174,4 +191,9 @@ this.imageUrl = imageUrl; } + @StrutsTagAttribute(description = "The name of a variable(or a javascript map) that contains additional options to be passed to JQuery" + + " Datepicker") + public void setOptions(String options) { + this.options = options; + } } Modified: struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/views/jsp/ui/JQueryDatepickerTag.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/views/jsp/ui/JQueryDatepickerTag.java?rev=752217&r1=752216&r2=752217&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/views/jsp/ui/JQueryDatepickerTag.java (original) +++ struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/views/jsp/ui/JQueryDatepickerTag.java Tue Mar 10 19:07:20 2009 @@ -32,6 +32,7 @@ private String displayFormat; private String imageUrl; private String imageTooltip; + private String options; public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { return new JQueryDatepicker(stack, req, res); @@ -43,6 +44,7 @@ picker.setDisplayFormat(displayFormat); picker.setImageTooltip(imageTooltip); picker.setImageUrl(imageUrl); + picker.setOptions(options); } public void setDisplayFormat(String displayFormat) { @@ -56,4 +58,8 @@ public void setImageUrl(String imageUrl) { this.imageUrl = imageUrl; } + + public void setOptions(String options) { + this.options = options; + } } Modified: struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/template/jquery-simple/datepicker.ftl URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/template/jquery-simple/datepicker.ftl?rev=752217&r1=752216&r2=752217&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/template/jquery-simple/datepicker.ftl (original) +++ struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/template/jquery-simple/datepicker.ftl Tue Mar 10 19:07:20 2009 @@ -60,7 +60,7 @@ /> <script type="text/javascript"> $(function() { - $("#${parameters.id?html}").datepicker({ + var ops = { altField: "#${parameters.id?html}_hidden", altFormat: "yy-mm-dd'T'00:00:00", dateFormat : "${parameters.displayFormat?html}", @@ -72,7 +72,17 @@ buttonImageOnly: true, showOn: "both", buttonText: "${parameters.imageTooltip}" - }); + }; + + <#if parameters.options??> + var ops2 = window["${parameters.options}"]; + if (!ops2) { + ops2 = eval ("( ${parameters.options} )" ); + } + $.extend(ops, ops2); + </#if> + + $("#${parameters.id?html}").datepicker(ops); <#if parameters.year?? && parameters.month?? && parameters.day??> $("#${parameters.id?html}").val($.datepicker.formatDate("${parameters.displayFormat?html}", new Date(${parameters.year?c}, ${parameters.month}, ${parameters.day}))); </#if> Modified: struts/sandbox/trunk/struts2-jquery-plugin/src/site/docs/datepicker.html URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jquery-plugin/src/site/docs/datepicker.html?rev=752217&r1=752216&r2=752217&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-jquery-plugin/src/site/docs/datepicker.html (original) +++ struts/sandbox/trunk/struts2-jquery-plugin/src/site/docs/datepicker.html Tue Mar 10 19:07:20 2009 @@ -290,6 +290,14 @@ <td align="left" valign="top">Set the html onselect attribute on rendered html element</td> </tr> <tr> + <td align="left" valign="top">options</td> + <td align="left" valign="top">false</td> + <td align="left" valign="top"></td> + <td align="left" valign="top">false</td> + <td align="left" valign="top">String</td> + <td align="left" valign="top">The name of a variable(or a javascript map) that contains additional options to be passed to JQuery Datepicker</td> + </tr> + <tr> <td align="left" valign="top">readonly</td> <td align="left" valign="top">false</td> <td align="left" valign="top">false</td>