From 083c2d77b019f9c3453cec06508abb52d2a76a1b Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 19 Jun 2012 13:17:48 +0000 Subject: [PATCH 01/11] See ChangeLog Monotone-Parent: 6105680d967d026c63b9b9f96cb3aeae9884e804 Monotone-Revision: b532b841f572a64aa9b471da32a51bb939539334 Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2012-06-19T13:17:48 --- ChangeLog | 10 +++++ .../Appointments/SOGoAppointmentFolder.m | 37 ++++++++++++++++++- .../Appointments/SOGoCalendarComponent.m | 31 ++++++++++++---- 3 files changed, 69 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0dcca9839..8be121787 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2012-06-19 Ludovic Marcotte + + * SoObjects/Appointments/SOGoAppointmentFolder.m (-importCalendar:): + We now handle correctly floating events by forcing the use of + the user's timezone. + + * SoObjects/Appointments/SOGoCalendarComponent.m (-expandGroupsInEvent:): + We now remove all attendees that are equal (email-based comparison) to + the event's organizer instead of only for decomposed groups. + 2012-06-12 Wolfgang Sourdeau * SoObjects/SOGo/SOGoGroup.m diff --git a/SoObjects/Appointments/SOGoAppointmentFolder.m b/SoObjects/Appointments/SOGoAppointmentFolder.m index d0b0b0969..0a2dd4b18 100644 --- a/SoObjects/Appointments/SOGoAppointmentFolder.m +++ b/SoObjects/Appointments/SOGoAppointmentFolder.m @@ -2764,7 +2764,7 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir iCalEvent *event; int imported, count, i; - + imported = 0; if (calendar) @@ -2799,6 +2799,41 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir tzId = [startDate value: 0 ofAttribute: @"tzid"]; if ([tzId length]) timezone = [timezones valueForKey: tzId]; + else + { + // If the start date is a "floating time", let's use the user's timezone + // during the import for both the start and end dates. + NSString *s; + + s = [[startDate valuesAtIndex: 0 forKey: @""] objectAtIndex: 0]; + + if ([element isKindOfClass: [iCalEvent class]] && + ![(iCalEvent *)element isAllDay] && + ![s hasSuffix: @"Z"] && + ![s hasSuffix: @"z"]) + { + iCalDateTime *endDate; + int delta; + + timezone = [iCalTimeZone timeZoneForName: [[[self->context activeUser] userDefaults] timeZoneName]]; + [calendar addTimeZone: timezone]; + + delta = [[timezone periodForDate: [startDate dateTime]] secondsOffsetFromGMT]; + event = (iCalEvent *)element; + + [event setStartDate: [[event startDate] dateByAddingYears: 0 months: 0 days: 0 hours: 0 minutes: 0 seconds: -delta]]; + [startDate setTimeZone: timezone]; + + endDate = (iCalDateTime *) [element uniqueChildWithTag: @"dtend"]; + + if (endDate) + { + [event setEndDate: [[event endDate] dateByAddingYears: 0 months: 0 days: 0 hours: 0 minutes: 0 seconds: -delta]]; + [endDate setTimeZone: timezone]; + } + } + } + if ([element isKindOfClass: [iCalEvent class]]) { event = (iCalEvent *)element; diff --git a/SoObjects/Appointments/SOGoCalendarComponent.m b/SoObjects/Appointments/SOGoCalendarComponent.m index 2bedbaa9d..9719dcab2 100644 --- a/SoObjects/Appointments/SOGoCalendarComponent.m +++ b/SoObjects/Appointments/SOGoCalendarComponent.m @@ -516,19 +516,23 @@ static inline BOOL _occurenceHasID (iCalRepeatableEntityObject *occurence, // // Returs "YES" if a a group was decomposed among attendees. // +// It can also return yes if an attendee was found in the list +// matching the organizer. In which case, it was removed. +// - (BOOL) expandGroupsInEvent: (iCalEvent *) theEvent { - NSMutableArray *allAttendees; - NSEnumerator *enumerator; NSString *organizerEmail, *domain; + NSMutableArray *allAttendees; iCalPerson *currentAttendee; + NSEnumerator *enumerator; SOGoGroup *group; - BOOL doesIncludeGroup; + + BOOL eventWasModified; unsigned int i; domain = [[context activeUser] domain]; organizerEmail = [[theEvent organizer] rfc822Email]; - doesIncludeGroup = NO; + eventWasModified = NO; allAttendees = [NSMutableArray arrayWithArray: [theEvent attendees]]; enumerator = [[theEvent attendees] objectEnumerator]; while ((currentAttendee = [enumerator nextObject])) @@ -548,7 +552,7 @@ static inline BOOL _occurenceHasID (iCalRepeatableEntityObject *occurence, for (i = 0; i < [members count]; i++) { user = [members objectAtIndex: i]; - doesIncludeGroup = YES; + eventWasModified = YES; // If the organizer is part of the group, we skip it from // the addition to the attendees' list @@ -565,12 +569,23 @@ static inline BOOL _occurenceHasID (iCalRepeatableEntityObject *occurence, [allAttendees addObject: person]; } } - } + else + { + // We remove any attendees matching the organizer. Apple iCal will do that when + // you invite someone. It'll add the organizer in the attendee list, which will + // confuse itself! + if ([[currentAttendee rfc822Email] caseInsensitiveCompare: organizerEmail] == NSOrderedSame) + { + [allAttendees removeObject: currentAttendee]; + eventWasModified = YES; + } + } + } // while (currentAttendee ... - if (doesIncludeGroup) + if (eventWasModified) [theEvent setAttendees: allAttendees]; - return doesIncludeGroup; + return eventWasModified; } - (void) _updateRecurrenceIDsWithEvent: (iCalRepeatableEntityObject*) newEvent From b88d623ad373eb65e577afd111b91bc655b3b86a Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 20 Jun 2012 14:05:40 +0000 Subject: [PATCH 02/11] See ChangeLog Monotone-Parent: b532b841f572a64aa9b471da32a51bb939539334 Monotone-Revision: 7658ec99af152b2743393d20c3c4f2c23610ec4c Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2012-06-20T14:05:40 --- ChangeLog | 7 +++ .../Appointments/SOGoAppointmentObject.m | 50 +++++++++++++++++-- 2 files changed, 53 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8be121787..42d2499d0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2012-06-20 Ludovic Marcotte + + * SoObjects/Appointments/SOGoAppointmentObject.m + (-_handleResourcesConflicts:forEvent:): We now + handle correctly recurring events overlapping other + recurring events. + 2012-06-19 Ludovic Marcotte * SoObjects/Appointments/SOGoAppointmentFolder.m (-importCalendar:): diff --git a/SoObjects/Appointments/SOGoAppointmentObject.m b/SoObjects/Appointments/SOGoAppointmentObject.m index 596e2d2ba..e85bdeec0 100644 --- a/SoObjects/Appointments/SOGoAppointmentObject.m +++ b/SoObjects/Appointments/SOGoAppointmentObject.m @@ -1,5 +1,5 @@ /* - Copyright (C) 2007-2011 Inverse inc. + Copyright (C) 2007-2012 Inverse inc. Copyright (C) 2004-2005 SKYRIX Software AG This file is part of SOGo @@ -456,8 +456,12 @@ { SOGoAppointmentFolder *folder; NSCalendarDate *start, *end; + NGCalendarDateRange *range; NSMutableArray *fbInfo; - int i; + NSArray *allOccurences; + + BOOL must_delete; + int i, j; // We get the start/end date for our conflict range. If the event to be added is recurring, we // check for at least a year to start with. @@ -486,12 +490,50 @@ // We first remove any occurences in the freebusy that corresponds to the // current event. We do this to avoid raising a conflict if we move a 1 hour // meeting from 12:00-13:00 to 12:15-13:15. We would overlap on ourself otherwise. + // + // We must also check here for repetitive events that don't overlap our event. + // We remove all events that don't overlap. The events here are already + // decomposed. + // + if ([theEvent isRecurrent]) + allOccurences = [theEvent recurrenceRangesWithinCalendarDateRange: [NGCalendarDateRange calendarDateRangeWithStartDate: start + endDate: end] + firstInstanceCalendarDateRange: [NGCalendarDateRange calendarDateRangeWithStartDate: [theEvent startDate] + endDate: [theEvent endDate]]]; + else + allOccurences = nil; + for (i = [fbInfo count]-1; i >= 0; i--) { + range = [NGCalendarDateRange calendarDateRangeWithStartDate: [[fbInfo objectAtIndex: i] objectForKey: @"startDate"] + endDate: [[fbInfo objectAtIndex: i] objectForKey: @"endDate"]]; + if ([[[fbInfo objectAtIndex: i] objectForKey: @"c_uid"] compare: [theEvent uid]] == NSOrderedSame) - [fbInfo removeObjectAtIndex: i]; - } + { + [fbInfo removeObjectAtIndex: i]; + continue; + } + + // No need to check if the event isn't recurrent here as it's handled correctly + // when we compute the "end" date. + if ([allOccurences count]) + { + must_delete = YES; + for (j = 0; j < [allOccurences count]; j++) + { + if ([range doesIntersectWithDateRange: [allOccurences objectAtIndex: j]]) + { + must_delete = NO; + break; + } + } + + if (must_delete) + [fbInfo removeObjectAtIndex: i]; + } + } + if ([fbInfo count]) { // If we always force the auto-accept if numberOfSimultaneousBookings == 0 (ie., no limit From 0845f13327f6f0cedfa747ef68aff38e152d501d Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Wed, 20 Jun 2012 20:34:28 +0000 Subject: [PATCH 03/11] Remove duplicated test. Add a new test for bug #1837: This tries to have the same behavior as iCal 1. create an event, add an attendee and add the organizer as an attendee 2. SOGo should remove the organizer from the attendee list Monotone-Parent: b532b841f572a64aa9b471da32a51bb939539334 Monotone-Revision: 30b555a484fd45f63e941b88e3afc1f2784480da Monotone-Author: jraby@inverse.ca Monotone-Date: 2012-06-20T20:34:28 --- Tests/Integration/test-caldav-scheduling.py | 87 ++++++++++++--------- 1 file changed, 52 insertions(+), 35 deletions(-) diff --git a/Tests/Integration/test-caldav-scheduling.py b/Tests/Integration/test-caldav-scheduling.py index 4e6a4a268..c9756460c 100755 --- a/Tests/Integration/test-caldav-scheduling.py +++ b/Tests/Integration/test-caldav-scheduling.py @@ -160,6 +160,14 @@ class CalDAVSchedulingTest(unittest.TestCase): "%stest-rrule-invitation-deleted-exdate-dance.ics" % self.user_calendar, None) self._deleteEvent(self.attendee1_client, "%stest-rrule-invitation-deleted-exdate-dance.ics" % self.attendee1_calendar, None) + self._deleteEvent(self.client, + "%stest-organizer-is-attendee.ics" % self.user_calendar, None) + self._deleteEvent(self.attendee1_client, + "%stest-organizer-is-attendee.ics" % self.attendee1_calendar, None) + self._deleteEvent(self.client, + "%stest-remove-attendee.ics" % self.user_calendar, None) + self._deleteEvent(self.attendee1_client, + "%stest-remove-attendee.ics" % self.attendee1_calendar, None) def _newEvent(self, summary="test event", uid="test", transp=0): transparency = ("OPAQUE", "TRANSPARENT") @@ -268,7 +276,7 @@ class CalDAVSchedulingTest(unittest.TestCase): """ add attendee after event creation """ # make sure the event doesn't exist - ics_name = "test-add-attendee.ics" + ics_name = "test-add-attendee.ics" self._deleteEvent(self.client, "%s%s" % (self.user_calendar,ics_name), None) self._deleteEvent(self.attendee1_client, @@ -346,40 +354,6 @@ class CalDAVSchedulingTest(unittest.TestCase): # 6. verify that the attendee doesn't have the event anymore attendee_event = self._getEvent(self.attendee1_client, "%s%s" % (self.attendee1_calendar, ics_name), 404) - def testAddAttendee(self): - """ add attendee after event creation """ - - # make sure the event doesn't exist - ics_name = "test-add-attendee.ics" - self._deleteEvent(self.client, - "%s%s" % (self.user_calendar,ics_name), None) - self._deleteEvent(self.client, - "%s%s" % (self.attendee1_calendar,ics_name), None) - - # 1. create an event in the organiser's calendar - event = self._newEvent(summary="Test add attendee", uid="Test add attendee") - organizer = event.vevent.add('organizer') - organizer.cn_param = self.user_name - organizer.value = self.user_email - self._putEvent(self.client, "%s%s" % (self.user_calendar, ics_name), event) - - # 2. add an attendee - attendee = event.vevent.add('attendee') - attendee.cn_param = self.attendee1_name - attendee.rsvp_param = "TRUE" - attendee.partstat_param = "NEEDS-ACTION" - attendee.value = self.attendee1_email - self._putEvent(self.client, "%s%s" % (self.user_calendar, ics_name), event, - exp_status=204) - - - # 3. verify that the attendee has the event - attendee_event = self._getEvent(self.attendee1_client, "%s%s" % (self.attendee1_calendar, ics_name)) - - # 4. make sure the received event match the original one - # XXX is this enough? - self.assertEquals(event.vevent.uid, attendee_event.vevent.uid) - def testResourceNoOverbook(self): """ try to overbook a resource """ @@ -663,6 +637,49 @@ class CalDAVSchedulingTest(unittest.TestCase): self.assertEqual(org_ev_master.attendee.partstat_param, "NEEDS-ACTION"); self.assertEqual(org_ev_exception.attendee.partstat_param, "DECLINED"); + def testOrganizerIsAttendee(self): + """ iCal organizer is attendee - bug #1837 """ + + # This tries to have the same behavior as iCal + # 1. create an event, add an attendee and add the organizer as an attendee + # 2. SOGo should remove the organizer from the attendee list + ics_name = "test-organizer-is-attendee.ics" + self._deleteEvent(self.client, + "%s%s" % (self.user_calendar, ics_name), None) + self._deleteEvent(self.attendee1_client, + "%s%s" % (self.attendee1_calendar, ics_name), None) + + # 1. create a recurring event in the organiser's calendar + summary="org is attendee" + uid=summary + event = self._newEvent(summary, uid) + organizer = event.vevent.add('organizer') + organizer.cn_param = self.user_name + organizer.partstat_param = "ACCEPTED" + organizer.value = self.user_email + attendee = event.vevent.add('attendee') + attendee.cn_param = self.attendee1_name + attendee.rsvp_param = "TRUE" + attendee.role_param = "REQ-PARTICIPANT" + attendee.partstat_param = "NEEDS-ACTION" + attendee.value = self.attendee1_email + + # 1.1 add the organizer as an attendee + attendee = event.vevent.add('attendee') + attendee.cn_param = self.user_name + attendee.rsvp_param = "TRUE" + attendee.role_param = "REQ-PARTICIPANT" + attendee.partstat_param = "ACCEPTED" + attendee.value = self.user_email + + self._putEvent(self.client, "%s%s" % (self.user_calendar, ics_name), event) + + # 2. Fetch the event and make sure the organizer is not in the attendee list anymore + org_ev = self._getEvent(self.client, "%s%s" % (self.user_calendar, ics_name)) + + for attendee in org_ev.vevent.attendee_list: + self.assertNotEqual(self.user_email, attendee.value) + def testInvitationDelegation(self): """ invitation delegation """ From bcddfe4efae8a443312da51b0c7e32ad0bd6703f Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Thu, 21 Jun 2012 13:54:23 +0000 Subject: [PATCH 04/11] The new tests case was for #1839, not #1837 Monotone-Parent: 21464a96c4abb93d2143e8f30b059d2f01bab016 Monotone-Revision: ba98ce90f9ee5f3b4c038bc459d8d48d74cfad72 Monotone-Author: jraby@inverse.ca Monotone-Date: 2012-06-21T13:54:23 --- Tests/Integration/test-caldav-scheduling.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/Integration/test-caldav-scheduling.py b/Tests/Integration/test-caldav-scheduling.py index c9756460c..466b0b062 100755 --- a/Tests/Integration/test-caldav-scheduling.py +++ b/Tests/Integration/test-caldav-scheduling.py @@ -638,7 +638,7 @@ class CalDAVSchedulingTest(unittest.TestCase): self.assertEqual(org_ev_exception.attendee.partstat_param, "DECLINED"); def testOrganizerIsAttendee(self): - """ iCal organizer is attendee - bug #1837 """ + """ iCal organizer is attendee - bug #1839 """ # This tries to have the same behavior as iCal # 1. create an event, add an attendee and add the organizer as an attendee From 58d115817b7b000551b97f52ff0766ea0106888d Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Thu, 21 Jun 2012 14:25:57 +0000 Subject: [PATCH 05/11] Remove rpm dependency on memcached as the caching daemon can run elsewhere Monotone-Parent: ba98ce90f9ee5f3b4c038bc459d8d48d74cfad72 Monotone-Revision: e699f14b51f9de020728f6ca36fdcc283587d057 Monotone-Author: jraby@inverse.ca Monotone-Date: 2012-06-21T14:25:57 --- sogo.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sogo.spec b/sogo.spec index bab4cf4ea..5332b88e0 100644 --- a/sogo.spec +++ b/sogo.spec @@ -15,7 +15,7 @@ Group: Productivity/Groupware Source: SOGo-%{sogo_version}.tar.gz Prefix: /usr AutoReqProv: off -Requires: gnustep-base >= 1.23, sope%{sope_major_version}%{sope_minor_version}-core, httpd, sope%{sope_major_version}%{sope_minor_version}-core, sope%{sope_major_version}%{sope_minor_version}-appserver, sope%{sope_major_version}%{sope_minor_version}-ldap, sope%{sope_major_version}%{sope_minor_version}-cards >= %{sogo_version}, sope%{sope_major_version}%{sope_minor_version}-gdl1-contentstore >= %{sogo_version}, sope%{sope_major_version}%{sope_minor_version}-sbjson, memcached, libmemcached +Requires: gnustep-base >= 1.23, sope%{sope_major_version}%{sope_minor_version}-core, httpd, sope%{sope_major_version}%{sope_minor_version}-core, sope%{sope_major_version}%{sope_minor_version}-appserver, sope%{sope_major_version}%{sope_minor_version}-ldap, sope%{sope_major_version}%{sope_minor_version}-cards >= %{sogo_version}, sope%{sope_major_version}%{sope_minor_version}-gdl1-contentstore >= %{sogo_version}, sope%{sope_major_version}%{sope_minor_version}-sbjson, libmemcached BuildRoot: %{_tmppath}/%{name}-%{version}-%{release} BuildRequires: gcc-objc gnustep-base gnustep-make sope%{sope_major_version}%{sope_minor_version}-appserver-devel sope%{sope_major_version}%{sope_minor_version}-core-devel sope%{sope_major_version}%{sope_minor_version}-ldap-devel sope%{sope_major_version}%{sope_minor_version}-mime-devel sope%{sope_major_version}%{sope_minor_version}-xml-devel sope%{sope_major_version}%{sope_minor_version}-gdl1-devel sope%{sope_major_version}%{sope_minor_version}-sbjson-devel libmemcached-devel %{?oc_build_depends} From 86b689d7e80f042d283af68a9fa368822cfcb609 Mon Sep 17 00:00:00 2001 From: Jean Raby Date: Thu, 21 Jun 2012 15:51:53 +0000 Subject: [PATCH 06/11] * Tools/SOGoToolExpireUserSessions.m: semi-colon are useless in sql queries and probably breaks on oracle Monotone-Parent: e699f14b51f9de020728f6ca36fdcc283587d057 Monotone-Revision: aadc4759a64f724760d38bbdfd92715182856439 Monotone-Author: jraby@inverse.ca Monotone-Date: 2012-06-21T15:51:53 --- Tools/SOGoToolExpireUserSessions.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tools/SOGoToolExpireUserSessions.m b/Tools/SOGoToolExpireUserSessions.m index 8eb530f3b..8da66f3d9 100644 --- a/Tools/SOGoToolExpireUserSessions.m +++ b/Tools/SOGoToolExpireUserSessions.m @@ -109,7 +109,7 @@ return rc=NO; } - sql = [NSString stringWithFormat: @"SELECT count(*) FROM %@ WHERE c_lastseen <= %d;", + sql = [NSString stringWithFormat: @"SELECT count(*) FROM %@ WHERE c_lastseen <= %d", [tableURL gcsTableName], oldest]; ex = [channel evaluateExpressionX: sql]; if (ex) @@ -129,7 +129,7 @@ if (verbose) NSLog(@"Will be removing %d sessions", sessionsToDelete); [channel cancelFetch]; - sql = [NSString stringWithFormat: @"DELETE FROM %@ WHERE c_lastseen <= %d;", + sql = [NSString stringWithFormat: @"DELETE FROM %@ WHERE c_lastseen <= %d", [tableURL gcsTableName], oldest]; if (verbose) NSLog(@"Removing sessions older than %d minute(s)", nbMinutes); From 6d745e0f4b07236d0ede4a6012d776264240290c Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 21 Jun 2012 23:32:18 +0000 Subject: [PATCH 07/11] See ChangeLog Monotone-Parent: aadc4759a64f724760d38bbdfd92715182856439 Monotone-Revision: 5e99e6ac2d5684eba786f2ce14295f3a3b5267a3 Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2012-06-21T23:32:18 --- ChangeLog | 9 +++++++++ Documentation/SOGo Installation Guide.odt | Bin 157621 -> 157826 bytes SoObjects/SOGo/SOGoDefaults.plist | 2 ++ SoObjects/SOGo/SOGoDomainDefaults.h | 2 ++ SoObjects/SOGo/SOGoDomainDefaults.m | 5 +++++ UI/Common/UIxPageFrame.m | 12 +++++++++--- UI/Contacts/UIxContactsFilterPanel.m | 7 ++++--- UI/Contacts/UIxContactsUserFolders.m | 2 +- UI/Contacts/UIxListEditor.m | 2 +- UI/Scheduler/UIxAttendeesEditor.h | 3 +-- UI/Scheduler/UIxAttendeesEditor.m | 2 +- UI/Templates/UIxPageFrame.wox | 1 + UI/WebServerResources/SOGoAutoCompletion.js | 2 +- UI/WebServerResources/UIxAttendeesEditor.js | 2 +- .../UIxContactsUserFolders.js | 9 +++++---- UI/WebServerResources/generic.js | 4 ++-- 16 files changed, 45 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index 42d2499d0..bd5358d4e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2012-06-21 Ludovic Marcotte + + * Added the SOGoSearchMinimumWordLength domain + default which controls the minimal length required + before trigging server-side search operations for + attendee completion, contact searches, etc. The + default value is 2, which means search operations + are trigged once the 3rd character is typed. + 2012-06-20 Ludovic Marcotte * SoObjects/Appointments/SOGoAppointmentObject.m diff --git a/Documentation/SOGo Installation Guide.odt b/Documentation/SOGo Installation Guide.odt index dd67e76e661244a679cc1cec4afaebb20fb28bc6..843a35b7542a5d314dbdf5b06a1c5bae14deef03 100644 GIT binary patch delta 39915 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 -IJ7R)b? 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 OEx`}aEzQAq+W!Mk(u7z5 delta 39608 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 diff --git a/SoObjects/SOGo/SOGoDefaults.plist b/SoObjects/SOGo/SOGoDefaults.plist index c686a1665..127ddc2a8 100644 --- a/SoObjects/SOGo/SOGoDefaults.plist +++ b/SoObjects/SOGo/SOGoDefaults.plist @@ -70,4 +70,6 @@ SOGoReminderEnabled = YES; SOGoRemindWithASound = YES; + + SOGoSearchMinimumWordLength = 2; } diff --git a/SoObjects/SOGo/SOGoDomainDefaults.h b/SoObjects/SOGo/SOGoDomainDefaults.h index 2c0c86b94..fbed067ee 100644 --- a/SoObjects/SOGo/SOGoDomainDefaults.h +++ b/SoObjects/SOGo/SOGoDomainDefaults.h @@ -77,6 +77,8 @@ - (BOOL) hideSystemEMail; +- (int) searchMinimumWordLength; + @end #endif /* SOGODOMAINDEFAULTS_H */ diff --git a/SoObjects/SOGo/SOGoDomainDefaults.m b/SoObjects/SOGo/SOGoDomainDefaults.m index bb06640fe..6fe2abb7a 100644 --- a/SoObjects/SOGo/SOGoDomainDefaults.m +++ b/SoObjects/SOGo/SOGoDomainDefaults.m @@ -319,4 +319,9 @@ return [self boolForKey: @"SOGoHideSystemEMail"]; } +- (int) searchMinimumWordLength +{ + return [self integerForKey: @"SOGoSearchMinimumWordLength"]; +} + @end diff --git a/UI/Common/UIxPageFrame.m b/UI/Common/UIxPageFrame.m index ee990ad73..0b3282e47 100644 --- a/UI/Common/UIxPageFrame.m +++ b/UI/Common/UIxPageFrame.m @@ -1,15 +1,16 @@ /* Copyright (C) 2004-2005 SKYRIX Software AG + Copyright (C) 2005-2012 Inverse inc. - This file is part of OpenGroupware.org. + This file is part of SOGo. - OGo is free software; you can redistribute it and/or modify it under + SOGo is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. - OGo is distributed in the hope that it will be useful, but WITHOUT ANY + SOGo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. @@ -590,4 +591,9 @@ ); } +- (int) minimumSearchLength +{ + return [[[context activeUser] domainDefaults] searchMinimumWordLength]; +} + @end /* UIxPageFrame */ diff --git a/UI/Contacts/UIxContactsFilterPanel.m b/UI/Contacts/UIxContactsFilterPanel.m index 55fa93af5..a0f5721bb 100644 --- a/UI/Contacts/UIxContactsFilterPanel.m +++ b/UI/Contacts/UIxContactsFilterPanel.m @@ -1,14 +1,15 @@ /* Copyright (C) 2000-2005 SKYRIX Software AG + Copyright (C) 2000-2012 Inverse inc. - This file is part of OpenGroupware.org. + This file is part of SOGo. - OGo is free software; you can redistribute it and/or modify it under + SOGo is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. - OGo is distributed in the hope that it will be useful, but WITHOUT ANY + SOGo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. diff --git a/UI/Contacts/UIxContactsUserFolders.m b/UI/Contacts/UIxContactsUserFolders.m index 1ff941edf..ba4dad22f 100644 --- a/UI/Contacts/UIxContactsUserFolders.m +++ b/UI/Contacts/UIxContactsUserFolders.m @@ -1,6 +1,6 @@ /* UIxContactsUserFolders.m - this file is part of SOGo * - * Copyright (C) 2007-2010 Inverse inc. + * Copyright (C) 2007-2012 Inverse inc. * * Author: Wolfgang Sourdeau * diff --git a/UI/Contacts/UIxListEditor.m b/UI/Contacts/UIxListEditor.m index adb04de20..b13677e5f 100644 --- a/UI/Contacts/UIxListEditor.m +++ b/UI/Contacts/UIxListEditor.m @@ -1,6 +1,6 @@ /* UIxListEditor.m - this file is part of SOGo * - * Copyright (C) 2008-2011 Inverse inc. + * Copyright (C) 2008-2012 Inverse inc. * * Author: Wolfgang Sourdeau * Francis Lachapelle diff --git a/UI/Scheduler/UIxAttendeesEditor.h b/UI/Scheduler/UIxAttendeesEditor.h index 7aa291a4e..530c33c51 100644 --- a/UI/Scheduler/UIxAttendeesEditor.h +++ b/UI/Scheduler/UIxAttendeesEditor.h @@ -1,6 +1,6 @@ /* UIxAttendeesEditor.h - this file is part of SOGo * - * Copyright (C) 2007 Inverse inc. + * Copyright (C) 2007-2012 Inverse inc. * * Author: Wolfgang Sourdeau * @@ -28,7 +28,6 @@ @interface UIxAttendeesEditor : UIxComponent { NSString *item; -// NSString *zoom; } - (void) setItem: (NSString *) newItem; diff --git a/UI/Scheduler/UIxAttendeesEditor.m b/UI/Scheduler/UIxAttendeesEditor.m index 51be1437e..40379d48e 100644 --- a/UI/Scheduler/UIxAttendeesEditor.m +++ b/UI/Scheduler/UIxAttendeesEditor.m @@ -1,6 +1,6 @@ /* UIxAttendeesEditor.m - this file is part of SOGo * - * Copyright (C) 2007 Inverse inc. + * Copyright (C) 2007-2012 Inverse inc. * * Author: Wolfgang Sourdeau * diff --git a/UI/Templates/UIxPageFrame.wox b/UI/Templates/UIxPageFrame.wox index 6df36a98e..d81b37700 100644 --- a/UI/Templates/UIxPageFrame.wox +++ b/UI/Templates/UIxPageFrame.wox @@ -130,6 +130,7 @@