diff --git a/ccm-cms-types-agenda/src/com/arsdigita/cms/contenttypes/ui/AgendaPropertiesStep.java b/ccm-cms-types-agenda/src/com/arsdigita/cms/contenttypes/ui/AgendaPropertiesStep.java index f84002ad7..406cbb667 100755 --- a/ccm-cms-types-agenda/src/com/arsdigita/cms/contenttypes/ui/AgendaPropertiesStep.java +++ b/ccm-cms-types-agenda/src/com/arsdigita/cms/contenttypes/ui/AgendaPropertiesStep.java @@ -34,6 +34,7 @@ import com.arsdigita.cms.ui.authoring.SimpleEditStep; import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; // replaced by AgendaGlobalizationUtil // import com.arsdigita.cms.util.GlobalizationUtil; +import com.arsdigita.dispatcher.DispatcherHelper; import java.text.DateFormat; @@ -91,7 +92,7 @@ public class AgendaPropertiesStep extends SimpleEditStep { PageState state) { ContentPage page = (ContentPage) item; if(page.getLaunchDate() != null) { - return DateFormat.getDateInstance(DateFormat.LONG) + return DateFormat.getDateInstance(DateFormat.LONG, DispatcherHelper.getNegotiatedLocale()) .format(page.getLaunchDate()); } else { return (String)AgendaGlobalizationUtil.globalize("cms.ui.unknown").localize(); @@ -120,7 +121,7 @@ public class AgendaPropertiesStep extends SimpleEditStep { PageState state) { Agenda agenda = (Agenda) item; if(agenda.getCreationDate() != null) { - return DateFormat.getDateInstance(DateFormat.LONG) + return DateFormat.getDateInstance(DateFormat.LONG, DispatcherHelper.getNegotiatedLocale()) .format(agenda.getCreationDate()); } else { return (String)AgendaGlobalizationUtil.globalize("cms.ui.unknown").localize(); diff --git a/ccm-cms-types-event/src/com/arsdigita/cms/contenttypes/ui/EventPropertiesStep.java b/ccm-cms-types-event/src/com/arsdigita/cms/contenttypes/ui/EventPropertiesStep.java index c4c226555..9fbf708d0 100755 --- a/ccm-cms-types-event/src/com/arsdigita/cms/contenttypes/ui/EventPropertiesStep.java +++ b/ccm-cms-types-event/src/com/arsdigita/cms/contenttypes/ui/EventPropertiesStep.java @@ -18,7 +18,6 @@ */ package com.arsdigita.cms.contenttypes.ui; - import com.arsdigita.bebop.Component; import com.arsdigita.bebop.PageState; import com.arsdigita.cms.ContentPage; @@ -32,8 +31,13 @@ import com.arsdigita.cms.ui.authoring.BasicPageForm; import com.arsdigita.cms.ui.authoring.SimpleEditStep; import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; import com.arsdigita.cms.contenttypes.util.EventGlobalizationUtil; +import com.arsdigita.dispatcher.DispatcherHelper; import java.text.DateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.Locale; /** * Authoring step to view/edit the simple attributes of the Event content type (and @@ -49,7 +53,7 @@ public class EventPropertiesStep extends SimpleEditStep { public static String EDIT_SHEET_NAME = "edit"; public EventPropertiesStep(ItemSelectionModel itemModel, - AuthoringKitWizard parent) { + AuthoringKitWizard parent) { super(itemModel, parent); setDefaultEditKey(EDIT_SHEET_NAME); @@ -57,7 +61,7 @@ public class EventPropertiesStep extends SimpleEditStep { editSheet = new EventPropertyForm(itemModel, this); add(EDIT_SHEET_NAME, "Edit", new WorkflowLockedComponentAccess(editSheet, itemModel), - editSheet.getSaveCancelSection().getCancelButton()); + editSheet.getSaveCancelSection().getCancelButton()); setDisplayComponent(getEventPropertySheet(itemModel)); } @@ -71,102 +75,92 @@ public class EventPropertiesStep extends SimpleEditStep { * @return A component to display the state of the basic properties * of the release **/ - public static Component getEventPropertySheet(ItemSelectionModel - itemModel) { + public static Component getEventPropertySheet(ItemSelectionModel itemModel) { DomainObjectPropertySheet sheet = new DomainObjectPropertySheet(itemModel); - sheet.add( (String)EventGlobalizationUtil.globalize - ("cms.contenttypes.ui.event.name").localize(), Event.NAME); - sheet.add( (String)EventGlobalizationUtil.globalize - ("cms.contenttypes.ui.event.title").localize(), Event.TITLE); - sheet.add( (String)EventGlobalizationUtil.globalize - ("cms.contenttypes.ui.event.lead").localize(), Event.LEAD); + sheet.add((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.name").localize(), Event.NAME); + sheet.add((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.title").localize(), Event.TITLE); + sheet.add((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.lead").localize(), Event.LEAD); if (!ContentSection.getConfig().getHideLaunchDate()) { sheet.add(EventGlobalizationUtil.globalize("cms.contenttypes.ui.launch_date"), - ContentPage.LAUNCH_DATE, - new DomainObjectPropertySheet.AttributeFormatter() { - public String format(DomainObject item, - String attribute, - PageState state) { - ContentPage page = (ContentPage) item; - if(page.getLaunchDate() != null) { - return DateFormat.getDateInstance(DateFormat.LONG) - .format(page.getLaunchDate()); - } else { - return (String)EventGlobalizationUtil.globalize("cms.ui.unknown").localize(); - } - } - }); + ContentPage.LAUNCH_DATE, + new DomainObjectPropertySheet.AttributeFormatter() { + + public String format(DomainObject item, + String attribute, + PageState state) { + ContentPage page = (ContentPage) item; + if (page.getLaunchDate() != null) { + return DateFormat.getDateInstance(DateFormat.LONG, DispatcherHelper.getNegotiatedLocale()).format(page.getLaunchDate()); + } else { + return (String) EventGlobalizationUtil.globalize("cms.ui.unknown").localize(); + } + } + }); } - sheet.add( (String)EventGlobalizationUtil.globalize - ("cms.contenttypes.ui.event.start_time").localize(), Event.START_DATE, - new DomainObjectPropertySheet.AttributeFormatter() { - public String format(DomainObject item, - String attribute, - PageState state) { - Event e = (Event) item; + sheet.add((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.start_time").localize(), Event.START_DATE, + new DomainObjectPropertySheet.AttributeFormatter() { - if (e.getStartDate() != null) { - StringBuffer buf = new StringBuffer(); - buf.append(DateFormat.getDateInstance(DateFormat.LONG) - .format(e.getStartDate())); + public String format(DomainObject item, + String attribute, + PageState state) { + Event e = (Event) item; - if (e.getStartTime() != null) { - buf.append(". " + e.getDisplayStartTime()); - } + if (e.getStartDate() != null) { - return buf.toString(); - } else { - return "unknown"; - } - } - }); + if (e.getStartTime() == null) { + return DateFormat.getDateInstance(DateFormat.LONG, DispatcherHelper.getNegotiatedLocale()).format(e.getStartDate()); + } else { + Date startDateTime = new Date(e.getStartDate().getTime() + e.getStartTime().getTime()); + return DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT, DispatcherHelper.getNegotiatedLocale()).format(startDateTime); - sheet.add( (String)EventGlobalizationUtil.globalize - ("cms.contenttypes.ui.event.end_time").localize(), Event.END_DATE, - new DomainObjectPropertySheet.AttributeFormatter() { - public String format(DomainObject item, - String attribute, - PageState state) { - Event e = (Event) item; - if (e.getEndDate() != null) { - StringBuffer buf = new StringBuffer(); - buf.append(DateFormat.getDateInstance(DateFormat.LONG) - .format(e.getEndDate())); + } - if (e.getEndTime() != null) { - buf.append(". " + e.getDisplayEndTime()); - } + } else { + return (String) EventGlobalizationUtil.globalize("cms.ui.unknown").localize(); + } + } + }); - return buf.toString(); - } else { - return "unknown"; - } - } - }); - if(!Event.getConfig().getHideDateDescription()) { - sheet.add( (String)EventGlobalizationUtil.globalize - ("cms.contenttypes.ui.event.date_description").localize(), Event.EVENT_DATE); - } - sheet.add( (String)EventGlobalizationUtil.globalize - ("cms.contenttypes.ui.event.location").localize(), Event.LOCATION); - - if(!Event.getConfig().getHideMainContributor()) { - sheet.add( (String)EventGlobalizationUtil.globalize - ("cms.contenttypes.ui.event.main_contributor").localize(), Event.MAIN_CONTRIBUTOR); - } - if(!Event.getConfig().getHideEventType()) { - sheet.add( (String)EventGlobalizationUtil.globalize - ("cms.contenttypes.ui.event.event_type").localize(), Event.EVENT_TYPE); - } - if(!Event.getConfig().getHideLinkToMap()) { - sheet.add( (String)EventGlobalizationUtil.globalize - ("cms.contenttypes.ui.event.link_to_map").localize(), Event.MAP_LINK); - } - if(!Event.getConfig().getHideCost()) { - sheet.add( (String)EventGlobalizationUtil.globalize - ("cms.contenttypes.ui.event.cost").localize(), Event.COST); - } + sheet.add((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.end_time").localize(), Event.END_DATE, + new DomainObjectPropertySheet.AttributeFormatter() { + + public String format(DomainObject item, + String attribute, + PageState state) { + Event e = (Event) item; + if (e.getEndDate() != null) { + + if (e.getEndTime() == null) { + return DateFormat.getDateInstance(DateFormat.LONG, DispatcherHelper.getNegotiatedLocale()).format(e.getEndDate()); + } else { + Date endDateTime = new Date(e.getEndDate().getTime() + e.getEndTime().getTime()); + return DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT, DispatcherHelper.getNegotiatedLocale()).format(endDateTime); + + } + + } else { + return (String) EventGlobalizationUtil.globalize("cms.ui.unknown").localize(); + } + } + }); + if (!Event.getConfig().getHideDateDescription()) { + sheet.add((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.date_description").localize(), Event.EVENT_DATE); + } + sheet.add((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.location").localize(), Event.LOCATION); + + if (!Event.getConfig().getHideMainContributor()) { + sheet.add((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.main_contributor").localize(), Event.MAIN_CONTRIBUTOR); + } + if (!Event.getConfig().getHideEventType()) { + sheet.add((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.event_type").localize(), Event.EVENT_TYPE); + } + if (!Event.getConfig().getHideLinkToMap()) { + sheet.add((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.link_to_map").localize(), Event.MAP_LINK); + } + if (!Event.getConfig().getHideCost()) { + sheet.add((String) EventGlobalizationUtil.globalize("cms.contenttypes.ui.event.cost").localize(), Event.COST); + } return sheet; } } diff --git a/ccm-cms-types-newsitem/src/com/arsdigita/cms/contenttypes/ui/NewsItemPropertiesStep.java b/ccm-cms-types-newsitem/src/com/arsdigita/cms/contenttypes/ui/NewsItemPropertiesStep.java index fc1628a10..4207db322 100755 --- a/ccm-cms-types-newsitem/src/com/arsdigita/cms/contenttypes/ui/NewsItemPropertiesStep.java +++ b/ccm-cms-types-newsitem/src/com/arsdigita/cms/contenttypes/ui/NewsItemPropertiesStep.java @@ -18,7 +18,6 @@ */ package com.arsdigita.cms.contenttypes.ui; - import com.arsdigita.bebop.Component; import com.arsdigita.bebop.PageState; import com.arsdigita.cms.ContentPage; @@ -32,6 +31,7 @@ import com.arsdigita.cms.ui.authoring.BasicPageForm; import com.arsdigita.cms.ui.authoring.SimpleEditStep; import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; import com.arsdigita.cms.contenttypes.util.NewsItemGlobalizationUtil; +import com.arsdigita.dispatcher.DispatcherHelper; import java.text.DateFormat; @@ -49,15 +49,15 @@ public class NewsItemPropertiesStep extends SimpleEditStep { public static String EDIT_SHEET_NAME = "edit"; public NewsItemPropertiesStep(ItemSelectionModel itemModel, - AuthoringKitWizard parent) { + AuthoringKitWizard parent) { super(itemModel, parent); setDefaultEditKey(EDIT_SHEET_NAME); BasicPageForm editSheet; - editSheet = new NewsItemPropertyForm(itemModel,this); + editSheet = new NewsItemPropertyForm(itemModel, this); add(EDIT_SHEET_NAME, "Edit", new WorkflowLockedComponentAccess(editSheet, itemModel), - editSheet.getSaveCancelSection().getCancelButton()); + editSheet.getSaveCancelSection().getCancelButton()); setDisplayComponent(getNewsDomainObjectPropertySheet(itemModel)); } @@ -71,75 +71,64 @@ public class NewsItemPropertiesStep extends SimpleEditStep { * @return A component to display the state of the basic properties * of the item **/ - public static Component getNewsDomainObjectPropertySheet(ItemSelectionModel - itemModel) { + public static Component getNewsDomainObjectPropertySheet(ItemSelectionModel itemModel) { DomainObjectPropertySheet sheet = new DomainObjectPropertySheet(itemModel); - sheet.add( (String)NewsItemGlobalizationUtil.globalize - ("cms.contenttypes.ui.title").localize(), NewsItem.TITLE); - sheet.add( (String)NewsItemGlobalizationUtil.globalize - ("cms.contenttypes.ui.newsitem.name").localize(), NewsItem.NAME); - sheet.add( (String)NewsItemGlobalizationUtil.globalize - ("cms.contenttypes.ui.newsitem.lead").localize(), NewsItem.LEAD); + sheet.add((String) NewsItemGlobalizationUtil.globalize("cms.contenttypes.ui.title").localize(), NewsItem.TITLE); + sheet.add((String) NewsItemGlobalizationUtil.globalize("cms.contenttypes.ui.newsitem.name").localize(), NewsItem.NAME); + sheet.add((String) NewsItemGlobalizationUtil.globalize("cms.contenttypes.ui.newsitem.lead").localize(), NewsItem.LEAD); if (!ContentSection.getConfig().getHideLaunchDate()) { sheet.add(NewsItemGlobalizationUtil.globalize("cms.contenttypes.ui.launch_date"), - ContentPage.LAUNCH_DATE, - new DomainObjectPropertySheet.AttributeFormatter() { - public String format(DomainObject item, - String attribute, - PageState state) { - ContentPage page = (ContentPage) item; - if(page.getLaunchDate() != null) { - return DateFormat.getDateInstance(DateFormat.LONG) - .format(page.getLaunchDate()); - } else { - return (String)NewsItemGlobalizationUtil.globalize - ("cms.ui.unknown").localize(); - } - } - }); + ContentPage.LAUNCH_DATE, + new DomainObjectPropertySheet.AttributeFormatter() { + + public String format(DomainObject item, + String attribute, + PageState state) { + ContentPage page = (ContentPage) item; + if (page.getLaunchDate() != null) { + return DateFormat.getDateInstance(DateFormat.LONG, DispatcherHelper.getNegotiatedLocale()).format(page.getLaunchDate()); + } else { + return (String) NewsItemGlobalizationUtil.globalize("cms.ui.unknown").localize(); + } + } + }); } - // Show news item on homepage? + // Show news item on homepage? if (!NewsItem.getConfig().getHideHomepageField()) { - sheet.add( (String)NewsItemGlobalizationUtil.globalize - ("cms.contenttypes.ui.newsitem.homepage").localize(), - NewsItem.IS_HOMEPAGE, - new DomainObjectPropertySheet.AttributeFormatter() { - public String format(DomainObject item, - String attribute, - PageState state) { - NewsItem pr = (NewsItem) item; - - if ( pr.isHomepage().booleanValue()) { - return (String) NewsItemGlobalizationUtil.globalize - ("cms.ui.yes").localize(); - } - - return (String) NewsItemGlobalizationUtil.globalize - ("cms.ui.no").localize(); - } - } - ); + sheet.add((String) NewsItemGlobalizationUtil.globalize("cms.contenttypes.ui.newsitem.homepage").localize(), + NewsItem.IS_HOMEPAGE, + new DomainObjectPropertySheet.AttributeFormatter() { + + public String format(DomainObject item, + String attribute, + PageState state) { + NewsItem pr = (NewsItem) item; + + if (pr.isHomepage().booleanValue()) { + return (String) NewsItemGlobalizationUtil.globalize("cms.ui.yes").localize(); + } + + return (String) NewsItemGlobalizationUtil.globalize("cms.ui.no").localize(); + } + }); } - sheet.add( (String)NewsItemGlobalizationUtil.globalize - ("cms.contenttypes.ui.newsitem.news_date").localize(), NewsItem.NEWS_DATE, - new DomainObjectPropertySheet.AttributeFormatter() { + sheet.add((String) NewsItemGlobalizationUtil.globalize("cms.contenttypes.ui.newsitem.news_date").localize(), NewsItem.NEWS_DATE, + new DomainObjectPropertySheet.AttributeFormatter() { - public String format(DomainObject item, - String attribute, - PageState state) { - NewsItem pr = (NewsItem) item; - if (pr.getNewsDate() != null) { - return DateFormat.getDateInstance(DateFormat.LONG) - .format(pr.getNewsDate()); - } else { - return (String)NewsItemGlobalizationUtil.globalize - ("cms.ui.unknown").localize(); - } - } - }); + public String format(DomainObject item, + String attribute, + PageState state) { + NewsItem pr = (NewsItem) item; + if (pr.getNewsDate() != null) { + return DateFormat.getDateInstance(DateFormat.LONG, DispatcherHelper.getNegotiatedLocale()).format(pr.getNewsDate()); + } else { + return (String) NewsItemGlobalizationUtil.globalize("cms.ui.unknown").localize(); + } + } + }); return sheet; } diff --git a/ccm-core/src/com/arsdigita/bebop/form/Time.java b/ccm-core/src/com/arsdigita/bebop/form/Time.java index d901fa13e..ede4028e7 100755 --- a/ccm-core/src/com/arsdigita/bebop/form/Time.java +++ b/ccm-core/src/com/arsdigita/bebop/form/Time.java @@ -27,11 +27,15 @@ import com.arsdigita.bebop.parameters.NumberInRangeValidationListener; import com.arsdigita.bebop.parameters.ParameterData; import com.arsdigita.bebop.parameters.ParameterModel; import com.arsdigita.bebop.util.BebopConstants; +import com.arsdigita.dispatcher.DispatcherHelper; import com.arsdigita.util.Assert; import com.arsdigita.xml.Element; +import java.text.DateFormat; import java.text.DateFormatSymbols; +import java.text.ParseException; import java.util.Calendar; +import java.util.Locale; /** * A class representing a time field in an HTML form. @@ -57,7 +61,11 @@ public class Time extends Widget implements BebopConstants { public HourFragment(String name, Time parent) { super(name); this.parent = parent; - this.addValidationListener(new NumberInRangeValidationListener(1, 12)); + if (has12HourClock()) { + this.addValidationListener(new NumberInRangeValidationListener(1, 12)); + } else { + this.addValidationListener(new NumberInRangeValidationListener(1, 24)); + } } @Override @@ -71,9 +79,11 @@ public class Time extends Widget implements BebopConstants { @Override public Object getValue(PageState ps) { - // Depending on locale we need to differ between 12 hour and 24 hout format -// return parent.getFragmentValue(ps, Calendar.HOUR); - return parent.getFragmentValue(ps, Calendar.HOUR_OF_DAY); + if (has12HourClock()) { + return parent.getFragmentValue(ps, Calendar.HOUR); + } else { + return parent.getFragmentValue(ps, Calendar.HOUR_OF_DAY); + } } } @@ -178,11 +188,10 @@ public class Time extends Widget implements BebopConstants { if (!(model instanceof TimeParameter)) { throw new IllegalArgumentException( - "The Time widget " + model.getName() + - " must be backed by a TimeParameter parameter model"); + "The Time widget " + model.getName() + + " must be backed by a TimeParameter parameter model"); } - String name = model.getName(); String nameHour = name + ".hour"; String nameMinute = name + ".minute"; @@ -267,7 +276,9 @@ public class Time extends Widget implements BebopConstants { if (m_showSeconds) { m_second.generateXML(ps, time); } - m_amOrPm.generateXML(ps, time); + if (has12HourClock()) { + m_amOrPm.generateXML(ps, time); + } } @Override @@ -277,7 +288,9 @@ public class Time extends Widget implements BebopConstants { if (m_showSeconds) { m_second.setDisabled(); } - m_amOrPm.setDisabled(); + if (has12HourClock()) { + m_amOrPm.setDisabled(); + } } @Override @@ -287,7 +300,9 @@ public class Time extends Widget implements BebopConstants { if (m_showSeconds) { m_second.setReadOnly(); } - m_amOrPm.setReadOnly(); + if (has12HourClock()) { + m_amOrPm.setReadOnly(); + } } /** @@ -319,7 +334,7 @@ public class Time extends Widget implements BebopConstants { Calendar c = Calendar.getInstance(); c.setTime(value); int intVal = c.get(field); - if (field == Calendar.HOUR && intVal == 0) { + if (field == Calendar.HOUR && intVal == 0 && has12HourClock()) { intVal = 12; } return new Integer(intVal); @@ -327,4 +342,18 @@ public class Time extends Widget implements BebopConstants { } return null; } + + private boolean has12HourClock() { + Locale locale = DispatcherHelper.getNegotiatedLocale(); + DateFormat format_12Hour = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.US); + DateFormat format_locale = DateFormat.getTimeInstance(DateFormat.SHORT, locale); + + String midnight = ""; + try { + midnight = format_locale.format(format_12Hour.parse("12:00 AM")); + } catch (ParseException ignore) { + } + + return midnight.contains("12"); + } }