diff --git a/calendar/inc/class.calendar_boupdate.inc.php b/calendar/inc/class.calendar_boupdate.inc.php index 1e14ac4a48..36b92d8fa8 100644 --- a/calendar/inc/class.calendar_boupdate.inc.php +++ b/calendar/inc/class.calendar_boupdate.inc.php @@ -287,7 +287,10 @@ class calendar_boupdate extends calendar_bo * Check given event for conflicts and return them * * For recurring events we check a configurable fixed number of recurrences - * or we try for a fixed maximum time. + * and for a fixed maximum time (default 3s). + * + * Conflict check skips past events/recurrences and is always limited by recurrence horizont, + * as it would only report non-recurring events after. * * @param array $event * @param Api\DateTime& $checked_excluding =null time until which (excluding) recurrences have been checked @@ -341,11 +344,14 @@ class calendar_boupdate extends calendar_bo { $startts = $date->format('ts'); + // skip past events or recurrences + if ($startts+$duration < $this->now_su) continue; + // abort check if configured limits are exceeded if ($event['recur_type'] && - ($checked++ > $max_checked && $max_checked > 0 || // maximum number of checked recurrences exceeded + (++$checked > $max_checked && $max_checked > 0 || // maximum number of checked recurrences exceeded microtime(true) > $start+$max_check_time || // max check time exceeded - $startts > $this->config['horizont'])) // we are behind horizont for which recurring events are rendered + $startts > $this->config['horizont'])) // we are behind horizon for which recurrences are rendered { if ($this->debug > 2 || $this->debug == 'conflicts') { diff --git a/calendar/lang/egw_de.lang b/calendar/lang/egw_de.lang index a8a64fabf0..2add2cf769 100644 --- a/calendar/lang/egw_de.lang +++ b/calendar/lang/egw_de.lang @@ -397,6 +397,7 @@ people holiday calendar de Feiertag permission denied calendar de Zugriff verweigert planner by category calendar de Planer nach Kategorien planner by user calendar de Planer nach Benutzern +please note: conflict check is never done in the past and always limited by above recurrence horizont. calendar de Bitte beachten: Konfliktprüfung findet nie in der Vergangenheit statt und ist immer durch den obigen Wiederholungs-Bereich beschränkt. please note: you can configure the field assignments after you uploaded the file. calendar de Bitte beachten: Die Feldzuordnung kann NACH dem Hochladen der Datei konfiguriert werden. preselected group for entering the planner calendar de Vorausgewählte Gruppe beim Planer-Aufruf prevent deleting of entries admin de Das Löschen von Einträgen verhindern @@ -413,6 +414,8 @@ receive summary of appointments calendar de Zusammenfassung der Termine erhalten recover calendar de Wiederherstellen recovered calendar de wieder hergestellt recurrence calendar de Wiederholung +recurrence enddate calendar de Enddatum der Wiederholung +recurrences and conflict check calendar de Wiederholungen und Konfliktprüfung recurring event calendar de Wiederholender Termin reject calendar de Absagen rejected calendar de Abgesagt diff --git a/calendar/lang/egw_en.lang b/calendar/lang/egw_en.lang index f8a453145b..8cba9f41c7 100644 --- a/calendar/lang/egw_en.lang +++ b/calendar/lang/egw_en.lang @@ -397,6 +397,7 @@ people holiday calendar en People holiday permission denied calendar en Permission denied. planner by category calendar en Planner by category planner by user calendar en Planner by user +please note: conflict check is never done in the past and always limited by above recurrence horizont. calendar en Please note: conflict check is never done in the past and always limited by above recurrence horizont. please note: you can configure the field assignments after you uploaded the file. calendar en Note: You can configure the field assignments AFTER you uploaded the file. preselected group for entering the planner calendar en Pre-selected group for entering the planner prevent deleting of entries admin en Prevent deleting of entries @@ -414,6 +415,7 @@ recover calendar en Recover recovered calendar en Recovered. recurrence calendar en Recurrence recurrence enddate calendar en Recurrence end date +recurrences and conflict check calendar en Recurrences and conflict check recurring event calendar en Recurring event reject calendar en Reject rejected calendar en Rejected diff --git a/calendar/templates/default/app.css b/calendar/templates/default/app.css index 13ee4451fb..93eacec2e6 100644 --- a/calendar/templates/default/app.css +++ b/calendar/templates/default/app.css @@ -128,6 +128,12 @@ background-color: white; } +/* Conflict display */ +div.calendar_conflicts { + max-height: 540px; + overflow-y: auto; +} + /* Loader - hide sizing behind overlay*/ #egw-loadin-prompt_calendar::before { opacity: 1; diff --git a/calendar/templates/default/config.xet b/calendar/templates/default/config.xet index ea1328a306..e9a6492020 100644 --- a/calendar/templates/default/config.xet +++ b/calendar/templates/default/config.xet @@ -84,7 +84,7 @@ - + @@ -94,10 +94,6 @@ - - - - - + + + + + + + + diff --git a/calendar/templates/default/conflicts.xet b/calendar/templates/default/conflicts.xet index db5ba8c245..f43a9c4b1b 100644 --- a/calendar/templates/default/conflicts.xet +++ b/calendar/templates/default/conflicts.xet @@ -4,25 +4,27 @@