From 783e25eaa7ef04be8e201d65c5fa68acedd5d58b Mon Sep 17 00:00:00 2001 From: jensp Date: Tue, 4 Jul 2017 18:19:52 +0000 Subject: [PATCH] CCM NG/ccm-cms: Some improvments for EventPropertiesStep and EventPropertyForm git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4839 8810af33-2d31-482b-a856-94f89814c4df --- .../contenttypes/ui/EventPropertiesStep.java | 41 ++++++++---- .../contenttypes/ui/EventPropertyForm.java | 62 ++++++++++--------- .../java/org/librecms/contenttypes/Event.java | 24 +++++-- .../org/librecms/CmsResources.properties | 10 +++ .../org/librecms/CmsResources_de.properties | 10 +++ .../org/librecms/CmsResources_fr.properties | 10 +++ .../toolbox/ui/DomainObjectPropertySheet.java | 2 +- 7 files changed, 113 insertions(+), 46 deletions(-) diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/contenttypes/ui/EventPropertiesStep.java b/ccm-cms/src/main/java/com/arsdigita/cms/contenttypes/ui/EventPropertiesStep.java index 2e4624119..a875e50d4 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/contenttypes/ui/EventPropertiesStep.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/contenttypes/ui/EventPropertiesStep.java @@ -31,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.globalization.GlobalizedMessage; +import com.arsdigita.toolbox.ToolboxConstants; import com.arsdigita.toolbox.ui.DomainObjectPropertySheet; import org.libreccm.cdi.utils.CdiUtil; @@ -48,6 +49,7 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.text.DateFormat; import java.util.Arrays; +import java.util.Date; import java.util.Optional; /** @@ -101,7 +103,8 @@ public class EventPropertiesStep extends SimpleEditStep { * Returns a component that displays the properties of the Event specified * by the ItemSelectionModel passed in. * - * @param itemSelectionModel The ItemSelectionModel to use + * @param itemSelectionModel The ItemSelectionModel to use + * @param selectedLanguageParam * * @return A component to display the state of the basic properties of the * release @@ -210,13 +213,13 @@ public class EventPropertiesStep extends SimpleEditStep { * @return A String representation of the retrieved boolean attribute of * the domain object. */ + @Override public String format(final Object obj, final String attribute, final PageState state) { if (obj != null && obj instanceof Event) { - final Event event = (Event) obj; final BeanInfo beanInfo; try { beanInfo = Introspector.getBeanInfo(Event.class); @@ -246,24 +249,38 @@ public class EventPropertiesStep extends SimpleEditStep { throw new UnexpectedErrorException(ex); } - return DateFormat - .getDateTimeInstance( - DateFormat.LONG, - DateFormat.SHORT, - globalizationHelper.getNegotiatedLocale()) - .format(result); + if (result == null) { + return (String) new GlobalizedMessage( + "toolbox.ui.na", ToolboxConstants.TOOLBOX_BUNDLE) + .localize(); + } else if (result instanceof Date) { + return DateFormat + .getDateTimeInstance( + DateFormat.LONG, + DateFormat.SHORT, + globalizationHelper.getNegotiatedLocale()) + .format((Date) result); + } else { + throw new IllegalArgumentException(String + .format( + "Value is not an instance of \"%s\" but is an " + + "instance of \"%s\".", + Date.class.getName(), + result.getClass().getName())); + } } else { return (String) new GlobalizedMessage( - "cms.ui.unknown", - CmsConstants.CMS_BUNDLE) + "toolbox.ui.na", + ToolboxConstants.TOOLBOX_BUNDLE) .localize(); } } else { - return (String) new GlobalizedMessage("cms.ui.unknown", - CmsConstants.CMS_BUNDLE) + return (String) new GlobalizedMessage( + "toolbox.ui.na", + ToolboxConstants.TOOLBOX_BUNDLE) .localize(); } } diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/contenttypes/ui/EventPropertyForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/contenttypes/ui/EventPropertyForm.java index 23c90e575..af654e5b1 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/contenttypes/ui/EventPropertyForm.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/contenttypes/ui/EventPropertyForm.java @@ -145,11 +145,11 @@ public class EventPropertyForm public EventPropertyForm(final ItemSelectionModel itemSelectionModel, final EventPropertiesStep eventPropertiesStep, final StringParameter selectedLanguageParam) { - + super(ID, itemSelectionModel, selectedLanguageParam); - + Objects.requireNonNull(selectedLanguageParam); - + this.eventPropertiesStep = eventPropertiesStep; this.selectedLanguageParam = selectedLanguageParam; addSubmissionListener(this); @@ -442,27 +442,27 @@ public class EventPropertyForm data.put(LEAD, item.getDescription().getValue(selectedLocale)); data.put(START_DATE, startDate); - data.put(START_TIME, startDate.getTime()); + data.put(START_TIME, startDate); data.put(END_DATE, endDate); - data.put(END_TIME, endDate.getTime()); + data.put(END_TIME, endDate); if (!eventConfig.isHideDateDescription()) { - data.put(EVENT_DATE, + data.put(EVENT_DATE, item.getEventDate().getValue(selectedLocale)); } - data.put(LOCATION, item.getLocation()); + data.put(LOCATION, item.getLocation().getValue(selectedLocale)); if (!eventConfig.isHideMainContributor()) { - data.put(MAIN_CONTRIBUTOR, + data.put(MAIN_CONTRIBUTOR, item.getMainContributor().getValue(selectedLocale)); } if (!eventConfig.isHideEventType()) { - data.put(EVENT_TYPE, + data.put(EVENT_TYPE, item.getEventType().getValue(selectedLocale)); } if (!eventConfig.isHideLinkToMap()) { data.put(MAP_LINK, item.getMapLink()); } if (!eventConfig.isHideCost()) { - data.put(COST, + data.put(COST, item.getCost().getValue(selectedLocale)); } } @@ -489,7 +489,8 @@ public class EventPropertyForm */ @Override public void process(final FormSectionEvent event) { - FormData data = event.getFormData(); + + final FormData data = event.getFormData(); final Event item = (Event) super.processBasicWidgets(event); @@ -498,12 +499,20 @@ public class EventPropertyForm .findBean(ConfigurationManager.class); final EventConfig eventConfig = confManager .findConfiguration(EventConfig.class); + final PageState state = event.getPageState(); // save only if save button was pressed if (item != null - && getSaveCancelSection() - .getSaveButton() - .isSelected(event.getPageState())) { + && getSaveCancelSection().getSaveButton().isSelected(state)) { + + final String selectedLanguage = (String) state + .getValue(selectedLanguageParam); + final Locale selectedLocale; + if (selectedLanguage == null) { + selectedLocale = KernelConfig.getConfig().getDefaultLocale(); + } else { + selectedLocale = new Locale(selectedLanguage); + } final java.util.Date startDate = (java.util.Date) data .get(START_DATE); @@ -516,39 +525,34 @@ public class EventPropertyForm item.setEndDate((java.util.Date) data.get(END_DATE)); //date_description if (!eventConfig.isHideDateDescription()) { - item.getEventDate().addValue( - KernelConfig.getConfig().getDefaultLocale(), - (String) data.get(EVENT_DATE)); + item.getEventDate().addValue(selectedLocale, + (String) data.get(EVENT_DATE)); } if (!eventConfig.isHideMainContributor()) { item .getMainContributor() - .addValue(KernelConfig.getConfig().getDefaultLocale(), + .addValue(selectedLocale, (String) data.get(MAIN_CONTRIBUTOR)); } if (!eventConfig.isHideEventType()) { item .getEventType() - .addValue(KernelConfig.getConfig().getDefaultLocale(), + .addValue(selectedLocale, (String) data.get(EVENT_TYPE)); } if (!eventConfig.isHideLinkToMap()) { item.setMapLink((String) data.get(MAP_LINK)); } item - .getLocation() - .addValue(KernelConfig.getConfig().getDefaultLocale(), - (String) data.get(LOCATION)); + .getLocation().addValue(selectedLocale, + (String) data.get(LOCATION)); item - .getDescription() - .addValue(KernelConfig.getConfig().getDefaultLocale(), - (String) data.get(LEAD)); + .getDescription().addValue(selectedLocale, + (String) data.get(LEAD)); if (!eventConfig.isHideCost()) { - item - .getCost() - .addValue(KernelConfig.getConfig().getDefaultLocale(), - (String) data.get(COST)); + item.getCost().addValue(selectedLocale, + (String) data.get(COST)); } final ContentItemRepository itemRepo = cdiUtil diff --git a/ccm-cms/src/main/java/org/librecms/contenttypes/Event.java b/ccm-cms/src/main/java/org/librecms/contenttypes/Event.java index b819e6b2a..824c7fe12 100644 --- a/ccm-cms/src/main/java/org/librecms/contenttypes/Event.java +++ b/ccm-cms/src/main/java/org/librecms/contenttypes/Event.java @@ -167,19 +167,35 @@ public class Event extends ContentItem implements Serializable { } public Date getStartDate() { - return new Date(startDate.getTime()); + if (startDate == null) { + return null; + } else { + return new Date(startDate.getTime()); + } } public void setStartDate(final Date startDate) { - this.startDate = new Date(startDate.getTime()); + if (startDate == null) { + this.startDate = null; + } else { + this.startDate = new Date(startDate.getTime()); + } } public Date getEndDate() { - return new Date(endDate.getTime()); + if (endDate == null) { + return null; + } else { + return new Date(endDate.getTime()); + } } public void setEndDate(final Date endDate) { - this.endDate = new Date(endDate.getTime()); + if (endDate == null) { + this.endDate = null; + } else { + this.endDate = new Date(endDate.getTime()); + } } public LocalizedString getEventDate() { diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties index e7625af01..0ff0c7d32 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties @@ -336,3 +336,13 @@ cms.ui.action=Action cms.ui.item.language.add=Add language cms.contenttypes.ui.newsitem.date=News date cms.contenttypes.ui.newsitem.lead=Description +cms.contenttypes.ui.event.lead=Description +cms.contenttypes.ui.event.start_time=Starts at +cms.contenttypes.ui.event.end_date=End date +cms.contenttypes.ui.event.end_time=Ends at +cms.contenttypes.ui.event.date_description=More information +cms.contenttypes.ui.event.location=Location +cms.contenttypes.ui.event.main_contributor=Main contributor +cms.contenttypes.ui.event.event_type=Event type +cms.contenttypes.ui.event.link_to_map=Link to map +cms.contenttypes.ui.event.cost=Cost diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties index 40d90e519..1280a4d6d 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties @@ -333,3 +333,13 @@ cms.ui.action=Aktion cms.ui.item.language.add=Sprache hinzuf\u00fcgen cms.contenttypes.ui.newsitem.date=Datum cms.contenttypes.ui.newsitem.lead=Zusammenfassung +cms.contenttypes.ui.event.lead=Zusammenfassung +cms.contenttypes.ui.event.start_time=Beginnt um +cms.contenttypes.ui.event.end_date=Enddatum +cms.contenttypes.ui.event.end_time=Endet um +cms.contenttypes.ui.event.date_description=Weitere Informationen +cms.contenttypes.ui.event.location=Ort +cms.contenttypes.ui.event.main_contributor=Ansprechpartner +cms.contenttypes.ui.event.event_type=Art der Veranstaltung +cms.contenttypes.ui.event.link_to_map=Link zur Karte +cms.contenttypes.ui.event.cost=Kosten diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties index 723bd9159..5fad60b7e 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties @@ -292,3 +292,13 @@ cms.ui.action=Action cms.ui.item.language.add=Add language cms.contenttypes.ui.newsitem.date=News date cms.contenttypes.ui.newsitem.lead=Description +cms.contenttypes.ui.event.lead=Description +cms.contenttypes.ui.event.start_time=Starts at +cms.contenttypes.ui.event.end_date=End date +cms.contenttypes.ui.event.end_time=Ends at +cms.contenttypes.ui.event.date_description=More information +cms.contenttypes.ui.event.location=Location +cms.contenttypes.ui.event.main_contributor=Main contributor +cms.contenttypes.ui.event.event_type=Event type +cms.contenttypes.ui.event.link_to_map=Link to map +cms.contenttypes.ui.event.cost=Cost diff --git a/ccm-core/src/main/java/com/arsdigita/toolbox/ui/DomainObjectPropertySheet.java b/ccm-core/src/main/java/com/arsdigita/toolbox/ui/DomainObjectPropertySheet.java index b4f54d9ee..eec67ae65 100755 --- a/ccm-core/src/main/java/com/arsdigita/toolbox/ui/DomainObjectPropertySheet.java +++ b/ccm-core/src/main/java/com/arsdigita/toolbox/ui/DomainObjectPropertySheet.java @@ -630,7 +630,7 @@ public class DomainObjectPropertySheet extends PropertySheet { } catch (IllegalAccessException | InvocationTargetException ex) { throw new UnexpectedErrorException(ex); } - return Optional.of(value); + return Optional.ofNullable(value); } else { return Optional.empty();