diff --git a/src/main/java/org/olat/commons/calendar/restapi/CalendarWSHelper.java b/src/main/java/org/olat/commons/calendar/restapi/CalendarWSHelper.java index d38923e85e93c0db65acc4c1c64e5e82b8245c4e..fd4c8130476ae257682aba41577e72f1c7131357 100644 --- a/src/main/java/org/olat/commons/calendar/restapi/CalendarWSHelper.java +++ b/src/main/java/org/olat/commons/calendar/restapi/CalendarWSHelper.java @@ -54,6 +54,14 @@ public class CalendarWSHelper { kalEvent.setLiveStreamUrl(event.getLiveStreamUrl()); kalEvent.setExternalId(event.getExternalId()); kalEvent.setExternalSource(event.getExternalSource()); + if(event.getClassification() != null) { + int classification = event.getClassification().intValue(); + if(classification == KalendarEvent.CLASS_PRIVATE + || classification == KalendarEvent.CLASS_PUBLIC + || classification == KalendarEvent.CLASS_X_FREEBUSY) { + kalEvent.setClassification(classification); + } + } } static boolean hasReadAccess(KalendarRenderWrapper wrapper) { diff --git a/src/main/java/org/olat/commons/calendar/restapi/EventVO.java b/src/main/java/org/olat/commons/calendar/restapi/EventVO.java index dcff953f347bd2a1c8eb0d011166277732def2ee..134fa20b313b79900a188a1b0e84118a4ccfa334 100644 --- a/src/main/java/org/olat/commons/calendar/restapi/EventVO.java +++ b/src/main/java/org/olat/commons/calendar/restapi/EventVO.java @@ -45,6 +45,8 @@ public class EventVO { private Date end; private boolean allDayEvent; + private Integer classification; + private String liveStreamUrl; @Schema(required = true, description = "Action to be performed on managedFlags", allowableValues = { @@ -79,6 +81,7 @@ public class EventVO { managedFlags = CalendarManagedFlag.toString(event.getManagedFlags()); externalId = event.getExternalId(); externalSource = event.getExternalSource(); + classification = event.getClassification(); } public String getId() { @@ -157,6 +160,14 @@ public class EventVO { this.calendarId = calendarId; } + public Integer getClassification() { + return classification; + } + + public void setClassification(Integer classification) { + this.classification = classification; + } + public String getManagedFlags() { return managedFlags; } diff --git a/src/test/java/org/olat/restapi/CourseCalendarTest.java b/src/test/java/org/olat/restapi/CourseCalendarTest.java index b354c88b5df9a89d49399b83e3fdb610212431b8..aee46c4637b061f5d6bdc73302fc0481398d36c3 100644 --- a/src/test/java/org/olat/restapi/CourseCalendarTest.java +++ b/src/test/java/org/olat/restapi/CourseCalendarTest.java @@ -186,6 +186,42 @@ public class CourseCalendarTest extends OlatRestTestCase { conn.shutdown(); } + @Test + public void putVisibleCalendarEvent() throws IOException, URISyntaxException { + RestConnection conn = new RestConnection(); + assertTrue(conn.login(auth1.getName(), "A6B7C8")); + + //create an event + EventVO event = new EventVO(); + Calendar cal = Calendar.getInstance(); + event.setBegin(cal.getTime()); + cal.add(Calendar.HOUR_OF_DAY, 1); + event.setEnd(cal.getTime()); + String subject = UUID.randomUUID().toString(); + event.setSubject(subject); + event.setClassification(KalendarEvent.CLASS_PUBLIC); + + URI eventUri = UriBuilder.fromUri(getContextURI()).path("repo").path("courses") + .path(course1.getResourceableId().toString()).path("calendar").path("event").build(); + HttpPut putEventMethod = conn.createPut(eventUri, MediaType.APPLICATION_JSON, true); + conn.addJsonEntity(putEventMethod, event); + HttpResponse putEventResponse = conn.execute(putEventMethod); + assertEquals(200, putEventResponse.getStatusLine().getStatusCode()); + EntityUtils.consume(putEventResponse.getEntity()); + + //check if the event is saved + KalendarRenderWrapper calendarWrapper = calendarManager.getCourseCalendar(course1); + Collection<KalendarEvent> savedEvents = calendarWrapper.getKalendar().getEvents(); + + KalendarEvent savedEvent = savedEvents.stream() + .filter(e -> subject.equals(e.getSubject())) + .findFirst().get(); + + Assert.assertEquals(KalendarEvent.CLASS_PUBLIC, savedEvent.getClassification()); + + conn.shutdown(); + } + @Test public void putCalendarEvents() throws IOException, URISyntaxException { RestConnection conn = new RestConnection();