mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-26 16:48:49 +01:00
1) skip all past events and recurrences in conflict check and fix off-by-one error in recurrence limit
2) restructure config a bit: - rename Birthday section to Addressbook - rename Scheduling conflict section to Recurrences and conflict check - add: Please note: conflict check is never done in the past and always limited by above recurrence horizont.
This commit is contained in:
parent
cae960965e
commit
5374b39680
@ -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')
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -84,7 +84,7 @@
|
||||
</select>
|
||||
</row>
|
||||
<row>
|
||||
<description value="Birthdays" span="all" class="subHeader"/>
|
||||
<description value="Addressbook" span="all" class="subHeader"/>
|
||||
</row>
|
||||
<row>
|
||||
<description value="Show birthdays from addressbook" label="%s:"/>
|
||||
@ -94,10 +94,6 @@
|
||||
<option value="yes">No</option>
|
||||
</select>
|
||||
</row>
|
||||
<row>
|
||||
<description value="Calendar recurrence horizont in days (default 1000)" label="%s:"/>
|
||||
<textbox id="newsettings[calendar_horizont]" size="5"/>
|
||||
</row>
|
||||
<row>
|
||||
<description value="Create links for participants from addressbook" label="%s:"/>
|
||||
<select id="newsettings[link_contacts]">
|
||||
@ -106,7 +102,14 @@
|
||||
</select>
|
||||
</row>
|
||||
<row>
|
||||
<description value="Scheduling conflict" span="all" class="subHeader"/>
|
||||
<description value="Recurrences and conflict check" span="all" class="subHeader"/>
|
||||
</row>
|
||||
<row>
|
||||
<description value="Calendar recurrence horizont in days (default 1000)"/>
|
||||
<textbox id="newsettings[calendar_horizont]" size="5"/>
|
||||
</row>
|
||||
<row>
|
||||
<description value="Please note: conflict check is never done in the past and always limited by above recurrence horizont." span="all"/>
|
||||
</row>
|
||||
<row>
|
||||
<description value="Limit search for conflicts in recurrences to given time in seconds (default 3)"/>
|
||||
|
@ -4,25 +4,27 @@
|
||||
<overlay>
|
||||
<template id="calendar.conflicts" template="" lang="" group="0" version="1.0.1.001">
|
||||
<description value="Scheduling conflict" class="calendar_size120b"/>
|
||||
<grid>
|
||||
<columns>
|
||||
<column/>
|
||||
<column/>
|
||||
<column/>
|
||||
<column/>
|
||||
</columns>
|
||||
<rows>
|
||||
<row valign="top">
|
||||
<image src="conflicts[$row][icon_participants]" statustext="@conflicts[$row][tooltip_participants]" no_lang="1"/>
|
||||
<image src="conflicts[$row][icon_recur]" label="@conflicts[$row][text_recur]" no_lang="1"/>
|
||||
<description id="conflicts[$row][time]" no_lang="1"/>
|
||||
<vbox statustext="conflict[$row][tooltip]" orient=",0,0">
|
||||
<description id="conflicts[$row][title]" no_lang="1" options="b"/>
|
||||
<description id="conflicts[$row][conflicting_participants]" no_lang="1"/>
|
||||
</vbox>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
<box class="calendar_conflicts">
|
||||
<grid>
|
||||
<columns>
|
||||
<column/>
|
||||
<column/>
|
||||
<column/>
|
||||
<column/>
|
||||
</columns>
|
||||
<rows>
|
||||
<row valign="top">
|
||||
<image src="conflicts[$row][icon_participants]" statustext="@conflicts[$row][tooltip_participants]" no_lang="1"/>
|
||||
<image src="conflicts[$row][icon_recur]" label="@conflicts[$row][text_recur]" no_lang="1"/>
|
||||
<description id="conflicts[$row][time]" no_lang="1"/>
|
||||
<vbox statustext="conflict[$row][tooltip]" orient=",0,0">
|
||||
<description id="conflicts[$row][title]" no_lang="1" options="b"/>
|
||||
<description id="conflicts[$row][conflicting_participants]" no_lang="1"/>
|
||||
</vbox>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
</box>
|
||||
<hbox>
|
||||
<button label="Ignore conflict" id="button[ignore]" statustext="Saves the event ignoring the conflict"/>
|
||||
<button id="button[reedit]" label="Re-Edit event" statustext="Allows to edit the event again"/>
|
||||
|
@ -138,6 +138,11 @@
|
||||
padding: 2px;
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user