From c49c33820ed6f80b19b892ef77f09d0090f3336f Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Tue, 14 Feb 2012 09:21:11 +0100 Subject: [PATCH] OO-115: fix the links generator to accept business path --- .../commons/calendar/model/KalendarEvent.java | 20 +++++------ .../WeeklyCalendarComponentRenderer.java | 34 +++++++++++++------ 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/olat/commons/calendar/model/KalendarEvent.java b/src/main/java/org/olat/commons/calendar/model/KalendarEvent.java index 2336d2bdcf1..7f9fc36aefa 100644 --- a/src/main/java/org/olat/commons/calendar/model/KalendarEvent.java +++ b/src/main/java/org/olat/commons/calendar/model/KalendarEvent.java @@ -30,11 +30,11 @@ import java.util.Calendar; import java.util.Date; import java.util.List; -import org.olat.commons.calendar.CalendarUtils; - import net.fortuna.ical4j.model.Recur; -public class KalendarEvent implements Cloneable, Comparable { +import org.olat.commons.calendar.CalendarUtils; + +public class KalendarEvent implements Cloneable, Comparable<KalendarEvent> { public static final int CLASS_PRIVATE = 0; public static final int CLASS_X_FREEBUSY = 1; @@ -57,7 +57,7 @@ public class KalendarEvent implements Cloneable, Comparable { private Date begin, end; private boolean isAllDayEvent; private String location; - private List kalendarEventLinks; + private List<KalendarEventLink> kalendarEventLinks; private long created, lastModified; private String createdBy; private int classification; @@ -70,7 +70,7 @@ public class KalendarEvent implements Cloneable, Comparable { private String recurrenceRule; private String recurrenceExc; - private KalendarEvent() { + public KalendarEvent() { // save no-args constructor for XStream } @@ -88,7 +88,7 @@ public class KalendarEvent implements Cloneable, Comparable { this.begin = begin; this.end = end; this.isAllDayEvent = false; - this.kalendarEventLinks = new ArrayList(); + this.kalendarEventLinks = new ArrayList<KalendarEventLink>(); } /** @@ -104,7 +104,7 @@ public class KalendarEvent implements Cloneable, Comparable { this.begin = begin; this.end = new Date(begin.getTime() + duration); this.isAllDayEvent = false; - this.kalendarEventLinks = new ArrayList(); + this.kalendarEventLinks = new ArrayList<KalendarEventLink>(); } /** @@ -243,14 +243,14 @@ public class KalendarEvent implements Cloneable, Comparable { /** * @return Returns the uRI. */ - public List getKalendarEventLinks() { + public List<KalendarEventLink> getKalendarEventLinks() { return kalendarEventLinks; } /** * @param uri The uRI to set. */ - public void setKalendarEventLinks(List kalendarEventLinks) { + public void setKalendarEventLinks(List<KalendarEventLink> kalendarEventLinks) { this.kalendarEventLinks = kalendarEventLinks; } @@ -319,7 +319,7 @@ public class KalendarEvent implements Cloneable, Comparable { setRecurrenceExc(excRule); } - public int compareTo(Object o1) { + public int compareTo(KalendarEvent o1) { if ( !(o1 instanceof KalendarEvent)) { return -1; } diff --git a/src/main/java/org/olat/commons/calendar/ui/components/WeeklyCalendarComponentRenderer.java b/src/main/java/org/olat/commons/calendar/ui/components/WeeklyCalendarComponentRenderer.java index a9dd138873d..2e5e1f2b0ed 100644 --- a/src/main/java/org/olat/commons/calendar/ui/components/WeeklyCalendarComponentRenderer.java +++ b/src/main/java/org/olat/commons/calendar/ui/components/WeeklyCalendarComponentRenderer.java @@ -51,6 +51,7 @@ import org.olat.core.gui.render.StringOutput; import org.olat.core.gui.render.URLBuilder; import org.olat.core.gui.translator.Translator; import org.olat.core.gui.util.CSSHelper; +import org.olat.core.helpers.Settings; import org.olat.core.util.Formatter; import org.olat.core.util.StringHelper; import org.olat.core.util.Util; @@ -647,12 +648,13 @@ public class WeeklyCalendarComponentRenderer implements ComponentRenderer { } private void renderEventLinks(KalendarEvent event, StringOutput sb) { - List kalendarEventLinks = event.getKalendarEventLinks(); + List<KalendarEventLink> kalendarEventLinks = event.getKalendarEventLinks(); - if (kalendarEventLinks != null) { + if (kalendarEventLinks != null && !kalendarEventLinks.isEmpty()) { sb.append("<div class=\"o_cal_links\">"); - for (Iterator iter = kalendarEventLinks.iterator(); iter.hasNext();) { - KalendarEventLink link = (KalendarEventLink) iter.next(); + + String rootUri = Settings.getServerContextPathURI(); + for (KalendarEventLink link: kalendarEventLinks) { sb.append("<br /><b>"); //fxdiff String uri = link.getURI(); @@ -661,8 +663,12 @@ public class WeeklyCalendarComponentRenderer implements ComponentRenderer { String displayName = link.getDisplayName(); iconCssClass = CSSHelper.createFiletypeIconCssClassFor(displayName); } - - if(uri.contains("://")) { + + if(uri.startsWith(rootUri)) { + //intern link with absolute URL + renderInternLink(link, iconCssClass, sb); + } else if(uri.contains("://")) { + //extern link with absolute URL sb.append("<a href=\"").append(uri).append("\" title=\"").append(StringEscapeUtils.escapeHtml(link.getDisplayName())).append("\" "); if (StringHelper.containsNonWhitespace(iconCssClass)) { @@ -670,17 +676,23 @@ public class WeeklyCalendarComponentRenderer implements ComponentRenderer { } sb.append(" target=\"_blank\">").append(link.getDisplayName()).append("</a>"); } else { - sb.append("<a href=\"javascript:top.o_openUriInMainWindow('").append(uri).append("')\" title=\"").append(StringEscapeUtils.escapeHtml(link.getDisplayName())).append("\" "); - if (StringHelper.containsNonWhitespace(iconCssClass)) { - sb.append("class=\"b_with_small_icon_left ").append(iconCssClass).append("\""); - } - sb.append(" onclick=\"return o2cl();\">").append(link.getDisplayName()).append("</a>"); + //link with relative URL + renderInternLink(link, iconCssClass, sb); } sb.append("</b>"); } sb.append("</div>"); } } + + private void renderInternLink(KalendarEventLink link, String iconCssClass, StringOutput sb) { + sb.append("<a href=\"javascript:top.o_openUriInMainWindow('").append(link.getURI()).append("')\" title=\"").append(StringEscapeUtils.escapeHtml(link.getDisplayName())).append("\" "); + if (StringHelper.containsNonWhitespace(iconCssClass)) { + sb.append("class=\"b_with_small_icon_left ").append(iconCssClass).append("\""); + } + sb.append(" onclick=\"return o2cl();\">").append(link.getDisplayName()).append("</a>"); + } + private void renderWeekHeader(int year, int weekOfYear, boolean enableAddEvent, StringOutput sb, URLBuilder ubu, Locale locale) { Calendar cal = CalendarUtils.getStartOfWeekCalendar(year, weekOfYear, locale); Calendar calNow = CalendarUtils.createCalendarInstance(locale); -- GitLab