From ddb5fce8d4ddc7d6f150099de8c75a26ef6e9938 Mon Sep 17 00:00:00 2001 From: uhensler <urs.hensler@frentix.com> Date: Fri, 17 Apr 2020 09:29:55 +0200 Subject: [PATCH] OO-4642: Enhanced display of events lasting several days --- .../ui/CalendarDetailsController.java | 51 +++++++++++-------- .../calendar/ui/_content/event_details.html | 6 +++ .../ui/LiveStreamMetadataController.java | 48 +++++++++-------- .../ui/LiveStreamPeekviewController.java | 45 +++++++++------- 4 files changed, 92 insertions(+), 58 deletions(-) diff --git a/src/main/java/org/olat/commons/calendar/ui/CalendarDetailsController.java b/src/main/java/org/olat/commons/calendar/ui/CalendarDetailsController.java index a043f2dd26e..a634dd7e8d5 100644 --- a/src/main/java/org/olat/commons/calendar/ui/CalendarDetailsController.java +++ b/src/main/java/org/olat/commons/calendar/ui/CalendarDetailsController.java @@ -20,7 +20,6 @@ package org.olat.commons.calendar.ui; import java.util.ArrayList; -import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Locale; @@ -29,7 +28,6 @@ import org.apache.commons.lang.time.DateUtils; import org.olat.commons.calendar.CalendarManagedFlag; import org.olat.commons.calendar.CalendarManager; import org.olat.commons.calendar.CalendarModule; -import org.olat.commons.calendar.CalendarUtils; import org.olat.commons.calendar.model.KalendarEvent; import org.olat.commons.calendar.model.KalendarEventLink; import org.olat.commons.calendar.ui.components.KalendarRenderWrapper; @@ -103,31 +101,42 @@ public class CalendarDetailsController extends BasicController { putInitialPanel(mainVC); } - private String addDateToMainVC() { + private void addDateToMainVC() { Locale locale = getLocale(); - Calendar cal = CalendarUtils.createCalendarInstance(locale); Date begin = calEvent.getBegin(); - Date end = calEvent.getEnd(); - cal.setTime(begin); + Date end = calEvent.getEnd(); - StringBuilder sb = new StringBuilder(); - sb.append(StringHelper.formatLocaleDateFull(begin.getTime(), locale)); - mainVC.contextPut("date", sb.toString()); - - if (!calEvent.isAllDayEvent()) { - sb = new StringBuilder(); - sb.append(StringHelper.formatLocaleTime(begin.getTime(), locale)); - sb.append(" - "); - if (!DateUtils.isSameDay(begin, end)) { - sb.append(StringHelper.formatLocaleDateFull(end.getTime(), locale)).append(", "); - } - sb.append(StringHelper.formatLocaleTime(end.getTime(), locale)); - mainVC.contextPut("time", sb.toString()); + boolean sameDay = DateUtils.isSameDay(begin, end); + if (sameDay) { + StringBuilder dateSb = new StringBuilder(); + dateSb.append(StringHelper.formatLocaleDateFull(begin.getTime(), locale)); + mainVC.contextPut("date", dateSb.toString()); + if (!calEvent.isAllDayEvent()) { + StringBuilder timeSb = new StringBuilder(); + timeSb.append(StringHelper.formatLocaleTime(begin.getTime(), locale)); + timeSb.append(" - "); + timeSb.append(StringHelper.formatLocaleTime(end.getTime(), locale)); + mainVC.contextPut("time", timeSb.toString()); + } + } else { + StringBuilder dateSb = new StringBuilder(); + dateSb.append(StringHelper.formatLocaleDateFull(begin.getTime(), locale)); + if (!calEvent.isAllDayEvent()) { + dateSb.append(" "); + dateSb.append(StringHelper.formatLocaleTime(begin.getTime(), locale)); + } + dateSb.append(" -"); + mainVC.contextPut("date", dateSb.toString()); + StringBuilder date2Sb = new StringBuilder(); + date2Sb.append(StringHelper.formatLocaleDateFull(end.getTime(), locale)); + if (!calEvent.isAllDayEvent()) { + date2Sb.append(" "); + date2Sb.append(StringHelper.formatLocaleTime(end.getTime(), locale)); + } + mainVC.contextPut("date2", date2Sb.toString()); } - return sb.toString(); } - private List<LinkWrapper> renderEventLinks() { List<LinkWrapper> linkWrappers = new ArrayList<>(); List<KalendarEventLink> kalendarEventLinks = calEvent.getKalendarEventLinks(); diff --git a/src/main/java/org/olat/commons/calendar/ui/_content/event_details.html b/src/main/java/org/olat/commons/calendar/ui/_content/event_details.html index 1240684f850..1beab2e4ba0 100644 --- a/src/main/java/org/olat/commons/calendar/ui/_content/event_details.html +++ b/src/main/java/org/olat/commons/calendar/ui/_content/event_details.html @@ -5,6 +5,12 @@ <i class="o_icon o_icon-fw o_icon_calendar"> </i> $date </div> + #if($date2 && $date2 != "") + <div class="o_cal_time text-muted"> + <i class="o_icon o_icon-fw "> </i> + $date2 + </div> + #end #if($time && $time != "") <div class="o_cal_time text-muted"> <i class="o_icon o_icon-fw o_icon_time"> </i> diff --git a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamMetadataController.java b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamMetadataController.java index e35dba8a8b4..d36d9c171d7 100644 --- a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamMetadataController.java +++ b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamMetadataController.java @@ -19,13 +19,11 @@ */ package org.olat.course.nodes.livestream.ui; -import java.util.Calendar; import java.util.Date; import java.util.Locale; import org.apache.commons.lang.time.DateUtils; import org.olat.commons.calendar.CalendarManager; -import org.olat.commons.calendar.CalendarUtils; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.velocity.VelocityContainer; @@ -78,28 +76,38 @@ public class LiveStreamMetadataController extends BasicController { } } - private String addDateToMainVC(LiveStreamEvent calEvent) { + private void addDateToMainVC(LiveStreamEvent calEvent) { Locale locale = getLocale(); - Calendar cal = CalendarUtils.createCalendarInstance(locale); Date begin = calEvent.getBegin(); - Date end = calEvent.getEnd(); - cal.setTime(begin); + Date end = calEvent.getEnd(); - StringBuilder sb = new StringBuilder(); - sb.append(StringHelper.formatLocaleDateFull(begin.getTime(), locale)); - mainVC.contextPut("date", sb.toString()); - - if (!calEvent.isAllDayEvent()) { - sb = new StringBuilder(); - sb.append(StringHelper.formatLocaleTime(begin.getTime(), locale)); - sb.append(" - "); - if (!DateUtils.isSameDay(begin, end)) { - sb.append(StringHelper.formatLocaleDateFull(end.getTime(), locale)).append(", "); - } - sb.append(StringHelper.formatLocaleTime(end.getTime(), locale)); - mainVC.contextPut("time", sb.toString()); + boolean sameDay = DateUtils.isSameDay(begin, end); + if (sameDay) { + StringBuilder dateSb = new StringBuilder(); + dateSb.append(StringHelper.formatLocaleDateFull(begin.getTime(), locale)); + mainVC.contextPut("date", dateSb.toString()); + if (!calEvent.isAllDayEvent()) { + StringBuilder timeSb = new StringBuilder(); + timeSb.append(StringHelper.formatLocaleTime(begin.getTime(), locale)); + timeSb.append(" - "); + timeSb.append(StringHelper.formatLocaleTime(end.getTime(), locale)); + mainVC.contextPut("time", timeSb.toString()); + } + } else { + StringBuilder dateSb = new StringBuilder(); + dateSb.append(StringHelper.formatLocaleDateFull(begin.getTime(), locale)); + if (!calEvent.isAllDayEvent()) { + dateSb.append(" "); + dateSb.append(StringHelper.formatLocaleTime(begin.getTime(), locale)); + } + dateSb.append(" - "); + dateSb.append(StringHelper.formatLocaleDateFull(end.getTime(), locale)); + if (!calEvent.isAllDayEvent()) { + dateSb.append(" "); + dateSb.append(StringHelper.formatLocaleTime(end.getTime(), locale)); + } + mainVC.contextPut("date", dateSb.toString()); } - return sb.toString(); } @Override diff --git a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamPeekviewController.java b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamPeekviewController.java index e91f153c3ef..a26f22c12db 100644 --- a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamPeekviewController.java +++ b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamPeekviewController.java @@ -20,14 +20,12 @@ package org.olat.course.nodes.livestream.ui; import java.util.ArrayList; -import java.util.Calendar; import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Locale; import org.apache.commons.lang.time.DateUtils; -import org.olat.commons.calendar.CalendarUtils; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.htmlsite.OlatCmdEvent; @@ -110,24 +108,37 @@ public class LiveStreamPeekviewController extends BasicController implements Con String title = translate(titleI18n, new String[] {event.getSubject()}); Locale locale = getLocale(); - Calendar cal = CalendarUtils.createCalendarInstance(locale); Date begin = event.getBegin(); Date end = event.getEnd(); - cal.setTime(begin); - StringBuilder dateSb = new StringBuilder(); - dateSb.append(StringHelper.formatLocaleDateFull(begin.getTime(), locale)); - String date = dateSb.toString(); - + String date = null; String time = null; - if (!event.isAllDayEvent()) { - StringBuilder timeSb = new StringBuilder(); - timeSb.append(StringHelper.formatLocaleTime(begin.getTime(), locale)); - timeSb.append(" - "); - if (!DateUtils.isSameDay(begin, end)) { - timeSb.append(StringHelper.formatLocaleDateFull(end.getTime(), locale)).append(", "); - } - timeSb.append(StringHelper.formatLocaleTime(end.getTime(), locale)); - time = timeSb.toString(); + + boolean sameDay = DateUtils.isSameDay(begin, end); + if (sameDay) { + StringBuilder dateSb = new StringBuilder(); + dateSb.append(StringHelper.formatLocaleDateFull(begin.getTime(), locale)); + date = dateSb.toString(); + if (!event.isAllDayEvent()) { + StringBuilder timeSb = new StringBuilder(); + timeSb.append(StringHelper.formatLocaleTime(begin.getTime(), locale)); + timeSb.append(" - "); + timeSb.append(StringHelper.formatLocaleTime(end.getTime(), locale)); + time = timeSb.toString(); + } + } else { + StringBuilder dateSb = new StringBuilder(); + dateSb.append(StringHelper.formatLocaleDateFull(begin.getTime(), locale)); + if (!event.isAllDayEvent()) { + dateSb.append(" "); + dateSb.append(StringHelper.formatLocaleTime(begin.getTime(), locale)); + } + dateSb.append(" - "); + dateSb.append(StringHelper.formatLocaleDateFull(end.getTime(), locale)); + if (!event.isAllDayEvent()) { + dateSb.append(" "); + dateSb.append(StringHelper.formatLocaleTime(end.getTime(), locale)); + } + date = dateSb.toString(); } String location = event.getLocation(); -- GitLab