Search in sources :

Example 6 with Kalendar

use of org.olat.commons.calendar.model.Kalendar in project OpenOLAT by OpenOLAT.

the class WeeklyCalendarController method event.

@Override
public void event(UserRequest ureq, Controller source, Event event) {
    Kalendar affectedCal = null;
    if (dirty) {
        dirty = false;
        fireEvent(ureq, new CalendarGUIModifiedEvent());
    }
    if (source == editController) {
        affectedCal = editController.getKalendarEvent().getCalendar();
        cmc.deactivate();
        calendarEl.getComponent().setDirty(true);
        // do logging if affectedCal not null
        if (affectedCal != null) {
            ThreadLocalUserActivityLogger.log(getCalLoggingAction(), getClass(), LoggingResourceable.wrap(ureq.getIdentity()), LoggingResourceable.wrap(affectedCal));
        }
        cleanUp();
    } else if (source == eventDetailsCtr) {
        if (event instanceof CalendarGUIEditEvent) {
            eventCalloutCtr.deactivate();
            cleanUp();
            CalendarGUIEditEvent editEvent = (CalendarGUIEditEvent) event;
            pushEditEventController(ureq, editEvent.getKalendarEvent(), editEvent.getKalendarRenderWrapper());
        } else if (event == Event.DONE_EVENT) {
            eventCalloutCtr.deactivate();
            cleanUp();
        }
    } else if (source == updateCtr) {
        if (event instanceof CalendarGUIUpdateEvent) {
            doUpdate((CalendarGUIUpdateEvent) event, updateCtr.getKalendarEvent(), updateCtr.getDayDelta(), updateCtr.getMinuteDelta(), updateCtr.getAllDay(), updateCtr.getChangeBegin());
        }
        cmc.deactivate();
        cleanUp();
    } else if (source == printCtrl) {
        if (event instanceof CalendarGUIPrintEvent) {
            CalendarGUIPrintEvent printEvent = (CalendarGUIPrintEvent) event;
            if (printEvent.getFrom() != null && printEvent.getTo() != null) {
                doPrint(printEvent.getFrom(), printEvent.getTo());
            }
        }
        eventCalloutCtr.deactivate();
        cleanUp();
    } else if (source == cmc) {
        calendarEl.getComponent().setDirty(true);
        cleanUp();
    } else if (source == dbcSequence) {
        if (event != Event.CANCELLED_EVENT) {
            int pos = DialogBoxUIFactory.getButtonPos(event);
            CalendarGUIEditEvent guiEvent = (CalendarGUIEditEvent) dbcSequence.getUserObject();
            KalendarRenderWrapper kalendarWrapper = guiEvent.getKalendarRenderWrapper();
            KalendarEvent kalendarEvent = guiEvent.getKalendarEvent();
            if (pos == 0) {
                // edit the sequence
                // load the parent event of this sequence
                KalendarEvent parentEvent = kalendarWrapper.getKalendar().getEvent(kalendarEvent.getID(), kalendarEvent.getRecurrenceID());
                pushEditEventController(ureq, parentEvent, kalendarWrapper);
            } else if (pos == 1) {
                // delete a single event of the sequence
                deleteSingleYesNoController = activateYesNoDialog(ureq, null, translate("cal.delete.dialogtext"), deleteSingleYesNoController);
                deleteSingleYesNoController.setUserObject(kalendarEvent);
            } else if (pos == 2) {
                // delete the whole sequence
                deleteSequenceYesNoController = activateYesNoDialog(ureq, null, translate("cal.delete.dialogtext.sequence"), deleteSequenceYesNoController);
                deleteSequenceYesNoController.setUserObject(kalendarEvent);
            }
        }
        dbcSequence.dispose();
    } else if (source == deleteSingleYesNoController) {
        if (DialogBoxUIFactory.isYesEvent(event)) {
            KalendarEvent kalendarEvent = (KalendarEvent) deleteSingleYesNoController.getUserObject();
            affectedCal = kalendarEvent.getCalendar();
            KalendarEvent kEvent = affectedCal.getEvent(kalendarEvent.getID(), kalendarEvent.getRecurrenceID());
            kEvent.addRecurrenceExc(kalendarEvent.getBegin());
            calendarManager.updateEventFrom(affectedCal, kEvent);
            deleteSingleYesNoController.dispose();
            calendarEl.getComponent().setDirty(true);
        }
    } else if (source == deleteSequenceYesNoController) {
        if (DialogBoxUIFactory.isYesEvent(event)) {
            KalendarEvent kalendarEvent = (KalendarEvent) deleteSequenceYesNoController.getUserObject();
            affectedCal = kalendarEvent.getCalendar();
            calendarManager.removeEventFrom(affectedCal, kalendarEvent);
            deleteSequenceYesNoController.dispose();
            calendarEl.getComponent().setDirty(true);
        }
    } else if (configurationCtrl == source) {
        if (event instanceof CalendarGUIImportEvent) {
            CalendarGUIImportEvent importEvent = (CalendarGUIImportEvent) event;
            calendarWrappers.add(importEvent.getCalendar());
            calendarEl.setCalendars(calendarWrappers);
        } else if (event instanceof CalendarGUIRemoveEvent) {
            CalendarGUIRemoveEvent removeEvent = (CalendarGUIRemoveEvent) event;
            calendarWrappers.remove(removeEvent.getCalendar());
            calendarEl.setCalendars(calendarWrappers);
        } else if (event instanceof CalendarGUISettingEvent) {
            calendarEl.setCalendars(calendarWrappers);
        }
    } else if (eventCalloutCtr == source) {
        cleanUp();
    } else if (eventDetailsCtr == source) {
    }
    if (calendarEl.getComponent().isDirty()) {
        if (subsContext != null) {
            // group or course calendar -> prepared subscription context is the right one
            NotificationsManager.getInstance().markPublisherNews(subsContext, ureq.getIdentity(), true);
        } else if (caller.equals(CALLER_HOME) && affectedCal != null) {
            // one can add/edit/remove dates of group and course calendars from the home calendar view -> choose right subscription context
            for (KalendarRenderWrapper calWrapper : calendarWrappers) {
                if (affectedCal == calWrapper.getKalendar()) {
                    SubscriptionContext tmpSubsContext = calendarNotificationsManager.getSubscriptionContext(calWrapper);
                    NotificationsManager.getInstance().markPublisherNews(tmpSubsContext, ureq.getIdentity(), true);
                }
            }
        }
    }
}
Also used : CalendarGUIEditEvent(org.olat.commons.calendar.ui.events.CalendarGUIEditEvent) Kalendar(org.olat.commons.calendar.model.Kalendar) CalendarGUIPrintEvent(org.olat.commons.calendar.ui.events.CalendarGUIPrintEvent) CalendarGUISettingEvent(org.olat.commons.calendar.ui.events.CalendarGUISettingEvent) CalendarGUIUpdateEvent(org.olat.commons.calendar.ui.events.CalendarGUIUpdateEvent) CalendarGUIImportEvent(org.olat.commons.calendar.ui.events.CalendarGUIImportEvent) CalendarGUIRemoveEvent(org.olat.commons.calendar.ui.events.CalendarGUIRemoveEvent) KalendarEvent(org.olat.commons.calendar.model.KalendarEvent) SubscriptionContext(org.olat.core.commons.services.notifications.SubscriptionContext) KalendarRenderWrapper(org.olat.commons.calendar.ui.components.KalendarRenderWrapper) CalendarGUIModifiedEvent(org.olat.commons.calendar.ui.events.CalendarGUIModifiedEvent)

Example 7 with Kalendar

use of org.olat.commons.calendar.model.Kalendar in project OpenOLAT by OpenOLAT.

the class ICalFileCalendarManager method getCourseCalendar.

@Override
public KalendarRenderWrapper getCourseCalendar(ICourse course) {
    Kalendar cal = getCalendar(CalendarManager.TYPE_COURSE, course.getResourceableId().toString());
    KalendarRenderWrapper calendarWrapper = new KalendarRenderWrapper(cal, course.getCourseTitle());
    calendarWrapper.setCssClass(KalendarRenderWrapper.CALENDAR_COLOR_GREEN);
    calendarWrapper.setVisible(true);
    return calendarWrapper;
}
Also used : Kalendar(org.olat.commons.calendar.model.Kalendar) KalendarRenderWrapper(org.olat.commons.calendar.ui.components.KalendarRenderWrapper)

Example 8 with Kalendar

use of org.olat.commons.calendar.model.Kalendar in project OpenOLAT by OpenOLAT.

the class ICalFileCalendarManager method getCalendarFromCache.

private Kalendar getCalendarFromCache(final String callType, final String callCalendarID) {
    String calKey = getKeyFor(callType, callCalendarID);
    Kalendar cal = calendarCache.get(calKey);
    if (cal == null) {
        cal = loadOrCreateCalendar(callType, callCalendarID);
        Kalendar cacheCal = calendarCache.putIfAbsent(calKey, cal);
        if (cacheCal != null) {
            cal = cacheCal;
        }
    }
    return cal;
}
Also used : Kalendar(org.olat.commons.calendar.model.Kalendar)

Example 9 with Kalendar

use of org.olat.commons.calendar.model.Kalendar in project OpenOLAT by OpenOLAT.

the class ICalFileCalendarManager method getImportedCalendar.

@Override
public KalendarRenderWrapper getImportedCalendar(Identity identity, String calendarId) {
    Kalendar cal = getCalendar(CalendarManager.TYPE_USER, calendarId);
    KalendarRenderWrapper calendarWrapper = new KalendarRenderWrapper(cal, calendarId);
    calendarWrapper.setCssClass(KalendarRenderWrapper.CALENDAR_COLOR_BLUE);
    calendarWrapper.setVisible(true);
    calendarWrapper.setImported(true);
    return calendarWrapper;
}
Also used : Kalendar(org.olat.commons.calendar.model.Kalendar) KalendarRenderWrapper(org.olat.commons.calendar.ui.components.KalendarRenderWrapper)

Example 10 with Kalendar

use of org.olat.commons.calendar.model.Kalendar in project OpenOLAT by OpenOLAT.

the class ICalFileCalendarManager method removeFutureOfEvent.

@Override
public boolean removeFutureOfEvent(Kalendar cal, KalendarRecurEvent kalendarEvent) {
    OLATResourceable calOres = getOresHelperFor(cal);
    Boolean removeSuccessful = CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync(calOres, new SyncerCallback<Boolean>() {

        @Override
        public Boolean execute() {
            boolean successfullyPersist = false;
            try {
                String uid = kalendarEvent.getID();
                Date occurenceDate = kalendarEvent.getOccurenceDate();
                Kalendar loadedCal = getCalendarFromCache(cal.getType(), cal.getCalendarID());
                KalendarEvent rootEvent = loadedCal.getEvent(kalendarEvent.getID(), null);
                String rRule = rootEvent.getRecurrenceRule();
                Recur recur = new Recur(rRule);
                recur.setUntil(CalendarUtils.createDate(occurenceDate));
                RRule rrule = new RRule(recur);
                rootEvent.setRecurrenceRule(rrule.getValue());
                for (KalendarEvent kEvent : loadedCal.getEvents()) {
                    if (uid.equals(kEvent.getID()) && StringHelper.containsNonWhitespace(kEvent.getRecurrenceID()) && occurenceDate.before(kEvent.getBegin())) {
                        loadedCal.removeEvent(kEvent);
                    }
                }
                successfullyPersist = persistCalendar(loadedCal);
            } catch (ParseException e) {
                log.error("", e);
            }
            return new Boolean(successfullyPersist);
        }
    });
    // inform all controller about calendar change for reload
    CoordinatorManager.getInstance().getCoordinator().getEventBus().fireEventToListenersOf(new CalendarGUIModifiedEvent(cal), OresHelper.lookupType(CalendarManager.class));
    return removeSuccessful.booleanValue();
}
Also used : RRule(net.fortuna.ical4j.model.property.RRule) OLATResourceable(org.olat.core.id.OLATResourceable) KalendarEvent(org.olat.commons.calendar.model.KalendarEvent) Date(java.util.Date) ExDate(net.fortuna.ical4j.model.property.ExDate) CalendarManager(org.olat.commons.calendar.CalendarManager) Kalendar(org.olat.commons.calendar.model.Kalendar) ParseException(java.text.ParseException) CalendarGUIModifiedEvent(org.olat.commons.calendar.ui.events.CalendarGUIModifiedEvent) Recur(net.fortuna.ical4j.model.Recur)

Aggregations

Kalendar (org.olat.commons.calendar.model.Kalendar)126 KalendarEvent (org.olat.commons.calendar.model.KalendarEvent)68 Identity (org.olat.core.id.Identity)40 Date (java.util.Date)38 Test (org.junit.Test)26 CalendarManager (org.olat.commons.calendar.CalendarManager)24 KalendarRenderWrapper (org.olat.commons.calendar.ui.components.KalendarRenderWrapper)22 ArrayList (java.util.ArrayList)20 CalendarImportTest (org.olat.commons.calendar.CalendarImportTest)20 OLATResourceable (org.olat.core.id.OLATResourceable)20 CalendarGUIModifiedEvent (org.olat.commons.calendar.ui.events.CalendarGUIModifiedEvent)18 Calendar (java.util.Calendar)14 CalendarUserConfiguration (org.olat.commons.calendar.model.CalendarUserConfiguration)12 URISyntaxException (java.net.URISyntaxException)10 ParseException (java.text.ParseException)10 ExDate (net.fortuna.ical4j.model.property.ExDate)10 IOException (java.io.IOException)8 InputStream (java.io.InputStream)8 ICourse (org.olat.course.ICourse)8 RepositoryEntry (org.olat.repository.RepositoryEntry)8