// // ERXEditDateJavascript.java: Class file for WO Component 'ERXEditDateJavascript' // Project ERExtensions // // Created by bposokho on Thu Jan 16 2003 // package er.extensions.components.javascript; import org.apache.commons.lang3.StringUtils; import com.webobjects.appserver.WOContext; import com.webobjects.appserver.WOResponse; import er.extensions.appserver.ERXResponseRewriter; import er.extensions.components.ERXStatelessComponent; import er.extensions.components._private.ERXWOForm; import er.extensions.formatters.ERXTimestampFormatter; import er.extensions.localization.ERXLocalizer; /** * * @binding dateformat * @binding dateString */ public class ERXEditDateJavascript extends ERXStatelessComponent { /** * Do I need to update serialVersionUID? * See section 5.6 <cite>Type Changes Affecting Serialization</cite> on page 51 of the * <a href="http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf">Java Object Serialization Spec</a> */ private static final long serialVersionUID = 1L; private static String _datePickerJavaScriptUrl; private String elementID; public ERXEditDateJavascript(WOContext context) { super(context); } @Override public void awake() { elementID = context().elementID().replace('.', '_'); } /** * Adds date-picker.js to the header or includes it in an Ajax friendly manner if this is an Ajax request. * * @see er.extensions.components.ERXNonSynchronizingComponent#appendToResponse(com.webobjects.appserver.WOResponse, com.webobjects.appserver.WOContext) * @see er.extensions.appserver.ERXResponseRewriter#addScriptResourceInHead(WOResponse, WOContext, String, String) */ @Override public void appendToResponse(WOResponse response, WOContext context) { ERXResponseRewriter.addScriptResourceInHead(response, context, "ERExtensions", "date-picker.js"); super.appendToResponse(response, context); } public String dateformat() { String format = stringValueForBinding("dateformat"); if (format == null) { format = ERXTimestampFormatter.DEFAULT_PATTERN; } return format; } public void setDateformat(String value) { setValueForBinding(value, "dateformat"); } public String dateString() { return stringValueForBinding("dateString"); } public void setDateString(String value) { setValueForBinding(value, "dateString"); } @Override public String name() { return "datebox" + elementID; } public String href() { String formName = ERXWOForm.formName(context(), "EditForm"); return "show_calendar('" + formName + "." + name() + "', null, null, '" + formatterStringForScript() + "'); return false;"; } public String formatterStringForScript() { String format = ERXLocalizer.currentLocalizer().localizedStringForKeyWithDefault(dateformat()); return ERXEditDateJavascript.formatterStringForScript(format); } public static String formatterStringForScript(String format) { String result = format; result = StringUtils.replace(result, "%Y", "yyyy"); result = StringUtils.replace(result, "%y", "yy"); result = StringUtils.replace(result, "%m", "MM"); result = StringUtils.replace(result, "%d", "dd"); result = StringUtils.replace(result, "%b", "MON"); return result; } }